From 05552f7a84145f5f8dc79f5548f027a0e498be49 Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Fri, 13 Jul 2018 02:00:23 -0300 Subject: [PATCH 01/14] Use different kill method for watcher --- package-lock.json | 9 +++++ package.json | 1 + scripts/watcher/LongRunningExecutor.ts | 50 +++++++++++++++++++------- scripts/watcher/pstree.remy.d.ts | 6 ++++ scripts/watcher/types.ts | 2 +- scripts/watcher/watch.ts | 4 +-- 6 files changed, 56 insertions(+), 16 deletions(-) create mode 100644 scripts/watcher/pstree.remy.d.ts diff --git a/package-lock.json b/package-lock.json index 7c5f0d45b..d01d66717 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16521,6 +16521,15 @@ "integrity": "sha512-+AqO1Ae+N/4r7Rvchrdm432afjT9hqJRyBN3DQv9At0tPz4hIFSGKbq64fN9dVoCow4oggIIax5/iONx0r9hZw==", "dev": true }, + "pstree.remy": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.0.tgz", + "integrity": "sha512-q5I5vLRMVtdWa8n/3UEzZX7Lfghzrg9eG2IKk2ENLSofKRCXVqMvMUHxCKgXNaqH/8ebhBxrqftHWnyTFweJ5Q==", + "dev": true, + "requires": { + "ps-tree": "^1.1.0" + } + }, "public-encrypt": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", diff --git a/package.json b/package.json index 25f5b4d1e..f42f937d2 100644 --- a/package.json +++ b/package.json @@ -126,6 +126,7 @@ "postcss-prepend-imports": "^1.0.1", "postcss-preset-env": "^5.2.1", "prettier": "^1.13.4", + "pstree.remy": "^1.1.0", "query-string": "^6.1.0", "raw-loader": "^0.5.1", "react": "^16.4.0", diff --git a/scripts/watcher/LongRunningExecutor.ts b/scripts/watcher/LongRunningExecutor.ts index 7019c1fb3..c1c1b4ff8 100644 --- a/scripts/watcher/LongRunningExecutor.ts +++ b/scripts/watcher/LongRunningExecutor.ts @@ -1,6 +1,8 @@ import { ChildProcess } from "child_process"; import spawn from "cross-spawn"; import { Cancelable, debounce } from "lodash"; +import psTree from "pstree.remy"; + import { Executor } from "./types"; interface LongRunningExecutorOptions { @@ -31,9 +33,6 @@ export default class LongRunningExecutor implements Executor { this.isRunning = true; this.process = spawn(this.cmd, this.args as string[], { stdio: "inherit", - // Have all child processes in their own group. - // See `process.kill` below. - detached: true, shell: !this.args, }); @@ -51,18 +50,43 @@ export default class LongRunningExecutor implements Executor { }); } - private restart(): void { + private async restart(): Promise { this.shouldRestart = true; - // Using the `-` will kill all child procceses in the group. - // See: https://azimi.me/2014/12/31/kill-child_process-node-js.html - process.kill(-this.process!.pid, "SIGTERM"); + return this.internalKill(); } - private kill(): void { + private async kill(): Promise { this.shouldRestart = false; - // Using the `-` will kill all child procceses in the group. - // See: https://azimi.me/2014/12/31/kill-child_process-node-js.html - process.kill(-this.process!.pid, "SIGTERM"); + return this.internalKill(); + } + + private async internalKill(): Promise { + return new Promise((resolve, reject) => { + const signal = "SIGTERM"; + if (process.platform === "win32") { + // Force kill (/F) the whole child tree (/T) by PID + spawn.sync("taskkill", [ + "/pid", + this.process!.pid.toString(), + "/T", + "/F", + ]); + resolve(); + return; + } + + psTree(this.process!.pid, (err, kids) => { + if (err) { + reject(err); + } + spawn.sync("kill", [ + `-${signal}`, + this.process!.pid.toString(), + ...kids.map(p => p.PID.toString()), + ]); + resolve(); + }); + }); } // This is called before watching starts. @@ -71,10 +95,10 @@ export default class LongRunningExecutor implements Executor { } // This is called before exiting. - public onCleanup() { + public async onCleanup() { this.restartDebounced.cancel(); if (this.isRunning) { - this.kill(); + await this.kill(); } } diff --git a/scripts/watcher/pstree.remy.d.ts b/scripts/watcher/pstree.remy.d.ts new file mode 100644 index 000000000..4cca7eff8 --- /dev/null +++ b/scripts/watcher/pstree.remy.d.ts @@ -0,0 +1,6 @@ +declare module "pstree.remy" { + export default function psTree( + pid: number, + callback: (err: Error, kids: Array<{ PID: number }>) => void + ): void; +} diff --git a/scripts/watcher/types.ts b/scripts/watcher/types.ts index 15bd6090b..89ed07a8d 100644 --- a/scripts/watcher/types.ts +++ b/scripts/watcher/types.ts @@ -13,7 +13,7 @@ export interface Watcher { export interface Executor { onInit?(): void; - onCleanup?(): void; + onCleanup?(): void | Promise; execute(filePath: string): void; } diff --git a/scripts/watcher/watch.ts b/scripts/watcher/watch.ts index 8a3feac75..5c1825e30 100644 --- a/scripts/watcher/watch.ts +++ b/scripts/watcher/watch.ts @@ -32,10 +32,10 @@ function prependRootDir(prepend: string, cfg: WatchConfig): WatchConfig { function setupCleanup(config: Config) { ["SIGINT", "SIGTERM"].forEach(signal => - process.once(signal as any, () => { + process.once(signal as any, async () => { for (const key of Object.keys(config.watchers)) { if (config.watchers[key].executor.onCleanup) { - config.watchers[key].executor.onCleanup!(); + await config.watchers[key].executor.onCleanup!(); } } process.exit(0); From d8021f0f3308410172d7878d670ff1cd8556881a Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Fri, 13 Jul 2018 03:13:55 -0300 Subject: [PATCH 02/14] Support sane watcher + auto detect watchman --- package-lock.json | 9 +++ package.json | 2 + scripts/watcher/ChokidarWatcher.ts | 15 ++++- scripts/watcher/SaneWatcher.ts | 97 ++++++++++++++++++++++++++++++ scripts/watcher/types.ts | 5 +- scripts/watcher/watch.ts | 42 ++++++------- 6 files changed, 146 insertions(+), 24 deletions(-) create mode 100644 scripts/watcher/SaneWatcher.ts diff --git a/package-lock.json b/package-lock.json index d01d66717..d5e956514 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1814,6 +1814,15 @@ "from": "github:coralproject/patched#types/relay-runtime", "dev": true }, + "@types/sane": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/sane/-/sane-2.0.0.tgz", + "integrity": "sha512-6o/YMfcKcWIK5IAxeo/1DEoVnGKBkPSPj9odxczz2i1gFY78GvguqgtNo28nyKgJUiKEWuFj11acpgdRmRFz7A==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/serve-static": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", diff --git a/package.json b/package.json index f42f937d2..fe9a88e41 100644 --- a/package.json +++ b/package.json @@ -82,6 +82,7 @@ "@types/react-test-renderer": "^16.0.1", "@types/recompose": "^0.26.1", "@types/relay-runtime": "github:coralproject/patched#types/relay-runtime", + "@types/sane": "^2.0.0", "@types/sinon": "^5.0.1", "@types/uuid": "^3.4.3", "@types/ws": "^5.1.2", @@ -142,6 +143,7 @@ "relay-local-schema": "^0.7.0", "relay-runtime": "github:coralproject/patched#relay-runtime", "relay-test-utils": "github:coralproject/patched#relay-test-utils", + "sane": "^2.5.2", "sinon": "^6.1.2", "style-loader": "^0.21.0", "ts-jest": "^23.0.0", diff --git a/scripts/watcher/ChokidarWatcher.ts b/scripts/watcher/ChokidarWatcher.ts index cbc91d705..700eeba45 100644 --- a/scripts/watcher/ChokidarWatcher.ts +++ b/scripts/watcher/ChokidarWatcher.ts @@ -1,13 +1,24 @@ import chokidar from "chokidar"; +import path from "path"; import { Watcher, WatchOptions } from "./types"; +function prependRootDir( + prepend: string, + paths: ReadonlyArray +): string[] { + const prependFunc = (p: string) => path.resolve(prepend, p); + return paths.map(prependFunc); +} + export default class ChokidarWatcher implements Watcher { public watch( + rootDir: string, paths: ReadonlyArray, options: WatchOptions = {} ): AsyncIterable { - const client = chokidar.watch(paths as string[], { - ignored: options.ignore, + const resolvedPaths = prependRootDir(rootDir, paths); + const client = chokidar.watch(resolvedPaths, { + ignored: options.ignore && prependRootDir(rootDir, options.ignore), }); // An array to hold all changes, that has not yet been yield. diff --git a/scripts/watcher/SaneWatcher.ts b/scripts/watcher/SaneWatcher.ts new file mode 100644 index 000000000..299736841 --- /dev/null +++ b/scripts/watcher/SaneWatcher.ts @@ -0,0 +1,97 @@ +import { execSync } from "child_process"; +import sane from "sane"; + +import { Watcher, WatchOptions } from "./types"; + +interface SaneWatcherOptions { + /** + * Set to true to use watchman, false to disabled, and undefined + * for automatic detection. + */ + watchman?: boolean; + /** Use polling, this might be required for network file systems. */ + poll?: boolean; +} + +function canUseWatchman(): boolean { + try { + execSync("watchman --version", { stdio: ["ignore"] }); + return true; + // tslint:disable-next-line:no-empty + } catch (e) {} + return false; +} + +export default class SaneWatcher implements Watcher { + private watchman?: boolean; + private poll: boolean; + + constructor(options: SaneWatcherOptions = {}) { + this.watchman = options.watchman; + this.poll = options.poll || false; + + // Autodetect watchman. + if (this.watchman === undefined && canUseWatchman()) { + this.watchman = true; + // tslint:disable-next-line:no-console + console.log("Watchman detected"); + } + } + + public watch( + rootDir: string, + paths: ReadonlyArray, + options: WatchOptions = {} + ): AsyncIterable { + // Setup client + const client = sane(rootDir, { + glob: paths as string[], + ignored: options.ignore as string[], + watchman: this.watchman, + poll: this.poll, + }); + + // An array to hold all changes, that has not yet been yield. + const queue: string[] = []; + + // If this is set, a pending promise is waiting for the next result. + let pending: ({ resolve: (result: string) => void }) | null = null; + + // Listen for changes + client.on("change", (pathFile: string) => { + // Resolve pending request. + if (pending) { + pending.resolve(pathFile); + pending = null; + return; + } + + // There is no pending request, save it into the queue. + queue.unshift(pathFile); + }); + + return { + [Symbol.asyncIterator]() { + return { + next: () => + new Promise>((resolve, reject) => { + const wrapped = { + resolve: (pathFile: string) => + resolve({ + done: false, + value: pathFile, + }), + }; + + if (queue.length) { + wrapped.resolve(queue.pop()!); + return; + } + // We need to wait for the next change event. + pending = wrapped; + }), + }; + }, + }; + } +} diff --git a/scripts/watcher/types.ts b/scripts/watcher/types.ts index 89ed07a8d..d55019660 100644 --- a/scripts/watcher/types.ts +++ b/scripts/watcher/types.ts @@ -5,14 +5,17 @@ export interface WatchOptions { } export interface Watcher { + onInit?(): void | Promise; + onCleanup?(): void | Promise; watch( + rootDir: string, paths: ReadonlyArray, options?: WatchOptions ): AsyncIterable; } export interface Executor { - onInit?(): void; + onInit?(): void | Promise; onCleanup?(): void | Promise; execute(filePath: string): void; } diff --git a/scripts/watcher/watch.ts b/scripts/watcher/watch.ts index 5c1825e30..8adfbfcb8 100644 --- a/scripts/watcher/watch.ts +++ b/scripts/watcher/watch.ts @@ -1,7 +1,6 @@ import Joi from "joi"; -import path from "path"; -import ChokidarWatcher from "./ChokidarWatcher"; +import SaneWatcher from "./SaneWatcher"; import { Config, configSchema, Options, WatchConfig, Watcher } from "./types"; // Polyfill the asyncIterator symbol. @@ -9,30 +8,29 @@ if (Symbol.asyncIterator === undefined) { (Symbol as any).asyncIterator = Symbol.for("asyncIterator"); } -async function beginWatch(watcher: Watcher, key: string, config: WatchConfig) { +async function beginWatch( + watcher: Watcher, + key: string, + config: WatchConfig, + rootDir: string +) { const { paths, ignore, executor } = config; if (executor.onInit) { - executor.onInit(); + await executor.onInit(); } - for await (const filePath of watcher.watch(paths, { ignore })) { + for await (const filePath of watcher.watch(rootDir, paths, { ignore })) { // tslint:disable-next-line:no-console console.log(`Execute "${key}"`); executor.execute(filePath); } } -function prependRootDir(prepend: string, cfg: WatchConfig): WatchConfig { - const prependFunc = (p: string) => path.resolve(prepend, p); - return { - ...cfg, - paths: cfg.paths.map(prependFunc), - ignore: cfg.ignore ? cfg.ignore.map(prependFunc) : undefined, - }; -} - -function setupCleanup(config: Config) { +function setupCleanup(watcher: Watcher, config: Config) { ["SIGINT", "SIGTERM"].forEach(signal => process.once(signal as any, async () => { + if (watcher.onCleanup) { + await watcher.onCleanup(); + } for (const key of Object.keys(config.watchers)) { if (config.watchers[key].executor.onCleanup) { await config.watchers[key].executor.onCleanup!(); @@ -55,17 +53,19 @@ function filterOnly(config: Config, only: string[]) { export default async function watch(config: Config, options?: Options) { Joi.assert(config, configSchema); - const watcher = config.backend || new ChokidarWatcher(); + const watcher: Watcher = config.backend || new SaneWatcher(); + const rootDir = config.rootDir || process.cwd(); if (options && options.only && options.only.length > 0) { filterOnly(config, options.only); } - setupCleanup(config); + setupCleanup(watcher, config); + if (watcher.onInit) { + await watcher.onInit(); + } for (const key of Object.keys(config.watchers)) { // tslint:disable-next-line:no-console console.log(`Start watcher "${key}"`); - const watcherConfig = config.rootDir - ? prependRootDir(config.rootDir, config.watchers[key]) - : config.watchers[key]; - beginWatch(watcher, key, watcherConfig); + const watcherConfig = config.watchers[key]; + beginWatch(watcher, key, watcherConfig, rootDir); } } From 9684b6046b940e152c6ab199eb72de95e4265d43 Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Fri, 13 Jul 2018 11:26:19 -0300 Subject: [PATCH 03/14] Parallel cleanup, skip empty watches --- scripts/watcher/ChokidarWatcher.ts | 56 ++++++++++++++++-------------- scripts/watcher/SaneWatcher.ts | 41 ++++++++++++---------- scripts/watcher/watch.ts | 6 ++-- 3 files changed, 56 insertions(+), 47 deletions(-) diff --git a/scripts/watcher/ChokidarWatcher.ts b/scripts/watcher/ChokidarWatcher.ts index 700eeba45..65a6ad701 100644 --- a/scripts/watcher/ChokidarWatcher.ts +++ b/scripts/watcher/ChokidarWatcher.ts @@ -17,9 +17,6 @@ export default class ChokidarWatcher implements Watcher { options: WatchOptions = {} ): AsyncIterable { const resolvedPaths = prependRootDir(rootDir, paths); - const client = chokidar.watch(resolvedPaths, { - ignored: options.ignore && prependRootDir(rootDir, options.ignore), - }); // An array to hold all changes, that has not yet been yield. const queue: string[] = []; @@ -30,31 +27,38 @@ export default class ChokidarWatcher implements Watcher { | ({ resolve: (result: string) => void; reject: (error: Error) => void }) | null = null; - // Listen for errors - client.on("error", (error: Error) => { - // Resolve pending request. - if (pending) { - pending.reject(error); - pending = null; - return; - } - if (!firstError) { - firstError = error; - } - }); + // Only start client if we have something to watch. + if (paths.length) { + const client = chokidar.watch(resolvedPaths, { + ignored: options.ignore && prependRootDir(rootDir, options.ignore), + }); - // Listen for changes - client.on("change", (pathFile: string) => { - // Resolve pending request. - if (pending) { - pending.resolve(pathFile); - pending = null; - return; - } + // Listen for errors + client.on("error", (error: Error) => { + // Resolve pending request. + if (pending) { + pending.reject(error); + pending = null; + return; + } + if (!firstError) { + firstError = error; + } + }); - // There is no pending request, save it into the queue. - queue.unshift(pathFile); - }); + // Listen for changes + client.on("change", (pathFile: string) => { + // Resolve pending request. + if (pending) { + pending.resolve(pathFile); + pending = null; + return; + } + + // There is no pending request, save it into the queue. + queue.unshift(pathFile); + }); + } return { [Symbol.asyncIterator]() { return { diff --git a/scripts/watcher/SaneWatcher.ts b/scripts/watcher/SaneWatcher.ts index 299736841..5c729ae93 100644 --- a/scripts/watcher/SaneWatcher.ts +++ b/scripts/watcher/SaneWatcher.ts @@ -43,32 +43,35 @@ export default class SaneWatcher implements Watcher { paths: ReadonlyArray, options: WatchOptions = {} ): AsyncIterable { - // Setup client - const client = sane(rootDir, { - glob: paths as string[], - ignored: options.ignore as string[], - watchman: this.watchman, - poll: this.poll, - }); - // An array to hold all changes, that has not yet been yield. const queue: string[] = []; // If this is set, a pending promise is waiting for the next result. let pending: ({ resolve: (result: string) => void }) | null = null; - // Listen for changes - client.on("change", (pathFile: string) => { - // Resolve pending request. - if (pending) { - pending.resolve(pathFile); - pending = null; - return; - } + // Only start client if we have something to watch. + if (paths.length) { + // Setup client + const client = sane(rootDir, { + glob: paths as string[], + ignored: options.ignore as string[], + watchman: this.watchman, + poll: this.poll, + }); - // There is no pending request, save it into the queue. - queue.unshift(pathFile); - }); + // Listen for changes + client.on("change", (pathFile: string) => { + // Resolve pending request. + if (pending) { + pending.resolve(pathFile); + pending = null; + return; + } + + // There is no pending request, save it into the queue. + queue.unshift(pathFile); + }); + } return { [Symbol.asyncIterator]() { diff --git a/scripts/watcher/watch.ts b/scripts/watcher/watch.ts index 8adfbfcb8..6777b7fd3 100644 --- a/scripts/watcher/watch.ts +++ b/scripts/watcher/watch.ts @@ -28,14 +28,16 @@ async function beginWatch( function setupCleanup(watcher: Watcher, config: Config) { ["SIGINT", "SIGTERM"].forEach(signal => process.once(signal as any, async () => { + const cleanups = []; if (watcher.onCleanup) { - await watcher.onCleanup(); + cleanups.push(watcher.onCleanup()); } for (const key of Object.keys(config.watchers)) { if (config.watchers[key].executor.onCleanup) { - await config.watchers[key].executor.onCleanup!(); + cleanups.push(config.watchers[key].executor.onCleanup!()); } } + await Promise.all(cleanups); process.exit(0); }) ); From e76740c31f747a3cb32d91497c5c984b172145ee Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Fri, 13 Jul 2018 11:37:56 -0300 Subject: [PATCH 04/14] Make filter only a pure function --- scripts/watcher/watch.ts | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/scripts/watcher/watch.ts b/scripts/watcher/watch.ts index 6777b7fd3..d7a477b8e 100644 --- a/scripts/watcher/watch.ts +++ b/scripts/watcher/watch.ts @@ -1,4 +1,5 @@ import Joi from "joi"; +import { pickBy } from "lodash"; import SaneWatcher from "./SaneWatcher"; import { Config, configSchema, Options, WatchConfig, Watcher } from "./types"; @@ -43,31 +44,36 @@ function setupCleanup(watcher: Watcher, config: Config) { ); } -function filterOnly(config: Config, only: string[]) { - for (const key of Object.keys(config.watchers)) { +function filterOnly( + watchers: Config["watchers"], + only: string[] +): Config["watchers"] { + return pickBy(watchers, (value, key) => { if (only.indexOf(key) === -1) { // tslint:disable-next-line:no-console console.log(`Disabled watcher "${key}"`); - delete config.watchers[key]; + return false; } - } + return true; + }) as Config["watchers"]; } export default async function watch(config: Config, options?: Options) { Joi.assert(config, configSchema); const watcher: Watcher = config.backend || new SaneWatcher(); const rootDir = config.rootDir || process.cwd(); + let watchersConfigs = config.watchers; if (options && options.only && options.only.length > 0) { - filterOnly(config, options.only); + watchersConfigs = filterOnly(watchersConfigs, options.only); } setupCleanup(watcher, config); if (watcher.onInit) { await watcher.onInit(); } - for (const key of Object.keys(config.watchers)) { + for (const key of Object.keys(watchersConfigs)) { // tslint:disable-next-line:no-console console.log(`Start watcher "${key}"`); - const watcherConfig = config.watchers[key]; + const watcherConfig = watchersConfigs[key]; beginWatch(watcher, key, watcherConfig, rootDir); } } From 035d241a726403f80f81df9629a85123ac539f06 Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Fri, 13 Jul 2018 14:56:36 -0300 Subject: [PATCH 05/14] Support watcher sets --- config/watcher.ts | 21 +++++++++++++++ config/webpackDevServer.config.js | 3 ++- doczrc.js | 2 +- package.json | 2 +- scripts/watcher/bin/watcher.ts | 44 ++++++++++++++++++++----------- scripts/watcher/types.ts | 19 +++++++++---- scripts/watcher/watch.ts | 36 +++++++++++++++++++++---- 7 files changed, 98 insertions(+), 29 deletions(-) diff --git a/config/watcher.ts b/config/watcher.ts index 89da62bf6..35e916a35 100644 --- a/config/watcher.ts +++ b/config/watcher.ts @@ -40,6 +40,27 @@ const config: Config = { paths: [], executor: new LongRunningExecutor("npm run start:webpackDevServer"), }, + runDocz: { + paths: [], + executor: new LongRunningExecutor( + "npm run docz:watch -- --websocketHost 192.168.5.5" + ), + }, + runJest: { + paths: [], + executor: new LongRunningExecutor("npm run test"), + }, + }, + defaultSet: "client", + sets: { + server: ["runServer"], + client: [ + "runServer", + "runWebpackDevServer", + "compileCSSTypes", + "compileRelayStream", + ], + docz: ["runDocz", "compileCSSTypes"], }, }; diff --git a/config/webpackDevServer.config.js b/config/webpackDevServer.config.js index 668433652..b3e6f1578 100644 --- a/config/webpackDevServer.config.js +++ b/config/webpackDevServer.config.js @@ -9,6 +9,7 @@ const paths = require("./paths"); const protocol = process.env.HTTPS === "true" ? "https" : "http"; const host = process.env.HOST || "0.0.0.0"; const serverPort = process.env.PORT || 3000; +const doczPort = process.env.DOCZ_PORT || 3030; module.exports = function(proxy, allowedHost) { return { @@ -81,8 +82,8 @@ module.exports = function(proxy, allowedHost) { disableDotRule: true, }, public: allowedHost, - // Proxy to the graphql server. proxy: proxy || { + // Proxy to the graphql server. "/api": { target: `http://localhost:${serverPort}`, }, diff --git a/doczrc.js b/doczrc.js index 19542a6b6..9d7ef1b12 100644 --- a/doczrc.js +++ b/doczrc.js @@ -14,7 +14,7 @@ export default { source: "./src", typescript: true, host: process.env.HOST || "0.0.0.0", - port: parseInt(process.env.DOCZ_PORT, 10) || 3000, + port: parseInt(process.env.DOCZ_PORT, 10) || 3030, modifyBundlerConfig: config => { config.module.rules.push({ test: /\.css$/, diff --git a/package.json b/package.json index fe9a88e41..0bf4530e9 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "build": "npm-run-all compile --parallel build:*", "build:client": "node ./scripts/build.js", "build:server": "tsc -p ./src/tsconfig.json", - "watch": "NODE_ENV=development ts-node ./scripts/watcher/bin/watcher.ts ./config/watcher.ts", + "watch": "NODE_ENV=development ts-node ./scripts/watcher/bin/watcher.ts --config ./config/watcher.ts", "compile": "npm-run-all --parallel compile:*", "compile:css-types": "tcm src/core/client/", "compile:relay-stream": "relay-compiler --src ./src/core/client/stream --schema $(ts-node ./scripts/schemaPath.ts tenant) --language typescript --artifactDirectory ./src/core/client/stream/__generated__ --no-watchman", diff --git a/scripts/watcher/bin/watcher.ts b/scripts/watcher/bin/watcher.ts index a3a50e6c3..c8126a2ec 100644 --- a/scripts/watcher/bin/watcher.ts +++ b/scripts/watcher/bin/watcher.ts @@ -4,24 +4,36 @@ import program from "commander"; import path from "path"; import watch from "../"; -function list(val: string) { - return val.split(","); +async function run( + args: ReadonlyArray, + options: Record +) { + const only = args; + const { config: configFile = "" } = options; + if (!configFile) { + throw new Error("Config file not specified"); + } + + // tslint:disable-next-line:no-var-requires + let config: any = require(path.resolve(configFile)); + if (config.__esModule) { + config = config.default; + } + + try { + await watch(config, { only }); + } catch (err) { + // tslint:disable-next-line:no-console + console.error(err); + process.exit(1); + } } -program +const cmd = program .version("0.1.0") - .usage("") - .option("-o, --only ", "only run the specified watcher", list) - .arguments("") + .usage("[watchers or sets]") + .option("-c, --config ", "Use given config file") .description("Run watchers defined in ") - .action((configFile, cmd) => { - const { only = [] } = cmd; - - let config: any = require(path.resolve(configFile)); - if (config.__esModule) { - config = config.default; - } - - watch(config, { only }); - }) .parse(process.argv); + +run(cmd.args, cmd.opts()); diff --git a/scripts/watcher/types.ts b/scripts/watcher/types.ts index d55019660..fc099b9b2 100644 --- a/scripts/watcher/types.ts +++ b/scripts/watcher/types.ts @@ -21,15 +21,15 @@ export interface Executor { } export interface Options { - only?: string[]; + only?: ReadonlyArray; } export interface Config { rootDir?: string; backend?: Watcher; - watchers: { - [key: string]: WatchConfig; - }; + watchers: Record; + defaultSet?: string; + sets?: Record>; } export interface WatchConfig { @@ -54,4 +54,13 @@ export const configSchema = Joi.object({ executor: Joi.object(), }) ), -}); + defaultSet: Joi.string().optional(), + sets: Joi.object() + .pattern( + /.*/, + Joi.array() + .items(Joi.string()) + .unique() + ) + .optional(), +}).with("defaultSet", "sets"); diff --git a/scripts/watcher/watch.ts b/scripts/watcher/watch.ts index d7a477b8e..8302126f9 100644 --- a/scripts/watcher/watch.ts +++ b/scripts/watcher/watch.ts @@ -44,12 +44,33 @@ function setupCleanup(watcher: Watcher, config: Config) { ); } +function resolveSets( + sets: Record>, + value: ReadonlyArray +) { + const resolved: string[] = []; + value.forEach(v => { + if (v in sets) { + resolved.push(...sets[v]); + return; + } + resolved.push(v); + }); + return resolved; +} + function filterOnly( watchers: Config["watchers"], - only: string[] + only: ReadonlyArray, + sets?: Record> ): Config["watchers"] { + const resolved = sets ? resolveSets(sets, only) : only; + const unknown = resolved.filter(r => !(r in watchers)); + if (unknown.length) { + throw new Error(`Watcher Configuration or Set for ${unknown} not found`); + } return pickBy(watchers, (value, key) => { - if (only.indexOf(key) === -1) { + if (resolved.indexOf(key) === -1) { // tslint:disable-next-line:no-console console.log(`Disabled watcher "${key}"`); return false; @@ -58,18 +79,23 @@ function filterOnly( }) as Config["watchers"]; } -export default async function watch(config: Config, options?: Options) { +export default async function watch(config: Config, options: Options = {}) { Joi.assert(config, configSchema); const watcher: Watcher = config.backend || new SaneWatcher(); const rootDir = config.rootDir || process.cwd(); + const defaultSet = config.defaultSet && [config.defaultSet]; + const only = options.only && options.only.length ? options.only : defaultSet; + let watchersConfigs = config.watchers; - if (options && options.only && options.only.length > 0) { - watchersConfigs = filterOnly(watchersConfigs, options.only); + if (only) { + watchersConfigs = filterOnly(watchersConfigs, only, config.sets); } + setupCleanup(watcher, config); if (watcher.onInit) { await watcher.onInit(); } + for (const key of Object.keys(watchersConfigs)) { // tslint:disable-next-line:no-console console.log(`Start watcher "${key}"`); From 911a03ba3df7d7396afb22ea3e5b899dc161e351 Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Fri, 13 Jul 2018 15:03:43 -0300 Subject: [PATCH 06/14] Cleanup docz scripts --- config/watcher.ts | 4 +--- package.json | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/config/watcher.ts b/config/watcher.ts index 35e916a35..871b5ca73 100644 --- a/config/watcher.ts +++ b/config/watcher.ts @@ -42,9 +42,7 @@ const config: Config = { }, runDocz: { paths: [], - executor: new LongRunningExecutor( - "npm run docz:watch -- --websocketHost 192.168.5.5" - ), + executor: new LongRunningExecutor("npm run docz -- dev"), }, runJest: { paths: [], diff --git a/package.json b/package.json index 0bf4530e9..8f4702133 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "lint:server": "tslint --project ./src/tsconfig.json", "lint:client": "tslint --project ./src/core/client/tsconfig.json", "lint:scripts": "tslint --project ./tsconfig.json", - "docz:watch": "docz dev" + "docz": "docz" }, "author": "", "license": "Apache-2.0", From 07b910d7a3c830e6c4c4407baa6700c212538840 Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Fri, 13 Jul 2018 15:24:25 -0300 Subject: [PATCH 07/14] Upgrade docz --- package-lock.json | 3360 +++++++++++++++++++++++++++++++++------------ package.json | 55 +- 2 files changed, 2540 insertions(+), 875 deletions(-) diff --git a/package-lock.json b/package-lock.json index d5e956514..237609b19 100644 --- a/package-lock.json +++ b/package-lock.json @@ -597,18 +597,18 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.0.0-beta.51.tgz", - "integrity": "sha1-ovJwH/ZdAGJoy8hK0buO6rY4sMQ=", + "version": "7.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.0.0-beta.53.tgz", + "integrity": "sha1-V1oWPLFEsJS09yQOQ0utrYMexFU=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.51" + "@babel/helper-plugin-utils": "7.0.0-beta.53" }, "dependencies": { "@babel/helper-plugin-utils": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.51.tgz", - "integrity": "sha1-D2pfK20cZERBP4+rYJQNebY8IDE=", + "version": "7.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.53.tgz", + "integrity": "sha1-1kRYY2/8JYtCcUqd2Trrb4uM8+0=", "dev": true } } @@ -773,79 +773,79 @@ } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.0.0-beta.52", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.52.tgz", - "integrity": "sha1-AQTvGDzcL9Q9CGAhHMzOee8YAX4=", + "version": "7.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.53.tgz", + "integrity": "sha1-68P7ocWmyHQ7kJQD7NPn42gcr6U=", "dev": true, "requires": { - "@babel/helper-module-transforms": "7.0.0-beta.52", - "@babel/helper-plugin-utils": "7.0.0-beta.52", - "@babel/helper-simple-access": "7.0.0-beta.52" + "@babel/helper-module-transforms": "7.0.0-beta.53", + "@babel/helper-plugin-utils": "7.0.0-beta.53", + "@babel/helper-simple-access": "7.0.0-beta.53" }, "dependencies": { "@babel/code-frame": { - "version": "7.0.0-beta.52", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.52.tgz", - "integrity": "sha1-GSSDv6DR5GfBAVccIQKcy3SvKAE=", + "version": "7.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.53.tgz", + "integrity": "sha1-mA0VYLhjV1v1o3eSUDfgEy71kh4=", "dev": true, "requires": { - "@babel/highlight": "7.0.0-beta.52" + "@babel/highlight": "7.0.0-beta.53" } }, "@babel/helper-module-imports": { - "version": "7.0.0-beta.52", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.52.tgz", - "integrity": "sha1-cIQOg66JH5RwLGxhN4fEjuPJZbs=", + "version": "7.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.53.tgz", + "integrity": "sha1-5zXmqjClBLD52Fw4ptRwqfSqgdk=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.52", + "@babel/types": "7.0.0-beta.53", "lodash": "^4.17.5" } }, "@babel/helper-module-transforms": { - "version": "7.0.0-beta.52", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.52.tgz", - "integrity": "sha1-vIRE6tJSo3LJKJlq4XM96vOwjJA=", + "version": "7.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.53.tgz", + "integrity": "sha1-e6IUzcyPhiPy0Xl96v8f80mqzhM=", "dev": true, "requires": { - "@babel/helper-module-imports": "7.0.0-beta.52", - "@babel/helper-simple-access": "7.0.0-beta.52", - "@babel/helper-split-export-declaration": "7.0.0-beta.52", - "@babel/template": "7.0.0-beta.52", - "@babel/types": "7.0.0-beta.52", + "@babel/helper-module-imports": "7.0.0-beta.53", + "@babel/helper-simple-access": "7.0.0-beta.53", + "@babel/helper-split-export-declaration": "7.0.0-beta.53", + "@babel/template": "7.0.0-beta.53", + "@babel/types": "7.0.0-beta.53", "lodash": "^4.17.5" } }, "@babel/helper-plugin-utils": { - "version": "7.0.0-beta.52", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.52.tgz", - "integrity": "sha1-LwWMX3w6X+S8IZA2sueOEb3et60=", + "version": "7.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.53.tgz", + "integrity": "sha1-1kRYY2/8JYtCcUqd2Trrb4uM8+0=", "dev": true }, "@babel/helper-simple-access": { - "version": "7.0.0-beta.52", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.52.tgz", - "integrity": "sha1-0plc6cTJ8D/nKvkiNzZ3qOtkJO4=", + "version": "7.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.53.tgz", + "integrity": "sha1-cvbbmr5C+GgfpvAo79WdgVRHUrM=", "dev": true, "requires": { - "@babel/template": "7.0.0-beta.52", - "@babel/types": "7.0.0-beta.52", + "@babel/template": "7.0.0-beta.53", + "@babel/types": "7.0.0-beta.53", "lodash": "^4.17.5" } }, "@babel/helper-split-export-declaration": { - "version": "7.0.0-beta.52", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.52.tgz", - "integrity": "sha1-SqxPMOpjhK82duBLUkZydjLkYN8=", + "version": "7.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.53.tgz", + "integrity": "sha1-rvVLix+ZYW6jfJhHhxajeAJjMls=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.52" + "@babel/types": "7.0.0-beta.53" } }, "@babel/highlight": { - "version": "7.0.0-beta.52", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.52.tgz", - "integrity": "sha1-7ySTFDLwYVXnvDnNuKaze0oos9A=", + "version": "7.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.53.tgz", + "integrity": "sha1-9OlS2tF4fSBeGI0+OEzc5JyjaPs=", "dev": true, "requires": { "chalk": "^2.0.0", @@ -854,27 +854,27 @@ } }, "@babel/parser": { - "version": "7.0.0-beta.52", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.52.tgz", - "integrity": "sha1-TpNbYs2b+HK9N7zx9j2C/nsCN6I=", + "version": "7.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.53.tgz", + "integrity": "sha1-H0XrYXv5Rj1IKywE00nZ5O2/SJI=", "dev": true }, "@babel/template": { - "version": "7.0.0-beta.52", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.52.tgz", - "integrity": "sha1-ROGPrDglH1f5JRHWdI8JWrAvmW4=", + "version": "7.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.53.tgz", + "integrity": "sha1-MyIpCQDQsYewpxdDgeHzu3EFDS4=", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.52", - "@babel/parser": "7.0.0-beta.52", - "@babel/types": "7.0.0-beta.52", + "@babel/code-frame": "7.0.0-beta.53", + "@babel/parser": "7.0.0-beta.53", + "@babel/types": "7.0.0-beta.53", "lodash": "^4.17.5" } }, "@babel/types": { - "version": "7.0.0-beta.52", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.52.tgz", - "integrity": "sha1-o+ViCxU0slOlCrzyIitSDiOxbaI=", + "version": "7.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.53.tgz", + "integrity": "sha1-GaRhwNpRVZXftnQLS0Xce7Dms3U=", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1108,19 +1108,19 @@ } }, "@babel/plugin-transform-typescript": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.0.0-beta.51.tgz", - "integrity": "sha1-HZ5bp7+T/jdIPMMh28mn67pf81s=", + "version": "7.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.0.0-beta.53.tgz", + "integrity": "sha1-d10qU+Rv1KdWLzFP5nSmrS+Dc8A=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.51", - "@babel/plugin-syntax-typescript": "7.0.0-beta.51" + "@babel/helper-plugin-utils": "7.0.0-beta.53", + "@babel/plugin-syntax-typescript": "7.0.0-beta.53" }, "dependencies": { "@babel/helper-plugin-utils": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.51.tgz", - "integrity": "sha1-D2pfK20cZERBP4+rYJQNebY8IDE=", + "version": "7.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.53.tgz", + "integrity": "sha1-1kRYY2/8JYtCcUqd2Trrb4uM8+0=", "dev": true } } @@ -1238,31 +1238,39 @@ } }, "@babel/preset-typescript": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.0.0-beta.51.tgz", - "integrity": "sha1-lVELKxSTxrIQpJm3PoDNip4vitE=", + "version": "7.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.0.0-beta.53.tgz", + "integrity": "sha1-Ffrd7M4nuQYrpQ4aE8IB4s4qubA=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.0.0-beta.51", - "@babel/plugin-transform-typescript": "7.0.0-beta.51" + "@babel/helper-plugin-utils": "7.0.0-beta.53", + "@babel/plugin-transform-typescript": "7.0.0-beta.53" }, "dependencies": { "@babel/helper-plugin-utils": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.51.tgz", - "integrity": "sha1-D2pfK20cZERBP4+rYJQNebY8IDE=", + "version": "7.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.53.tgz", + "integrity": "sha1-1kRYY2/8JYtCcUqd2Trrb4uM8+0=", "dev": true } } }, "@babel/runtime": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.51.tgz", - "integrity": "sha1-SLjtGDBwNMZiD2Q1FGUMoszAFlo=", + "version": "7.0.0-beta.53", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.53.tgz", + "integrity": "sha1-nfIq40gjzon3kAYFlLg+5XLixdI=", "dev": true, "requires": { "core-js": "^2.5.7", - "regenerator-runtime": "^0.11.1" + "regenerator-runtime": "^0.12.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.0.tgz", + "integrity": "sha512-SpV2LhF5Dm9UYMEprB3WwsBnWwqTrmjrm2UZb42cl2G02WVGgx7Mg8aa9pdLEKp6hZ+/abcMc2NxKA8f02EG2w==", + "dev": true + } } }, "@babel/template": { @@ -1330,14 +1338,14 @@ "dev": true }, "@emotion/babel-utils": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@emotion/babel-utils/-/babel-utils-0.6.4.tgz", - "integrity": "sha1-Lqxp6zGulE++SioOc2o121+BCGY=", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-utils/-/babel-utils-0.6.5.tgz", + "integrity": "sha1-NNeETrUy0Rdcj8cBdb63TQcb++s=", "dev": true, "requires": { "@emotion/hash": "^0.6.3", - "@emotion/memoize": "^0.6.2", - "@emotion/serialize": "^0.8.2", + "@emotion/memoize": "^0.6.3", + "@emotion/serialize": "^0.8.3", "convert-source-map": "^1.5.1", "find-root": "^1.1.0", "source-map": "^0.7.2" @@ -1358,28 +1366,28 @@ "dev": true }, "@emotion/is-prop-valid": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.6.2.tgz", - "integrity": "sha1-p2oWsXT/A/jjon+vYlm6zSGgKtw=", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.6.3.tgz", + "integrity": "sha1-sElW4tZVAn/ojGI0Zp/XBk+wccw=", "dev": true, "requires": { - "@emotion/memoize": "^0.6.2" + "@emotion/memoize": "^0.6.3" } }, "@emotion/memoize": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.6.2.tgz", - "integrity": "sha1-E44AszLVGbTjB73tYVnlukiro64=", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.6.3.tgz", + "integrity": "sha1-ZDeaHWr2+NT+i9bv6dnoJOpLItg=", "dev": true }, "@emotion/serialize": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.8.2.tgz", - "integrity": "sha1-07LK3fyTEH1jx5/Gu8EeVV47di4=", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.8.3.tgz", + "integrity": "sha1-D61Vual/lSPmsf1vtvdLbLQcf4s=", "dev": true, "requires": { "@emotion/hash": "^0.6.3", - "@emotion/memoize": "^0.6.2", + "@emotion/memoize": "^0.6.3", "@emotion/unitless": "^0.6.3", "@emotion/utils": "^0.7.1" } @@ -1403,18 +1411,18 @@ "dev": true }, "@mdx-js/loader": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-0.11.1.tgz", - "integrity": "sha512-6RSmpiePjo+UMdx0wMMIq5P14WhlytdMSJ6vRO1ARc7dF8893RjVTvfXxFvZoYlFPyTEH4Ikxg8MZoiEFvPBmw==", + "version": "0.13.1-1", + "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-0.13.1-1.tgz", + "integrity": "sha512-jOz477iknGVwfOdw8TAHsPkErRXppICDpZZvKf8C/8YLGTDhpkebU5gawWM0YwQtI0k8MfexgcricIvd4iJu8w==", "dev": true, "requires": { - "@mdx-js/tag": "^0.11.0" + "@mdx-js/tag": "^0.13.1-1" } }, "@mdx-js/mdx": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-0.10.1.tgz", - "integrity": "sha512-2Mip8+44opmpPcJ5h7dtZ31pW9/ntslCEOsZk5xuP+SaafQzUjTRlDh6ifgp5+MDBgvjMzdAuHv3WgO2jj0Zyw==", + "version": "0.13.1-1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-0.13.1-1.tgz", + "integrity": "sha512-XofSLeW49U/OIIybhVfwmy+tTXekGzb+Bf90G5dM0AVn2eC65O1ozIwxgpTzdBDNCD4Hfu9SxSlt8208mv2w2w==", "dev": true, "requires": { "@mdx-js/mdxast": "^0.10.0", @@ -1451,11 +1459,12 @@ } }, "@mdx-js/tag": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@mdx-js/tag/-/tag-0.11.0.tgz", - "integrity": "sha512-o//BoBPtlyYC5HdohjpaQ9+4epL2a9o5JYYWhRzwF6pMJnjyDnmulz88178Yu5GuI8AVxwqwbCHZ0qvXSUSDEg==", + "version": "0.13.1-1", + "resolved": "https://registry.npmjs.org/@mdx-js/tag/-/tag-0.13.1-1.tgz", + "integrity": "sha512-ke76StkCSy10wj2fAX/HK6yOtZy62Eq52ECKhJYm+E6SdfKNPbX8CkNfJ/VjinjCfMOHx7n6UyA8Zpb6M7mhqw==", "dev": true, "requires": { + "create-react-context": "^0.2.2", "prop-types": "^15.6.1" } }, @@ -1497,6 +1506,12 @@ "debug": "^2.6.8" } }, + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "dev": true + }, "@sindresorhus/slugify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-0.3.0.tgz", @@ -1516,10 +1531,16 @@ "samsam": "1.3.0" } }, + "@sinonjs/samsam": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-2.0.0.tgz", + "integrity": "sha512-D7VxhADdZbDJ0HjUTMnSQ5xIGb4H2yWpg8k9Sf1T08zfFiQYlaxM8LZydpR4FQ2E6LZJX8IlabNZ5io4vdChwg==", + "dev": true + }, "@types/bluebird": { - "version": "3.5.20", - "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.20.tgz", - "integrity": "sha512-Wk41MVdF+cHBfVXj/ufUHJeO3BlIQr1McbHZANErMykaCWeDSZbH5erGjNBw2/3UlRdSxZbLfSuQTzFmPOYFsA==", + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.21.tgz", + "integrity": "sha512-6UNEwyw+6SGMC/WMI0ld0PS4st7Qq51qgguFrFizOSpGvZiqe9iswztFSdZvwJBEhLOy2JaxNE6VC7yMAlbfyQ==", "dev": true }, "@types/body-parser": { @@ -1533,9 +1554,9 @@ } }, "@types/bson": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/bson/-/bson-1.0.8.tgz", - "integrity": "sha512-PMa4nkRhLaqwsXQDDTzGbTyCIpej0ERznyAP9fyuGnlsmUbcC4Y25mdqjibYjkOPNyK/BWWUKneruaKHcS3Q8g==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@types/bson/-/bson-1.0.10.tgz", + "integrity": "sha512-gRf+Qy5Qiyjz28ZkPRP37bDHtGG67op/lV2qcIMhWUq4vIMJ6/j13ajeYH7LFhJ5RNflyLHmdANPGDXZ5a8EzQ==", "dev": true, "requires": { "@types/node": "*" @@ -1663,15 +1684,15 @@ } }, "@types/graphql": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-0.13.1.tgz", - "integrity": "sha512-a6vRcP4M6+7Lqev1JeF3hGFmC3FNBIJ5cRnaSN/z1LtGVr/CaY6nqSlQbnFr2j8ucDlUAQU43LCnJrz6uLUyHg==", + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-0.13.3.tgz", + "integrity": "sha512-YNGkX5HtcDtufyQquww05yoWYiDdZPPubLafXqukYqGmpawHjodAXwufhTemqDdgGk48WU7RX2Ouj0VTc9b3AA==", "dev": true }, "@types/ioredis": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-3.2.8.tgz", - "integrity": "sha512-L2Qoq7Di43X0V7eccmSHn3ECLyxzS5810YKiV9Z5bLTNNuD/3xlaipywbynrkxAi29UIh7NIGikXm6OJNlM9hg==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-3.2.12.tgz", + "integrity": "sha512-n1jXNSx4CFcDSmuV1Zchb6YpmcovMgCZtsboqGExlDRR6DWKorS9Dy44ekaM5Txq0CYlZhqJSj86gG0/nW/EBA==", "dev": true, "requires": { "@types/bluebird": "*", @@ -1679,9 +1700,9 @@ } }, "@types/jest": { - "version": "23.1.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-23.1.2.tgz", - "integrity": "sha512-qXPAaH+1KJBCRtQub2cd7GOnKfWkgRr++luya81ksUs+DA8QG2nMNZuved5K4Nb4enR61aS64CocEJNsjCKwog==", + "version": "23.1.5", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-23.1.5.tgz", + "integrity": "sha512-GlN74UAcT2i+G4BzVVI/aHip0HDXZaiY11VEjHzAz74+dB3hIeM5lJmnnZx4acxxinK9lT+uEH1Vsa5aWj6w4Q==", "dev": true }, "@types/joi": { @@ -1703,9 +1724,9 @@ } }, "@types/lodash": { - "version": "4.14.109", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.109.tgz", - "integrity": "sha512-hop8SdPUEzbcJm6aTsmuwjIYQo1tqLseKCM+s2bBqTU2gErwI4fE+aqUVOlscPSQbKHKgtMMPoC+h4AIGOJYvw==", + "version": "4.14.111", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.111.tgz", + "integrity": "sha512-t2FwnkdqdZNYPJHTEF+Zf//j5d2I7UbM2Ng+vqqmUCE2RuiVVINJi9RlVdpKvqPqVItsJa0X+ra/tvmwLzlcgg==", "dev": true }, "@types/luxon": { @@ -1721,9 +1742,9 @@ "dev": true }, "@types/mongodb": { - "version": "3.0.19", - "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.0.19.tgz", - "integrity": "sha512-KK30PZmGuCqSJQgb3tozzjy5hpQswMsAuqkO+T8vCUh9bSz1sZGx1nAOu79IzVNh2vBy1Xj46vk4A0PUHN5yBg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.1.1.tgz", + "integrity": "sha512-lHEH+OwYNeuC28jlmdPT/wBAVMuB6M1sHjZKAtaho/LeJf78ILJPYUq2OD7mWVj9QR7uYiKVt4ExGkXegHFCJQ==", "dev": true, "requires": { "@types/bson": "*", @@ -1732,9 +1753,9 @@ } }, "@types/node": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.3.1.tgz", - "integrity": "sha512-IsX9aDHDzJohkm3VCDB8tkzl5RQ34E/PFA29TQk6uDGb7Oc869ZBtmdKVDBzY3+h9GnXB8ssrRXEPVZrlIOPOw==", + "version": "10.5.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.2.tgz", + "integrity": "sha512-m9zXmifkZsMHZBOyxZWilMwmTlpC8x5Ty360JKTiXvlXZfBWYpsg9ZZvP/Ye+iZUh+Q+MxDLjItVTWIsfwz+8Q==", "dev": true }, "@types/passport": { @@ -2115,15 +2136,59 @@ "long": "^3.2.0" } }, + "@webpack-contrib/cli-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@webpack-contrib/cli-utils/-/cli-utils-1.0.2.tgz", + "integrity": "sha512-ZuV0pTi7x0Xd8MVZPIcDXbu7pg5+sNdrkdpmiW8mVto8+ru2+E0n8Opx36UxlDchBSiI6HouvaYcxmGOIS5yQA==", + "dev": true, + "requires": { + "@webpack-contrib/schema-utils": "^1.0.0-beta.0", + "camelize": "^1.0.0", + "chalk": "^2.4.1", + "decamelize": "^2.0.0", + "loader-utils": "^1.1.0", + "meant": "^1.0.1", + "strip-ansi": "^4.0.0", + "text-table": "^0.2.0", + "webpack-log": "^1.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "@webpack-contrib/config-loader": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@webpack-contrib/config-loader/-/config-loader-1.1.3.tgz", - "integrity": "sha512-lOliuisjrh24MfhOYE5ljqyFlKfzyWGFrn3bbR0KlXQHY90j3pXWfFtEl4gNvqz69tJsM+1s7PUGJrK9CF46ng==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@webpack-contrib/config-loader/-/config-loader-1.2.1.tgz", + "integrity": "sha512-C7XsS6bXft0aRlyt7YCLg+fm97Mb3tWd+i5fVVlEl0NW5HKy8LoXVKj3mB7ECcEHNEEdHhgzg8gxP+Or8cMj8Q==", "dev": true, "requires": { "@webpack-contrib/schema-utils": "^1.0.0-beta.0", "chalk": "^2.1.0", "cosmiconfig": "^5.0.2", + "is-plain-obj": "^1.1.0", "loud-rejection": "^1.6.0", "merge-options": "^1.0.1", "minimist": "^1.2.0", @@ -2346,19 +2411,19 @@ } }, "apollo-link": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.1.tgz", - "integrity": "sha512-6Ghf+j3cQLCIvjXd2dJrLw+16HZbWbwmB1qlTc41BviB2hv+rK1nJr17Y9dWK0UD4p3i9Hfddx3tthpMKrueHg==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.2.tgz", + "integrity": "sha512-Uk/BC09dm61DZRDSu52nGq0nFhq7mcBPTjy5EEH1eunJndtCaNXQhQz/BjkI2NdrfGI+B+i5he6YSoRBhYizdw==", "requires": { - "@types/node": "^9.4.6", + "@types/graphql": "0.12.6", "apollo-utilities": "^1.0.0", - "zen-observable-ts": "^0.8.6" + "zen-observable-ts": "^0.8.9" }, "dependencies": { - "@types/node": { - "version": "9.6.22", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.22.tgz", - "integrity": "sha512-RIg9EkxzVMkNH0M4sLRngK23f5QiigJC0iODQmu4nopzstt8AjegYund3r82iMrd2BNCjcZVnklaItvKHaGfBA==" + "@types/graphql": { + "version": "0.12.6", + "resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-0.12.6.tgz", + "integrity": "sha512-wXAVyLfkG1UMkKOdMijVWFky39+OD/41KftzqfX1Oejd0Gm6dOIKjCihSVECg6X7PHjftxXmfOKA/d1H79ZfvQ==" } } }, @@ -2650,17 +2715,25 @@ "dev": true }, "autoprefixer": { - "version": "8.6.4", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.6.4.tgz", - "integrity": "sha512-9D0OoxWCqq9Okp9wD+igaCf6ZaNjYNFSCKxgMLAxAGqXwpapaZ+D0PBv265VHQLgam8a7gld4E6KgJJM6SKfQQ==", + "version": "8.6.5", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.6.5.tgz", + "integrity": "sha512-PLWJN3Xo/rycNkx+mp8iBDMTm3FeWe4VmYaZDSqL5QQB9sLsQkG5k8n+LNDFnhh9kdq2K+egL/icpctOmDHwig==", "dev": true, "requires": { "browserslist": "^3.2.8", - "caniuse-lite": "^1.0.30000859", + "caniuse-lite": "^1.0.30000864", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", "postcss": "^6.0.23", "postcss-value-parser": "^3.2.3" + }, + "dependencies": { + "caniuse-lite": { + "version": "1.0.30000865", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000865.tgz", + "integrity": "sha512-vs79o1mOSKRGv/1pSkp4EXgl4ZviWeYReXw60XfacPU64uQWZwJT6vZNmxRF9O+6zu71sJwMxLK5JXxbzuVrLw==", + "dev": true + } } }, "aws-sign2": { @@ -2886,12 +2959,12 @@ } }, "babel-plugin-emotion": { - "version": "9.2.4", - "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-9.2.4.tgz", - "integrity": "sha1-pOVKgJf2ugbLvHqQY5J6+v6f5zo=", + "version": "9.2.5", + "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-9.2.5.tgz", + "integrity": "sha1-AEbgO+XBYnb4U4BHb4jJ/L98lTY=", "dev": true, "requires": { - "@babel/helper-module-imports": "7.0.0-beta.40", + "@babel/helper-module-imports": "7.0.0-beta.51", "@emotion/babel-utils": "^0.6.4", "@emotion/hash": "^0.6.2", "@emotion/memoize": "^0.6.1", @@ -2906,34 +2979,25 @@ }, "dependencies": { "@babel/helper-module-imports": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.40.tgz", - "integrity": "sha512-QFOskAKWbqJSBbGIl/Y1igJI4mW0A+wD5NFqsgDJj85KSvj/dHM4wNGIeqCi85nN9aMa4DgTBBrzUK4zSMsN2Q==", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.51.tgz", + "integrity": "sha1-zgBCgEX7t9XrwOp7+DV4nxU2arI=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.40", - "lodash": "^4.2.0" + "@babel/types": "7.0.0-beta.51", + "lodash": "^4.17.5" } }, "@babel/types": { - "version": "7.0.0-beta.40", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.40.tgz", - "integrity": "sha512-uXCGCzTgMZxcSUzutCPtZmXbVC+cvENgS2e0tRuhn+Y1hZnMb8IHP0Trq7Q2MB/eFmG5pKrAeTIUfQIe5kA4Tg==", + "version": "7.0.0-beta.51", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.51.tgz", + "integrity": "sha1-2AK3tUO1g2x3iqaReXq/APPZfqk=", "dev": true, "requires": { "esutils": "^2.0.2", - "lodash": "^4.2.0", + "lodash": "^4.17.5", "to-fast-properties": "^2.0.0" } - }, - "touch": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-1.0.0.tgz", - "integrity": "sha1-RJy+LbrlqMgDjjDXH6D/RklHxN4=", - "dev": true, - "requires": { - "nopt": "~1.0.10" - } } } }, @@ -4645,43 +4709,6 @@ "string-width": "^2.0.0", "term-size": "^1.2.0", "widest-line": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "brace-expansion": { @@ -4973,6 +5000,16 @@ "unset-value": "^1.0.0" } }, + "cache-content-type": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.0.tgz", + "integrity": "sha512-cVbmz0rAnsK3jPcQAlK4IDUUPaYAe4yl7MAfiKftHAcrW/azF1yikn2wE/8VAcC3yWtXi3lvXwsF1akK27Vo7w==", + "dev": true, + "requires": { + "mime-types": "^2.1.18", + "ylru": "^1.2.0" + } + }, "call-me-maybe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", @@ -5011,6 +5048,12 @@ "quick-lru": "^1.0.0" } }, + "camelize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", + "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=", + "dev": true + }, "caniuse-api": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", @@ -5363,6 +5406,17 @@ "execa": "^0.8.0" }, "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, "execa": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", @@ -5376,19 +5430,6 @@ "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } } } } @@ -5474,12 +5515,6 @@ "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", "dev": true }, - "clorox": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clorox/-/clorox-1.0.3.tgz", - "integrity": "sha512-w3gKAUKMJYmmaJyc+p+iDrDtLvsFasrx/y6/zWo2U1TZfsz3y4Vl4T9PHCZrOwk1eMTOSRI6xHdpDR4PhTdy8Q==", - "dev": true - }, "cluster-key-slot": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.0.12.tgz", @@ -5720,9 +5755,9 @@ "dev": true }, "convict": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/convict/-/convict-4.3.0.tgz", - "integrity": "sha512-R13duHXr424EDWO1dg/r43G5KF8IlN8O1gHJ140v/R6Mi8CWMSruLgRTUk0n4C5SoyQB22DQ7LKl5Lhni9hQ7w==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/convict/-/convict-4.3.1.tgz", + "integrity": "sha512-BLgyHUJREKCHVZ8rbXKIuNTDX/Is2GB/HZyUqh1IwvV0EeYBWtX+54OCG8tkIiAxB2yKowdP19+RHY5kCQ/SOg==", "requires": { "depd": "1.1.2", "json5": "1.0.1", @@ -5836,6 +5871,19 @@ "require-from-string": "^2.0.1" } }, + "cp-file": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.0.0.tgz", + "integrity": "sha512-OtHMgPugkgwHlbph25wlMKd358lZNhX1Y2viUpPoFmlBPlEiPIRhztYWha11grbGPnlM+urp5saVmwsChCIOEg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "nested-error-stacks": "^2.0.0", + "pify": "^3.0.0", + "safe-buffer": "^5.0.1" + } + }, "cpx": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/cpx/-/cpx-1.5.0.tgz", @@ -5996,6 +6044,49 @@ } } }, + "cpy": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cpy/-/cpy-7.0.1.tgz", + "integrity": "sha512-Zo52tXKLJcgy/baacn6KaNoRAakkl2wb+R4u6qJ4wlD0uchncwRQcIk66PlGlkzuToCJO6A6PWX27Tdwc8LU2g==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "cp-file": "^6.0.0", + "globby": "^8.0.1", + "nested-error-stacks": "^2.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globby": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz", + "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + } + } + }, "create-ecdh": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", @@ -6007,9 +6098,9 @@ } }, "create-emotion": { - "version": "9.2.4", - "resolved": "https://registry.npmjs.org/create-emotion/-/create-emotion-9.2.4.tgz", - "integrity": "sha1-CkN59r8HCMVP4mv81ra9NZLozyM=", + "version": "9.2.5", + "resolved": "https://registry.npmjs.org/create-emotion/-/create-emotion-9.2.5.tgz", + "integrity": "sha1-XbTwbZNgJeQ70xJFOj7pRuTV5ds=", "dev": true, "requires": { "@emotion/hash": "^0.6.2", @@ -6022,9 +6113,9 @@ } }, "create-emotion-styled": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/create-emotion-styled/-/create-emotion-styled-9.2.3.tgz", - "integrity": "sha1-F/sTs65MFl6m5aETVquLnKHa2cU=", + "version": "9.2.5", + "resolved": "https://registry.npmjs.org/create-emotion-styled/-/create-emotion-styled-9.2.5.tgz", + "integrity": "sha1-P1VTZXECM/DyaDHR7PC473YNSyo=", "dev": true, "requires": { "@emotion/is-prop-valid": "^0.6.1" @@ -6066,6 +6157,16 @@ "sha.js": "^2.4.8" } }, + "create-react-context": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.2.2.tgz", + "integrity": "sha512-KkpaLARMhsTsgp0d2NA/R94F/eDLbhXERdIq3LvX2biCAXcDvHYoOqHfWCHf1+OLj+HKBotLG3KqaOOf+C1C+A==", + "dev": true, + "requires": { + "fbjs": "^0.8.0", + "gud": "^1.0.0" + } + }, "cross-fetch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.0.0.tgz", @@ -6894,46 +6995,134 @@ } }, "docz": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/docz/-/docz-0.2.11.tgz", - "integrity": "sha1-JpQDcirdfoTG52+0o1G/QP6nZrU=", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/docz/-/docz-0.5.8.tgz", + "integrity": "sha1-lnwx+TjQ/Z8eMbp6TJVujF9HGpM=", "dev": true, "requires": { - "@mdx-js/tag": "^0.11.0", + "@mdx-js/tag": "^0.13.1-1", "@sindresorhus/slugify": "^0.3.0", + "create-react-context": "^0.2.2", "deepmerge": "^2.1.1", - "docz-core": "^0.2.11", - "docz-theme-default": "^0.2.11", + "docz-core": "^0.5.7", + "docz-theme-default": "^0.5.8", "invariant": "^2.2.4", "loadable-components": "^2.2.2", "pascalcase": "^0.1.1", - "react": "^16.4.1", - "react-dom": "^16.4.1", + "react": "^16.2.0", + "react-dom": "^16.2.0", "react-router-dom": "^4.3.1", - "yargs": "^11.0.0" + "react-router-hash-link": "^1.2.0", + "yargs": "^12.0.1" + }, + "dependencies": { + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "yargs": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.1.tgz", + "integrity": "sha512-B0vRAp1hRX4jgIOWFtjfNjd9OA9RWYZ6tqGA9/I/IrTMsxmKvtWy+ersM+jzpQqbC3YfLzeABPdeTgcJ9eu1qQ==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^2.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^10.1.0" + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } } }, "docz-core": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/docz-core/-/docz-core-0.2.11.tgz", - "integrity": "sha1-53tAf2iKg1T/DHs2iPFJLHOVyfc=", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/docz-core/-/docz-core-0.5.7.tgz", + "integrity": "sha1-mXx8AXsEx6w3nEjgVvSGB6cpNII=", "dev": true, "requires": { - "@babel/core": "7.0.0-beta.51", - "@babel/preset-typescript": "^7.0.0-beta.51", - "@babel/runtime": "^7.0.0-beta.51", - "@mdx-js/loader": "^0.11.0", - "@mdx-js/mdx": "^0.10.1", + "@babel/core": "7.0.0-beta.52", + "@babel/preset-typescript": "^7.0.0-beta.52", + "@babel/runtime": "^7.0.0-beta.52", + "@mdx-js/loader": "^0.13.1-1", + "@mdx-js/mdx": "^0.13.1-1", "@mdx-js/mdxast": "^0.10.0", "@sindresorhus/slugify": "^0.3.0", "art-template": "^4.12.2", - "babel-loader": "^8.0.0-beta.3", + "babel-loader": "^8.0.0-beta.4", "babel-plugin-react-docgen": "^2.0.0-rc.1", "babel-polyfill": "^7.0.0-beta.3", "babel-preset-react-app": "^4.0.0-next.b2fd8db8", + "babel-traverse": "^6.26.0", + "babylon": "^6.18.0", "chalk": "^2.4.1", "chokidar": "^2.0.4", "connect-history-api-fallback": "^1.5.0", + "cpy": "^7.0.1", "deepmerge": "^2.1.1", "detect-port": "^1.2.3", "express": "^4.16.3", @@ -6948,9 +7137,9 @@ "koa-connect": "^2.0.1", "koa-mount": "^3.0.0", "koa-static": "^5.0.0", - "load-cfg": "^0.2.8", + "load-cfg": "^0.5.6", "lodash.get": "^4.4.2", - "prettier": "^1.13.5", + "prettier": "^1.13.7", "react-dev-utils": "^5.0.1", "react-docgen-typescript-loader": "^2.1.1", "react-hot-loader": "4.3.3", @@ -6962,8 +7151,10 @@ "remark-slug": "^5.0.0", "resolve": "^1.8.1", "signale": "^1.2.1", + "strip-indent": "^2.0.0", + "titleize": "^1.0.1", "to-vfile": "^5.0.0", - "uglifyjs-webpack-plugin": "^1.2.6", + "uglifyjs-webpack-plugin": "^1.2.7", "ulid": "^2.3.0", "unified": "^7.0.0", "unist-util-find": "^1.0.1", @@ -6971,38 +7162,39 @@ "unist-util-remove": "^1.0.1", "unist-util-visit": "^1.3.1", "url-loader": "^1.0.1", - "webpack": "^4.12.0", + "webpack": "^4.15.1", "webpack-chain": "^4.8.0", - "webpack-hot-client": "^4.0.3", + "webpack-hot-client": "^4.1.1", "webpack-manifest-plugin": "^2.0.3", - "webpack-serve": "^1.0.4", + "webpack-serve": "^2.0.2", + "webpack-serve-waitpage": "^1.0.0", "webpackbar": "^2.6.1", - "ws": "^5.2.0", - "yargs": "^11.0.0" + "ws": "^5.2.1", + "yargs": "^12.0.1" }, "dependencies": { "@babel/code-frame": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz", - "integrity": "sha1-vXHZsZKvl435FYKdOdQJRFZDmgw=", + "version": "7.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.52.tgz", + "integrity": "sha1-GSSDv6DR5GfBAVccIQKcy3SvKAE=", "dev": true, "requires": { - "@babel/highlight": "7.0.0-beta.51" + "@babel/highlight": "7.0.0-beta.52" } }, "@babel/core": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0-beta.51.tgz", - "integrity": "sha1-DlS9a2OHNrKuWTwxpH8JaeKyuW0=", + "version": "7.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0-beta.52.tgz", + "integrity": "sha1-8nqaRo+M+chgqryl9ghPpS+8blU=", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.51", - "@babel/generator": "7.0.0-beta.51", - "@babel/helpers": "7.0.0-beta.51", - "@babel/parser": "7.0.0-beta.51", - "@babel/template": "7.0.0-beta.51", - "@babel/traverse": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51", + "@babel/code-frame": "7.0.0-beta.52", + "@babel/generator": "7.0.0-beta.52", + "@babel/helpers": "7.0.0-beta.52", + "@babel/parser": "7.0.0-beta.52", + "@babel/template": "7.0.0-beta.52", + "@babel/traverse": "7.0.0-beta.52", + "@babel/types": "7.0.0-beta.52", "convert-source-map": "^1.1.0", "debug": "^3.1.0", "json5": "^0.5.0", @@ -7014,12 +7206,12 @@ } }, "@babel/generator": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.51.tgz", - "integrity": "sha1-bHV1/952HQdIXgS67cA5LG2eMPY=", + "version": "7.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.52.tgz", + "integrity": "sha1-JpaPEvrYGM2XTISbKGtDfh6MzZE=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.51", + "@babel/types": "7.0.0-beta.52", "jsesc": "^2.5.1", "lodash": "^4.17.5", "source-map": "^0.5.0", @@ -7027,49 +7219,49 @@ } }, "@babel/helper-function-name": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.51.tgz", - "integrity": "sha1-IbSHSiJ8+Z7K/MMKkDAtpaJkBWE=", + "version": "7.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.52.tgz", + "integrity": "sha1-qGelj/VxsldysteZsyhmBYVzxFA=", "dev": true, "requires": { - "@babel/helper-get-function-arity": "7.0.0-beta.51", - "@babel/template": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51" + "@babel/helper-get-function-arity": "7.0.0-beta.52", + "@babel/template": "7.0.0-beta.52", + "@babel/types": "7.0.0-beta.52" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.51.tgz", - "integrity": "sha1-MoGy0EWvlcFyzpGyCCXYXqRnZBE=", + "version": "7.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.52.tgz", + "integrity": "sha1-HAzaWOC3X0XpLq+9j+GJpO7pK3Q=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.51" + "@babel/types": "7.0.0-beta.52" } }, "@babel/helper-split-export-declaration": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.51.tgz", - "integrity": "sha1-imw/ZsTSZTUvwHdIT59ugKUauXg=", + "version": "7.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.52.tgz", + "integrity": "sha1-SqxPMOpjhK82duBLUkZydjLkYN8=", "dev": true, "requires": { - "@babel/types": "7.0.0-beta.51" + "@babel/types": "7.0.0-beta.52" } }, "@babel/helpers": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0-beta.51.tgz", - "integrity": "sha1-lScr4qtGNNaCBCX4klAxqSiRg5c=", + "version": "7.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0-beta.52.tgz", + "integrity": "sha1-ib7r5OT9ayL111QHFgJ2KUCMSmM=", "dev": true, "requires": { - "@babel/template": "7.0.0-beta.51", - "@babel/traverse": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51" + "@babel/template": "7.0.0-beta.52", + "@babel/traverse": "7.0.0-beta.52", + "@babel/types": "7.0.0-beta.52" } }, "@babel/highlight": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.51.tgz", - "integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=", + "version": "7.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.52.tgz", + "integrity": "sha1-7ySTFDLwYVXnvDnNuKaze0oos9A=", "dev": true, "requires": { "chalk": "^2.0.0", @@ -7078,35 +7270,35 @@ } }, "@babel/parser": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.51.tgz", - "integrity": "sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY=", + "version": "7.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.52.tgz", + "integrity": "sha1-TpNbYs2b+HK9N7zx9j2C/nsCN6I=", "dev": true }, "@babel/template": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.51.tgz", - "integrity": "sha1-lgKkCuvPNXrpZ34lMu9fyBD1+/8=", + "version": "7.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.52.tgz", + "integrity": "sha1-ROGPrDglH1f5JRHWdI8JWrAvmW4=", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.51", - "@babel/parser": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51", + "@babel/code-frame": "7.0.0-beta.52", + "@babel/parser": "7.0.0-beta.52", + "@babel/types": "7.0.0-beta.52", "lodash": "^4.17.5" } }, "@babel/traverse": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.51.tgz", - "integrity": "sha1-mB2vLOw0emIx06odnhgDsDqqpKg=", + "version": "7.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.52.tgz", + "integrity": "sha1-m4uplPcmTZhHhYrS/uzCc4xeLvM=", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.51", - "@babel/generator": "7.0.0-beta.51", - "@babel/helper-function-name": "7.0.0-beta.51", - "@babel/helper-split-export-declaration": "7.0.0-beta.51", - "@babel/parser": "7.0.0-beta.51", - "@babel/types": "7.0.0-beta.51", + "@babel/code-frame": "7.0.0-beta.52", + "@babel/generator": "7.0.0-beta.52", + "@babel/helper-function-name": "7.0.0-beta.52", + "@babel/helper-split-export-declaration": "7.0.0-beta.52", + "@babel/parser": "7.0.0-beta.52", + "@babel/types": "7.0.0-beta.52", "debug": "^3.1.0", "globals": "^11.1.0", "invariant": "^2.2.0", @@ -7114,9 +7306,9 @@ } }, "@babel/types": { - "version": "7.0.0-beta.51", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.51.tgz", - "integrity": "sha1-2AK3tUO1g2x3iqaReXq/APPZfqk=", + "version": "7.0.0-beta.52", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.52.tgz", + "integrity": "sha1-o+ViCxU0slOlCrzyIitSDiOxbaI=", "dev": true, "requires": { "esutils": "^2.0.2", @@ -7124,25 +7316,214 @@ "to-fast-properties": "^2.0.0" } }, - "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "@webassemblyjs/ast": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.5.13.tgz", + "integrity": "sha512-49nwvW/Hx9i+OYHg+mRhKZfAlqThr11Dqz8TsrvqGKMhdI2ijy3KBJOun2Z4770TPjrIJhR6KxChQIDaz8clDA==", "dev": true, "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.2.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" + "@webassemblyjs/helper-module-context": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/wast-parser": "1.5.13", + "debug": "^3.1.0", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.13.tgz", + "integrity": "sha512-vrvvB18Kh4uyghSKb0NTv+2WZx871WL2NzwMj61jcq2bXkyhRC+8Q0oD7JGVf0+5i/fKQYQSBCNMMsDMRVAMqA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.13.tgz", + "integrity": "sha512-dBh2CWYqjaDlvMmRP/kudxpdh30uXjIbpkLj9HQe+qtYlwvYjPRjdQXrq1cTAAOUSMTtzqbXIxEdEZmyKfcwsg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.13.tgz", + "integrity": "sha512-v7igWf1mHcpJNbn4m7e77XOAWXCDT76Xe7Is1VQFXc4K5jRcFrl9D0NrqM4XifQ0bXiuTSkTKMYqDxu5MhNljA==", + "dev": true, + "requires": { + "debug": "^3.1.0" + } + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.13.tgz", + "integrity": "sha512-yN6ScQQDFCiAXnVctdVO/J5NQRbwyTbQzsGzEgXsAnrxhjp0xihh+nNHQTMrq5UhOqTb5LykpJAvEv9AT0jnAQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.5.13" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.13.tgz", + "integrity": "sha512-hSIKzbXjVMRvy3Jzhgu+vDd/aswJ+UMEnLRCkZDdknZO3Z9e6rp1DAs0tdLItjCFqkz9+0BeOPK/mk3eYvVzZg==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.13.tgz", + "integrity": "sha512-zxJXULGPLB7r+k+wIlvGlXpT4CYppRz8fLUM/xobGHc9Z3T6qlmJD9ySJ2jknuktuuiR9AjnNpKYDECyaiX+QQ==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.13.tgz", + "integrity": "sha512-0n3SoNGLvbJIZPhtMFq0XmmnA/YmQBXaZKQZcW8maGKwLpVcgjNrxpFZHEOLKjXJYVN5Il8vSfG7nRX50Zn+aw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.13.tgz", + "integrity": "sha512-IJ/goicOZ5TT1axZFSnlAtz4m8KEjYr12BNOANAwGFPKXM4byEDaMNXYowHMG0yKV9a397eU/NlibFaLwr1fbw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "debug": "^3.1.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.5.13.tgz", + "integrity": "sha512-TseswvXEPpG5TCBKoLx9tT7+/GMACjC1ruo09j46ULRZWYm8XHpDWaosOjTnI7kr4SRJFzA6MWoUkAB+YCGKKg==", + "dev": true, + "requires": { + "ieee754": "^1.1.11" + } + }, + "@webassemblyjs/leb128": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.5.13.tgz", + "integrity": "sha512-0NRMxrL+GG3eISGZBmLBLAVjphbN8Si15s7jzThaw1UE9e5BY1oH49/+MA1xBzxpf1OW5sf9OrPDOclk9wj2yg==", + "dev": true, + "requires": { + "long": "4.0.0" + }, + "dependencies": { + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + } + } + }, + "@webassemblyjs/utf8": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.5.13.tgz", + "integrity": "sha512-Ve1ilU2N48Ew0lVGB8FqY7V7hXjaC4+PeZM+vDYxEd+R2iQ0q+Wb3Rw8v0Ri0+rxhoz6gVGsnQNb4FjRiEH/Ng==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.13.tgz", + "integrity": "sha512-X7ZNW4+Hga4f2NmqENnHke2V/mGYK/xnybJSIXImt1ulxbCOEs/A+ZK/Km2jgihjyVxp/0z0hwIcxC6PrkWtgw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/helper-wasm-section": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "@webassemblyjs/wasm-opt": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "@webassemblyjs/wast-printer": "1.5.13", + "debug": "^3.1.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.13.tgz", + "integrity": "sha512-yfv94Se8R73zmr8GAYzezFHc3lDwE/lBXQddSiIZEKZFuqy7yWtm3KMwA1uGbv5G1WphimJxboXHR80IgX1hQA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/ieee754": "1.5.13", + "@webassemblyjs/leb128": "1.5.13", + "@webassemblyjs/utf8": "1.5.13" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.13.tgz", + "integrity": "sha512-IkXSkgzVhQ0QYAdIayuCWMmXSYx0dHGU8Ah/AxJf1gBvstMWVnzJnBwLsXLyD87VSBIcsqkmZ28dVb0mOC3oBg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-buffer": "1.5.13", + "@webassemblyjs/wasm-gen": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "debug": "^3.1.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.13.tgz", + "integrity": "sha512-XnYoIcu2iqq8/LrtmdnN3T+bRjqYFjRHqWbqK3osD/0r/Fcv4d9ecRzjVtC29ENEuNTK4mQ9yyxCBCbK8S/cpg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-api-error": "1.5.13", + "@webassemblyjs/helper-wasm-bytecode": "1.5.13", + "@webassemblyjs/ieee754": "1.5.13", + "@webassemblyjs/leb128": "1.5.13", + "@webassemblyjs/utf8": "1.5.13" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.5.13.tgz", + "integrity": "sha512-Lbz65T0LQ1LgzKiUytl34CwuhMNhaCLgrh0JW4rJBN6INnBB8NMwUfQM+FxTnLY9qJ+lHJL/gCM5xYhB9oWi4A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/floating-point-hex-parser": "1.5.13", + "@webassemblyjs/helper-api-error": "1.5.13", + "@webassemblyjs/helper-code-frame": "1.5.13", + "@webassemblyjs/helper-fsm": "1.5.13", + "long": "^3.2.0", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.5.13.tgz", + "integrity": "sha512-QcwogrdqcBh8Z+eUF8SG+ag5iwQSXxQJELBEHmLkk790wgQgnIMmntT2sMAMw53GiFNckArf5X0bsCA44j3lWQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/wast-parser": "1.5.13", + "long": "^3.2.0" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "debug": { @@ -7154,6 +7535,15 @@ "ms": "2.0.0" } }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, "detect-port-alt": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", @@ -7175,16 +7565,64 @@ } } }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, - "prettier": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.6.tgz", - "integrity": "sha512-p5eqCNiohWZN++7aJXUVj0JgLqHCPLf9GLIcLBHGNWs4Y9FJOPs6+KNO2WT0udJIQJTbeZFrJkjzjcb8fkAYYQ==", + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", "dev": true }, "react-dev-utils": { @@ -7225,41 +7663,105 @@ "strip-ansi": "^3.0.0", "supports-color": "^2.0.0" } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } } } + }, + "webpack": { + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.16.0.tgz", + "integrity": "sha512-oNx9djAd6uAcccyfqN3hyXLNMjZHiRySZmBQ4c8FNmf1SNJGhx7n9TSvHNyXxgToRdH65g/Q97s94Ip9N6F7xg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.5.13", + "@webassemblyjs/helper-module-context": "1.5.13", + "@webassemblyjs/wasm-edit": "1.5.13", + "@webassemblyjs/wasm-opt": "1.5.13", + "@webassemblyjs/wasm-parser": "1.5.13", + "acorn": "^5.6.2", + "acorn-dynamic-import": "^3.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^3.7.1", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.4", + "tapable": "^1.0.0", + "uglifyjs-webpack-plugin": "^1.2.4", + "watchpack": "^1.5.0", + "webpack-sources": "^1.0.1" + } + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "yargs": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.1.tgz", + "integrity": "sha512-B0vRAp1hRX4jgIOWFtjfNjd9OA9RWYZ6tqGA9/I/IrTMsxmKvtWy+ersM+jzpQqbC3YfLzeABPdeTgcJ9eu1qQ==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^2.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^10.1.0" + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } } } }, "docz-theme-default": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/docz-theme-default/-/docz-theme-default-0.2.11.tgz", - "integrity": "sha1-fMKeebffxnqPyQpkWfNkaeJ0BH8=", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/docz-theme-default/-/docz-theme-default-0.5.8.tgz", + "integrity": "sha1-brlkb7d7v8eY4s3lO2ubY+aZjME=", "dev": true, "requires": { - "docz": "^0.2.11", - "emotion": "^9.2.3", - "emotion-theming": "^9.2.3", + "docz": "^0.5.8", + "emotion": "^9.2.5", + "emotion-theming": "^9.2.5", + "facepaint": "^1.2.1", "fast-deep-equal": "^2.0.1", + "fuse.js": "^3.2.1", "prismjs": "^1.15.0", "prop-types": "15.6.2", - "react": "^16.4.1", - "react-dom": "^16.4.1", - "react-emotion": "^9.2.3", - "react-feather": "^1.1.0", + "react": "^16.2.0", + "react-adopt": "^0.6.0", + "react-breakpoints": "^3.0.0", + "react-content-loader": "^3.1.2", + "react-dom": "^16.2.0", + "react-emotion": "^9.2.5", + "react-feather": "^1.1.1", "react-lightweight-tooltip": "^1.0.0", - "react-powerplug": "^0.1.6", - "react-spinners": "^0.3.2", + "react-powerplug": "^1.0.0-rc.1", "webfontloader": "^1.6.28" } }, @@ -7416,6 +7918,12 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, + "ejs": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", + "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==", + "dev": true + }, "electron-to-chromium": { "version": "1.3.50", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.50.tgz", @@ -7450,19 +7958,19 @@ "dev": true }, "emotion": { - "version": "9.2.4", - "resolved": "https://registry.npmjs.org/emotion/-/emotion-9.2.4.tgz", - "integrity": "sha1-ATnnzBVLKEX0ua+qmW3U3hO7kOM=", + "version": "9.2.5", + "resolved": "https://registry.npmjs.org/emotion/-/emotion-9.2.5.tgz", + "integrity": "sha1-Zm+xUaacJcdYL/PeBvYPjYSPdKo=", "dev": true, "requires": { - "babel-plugin-emotion": "^9.2.4", - "create-emotion": "^9.2.4" + "babel-plugin-emotion": "^9.2.5", + "create-emotion": "^9.2.5" } }, "emotion-theming": { - "version": "9.2.4", - "resolved": "https://registry.npmjs.org/emotion-theming/-/emotion-theming-9.2.4.tgz", - "integrity": "sha1-l1g3hh7yAocEoBSmDGTr+r1DJ1U=", + "version": "9.2.5", + "resolved": "https://registry.npmjs.org/emotion-theming/-/emotion-theming-9.2.5.tgz", + "integrity": "sha1-8z8hDxHIDhE2QbNK7J4L+eBMvYk=", "dev": true, "requires": { "hoist-non-react-statics": "^2.3.1" @@ -7722,9 +8230,9 @@ } }, "esm": { - "version": "3.0.55", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.0.55.tgz", - "integrity": "sha512-YmOhwp5znUfxH5UCfAjXg3CP5ihWa5QgG24gS0GON4DI/B+fkYTK/t7WTpMwPMqJLzPTRUKcQJ31MtRgkHPXcg==", + "version": "3.0.69", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.0.69.tgz", + "integrity": "sha512-ECQbEBAzGE15NJXO+ediu/Zdk7rtxIkPAlFbgoJbLM96lAJEKC0XfmN2PmFHNvh6k6m+wAJUffL3E49KO7xCLg==", "dev": true }, "esprima": { @@ -8132,6 +8640,12 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, + "facepaint": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/facepaint/-/facepaint-1.2.1.tgz", + "integrity": "sha512-oNvBekbhsm/0PNSOWca5raHNAi6dG960Bx6LJgxDPNF59WpuspgQ17bN5MKwOr7JcFdQYc7StW3VZ28DBZLavQ==", + "dev": true + }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", @@ -8376,12 +8890,20 @@ } }, "flat": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.0.0.tgz", - "integrity": "sha512-ji/WMv2jdsE+LaznpkIF9Haax0sdpTBozrz/Dtg4qSRMfbs8oVg4ypJunIRYPiMLvH/ed6OflXbnbTIKJhtgeg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", "dev": true, "requires": { - "is-buffer": "~1.1.5" + "is-buffer": "~2.0.3" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", + "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", + "dev": true + } } }, "flatten": { @@ -8630,12 +9152,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -8655,7 +9179,8 @@ "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", @@ -8803,6 +9328,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -9135,6 +9661,12 @@ "is-callable": "^1.1.3" } }, + "fuse.js": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-3.2.1.tgz", + "integrity": "sha1-YyDLlM5W7JdVyJred1vNuwNY1CU=", + "dev": true + }, "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", @@ -9485,9 +10017,9 @@ } }, "graphql-playground-middleware-express": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.0.tgz", - "integrity": "sha512-t5MxpVvAyZBGEGUv+p/GZgh10oEBhGH5pNtJlpLNc448wX2718fwWMJSfGhQkXlSm+nst4tdLoYu5TI1/HpGAQ==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.2.tgz", + "integrity": "sha512-JvKsVOR/U5QguBtEvTt0ozQ49uh1C6cW8O1xR6krQpJZIxjLYqpgusLUddTiVkka6Q/A4/AXBohY85jPudxYDg==", "dev": true, "requires": { "graphql-playground-html": "1.6.0" @@ -9520,11 +10052,11 @@ } }, "graphql-tools": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-3.0.2.tgz", - "integrity": "sha512-bhDGrvmSgcJBFX3EZEYagmKPk/EJ9vZIcF1WtSFveWfvSsh7crMFSQ9ldftuIXC9UeRwfutpGf3A1q4UpVLaRg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-3.0.5.tgz", + "integrity": "sha512-MawfVPwaqy+L48IiP4QXHpFFOgCH+vWmB9oeU70lckac22nOpDLwbkKtddtdodoTHV54EKbkTpPdW6u6bcjjFA==", "requires": { - "apollo-link": "1.2.1", + "apollo-link": "1.2.2", "apollo-utilities": "^1.0.1", "deprecated-decorator": "^0.1.6", "iterall": "^1.1.3", @@ -9537,6 +10069,12 @@ "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", "dev": true }, + "gud": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==", + "dev": true + }, "gzip-size": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", @@ -10150,6 +10688,32 @@ "integrity": "sha1-E7TTyxK++hVIKib+Gy665kAHHks=", "dev": true }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, "import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", @@ -11183,13 +11747,13 @@ "dev": true }, "jest": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-23.3.0.tgz", - "integrity": "sha1-E1XNeS84zyD7pNoC3dt8oU2UhLU=", + "version": "23.4.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-23.4.1.tgz", + "integrity": "sha512-HTOuA9epknN7RKdzhmp9qrbP0z3TibAMXI+sluLOcrEoF54ZCG8/urFB2DK/sOINcMeyX6epMUqka8i0+d0xOA==", "dev": true, "requires": { "import-local": "^1.0.0", - "jest-cli": "^23.3.0" + "jest-cli": "^23.4.1" }, "dependencies": { "ansi-regex": { @@ -11198,6 +11762,116 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "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-jest": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.4.0.tgz", + "integrity": "sha1-IsNMOS4hdvakw2eZKn/P9p0uhVc=", + "dev": true, + "requires": { + "babel-plugin-istanbul": "^4.1.6", + "babel-preset-jest": "^23.2.0" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expect": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-23.4.0.tgz", + "integrity": "sha1-baTsyZwUcSU+cogziYOtHrrbYMM=", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "jest-diff": "^23.2.0", + "jest-get-type": "^22.1.0", + "jest-matcher-utils": "^23.2.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", @@ -11212,10 +11886,25 @@ "path-is-absolute": "^1.0.0" } }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, "jest-cli": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.3.0.tgz", - "integrity": "sha1-MH6b53M0Q7eJqCedaUBU0FGp5eI=", + "version": "23.4.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.4.1.tgz", + "integrity": "sha512-Cmd7bex+kYmMGwGrIh/crwUieUFr+4PCTaK32tEA0dm0wklXV8zGgWh8n+8WbhsFPNzacolxdtcfBKIorcV5FQ==", "dev": true, "requires": { "ansi-escapes": "^3.0.0", @@ -11229,22 +11918,22 @@ "istanbul-lib-coverage": "^1.2.0", "istanbul-lib-instrument": "^1.10.1", "istanbul-lib-source-maps": "^1.2.4", - "jest-changed-files": "^23.2.0", - "jest-config": "^23.3.0", - "jest-environment-jsdom": "^23.3.0", + "jest-changed-files": "^23.4.0", + "jest-config": "^23.4.1", + "jest-environment-jsdom": "^23.4.0", "jest-get-type": "^22.1.0", - "jest-haste-map": "^23.2.0", - "jest-message-util": "^23.3.0", + "jest-haste-map": "^23.4.1", + "jest-message-util": "^23.4.0", "jest-regex-util": "^23.3.0", - "jest-resolve-dependencies": "^23.3.0", - "jest-runner": "^23.3.0", - "jest-runtime": "^23.3.0", - "jest-snapshot": "^23.3.0", - "jest-util": "^23.3.0", - "jest-validate": "^23.3.0", - "jest-watcher": "^23.2.0", + "jest-resolve-dependencies": "^23.4.1", + "jest-runner": "^23.4.1", + "jest-runtime": "^23.4.1", + "jest-snapshot": "^23.4.1", + "jest-util": "^23.4.0", + "jest-validate": "^23.4.0", + "jest-watcher": "^23.4.0", "jest-worker": "^23.2.0", - "micromatch": "^3.1.10", + "micromatch": "^2.3.11", "node-notifier": "^5.2.1", "prompts": "^0.1.9", "realpath-native": "^1.0.0", @@ -11256,6 +11945,192 @@ "yargs": "^11.0.0" } }, + "jest-config": { + "version": "23.4.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.4.1.tgz", + "integrity": "sha512-OT29qlcw9Iw7u0PC04wD9tjLJL4vpGdMZrrHMFwYSO3HxOikbHywjmtQ7rntW4qvBcpbi7iCMTPPRmpDjImQEw==", + "dev": true, + "requires": { + "babel-core": "^6.0.0", + "babel-jest": "^23.4.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^23.4.0", + "jest-environment-node": "^23.4.0", + "jest-get-type": "^22.1.0", + "jest-jasmine2": "^23.4.1", + "jest-regex-util": "^23.3.0", + "jest-resolve": "^23.4.1", + "jest-util": "^23.4.0", + "jest-validate": "^23.4.0", + "pretty-format": "^23.2.0" + } + }, + "jest-each": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.4.0.tgz", + "integrity": "sha1-L6nt2J2qGk7cn/m/YGKja3E0UUM=", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "pretty-format": "^23.2.0" + } + }, + "jest-environment-jsdom": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz", + "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=", + "dev": true, + "requires": { + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz", + "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=", + "dev": true, + "requires": { + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0" + } + }, + "jest-jasmine2": { + "version": "23.4.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.4.1.tgz", + "integrity": "sha512-nHmRgTtM9fuaK3RBz2z4j9mYVEJwB7FdoflQSvrwHV8mCT5z4DeHoKCvPp2R27F8fZTYJUYVMb36xn+ydg0tfA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^23.4.0", + "is-generator-fn": "^1.0.0", + "jest-diff": "^23.2.0", + "jest-each": "^23.4.0", + "jest-matcher-utils": "^23.2.0", + "jest-message-util": "^23.4.0", + "jest-snapshot": "^23.4.1", + "jest-util": "^23.4.0", + "pretty-format": "^23.2.0" + } + }, + "jest-message-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", + "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0-beta.35", + "chalk": "^2.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-resolve": { + "version": "23.4.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.4.1.tgz", + "integrity": "sha512-VNk4YRNR5gsHhNS0Lp46/DzTT11e+ecbUC61ikE593cKbtdrhrMO+zXkOJaE8YDD5sHxH9W6OfssNn4FkZBzZQ==", + "dev": true, + "requires": { + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "realpath-native": "^1.0.0" + } + }, + "jest-snapshot": { + "version": "23.4.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.4.1.tgz", + "integrity": "sha512-oMjaQ4vB4uT211zx00X0R7hg+oLVRDvhVKiC6+vSg7Be9S/AmkDMCVUoaPcLRK/0NkZBTzrh4WCzrSZgUEZW3g==", + "dev": true, + "requires": { + "babel-traverse": "^6.0.0", + "babel-types": "^6.0.0", + "chalk": "^2.0.1", + "jest-diff": "^23.2.0", + "jest-matcher-utils": "^23.2.0", + "jest-message-util": "^23.4.0", + "jest-resolve": "^23.4.1", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^23.2.0", + "semver": "^5.5.0" + } + }, + "jest-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz", + "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=", + "dev": true, + "requires": { + "callsites": "^2.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.11", + "is-ci": "^1.0.10", + "jest-message-util": "^23.4.0", + "mkdirp": "^0.5.1", + "slash": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "jest-validate": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.4.0.tgz", + "integrity": "sha1-2W7t4B7wOskJwAnpyORVGX1IwgE=", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^22.1.0", + "leven": "^2.1.0", + "pretty-format": "^23.2.0" + } + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", @@ -11277,9 +12152,9 @@ } }, "jest-changed-files": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.2.0.tgz", - "integrity": "sha1-oUWm5LZtASn8fJnO4TTck3pkPZw=", + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.0.tgz", + "integrity": "sha1-8bME+YwjWvXZox7FJCYsXk3jxv8=", "dev": true, "requires": { "throat": "^4.0.0" @@ -11417,9 +12292,9 @@ "dev": true }, "jest-haste-map": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.2.0.tgz", - "integrity": "sha1-0Qy6wAfGlZSMjvGCGisu0tTy1Ng=", + "version": "23.4.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.4.1.tgz", + "integrity": "sha512-PGQxOEGAfRbTyJkmZeOKkVSs+KVeWgG625p89KUuq+sIIchY5P8iPIIc+Hw2tJJPBzahU3qopw1kF/qyhDdNBw==", "dev": true, "requires": { "fb-watchman": "^2.0.0", @@ -11427,10 +12302,69 @@ "jest-docblock": "^23.2.0", "jest-serializer": "^23.0.1", "jest-worker": "^23.2.0", - "micromatch": "^3.1.10", + "micromatch": "^2.3.11", "sane": "^2.0.0" }, "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, "jest-docblock": { "version": "23.2.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz", @@ -11439,6 +12373,36 @@ "requires": { "detect-newline": "^2.1.0" } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } } } }, @@ -11518,76 +12482,194 @@ } }, "jest-resolve-dependencies": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.3.0.tgz", - "integrity": "sha1-hETTsLEoi4CGTYgB/1C0Sk1pXR0=", + "version": "23.4.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.4.1.tgz", + "integrity": "sha512-Jp0wgNJg3OYPvXJfNVX4k4/niwGS6ARuKacum/vue48+4A1XPJ2H3aVFuNb3gUaiB/6Le7Zyl8AUb4MELBfcmg==", "dev": true, "requires": { "jest-regex-util": "^23.3.0", - "jest-snapshot": "^23.3.0" + "jest-snapshot": "^23.4.1" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "jest-message-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", + "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0-beta.35", + "chalk": "^2.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-resolve": { + "version": "23.4.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.4.1.tgz", + "integrity": "sha512-VNk4YRNR5gsHhNS0Lp46/DzTT11e+ecbUC61ikE593cKbtdrhrMO+zXkOJaE8YDD5sHxH9W6OfssNn4FkZBzZQ==", + "dev": true, + "requires": { + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "realpath-native": "^1.0.0" + } + }, + "jest-snapshot": { + "version": "23.4.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.4.1.tgz", + "integrity": "sha512-oMjaQ4vB4uT211zx00X0R7hg+oLVRDvhVKiC6+vSg7Be9S/AmkDMCVUoaPcLRK/0NkZBTzrh4WCzrSZgUEZW3g==", + "dev": true, + "requires": { + "babel-traverse": "^6.0.0", + "babel-types": "^6.0.0", + "chalk": "^2.0.1", + "jest-diff": "^23.2.0", + "jest-matcher-utils": "^23.2.0", + "jest-message-util": "^23.4.0", + "jest-resolve": "^23.4.1", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^23.2.0", + "semver": "^5.5.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + } } }, "jest-runner": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.3.0.tgz", - "integrity": "sha1-BMfkWKYXUBpIddsNf/vg48vUO/s=", + "version": "23.4.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.4.1.tgz", + "integrity": "sha512-78KyhObsx0VEuUQ74ikGt68NpP6PApTjGpJPSyZ7AvwOFRqFlxdHpCU/lFPQxW/fLEghl4irz9OHjRLGcGFNyQ==", "dev": true, "requires": { "exit": "^0.1.2", "graceful-fs": "^4.1.11", - "jest-config": "^23.3.0", + "jest-config": "^23.4.1", "jest-docblock": "^23.2.0", - "jest-haste-map": "^23.2.0", - "jest-jasmine2": "^23.3.0", + "jest-haste-map": "^23.4.1", + "jest-jasmine2": "^23.4.1", "jest-leak-detector": "^23.2.0", - "jest-message-util": "^23.3.0", - "jest-runtime": "^23.3.0", - "jest-util": "^23.3.0", + "jest-message-util": "^23.4.0", + "jest-runtime": "^23.4.1", + "jest-util": "^23.4.0", "jest-worker": "^23.2.0", "source-map-support": "^0.5.6", "throat": "^4.0.0" }, "dependencies": { - "jest-docblock": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz", - "integrity": "sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=", + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "detect-newline": "^2.1.0" + "color-convert": "^1.9.0" } - } - } - }, - "jest-runtime": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.3.0.tgz", - "integrity": "sha1-SGWqtM7/gvnOxjNf164UIswd598=", - "dev": true, - "requires": { - "babel-core": "^6.0.0", - "babel-plugin-istanbul": "^4.1.6", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "exit": "^0.1.2", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.11", - "jest-config": "^23.3.0", - "jest-haste-map": "^23.2.0", - "jest-message-util": "^23.3.0", - "jest-regex-util": "^23.3.0", - "jest-resolve": "^23.2.0", - "jest-snapshot": "^23.3.0", - "jest-util": "^23.3.0", - "jest-validate": "^23.3.0", - "micromatch": "^3.1.10", - "realpath-native": "^1.0.0", - "slash": "^1.0.0", - "strip-bom": "3.0.0", - "write-file-atomic": "^2.1.0", - "yargs": "^11.0.0" - }, - "dependencies": { + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, "babel-core": { "version": "6.26.3", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", @@ -11615,17 +12697,644 @@ "source-map": "^0.5.7" } }, + "babel-jest": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.4.0.tgz", + "integrity": "sha1-IsNMOS4hdvakw2eZKn/P9p0uhVc=", + "dev": true, + "requires": { + "babel-plugin-istanbul": "^4.1.6", + "babel-preset-jest": "^23.2.0" + } + }, "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expect": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-23.4.0.tgz", + "integrity": "sha1-baTsyZwUcSU+cogziYOtHrrbYMM=", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "jest-diff": "^23.2.0", + "jest-get-type": "^22.1.0", + "jest-matcher-utils": "^23.2.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "jest-config": { + "version": "23.4.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.4.1.tgz", + "integrity": "sha512-OT29qlcw9Iw7u0PC04wD9tjLJL4vpGdMZrrHMFwYSO3HxOikbHywjmtQ7rntW4qvBcpbi7iCMTPPRmpDjImQEw==", + "dev": true, + "requires": { + "babel-core": "^6.0.0", + "babel-jest": "^23.4.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^23.4.0", + "jest-environment-node": "^23.4.0", + "jest-get-type": "^22.1.0", + "jest-jasmine2": "^23.4.1", + "jest-regex-util": "^23.3.0", + "jest-resolve": "^23.4.1", + "jest-util": "^23.4.0", + "jest-validate": "^23.4.0", + "pretty-format": "^23.2.0" + } + }, + "jest-docblock": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz", + "integrity": "sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.4.0.tgz", + "integrity": "sha1-L6nt2J2qGk7cn/m/YGKja3E0UUM=", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "pretty-format": "^23.2.0" + } + }, + "jest-environment-jsdom": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz", + "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=", + "dev": true, + "requires": { + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz", + "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=", + "dev": true, + "requires": { + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0" + } + }, + "jest-jasmine2": { + "version": "23.4.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.4.1.tgz", + "integrity": "sha512-nHmRgTtM9fuaK3RBz2z4j9mYVEJwB7FdoflQSvrwHV8mCT5z4DeHoKCvPp2R27F8fZTYJUYVMb36xn+ydg0tfA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^23.4.0", + "is-generator-fn": "^1.0.0", + "jest-diff": "^23.2.0", + "jest-each": "^23.4.0", + "jest-matcher-utils": "^23.2.0", + "jest-message-util": "^23.4.0", + "jest-snapshot": "^23.4.1", + "jest-util": "^23.4.0", + "pretty-format": "^23.2.0" + } + }, + "jest-message-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", + "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0-beta.35", + "chalk": "^2.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-resolve": { + "version": "23.4.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.4.1.tgz", + "integrity": "sha512-VNk4YRNR5gsHhNS0Lp46/DzTT11e+ecbUC61ikE593cKbtdrhrMO+zXkOJaE8YDD5sHxH9W6OfssNn4FkZBzZQ==", + "dev": true, + "requires": { + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "realpath-native": "^1.0.0" + } + }, + "jest-snapshot": { + "version": "23.4.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.4.1.tgz", + "integrity": "sha512-oMjaQ4vB4uT211zx00X0R7hg+oLVRDvhVKiC6+vSg7Be9S/AmkDMCVUoaPcLRK/0NkZBTzrh4WCzrSZgUEZW3g==", + "dev": true, + "requires": { + "babel-traverse": "^6.0.0", + "babel-types": "^6.0.0", + "chalk": "^2.0.1", + "jest-diff": "^23.2.0", + "jest-matcher-utils": "^23.2.0", + "jest-message-util": "^23.4.0", + "jest-resolve": "^23.4.1", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^23.2.0", + "semver": "^5.5.0" + } + }, + "jest-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz", + "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=", + "dev": true, + "requires": { + "callsites": "^2.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.11", + "is-ci": "^1.0.10", + "jest-message-util": "^23.4.0", + "mkdirp": "^0.5.1", + "slash": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "jest-validate": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.4.0.tgz", + "integrity": "sha1-2W7t4B7wOskJwAnpyORVGX1IwgE=", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^22.1.0", + "leven": "^2.1.0", + "pretty-format": "^23.2.0" + } + }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + } + } + }, + "jest-runtime": { + "version": "23.4.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.4.1.tgz", + "integrity": "sha512-fnInrsEAbLpNctQa+RLnKZyQLMmb5u4YdoT9CbRKWhjMY7q6ledOu+x+ORZ3glQOK/vJIS701RaJRp1pc5ziaA==", + "dev": true, + "requires": { + "babel-core": "^6.0.0", + "babel-plugin-istanbul": "^4.1.6", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "exit": "^0.1.2", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.11", + "jest-config": "^23.4.1", + "jest-haste-map": "^23.4.1", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0", + "jest-resolve": "^23.4.1", + "jest-snapshot": "^23.4.1", + "jest-util": "^23.4.0", + "jest-validate": "^23.4.0", + "micromatch": "^2.3.11", + "realpath-native": "^1.0.0", + "slash": "^1.0.0", + "strip-bom": "3.0.0", + "write-file-atomic": "^2.1.0", + "yargs": "^11.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "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-jest": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.4.0.tgz", + "integrity": "sha1-IsNMOS4hdvakw2eZKn/P9p0uhVc=", + "dev": true, + "requires": { + "babel-plugin-istanbul": "^4.1.6", + "babel-preset-jest": "^23.2.0" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expect": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-23.4.0.tgz", + "integrity": "sha1-baTsyZwUcSU+cogziYOtHrrbYMM=", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "jest-diff": "^23.2.0", + "jest-get-type": "^22.1.0", + "jest-matcher-utils": "^23.2.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "jest-config": { + "version": "23.4.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.4.1.tgz", + "integrity": "sha512-OT29qlcw9Iw7u0PC04wD9tjLJL4vpGdMZrrHMFwYSO3HxOikbHywjmtQ7rntW4qvBcpbi7iCMTPPRmpDjImQEw==", + "dev": true, + "requires": { + "babel-core": "^6.0.0", + "babel-jest": "^23.4.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^23.4.0", + "jest-environment-node": "^23.4.0", + "jest-get-type": "^22.1.0", + "jest-jasmine2": "^23.4.1", + "jest-regex-util": "^23.3.0", + "jest-resolve": "^23.4.1", + "jest-util": "^23.4.0", + "jest-validate": "^23.4.0", + "pretty-format": "^23.2.0" + } + }, + "jest-each": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.4.0.tgz", + "integrity": "sha1-L6nt2J2qGk7cn/m/YGKja3E0UUM=", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "pretty-format": "^23.2.0" + } + }, + "jest-environment-jsdom": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz", + "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=", + "dev": true, + "requires": { + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz", + "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=", + "dev": true, + "requires": { + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0" + } + }, + "jest-jasmine2": { + "version": "23.4.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.4.1.tgz", + "integrity": "sha512-nHmRgTtM9fuaK3RBz2z4j9mYVEJwB7FdoflQSvrwHV8mCT5z4DeHoKCvPp2R27F8fZTYJUYVMb36xn+ydg0tfA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^23.4.0", + "is-generator-fn": "^1.0.0", + "jest-diff": "^23.2.0", + "jest-each": "^23.4.0", + "jest-matcher-utils": "^23.2.0", + "jest-message-util": "^23.4.0", + "jest-snapshot": "^23.4.1", + "jest-util": "^23.4.0", + "pretty-format": "^23.2.0" + } + }, + "jest-message-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", + "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0-beta.35", + "chalk": "^2.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-resolve": { + "version": "23.4.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.4.1.tgz", + "integrity": "sha512-VNk4YRNR5gsHhNS0Lp46/DzTT11e+ecbUC61ikE593cKbtdrhrMO+zXkOJaE8YDD5sHxH9W6OfssNn4FkZBzZQ==", + "dev": true, + "requires": { + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "realpath-native": "^1.0.0" + } + }, + "jest-snapshot": { + "version": "23.4.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.4.1.tgz", + "integrity": "sha512-oMjaQ4vB4uT211zx00X0R7hg+oLVRDvhVKiC6+vSg7Be9S/AmkDMCVUoaPcLRK/0NkZBTzrh4WCzrSZgUEZW3g==", + "dev": true, + "requires": { + "babel-traverse": "^6.0.0", + "babel-types": "^6.0.0", + "chalk": "^2.0.1", + "jest-diff": "^23.2.0", + "jest-matcher-utils": "^23.2.0", + "jest-message-util": "^23.4.0", + "jest-resolve": "^23.4.1", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^23.2.0", + "semver": "^5.5.0" + } + }, + "jest-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz", + "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=", + "dev": true, + "requires": { + "callsites": "^2.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.11", + "is-ci": "^1.0.10", + "jest-message-util": "^23.4.0", + "mkdirp": "^0.5.1", + "slash": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "jest-validate": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.4.0.tgz", + "integrity": "sha1-2W7t4B7wOskJwAnpyORVGX1IwgE=", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^22.1.0", + "leven": "^2.1.0", + "pretty-format": "^23.2.0" + } + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } } } }, @@ -11691,9 +13400,9 @@ } }, "jest-watcher": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.2.0.tgz", - "integrity": "sha1-Z46FKJbpGenZoOtLi68a4nliDqk=", + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.4.0.tgz", + "integrity": "sha1-0uKM50+NrWxq/JIrksq+9u0FyRw=", "dev": true, "requires": { "ansi-escapes": "^3.0.0", @@ -11897,43 +13606,64 @@ "graceful-fs": "^4.1.9" } }, + "kleur": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-1.0.1.tgz", + "integrity": "sha512-8srIZ5BK5PCJw1L/JN741xgNfSjuQNK9ImYbYzv7ZUD3WPfuywaY+yd7lQOphJ+2vwXnMLnRZoAh5X+orRt4LQ==", + "dev": true + }, "koa": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.5.1.tgz", - "integrity": "sha512-cchwbMeG2dv3E2xTAmheDAuvR53tPgJZN/Hf1h7bTzJLSPcFZp8/t5+bNKJ6GaQZoydhZQ+1GNruhKdj3lIrug==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.5.2.tgz", + "integrity": "sha512-MoVGWre9g3p35pCqXNhOT/a4trwK5CGvalIoPi7qOA2RCZaep3GCsa/G/tD9QMjQI7bmVWn3XF3SOau8RkPh6w==", "dev": true, "requires": { - "accepts": "^1.2.2", - "content-disposition": "~0.5.0", - "content-type": "^1.0.0", - "cookies": "~0.7.0", - "debug": "*", + "accepts": "^1.3.5", + "cache-content-type": "^1.0.0", + "content-disposition": "~0.5.2", + "content-type": "^1.0.4", + "cookies": "~0.7.1", + "debug": "^3.1.0", "delegates": "^1.0.0", - "depd": "^1.1.0", - "destroy": "^1.0.3", - "error-inject": "~1.0.0", - "escape-html": "~1.0.1", - "fresh": "^0.5.2", - "http-assert": "^1.1.0", - "http-errors": "^1.2.8", - "is-generator-function": "^1.0.3", - "koa-compose": "^4.0.0", + "depd": "^1.1.2", + "destroy": "^1.0.4", + "error-inject": "^1.0.0", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^1.6.3", + "is-generator-function": "^1.0.7", + "koa-compose": "^4.1.0", "koa-convert": "^1.2.0", "koa-is-json": "^1.0.0", - "mime-types": "^2.0.7", - "on-finished": "^2.1.0", - "only": "0.0.2", - "parseurl": "^1.3.0", - "statuses": "^1.2.0", - "type-is": "^1.5.5", - "vary": "^1.0.0" + "on-finished": "^2.3.0", + "only": "~0.0.2", + "parseurl": "^1.3.2", + "statuses": "^1.5.0", + "type-is": "^1.6.16", + "vary": "^1.1.2" }, "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "koa-compose": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true } } }, @@ -12023,57 +13753,18 @@ } }, "koa-webpack": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/koa-webpack/-/koa-webpack-4.0.0.tgz", - "integrity": "sha512-P+j2TzeZAqFwscd/dlLykk/sxwr6wQ5Tp3FYDhqv1+y9aRIffTPnu2zK+1BhfM+Kyh8bepU1jFR420maE+Vajw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/koa-webpack/-/koa-webpack-5.1.0.tgz", + "integrity": "sha512-XNqqtPpMvccXK3tAs0vW6YoO4+uYaxarutsgCZjNi3NyvmmVBvIH6l6xGk0NtiJR1m0oa53gFHLSiT19ZseOCw==", "dev": true, "requires": { + "@webpack-contrib/schema-utils": "^1.0.0-beta.0", "app-root-path": "^2.0.1", + "loud-rejection": "^1.6.0", "merge-options": "^1.0.0", "webpack-dev-middleware": "^3.0.0", - "webpack-hot-client": "^3.0.0", + "webpack-hot-client": "^4.1.0", "webpack-log": "^1.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "webpack-hot-client": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/webpack-hot-client/-/webpack-hot-client-3.0.0.tgz", - "integrity": "sha512-6k91015hZ4Okkz8u6OzRgJygEL+3J3ay6HVZhWBF3tT2P0rZJ0mgca39dotJxngggUm3S8707c0vrcynn1IzEQ==", - "dev": true, - "requires": { - "json-stringify-safe": "^5.0.1", - "loglevelnext": "^1.0.2", - "strip-ansi": "^4.0.0", - "uuid": "^3.1.0", - "webpack-log": "^1.1.1", - "ws": "^4.0.0" - } - }, - "ws": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", - "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0" - } - } } }, "latest-version": { @@ -12130,13 +13821,13 @@ } }, "load-cfg": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/load-cfg/-/load-cfg-0.2.8.tgz", - "integrity": "sha1-ax/0kaY/AE4NMfuTz+FZet2li4k=", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/load-cfg/-/load-cfg-0.5.6.tgz", + "integrity": "sha1-N40Q2lw4JLEMC1463cVVukYZofE=", "dev": true, "requires": { "deepmerge": "^2.1.1", - "esm": "^3.0.52", + "esm": "^3.0.66", "find-up": "^3.0.0" }, "dependencies": { @@ -12340,16 +14031,6 @@ "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=" }, - "lodash.isobject": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", - "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=" - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" - }, "lodash.iteratee": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.iteratee/-/lodash.iteratee-4.7.0.tgz", @@ -12530,9 +14211,9 @@ } }, "luxon": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.2.1.tgz", - "integrity": "sha512-ymX+7rWJjYw6jfmtkLqHJmXo+FYC69icT60x+utlzjIOc/U4SNXljUITwH4C1RDP0ZukWf4apHT/d1Ux/4eHPg==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.3.1.tgz", + "integrity": "sha512-GnX4PVEfDcTZT3xDQhm2jvEyZTxfi2b0gOmkJuwrrggA1b46e8ZshmPYePA6gdAT6mvvOxYnGFfb3iE9ZsWn9g==" }, "make-dir": { "version": "1.3.0", @@ -12683,6 +14364,12 @@ "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", "dev": true }, + "meant": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/meant/-/meant-1.0.1.tgz", + "integrity": "sha512-UakVLFjKkbbUwNWJ2frVLnnAtbb7D7DsloxRd3s/gDpI8rdv8W5Hp3NaDb+POBI1fQdeussER6NB8vpcRURvlg==", + "dev": true + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -12946,20 +14633,21 @@ "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=" }, "mongodb": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.0.10.tgz", - "integrity": "sha512-jy9s4FgcM4rl8sHNETYHGeWcuRh9AlwQCUuMiTj041t/HD02HwyFgmm2VZdd9/mA9YNHaUJLqj0tzBx2QFivtg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.1.1.tgz", + "integrity": "sha512-GU9oWK4pi8PC7NyGiwjFMwZyMqwGWoMEMvM0LZh7UKW/FFAqgmZKjjriD+5MEOCDUJE2dtHX93/K5UtDxO0otg==", "requires": { - "mongodb-core": "3.0.9" + "mongodb-core": "3.1.0" } }, "mongodb-core": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.9.tgz", - "integrity": "sha512-buOWjdLLBlEqjHDeHYSXqXx173wHMVp7bafhdHxSjxWdB9V6Ri4myTqxjYZwL/eGFZxvd8oRQSuhwuIDbaaB+g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.1.0.tgz", + "integrity": "sha512-qRjG62Fu//CZhkgn0jA/k8jh5MhACIq8cOJUryH6sck87pgt+C222MSD02tsCq5zNo/B6ZFHtNodZ2qpf8E86g==", "requires": { "bson": "~1.0.4", - "require_optional": "^1.0.1" + "require_optional": "^1.0.1", + "saslprep": "^1.0.0" } }, "move-concurrently": { @@ -13101,12 +14789,6 @@ "nanoassert": "^1.1.0" } }, - "nanoseconds": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nanoseconds/-/nanoseconds-1.0.1.tgz", - "integrity": "sha512-fLbtBoaFlCdjq+LNaDTLXHQh8U3rKDUGRBY0BO2Xjgi1vt+X/6xF6gOkNbYolZboYAeM8o3eOZCOcDJZdogCEg==", - "dev": true - }, "nanotiming": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/nanotiming/-/nanotiming-7.3.1.tgz", @@ -13152,6 +14834,12 @@ "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==", "dev": true }, + "nested-error-stacks": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz", + "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==", + "dev": true + }, "next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", @@ -13286,6 +14974,12 @@ "which": "^1.3.0" } }, + "node-version": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/node-version/-/node-version-1.2.0.tgz", + "integrity": "sha512-ma6oU4Sk0qOoKEAymVoTvk8EdXEobdS7m/mAGhDJ8Rouugho48crHBORAmy5BoOcv8wraPM6xumapQp5hl4iIQ==", + "dev": true + }, "nomnom": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.6.2.tgz", @@ -13704,12 +15398,24 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "dev": true + }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -13734,6 +15440,22 @@ "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", "dev": true }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, + "p-series": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-series/-/p-series-1.1.0.tgz", + "integrity": "sha512-356covArc9UCfj2twY/sxCJKGMzzO+pJJtucizsPC6aS1xKSTBc9PQrQhvFR3+7F+fa2KBKdJjdIcv6NEWDcIQ==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.7.0", + "p-reduce": "^1.0.0" + } + }, "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -14904,142 +16626,48 @@ } }, "postcss-load-config": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", - "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.0.0.tgz", + "integrity": "sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==", "dev": true, "requires": { - "cosmiconfig": "^2.1.0", - "object-assign": "^4.1.0", - "postcss-load-options": "^1.2.0", - "postcss-load-plugins": "^2.3.0" + "cosmiconfig": "^4.0.0", + "import-cwd": "^2.0.0" }, "dependencies": { "cosmiconfig": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", - "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", + "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", "dev": true, "requires": { "is-directory": "^0.3.1", - "js-yaml": "^3.4.3", - "minimist": "^1.2.0", - "object-assign": "^4.1.0", - "os-homedir": "^1.0.1", - "parse-json": "^2.2.0", - "require-from-string": "^1.1.0" + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0", + "require-from-string": "^2.0.1" } }, "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "error-ex": "^1.2.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } - }, - "require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", - "dev": true - } - } - }, - "postcss-load-options": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", - "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", - "dev": true, - "requires": { - "cosmiconfig": "^2.1.0", - "object-assign": "^4.1.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", - "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", - "dev": true, - "requires": { - "is-directory": "^0.3.1", - "js-yaml": "^3.4.3", - "minimist": "^1.2.0", - "object-assign": "^4.1.0", - "os-homedir": "^1.0.1", - "parse-json": "^2.2.0", - "require-from-string": "^1.1.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", - "dev": true - } - } - }, - "postcss-load-plugins": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", - "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", - "dev": true, - "requires": { - "cosmiconfig": "^2.1.1", - "object-assign": "^4.1.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", - "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", - "dev": true, - "requires": { - "is-directory": "^0.3.1", - "js-yaml": "^3.4.3", - "minimist": "^1.2.0", - "object-assign": "^4.1.0", - "os-homedir": "^1.0.1", - "parse-json": "^2.2.0", - "require-from-string": "^1.1.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", - "dev": true } } }, "postcss-loader": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.5.tgz", - "integrity": "sha512-pV7kB5neJ0/1tZ8L1uGOBNTVBCSCXQoIsZMsrwvO8V2rKGa2tBl/f80GGVxow2jJnRJ2w1ocx693EKhZAb9Isg==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.6.tgz", + "integrity": "sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg==", "dev": true, "requires": { "loader-utils": "^1.1.0", "postcss": "^6.0.0", - "postcss-load-config": "^1.2.0", + "postcss-load-config": "^2.0.0", "schema-utils": "^0.4.0" } }, @@ -16372,9 +18000,9 @@ "dev": true }, "prettier": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.4.tgz", - "integrity": "sha512-emsEZ2bAigL1lq6ssgkpPm1MIBqgeTvcp90NxOP5XDqprub/V/WS2Hfgih3mS7/1dqTUvhG+sxx1Dv8crnVexA==", + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.7.tgz", + "integrity": "sha512-KIU72UmYPGk4MujZGYMFwinB7lOf2LsDNGSOC8ufevsrPLISrZbNJlWstRi3m0AMuszbH+EFSQ/r6w56RSPK6w==", "dev": true }, "pretty-error": { @@ -16415,22 +18043,10 @@ } }, "pretty-time": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.0.0.tgz", - "integrity": "sha512-+8bAuWoeG7CBA4Yz5NrcN8NyjD86YcrlxquWlYRLgfwxzXtbHXUnPWeXW5jzTsBwaEf89KNM0luWnRXh6l02EA==", - "dev": true, - "requires": { - "is-number": "^5.0.0", - "nanoseconds": "^1.0.0" - }, - "dependencies": { - "is-number": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-5.0.0.tgz", - "integrity": "sha512-LmVHHP5dTJwrwZg2Jjqp7K5jpvcnYvYD1LMpvGadMsMv5+WXoDSLBQ0+zmuBJmuZGh2J2K845ygj/YukxUnr4A==", - "dev": true - } - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "dev": true }, "prismjs": { "version": "1.15.0", @@ -16475,12 +18091,12 @@ "dev": true }, "prompts": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.10.tgz", - "integrity": "sha512-/MPwms6+g/m6fvXZlQyOL4m4ziDim2+Wc6CdWVjp+nVCkzEkK2N4rR74m/bbGf+dkta+/SBpo1FfES8Wgrk/Fw==", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.12.tgz", + "integrity": "sha512-pgR1GE1JM8q8UsHVIgjdK62DPwvrf0kvaKWJ/mfMoCm2lwfIReX/giQ1p0AlMoUXNhQap/8UiOdqi3bOROm/eg==", "dev": true, "requires": { - "clorox": "^1.0.3", + "kleur": "^1.0.0", "sisteransi": "^0.1.1" } }, @@ -16763,6 +18379,52 @@ "prop-types": "^15.6.0" } }, + "react-adopt": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/react-adopt/-/react-adopt-0.6.0.tgz", + "integrity": "sha1-5f+QOmVdMIIhf4K8nVAzpLZPr60=", + "dev": true, + "requires": { + "hoist-non-react-statics": "^2.5.0", + "react": "^16.3.2", + "react-display-name": "^0.2.4" + } + }, + "react-breakpoints": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-breakpoints/-/react-breakpoints-3.0.0.tgz", + "integrity": "sha512-NyFWlbjUpRXZyooKABokMLkpbAZ4YiWPURv7oWqf9uYyH/wow08YlKUMF864IBLHOSrFmRISe0/uiu7SYl7E8A==", + "dev": true, + "requires": { + "create-react-context": "0.2.1", + "hoist-non-react-statics": "2.5.0", + "lodash.debounce": "4.0.8" + }, + "dependencies": { + "create-react-context": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.2.1.tgz", + "integrity": "sha512-dmGgrAJ/nKoQRRcoonkqWWM9uxk6ClzCHUDKZ8zGdc4MxDwvLVG8s/gzIXtWET7lTAoFSXkeCQ113L1p3QSFmw==", + "dev": true, + "requires": { + "fbjs": "^0.8.0", + "gud": "^1.0.0" + } + }, + "hoist-non-react-statics": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz", + "integrity": "sha512-6Bl6XsDT1ntE0lHbIhr4Kp2PGcleGZ66qu5Jqk8lc0Xc/IeG6gVLmwUGs/K0Us+L8VWoKgj0uWdPMataOsm31w==", + "dev": true + } + } + }, + "react-content-loader": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/react-content-loader/-/react-content-loader-3.1.2.tgz", + "integrity": "sha512-9Fv10F6rrzFDIT04aoRsw3dbN6l6onNXbBvCpt4OjXZFGDz/P65laNIujHVTlVjcqErut9d4BL0aplVByyGcJw==", + "dev": true + }, "react-dev-utils": { "version": "6.0.0-next.3e165448", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-6.0.0-next.3e165448.tgz", @@ -16953,6 +18615,12 @@ } } }, + "react-display-name": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/react-display-name/-/react-display-name-0.2.4.tgz", + "integrity": "sha512-zvU6iouW+SWwHTyThwxGICjJYCMZFk/6r/+jmOdC7ntQoPlS/Pqb81MkxaMf2bHTSq9TN3K3zX2/ayMW/jCtyA==", + "dev": true + }, "react-docgen": { "version": "3.0.0-beta9", "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-3.0.0-beta9.tgz", @@ -16969,9 +18637,9 @@ } }, "react-docgen-typescript": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-1.6.1.tgz", - "integrity": "sha512-GNjoMwGfksDcPKnMMJ8LKElV/gWZ478B3cJMDNp3MnZ6Dd49jicpmlVg11/IpuycwWAfCyDiyv2VJNNJ55q5zA==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-1.6.2.tgz", + "integrity": "sha512-H4UmLjzEEhDZEfv9eewaZg5+36Xa3fmaOpYRF2l/DjOdLioaM8LRsMRnpGCTiCUfP9yNKSAqmPfixay8NTMVLg==", "dev": true }, "react-docgen-typescript-loader": { @@ -16997,13 +18665,13 @@ } }, "react-emotion": { - "version": "9.2.4", - "resolved": "https://registry.npmjs.org/react-emotion/-/react-emotion-9.2.4.tgz", - "integrity": "sha1-mOAPcM4spO4TkjRgEj52PkksATo=", + "version": "9.2.5", + "resolved": "https://registry.npmjs.org/react-emotion/-/react-emotion-9.2.5.tgz", + "integrity": "sha1-DkDt8GLX7qJg1DJ6n+JyiOyDg14=", "dev": true, "requires": { - "babel-plugin-emotion": "^9.2.4", - "create-emotion-styled": "^9.2.3" + "babel-plugin-emotion": "^9.2.5", + "create-emotion-styled": "^9.2.5" } }, "react-error-overlay": { @@ -17013,15 +18681,15 @@ "dev": true }, "react-feather": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/react-feather/-/react-feather-1.1.0.tgz", - "integrity": "sha512-JlLSN6NyWWue/ZJ0pYOx0cfMWvIWFHnFkLKxOoM58RpVk2wjkr9GWtMKDx6EbnqyYP1e+JFp1W/eABfvP5rIGQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/react-feather/-/react-feather-1.1.1.tgz", + "integrity": "sha512-bF147qQQfFHki5RSOOhKQ1V7e30tW7xT5zd0x72KfyWi9iErzH1cM5FpqkGz5xylMbBsbzfv/AuwGp95TQwumA==", "dev": true }, "react-final-form": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/react-final-form/-/react-final-form-3.6.2.tgz", - "integrity": "sha512-6gr+xOtOfRvoUwNwjZBSuc9M4p1kgMrGVI31zwPVac5U3k2uzkUOTgP7a54CzRiiRDajmPZVGDF2fQOv23dcsA==", + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/react-final-form/-/react-final-form-3.6.4.tgz", + "integrity": "sha512-7eVR5Qfls4fyL7dXQiUkr55zqM73WTnlPMhi8gm91UzeY6RI3SK9OTBUpQBIKWacMrt1nDs4uRdcvdVBTFJTag==", "dev": true }, "react-hot-loader": { @@ -17057,10 +18725,25 @@ "dev": true }, "react-powerplug": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/react-powerplug/-/react-powerplug-0.1.6.tgz", - "integrity": "sha512-2bBoBaulpNnmXvM4nTQL3KKdsyzcufHI9ebpzoWlFZAplM0gn7Z0cBOcw2H8FFHGI38OMzo8CSpKYJaOJ8e/KA==", - "dev": true + "version": "1.0.0-rc.1", + "resolved": "https://registry.npmjs.org/react-powerplug/-/react-powerplug-1.0.0-rc.1.tgz", + "integrity": "sha512-TqeC/QT0xJ1gAI0SlqorHwzT9QD8z2tI+hQ/FFFiK6wZdRq4iQetYGcbgmcw7mpblOA8lIKwBgpk00Ja4VwncA==", + "dev": true, + "requires": { + "@babel/runtime": "7.0.0-beta.49" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.0.0-beta.49", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0-beta.49.tgz", + "integrity": "sha1-A7O/B+uYIHLI6FHdLd1RECguYb8=", + "dev": true, + "requires": { + "core-js": "^2.5.6", + "regenerator-runtime": "^0.11.1" + } + } + } }, "react-reconciler": { "version": "0.7.0", @@ -17141,30 +18824,13 @@ "warning": "^4.0.1" } }, - "react-spinners": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/react-spinners/-/react-spinners-0.3.2.tgz", - "integrity": "sha512-SZzc99QqKLq85uGWYvkVeHTEPMEpLwnvQOyY62vNqAT9WWdkGJgHKt4H7Z68ALiWYZGKT5oIclh/cdBX20546w==", + "react-router-hash-link": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/react-router-hash-link/-/react-router-hash-link-1.2.0.tgz", + "integrity": "sha1-zoJMxfBQLOmwaGu23ZwIZZskCUw=", "dev": true, "requires": { - "emotion": "^9.1.1", - "prop-types": "^15.5.10", - "react-emotion": "^9.1.1", - "recompose": "0.26.0" - }, - "dependencies": { - "recompose": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/recompose/-/recompose-0.26.0.tgz", - "integrity": "sha512-KwOu6ztO0mN5vy3+zDcc45lgnaUoaQse/a5yLVqtzTK13czSWnFGmXbQVmnoMgDkI5POd1EwIKSbjU1V7xdZog==", - "dev": true, - "requires": { - "change-emitter": "^0.1.2", - "fbjs": "^0.8.1", - "hoist-non-react-statics": "^2.3.1", - "symbol-observable": "^1.0.4" - } - } + "prop-types": "^15.6.0" } }, "react-test-renderer": { @@ -18267,6 +19933,12 @@ "watch": "~0.18.0" } }, + "saslprep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.0.tgz", + "integrity": "sha512-5lvKUEQ7lAN5/vPl5d3k8FQeDbEamu9kizfATfLLWV5h6Mkh1xcieR1FSsJkcSRUk49lF2tAW8gzXWVwtwZVhw==", + "optional": true + }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -18513,12 +20185,13 @@ } }, "sinon": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.1.2.tgz", - "integrity": "sha512-MPa7kfV44XgzlXthSI28QgJUAjNQ2LdafqYFQnwXv1d5bCJXrVyYH7PLFk8PpAFhRN5Tgy8PbJFJbrvDsTss8g==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.1.3.tgz", + "integrity": "sha512-yeTza8xIZZdiXntCHJAzKll/sSYE+DuJOS8hiSapzaLqdW8eCNVVC9je9SZYYTkPm2bLts9x6UYxwuMAVVrM6Q==", "dev": true, "requires": { "@sinonjs/formatio": "^2.0.0", + "@sinonjs/samsam": "^2.0.0", "diff": "^3.5.0", "lodash.get": "^4.4.2", "lolex": "^2.4.2", @@ -18912,9 +20585,9 @@ "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" }, "std-env": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-1.3.0.tgz", - "integrity": "sha512-3uwAVIQQYFiDRBoYuHE/5YnEuOnQjEWvL1ZMKSq+BGFkG2IK9ONFAIYn77h3Kzr3qd0SILi9/5Cu9BbZxaeNnA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-1.3.1.tgz", + "integrity": "sha512-KI2F2pPJpd3lHjng+QLezu0eq+QDtXcv1um016mhOPAJFHKL+09ykK5PUBWta2pZDC8BVV0VPya08A15bUXSLQ==", "dev": true, "requires": { "is-ci": "^1.1.0" @@ -19110,9 +20783,9 @@ } }, "stylis": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.1.tgz", - "integrity": "sha512-yM4PyeHuwhIOUHNJxi1/Mbq8kVLv4AkyE7IYLP/LK0lIFcr3tRa2H1iZlBYKIxOlf+/jruBTe8DdKSyQX9w4OA==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.3.tgz", + "integrity": "sha512-TxU0aAscJghF9I3V9q601xcK3Uw1JbXvpsBGj/HULqexKOKlOEzzlIpLFRbKkCK990ccuxfXUqmPbIIo7Fq/cQ==", "dev": true }, "stylis-rule-sheet": { @@ -19131,16 +20804,13 @@ } }, "subscriptions-transport-ws": { - "version": "0.9.11", - "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.11.tgz", - "integrity": "sha512-B8fwTIJy2buUcBXM6Ffbax30XcEqvCqL8RXwbivBAiB3X9ezrTcF5nYMmNGZ47sxrDYA1XfQ5W3aTgJEm8BFJA==", + "version": "0.9.12", + "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.12.tgz", + "integrity": "sha512-57Ar8hjr/63fCx1kM3kyDr64FAPQITMguuFuTGgYVx2v1JOaPoTeZyTIenVPgv+7mDYt7E+h+Jyxvznb+UKVWw==", "requires": { "backo2": "^1.0.2", "eventemitter3": "^3.1.0", "iterall": "^1.2.1", - "lodash.assign": "^4.2.0", - "lodash.isobject": "^3.0.2", - "lodash.isstring": "^4.0.1", "symbol-observable": "^1.0.4", "ws": "^5.2.0" } @@ -19413,6 +21083,12 @@ "dev": true, "optional": true }, + "titleize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-1.0.1.tgz", + "integrity": "sha512-rUwGDruKq1gX+FFHbTl5qjI7teVO7eOe+C8IcQ7QT+1BK3eEUXJqbZcBOeaRP4FwSC/C1A5jDoIVta0nIQ9yew==", + "dev": true + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -19526,6 +21202,15 @@ "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", "dev": true }, + "touch": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-1.0.0.tgz", + "integrity": "sha1-RJy+LbrlqMgDjjDXH6D/RklHxN4=", + "dev": true, + "requires": { + "nopt": "~1.0.10" + } + }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", @@ -19698,9 +21383,9 @@ } }, "ts-loader": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-4.4.1.tgz", - "integrity": "sha512-PvL6jgVEt4RurczrTOR8uI6uRmKRfRXiv3CyMRX8+MSQLlbedfbXtbJIdkhdpbqrsumb+Lc3qrxfmXHCmODyAg==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-4.4.2.tgz", + "integrity": "sha512-Z3Y1a7A0KZZ1s/mAZkt74l1NAF7Y5xUhD1V9VB8/1eUlUOk8Qa/oo46tO2Uu5kQ3wXypOlbv77lLQySjXEDcdw==", "dev": true, "requires": { "chalk": "^2.3.0", @@ -19711,12 +21396,13 @@ } }, "ts-node": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-6.1.1.tgz", - "integrity": "sha512-79FnymLGDBd/nXoiak1L6w6fd9Zz9Ge/x8/Aglaeh31KkqRLDzbfT1vBGlO5dqc76WzufTlW4IYl7e01CVUF5A==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-6.2.0.tgz", + "integrity": "sha512-ZNT+OEGfUNVMGkpIaDJJ44Zq3Yr0bkU/ugN1PHbU+/01Z7UV1fsELRiTx1KuQNvQ1A3pGh3y25iYF6jXgxV21A==", "dev": true, "requires": { "arrify": "^1.0.0", + "buffer-from": "^1.1.0", "diff": "^3.1.0", "make-error": "^1.1.1", "minimist": "^1.2.0", @@ -19726,9 +21412,9 @@ } }, "tsconfig-paths": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.4.0.tgz", - "integrity": "sha512-HrPwxZj+9zAY/rvaPGwjk/2bOjM9ItfwaHV4wEs+9RdrMJN6Xv3d3y9W/LXt/GhRx3FutAlTMz5Ztb4copBmLw==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.4.2.tgz", + "integrity": "sha512-2BzUwQG7iUES+xNkRXivgejCpH9ru7n/khgv9Gl0FxP0tYvlPIMp2NspeYOXg8Wjh08Yyo/sSTlo4slNO3IFLg==", "dev": true, "requires": { "deepmerge": "^2.0.1", @@ -20071,9 +21757,9 @@ "dev": true }, "typescript": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.1.tgz", - "integrity": "sha512-h6pM2f/GDchCFlldnriOhs1QHuwbnmj6/v7499eMHqPeW4V2G0elua2eIc2nu8v2NdHV0Gm+tzX83Hr6nUFjQA==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", + "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==", "dev": true }, "ua-parser-js": { @@ -20469,43 +22155,6 @@ "latest-version": "^3.0.0", "semver-diff": "^2.0.0", "xdg-basedir": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "upper-case": { @@ -20548,9 +22197,9 @@ } }, "url-join": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-3.0.0.tgz", - "integrity": "sha1-JugROs4ZXqMND8OBhuRUAPnOpnI=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", "dev": true }, "url-loader": { @@ -20637,9 +22286,9 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" }, "v8-compile-cache": { "version": "2.0.0", @@ -21081,9 +22730,9 @@ } }, "webpack-hot-client": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/webpack-hot-client/-/webpack-hot-client-4.0.3.tgz", - "integrity": "sha512-NbBzN6BkVDMhYKX2Hc6FLbC28oeh6suLgK614n0MsvALJlkSqMBGTh5fw8ms9Euvkm/+VB2XnlaYs391RLGVow==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/webpack-hot-client/-/webpack-hot-client-4.1.1.tgz", + "integrity": "sha512-Gu3hEkFJIsvC+2Dg86FvAzIL8KSR88Ptk0QnV4wEucObB0c9aMIYbjSA9oPTV4X5OZRH6ftrk4FcSGsZmTLiWA==", "dev": true, "requires": { "@webpack-contrib/schema-utils": "^1.0.0-beta.0", @@ -21171,34 +22820,41 @@ } }, "webpack-serve": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/webpack-serve/-/webpack-serve-1.0.4.tgz", - "integrity": "sha512-WhI9PMY2YLFliZhDsQFE5Os/On5Py6DGZpeBJyDM8xl0cspxgvXmWFywACn2YWWDgowqIxRqveyGh2RwdFWTNQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/webpack-serve/-/webpack-serve-2.0.2.tgz", + "integrity": "sha512-KQra2vayPKE2gooZRr2jF0Cs9AcQrS60Dmc6gMlFn4DmPkk/EmCuCODiAw008XedjwMBt8kUapDXJVu4gDH9Mg==", "dev": true, "requires": { "@shellscape/koa-static": "^4.0.4", + "@webpack-contrib/cli-utils": "^1.0.2", "@webpack-contrib/config-loader": "^1.1.1", + "@webpack-contrib/schema-utils": "^1.0.0-beta.0", "chalk": "^2.3.0", "clipboardy": "^1.2.2", "cosmiconfig": "^5.0.2", "debug": "^3.1.0", - "find-up": "^2.1.0", + "decamelize": "^2.0.0", "get-port": "^3.2.0", "import-local": "^1.0.0", + "is-plain-obj": "^1.1.0", "killable": "^1.0.0", "koa": "^2.4.1", - "koa-webpack": "^4.0.0", - "lodash": "^4.17.5", + "koa-webpack": "^5.1.0", "loud-rejection": "^1.6.0", + "mem": "^3.0.0", "meow": "^5.0.0", + "merge-options": "^1.0.1", "nanobus": "^4.3.1", + "node-version": "^1.1.3", "opn": "^5.1.0", + "p-defer": "^1.0.0", + "p-series": "^1.1.0", "resolve": "^1.6.0", + "strip-ansi": "^4.0.0", "time-fix-plugin": "^2.0.0", "update-notifier": "^2.3.0", - "url-join": "3.0.0", + "url-join": "^4.0.0", "v8-compile-cache": "^2.0.0", - "webpack-hot-client": "^3.0.0", "webpack-log": "^1.1.2" }, "dependencies": { @@ -21228,6 +22884,25 @@ "ms": "2.0.0" } }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, + "mem": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mem/-/mem-3.0.1.tgz", + "integrity": "sha512-QKs47bslvOE0NbXOqG6lMxn6Bk0Iuw0vfrIeLykmQle2LkCw1p48dZDdzE+D88b/xqRJcZGcMNeDvSVma+NuIQ==", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0", + "p-is-promise": "^1.1.0" + } + }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -21246,33 +22921,18 @@ "requires": { "ansi-regex": "^3.0.0" } - }, - "webpack-hot-client": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/webpack-hot-client/-/webpack-hot-client-3.0.0.tgz", - "integrity": "sha512-6k91015hZ4Okkz8u6OzRgJygEL+3J3ay6HVZhWBF3tT2P0rZJ0mgca39dotJxngggUm3S8707c0vrcynn1IzEQ==", - "dev": true, - "requires": { - "json-stringify-safe": "^5.0.1", - "loglevelnext": "^1.0.2", - "strip-ansi": "^4.0.0", - "uuid": "^3.1.0", - "webpack-log": "^1.1.1", - "ws": "^4.0.0" - } - }, - "ws": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", - "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0" - } } } }, + "webpack-serve-waitpage": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/webpack-serve-waitpage/-/webpack-serve-waitpage-1.0.0.tgz", + "integrity": "sha512-KWkHQIqowGaMkbzld3mMbR0LMLBGCmlpk8gBQhhv3VAmpRD+to2/wkOBsKIMR8IedFVcwdGev2k/lruSmV4aWA==", + "dev": true, + "requires": { + "ejs": "^2.6.1" + } + }, "webpack-sources": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", @@ -21546,6 +23206,12 @@ "camelcase": "^4.1.0" } }, + "ylru": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.2.1.tgz", + "integrity": "sha512-faQrqNMzcPCHGVC2aaOINk13K+aaBDUPjGWl0teOXywElLjyVAB6Oe2jj62jHYtwsU49jXhScYbvPENK+6zAvQ==", + "dev": true + }, "yn": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", diff --git a/package.json b/package.json index 8f4702133..be16f0846 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "dependencies": { "apollo-server-express": "^1.3.6", "bunyan": "^1.8.12", - "convict": "^4.3.0", + "convict": "^4.3.1", "dataloader": "^1.4.0", "dotenv": "^6.0.0", "dotenv-expand": "^4.2.0", @@ -37,21 +37,21 @@ "graphql": "^0.13.2", "graphql-config": "^2.0.1", "graphql-redis-subscriptions": "^1.5.0", - "graphql-tools": "^3.0.2", + "graphql-tools": "^3.0.5", "ioredis": "^3.2.2", "joi": "^13.4.0", "lodash": "^4.17.10", - "luxon": "^1.2.1", - "mongodb": "^3.0.10", + "luxon": "^1.3.1", + "mongodb": "^3.1.1", "passport": "^0.4.0", "performance-now": "^2.1.0", - "subscriptions-transport-ws": "^0.9.11", - "uuid": "^3.2.1" + "subscriptions-transport-ws": "^0.9.12", + "uuid": "^3.3.2" }, "devDependencies": { "@babel/core": "7.0.0-beta.49", "@babel/plugin-syntax-dynamic-import": "7.0.0-beta.49", - "@babel/plugin-transform-modules-commonjs": "^7.0.0-beta.52", + "@babel/plugin-transform-modules-commonjs": "^7.0.0-beta.53", "@babel/polyfill": "7.0.0-beta.49", "@babel/preset-env": "7.0.0-beta.49", "@babel/preset-react": "7.0.0-beta.49", @@ -65,15 +65,15 @@ "@types/enzyme": "^3.1.11", "@types/enzyme-adapter-react-16": "^1.0.2", "@types/express": "^4.16.0", - "@types/graphql": "^0.13.1", - "@types/ioredis": "^3.2.8", - "@types/jest": "^23.1.1", + "@types/graphql": "^0.13.3", + "@types/ioredis": "^3.2.12", + "@types/jest": "^23.1.5", "@types/joi": "^13.0.8", "@types/jsdom": "^11.0.6", - "@types/lodash": "^4.14.109", + "@types/lodash": "^4.14.111", "@types/luxon": "^0.5.3", - "@types/mongodb": "^3.0.19", - "@types/node": "^10.3.1", + "@types/mongodb": "^3.1.1", + "@types/node": "^10.5.2", "@types/passport": "^0.4.5", "@types/query-string": "^6.1.0", "@types/react-dom": "^16.0.6", @@ -86,7 +86,7 @@ "@types/sinon": "^5.0.1", "@types/uuid": "^3.4.3", "@types/ws": "^5.1.2", - "autoprefixer": "^8.6.0", + "autoprefixer": "^8.6.5", "babel-core": "^7.0.0-bridge.0", "babel-loader": "^8.0.0-beta", "babel-plugin-relay": "github:coralproject/patched#babel-plugin-relay", @@ -99,21 +99,20 @@ "copy-webpack-plugin": "^4.5.1", "cross-spawn": "^6.0.5", "css-loader": "^0.28.11", - "docz": "^0.2.6", - "docz-theme-default": "^0.2.10", + "docz": "^0.5.8", "enzyme": "^3.3.0", "enzyme-adapter-react-16": "^1.1.1", "enzyme-to-json": "^3.3.4", "extract-text-webpack-plugin": "^4.0.0-beta.0", "final-form": "^4.8.1", - "flat": "^4.0.0", + "flat": "^4.1.0", "fluent": "^0.6.4", "fluent-intl-polyfill": "^0.1.0", "fluent-langneg": "^0.1.0", "fluent-react": "^0.7.0", - "graphql-playground-middleware-express": "^1.7.0", + "graphql-playground-middleware-express": "^1.7.2", "html-webpack-plugin": "^3.2.0", - "jest": "^23.3.0", + "jest": "^23.4.1", "jsdom": "^11.11.0", "loader-utils": "^1.1.0", "npm-run-all": "^4.1.3", @@ -122,18 +121,18 @@ "postcss-flexbugs-fixes": "^3.3.1", "postcss-font-magician": "^2.2.1", "postcss-import": "^11.1.0", - "postcss-loader": "^2.1.5", + "postcss-loader": "^2.1.6", "postcss-nested": "^3.0.0", "postcss-prepend-imports": "^1.0.1", "postcss-preset-env": "^5.2.1", - "prettier": "^1.13.4", + "prettier": "^1.13.7", "pstree.remy": "^1.1.0", "query-string": "^6.1.0", "raw-loader": "^0.5.1", "react": "^16.4.0", "react-dev-utils": "6.0.0-next.3e165448", "react-dom": "^16.4.0", - "react-final-form": "^3.6.0", + "react-final-form": "^3.6.4", "react-relay": "github:coralproject/patched#react-relay", "react-responsive": "^4.1.0", "react-test-renderer": "^16.4.1", @@ -144,12 +143,12 @@ "relay-runtime": "github:coralproject/patched#relay-runtime", "relay-test-utils": "github:coralproject/patched#relay-test-utils", "sane": "^2.5.2", - "sinon": "^6.1.2", + "sinon": "^6.1.3", "style-loader": "^0.21.0", "ts-jest": "^23.0.0", - "ts-loader": "^4.3.1", - "ts-node": "^6.1.0", - "tsconfig-paths": "^3.4.0", + "ts-loader": "^4.4.2", + "ts-node": "^6.2.0", + "tsconfig-paths": "^3.4.2", "tsconfig-paths-webpack-plugin": "^3.1.4", "tslint": "^5.10.0", "tslint-config-prettier": "^1.13.0", @@ -157,12 +156,12 @@ "tslint-plugin-prettier": "^1.3.0", "tslint-react": "^3.6.0", "typed-css-modules": "^0.3.4", - "typescript": "^2.9.1", + "typescript": "^2.9.2", "uglifyjs-webpack-plugin": "^1.2.5", "webpack": "4.12.0", "webpack-cli": "^3.0.2", "webpack-dev-server": "^3.1.4", - "webpack-hot-client": "^4.0.3", + "webpack-hot-client": "^4.1.1", "webpack-manifest-plugin": "^2.0.3" } } From 27334c7bd1868fd58ace3f31d2e69d8808fec77b Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Fri, 13 Jul 2018 16:07:51 -0300 Subject: [PATCH 08/14] Apply suggestions --- scripts/watcher/LongRunningExecutor.ts | 4 ++-- scripts/watcher/{ => types}/pstree.remy.d.ts | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename scripts/watcher/{ => types}/pstree.remy.d.ts (100%) diff --git a/scripts/watcher/LongRunningExecutor.ts b/scripts/watcher/LongRunningExecutor.ts index c1c1b4ff8..9abeedbc5 100644 --- a/scripts/watcher/LongRunningExecutor.ts +++ b/scripts/watcher/LongRunningExecutor.ts @@ -50,12 +50,12 @@ export default class LongRunningExecutor implements Executor { }); } - private async restart(): Promise { + private restart() { this.shouldRestart = true; return this.internalKill(); } - private async kill(): Promise { + private kill() { this.shouldRestart = false; return this.internalKill(); } diff --git a/scripts/watcher/pstree.remy.d.ts b/scripts/watcher/types/pstree.remy.d.ts similarity index 100% rename from scripts/watcher/pstree.remy.d.ts rename to scripts/watcher/types/pstree.remy.d.ts From b1a7cdb78f3731ca29f876dd7f486a61d9ff9783 Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Fri, 13 Jul 2018 16:21:31 -0300 Subject: [PATCH 09/14] Add jest set --- config/watcher.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/config/watcher.ts b/config/watcher.ts index 871b5ca73..9b555d335 100644 --- a/config/watcher.ts +++ b/config/watcher.ts @@ -59,6 +59,7 @@ const config: Config = { "compileRelayStream", ], docz: ["runDocz", "compileCSSTypes"], + jest: ["runJest", "compileCSSTypes", "compileRelayStream"], }, }; From b6305bec16ada3769fe3b2a14bc96abee3247147 Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Fri, 13 Jul 2018 16:23:36 -0300 Subject: [PATCH 10/14] Remove jest from watcher config, as it doesnt run well inside --- config/watcher.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/config/watcher.ts b/config/watcher.ts index 9b555d335..f974e4283 100644 --- a/config/watcher.ts +++ b/config/watcher.ts @@ -44,10 +44,6 @@ const config: Config = { paths: [], executor: new LongRunningExecutor("npm run docz -- dev"), }, - runJest: { - paths: [], - executor: new LongRunningExecutor("npm run test"), - }, }, defaultSet: "client", sets: { @@ -59,7 +55,7 @@ const config: Config = { "compileRelayStream", ], docz: ["runDocz", "compileCSSTypes"], - jest: ["runJest", "compileCSSTypes", "compileRelayStream"], + compile: ["compileCSSTypes", "compileRelayStream"], }, }; From 34ddd2ea0b1b3d50e69b400ce7a0d32101fc1de5 Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Fri, 13 Jul 2018 16:33:00 -0600 Subject: [PATCH 11/14] fix: new mongo parser --- src/core/server/config.ts | 4 ++-- src/core/server/services/mongodb/index.ts | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/core/server/config.ts b/src/core/server/config.ts index fd200db91..f82bb46b8 100644 --- a/src/core/server/config.ts +++ b/src/core/server/config.ts @@ -49,14 +49,14 @@ const config = convict({ mongodb: { doc: "The MongoDB database to connect to.", format: "mongo-uri", - default: "mongodb://localhost/talk", + default: "mongodb://127.0.0.1:27017/talk", env: "MONGODB", arg: "mongodb", }, redis: { doc: "The Redis database to connect to.", format: "redis-uri", - default: "redis://localhost:6379", + default: "redis://127.0.0.1:6379", env: "REDIS", arg: "redis", }, diff --git a/src/core/server/services/mongodb/index.ts b/src/core/server/services/mongodb/index.ts index efaf8bcba..03f4d21a6 100644 --- a/src/core/server/services/mongodb/index.ts +++ b/src/core/server/services/mongodb/index.ts @@ -8,7 +8,10 @@ import { Config } from "talk-server/config"; */ export async function createMongoDB(config: Config): Promise { // Connect and create a client for MongoDB. - const client = await MongoClient.connect(config.get("mongodb")); + const client = await MongoClient.connect( + config.get("mongodb"), + { useNewUrlParser: true } + ); // Return the database handle, which defaults to the database name provided // in the config connection string. From 70ccd646ff9b941bc7c1db3a8a3573e47b044a84 Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Fri, 13 Jul 2018 19:39:15 -0300 Subject: [PATCH 12/14] Short circuit endless respawn --- package-lock.json | 14 ++++++++++---- scripts/watcher/LongRunningExecutor.ts | 1 + 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 237609b19..1419c66a5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9174,7 +9174,8 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", @@ -9185,7 +9186,8 @@ "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -9302,7 +9304,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -9314,6 +9317,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -9440,7 +9444,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -9573,6 +9578,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", diff --git a/scripts/watcher/LongRunningExecutor.ts b/scripts/watcher/LongRunningExecutor.ts index 9abeedbc5..7ed758ba6 100644 --- a/scripts/watcher/LongRunningExecutor.ts +++ b/scripts/watcher/LongRunningExecutor.ts @@ -45,6 +45,7 @@ export default class LongRunningExecutor implements Executor { return; } if (this.shouldRestart) { + this.shouldRestart = false; this.spawnProcess(); } }); From 1cd4d537afb196dc06e32331e7d650e8ad09704d Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Fri, 13 Jul 2018 19:46:12 -0300 Subject: [PATCH 13/14] Colors --- scripts/watcher/watch.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/scripts/watcher/watch.ts b/scripts/watcher/watch.ts index 8302126f9..63ed48fd4 100644 --- a/scripts/watcher/watch.ts +++ b/scripts/watcher/watch.ts @@ -1,3 +1,4 @@ +import chalk from "chalk"; import Joi from "joi"; import { pickBy } from "lodash"; @@ -21,7 +22,7 @@ async function beginWatch( } for await (const filePath of watcher.watch(rootDir, paths, { ignore })) { // tslint:disable-next-line:no-console - console.log(`Execute "${key}"`); + console.log(chalk.cyanBright(`Execute "${key}"`)); executor.execute(filePath); } } @@ -72,7 +73,7 @@ function filterOnly( return pickBy(watchers, (value, key) => { if (resolved.indexOf(key) === -1) { // tslint:disable-next-line:no-console - console.log(`Disabled watcher "${key}"`); + console.log(chalk.grey(`Disabled watcher "${key}"`)); return false; } return true; @@ -98,7 +99,7 @@ export default async function watch(config: Config, options: Options = {}) { for (const key of Object.keys(watchersConfigs)) { // tslint:disable-next-line:no-console - console.log(`Start watcher "${key}"`); + console.log(chalk.cyanBright(`Start watcher "${key}"`)); const watcherConfig = watchersConfigs[key]; beginWatch(watcher, key, watcherConfig, rootDir); } From 5f756056b112081e4a3f70289d26e4b31d21d581 Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Fri, 13 Jul 2018 19:49:39 -0300 Subject: [PATCH 14/14] More colors --- scripts/watcher/CommandExecutor.ts | 5 +++-- scripts/watcher/LongRunningExecutor.ts | 3 ++- scripts/watcher/SaneWatcher.ts | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/scripts/watcher/CommandExecutor.ts b/scripts/watcher/CommandExecutor.ts index fddba0b8b..195fcdcff 100644 --- a/scripts/watcher/CommandExecutor.ts +++ b/scripts/watcher/CommandExecutor.ts @@ -1,3 +1,4 @@ +import chalk from "chalk"; import spawn from "cross-spawn"; import { Cancelable, debounce } from "lodash"; @@ -65,9 +66,9 @@ export default class CommandExecutor implements Executor { child.on("close", (code: number) => { this.isRunning = false; - if (code !== 0) { + if (code !== 0 && code !== null) { // tslint:disable-next-line: no-console - console.log(`We had an error building ${code}`); + console.log(chalk.red(`Command exited with ${code}`)); } if (this.shouldRespawn) { this.spawnProcessPotentiallyDebounced(); diff --git a/scripts/watcher/LongRunningExecutor.ts b/scripts/watcher/LongRunningExecutor.ts index 7ed758ba6..358821b46 100644 --- a/scripts/watcher/LongRunningExecutor.ts +++ b/scripts/watcher/LongRunningExecutor.ts @@ -1,3 +1,4 @@ +import chalk from "chalk"; import { ChildProcess } from "child_process"; import spawn from "cross-spawn"; import { Cancelable, debounce } from "lodash"; @@ -41,7 +42,7 @@ export default class LongRunningExecutor implements Executor { if (code !== 0 && code !== null) { // tslint:disable-next-line: no-console - console.error(`Exit code returned ${code}`); + console.log(chalk.red(`Command exited with ${code}`)); return; } if (this.shouldRestart) { diff --git a/scripts/watcher/SaneWatcher.ts b/scripts/watcher/SaneWatcher.ts index 5c729ae93..1b2cbf098 100644 --- a/scripts/watcher/SaneWatcher.ts +++ b/scripts/watcher/SaneWatcher.ts @@ -1,3 +1,4 @@ +import chalk from "chalk"; import { execSync } from "child_process"; import sane from "sane"; @@ -34,7 +35,7 @@ export default class SaneWatcher implements Watcher { if (this.watchman === undefined && canUseWatchman()) { this.watchman = true; // tslint:disable-next-line:no-console - console.log("Watchman detected"); + console.log(chalk.grey(`Watchman detected`)); } }