feat: refac to use mdx

This commit is contained in:
Pedro Nauck
2018-05-05 02:31:01 -03:00
parent ac6ca67534
commit 04b59e5fd0
20 changed files with 398 additions and 701 deletions

View File

@@ -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. Thats why Ive 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, lets 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, thats not their only functionality. Templates consist of the three things mentioned above: tokens, elements, and patterns.

View File

@@ -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"
}
}

View File

@@ -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(

View File

@@ -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<any>): 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<any>): boolean =>
p.node.specifiers &&
p.node.specifiers.some(
(node: NodePath<any>) =>
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<NodePath<t.Node>, 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<any, string>({
when: p => p.isCallExpression() && get(p, 'node.callee.name') === 'doc',
assign: p => get(p, 'node.arguments[0].value'),
})
const parseSections = traverseAndAssignEach<NodePath<t.Node>, 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)
}
}

View File

@@ -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',

View File

@@ -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<void> => {
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)
}

View File

@@ -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')

View File

@@ -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'

View File

@@ -1,64 +0,0 @@
import { loadFileSync } from 'babel-file-loader'
export type AssignFn<P, V> = (path: P) => V
export type WhenFn<P> = (path: P) => boolean
export type TraverseReturn<V> = (filepath: string) => V | null
export interface TraverseAndAssign<P, V> {
assign: AssignFn<P, V>
when: WhenFn<P>
}
export function traverseAndAssign<P = any, V = any>({
assign,
when,
}: TraverseAndAssign<P, V>): TraverseReturn<V> {
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<P, V> {
assign: AssignFn<P, V>
when: string
}
export function traverseAndAssignEach<P = any, V = any>({
assign,
when,
}: TraverseAndAssignEach<P, V>): TraverseReturn<V> {
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
}
}
}

View File

@@ -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 = () => (
<Wrapper>
<Theme entries={data.entries} />
<Docs>
{(docs) => <Theme docs={docs} />}
</Docs>
</Wrapper>
)

View File

@@ -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)
}
}

View File

@@ -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"
}

View File

@@ -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<DocSectionProps> = ({ section }) => (
<Section key={section.id}>
{section.title && <h3>{section.title}</h3>}
<Toggle initial={false}>
{({ toggle, on }: ToggleProps) => (
<RenderWrapper>
{on ? (
<Highlight language="jsx">{section.code}</Highlight>
) : (
<Render render={section.render} />
)}
<CodeButton onClick={toggle}>
<Icon.Code width={15} />
</CodeButton>
</RenderWrapper>
)}
</Toggle>
</Section>
)
export const Doc: SFC<DocObj> = ({
id,
name,
filepath,
description,
sections,
component: Component,
}) => (
<Container key={id}>
<Title>{name}</Title>
@@ -117,11 +52,6 @@ export const Doc: SFC<DocObj> = ({
<IconLink size={15} />
<code>{filepath}</code>
</Filepath>
{description && <Description>{description}</Description>}
{sections &&
sections.length > 0 &&
sections.map(section => (
<DocSection key={section.id} section={section} />
))}
<Component />
</Container>
)

View File

@@ -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<HighlightProps> {
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 (
<pre
className={className}
ref={node => {
this.el = node
}}
>
<code>{this.props.children}</code>
</pre>
)
}
public componentDidMount(): void {
this.highlightCode()
}
public componentDidUpdate(): void {
this.highlightCode()
}
private highlightCode(): void {
prism.highlightElement(this.el as Element)
}
}

View File

@@ -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": {

View File

@@ -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<string, ComponentType>
}>
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)

View File

@@ -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<DocsProps> = ({ children }) => (
<entriesContext.Consumer>
{entries => {
const docs = Array.from(cache.values())
<docsContext.Consumer>
{docs => {
if (!isFn(children)) {
throw new Error(
'You need to pass a children as a function to your <Docs/> component'
)
}
return (
isFn(children) &&
children({
docs: mergeDocsWithEntries(docs, entries),
categories: categoriesFromDocs(docs),
})
)
console.log(docs)
return children({ docs, categories: [] })
}}
</entriesContext.Consumer>
</docsContext.Consumer>
)

View File

@@ -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<ThemeProps>
export const theme: Theme = WrappedComponent => ({ entries }) => (
<entriesContext.Provider value={entries}>
export const theme: Theme = WrappedComponent => ({ docs }) => (
<docsContext.Provider value={docs}>
<WrappedComponent />
</entriesContext.Provider>
</docsContext.Provider>
)

View File

@@ -1 +1,2 @@
declare module '@sindresorhus/slugify'
declare module 'pascalcase'

526
yarn.lock
View File

@@ -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"