diff --git a/.gitignore b/.gitignore index 99bfe65..10c5ff3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ node_modules dist .vscode -npm-debug.log \ No newline at end of file +npm-debug.log +yarn-error.log \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index 21b0a9f..188405f 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1,4 +1,3 @@ - @@ -11,6 +10,6 @@ - + \ No newline at end of file diff --git a/package.json b/package.json index 364ad4e..7a4117e 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "serve": "webpack-dev-server --output-public-path=dist --history-api-fallback", - "build": "webpack" + "build": "webpack --optimize-minimize" }, "author": "", "license": "ISC", @@ -20,6 +20,7 @@ "re-base": "^3.2.1", "react": "^16.2.0", "react-dom": "^16.2.0", + "react-markdown": "^3.1.3", "react-redux": "^5.0.6", "react-router": "^4.2.0", "react-router-dom": "^4.2.2", diff --git a/src/components/Conditional.tsx b/src/components/Conditional.tsx index 875ed4c..1ccab85 100644 --- a/src/components/Conditional.tsx +++ b/src/components/Conditional.tsx @@ -2,7 +2,7 @@ import * as React from "react"; export class Conditional extends React.Component<{render:boolean}, any>{ render(){ - var toRender = this.props.render? this.props.children : null; + let toRender = this.props.render? this.props.children : null; return {toRender} } } \ No newline at end of file diff --git a/src/components/Hello.tsx b/src/components/Hello.tsx deleted file mode 100644 index e191454..0000000 --- a/src/components/Hello.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import * as React from "react"; -require('../styles/main.css'); -export interface HelloProps { compiler: string; framework: string; } - -// 'HelloProps' describes the shape of props. -// State is never set so we use the '{}' type. -export class Hello extends React.Component { - render() { - return ( -
-

Hello from {this.props.compiler} and {this.props.framework}!

