diff --git a/examples/basic/src/index.mdx b/examples/basic/src/index.mdx new file mode 100644 index 0000000..aff0577 --- /dev/null +++ b/examples/basic/src/index.mdx @@ -0,0 +1,14 @@ +import { doc } from 'docz' + +export const meta = doc('Overview') + .route('/') + .order(1) + +## Introduction Hello +A design system can help establish a common vocabulary between everyone in an organization. That’s why I’ve spent a great deal of time coming up with structure and naming for Vue Design System that would make sense. To start opening it up, let’s go through each layer in detail and what the terms mean: + +- *Principles* are the foundation of the whole system. They form the basis of a good product and help the team with decision making. They are there to guide you and your team when working with the myriad parts of the system and help you do better and more informed decisions. +- *Design* Tokens are the atoms of the system as Salesforce describes them. In Vue Design System they are used instead of hard coded values to ensure a better consistency across any platform. +- *Elements* utilize decisions made on the token level. A simple example of an element would be a button, a link, or an input. Anything that cannot be broken down further. I use the name ‘element’ since everything in Vue and React world is nowadays ‘a component.’ Using that term for anything else would be confusing. +- *Patterns* are UI Patterns that fall on the more complex side of the spectrum. So for example things like a date picker, a data table, or a visualization. Patterns utilize both elements and tokens. If you wonder whether something should be called an element or a pattern, ask yourself this question: “Can this be broken down into smaller pieces?” If the answer is yes, it should most likely be a pattern in Vue Design System. +- *Templates* exist to document the layout and structure of a section. I am not calling these pages since semantically that would be incorrect. While they can be pages, that’s not their only functionality. Templates consist of the three things mentioned above: tokens, elements, and patterns. diff --git a/packages/docz-core/package.json b/packages/docz-core/package.json index c82ef21..c19eba9 100644 --- a/packages/docz-core/package.json +++ b/packages/docz-core/package.json @@ -21,16 +21,14 @@ "dependencies": { "@babel/core": "^7.0.0-beta.44", "@babel/runtime": "^7.0.0-beta.44", - "@mdx-js/loader": "^0.8.0", - "@mdx-js/mdx": "^0.8.0", + "@mdx-js/loader": "^0.8.1", + "@mdx-js/mdx": "^0.8.1", + "@mdx-js/mdxast": "^0.7.2", + "@sindresorhus/slugify": "^0.3.0", "art-template": "^4.12.2", - "babel-file-loader": "^1.0.3", - "babel-generator": "^6.26.1", "babel-loader": "^8.0.0-beta.1", "babel-polyfill": "^7.0.0-beta.3", "babel-preset-react-app": "^4.0.0-next.b2fd8db8", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", "chokidar": "^2.0.3", "deepmerge": "^2.1.0", "del": "3.0.0", @@ -46,11 +44,14 @@ "prettier": "^1.12.0", "react-dev-utils": "^5.0.1", "react-hot-loader": "^4.0.1", + "remark-parse": "^5.0.0", "resolve": "^1.7.1", + "socket.io": "^2.1.0", "thread-loader": "^1.1.5", "ulid": "^2.3.0", + "unified": "^6.2.0", "url-loader": "^1.0.1", - "webpack": "^4.5.0", + "webpack": "^4.7.0", "webpack-chain": "^4.6.0", "webpack-dev-middleware": "^3.1.2", "webpack-dev-server-speedy": "^3.1.1", @@ -58,21 +59,20 @@ "yargs": "^11.0.0" }, "devDependencies": { - "@types/babel-traverse": "^6.25.3", - "@types/bcryptjs": "^2.4.1", "@types/chokidar": "^1.7.5", "@types/deepmerge": "^2.1.0", "@types/del": "^3.0.1", "@types/express": "^4.11.1", "@types/html-webpack-plugin": "^2.30.3", "@types/mkdirp": "^0.5.2", - "@types/node": "10.0.0", - "@types/prettier": "^1.12.0", + "@types/node": "10.0.4", + "@types/prettier": "^1.12.1", "@types/resolve": "^0.0.7", "@types/webpack": "^4.1.3", "@types/webpack-chain": "^4.0.2", "@types/yargs": "^11.0.0", "rollup-plugin-cpy": "^1.0.0", + "tslint": "^5.10.0", "typescript": "^2.8.3" } } diff --git a/packages/docz-core/src/Entries.ts b/packages/docz-core/src/Entries.ts index 8e41e87..bdc5893 100644 --- a/packages/docz-core/src/Entries.ts +++ b/packages/docz-core/src/Entries.ts @@ -30,6 +30,7 @@ const touch = (file: string, raw: string) => { const compiled = (file: string) => compile(fs.readFileSync(path.join(paths.templates, file), 'utf-8')) +const docs = compiled('docs.tpl.js') const app = compiled('app.tpl.js') const js = compiled('index.tpl.js') const html = compiled('index.tpl.html') @@ -54,35 +55,6 @@ export class Entries { .map(file => new Entry(file, config.src)) } - public find(file: string): Entry | undefined { - return this.entries.find(entry => entry.filepath === file) - } - - public findIndex(file: string): number { - return this.entries.findIndex(entry => entry.filepath === file) - } - - public add(entry: Entry): void { - this.entries.push(entry) - } - - public remove(file: string): void { - const idx = this.findIndex(file) - - if (idx > -1) { - this.entries.splice(idx, 1) - } - } - - public update(file: string): void { - const idx = this.findIndex(file) - const entry = new Entry(file, this.config.src) - - if (idx > -1) { - this.entries.splice(idx, 1, entry) - } - } - public write(): void { const { plugins, title, description, theme } = this.config @@ -96,8 +68,11 @@ export class Entries { description, }) - const rawAppJs = app({ + const rawDocsJs = docs({ imports, + }) + + const rawAppJs = app({ theme, wrappers, }) @@ -109,6 +84,7 @@ export class Entries { touch(paths.indexHtml, rawIndexHtml) touch(paths.appJs, rawAppJs) + touch(paths.docsJs, rawDocsJs) touch(paths.indexJs, rawIndexJs) touch( diff --git a/packages/docz-core/src/Entry.ts b/packages/docz-core/src/Entry.ts index 3ac92b8..3f767d6 100644 --- a/packages/docz-core/src/Entry.ts +++ b/packages/docz-core/src/Entry.ts @@ -1,50 +1,48 @@ +import * as fs from 'fs' import * as path from 'path' -import * as t from 'babel-types' import { ulid } from 'ulid' -import { NodePath } from 'babel-traverse' -import generate from 'babel-generator' -import get from 'lodash.get' +import unified from 'unified' +import remark from 'remark-parse' +import toMDXAST from '@mdx-js/mdxast' +import slugify from '@sindresorhus/slugify' import * as paths from './config/paths' -import { format } from './utils/format' -import { traverseAndAssign, traverseAndAssignEach } from './utils/traverse' -const hasImport = (p: NodePath): boolean => - t.isImportDeclaration(p) && get(p, 'node.source.value') === `docz` +const parseMdx = (file: string) => { + const raw = fs.readFileSync(file, 'utf-8') + const tree = unified() + .use(remark) + .parse(raw) -const hasDocFn = (p: NodePath): boolean => - p.node.specifiers && - p.node.specifiers.some( - (node: NodePath) => - t.isImportSpecifier(node) && node.imported.name === 'doc' + return toMDXAST({})(tree) +} + +const checkImport = (file: string) => { + const ast = parseMdx(file) + + return ( + ast.children && + ast.children.some( + (child: any) => child.type === 'import' && /docz/.test(child.value) + ) ) +} -const checkImport = traverseAndAssign, boolean>({ - when: p => hasImport(p) && hasDocFn(p), - assign: () => true, -}) +const getNameFromDoc = (file: string) => { + const ast = parseMdx(file) + const found = + ast.children && + ast.children.find( + (child: any) => + child && + child.type === 'export' && + /export const meta/.test(child.value) && + /doc\(.+\)/.test(child.value) + ) -const getNameFromDoc = traverseAndAssign({ - when: p => p.isCallExpression() && get(p, 'node.callee.name') === 'doc', - assign: p => get(p, 'node.arguments[0].value'), -}) - -const parseSections = traverseAndAssignEach, string[]>({ - when: 'MemberExpression', - assign: p => { - const name = get(p, 'node.property.name') - const args = get(p, 'parentPath.node.arguments') - - if (name === 'section' && args && args.length > 0) { - for (const arg of args) { - if (arg.type !== 'StringLiteral') { - const { code } = generate(arg.body) - return format(code).slice(1, Infinity) as any - } - } - } - }, -}) + const name = found.value.match(/(doc\()(.+)(\))/) + return slugify(name[2]) +} export class Entry { readonly [key: string]: any @@ -57,15 +55,9 @@ export class Entry { return getNameFromDoc(file) } - public static parseSections(file: string): string[] | null { - const sections = parseSections(file) - return sections && sections.reverse() - } - public id: string public filepath: string public name: string | null - public sections: string[] | null constructor(file: string, src: string) { const filepath = path.relative(paths.root, file) @@ -73,6 +65,5 @@ export class Entry { this.id = ulid() this.filepath = filepath this.name = Entry.parseName(file) - this.sections = Entry.parseSections(file) } } diff --git a/packages/docz-core/src/commands/args.ts b/packages/docz-core/src/commands/args.ts index 15d7138..afd8c55 100644 --- a/packages/docz-core/src/commands/args.ts +++ b/packages/docz-core/src/commands/args.ts @@ -24,13 +24,6 @@ export interface Config extends Argv { hastPlugins: any[] } -const EXTS = '{j,t}{s,sx}' -const DEFAULT_FILES_GLOB = [ - `docs/**.${EXTS}`, - `**/__docs__/*.${EXTS}`, - `**/*.doc.${EXTS}`, -] - export const args = (yargs: any) => { yargs.positional('source', { alias: 'src', @@ -39,7 +32,7 @@ export const args = (yargs: any) => { }) yargs.positional('files', { type: 'string', - default: DEFAULT_FILES_GLOB, + default: '**/*.mdx', }) yargs.positional('title', { type: 'string', diff --git a/packages/docz-core/src/commands/dev.ts b/packages/docz-core/src/commands/dev.ts index 0b8ed22..1f7ebf1 100644 --- a/packages/docz-core/src/commands/dev.ts +++ b/packages/docz-core/src/commands/dev.ts @@ -1,46 +1,15 @@ import { load } from 'load-cfg' -import { FSWatcher } from 'chokidar' -import * as chokidar from 'chokidar' import del from 'del' import * as paths from '../config/paths' - -import { Entry } from '../Entry' import { Entries } from '../Entries' import { Bundler } from '../Bundler' - import { webpack } from '../bundlers' import { Config } from './args' process.env.BABEL_ENV = process.env.BABEL_ENV || 'development' process.env.NODE_ENV = process.env.NODE_ENV || 'development' -const writeEntriesAndWatch = (watcher: FSWatcher) => (config: Config) => { - const entries = new Entries(config) - const update = () => entries.write() - - const onUnlink = (file: string) => { - entries.remove(file) - update() - } - - const onChange = (file: string) => { - const name = Entry.parseName(file) - const entry = entries.find(file) - - if (name) { - !entry && entries.add(new Entry(file, config.src)) - entry && entries.update(file) - update() - } - } - - watcher.on('unlink', onUnlink) - watcher.on('change', onChange) - - update() -} - const start = async (bundler: Bundler): Promise => { const config = bundler.getConfig() const server = await bundler.createServer(config) @@ -58,13 +27,9 @@ const INITIAL_CONFIG = { export const dev = async (args: Config) => { const config = load('docz', { ...args, ...INITIAL_CONFIG }) const bundler = webpack(config) - const watcher = chokidar.watch(config.files, { - ignored: /(^|[\/\\])\../, - }) - - const writeEntries = writeEntriesAndWatch(watcher) + const entries = new Entries(config) await del(paths.docz) - writeEntries(config) + entries.write() start(bundler) } diff --git a/packages/docz-core/src/config/paths.ts b/packages/docz-core/src/config/paths.ts index 6ee0505..598218b 100644 --- a/packages/docz-core/src/config/paths.ts +++ b/packages/docz-core/src/config/paths.ts @@ -38,6 +38,7 @@ export interface Paths { dist: string templates: string appJs: string + docsJs: string indexJs: string dataJson: string indexHtml: string @@ -52,7 +53,7 @@ export const servedPath = getServedPath(resolveApp('package.json')) export const dist = path.resolve(docz, 'dist/') export const appJs = path.resolve(docz, 'app.jsx') +export const docsJs = path.resolve(docz, 'docs.jsx') export const indexJs = path.resolve(docz, 'index.jsx') export const dataJson = path.resolve(docz, 'data.json') - export const indexHtml = path.resolve(docz, 'index.html') diff --git a/packages/docz-core/src/types.d.ts b/packages/docz-core/src/types.d.ts index 6be6799..201357a 100644 --- a/packages/docz-core/src/types.d.ts +++ b/packages/docz-core/src/types.d.ts @@ -1,6 +1,9 @@ +declare module '@mdx-js/mdxast' +declare module '@mdx-js/mdx' +declare module '@sindresorhus/slugify' +declare module 'unified' +declare module 'remark-parse' declare module 'art-template' -declare module 'babel-file-loader' -declare module 'babel-generator' declare module 'friendly-errors-webpack-plugin' declare module 'json-stringify-pretty-compact' declare module 'lodash.get' diff --git a/packages/docz-core/src/utils/traverse.ts b/packages/docz-core/src/utils/traverse.ts deleted file mode 100644 index 87b0492..0000000 --- a/packages/docz-core/src/utils/traverse.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { loadFileSync } from 'babel-file-loader' - -export type AssignFn = (path: P) => V -export type WhenFn