-
- ); - - } -} \ No newline at end of file diff --git a/src/components/Home.tsx b/src/components/Home.tsx new file mode 100644 index 0000000..04c62c4 --- /dev/null +++ b/src/components/Home.tsx @@ -0,0 +1,9 @@ +import { LoginState } from '../models/LoginState'; +import * as React from 'react'; + +export class Home extends React.Component{ + + render(){ + return

Hi, welcome to minbin a simple pastebin. Please login to get started!

+ } +} \ No newline at end of file diff --git a/src/components/ListItem.tsx b/src/components/ListItem.tsx new file mode 100644 index 0000000..25c0aaf --- /dev/null +++ b/src/components/ListItem.tsx @@ -0,0 +1,15 @@ +import { Viewer } from './Viewer'; +import { getLanguage } from '../util/doc'; +import * as React from 'react'; +import {Document} from "../models/Document" +import { Link } from "react-router-dom"; +export class ListItem extends React.PureComponent<{doc: Document, uid: string, docId: string}>{ + render(){ + return
+

+ {this.props.doc.Title || 'Untitled'} +

+ +
+ } +} \ No newline at end of file diff --git a/src/components/NavBar.tsx b/src/components/NavBar.tsx index eae0e57..0317f26 100644 --- a/src/components/NavBar.tsx +++ b/src/components/NavBar.tsx @@ -1,20 +1,30 @@ -import * as React from "react"; +import { LoginState } from '../models/LoginState'; +import * as React from 'react'; import { TabContent, TabPane, Nav, NavItem, NavLink, Card, Button, CardTitle, CardText, Row, Col, NavbarBrand, Navbar } from 'reactstrap'; +import { LoginContainer } from '../containers/Login'; +import { Link } from 'react-router-dom'; -export class NavBar extends React.Component { +export class NavBar extends React.Component<{loginState: LoginState}, any> { constructor(props: any) { super(props); } render() { + let newButton = this.props.loginState.isLoggedIn ? ( + + + New + + ) : null; return (
minbin + diff --git a/src/components/Viewer.tsx b/src/components/Viewer.tsx index 8c24393..c0c5f2a 100644 --- a/src/components/Viewer.tsx +++ b/src/components/Viewer.tsx @@ -1,35 +1,21 @@ -/// +/// import * as React from "react"; import { Row, Col, Card, CardText } from "reactstrap"; import SyntaxHighlighter from 'react-syntax-highlighter'; import googlecode from "react-syntax-highlighter/styles/hljs/googlecode"; -let exampleText = ` -void Main() -{ - let next5Friday13 = DateTime.Today - .Recurse(a=>a.AddDays(1)) - .Where(a=>a.Day == 13 && a.DayOfWeek == DayOfWeek.Friday).Take(5); - -} -public static class Extension -{ - public static IEnumerable Recurse(this T obj, Func action) - { - let local = obj; - while(true) - { - local = action(local); - yield return local; - } - } -} -` -export interface ViewerProps {doc?: string, language?: string} + +export interface ViewerProps {doc?: string, language?: string, maxHeight?: string} export class Viewer extends React.Component{ render(){ + let style : React.CSSProperties = { paddingTop: "10px" }; + if(this.props.maxHeight){ + style.maxHeight = this.props.maxHeight + } return( - - {this.props.doc || ''} - ); + + + {this.props.doc || ''} + + ); } } \ No newline at end of file diff --git a/src/containers/AppContainer.tsx b/src/containers/AppContainer.tsx index c7b98ae..2acfd6b 100644 --- a/src/containers/AppContainer.tsx +++ b/src/containers/AppContainer.tsx @@ -1,3 +1,4 @@ +import { HomeContainer } from './HomeContainer'; import { LoginState } from '../models/LoginState'; import { Edit } from './Edit'; import { LoginContainer } from './Login'; @@ -18,15 +19,13 @@ const mapStateToProps = (state : AppState) : AppState => class appContainer extends React.Component{ render(){ return
- - - + { return }} /> )=>{ - var showEdit; + let showEdit; if(routeProps.match.params.edit === "edit"){ showEdit = true; } @@ -39,6 +38,9 @@ class appContainer extends React.Component{ return }} /> + + +
diff --git a/src/containers/Edit.tsx b/src/containers/Edit.tsx index 36b6a39..036ca8c 100644 --- a/src/containers/Edit.tsx +++ b/src/containers/Edit.tsx @@ -1,11 +1,11 @@ -import { generateDocId } from '../util/doc'; +import { generateDocId, getLanguage } from '../util/doc'; import { LoginState } from '../models/LoginState'; import { Editor } from '../components/Editor'; import { Viewer } from '../components/Viewer'; import * as React from 'react'; import fbData from '../startup/firebase' import {Document} from '../models/Document' -import { TabContent, TabPane, Nav, NavItem, NavLink, Card, Button, CardTitle, CardText, Row, Col, NavbarBrand } from 'reactstrap'; +import { TabContent, TabPane, Nav, NavItem, NavLink, Card, Button, CardTitle, CardText, Row, Col, NavbarBrand, FormText, Input } from 'reactstrap'; import { Link } from 'react-router-dom'; import { Conditional } from '../components/Conditional'; import { ChangeEventHandler } from 'react'; @@ -48,9 +48,10 @@ export class Edit extends React.Component { } render() { - var tabNumber = this.props.showEdit ? '2': '1' - var displayEdit = this.props.login.isLoggedIn && this.props.login.uid === this.props.uid; - var displayViewer = tabNumber === '1'; + let tabNumber = this.props.showEdit ? '2': '1' + let displayEdit = this.props.login.isLoggedIn && this.props.login.uid === this.props.uid; + let displayViewer = tabNumber === '1'; + // : null; return (
@@ -79,25 +80,24 @@ export class Edit extends React.Component {

{this.state.document.Title}


- +
- - - + - +
Permalink:

+
- this.updateTitle(event.target.value)} value={this.state.document.Title} className="form-control" id="title-input" placeholder="Title" /> + this.updateTitle(event.target.value)} value={this.state.document.Title} className="form-control" id="title-input" />
diff --git a/src/containers/HomeContainer.tsx b/src/containers/HomeContainer.tsx new file mode 100644 index 0000000..ca5fe09 --- /dev/null +++ b/src/containers/HomeContainer.tsx @@ -0,0 +1,17 @@ +import { Home } from '../components/Home'; +import { LoginState } from '../models/LoginState'; +import * as React from 'react'; +import { ListContainer } from './ListContainer'; + +export class HomeContainer extends React.Component<{login: LoginState},any>{ + + render(){ + let render = this.props.login.isLoggedIn ? : + return( +
+ {render} +
+ ) + + } +} \ No newline at end of file diff --git a/src/containers/ListContainer.tsx b/src/containers/ListContainer.tsx new file mode 100644 index 0000000..dd7ee50 --- /dev/null +++ b/src/containers/ListContainer.tsx @@ -0,0 +1,50 @@ +import { ListItem } from '../components/ListItem'; +import { Viewer } from '../components/Viewer'; +import { LoginState } from '../models/LoginState'; +import * as React from 'react'; +import fbData from '../startup/firebase'; +import Progress from 'reactstrap/lib/Progress'; +import { DocumentPlusKey } from '../models/Document' +import { getLanguage } from '../util/doc'; + +export class ListContainer extends React.Component<{login: LoginState}, {inProgress: Boolean, docs: Array, error : Boolean }>{ + inProgress: Boolean = true; + getPastes(){ + fbData.rebase.fetch(`/docs/${this.props.login.uid}`, + { + context: this, + asArray: true + }) + .then((data: Array)=> + { + this.setState({docs: data, inProgress: false}); + }) + .catch((err: any)=>{ + console.error(err); + this.setState({error: true, inProgress: false}); + }); + } + constructor(login: {login: LoginState}){ + super(login) + this.state = {inProgress: true, docs: new Array(), error: false} + } + componentDidMount(){ + this.getPastes() + } + render(){ + if(this.state.inProgress){ + return
+ } + if(this.state.error){ + return

Oh No! An error occured

+ } + if(this.state.docs.length < 1){ + return

No pastes found Press new in the upper right to make a paste!

+ } + let elems =this.state.docs.map(doc => { + return + }); + return
{elems}
+ + } +} \ No newline at end of file diff --git a/src/containers/Login.tsx b/src/containers/Login.tsx index c59d7d1..4239ab6 100644 --- a/src/containers/Login.tsx +++ b/src/containers/Login.tsx @@ -50,11 +50,11 @@ class loginContainer extends React.Component{ firebase.auth().setPersistence(firebase.auth.Auth.Persistence.SESSION) .then(()=>firebase.auth().signInWithPopup(provider).then(result => {})); } + //todo I should seperate the UI layer from the login business logic, redux posting render(){ - if(this.props && this.props.loginState && this.props.loginState.isLoggedIn){ - return + New Hi, {this.props.loginState.displayName} this.logout()}>Log Out ; + return   Hi, {this.props.loginState.displayName} this.logout()}>Log Out ; } else{ return ; diff --git a/src/index.tsx b/src/index.tsx index ae7f41d..a5a4c78 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,6 +1,5 @@ import * as React from "react"; import * as ReactDOM from "react-dom"; -import { Hello } from "./components/Hello"; import 'bootstrap/dist/css/bootstrap.css'; import { NavBar } from './components/NavBar' import rebase from './startup/firebase' diff --git a/src/models/Document.ts b/src/models/Document.ts index 4864d80..80f03f9 100644 --- a/src/models/Document.ts +++ b/src/models/Document.ts @@ -1,4 +1,10 @@ +export enum Theme { + +} + export interface Document { Title?: string, - Body?: string -} \ No newline at end of file + Body?: string, + Theme?: Theme +} +export interface DocumentPlusKey extends Document{key: string} \ No newline at end of file diff --git a/src/redux-styles.d.ts b/src/react-syntax-highlighter.d.ts similarity index 100% rename from src/redux-styles.d.ts rename to src/react-syntax-highlighter.d.ts diff --git a/src/styles/main.css b/src/styles/main.css index 317c3e3..1270a0e 100644 --- a/src/styles/main.css +++ b/src/styles/main.css @@ -1,5 +1,5 @@ .main { background-color: lightgray; width: 100%; - height: 100; + height: 100%; } \ No newline at end of file diff --git a/src/util/doc.ts b/src/util/doc.ts index 56428b9..2c88b99 100644 --- a/src/util/doc.ts +++ b/src/util/doc.ts @@ -5,4 +5,15 @@ export function generateDocId(){ result += str.charAt(Math.floor(Math.random()*str.length)) } return result; +} + +export function getLanguage(title?: string){ + let language = null; + if(title){ + let split = title.split('.'); + if(split.length == 2){ + language = split[1]; + } + } + return language; } \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index e00b3a8..689c8c3 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,8 +1,9 @@ +var webpack = require('webpack'); module.exports = { entry: "./src/index.tsx", output: { filename: "bundle.js", - path: __dirname + "./dist", + path: __dirname + "/dist", }, @@ -12,7 +13,13 @@ module.exports = { // Add '.ts' and '.tsx' as resolvable extensions. extensions: [".ts", ".tsx", ".js", ".json"] }, - + plugins: [ + new webpack.DefinePlugin({ + 'process.env': { + NODE_ENV: '"production"' + } + }) + ], module: { rules: [ // All files with a '.ts' or '.tsx' extension will be handled by 'awesome-typescript-loader'. diff --git a/yarn.lock b/yarn.lock index 0667d45..72991c0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -450,6 +450,10 @@ babel-runtime@^6.18.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" +bail@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.2.tgz#f7d6c1731630a9f9f0d4d35ed1f962e2074a1764" + balanced-match@^0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" @@ -749,6 +753,18 @@ chalk@^2.3.0: escape-string-regexp "^1.0.5" supports-color "^4.0.0" +character-entities-legacy@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.1.tgz#f40779df1a101872bb510a3d295e1fccf147202f" + +character-entities@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.1.tgz#f76871be5ef66ddb7f8f8e3478ecc374c27d6dca" + +character-reference-invalid@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.1.tgz#942835f750e4ec61a308e60c2ef8cc1011202efc" + chokidar@^1.6.0, chokidar@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" @@ -833,6 +849,10 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" +collapse-white-space@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.3.tgz#4b906f670e5a963a87b76b0e1689643341b6023c" + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -1551,7 +1571,7 @@ extend-shallow@^3.0.0: dependencies: is-extendable "^1.0.1" -extend@~3.0.0: +extend@^3.0.0, extend@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" @@ -2160,6 +2180,17 @@ is-accessor-descriptor@^0.1.6: dependencies: kind-of "^3.0.2" +is-alphabetical@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.1.tgz#c77079cc91d4efac775be1034bf2d243f95e6f08" + +is-alphanumerical@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.1.tgz#dfb4aa4d1085e33bdb61c2dee9c80e9c6c19f53b" + dependencies: + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -2170,7 +2201,7 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" -is-buffer@^1.1.5: +is-buffer@^1.1.4, is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -2194,6 +2225,10 @@ is-date-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" +is-decimal@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.1.tgz#f5fb6a94996ad9e8e3761fbfbd091f1fca8c4e82" + is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -2266,6 +2301,10 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" +is-hexadecimal@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.1.tgz#6e084bbc92061fbb0971ec58b6ce6d404e24da69" + is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" @@ -2300,7 +2339,7 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" -is-plain-obj@^1.0.0: +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -2346,6 +2385,14 @@ is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" +is-whitespace-character@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.1.tgz#9ae0176f3282b65457a1992cdb084f8a5f833e3b" + +is-word-character@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.1.tgz#5a03fa1ea91ace8a6eb0c7cd770eb86d65c8befb" + is-wsl@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" @@ -2624,6 +2671,10 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +markdown-escapes@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.1.tgz#1994df2d3af4811de59a6714934c2b2292734518" + math-expression-evaluator@^1.2.14: version "1.2.17" resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" @@ -3071,6 +3122,17 @@ parse-asn1@^5.0.0: evp_bytestokey "^1.0.0" pbkdf2 "^3.0.3" +parse-entities@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.1.1.tgz#8112d88471319f27abae4d64964b122fe4e1b890" + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + parse-glob@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" @@ -3626,6 +3688,16 @@ react-dom@^16.2.0: object-assign "^4.1.1" prop-types "^15.6.0" +react-markdown@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-3.1.3.tgz#5ac1f20cb5a3e8c47b6ae3c8522e813b08f58c34" + dependencies: + prop-types "^15.6.0" + remark-parse "^4.0.0" + unified "^6.1.5" + unist-util-visit "^1.1.3" + xtend "^4.0.1" + react-popper@^0.7.2: version "0.7.4" resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-0.7.4.tgz#8649d539837e7c6f47bc9b24c9cf57a404e199a1" @@ -3835,6 +3907,26 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" +remark-parse@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-4.0.0.tgz#99f1f049afac80382366e2e0d0bd55429dd45d8b" + dependencies: + collapse-white-space "^1.0.2" + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + is-word-character "^1.0.0" + markdown-escapes "^1.0.0" + parse-entities "^1.0.2" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + trim "0.0.1" + trim-trailing-lines "^1.0.0" + unherit "^1.0.4" + unist-util-remove-position "^1.0.0" + vfile-location "^2.0.0" + xtend "^4.0.1" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -3843,7 +3935,7 @@ repeat-element@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" -repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" @@ -3853,6 +3945,10 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" +replace-ext@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + request@2.81.0: version "2.81.0" resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" @@ -4229,6 +4325,10 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" +state-toggle@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.0.tgz#d20f9a616bb4f0c3b98b91922d25b640aa2bc425" + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -4443,10 +4543,18 @@ trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" +trim-trailing-lines@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.0.tgz#7aefbb7808df9d669f6da2e438cac8c46ada7684" + trim@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" +trough@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.1.tgz#a9fd8b0394b0ae8fff82e0633a0a36ccad5b5f86" + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -4505,6 +4613,25 @@ underscore@^1.8.3: version "1.8.3" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" +unherit@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.0.tgz#6b9aaedfbf73df1756ad9e316dd981885840cd7d" + dependencies: + inherits "^2.0.1" + xtend "^4.0.1" + +unified@^6.1.5: + version "6.1.6" + resolved "https://registry.yarnpkg.com/unified/-/unified-6.1.6.tgz#5ea7f807a0898f1f8acdeefe5f25faa010cc42b1" + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-plain-obj "^1.1.0" + trough "^1.0.0" + vfile "^2.0.0" + x-is-function "^1.0.4" + x-is-string "^0.1.0" + union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" @@ -4528,6 +4655,26 @@ uniqs@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" +unist-util-is@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.1.tgz#0c312629e3f960c66e931e812d3d80e77010947b" + +unist-util-remove-position@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.1.tgz#5a85c1555fc1ba0c101b86707d15e50fa4c871bb" + dependencies: + unist-util-visit "^1.1.0" + +unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.1.tgz#3ccbdc53679eed6ecf3777dd7f5e3229c1b6aa3c" + +unist-util-visit@^1.1.0, unist-util-visit@^1.1.3: + version "1.3.0" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.3.0.tgz#41ca7c82981fd1ce6c762aac397fc24e35711444" + dependencies: + unist-util-is "^2.1.1" + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -4621,6 +4768,25 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +vfile-location@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.2.tgz#d3675c59c877498e492b4756ff65e4af1a752255" + +vfile-message@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.0.0.tgz#a6adb0474ea400fa25d929f1d673abea6a17e359" + dependencies: + unist-util-stringify-position "^1.1.1" + +vfile@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a" + dependencies: + is-buffer "^1.1.4" + replace-ext "1.0.0" + unist-util-stringify-position "^1.0.0" + vfile-message "^1.0.0" + vm-browserify@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" @@ -4785,11 +4951,19 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" +x-is-function@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/x-is-function/-/x-is-function-1.0.4.tgz#5d294dc3d268cbdd062580e0c5df77a391d1fa1e" + +x-is-string@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" + xmlhttprequest@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" -xtend@^4.0.0: +xtend@^4.0.0, xtend@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"