= (path: P) => boolean - -export type TraverseReturn = (filepath: string) => V | null - -export interface TraverseAndAssign { - assign: AssignFn - when: WhenFn

-} - -export function traverseAndAssign

({ - assign, - when, -}: TraverseAndAssign): TraverseReturn { - return filepath => { - // tslint:disable - let value = null - - try { - const file = loadFileSync(filepath) - - file.path.traverse({ - enter(path: any) { - if (when(path)) { - value = assign(path) - path.stop() - } - }, - }) - } finally { - return value - } - } -} - -export interface TraverseAndAssignEach { - assign: AssignFn - when: string -} - -export function traverseAndAssignEach

({ - assign, - when, -}: TraverseAndAssignEach): TraverseReturn { - return filepath => { - // tslint:disable - let value: any = [] - - try { - const file = loadFileSync(filepath) - - file.path.traverse({ - [when](path: any) { - const result = assign(path) - result && value.push(result) - }, - }) - } finally { - return value - } - } -} diff --git a/packages/docz-core/templates/app.tpl.js b/packages/docz-core/templates/app.tpl.js index d14bf0c..0b8ea24 100644 --- a/packages/docz-core/templates/app.tpl.js +++ b/packages/docz-core/templates/app.tpl.js @@ -1,9 +1,7 @@ -<% imports.forEach(imp => { %>import '<%- imp %>' -<% }) %> import React from 'react' import { hot } from 'react-hot-loader' import { Theme } from '<%- theme %>' -import data from './data.json' +import { Docs } from './docs' const _wrappers = [<% if (wrappers) {%><%- wrappers %><%}%>] @@ -18,7 +16,9 @@ const Wrapper = props => const App = () => ( - + + {(docs) => } + ) diff --git a/packages/docz-core/templates/docs.tpl.js b/packages/docz-core/templates/docs.tpl.js new file mode 100644 index 0000000..ef6101e --- /dev/null +++ b/packages/docz-core/templates/docs.tpl.js @@ -0,0 +1,36 @@ +import React, { Component } from 'react' +import data from './data.json' + +const mergeDocsWithEntries = (docs, entries) => + docs + .map(doc => { + const Component = doc.default + const instance = doc.meta.findEntryAndMerge(entries) + + return instance.toObject(Component) + }) + .sort((docA, docB) => docB.order - docA.order) + +export class Docs extends Component { + state = { + docs: [], + } + + importDocs = async () => { + const docs = await Promise.all([<%imports.forEach((imp, index) => { %> + import('<%- imp %>'),<% }) %> + ]) + + this.setState({ + docs: mergeDocsWithEntries(docs, data.entries) + }) + } + + async componentDidMount() { + await this.importDocs() + } + + render() { + return this.props.children(this.state.docs) + } +} diff --git a/packages/docz-theme-default/package.json b/packages/docz-theme-default/package.json index 26bf16b..c748e69 100644 --- a/packages/docz-theme-default/package.json +++ b/packages/docz-theme-default/package.json @@ -16,12 +16,10 @@ "build": "libundler build --ts -e all --c --sm" }, "dependencies": { - "classnames": "^2.2.5", "docz": "^0.0.1", "emotion": "^9.1.2", "emotion-normalize": "^7.0.1", "history": "^4.7.2", - "prismjs": "^1.14.0", "react": "^16.3.2", "react-dom": "^16.3.2", "react-emotion": "^9.1.2", @@ -39,8 +37,6 @@ "@babel/plugin-proposal-class-properties": "^7.0.0-beta.44", "@babel/preset-env": "^7.0.0-beta.44", "@babel/preset-react": "^7.0.0-beta.44", - "@types/classnames": "^2.2.3", - "@types/prismjs": "^1.9.0", "@types/react-router-dom": "^4.2.6", "babel-plugin-emotion": "^9.1.0" } diff --git a/packages/docz-theme-default/src/components/Doc.tsx b/packages/docz-theme-default/src/components/Doc.tsx index bc09c3c..c340599 100644 --- a/packages/docz-theme-default/src/components/Doc.tsx +++ b/packages/docz-theme-default/src/components/Doc.tsx @@ -1,11 +1,8 @@ import React, { SFC } from 'react' import styled from 'react-emotion' -import { DocObj, Section } from 'docz' -import { Toggle } from 'react-powerplug' +import { DocObj } from 'docz' import * as Icon from 'react-feather' -import { Highlight } from './Highlight' -import { Render } from './Render' import * as colors from '../styles/colors' const Container = styled('div')` @@ -43,73 +40,11 @@ const Filepath = styled('div')` color: ${colors.GRAY_MEDIUM}; ` -const Description = styled('p')` - margin: 20px 0 10px; -` - -const Section = styled('div')` - margin-top: 40px; -` - -const RenderWrapper = styled('div')` - position: relative; - padding: 10px; - background: white; - border: 1px solid ${colors.GRAY}; - border-radius: 3px 3px 0 3px; -` - -const CodeButton = styled('button')` - cursor: pointer; - position: absolute; - bottom: 0; - right: 0; - padding: 5px 10px; - border: none; - border-radius: 0 0 3px 3px; - background: ${colors.GRAY}; - font-size: 10px; - font-weight: 600; - color: ${colors.GRAY_DARK}; - text-transform: uppercase; - transform: translate(1px, 100%); -` - -interface ToggleProps { - toggle: () => void - on: boolean -} - -interface DocSectionProps { - section: Section -} - -const DocSection: SFC = ({ section }) => ( -

- {section.title &&

{section.title}

} - - {({ toggle, on }: ToggleProps) => ( - - {on ? ( - {section.code} - ) : ( - - )} - - - - - )} - -
-) - export const Doc: SFC = ({ id, name, filepath, - description, - sections, + component: Component, }) => ( {name} @@ -117,11 +52,6 @@ export const Doc: SFC = ({ {filepath} - {description && {description}} - {sections && - sections.length > 0 && - sections.map(section => ( - - ))} + ) diff --git a/packages/docz-theme-default/src/components/Highlight.tsx b/packages/docz-theme-default/src/components/Highlight.tsx deleted file mode 100644 index 9f6aa2a..0000000 --- a/packages/docz-theme-default/src/components/Highlight.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import 'prismjs' -import 'prismjs/components/prism-jsx' -import '../styles/prism-github' - -import React, { PureComponent } from 'react' -import cx from 'classnames' -import prism from 'prismjs' - -interface HighlightProps { - language: string -} - -export class Highlight extends PureComponent { - private el: Element | null - - constructor(props: HighlightProps) { - super(props) - this.el = null - } - - public render(): JSX.Element { - const className = cx({ - 'react-prism': true, - [`language-${this.props.language}`]: !!this.props.language, - }) - - return ( -
 {
-          this.el = node
-        }}
-      >
-        {this.props.children}
-      
- ) - } - - public componentDidMount(): void { - this.highlightCode() - } - - public componentDidUpdate(): void { - this.highlightCode() - } - - private highlightCode(): void { - prism.highlightElement(this.el as Element) - } -} diff --git a/packages/docz/package.json b/packages/docz/package.json index 891d71b..93f77ca 100644 --- a/packages/docz/package.json +++ b/packages/docz/package.json @@ -22,10 +22,11 @@ "tslint": "tslint --project ." }, "dependencies": { - "@sindresorhus/slugify": "^0.2.0", + "@sindresorhus/slugify": "^0.3.0", + "invariant": "^2.2.4", + "pascalcase": "^0.1.1", "react": "^16.3.2", "react-dom": "^16.3.2", - "ulid": "^2.3.0", "yargs": "^11.0.0" }, "peerDependencies": { diff --git a/packages/docz/src/Doc.ts b/packages/docz/src/Doc.ts index d67672a..009a4af 100644 --- a/packages/docz/src/Doc.ts +++ b/packages/docz/src/Doc.ts @@ -1,18 +1,14 @@ /* tslint:disable:variable-name */ -import { ulid } from 'ulid' +import { ComponentType } from 'react' import slugify from '@sindresorhus/slugify' - -export const cache = new Map() +import pascalcase from 'pascalcase' export const isFn = (value: any): boolean => typeof value === 'function' export const safeUrl = (value: string) => encodeURI(value.replace(/\s/g, '')) -export interface Section { - id: string - title?: string - code?: string - render: (container: HTMLElement) => any -} +export type MDXComponent = ComponentType<{ + components?: Record +}> export interface DocConstructorArgs { name: string @@ -23,33 +19,34 @@ export interface DocObj { readonly route: string readonly id: string | undefined readonly order: number - readonly description: string | undefined readonly filepath: string | undefined readonly category: string | undefined - readonly sections: Section[] + readonly component: MDXComponent } export interface Entry { id: string name: string filepath: string - importPath: string - sections: string[] } export class Doc { + static categoriesFromDocs = (docs: DocObj[]) => + docs.reduce( + (arr: string[], { category }: DocObj) => + category && arr.indexOf(category) === -1 ? arr.concat([category]) : arr, + [] + ) + private _name: string private _route: string private _id: string | undefined private _order: number - private _description: string | undefined private _filepath: string | undefined private _category: string | undefined - private _sections: Section[] constructor(name: string) { this._name = name - this._sections = [] this._route = `/${slugify(name)}` this._order = 0 @@ -68,61 +65,35 @@ export class Doc { return this } - public description(value: string): Doc { - this._description = value - return this - } - - public section(...args: any[]): Doc { - const [title, renderMethod] = args - const render = isFn(title) ? title : renderMethod - const id = ulid() - - this._sections.push({ - id, - render: (container: HTMLElement) => render(container), - ...(title && !isFn(title) && { title }), - }) - - return this - } - public route(path: string): Doc { this._route = safeUrl(path) return this } public findEntryAndMerge(entries: Entry[]): Doc { - const entry = entries.find(entry => entry.name === this._name) + const entry = entries.find(entry => entry.name === slugify(this._name)) if (entry) { this._id = entry.id this._filepath = entry.filepath - this._sections.forEach((section, id) => { - section.code = entry.sections[id] - }) } return this } - public toObject(): DocObj { + public toObject(Component: MDXComponent): DocObj { + Component.displayName = pascalcase(this._name) + return { + component: Component, id: this._id, name: this._name, order: this._order, category: this._category, - description: this._description, filepath: this._filepath, route: this._route, - sections: this._sections, } } } -export const doc = (name: string): Doc => { - const newDoc = new Doc(name) - - cache.set(name, newDoc) - return newDoc -} +export const doc = (name: string): Doc => new Doc(name) diff --git a/packages/docz/src/Docs.tsx b/packages/docz/src/Docs.tsx index f6a6cee..638d369 100644 --- a/packages/docz/src/Docs.tsx +++ b/packages/docz/src/Docs.tsx @@ -1,8 +1,9 @@ import * as React from 'react' -import { cache, Doc, DocObj, Entry } from './Doc' +import { DocObj } from './Doc' export const isFn = (value: any): boolean => typeof value === 'function' +export const docsContext = React.createContext([] as DocObj[]) export interface DocsRenderProps { docs: DocObj[] @@ -13,34 +14,18 @@ export interface DocsProps { children: (renderProps: DocsRenderProps) => React.ReactNode } -export const entriesContext = React.createContext([] as Entry[]) - -const mergeDocsWithEntries = (docs: Doc[], entries: Entry[]): DocObj[] => - docs - .map(doc => doc.findEntryAndMerge(entries)) - .map(doc => doc.toObject()) - .sort((docA, docB) => docB.order - docA.order) - -const categoriesFromDocs = (docs: Doc[]) => - docs.reduce((arr: string[], docInstance: Doc) => { - const { category } = docInstance.toObject() - return category && arr.indexOf(category) === -1 - ? arr.concat([category]) - : arr - }, []) - export const Docs: React.SFC = ({ children }) => ( - - {entries => { - const docs = Array.from(cache.values()) + + {docs => { + if (!isFn(children)) { + throw new Error( + 'You need to pass a children as a function to your component' + ) + } - return ( - isFn(children) && - children({ - docs: mergeDocsWithEntries(docs, entries), - categories: categoriesFromDocs(docs), - }) - ) + console.log(docs) + + return children({ docs, categories: [] }) }} - + ) diff --git a/packages/docz/src/theme.tsx b/packages/docz/src/theme.tsx index 3a279a0..ddab1b5 100644 --- a/packages/docz/src/theme.tsx +++ b/packages/docz/src/theme.tsx @@ -1,16 +1,16 @@ import * as React from 'react' import { ComponentType } from 'react' -import { entriesContext } from './Docs' +import { docsContext } from './Docs' export interface ThemeProps { - entries: any[] + docs: any[] } export type Theme = (WC: ComponentType) => ComponentType -export const theme: Theme = WrappedComponent => ({ entries }) => ( - +export const theme: Theme = WrappedComponent => ({ docs }) => ( + - + ) diff --git a/packages/docz/src/types.d.ts b/packages/docz/src/types.d.ts index d055c9a..b4a1128 100644 --- a/packages/docz/src/types.d.ts +++ b/packages/docz/src/types.d.ts @@ -1 +1,2 @@ declare module '@sindresorhus/slugify' +declare module 'pascalcase' diff --git a/yarn.lock b/yarn.lock index 0ec6c83..4820516 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1236,15 +1236,15 @@ version "0.6.2" resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.6.2.tgz#19a39bda906e5ba45f39f6f7f3512b2740ceab29" -"@mdx-js/loader@^0.8.0": - version "0.8.0" - resolved "https://registry.npmjs.org/@mdx-js/loader/-/loader-0.8.0.tgz#75a239bfa4dae01e7152b0d51587da63ad1560fd" +"@mdx-js/loader@^0.8.1": + version "0.8.1" + resolved "https://registry.npmjs.org/@mdx-js/loader/-/loader-0.8.1.tgz#9e8b4d9406a4c2cd05fe364b01774ad02d28aca8" dependencies: "@mdx-js/tag" "^0.7.2" -"@mdx-js/mdx@^0.8.0": - version "0.8.0" - resolved "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-0.8.0.tgz#a9fde68032d8538cc0b5373e60a30af50524e88a" +"@mdx-js/mdx@^0.8.1": + version "0.8.1" + resolved "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-0.8.1.tgz#911cb6359525245a4305dfb3cc993b040ad854c8" dependencies: "@mdx-js/mdxast" "^0.7.2" mdast-util-to-hast "^3.0.0" @@ -1282,9 +1282,9 @@ dependencies: execa "^0.2.2" -"@sindresorhus/slugify@^0.2.0": - version "0.2.0" - resolved "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-0.2.0.tgz#fc293151d5ba76089df18ab17f41d4ddf2eacad7" +"@sindresorhus/slugify@^0.3.0": + version "0.3.0" + resolved "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-0.3.0.tgz#39ec81f542b4fcaf7f67fbc8916efa990b65e139" dependencies: escape-string-regexp "^1.0.5" lodash.deburr "^4.1.0" @@ -1295,20 +1295,6 @@ dependencies: "@types/estree" "*" -"@types/babel-traverse@^6.25.3": - version "6.25.3" - resolved "https://registry.npmjs.org/@types/babel-traverse/-/babel-traverse-6.25.3.tgz#34dd69d1e469aee75e20ba00fbc52c7bc717b1c8" - dependencies: - "@types/babel-types" "*" - -"@types/babel-types@*": - version "7.0.1" - resolved "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.1.tgz#1405e5396968c4302994b0161ce405b72b874257" - -"@types/bcryptjs@^2.4.1": - version "2.4.1" - resolved "https://registry.npmjs.org/@types/bcryptjs/-/bcryptjs-2.4.1.tgz#7fb63922b5b106edacdcfe084cd38850f78aacfc" - "@types/body-parser@*": version "1.17.0" resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz#9f5c9d9bd04bb54be32d5eb9fc0d8c974e6cf58c" @@ -1323,10 +1309,6 @@ "@types/events" "*" "@types/node" "*" -"@types/classnames@^2.2.3": - version "2.2.3" - resolved "https://registry.npmjs.org/@types/classnames/-/classnames-2.2.3.tgz#3f0ff6873da793870e20a260cada55982f38a9e5" - "@types/clean-css@*": version "3.4.30" resolved "https://registry.npmjs.org/@types/clean-css/-/clean-css-3.4.30.tgz#0052c136f5248002428e3638b37de4a39818641d" @@ -1415,17 +1397,17 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@10.0.0", "@types/node@^10.0.0": +"@types/node@*", "@types/node@^10.0.0": version "10.0.0" resolved "https://registry.npmjs.org/@types/node/-/node-10.0.0.tgz#c40f8e07dce607d3ef25a626b93a6a7cdcf97881" -"@types/prettier@^1.12.0": - version "1.12.0" - resolved "https://registry.npmjs.org/@types/prettier/-/prettier-1.12.0.tgz#61ed6bdc64386f49c9e1f179cf84ef26ddc4740c" +"@types/node@10.0.4": + version "10.0.4" + resolved "https://registry.npmjs.org/@types/node/-/node-10.0.4.tgz#130598ee56e9a1210a53f557d64935571f05390d" -"@types/prismjs@^1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.9.0.tgz#38af9491e2f105079a443703ee675fb27371ec94" +"@types/prettier@^1.12.1": + version "1.12.1" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-1.12.1.tgz#d8aa9c353adc3e8c1c6e51e7acb642315fd79d2d" "@types/react-dom@^16.0.5": version "16.0.5" @@ -1547,6 +1529,10 @@ address@1.0.3, address@^1.0.1: version "1.0.3" resolved "https://registry.npmjs.org/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" +after@0.8.2: + version "0.8.2" + resolved "https://registry.npmjs.org/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + ajv-keywords@^2.1.0: version "2.1.1" resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" @@ -1624,10 +1610,6 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -any-promise@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - anymatch@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -1723,6 +1705,10 @@ array-unique@^0.3.2: version "0.3.2" resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" +arraybuffer.slice@~0.0.7: + version "0.0.7" + resolved "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -1779,6 +1765,10 @@ async-each@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" +async-limiter@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + async@^1.4.0, async@^1.5.0, async@^1.5.2: version "1.5.2" resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -1805,7 +1795,7 @@ aws4@^1.2.1: version "1.7.0" resolved "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" -babel-code-frame@6.26.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: +babel-code-frame@6.26.0, babel-code-frame@^6.22.0: version "6.26.0" resolved "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" dependencies: @@ -1813,73 +1803,6 @@ babel-code-frame@6.26.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@^6.24.1, babel-core@^6.25.0, babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-errors@^1.0.1: - version "1.1.1" - resolved "https://registry.npmjs.org/babel-errors/-/babel-errors-1.1.1.tgz#43f7142dd3b365633c758d155bffa3ba41523794" - -babel-file-loader@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/babel-file-loader/-/babel-file-loader-1.0.3.tgz#b9df875e136d6cddc9dfcb36334cd1ad58fffe7f" - dependencies: - babel-errors "^1.0.1" - babel-file "^1.0.2" - babel-plugin-tester "^3.0.0" - babel-types "^6.24.1" - read-file-async "^1.0.0" - resolve "^1.3.3" - resolve-async "^1.0.1" - -babel-file@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/babel-file/-/babel-file-1.0.2.tgz#6435c01fc79c33365751957156a0561965a29d56" - dependencies: - babel-core "^6.24.1" - babel-errors "^1.0.1" - -babel-generator@^6.26.0, babel-generator@^6.26.1: - version "6.26.1" - resolved "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-loader@^8.0.0-beta.1: version "8.0.0-beta.2" resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.0-beta.2.tgz#4d5b67c964dc8c9cba866fd13d6b90df3acf8723" @@ -1888,12 +1811,6 @@ babel-loader@^8.0.0-beta.1: loader-utils "^1.0.2" mkdirp "^0.5.1" -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - dependencies: - babel-runtime "^6.22.0" - babel-plugin-emotion@^9.0.1, babel-plugin-emotion@^9.1.0, babel-plugin-emotion@^9.1.2: version "9.1.2" resolved "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-9.1.2.tgz#e26b313fa0fecd0f2cc07b1e4ef05da167e4f740" @@ -1926,17 +1843,6 @@ babel-plugin-syntax-jsx@^6.18.0: version "6.18.0" resolved "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" -babel-plugin-tester@^3.0.0: - version "3.3.0" - resolved "https://registry.npmjs.org/babel-plugin-tester/-/babel-plugin-tester-3.3.0.tgz#9844f77a661b48b5c7e08bd54acca590dbcee5b4" - dependencies: - babel-core "^6.25.0" - common-tags "^1.4.0" - invariant "^2.2.2" - lodash.merge "^4.6.0" - path-exists "^3.0.0" - strip-indent "^2.0.0" - babel-plugin-transform-dynamic-import@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/babel-plugin-transform-dynamic-import/-/babel-plugin-transform-dynamic-import-2.0.0.tgz#b647ad73e5050964bdf74297587120f0e9e57703" @@ -1975,58 +1881,6 @@ babel-preset-react-app@^4.0.0-next.b2fd8db8: babel-plugin-transform-dynamic-import "2.0.0" babel-plugin-transform-react-remove-prop-types "0.4.12" -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - babylon@7.0.0-beta.42: version "7.0.0-beta.42" resolved "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.42.tgz#67cfabcd4f3ec82999d29031ccdea89d0ba99657" @@ -2035,9 +1889,9 @@ babylon@7.0.0-beta.46: version "7.0.0-beta.46" resolved "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.46.tgz#b6ddaba81bbb130313932757ff9c195d527088b6" -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" bail@^1.0.0: version "1.0.3" @@ -2047,10 +1901,18 @@ balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" +base64-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + base64-js@^1.0.2: version "1.3.0" resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" +base64id@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + base@^0.11.1: version "0.11.2" resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -2073,6 +1935,12 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +better-assert@~1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + dependencies: + callsite "1.0.0" + big.js@^3.1.3: version "3.2.0" resolved "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" @@ -2081,6 +1949,10 @@ binary-extensions@^1.0.0: version "1.11.0" resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" +blob@0.0.4: + version "0.0.4" + resolved "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" + block-stream@*: version "0.0.9" resolved "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -2324,6 +2196,10 @@ caller-path@^0.1.0: dependencies: callsites "^0.2.0" +callsite@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + callsites@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" @@ -2481,10 +2357,6 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@^2.2.5: - version "2.2.5" - resolved "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d" - clean-css@4.1.x: version "4.1.11" resolved "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz#2ecdf145aba38f54740f26cefd0ff3e03e125d6a" @@ -2505,14 +2377,6 @@ cli-width@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" -clipboard@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/clipboard/-/clipboard-2.0.0.tgz#4661dc972fb72a4c4770b8db78aa9b1caef52b50" - dependencies: - good-listener "^1.2.2" - select "^1.1.2" - tiny-emitter "^2.0.0" - cliui@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" @@ -2602,12 +2466,6 @@ commander@~2.13.0: version "2.13.0" resolved "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" -common-tags@^1.4.0: - version "1.7.2" - resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.7.2.tgz#24d9768c63d253a56ecff93845b44b4df1d52771" - dependencies: - babel-runtime "^6.26.0" - commondir@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -2619,10 +2477,18 @@ compare-func@^1.3.1: array-ify "^1.0.0" dot-prop "^3.0.0" -component-emitter@^1.2.1: +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + +component-emitter@1.2.1, component-emitter@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + compressible@~2.0.13: version "2.0.13" resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz#0d1020ab924b2fdb4d6279875c7d6daba6baa7a9" @@ -2853,7 +2719,7 @@ conventional-recommended-bump@^1.2.1: meow "^3.3.0" object-assign "^4.0.1" -convert-source-map@^1.1.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1: +convert-source-map@^1.1.0, convert-source-map@^1.5.0: version "1.5.1" resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" @@ -2884,7 +2750,7 @@ core-js@^1.0.0: version "1.2.7" resolved "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" -core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.3: +core-js@^2.4.0, core-js@^2.5.3: version "2.5.5" resolved "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz#b14dde936c640c0579a6b50cabcc132dd6127e3b" @@ -3083,13 +2949,13 @@ dateformat@^3.0.0: version "3.0.3" resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" -debug@^3.1.0: +debug@^3.1.0, debug@~3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: @@ -3193,10 +3059,6 @@ delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" -delegate@^3.1.2: - version "3.2.0" - resolved "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" - delegates@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" @@ -3226,12 +3088,6 @@ detab@^2.0.0: dependencies: repeat-string "^1.5.4" -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - dependencies: - repeating "^2.0.0" - detect-indent@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" @@ -3427,6 +3283,43 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" +engine.io-client@~3.2.0: + version "3.2.1" + resolved "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "~3.1.0" + engine.io-parser "~2.1.1" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.5" + parseuri "0.0.5" + ws "~3.3.1" + xmlhttprequest-ssl "~1.5.4" + yeast "0.1.2" + +engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196" + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.5" + blob "0.0.4" + has-binary2 "~1.0.2" + +engine.io@~3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/engine.io/-/engine.io-3.2.0.tgz#54332506f42f2edc71690d2f2a42349359f3bf7d" + dependencies: + accepts "~1.3.4" + base64id "1.0.0" + cookie "0.3.1" + debug "~3.1.0" + engine.io-parser "~2.1.0" + ws "~3.3.1" + enhanced-resolve@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz#e34a6eaa790f62fccd71d93959f56b2b432db10a" @@ -4245,10 +4138,6 @@ globals@^11.0.1, globals@^11.1.0: version "11.4.0" resolved "https://registry.npmjs.org/globals/-/globals-11.4.0.tgz#b85c793349561c16076a3c13549238a27945f1bc" -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - globby@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" @@ -4281,12 +4170,6 @@ globby@^7.1.1: pify "^3.0.0" slash "^1.0.0" -good-listener@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" - dependencies: - delegate "^3.1.2" - got@^5.0.0: version "5.7.1" resolved "https://registry.npmjs.org/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" @@ -4371,6 +4254,16 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" +has-binary2@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.2.tgz#e83dba49f0b9be4d026d27365350d9f03f54be98" + dependencies: + isarray "2.0.1" + +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -4475,13 +4368,6 @@ hoist-non-react-statics@^2.3.0, hoist-non-react-statics@^2.5.0: version "2.5.0" resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz#d2ca2dfc19c5a91c5a6615ce8e564ef0347e2a40" -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - homedir-polyfill@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" @@ -4694,7 +4580,7 @@ interpret@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" -invariant@^2.2.0, invariant@^2.2.1, invariant@^2.2.2: +invariant@^2.2.0, invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" dependencies: @@ -5033,6 +4919,10 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" +isarray@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + isexe@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -5073,10 +4963,6 @@ jsbn@~0.1.0: version "0.1.1" resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - jsesc@^2.5.1: version "2.5.1" resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" @@ -5119,7 +5005,7 @@ json3@^3.3.2: version "3.3.2" resolved "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" -json5@^0.5.0, json5@^0.5.1: +json5@^0.5.0: version "0.5.1" resolved "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" @@ -5369,10 +5255,6 @@ lodash.isobject@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" -lodash.merge@^4.6.0: - version "4.6.1" - resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" - lodash.sumby@^4.6.0: version "4.6.0" resolved "https://registry.npmjs.org/lodash.sumby/-/lodash.sumby-4.6.0.tgz#7d87737ddb216da2f7e5e7cd2dd9c403a7887346" @@ -6051,6 +5933,10 @@ object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" +object-component@0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + object-copy@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" @@ -6176,7 +6062,7 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -6308,6 +6194,18 @@ parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" +parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + dependencies: + better-assert "~1.0.0" + parseurl@~1.3.2: version "1.3.2" resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" @@ -6334,7 +6232,7 @@ path-exists@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -6487,13 +6385,7 @@ pretty-time@^1.0.0: is-number "^5.0.0" nanoseconds "^1.0.0" -prismjs@^1.14.0: - version "1.14.0" - resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.14.0.tgz#bbccfdb8be5d850d26453933cb50122ca0362ae0" - optionalDependencies: - clipboard "^2.0.0" - -private@^0.1.6, private@^0.1.8: +private@^0.1.6: version "0.1.8" resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -6784,13 +6676,6 @@ read-cmd-shim@^1.0.1: dependencies: graceful-fs "^4.1.2" -read-file-async@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/read-file-async/-/read-file-async-1.0.0.tgz#118fd0b8d0f76dc95cbb658e72ea6f107210deae" - dependencies: - graceful-fs "^4.1.11" - typeable-promisify "^1.0.1" - read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -7091,13 +6976,6 @@ requires-port@1.0.x, requires-port@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" -resolve-async@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/resolve-async/-/resolve-async-1.0.1.tgz#6bf9f26451e9a64a58a13edb82e615ddfcbda86b" - dependencies: - resolve "^1.3.3" - typeable-promisify "^1.0.1" - resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" @@ -7133,7 +7011,7 @@ resolve@^1.1.6, resolve@^1.3.2, resolve@^1.5.0: dependencies: path-parse "^1.0.5" -resolve@^1.3.3, resolve@^1.7.1: +resolve@^1.7.1: version "1.7.1" resolved "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" dependencies: @@ -7323,10 +7201,6 @@ select-hose@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" -select@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" - selfsigned@^1.9.1: version "1.10.2" resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.2.tgz#b4449580d99929b65b10a48389301a6592088758" @@ -7513,6 +7387,48 @@ sntp@1.x.x: dependencies: hoek "2.x.x" +socket.io-adapter@~1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" + +socket.io-client@2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.0.tgz#0d0b21d460dc4ed36e57085136f2be0137ff20ff" + dependencies: + backo2 "1.0.2" + base64-arraybuffer "0.1.5" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "~3.1.0" + engine.io-client "~3.2.0" + has-binary2 "~1.0.2" + has-cors "1.1.0" + indexof "0.0.1" + object-component "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + socket.io-parser "~3.2.0" + to-array "0.1.4" + +socket.io-parser@~3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" + dependencies: + component-emitter "1.2.1" + debug "~3.1.0" + isarray "2.0.1" + +socket.io@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/socket.io/-/socket.io-2.1.0.tgz#de77161795b6303e7aefc982ea04acb0cec17395" + dependencies: + debug "~3.1.0" + engine.io "~3.2.0" + has-binary2 "~1.0.2" + socket.io-adapter "~1.1.0" + socket.io-client "2.1.0" + socket.io-parser "~3.2.0" + sockjs-client@1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" @@ -7551,12 +7467,6 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - dependencies: - source-map "^0.5.6" - source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -7976,24 +7886,20 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" -tiny-emitter@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz#82d27468aca5ade8e5fd1e6d22b57dd43ebdfb7c" - tmp@^0.0.33: version "0.0.33" resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" dependencies: os-tmpdir "~1.0.2" +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -8098,6 +8004,23 @@ tslint-config-prettier@^1.12.0: version "1.12.0" resolved "https://registry.npmjs.org/tslint-config-prettier/-/tslint-config-prettier-1.12.0.tgz#bc8504f286ecf42b906f3d1126a093114f5729cc" +tslint@^5.10.0: + version "5.10.0" + resolved "https://registry.npmjs.org/tslint/-/tslint-5.10.0.tgz#11e26bccb88afa02dd0d9956cae3d4540b5f54c3" + dependencies: + babel-code-frame "^6.22.0" + builtin-modules "^1.1.1" + chalk "^2.3.0" + commander "^2.12.1" + diff "^3.2.0" + glob "^7.1.1" + js-yaml "^3.7.0" + minimatch "^3.0.4" + resolve "^1.3.2" + semver "^5.3.0" + tslib "^1.8.0" + tsutils "^2.12.1" + tslint@^5.9.1: version "5.9.1" resolved "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz#1255f87a3ff57eb0b0e1f0e610a8b4748046c9ae" @@ -8148,12 +8071,6 @@ type-is@~1.6.15, type-is@~1.6.16: media-typer "0.3.0" mime-types "~2.1.18" -typeable-promisify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/typeable-promisify/-/typeable-promisify-1.0.1.tgz#005d43502e7753affccc8af8c05e3ac24f30e617" - dependencies: - any-promise "^1.3.0" - typedarray@^0.0.6: version "0.0.6" resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -8218,6 +8135,10 @@ ulid@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/ulid/-/ulid-2.3.0.tgz#93063522771a9774121a84d126ecd3eb9804071f" +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + unherit@^1.0.4: version "1.1.0" resolved "https://registry.npmjs.org/unherit/-/unherit-1.1.0.tgz#6b9aaedfbf73df1756ad9e316dd981885840cd7d" @@ -8256,6 +8177,17 @@ unified@^6.1.5, unified@^6.1.6: x-is-function "^1.0.4" x-is-string "^0.1.0" +unified@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba" + 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-string "^0.1.0" + union-value@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" @@ -8616,9 +8548,9 @@ webpack-sources@^1.0.1, webpack-sources@^1.1.0: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.5.0: - version "4.6.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-4.6.0.tgz#363eafa733710eb0ed28c512b2b9b9f5fb01e69b" +webpack@^4.7.0: + version "4.7.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-4.7.0.tgz#a04f68dab86d5545fd0277d07ffc44e4078154c9" dependencies: acorn "^5.0.0" acorn-dynamic-import "^3.0.0" @@ -8772,6 +8704,14 @@ write@^0.2.1: dependencies: mkdirp "^0.5.1" +ws@~3.3.1: + version "3.3.3" + resolved "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + x-is-function@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/x-is-function/-/x-is-function-1.0.4.tgz#5d294dc3d268cbdd062580e0c5df77a391d1fa1e" @@ -8796,6 +8736,10 @@ xdg-trashdir@^2.1.1: user-home "^2.0.0" xdg-basedir "^2.0.0" +xmlhttprequest-ssl@~1.5.4: + version "1.5.5" + resolved "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" + xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -8889,3 +8833,7 @@ yargs@~3.10.0: cliui "^2.1.0" decamelize "^1.0.0" window-size "0.1.0" + +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"