diff --git a/.eslintignore b/.eslintignore index 8e11b85b..85364805 100644 --- a/.eslintignore +++ b/.eslintignore @@ -2,6 +2,8 @@ CHANGELOG.md *.d.ts recipes +koa-better-body + *.tsbuildinfo .cache .*cache diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..d3b6dd7b --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,2 @@ +module.exports = require('@tunnckocore/eslint-config'); + diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 00000000..04529ac6 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,2 @@ +module.exports = require('@tunnckocore/prettier-config'); + diff --git a/.rolluprc.js b/.rolluprc.js new file mode 100644 index 00000000..bcc35799 --- /dev/null +++ b/.rolluprc.js @@ -0,0 +1,91 @@ +/* eslint-disable import/no-extraneous-dependencies */ +const builtins = require('builtin-modules'); +const nodeResolve = require('rollup-plugin-node-resolve'); +const commonjs = require('rollup-plugin-commonjs'); + +const fs = require('fs'); +const path = require('path'); + +const tunnckocoreInterop = `const ___exportsWithoutDefault = Object.keys(exports) + .filter((x) => x !== 'default') + .reduce((acc, key) => { + acc[key] = exports[key]; + return acc; + }, {}); + +module.exports = Object.assign(exports.default, ___exportsWithoutDefault); +`; + +module.exports = { + pkgHook: ({ pkgRoot, output }) => { + const { + name, + version, + description, + license, + author, + engines, + keywords, + repository, + dependencies, + peerDependencies, + } = JSON.parse(fs.readFileSync(path.join(pkgRoot, 'package.json'), 'utf8')); + + const pkg = { + name, + version, + description, + license, + author, + engines, + keywords, + repository, + dependencies, + peerDependencies, + files: output.map(({ format }) => format), + main: output.find(({ format }) => format === 'cjs').file, + module: output.find(({ format }) => format === 'esm').file, + typings: 'dist/types/index.d.ts', + }; + + const pkgJson = Object.keys(pkg).reduce((acc, key) => { + if (pkg[key]) { + acc[key] = pkg[key]; + } + return acc; + }, {}); + + fs.writeFileSync( + path.join(pkgRoot, 'dist', 'package.json'), + JSON.stringify(pkgJson, null, 2), + ); + }, + + external: builtins, + inlineDynamicImports: true, + experimentalTopLevelAwait: true, + plugins: [ + nodeResolve({ + preferBuiltins: true, + mainFields: ['module', 'main'], + }), + commonjs({ + // extensions, + }), + ], + output: [ + { + exports: 'named', + outro: tunnckocoreInterop, + esModule: false, + preferConst: true, + format: 'cjs', + // file: 'builds/index.cjs.js', + }, + { + preferConst: true, + format: 'esm', + // file: 'builds/index.esm.js', + }, + ], +}; diff --git a/@tunnckocore/create-jest-runner/build/cjs/index.js b/@tunnckocore/create-jest-runner/build/cjs/index.js deleted file mode 100644 index 70150ae7..00000000 --- a/@tunnckocore/create-jest-runner/build/cjs/index.js +++ /dev/null @@ -1,279 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - -var throat = _interopDefault(require('throat')); -var Worker = _interopDefault(require('jest-worker')); - -/* eslint-disable promise/prefer-await-to-callbacks */ - -class CancelRunError extends Error { - constructor(message) { - super(message); - this.name = 'CancelRunError'; - } -} - -const createRunner = (runPath, { getExtraOptions } = {}) => { - class BaseTestRunner { - constructor(globalConfig) { - this._globalConfig = globalConfig; - } - - runTests(tests, watcher, onStart, onResult, onFailure, options) { - return options.serial - ? this._createInBandTestRun( - tests, - watcher, - onStart, - onResult, - onFailure, - options, - ) - : this._createParallelTestRun( - tests, - watcher, - onStart, - onResult, - onFailure, - options, - ); - } - - _createInBandTestRun( - tests, - watcher, - onStart, - onResult, - onFailure, - options, - ) { - const mutex = throat(1); - return tests.reduce( - (promise, test) => - mutex(() => - promise - .then(() => { - if (watcher.isInterrupted()) { - throw new CancelRunError(); - } - - return onStart(test).then(() => { - // eslint-disable-next-line import/no-dynamic-require, global-require - const runner = require(runPath); - const baseOptions = { - config: test.context.config, - globalConfig: this._globalConfig, - testPath: test.path, - rawModuleMap: watcher.isWatchMode() - ? test.context.moduleMap.getRawModuleMap() - : null, - options, - extraOptions: getExtraOptions ? getExtraOptions() : {}, - }; - - if (typeof runner.default === 'function') { - return runner.default(baseOptions); - } - - return runner(baseOptions); - }); - }) - .then((result) => onResult(test, result)) - .catch((err) => onFailure(test, err)), - ), - Promise.resolve(), - ); - } - - _createParallelTestRun( - tests, - watcher, - onStart, - onResult, - onFailure, - options, - ) { - const worker = new Worker(runPath, { - exposedMethods: ['default'], - numWorkers: this._globalConfig.maxWorkers, - forkOptions: { stdio: 'inherit' }, - }); - - const mutex = throat(this._globalConfig.maxWorkers); - - const runTestInWorker = (test) => - mutex(() => { - if (watcher.isInterrupted()) { - throw new CancelRunError(); - } - - return onStart(test).then(() => { - const baseOptions = { - config: test.context.config, - globalConfig: this._globalConfig, - testPath: test.path, - rawModuleMap: watcher.isWatchMode() - ? test.context.moduleMap.getRawModuleMap() - : null, - options, - extraOptions: getExtraOptions ? getExtraOptions() : {}, - }; - - return worker.default(baseOptions); - }); - }); - - const onError = (err, test) => - onFailure(test, err).then(() => { - if (err.type === 'ProcessTerminatedError') { - // eslint-disable-next-line no-console - console.error( - 'A worker process has quit unexpectedly! ' + - 'Most likely this is an initialization error.', - ); - // eslint-disable-next-line unicorn/no-process-exit - process.exit(1); - } - }); - - const onInterrupt = new Promise((resolve, reject) => { - watcher.on('change', (state) => { - if (state.interrupted) { - reject(new CancelRunError()); - } - }); - }); - - const runAllTests = Promise.all( - tests.map((test) => - runTestInWorker(test) - .then((testResult) => { - if (Array.isArray(testResult)) { - testResult.forEach((result) => - result.errorMessage && result.stats.failures > 0 - ? onError(new Error(result.errorMessage), test) - : onResult(test, result), - ); - return; - } - onResult(test, testResult); - }) - .catch((err) => onError(err, test)), - ), - ); - - const cleanup = () => worker.end(); - - return Promise.race([runAllTests, onInterrupt]).then(cleanup, cleanup); - } - } - - return BaseTestRunner; -}; - -const toTestResult = ({ - stats, - skipped, - errorMessage, - tests, - jestTestPath, -}) => ({ - console: null, - failureMessage: errorMessage, - numFailingTests: stats.failures, - numPassingTests: stats.passes, - numPendingTests: stats.pending, - numTodoTests: stats.todo, - perfStats: { - end: new Date(stats.end).getTime(), - start: new Date(stats.start).getTime(), - }, - skipped, - snapshot: { - added: 0, - fileDeleted: false, - matched: 0, - unchecked: 0, - unmatched: 0, - updated: 0, - }, - sourceMaps: {}, - testExecError: null, - testFilePath: jestTestPath, - testResults: tests.map((test) => ({ - ancestorTitles: [], - duration: test.duration, - failureMessages: [test.errorMessage], - fullName: test.testPath, - numPassingAsserts: test.errorMessage ? 1 : 0, - status: test.errorMessage ? 'failed' : 'passed', - title: test.title || '', - })), -}); - -const fail = ({ start, end, test, errorMessage }) => - toTestResult({ - errorMessage: errorMessage || test.errorMessage, - stats: { - failures: 1, - pending: 0, - passes: 0, - todo: 0, - start, - end, - }, - tests: [{ duration: end - start, ...test }], - jestTestPath: test.path, - }); - -const pass = ({ start, end, test }) => - toTestResult({ - stats: { - failures: 0, - pending: 0, - passes: 1, - todo: 0, - start, - end, - }, - tests: [{ duration: end - start, ...test }], - jestTestPath: test.path, - }); - -const skip = ({ start, end, test }) => - toTestResult({ - stats: { - failures: 0, - pending: 1, - passes: 0, - todo: 0, - start, - end, - }, - skipped: true, - tests: [{ duration: end - start, ...test }], - jestTestPath: test.path, - }); - -const todo = ({ start, end, test }) => - toTestResult({ - stats: { - failures: 0, - pending: 0, - passes: 0, - todo: 1, - start, - end, - }, - tests: [{ duration: end - start, ...test }], - jestTestPath: test.path, - }); - -exports.createJestRunner = createRunner; -exports.fail = fail; -exports.pass = pass; -exports.skip = skip; -exports.todo = todo; diff --git a/@tunnckocore/create-jest-runner/build/esm/index.js b/@tunnckocore/create-jest-runner/build/esm/index.js deleted file mode 100644 index cb53164a..00000000 --- a/@tunnckocore/create-jest-runner/build/esm/index.js +++ /dev/null @@ -1,269 +0,0 @@ -import throat from 'throat'; -import Worker from 'jest-worker'; - -/* eslint-disable promise/prefer-await-to-callbacks */ - -class CancelRunError extends Error { - constructor(message) { - super(message); - this.name = 'CancelRunError'; - } -} - -const createRunner = (runPath, { getExtraOptions } = {}) => { - class BaseTestRunner { - constructor(globalConfig) { - this._globalConfig = globalConfig; - } - - runTests(tests, watcher, onStart, onResult, onFailure, options) { - return options.serial - ? this._createInBandTestRun( - tests, - watcher, - onStart, - onResult, - onFailure, - options, - ) - : this._createParallelTestRun( - tests, - watcher, - onStart, - onResult, - onFailure, - options, - ); - } - - _createInBandTestRun( - tests, - watcher, - onStart, - onResult, - onFailure, - options, - ) { - const mutex = throat(1); - return tests.reduce( - (promise, test) => - mutex(() => - promise - .then(() => { - if (watcher.isInterrupted()) { - throw new CancelRunError(); - } - - return onStart(test).then(() => { - // eslint-disable-next-line import/no-dynamic-require, global-require - const runner = require(runPath); - const baseOptions = { - config: test.context.config, - globalConfig: this._globalConfig, - testPath: test.path, - rawModuleMap: watcher.isWatchMode() - ? test.context.moduleMap.getRawModuleMap() - : null, - options, - extraOptions: getExtraOptions ? getExtraOptions() : {}, - }; - - if (typeof runner.default === 'function') { - return runner.default(baseOptions); - } - - return runner(baseOptions); - }); - }) - .then((result) => onResult(test, result)) - .catch((err) => onFailure(test, err)), - ), - Promise.resolve(), - ); - } - - _createParallelTestRun( - tests, - watcher, - onStart, - onResult, - onFailure, - options, - ) { - const worker = new Worker(runPath, { - exposedMethods: ['default'], - numWorkers: this._globalConfig.maxWorkers, - forkOptions: { stdio: 'inherit' }, - }); - - const mutex = throat(this._globalConfig.maxWorkers); - - const runTestInWorker = (test) => - mutex(() => { - if (watcher.isInterrupted()) { - throw new CancelRunError(); - } - - return onStart(test).then(() => { - const baseOptions = { - config: test.context.config, - globalConfig: this._globalConfig, - testPath: test.path, - rawModuleMap: watcher.isWatchMode() - ? test.context.moduleMap.getRawModuleMap() - : null, - options, - extraOptions: getExtraOptions ? getExtraOptions() : {}, - }; - - return worker.default(baseOptions); - }); - }); - - const onError = (err, test) => - onFailure(test, err).then(() => { - if (err.type === 'ProcessTerminatedError') { - // eslint-disable-next-line no-console - console.error( - 'A worker process has quit unexpectedly! ' + - 'Most likely this is an initialization error.', - ); - // eslint-disable-next-line unicorn/no-process-exit - process.exit(1); - } - }); - - const onInterrupt = new Promise((resolve, reject) => { - watcher.on('change', (state) => { - if (state.interrupted) { - reject(new CancelRunError()); - } - }); - }); - - const runAllTests = Promise.all( - tests.map((test) => - runTestInWorker(test) - .then((testResult) => { - if (Array.isArray(testResult)) { - testResult.forEach((result) => - result.errorMessage && result.stats.failures > 0 - ? onError(new Error(result.errorMessage), test) - : onResult(test, result), - ); - return; - } - onResult(test, testResult); - }) - .catch((err) => onError(err, test)), - ), - ); - - const cleanup = () => worker.end(); - - return Promise.race([runAllTests, onInterrupt]).then(cleanup, cleanup); - } - } - - return BaseTestRunner; -}; - -const toTestResult = ({ - stats, - skipped, - errorMessage, - tests, - jestTestPath, -}) => ({ - console: null, - failureMessage: errorMessage, - numFailingTests: stats.failures, - numPassingTests: stats.passes, - numPendingTests: stats.pending, - numTodoTests: stats.todo, - perfStats: { - end: new Date(stats.end).getTime(), - start: new Date(stats.start).getTime(), - }, - skipped, - snapshot: { - added: 0, - fileDeleted: false, - matched: 0, - unchecked: 0, - unmatched: 0, - updated: 0, - }, - sourceMaps: {}, - testExecError: null, - testFilePath: jestTestPath, - testResults: tests.map((test) => ({ - ancestorTitles: [], - duration: test.duration, - failureMessages: [test.errorMessage], - fullName: test.testPath, - numPassingAsserts: test.errorMessage ? 1 : 0, - status: test.errorMessage ? 'failed' : 'passed', - title: test.title || '', - })), -}); - -const fail = ({ start, end, test, errorMessage }) => - toTestResult({ - errorMessage: errorMessage || test.errorMessage, - stats: { - failures: 1, - pending: 0, - passes: 0, - todo: 0, - start, - end, - }, - tests: [{ duration: end - start, ...test }], - jestTestPath: test.path, - }); - -const pass = ({ start, end, test }) => - toTestResult({ - stats: { - failures: 0, - pending: 0, - passes: 1, - todo: 0, - start, - end, - }, - tests: [{ duration: end - start, ...test }], - jestTestPath: test.path, - }); - -const skip = ({ start, end, test }) => - toTestResult({ - stats: { - failures: 0, - pending: 1, - passes: 0, - todo: 0, - start, - end, - }, - skipped: true, - tests: [{ duration: end - start, ...test }], - jestTestPath: test.path, - }); - -const todo = ({ start, end, test }) => - toTestResult({ - stats: { - failures: 0, - pending: 0, - passes: 0, - todo: 1, - start, - end, - }, - tests: [{ duration: end - start, ...test }], - jestTestPath: test.path, - }); - -export { createRunner as createJestRunner, fail, pass, skip, todo }; diff --git a/@tunnckocore/create-jest-runner/src/createJestRunner.js b/@tunnckocore/create-jest-runner/src/createJestRunner.js index 00fb37eb..146e2cb0 100644 --- a/@tunnckocore/create-jest-runner/src/createJestRunner.js +++ b/@tunnckocore/create-jest-runner/src/createJestRunner.js @@ -5,7 +5,6 @@ /* eslint-disable max-classes-per-file */ import throat from 'throat'; import Worker from 'jest-worker'; -import Debug from 'debug'; class CancelRunError extends Error { constructor(message) { @@ -14,8 +13,6 @@ class CancelRunError extends Error { } } -const debug = Debug('rollup-runner'); - const createRunner = (runPath, { getExtraOptions } = {}) => { class BaseTestRunner { constructor(globalConfig) { @@ -152,18 +149,11 @@ const createRunner = (runPath, { getExtraOptions } = {}) => { runTestInWorker(test) .then((testResult) => { if (Array.isArray(testResult)) { - // debug('after worker, testResult is array %O', testResult); - // debug('on test match %O', test); - - testResult.forEach((result) => { - if (result.numFailingTests > 0) { - debug('every failing result %O', test); - // onError(new Error(result.errorMessage), test); - } else { - // debug('every passing result %O', result); - onResult(test, result); - } - }); + testResult.forEach((result) => + result.numFailingTests > 0 + ? onError(new Error(result.errorMessage), test) + : onResult(test, result), + ); return; } diff --git a/@tunnckocore/execa/build/cjs/index.js b/@tunnckocore/execa/build/cjs/index.js deleted file mode 100644 index bd9c010f..00000000 --- a/@tunnckocore/execa/build/cjs/index.js +++ /dev/null @@ -1,106 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - -var execa = _interopDefault(require('execa')); -var pMap = _interopDefault(require('p-map')); - -/** - * Uses [execa][] v2, `execa.command()` method. - * As stated there, think of it as mix of `child_process`'s `.execFile` and `.spawn`. - * It is pretty similar to the `.shell` method too, but only visually because - * it does not uses the system's shell, meaning it does not have access to - * the system's environment variables. You also can control concurrency by - * passing `options.concurrency` option. For example, pass `concurrency: 1` to run in series - * instead of in parallel which is the default behavior. - * - * > It also can accept array of multiple strings of commands that will be - * executed in series or in parallel (default). - * - * @example - * import { exec } from '@tunnckocore/execa'; - * // or - * // const { exec } = require('@tunnckocore/execa'); - * - * async function main() { - * await exec('echo "hello world"', { stdio: 'inherit' }); - * - * // executes in series (because `concurrency` option is set to `1`) - * await exec([ - * 'prettier-eslint --write foobar.js', - * 'eslint --format codeframe foobar.js --fix' - * ], { stdio: 'inherit', preferLocal: true, concurrency: 1 }); - * } - * - * main(); - * - * @name .exec - * @param {string|string[]} cmds a commands to execute in parallel or series - * @param {object} [options] directly passed to [execa][] and so to `child_process` - * @return {Promise} resolved or rejected promises - * @public - */ -async function exec(cmds, options) { - const commands = [].concat(cmds).filter(Boolean); - const { concurrency = Infinity, ...opts } = { - preferLocal: true, - ...options, - }; - - return pMap(commands, (cmd) => execa.command(cmd, opts), { concurrency }); -} - -/** - * Similar to `exec`, but also **can** access the system's environment variables from the command. - * - * @example - * import { shell } from '@tunnckocore/execa'; - * // or - * // const { shell } = require('@tunnckocore/execa'); - * - * async function main() { - * // executes in series - * await shell([ - * 'echo unicorns', - * 'echo "foo-$HOME-bar"', - * 'echo dragons' - * ], { stdio: 'inherit' }); - * - * // exits with code 3 - * try { - * await shell([ - * 'exit 3', - * 'echo nah' - * ]); - * } catch (er) { - * console.error(er); - * // => { - * // message: 'Command failed: /bin/sh -c exit 3' - * // killed: false, - * // code: 3, - * // signal: null, - * // cmd: '/bin/sh -c exit 3', - * // stdout: '', - * // stderr: '', - * // timedOut: false - * // } - * } - * } - * - * main(); - * - * @name .shell - * @param {string|string[]} cmds a commands to execute in parallel or series - * @param {object} options directly passed to `execa` - * @return {Promise} resolved or rejected promises - * @public - */ -function shell(cmds, options) { - return exec(cmds, { ...options, shell: true }); -} - -exports.default = execa; -exports.exec = exec; -exports.shell = shell; diff --git a/@tunnckocore/execa/build/esm/index.js b/@tunnckocore/execa/build/esm/index.js deleted file mode 100644 index 106d7cc8..00000000 --- a/@tunnckocore/execa/build/esm/index.js +++ /dev/null @@ -1,99 +0,0 @@ -import execa from 'execa'; -import pMap from 'p-map'; - -/** - * Uses [execa][] v2, `execa.command()` method. - * As stated there, think of it as mix of `child_process`'s `.execFile` and `.spawn`. - * It is pretty similar to the `.shell` method too, but only visually because - * it does not uses the system's shell, meaning it does not have access to - * the system's environment variables. You also can control concurrency by - * passing `options.concurrency` option. For example, pass `concurrency: 1` to run in series - * instead of in parallel which is the default behavior. - * - * > It also can accept array of multiple strings of commands that will be - * executed in series or in parallel (default). - * - * @example - * import { exec } from '@tunnckocore/execa'; - * // or - * // const { exec } = require('@tunnckocore/execa'); - * - * async function main() { - * await exec('echo "hello world"', { stdio: 'inherit' }); - * - * // executes in series (because `concurrency` option is set to `1`) - * await exec([ - * 'prettier-eslint --write foobar.js', - * 'eslint --format codeframe foobar.js --fix' - * ], { stdio: 'inherit', preferLocal: true, concurrency: 1 }); - * } - * - * main(); - * - * @name .exec - * @param {string|string[]} cmds a commands to execute in parallel or series - * @param {object} [options] directly passed to [execa][] and so to `child_process` - * @return {Promise} resolved or rejected promises - * @public - */ -async function exec(cmds, options) { - const commands = [].concat(cmds).filter(Boolean); - const { concurrency = Infinity, ...opts } = { - preferLocal: true, - ...options, - }; - - return pMap(commands, (cmd) => execa.command(cmd, opts), { concurrency }); -} - -/** - * Similar to `exec`, but also **can** access the system's environment variables from the command. - * - * @example - * import { shell } from '@tunnckocore/execa'; - * // or - * // const { shell } = require('@tunnckocore/execa'); - * - * async function main() { - * // executes in series - * await shell([ - * 'echo unicorns', - * 'echo "foo-$HOME-bar"', - * 'echo dragons' - * ], { stdio: 'inherit' }); - * - * // exits with code 3 - * try { - * await shell([ - * 'exit 3', - * 'echo nah' - * ]); - * } catch (er) { - * console.error(er); - * // => { - * // message: 'Command failed: /bin/sh -c exit 3' - * // killed: false, - * // code: 3, - * // signal: null, - * // cmd: '/bin/sh -c exit 3', - * // stdout: '', - * // stderr: '', - * // timedOut: false - * // } - * } - * } - * - * main(); - * - * @name .shell - * @param {string|string[]} cmds a commands to execute in parallel or series - * @param {object} options directly passed to `execa` - * @return {Promise} resolved or rejected promises - * @public - */ -function shell(cmds, options) { - return exec(cmds, { ...options, shell: true }); -} - -export default execa; -export { exec, shell }; diff --git a/@tunnckocore/jest-runner-babel/build/cjs/index.js b/@tunnckocore/jest-runner-babel/build/cjs/index.js deleted file mode 100644 index b327bfd2..00000000 --- a/@tunnckocore/jest-runner-babel/build/cjs/index.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -var path = require('path'); -var createJestRunner = require('@tunnckocore/create-jest-runner'); - -var index = createJestRunner.createJestRunner(path.join(__dirname, 'runner.js')); - -module.exports = index; diff --git a/@tunnckocore/jest-runner-babel/build/esm/index.js b/@tunnckocore/jest-runner-babel/build/esm/index.js deleted file mode 100644 index 57403a93..00000000 --- a/@tunnckocore/jest-runner-babel/build/esm/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import { join } from 'path'; -import { createJestRunner } from '@tunnckocore/create-jest-runner'; - -var index = createJestRunner(join(__dirname, 'runner.js')); - -export default index; diff --git a/@tunnckocore/jest-runner-eslint/CHANGELOG.md b/@tunnckocore/jest-runner-eslint/CHANGELOG.md index 4e097438..1ea9a985 100644 --- a/@tunnckocore/jest-runner-eslint/CHANGELOG.md +++ b/@tunnckocore/jest-runner-eslint/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.3.5](https://github.com/tunnckoCore/opensource/compare/@tunnckocore/jest-runner-eslint@0.3.4...@tunnckocore/jest-runner-eslint@0.3.5) (2019-09-20) + +**Note:** Version bump only for package @tunnckocore/jest-runner-eslint + + + + + ## [0.3.4](https://github.com/tunnckoCore/opensource/compare/@tunnckocore/jest-runner-eslint@0.3.3...@tunnckocore/jest-runner-eslint@0.3.4) (2019-09-19) **Note:** Version bump only for package @tunnckocore/jest-runner-eslint diff --git a/@tunnckocore/jest-runner-eslint/build/cjs/index.js b/@tunnckocore/jest-runner-eslint/build/cjs/index.js deleted file mode 100644 index b327bfd2..00000000 --- a/@tunnckocore/jest-runner-eslint/build/cjs/index.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -var path = require('path'); -var createJestRunner = require('@tunnckocore/create-jest-runner'); - -var index = createJestRunner.createJestRunner(path.join(__dirname, 'runner.js')); - -module.exports = index; diff --git a/@tunnckocore/jest-runner-eslint/build/esm/index.js b/@tunnckocore/jest-runner-eslint/build/esm/index.js deleted file mode 100644 index 57403a93..00000000 --- a/@tunnckocore/jest-runner-eslint/build/esm/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import { join } from 'path'; -import { createJestRunner } from '@tunnckocore/create-jest-runner'; - -var index = createJestRunner(join(__dirname, 'runner.js')); - -export default index; diff --git a/@tunnckocore/jest-runner-eslint/package.json b/@tunnckocore/jest-runner-eslint/package.json index 0804c5ae..44a7d19f 100644 --- a/@tunnckocore/jest-runner-eslint/package.json +++ b/@tunnckocore/jest-runner-eslint/package.json @@ -1,5 +1,5 @@ { - "version": "0.3.4", + "version": "0.3.5", "name": "@tunnckocore/jest-runner-eslint", "description": "WIP", "author": "Charlike Mike Reagent ", @@ -24,7 +24,7 @@ }, "dependencies": { "@tunnckocore/create-jest-runner": "^0.5.6", - "@tunnckocore/utils": "^0.6.0", + "@tunnckocore/utils": "^0.7.0", "cosmiconfig": "^5.2.1", "eslint": "^6.4.0" }, diff --git a/@tunnckocore/jest-runner-eslint/src/runner.js b/@tunnckocore/jest-runner-eslint/src/runner.js index 7de5ab83..dc9919fd 100644 --- a/@tunnckocore/jest-runner-eslint/src/runner.js +++ b/@tunnckocore/jest-runner-eslint/src/runner.js @@ -1,7 +1,7 @@ import { pass, fail, skip } from '@tunnckocore/create-jest-runner'; -import { getWorkspacesAndExtensions } from '@tunnckocore/utils'; import cosmiconfig from 'cosmiconfig'; +import { getWorkspacesAndExtensions } from '@tunnckocore/utils'; import { CLIEngine } from 'eslint'; const explorer = cosmiconfig('jest-runner'); @@ -15,7 +15,7 @@ export default async function jestRunnerESLint({ testPath, config }) { require(config.setupTestFrameworkScriptFile); } - const engine = new CLIEngine(options.eslint); + const engine = new CLIEngine(options); if (engine.isPathIgnored(testPath)) { return skip({ @@ -30,7 +30,7 @@ export default async function jestRunnerESLint({ testPath, config }) { const report = engine.executeOnFiles([testPath]); - if (options.eslint.fix && !options.fixDryRun) { + if (options.fix && !options.fixDryRun) { CLIEngine.outputFixes(report); } @@ -90,9 +90,11 @@ export default async function jestRunnerESLint({ testPath, config }) { function normalizeOptions(val, rootDir) { const { extensions } = getWorkspacesAndExtensions(rootDir); const cfg = val && val.config ? val.config : {}; + const eslintOptions = { // ignore: DEFAULT_IGNORE, exit: true, + quiet: true, warnings: false, maxWarnings: 10, reporter: 'codeframe', @@ -109,6 +111,6 @@ function normalizeOptions(val, rootDir) { return { ...cfg, - eslint: eslintOptions, + ...eslintOptions, }; } diff --git a/@tunnckocore/utils/CHANGELOG.md b/@tunnckocore/utils/CHANGELOG.md index 1f29feeb..fe0d4f94 100644 --- a/@tunnckocore/utils/CHANGELOG.md +++ b/@tunnckocore/utils/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [0.7.0](https://github.com/tunnckoCore/opensource/compare/@tunnckocore/utils@0.6.0...@tunnckocore/utils@0.7.0) (2019-09-20) + + +### Features + +* improve tests, rename packageRootPath -> workspaceRootPath ([25b60ee](https://github.com/tunnckoCore/opensource/commit/25b60ee)) + + + + + # [0.6.0](https://github.com/tunnckoCore/opensource/compare/@tunnckocore/utils@0.5.3...@tunnckocore/utils@0.6.0) (2019-09-19) diff --git a/@tunnckocore/utils/package.json b/@tunnckocore/utils/package.json index 19e6d993..7c375ebf 100644 --- a/@tunnckocore/utils/package.json +++ b/@tunnckocore/utils/package.json @@ -1,5 +1,5 @@ { - "version": "0.6.0", + "version": "0.7.0", "name": "@tunnckocore/utils", "description": "Utility functions and helpers for internal usage and monorepos", "author": "Charlike Mike Reagent ", diff --git a/@tunnckocore/utils/src/index.js b/@tunnckocore/utils/src/index.js index 95ea6fd0..24a79678 100644 --- a/@tunnckocore/utils/src/index.js +++ b/@tunnckocore/utils/src/index.js @@ -9,6 +9,8 @@ const EXTENSIONS = Object.keys(Module._extensions).filter( module.exports = { createAliases, getWorkspacesAndExtensions, isMonorepo }; +// we cannot test it because we are in monorepo where the cwd is. +/* istanbul ignore next */ function isMonorepo(cwd = process.cwd()) { const { workspaces } = getWorkspacesAndExtensions(cwd); @@ -25,7 +27,6 @@ function isMonorepo(cwd = process.cwd()) { * We just don't use regex, we precompute them. */ function createAliases(cwd = process.cwd(), sourceDirectory) { - // const { workspaces, extensions, exts } = getWorkspacesAndExtensions(cwd); const result = getWorkspacesAndExtensions(cwd); const info = {}; @@ -38,7 +39,6 @@ function createAliases(cwd = process.cwd(), sourceDirectory) { .readdirSync(workspace) .filter((x) => !result.workspaces.find((z) => z.endsWith(x))) .map((directory) => { - // console.log(workspace); const pkgDirectory = path.join(workspace, directory); const pkgJsonPath = path.join(pkgDirectory, 'package.json'); @@ -51,6 +51,7 @@ function createAliases(cwd = process.cwd(), sourceDirectory) { /* istanbul ignore next */ if (Object.keys(packageJson).length === 0) { return null; + // skip silently // throw new Error( // `Cannot find package.json or cannot parse it: ${pkgJsonPath}`, // ); @@ -93,7 +94,15 @@ function createAliases(cwd = process.cwd(), sourceDirectory) { } function parseJson(fp) { - return fs.existsSync(fp) ? JSON.parse(fs.readFileSync(fp, 'utf8')) : {}; + if (fs.existsSync(fp)) { + let res = {}; + try { + res = JSON.parse(fs.readFileSync(fp, 'utf8')); + } catch (err) {} + return res; + } + + return {}; } function getWorkspacesAndExtensions(cwd = process.cwd()) { diff --git a/@tunnckocore/utils/test/fixtures/lerna/@helios/foo/package.json b/@tunnckocore/utils/test/fixtures/lerna/@helios/foo/package.json deleted file mode 100644 index daf15fca..00000000 --- a/@tunnckocore/utils/test/fixtures/lerna/@helios/foo/package.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "name": "@helios/foo" -} diff --git a/@tunnckocore/utils/test/fixtures/lerna/lerna.json b/@tunnckocore/utils/test/fixtures/lerna/lerna.json index 4d4b659d..6c1bd180 100644 --- a/@tunnckocore/utils/test/fixtures/lerna/lerna.json +++ b/@tunnckocore/utils/test/fixtures/lerna/lerna.json @@ -1,6 +1,6 @@ { "packages": [ "@tunnckocore/*", - "@helios/*" + "packages/*" ] } diff --git a/@tunnckocore/utils/test/fixtures/lerna/packages/foo/package.json b/@tunnckocore/utils/test/fixtures/lerna/packages/foo/package.json new file mode 100644 index 00000000..050ac00c --- /dev/null +++ b/@tunnckocore/utils/test/fixtures/lerna/packages/foo/package.json @@ -0,0 +1,3 @@ +{ + "name": "@helios/qux" +} diff --git a/@tunnckocore/utils/test/fixtures/lerna/packages/numb/package.json b/@tunnckocore/utils/test/fixtures/lerna/packages/numb/package.json new file mode 100644 index 00000000..9f253440 --- /dev/null +++ b/@tunnckocore/utils/test/fixtures/lerna/packages/numb/package.json @@ -0,0 +1,3 @@ +{ + "name": "numb" +} diff --git a/@tunnckocore/utils/test/index.js b/@tunnckocore/utils/test/index.js index 1575fffb..790a8277 100644 --- a/@tunnckocore/utils/test/index.js +++ b/@tunnckocore/utils/test/index.js @@ -28,11 +28,11 @@ test('getWorkspacesAndExtensions - correct workspaces', () => { const result = getWorkspacesAndExtensions(rootDir); - expect(result.workspaces).toStrictEqual(['@tunnckocore', '@helios']); + expect(result.workspaces).toStrictEqual(['@tunnckocore', 'packages']); expect(result.extensions).toStrictEqual(['.js', '.jsx', '.ts']); expect(result.exts).toStrictEqual(['js', 'jsx', 'ts']); expect(result.lernaJson).toStrictEqual({ - packages: ['@tunnckocore/*', '@helios/*'], + packages: ['@tunnckocore/*', 'packages/*'], }); expect(result.packageJson).toStrictEqual({ name: 'lerna-monorepo', @@ -80,18 +80,40 @@ test('createAliases return correct aliases for yarn workspaces', () => { test('createAliases return correct aliases for Lerna workspaces', () => { const lernaRoot = path.join(__dirname, 'fixtures', 'lerna'); - const res = createAliases(lernaRoot); + const res = createAliases(lernaRoot, 'source'); + + /** + * The scenario is that we have package named `@helios/qux` inside `packages/foo` + * and that's the correct result of `alias`. + * The key is the package name the value is path to source directory, not its root. + * { + * '@tunnckocore/barry': '/home/charlike//fixtures/lerna/@tunnckocore/barry/source', + * '@helios/qux': '/home/charlike/fixtures/lerna/packages/foo/source', + * numb: '/home/charlike/fixtures/lerna/packages/numb/source' + * } + */ + + expect(Object.keys(res.alias)).toStrictEqual([ + '@tunnckocore/barry', + '@helios/qux', + 'numb', + ]); - // eslint-disable-next-line unicorn/consistent-function-scoping - const toAliases = (src) => - ['@helios/foo', '@tunnckocore/barry'].reduce((acc, name) => { - acc[name] = path.join(lernaRoot, name, src); - return acc; - }, {}); + const bases = Object.values(res.alias).map((filepath) => + filepath + .split('/') + .slice(-3) + .join('/'), + ); - expect(res.alias).toStrictEqual(toAliases('')); + // These are the real actual directories of above packages + expect(bases).toStrictEqual([ + '@tunnckocore/barry/source', + 'packages/foo/source', + 'packages/numb/source', + ]); expect(res.lernaJson).toStrictEqual({ - packages: ['@tunnckocore/*', '@helios/*'], + packages: ['@tunnckocore/*', 'packages/*'], }); expect(res.exts).toStrictEqual(['js', 'jsx', 'ts']); expect(res.packageJson).toStrictEqual({ @@ -109,8 +131,11 @@ test('isMonorepo - true for workspaces root', () => { expect(isMonorepo(lernaRepo)).toStrictEqual(true); }); -test('isMonorepo - false regular repository', () => { +test('isMonorepo - false, regular repository', () => { expect(isMonorepo(path.dirname(__dirname))).toStrictEqual(false); + + // we cannot test it, because we are in monorepo where the cwd is. + // expect(isMonorepo()).toStrictEqual(false); }); test('correct *Path properties when Lerna monorepo', () => { diff --git a/jest-runner.config.js b/jest-runner.config.js index cbe8760e..72806fc8 100644 --- a/jest-runner.config.js +++ b/jest-runner.config.js @@ -1,3 +1,7 @@ +// const builtins = require('builtin-modules'); +// const nodeResolve = require('rollup-plugin-node-resolve'); +// const commonjs = require('rollup-plugin-commonjs'); + const presetOptions = { react: true, typescript: true, @@ -34,12 +38,22 @@ module.exports = { }, ], - rollup: { - outDir: 'build', - }, + // rollup: 'fooo', + // rolldown: { + // external: builtins, + // inlineDynamicImports: true, + // experimentalTopLevelAwait: true, + // plugins: [ + // nodeResolve({ + // preferBuiltins: true, + // mainFields: ['module', 'main'], + // }), + // commonjs({ + // // extensions, + // }), + // ], + // output: { + // format: 'esm', + // }, + // }, }; - -// 1. hash of full versions of all packages -// 2. hash of major versions of all packages -// 3. hash of date timestamp (e.g. Date.now()) -// 4. hash of 1, 2 and 3 diff --git a/jest.build.config.js b/jest.build.config.js index fd41b0c4..4a608c25 100644 --- a/jest.build.config.js +++ b/jest.build.config.js @@ -11,12 +11,10 @@ module.exports = { ], testPathIgnorePatterns: [ /node_modules/.toString(), - /.+\/fixtures?\/.+/.toString(), - /.+\/__fixtures?__\/.+/.toString(), - /.+\/support\/.+/.toString(), - /.+\/__support__\/.+/.toString(), - /.+\/__shared__\/.+/.toString(), + /(?:__)?(?:fixtures?|supports?|shared)(?:__)?/.toString(), /.+\/@tunnckocore\/utils\/.+/.toString(), + /.+\/jest-runner-rollup\/.+/.toString(), + /.+\/koa-better-body\/.+/.toString(), ], // moduleNameMapper: alias, moduleFileExtensions: exts, diff --git a/jest.bundle.config.js b/jest.bundle.config.js index d684fafc..908c1a50 100644 --- a/jest.bundle.config.js +++ b/jest.bundle.config.js @@ -6,20 +6,17 @@ module.exports = { displayName: 'bundle', rootDir: __dirname, testMatch: [ - '/packages/koa-better-body/src/index.js', - '/@tunnckocore/execa/src/index.js', + // '/src/index.ts', + // '/packages/*/src/**/*', + `/@tunnckocore/*/src/index.js`, + // `/src/zzz*`, ], testPathIgnorePatterns: [ /node_modules/.toString(), - /.+\/fixtures?\/.+/.toString(), - /.+\/__fixtures?__\/.+/.toString(), - /.+\/support\/.+/.toString(), - /.+\/__support__\/.+/.toString(), - /.+\/__shared__\/.+/.toString(), + /(?:__)?(?:fixtures?|supports?|shared)(?:__)?/.toString(), /.+\/@tunnckocore\/utils\/.+/.toString(), - /.+\/packages\/jest-runner-rollup\/.+/.toString(), ], // moduleNameMapper: alias, moduleFileExtensions: exts, - runner: './packages/jest-runner-rollup/dist/main/index.js', + runner: './packages/jest-runner-rollup/src/index.js', }; diff --git a/jest.lint.config.js b/jest.lint.config.js index 1afa59f0..b0b51a3d 100644 --- a/jest.lint.config.js +++ b/jest.lint.config.js @@ -11,11 +11,7 @@ module.exports = { ], testPathIgnorePatterns: [ /node_modules/.toString(), - /.+\/fixtures?\/.+/.toString(), - /.+\/__fixtures?__\/.+/.toString(), - /.+\/support\/.+/.toString(), - /.+\/__support__\/.+/.toString(), - /.+\/__shared__\/.+/.toString(), + /(?:__)?(?:fixtures?|supports?|shared)(?:__)?/.toString(), ], moduleNameMapper: alias, moduleFileExtensions: exts, diff --git a/jest.test.config.js b/jest.test.config.js index 6840bc9d..2d3e385e 100644 --- a/jest.test.config.js +++ b/jest.test.config.js @@ -11,12 +11,11 @@ module.exports = { ], testPathIgnorePatterns: [ /node_modules/.toString(), - /__(?:fixtures?|supports?|shared)__/.toString(), - /(?:fixtures?|supports?|shared)/.toString(), - /__shared__/.toString(), + /(?:__)?(?:fixtures?|supports?|shared)(?:__)?/.toString(), // ! todo remove when fixed /koa-better-body/.toString(), + /jest-runner-rollup/.toString(), ], moduleNameMapper: alias, moduleFileExtensions: ['js', 'jsx', 'ts', 'tsx'], diff --git a/lerna.json b/lerna.json index 115d580f..a2454fd6 100644 --- a/lerna.json +++ b/lerna.json @@ -20,7 +20,8 @@ "createRelease": "github", "message": "chore: release package(s)", "ignoreChanges": [ - "**/koa-better-body/**" + "**/koa-better-body/**", + "**/jest-runner-rollup/**" ] } } diff --git a/package.json b/package.json index ef3a61eb..8b9abb0c 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "lint": "jest -c jest.lint.config.js", "test": "jest -c jest.test.config.js", "build": "jest -c jest.build.config.js", + "bundle": "jest -c jest.bundle.config.js", "release": "lerna version && lerna publish from-package", "cr": "node create-package.js", "resque": "lerna exec 'babel src -d dist/main --presets @tunnckocore --source-maps both' --stream --scope 'jest-runner-rollup' --scope '@tunnckocore/*jest-runner*'" @@ -40,17 +41,10 @@ "jest": "^24.9.0", "lerna": "^3.16.4", "prettier": "^1.18.2", + "react": "^16.10.1", "semver": "^6.3.0", "typescript": "^3.6.3" }, - "devDependencies": { - "debug": "^4.1.1", - "eslint-plugin-node": "^10.0.0" - }, - "prettier": "@tunnckocore/prettier-config", - "eslintConfig": { - "extends": "@tunnckocore" - }, "renovate": { "extends": "@tunnckocore" }, diff --git a/packages/jest-runner-rollup/foo.js b/packages/jest-runner-rollup/foo.js deleted file mode 100644 index e1bc1b6f..00000000 --- a/packages/jest-runner-rollup/foo.js +++ /dev/null @@ -1,61 +0,0 @@ -const path = require('path'); -// const rollup = require('rollup'); - -// let ROLLUP_CACHE = null; - -// const options = { -// cache: ROLLUP_CACHE, -// input: path.join(__dirname, 'src', 'runner.js'), -// output: [ -// { file: path.join(__dirname, 'qux/za/ok/foo.cjs.js'), format: 'cjs' }, -// { file: path.join(__dirname, 'qux/za/ok/foo.esm.js'), format: 'esm' }, -// ], -// }; - -// rollup.rollup(options).then(async (bundle) => { -// ROLLUP_CACHE = bundle.cache; - -// await Promise.all( -// options.output.map(async (outputOptions) => { -// console.log(await bundle.write(outputOptions)); -// }), -// ); -// }); - -const rootDir = '/home/charlike/monorepo'; -const pkgRootPath = '/home/charlike/monorepo/packages/foo'; -const testPath = '/home/charlike/monorepo/packages/foo/src/app/index'; - -const options = { srcDir: 'src' }; - -// ! todo: split and replace src with dist -// console.log(path.relative(testPath, path.join(pkgRootPath, 'dist'))); - -const relativeTestPathToRoot = path.relative(pkgRootPath, testPath); - -const outFile = relativeTestPathToRoot - .split('/') - .reduce((acc, part) => acc.concat(part === options.srcDir ? null : part), []) - .filter(Boolean); - -const foo = ['a', 'b']; - -foo.push('c', 'd'); - -console.log(outFile); -console.log(foo); - -// const parts = relativeTestPath.split('/'); -// const foundIndex = parts.indexOf(options.srcDir); - -// const outFile = foundIndex < 0; - -// if (foundIndex < 0) { -// } - -// // pkgRoot = parts.slice(0, foundIndex).join('/'); - -// console.log(path.join(pkgRootPath, 'dist')); -// console.log(relativeTestPathToRoot); -// console.log(foundIndex, parts); -// console.log(path.relative(pkgRootPath, relativeTestPath)); diff --git a/packages/jest-runner-rollup/package.json b/packages/jest-runner-rollup/package.json index 613bae8f..4d159727 100644 --- a/packages/jest-runner-rollup/package.json +++ b/packages/jest-runner-rollup/package.json @@ -5,30 +5,13 @@ "homepage": "https://github.com/tunnckoCore/opensource", "license": "MPL-2.0", "licenseStart": 2019, - "main": "dist/main/index.js", - "module": "dist/module/index.js", + "main": "src/index.js", + "module": "src/index.js", "types": "dist/types/index.d.ts", "scripts": {}, "engines": { "node": ">=8.11" }, - "dependencies": { - "@tunnckocore/create-jest-runner": "^0.5.6", - "@tunnckocore/utils": "^0.6.0", - "@wessberg/rollup-plugin-ts": "^1.1.64", - "builtin-modules": "^3.1.0", - "cosmiconfig": "^5.2.1", - "p-map-series": "^2.1.0", - "p-reduce": "^2.1.0", - "rollup": "^1.21.4", - "rollup-plugin-babel": "^4.3.3", - "rollup-plugin-commonjs": "^10.1.0", - "rollup-plugin-json": "^4.0.0", - "rollup-plugin-node-resolve": "^5.2.0", - "rollup-plugin-replace": "^2.2.0", - "rollup-plugin-terser": "^5.1.2", - "umd-globals": "^0.3.0" - }, "repository": { "type": "git", "url": "git@github.com:tunnckoCore/opensource.git", @@ -48,12 +31,18 @@ "development", "developer-experience", "dx", - "jest-runner-rollup", + "rollup", "jest", "jest-runner", - "rollup", + "rollup-config", + "bundle", "bundling", - "tooling", - "transpile" - ] + "build" + ], + "dependencies": { + "@tunnckocore/create-jest-runner": "^0.5.6", + "@tunnckocore/utils": "^0.7.0", + "cosmiconfig": "^5.2.1", + "rollup": "^1.22.0" + } } diff --git a/packages/jest-runner-rollup/src/index.js b/packages/jest-runner-rollup/src/index.js index aa6efe10..212dc23a 100644 --- a/packages/jest-runner-rollup/src/index.js +++ b/packages/jest-runner-rollup/src/index.js @@ -1,4 +1,4 @@ -import { join } from 'path'; -import { createJestRunner } from '@tunnckocore/create-jest-runner'; +const { join } = require('path'); +const { createJestRunner } = require('@tunnckocore/create-jest-runner'); -export default createJestRunner(join(__dirname, 'runner.js')); +module.exports = createJestRunner(join(__dirname, 'runner.js')); diff --git a/packages/jest-runner-rollup/src/original-cfg.js b/packages/jest-runner-rollup/src/original-cfg.js deleted file mode 100644 index 84f62b23..00000000 --- a/packages/jest-runner-rollup/src/original-cfg.js +++ /dev/null @@ -1,258 +0,0 @@ -import fs from 'fs'; -import path from 'path'; -import Module from 'module'; - -/* eslint-disable global-require, import/no-dynamic-require, no-param-reassign */ - -// import mm from 'micromatch'; -import builtins from 'builtin-modules'; -import { terser } from 'rollup-plugin-terser'; -import babel from 'rollup-plugin-babel'; -import commonjs from 'rollup-plugin-commonjs'; -import json from 'rollup-plugin-json'; -import replace from 'rollup-plugin-replace'; -import nodeResolve from 'rollup-plugin-node-resolve'; -import typescript from '@wessberg/rollup-plugin-ts'; -import { getWorkspacesAndExtensions } from '@tunnckocore/utils'; -import { getGlobals, normalizePkg, upperCamelCase } from 'umd-globals'; - -function getBasicPlugins(resolve, prod, extensions) { - const shouldResolve = resolve || prod; - - return [ - shouldResolve && - nodeResolve({ - mainFields: ['esnext', 'es2015', 'esm', 'src', 'module', 'main'], - extensions, - }), - commonjs(), - json(), - ].filter(Boolean); -} - -const DEFAULT_FORMATS = ['cjs', 'esm']; - -let isTsAvailable = false; - -try { - require.resolve('typescript'); - isTsAvailable = true; - // eslint-disable-next-line no-empty -} catch (err) {} - -// eslint-disable-next-line no-underscore-dangle -const EXTENSIONS = Object.keys(Module._extensions); - -if (isTsAvailable) { - EXTENSIONS.unshift('.ts', '.tsx'); -} - -const tryExtensions = (filepath) => { - const hasExtension = path.extname(filepath).length > 0; - - if (hasExtension) { - return filepath; - } - - // if `--input foo` check `pkg-name/foo.` (e.g. the root of repo or package) - let extension = EXTENSIONS.find((ext) => fs.existsSync(filepath + ext)); - - if (!extension) { - const dirname = path.dirname(filepath); - const input = path.basename(filepath); - filepath = path.join(dirname, 'src', input); - - // if `--input foo` check `pkg-name/src/foo.` - extension = EXTENSIONS.find((x) => fs.existsSync(filepath + x)); - } - - if (!extension) { - throw new Error(`Cannot find input file: ${filepath}`); - } - - return filepath + extension; -}; - -function getAllPackages(wsDirectories) { - return [].concat(wsDirectories).reduce((acc, ws) => { - const pkgsInWorkspace = fs.readdirSync(ws); - - return acc.concat(pkgsInWorkspace.map((pkg) => path.join(ws, pkg))); - }, []); -} - -function configBase(options = {}) { - const opts = { - resolve: false, - cwd: process.cwd(), - outputDir: 'dist', - input: 'src/index', - ...options, - }; - - const { formats, cwd, monorepo, exports, externals, prod, license } = opts; - const { workspaces } = getWorkspacesAndExtensions(opts.cwd); - - const pkgsDirs = typeof monorepo === 'string' ? monorepo : null; - const workspacesPaths = [] - .concat(pkgsDirs || null) - .concat( - !pkgsDirs && typeof monorepo === 'boolean' && monorepo - ? workspaces - : null, - ) - .filter(Boolean) - .map((ws) => (fs.existsSync(path.join(opts.cwd, ws)) ? ws : null)) - .filter(Boolean); - - const isMonorepo = workspacesPaths.length > 0; - - let outDir = opts.outputDir; - if (opts.outputDir && !opts.outputDir.endsWith('/')) { - outDir = `${opts.outputDir}/`; - } - - const pkgs = isMonorepo ? getAllPackages(workspacesPaths) : ['']; - // const isAbsolute = path.isAbsolute(input); - - let { globals } = opts; - globals = typeof globals === 'string' ? JSON.parse(globals) : globals; - globals = getGlobals({ globals }); - - // console.log(opts); - const ignores = [].concat().filter(Boolean); - const isMatch = - ignores.length > 0 ? () => true /* mm.matcher(ignores) */ : () => false; - - const configs = pkgs - .map((packageWithWorkspace) => { - const [workspaceName, packageName] = packageWithWorkspace.split('/'); - return { workspaceName, packageName }; - }) - .filter(({ packageName }) => !isMatch(packageName)) - .reduce((cfgs, { packageName, workspaceName }) => { - // if (isMonorepo && micromatch.isMatch(pkgName, opts.ignore)) - const pkgPath = isMonorepo - ? path.resolve(cwd, workspaceName, packageName) - : cwd; - const pkgInput = tryExtensions(path.join(pkgPath, opts.input)); - - const pkgJson = require(path.resolve(pkgPath, 'package.json')); - const { - name, - engines: { node } = {}, - dependencies = {}, - peerDependencies = {}, - } = pkgJson; - - const pkgName = name; - - const passedExternals = [] - .concat(externals) - .filter(Boolean) - .reduce((acc, extr) => acc.concat(extr.split(',')), []); - - const external = [].concat(passedExternals).concat( - // if we want them to be resolved, we should not add - // them to the `external`s array option - opts.resolve - ? [] - : Object.keys(peerDependencies).concat(Object.keys(dependencies)), - node ? builtins : [], - ); - - const isTsInput = /\.tsx?/.test(pkgInput); - - if (isTsInput && !EXTENSIONS.includes('.ts')) { - EXTENSIONS.unshift('.ts', '.tsx'); - } - - const allFormats = [] - .concat(formats) - .filter(Boolean) - .reduce((acc, fmt) => acc.concat(fmt.split(',')), []) - .filter(Boolean); - - const packageFormats = - allFormats.length > 0 - ? allFormats - : DEFAULT_FORMATS.concat(node ? [] : 'umd'); - - const pkgGlobals = external.reduce((acc, x) => { - if (acc[x] == null) { - const normalizedPackageName = upperCamelCase(normalizePkg(x)); - return { ...acc, [x]: normalizedPackageName }; - } - return acc; - }, globals); - - const notypesProjectPath = path.join(cwd, 'tsconfig.notypes.json'); - const notypesConfig = fs.existsSync(notypesProjectPath) - ? notypesProjectPath - : path.join(__dirname, 'tsconfig.notypes.json'); - - const confs = packageFormats.map((format) => { - const isEs = /^es(m|\d+|next)$/.test(format) && format !== 'es5'; - return { - input: pkgInput, - output: { - sourcemap: true, - preferConst: true, - file: path.resolve( - pkgPath, - `${outDir}${format}/index${prod ? '.min' : ''}.js`, - ), - format: isEs ? 'esm' : format, - // don't break oldschool/classic/normal node.js - // for example, require('foo'); not require('foo').default - banner: `/** Released under the ${license || - pkgJson.license} License. See LICENSE file. */`, - outro: !isEs && 'module.exports = exports.default || exports;', - name: pkgGlobals[pkgName] || upperCamelCase(normalizePkg(pkgName)), - globals, - exports, - }, - external, - inlineDynamicImports: true, - experimentalTopLevelAwait: true, - plugins: [ - isTsAvailable && isTsInput - ? typescript( - // generate types bundle index.d.ts only once, - // and do not generate minified variant for it - isEs && !prod - ? { transpiler: 'babel' } - : { - transpiler: 'babel', - tsconfig: notypesConfig, - }, - ) - : babel({ extensions: EXTENSIONS }), - ].concat( - getBasicPlugins(opts.resolve, prod, EXTENSIONS), - prod - ? [ - replace({ - 'process.env.NODE_ENV': '"production"', - }), - terser(), - ] - : [], - ), - }; - }); - - return cfgs.concat(confs); - }, []); - - if (configs.length === 0) { - console.warn( - configs.length, - "No configuration resolved, mark sure you've setup correctly", - ); - } - - return configs.map((x) => (Array.isArray(x) ? null : x)).filter(Boolean); -} - -export default (options = {}) => configBase(options); diff --git a/packages/jest-runner-rollup/src/runner.js b/packages/jest-runner-rollup/src/runner.js index f6f23fcd..d5083d8b 100644 --- a/packages/jest-runner-rollup/src/runner.js +++ b/packages/jest-runner-rollup/src/runner.js @@ -1,377 +1,207 @@ -/* eslint-disable max-statements */ -/* eslint-disable promise/prefer-await-to-callbacks */ -/* eslint-disable promise/prefer-await-to-then */ -import os from 'os'; -import fs from 'fs'; -import path from 'path'; - -import pMapSeries from 'p-map-series'; -import pReduce from 'p-reduce'; -import { createAliases } from '@tunnckocore/utils'; - -import Debug from 'debug'; - -// import Module from 'module'; - -/* eslint-disable global-require, import/no-dynamic-require, no-param-reassign */ - -// import mm from 'micromatch'; -import builtins from 'builtin-modules'; -import babel from 'rollup-plugin-babel'; -import commonjs from 'rollup-plugin-commonjs'; -import json from 'rollup-plugin-json'; -import replace from 'rollup-plugin-replace'; -import nodeResolve from 'rollup-plugin-node-resolve'; -import typescript from '@wessberg/rollup-plugin-ts'; -import { terser } from 'rollup-plugin-terser'; - -import { getGlobals, normalizePkg, upperCamelCase } from 'umd-globals'; - -import { rollup as Rollup } from 'rollup'; -import { pass, fail } from '@tunnckocore/create-jest-runner'; -import cosmiconfig from 'cosmiconfig'; - -const debug = Debug('rollup-runner'); - -const explorer = cosmiconfig('jest-runner'); - -const isWin32 = os.platform() === 'win32'; - -function tryExtensions(filepath, extensions) { - const hasExtension = path.extname(filepath).length > 0; - - if (hasExtension) { - return filepath; - } - - // if `--input foo` check `pkg-name/foo.` (e.g. the root of repo or package) - let extension = extensions.find((ext) => fs.existsSync(filepath + ext)); - - if (!extension) { - const dirname = path.dirname(filepath); - const input = path.basename(filepath); - filepath = path.join(dirname, 'src', input); - - // if `--input foo` check `pkg-name/src/foo.` - extension = extensions.find((x) => fs.existsSync(filepath + x)); - } - - if (!extension) { - throw new Error(`Cannot find input file: ${filepath}`); - } - - return filepath + extension; -} - -/* eslint max-statements: ["error", 25] */ -export default async function jetRunnerRollup({ testPath, config }) { +const fs = require('fs'); +const path = require('path'); + +const { pass, fail } = require('@tunnckocore/create-jest-runner'); +const { + getWorkspacesAndExtensions, + isMonorepo, +} = require('@tunnckocore/utils'); +const { rollup } = require('rollup'); +const cosmiconfig = require('cosmiconfig'); + +const jestRunnerConfig = cosmiconfig('jest-runner'); +const jestRunnerRollupConfig = cosmiconfig('jest-runner-rollup'); +const rollupConfigFile = cosmiconfig('rollup'); + +module.exports = async function jetRunnerRollup({ testPath, config }) { const start = new Date(); - let options = normalizeRunnerConfig(explorer.searchSync()); - const cfgs = [].concat(options.rollup).filter(Boolean); - - const { extensions, packageJson } = createAliases( - config.rootDir, - options.srcDir, - ); - const collectedResults = []; - - await Promise.all( - cfgs.map(({ config: cfg, ...opts }) => { - options = { ...options, ...opts }; - - const rollupConfig = { - ...cfg, - input: (cfg && cfg.input) || options.input || testPath, - }; - - rollupConfig.input = tryExtensions(rollupConfig.input, extensions); - return Rollup(rollupConfig).then(async (rollupResponse) => { - const isTsInput = /\.tsx?/.test(rollupConfig.input); + /** Load config from possible places */ + const cfg = await tryLoadConfig({ testPath, config, start }); + if (cfg.hasError) return cfg.error; - if (isTsInput && !extensions.includes('.ts')) { - extensions.unshift('.ts', '.tsx'); - } - - let relativeTestPath = path.relative(config.rootDir, testPath); - - if (isWin32 && !relativeTestPath.includes('/')) { - relativeTestPath = relativeTestPath.replace(/\\/g, '/'); - } - - let outDir = options.outDir || options.outdir; - if (isWin32 && !outDir.includes('/')) { - outDir = outDir.replace(/\\/g, '/'); - } - - const outputs = [].concat(rollupConfig.output).filter(Boolean); - - if (outputs.length === 0) { - outputs.push('esm', 'cjs'); - } - - return Promise.all( - outputs - .map((outputOptions) => - createOutputReducer({ - options, - ...createOuts({ - relativeTestPath, - config, - rollupConfig, - options, - }), - start, - rollup: rollupResponse, - })(outputOptions), - ) - .map(async (promise) => { - const { passing, failing } = await promise; - if (passing) { - collectedResults.push(passing); - } else { - collectedResults.push(failing); - } - }), - ); - }); - }), + /** Find input file */ + const hasExtension = path.extname(testPath).length > 0; + const inputFile = await tryCatch(testPath, start, () => + hasExtension ? testPath : tryExtensions(testPath, config), ); + if (inputFile.hasError) return inputFile.error; - debug('length of collectedResults %d', collectedResults.length); - - // debug('RESULLLLLLLLLLLLLT %s', typeof res); - - // const passing = pass({ - // start, - // end: new Date(), - // test: { path: testPath, title: 'Rollup' }, - // }); - - // const failing = fail({ - // start, - // end: new Date(), - // test: { - // title: 'Rollup', - // path: testPath /* or testPath? */, - // errorMessage: 'Rollup fails to write files...', - // }, - // }); - - // console.log(passing); - // console.log(failing); + const { pkgHook, ...rollupConfig } = cfg; + const pkgHookFn = typeof pkgHook === 'function' ? pkgHook : () => {}; - // return passing; - // console.log(testResults); - - // const str = JSON.stringify(collectedResults.testResults, null, 2); - // debug('collected testResults: %s', str); - - return collectedResults.filter(Boolean)[0]; - // return pass({ - // start, - // end: new Date(), - // test: { path: testPath, title: 'Rollup' }, - // }); -} - -function createOuts({ relativeTestPath, config, rollupConfig, options }) { - // if not in monorepo, the `outs.dir` will be empty - const outs = relativeTestPath.split('/').reduce( - (accumulator, item, idx) => { - // only if we are in monorepo we want to get the first 2 items - // this thing basically gets all between the monorepo root - // and the package's root directory - if (options.isMonorepo(config.cwd) && idx < options.depth) { - return { ...accumulator, dir: accumulator.dir.concat(item) }; - } - - return { - ...accumulator, - file: accumulator.file - .concat(item === options.srcDir ? 0 : item) - .filter(Boolean), - }; - }, - { file: [], dir: [] }, + /** Rull that bundle */ + const bundle = await tryCatch(inputFile, start, () => + rollup({ ...rollupConfig, input: inputFile }), ); - - const packageRoot = path.join(config.rootDir, ...outs.dir.filter(Boolean)); - - const notypesProjectPath = path.join(config.cwd, 'tsconfig.notypes.json'); - const notypesConfig = fs.existsSync(notypesProjectPath) - ? notypesProjectPath - : path.join(__dirname, 'tsconfig.notypes.json'); - - const extern = rollupConfig.externals || options.externals; - const passedExternals = [] - .concat(extern) - .filter(Boolean) - .reduce((acc, extr) => acc.concat(extr.split(',')), []); - - const packageJsonRoot = JSON.parse( - fs.readFileSync(packageRoot, 'package.json'), - ); - - const { node, peerDependencies, dependencies } = packageJsonRoot; - const shouldResolve = rollupConfig.bundleDeps || options.bundleDeps; - const external = [].concat(passedExternals).concat( - // if we want them to be resolved, we should not add - // them to the `external`s array option - shouldResolve - ? [] - : Object.keys(peerDependencies).concat(Object.keys(dependencies)), - node ? builtins : [], - ); - - const pkgGlobals = external.reduce((acc, x) => { - if (acc[x] == null) { - const normalizedPackageName = upperCamelCase(normalizePkg(x)); - return { ...acc, [x]: normalizedPackageName }; - } - return acc; - }, rollupConfig.globals || options.globals); - - return { - packageRoot, - filepath: outs.file.filter(Boolean), - external, - pkgGlobals, - notypesConfig, - }; -} - -function createOutputReducer({ - options, - external, - packageRoot, - pkgGlobals, - notypesConfig, - filepath, - start, - rollup, -}) { - return async (outputOptions) => { - const optsOutput = - typeof outputOptions === 'string' - ? { format: outputOptions } - : outputOptions; - - const getOutFile = (fmt) => - path.join(packageRoot, options.outDir, fmt, filepath); - - const outputFile = getOutFile(optsOutput.format); - - const fileParentDirname = path.dirname(outputFile); - let ext = options.outputExtension; - ext = typeof ext === 'string' ? ext : 'js'; - ext = ext.startsWith('.') ? ext.slice(1) : ext; - - const file = path.join( - fileParentDirname, - `${path.basename(outputFile, path.extname(outputFile))}.${ext}`, - ); - - const rollupOutOptions = { - ...optsOutput, - external, - globals: pkgGlobals, - file, - }; - - return new Promise((resolve) => { - rollup - .write(rollupOutOptions) - .then(() => { - resolve({ - passing: pass({ - start, - end: new Date(), - test: { path: file, title: 'Rollup' }, - }), - }); - }) - .catch((err) => { - resolve({ - failing: fail({ + if (bundle.hasError) return bundle.error; + + /** Find correct root path */ + const pkgRoot = isMonorepo(config.cwd) + ? path.dirname(path.dirname(inputFile)) + : config.rootDir; + + /** Normalize outputs */ + const outputOpts = [].concat(cfg.output).filter(Boolean); + const outputOptions = outputOpts.map((opt) => { + const opts = { file: 'dist/index.js', ...opt }; + + const dest = path.dirname(opts.file); + const dist = opts.file.includes( + opts.format, + ) /* || outputOpts.length === 1 */ + ? dest + : path.join(dest, opts.format); + + const outputFile = path.join(pkgRoot, dist, path.basename(opts.file)); + + return { ...opts, dist, file: outputFile }; + }); + + /** Write output file for each format */ + const res = await tryCatch(inputFile, start, () => + Promise.all( + outputOptions.map((outputOpt) => + bundle + .write(outputOpt) + .then(() => + /** If bundled without problems, print the output file filename */ + pass({ start, - end: new Date(), + end: Date.now(), test: { + path: outputOpt.file, title: 'Rollup', - path: file, - errorMessage: err.message, }, }), - }); + ) + .catch((err) => { + /** If there is problem bundling, re-throw appending output filename */ + err.outputFile = outputOpt.file; + throw err; + }), + ), + ) + /** Bundling process for each format completed successfuly */ + .then(async (testRes) => { + await pkgHookFn({ + ...rollupConfig, + pkgRoot, + output: outputOptions, }); - }); + return testRes; + }) + /** Bundling for some of the formats failed */ + .catch((err) => + fail({ + start, + end: new Date(), + test: { + path: err.outputFile, + title: 'Rollup', + errorMessage: `jest-runner-rollup: ${err.message}`, + }, + }), + ), + ); + if (res.hasError) return res.error; + + return res; +}; + +async function tryCatch(testPath, start, fn) { + try { + return fn(); + } catch (err) { + return { + hasError: true, + error: fail({ + start, + end: new Date(), + test: { + path: testPath, + title: 'Rollup', + errorMessage: `jest-runner-rollup: ${err.message}`, + }, + }), + }; + } +} - // let res = null; +async function tryLoadConfig({ testPath, config: jestConfig, start }) { + const cfg = await tryCatch(testPath, start, () => { + let result = null; + result = jestRunnerConfig.searchSync(); + + if ( + // if `jest-runner.config.js` not found + !result || + // or found + (result && // but // the `rollup` property is not an object + ((result.config.rollup && typeof result.config.rollup !== 'object') || + // or, the `rolldown` property is not an object + (result.config.rolldown && + typeof result.config.rolldown !== 'object') || + // or, there is not such fields + (!result.config.rollup || !result.config.rolldown))) + ) { + // then we trying `jest-runner-rollup.config.js` + result = jestRunnerRollupConfig.searchSync(); + } else { + // if `jest-runner.config.js` found, we try one of both properties + result = { + ...result, + config: result.config.rollup || result.config.rolldown, + }; + } - // try { - // res = await rollup.write(rollupOutOptions); - // } catch (err) { - // return acc.concat( - // fail({ - // start, - // end: new Date(), - // test: { - // title: 'Rollup', - // path: testPath /* or testPath? */, - // errorMessage: err.message, - // }, - // }), - // ); - // } + // if still not found, try regular/original rollup configs, + // like `rollup.config.js`, `.rolluprc.js`, a `rollup` field in package.json, + // or a `.rolluprc.json` and etc + if (!result) { + result = rollupConfigFile.searchSync(); + } - // if (!res) { - // return acc.concat( - // fail({ - // start, - // end: new Date(), - // test: { - // title: 'Rollup', - // path: testPath /* or testPath? */, - // errorMessage: 'Rollup fails to write files...', - // }, - // }), - // ); - // } + return result; + }); + + if (cfg.hasError) return cfg; + + if (!cfg || (cfg && !cfg.config)) { + const filepath = cfg && path.relative(cfg.filepath, jestConfig.cwd); + const message = cfg + ? `Empty configuration, found at: ${filepath}` + : 'Cannot find configuration for Rollup.'; + + return { + hasError: true, + error: fail({ + start, + end: new Date(), + test: { + path: testPath, + title: 'Rollup', + errorMessage: `jest-runner-rollup: ${message}`, + }, + }), + }; + } - // return acc.concat( - // pass({ - // start, - // end: new Date(), - // test: { path: optsOutput.file, title: 'Rollup' }, - // }), - // ); - }; + return cfg.config; } -function normalizeRunnerConfig(val) { - const cfg = val && val.config ? val.config : {}; - const runnerConfig = { - monorepo: false, - outDir: 'dist', - srcDir: 'src', - depth: 2, - outputExtension: 'js', - ...cfg, - }; - - runnerConfig.outDir = runnerConfig.outDir || runnerConfig.outdir; +function tryExtensions(filepath, config) { + const { extensions } = getWorkspacesAndExtensions(config.cwd); + const hasExtension = path.extname(filepath).length > 0; - if (typeof runnerConfig.outDir !== 'string') { - runnerConfig.outDir = 'dist'; - } - if (typeof runnerConfig.srcDir !== 'string') { - runnerConfig.srcDir = 'src'; + if (hasExtension) { + return filepath; } - runnerConfig.isMonorepo = - typeof runnerConfig.isMonorepo === 'function' - ? runnerConfig.isMonorepo - : () => runnerConfig.monorepo; + const extension = extensions.find((ext) => fs.existsSync(filepath + ext)); + if (!extension) { + throw new Error(`Cannot find input file: ${filepath}`); + } - return runnerConfig; + return filepath + extension; } diff --git a/packages/koa-better-body/build/cjs/index.js b/packages/koa-better-body/build/cjs/index.js deleted file mode 100644 index 2d2d9100..00000000 --- a/packages/koa-better-body/build/cjs/index.js +++ /dev/null @@ -1,285 +0,0 @@ -'use strict'; - -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - -var extend = _interopDefault(require('extend-shallow')); -var formidable = _interopDefault(require('formidable')); -var querystring = _interopDefault(require('querystring')); -var bodyParsers = _interopDefault(require('koa-body-parsers')); - -/** - * > Default options that will be loaded. Pass `options` to overwrite them. - * - * @param {Object} `options` - * @return {Object} - * @api private - */ -function defaultOptions(options = {}) { - const cfg = { ...options }; - - const types = defaultTypes(cfg.extendTypes); - const opts = extend( - { - fields: false, - files: false, - multipart: true, - textLimit: false, - formLimit: false, - jsonLimit: false, - jsonStrict: true, - detectJSON: false, - bufferLimit: false, - buffer: false, - strict: true, - - // query string `parse` options - delimiter: '&', - decodeURIComponent: querystring.unescape, - maxKeys: 1000, - }, - cfg, - ); - - opts.delimiter = opts.sep || opts.delimiter; - opts.formLimit = opts.formLimit || opts.urlencodedLimit; - opts.extendTypes = types; - opts.onError = opts.onЕrror || opts.onerror; - opts.onError = typeof opts.onError === 'function' ? opts.onError : false; - - opts.delimiter = typeof opts.delimiter === 'string' ? opts.delimiter : '&'; - - if (typeof opts.handler !== 'function') { - // eslint-disable-next-line no-empty-function - opts.handler = function* noopHandler() {}; - } - if (typeof opts.detectJSON !== 'function') { - opts.detectJSON = function detectJSON() { - return false; - }; - } - - return opts; -} - -/** - * > Only extend/overwrite default accept types. - * - * @param {Object} `types` - * @return {Object} - * @api private - */ -function defaultTypes(types = {}) { - const allTypes = { ...types }; - - return extend( - { - multipart: ['multipart/form-data'], - text: ['text/*'], - form: ['application/x-www-form-urlencoded'], - json: [ - 'application/json', - 'application/json-patch+json', - 'application/vnd.api+json', - 'application/csp-report', - ], - buffer: ['text/*'], - }, - allTypes, - ); -} - -/** - * > Is "valid" request method, according to IETF Draft. - * - * @see https://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-19#section-6.1 - * @param {String} `method` koa request method - * @return {Boolean} - * @api private - */ -function isValid(method) { - return !['GET', 'HEAD', 'DELETE'].includes(method.toUpperCase()); -} - -/** - * > Add `koa-body-parsers` to the koa context. In addition - * also adds the formidable as multipart parser. - * - * @param {Object} `ctx` koa context - * @param {Object} `opts` default options - * @return {Object} `ctx` koa context - * @api private - */ -function setParsers(ctx, opts) { - ctx.app.querystring = - opts.querystring || - opts.qs || // alias - (ctx.app && ctx.app.querystring) || - (ctx.app && ctx.app.qs) || // alias - ctx.qs; // alias - - bodyParsers(ctx); - ctx.request.multipart = multipart.bind(ctx); - return ctx; -} - -/** - * > Formidable wrapper as multipart parser to make - * thunk that later can be yielded. Also allows you to pass - * formidable.IncomingForm instance to `options.IncomingForm`. - * - * @param {Object} `options` passed or default plugin options - * @param {Object} `ctx` koa context - * @return {Function} thunk - * @api private - */ -function multipart(opts) { - const ctx = this; - - return function thunk(done) { - const fields = {}; - const fileFields = {}; - const files = []; - const form = - opts.IncomingForm instanceof formidable.IncomingForm - ? opts.IncomingForm - : new formidable.IncomingForm(opts); - - form.on('error', done); - form.on('aborted', done); - form.on('file', (name, file) => { - files.push(file); - fileFields[name] = fileFields[name] || []; - fileFields[name].push(file); - }); - form.on('field', (name, field) => { - // eslint-disable-next-line no-prototype-builtins - if (fields.hasOwnProperty(name)) { - if (Array.isArray(fields[name])) { - fields[name].push(field); - } else { - fields[name] = [fields[name], field]; - } - } else { - fields[name] = field; - } - }); - form.on('end', () => { - done(null, { - fields: { ...fields, ...fileFields }, - files, - }); - }); - form.parse(ctx.req); - }; -} - -/** - * > Parse a different type of request bodies. By default accepts - * and can parse JSON, JSON-API, JSON-Patch, text, form, urlencoded - * and buffer bodies. - * - * @param {Object} `ctx` koa context - * @param {Object} `options` plugin options - * @param {Function} `next` next middleware - * @api private - */ - -// eslint-disable-next-line max-statements, consistent-return -function* parseBody(ctx, options, next) { - const fields = typeof options.fields === 'string' ? options.fields : 'fields'; - const files = typeof options.files === 'string' ? options.files : 'files'; - const { custom } = options.extendTypes; - - if (custom && custom.length > 0 && ctx.request.is(custom)) { - yield* options.handler.call(ctx, ctx, options, next); - return yield* next; - } - if (options.detectJSON(ctx) || ctx.request.is(options.extendTypes.json)) { - ctx.app.jsonStrict = - typeof options.jsonStrict === 'boolean' ? options.jsonStrict : true; - ctx.request[fields] = yield ctx.request.json(options.jsonLimit); - return yield* next; - } - if ( - ctx.request.is(options.extendTypes.form || options.extendTypes.urlencoded) - ) { - const res = yield ctx.request.urlencoded(options.formLimit); - ctx.request[fields] = res; - return yield* next; - } - if (options.buffer && ctx.request.is(options.extendTypes.buffer)) { - ctx.request.body = yield ctx.request.buffer(options.bufferLimit); - return yield* next; - } - if (ctx.request.is(options.extendTypes.text)) { - const limit = options.textLimit; - const body = yield ctx.request.text(limit); - - ctx.request.body = body; - return yield* next; - } - if (options.multipart && ctx.request.is(options.extendTypes.multipart)) { - const result = yield ctx.request.multipart(options); - ctx.request[fields] = result.fields; - ctx.request[files] = result.files; - return yield* next; - } -} - -/*! - * koa-better-body - * - * Copyright (c) 2014-2016 Charlike Mike Reagent <@tunnckoCore> (http://www.tunnckocore.tk) - * Released under the MIT license. - */ - -/** - * > Robust body parser for [koa][]@1, also works for `koa@2` (with deprecations). - * Will also work for future `koa@3` with [koa-convert][]. - * - * **Example** - * - * ```js - * var koa = require('koa') - * var body = require('koa-better-body') - * var app = koa() - * - * app - * .use(body()) - * .use(function * () { - * console.log(this.request.body) // if buffer or text - * console.log(this.request.files) // if multipart or urlencoded - * console.log(this.request.fields) // if json - * }) - * .listen(8080, function () { - * console.log('koa server start listening on port 8080') - * }) - * ``` - * - * @param {Object} `options` see more on [options section](#options) - * @return {GeneratorFunction} - * @api public - */ - -function koaBetterBody(options) { - const opts = defaultOptions(options); - - // eslint-disable-next-line consistent-return - return function* plugin(next) { - if (opts.strict && !isValid(this.method)) { - return yield* next; - } - - try { - setParsers(this, opts); - yield* parseBody(this, opts, next); - } catch (err) { - if (!opts.onError) throw err; - opts.onError(err, this); - } - - yield* next; - }; -} - -module.exports = koaBetterBody; diff --git a/packages/koa-better-body/build/esm/index.js b/packages/koa-better-body/build/esm/index.js deleted file mode 100644 index b51971fc..00000000 --- a/packages/koa-better-body/build/esm/index.js +++ /dev/null @@ -1,281 +0,0 @@ -import extend from 'extend-shallow'; -import formidable from 'formidable'; -import querystring from 'querystring'; -import bodyParsers from 'koa-body-parsers'; - -/** - * > Default options that will be loaded. Pass `options` to overwrite them. - * - * @param {Object} `options` - * @return {Object} - * @api private - */ -function defaultOptions(options = {}) { - const cfg = { ...options }; - - const types = defaultTypes(cfg.extendTypes); - const opts = extend( - { - fields: false, - files: false, - multipart: true, - textLimit: false, - formLimit: false, - jsonLimit: false, - jsonStrict: true, - detectJSON: false, - bufferLimit: false, - buffer: false, - strict: true, - - // query string `parse` options - delimiter: '&', - decodeURIComponent: querystring.unescape, - maxKeys: 1000, - }, - cfg, - ); - - opts.delimiter = opts.sep || opts.delimiter; - opts.formLimit = opts.formLimit || opts.urlencodedLimit; - opts.extendTypes = types; - opts.onError = opts.onЕrror || opts.onerror; - opts.onError = typeof opts.onError === 'function' ? opts.onError : false; - - opts.delimiter = typeof opts.delimiter === 'string' ? opts.delimiter : '&'; - - if (typeof opts.handler !== 'function') { - // eslint-disable-next-line no-empty-function - opts.handler = function* noopHandler() {}; - } - if (typeof opts.detectJSON !== 'function') { - opts.detectJSON = function detectJSON() { - return false; - }; - } - - return opts; -} - -/** - * > Only extend/overwrite default accept types. - * - * @param {Object} `types` - * @return {Object} - * @api private - */ -function defaultTypes(types = {}) { - const allTypes = { ...types }; - - return extend( - { - multipart: ['multipart/form-data'], - text: ['text/*'], - form: ['application/x-www-form-urlencoded'], - json: [ - 'application/json', - 'application/json-patch+json', - 'application/vnd.api+json', - 'application/csp-report', - ], - buffer: ['text/*'], - }, - allTypes, - ); -} - -/** - * > Is "valid" request method, according to IETF Draft. - * - * @see https://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-19#section-6.1 - * @param {String} `method` koa request method - * @return {Boolean} - * @api private - */ -function isValid(method) { - return !['GET', 'HEAD', 'DELETE'].includes(method.toUpperCase()); -} - -/** - * > Add `koa-body-parsers` to the koa context. In addition - * also adds the formidable as multipart parser. - * - * @param {Object} `ctx` koa context - * @param {Object} `opts` default options - * @return {Object} `ctx` koa context - * @api private - */ -function setParsers(ctx, opts) { - ctx.app.querystring = - opts.querystring || - opts.qs || // alias - (ctx.app && ctx.app.querystring) || - (ctx.app && ctx.app.qs) || // alias - ctx.qs; // alias - - bodyParsers(ctx); - ctx.request.multipart = multipart.bind(ctx); - return ctx; -} - -/** - * > Formidable wrapper as multipart parser to make - * thunk that later can be yielded. Also allows you to pass - * formidable.IncomingForm instance to `options.IncomingForm`. - * - * @param {Object} `options` passed or default plugin options - * @param {Object} `ctx` koa context - * @return {Function} thunk - * @api private - */ -function multipart(opts) { - const ctx = this; - - return function thunk(done) { - const fields = {}; - const fileFields = {}; - const files = []; - const form = - opts.IncomingForm instanceof formidable.IncomingForm - ? opts.IncomingForm - : new formidable.IncomingForm(opts); - - form.on('error', done); - form.on('aborted', done); - form.on('file', (name, file) => { - files.push(file); - fileFields[name] = fileFields[name] || []; - fileFields[name].push(file); - }); - form.on('field', (name, field) => { - // eslint-disable-next-line no-prototype-builtins - if (fields.hasOwnProperty(name)) { - if (Array.isArray(fields[name])) { - fields[name].push(field); - } else { - fields[name] = [fields[name], field]; - } - } else { - fields[name] = field; - } - }); - form.on('end', () => { - done(null, { - fields: { ...fields, ...fileFields }, - files, - }); - }); - form.parse(ctx.req); - }; -} - -/** - * > Parse a different type of request bodies. By default accepts - * and can parse JSON, JSON-API, JSON-Patch, text, form, urlencoded - * and buffer bodies. - * - * @param {Object} `ctx` koa context - * @param {Object} `options` plugin options - * @param {Function} `next` next middleware - * @api private - */ - -// eslint-disable-next-line max-statements, consistent-return -function* parseBody(ctx, options, next) { - const fields = typeof options.fields === 'string' ? options.fields : 'fields'; - const files = typeof options.files === 'string' ? options.files : 'files'; - const { custom } = options.extendTypes; - - if (custom && custom.length > 0 && ctx.request.is(custom)) { - yield* options.handler.call(ctx, ctx, options, next); - return yield* next; - } - if (options.detectJSON(ctx) || ctx.request.is(options.extendTypes.json)) { - ctx.app.jsonStrict = - typeof options.jsonStrict === 'boolean' ? options.jsonStrict : true; - ctx.request[fields] = yield ctx.request.json(options.jsonLimit); - return yield* next; - } - if ( - ctx.request.is(options.extendTypes.form || options.extendTypes.urlencoded) - ) { - const res = yield ctx.request.urlencoded(options.formLimit); - ctx.request[fields] = res; - return yield* next; - } - if (options.buffer && ctx.request.is(options.extendTypes.buffer)) { - ctx.request.body = yield ctx.request.buffer(options.bufferLimit); - return yield* next; - } - if (ctx.request.is(options.extendTypes.text)) { - const limit = options.textLimit; - const body = yield ctx.request.text(limit); - - ctx.request.body = body; - return yield* next; - } - if (options.multipart && ctx.request.is(options.extendTypes.multipart)) { - const result = yield ctx.request.multipart(options); - ctx.request[fields] = result.fields; - ctx.request[files] = result.files; - return yield* next; - } -} - -/*! - * koa-better-body - * - * Copyright (c) 2014-2016 Charlike Mike Reagent <@tunnckoCore> (http://www.tunnckocore.tk) - * Released under the MIT license. - */ - -/** - * > Robust body parser for [koa][]@1, also works for `koa@2` (with deprecations). - * Will also work for future `koa@3` with [koa-convert][]. - * - * **Example** - * - * ```js - * var koa = require('koa') - * var body = require('koa-better-body') - * var app = koa() - * - * app - * .use(body()) - * .use(function * () { - * console.log(this.request.body) // if buffer or text - * console.log(this.request.files) // if multipart or urlencoded - * console.log(this.request.fields) // if json - * }) - * .listen(8080, function () { - * console.log('koa server start listening on port 8080') - * }) - * ``` - * - * @param {Object} `options` see more on [options section](#options) - * @return {GeneratorFunction} - * @api public - */ - -function koaBetterBody(options) { - const opts = defaultOptions(options); - - // eslint-disable-next-line consistent-return - return function* plugin(next) { - if (opts.strict && !isValid(this.method)) { - return yield* next; - } - - try { - setParsers(this, opts); - yield* parseBody(this, opts, next); - } catch (err) { - if (!opts.onError) throw err; - opts.onError(err, this); - } - - yield* next; - }; -} - -export default koaBetterBody; diff --git a/rlp.js b/rlp.js deleted file mode 100644 index 1623d9e7..00000000 --- a/rlp.js +++ /dev/null @@ -1,109 +0,0 @@ -// // const testResults = pMapSeries(cfgs.reduce((acc) => {})) -// const testResults = await Promise.all( -// cfgs.reduce(async (acc, { config: cfg = {}, ...opts }) => { -// options = { ...options, ...opts }; - -// const rollupConfig = { -// ...cfg, -// input: cfg.input || options.input || testPath, -// }; -// let result = null; - -// try { -// result = await rollup(rollupConfig); -// } catch (err) { -// return acc.concat( -// fail({ -// start, -// end: new Date(), -// test: { -// path: testPath, -// title: 'Rollup', -// errorMessage: err.message, -// }, -// }), -// ); -// } - -// // Classics in the genre! Yes, it's possible, sometimes. -// // Old habit for ensurance -// /* istanbul ignore next */ -// if (!result) { -// return acc.concat( -// fail({ -// start, -// end: new Date(), -// test: { -// path: testPath, -// title: 'Rollup', -// errorMessage: `Rollup runner fails...`, -// }, -// }), -// ); -// } - -// const meta = utils.createAliases(config.root, options.srcDir); -// let relativeTestPath = path.relative(meta.packageRootPath, testPath); - -// if (isWin32 && !relativeTestPath.includes('/')) { -// relativeTestPath = relativeTestPath.replace(/\\/g, '/'); -// } - -// let outDir = options.outDir || options.outdir; -// if (isWin32 && !outDir.includes('/')) { -// outDir = outDir.replace(/\\/g, '/'); -// } - -// const outFileParts = relativeTestPath -// .split('/') -// .reduce( -// (accumulator, x) => acc.concat(x === options.srcDir ? null : x), -// [], -// ) -// .filter(Boolean); - -// const outputs = [].concat(rollupConfig.output).filter(Boolean); - -// if (outputs.length === 0) { -// outputs.push('esm', 'cjs'); -// // outputs.length === 0 ? ['esm', 'cjs'] -// } - -// const responses = outputs.map((outputOptions) => { -// const outputOpts = -// typeof outputOptions === 'string' -// ? { format: outputOptions } -// : outputOptions; - -// const file = path.join( -// meta.packageRootPath, -// outDir, -// outputOpts.format, -// ...outFileParts, -// ); - -// return result -// .write({ ...outputOpts, file }) -// .then(() => -// pass({ -// start, -// end: new Date(), -// test: { path: outputOpts.file, title: 'Rollup' }, -// }), -// ) -// .catch((err) => -// fail({ -// start, -// end: new Date(), -// test: { -// title: 'Rollup', -// path: outputOpts.file, -// errorMessage: err.message, -// }, -// }), -// ); -// }); - -// return acc.concat(responses); -// }, []), -// ); diff --git a/yarn.lock b/yarn.lock index 8bb429c1..933fad83 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,9 +3,9 @@ "@babel/cli@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.6.0.tgz#1470a04394eaf37862989ea4912adf440fa6ff8d" - integrity sha512-1CTDyGUjQqW3Mz4gfKZ04KGOckyyaNmKneAMlABPS+ZyuxWv3FrVEVz7Ag08kNIztVx8VaJ8YgvYLSNlMKAT5Q== + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.6.2.tgz#4ce8b5b4b2e4b4c1b7bd841cec62085e2dfc4465" + integrity sha512-JDZ+T/br9pPfT2lmAMJypJDTTTHM9ePD/ED10TRjRzJVdEVy+JB3iRlhzYmTt5YkNgHvxWGlUVnLtdv6ruiDrQ== dependencies: commander "^2.8.1" convert-source-map "^1.1.0" @@ -26,7 +26,7 @@ dependencies: "@babel/highlight" "^7.0.0" -"@babel/core@7.6.0", "@babel/core@^7.1.0", "@babel/core@^7.5.5", "@babel/core@^7.6.0": +"@babel/core@7.6.0": version "7.6.0" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.0.tgz#9b00f73554edd67bebc86df8303ef678be3d7b48" integrity sha512-FuRhDRtsd6IptKpHXAa+4WPZYY2ZzgowkbLBecEDDSje1X/apG7jQM33or3NdOmjXBKWGOg4JmSiRfUfuTtHXw== @@ -46,16 +46,35 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.4.0", "@babel/generator@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.0.tgz#e2c21efbfd3293ad819a2359b448f002bfdfda56" - integrity sha512-Ms8Mo7YBdMMn1BYuNtKuP/z0TgEIhbcyB8HVR6PPNYp4P61lMsABiS4A3VG1qznjXVCf3r+fVHhm4efTYVsySA== +"@babel/core@^7.1.0", "@babel/core@^7.6.0": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.2.tgz#069a776e8d5e9eefff76236bc8845566bd31dd91" + integrity sha512-l8zto/fuoZIbncm+01p8zPSDZu/VuuJhAfA7d/AbzM09WR7iVhavvfNDYCNpo1VvLk6E6xgAoP9P+/EMJHuRkQ== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.6.2" + "@babel/helpers" "^7.6.2" + "@babel/parser" "^7.6.2" + "@babel/template" "^7.6.0" + "@babel/traverse" "^7.6.2" + "@babel/types" "^7.6.0" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.4.0", "@babel/generator@^7.6.0", "@babel/generator@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.2.tgz#dac8a3c2df118334c2a29ff3446da1636a8f8c03" + integrity sha512-j8iHaIW4gGPnViaIHI7e9t/Hl8qLjERI6DcV9kEpAIDJsAOrcnXqRS7t+QbhL76pwbtqP+QCQLL0z1CyVmtjjQ== dependencies: "@babel/types" "^7.6.0" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" - trim-right "^1.0.1" "@babel/helper-annotate-as-pure@^7.0.0": version "7.0.0" @@ -232,13 +251,13 @@ "@babel/traverse" "^7.1.0" "@babel/types" "^7.2.0" -"@babel/helpers@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.0.tgz#21961d16c6a3c3ab597325c34c465c0887d31c6e" - integrity sha512-W9kao7OBleOjfXtFGgArGRX6eCP0UEcA2ZWEWNkJdRZnHhW4eEbeswbG3EwaRsnQUAEGWYgMq1HsIXuNNNy2eQ== +"@babel/helpers@^7.6.0", "@babel/helpers@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.2.tgz#681ffe489ea4dcc55f23ce469e58e59c1c045153" + integrity sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA== dependencies: "@babel/template" "^7.6.0" - "@babel/traverse" "^7.6.0" + "@babel/traverse" "^7.6.2" "@babel/types" "^7.6.0" "@babel/highlight@^7.0.0": @@ -250,10 +269,10 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.0.tgz#3e05d0647432a8326cb28d0de03895ae5a57f39b" - integrity sha512-+o2q111WEx4srBs7L9eJmcwi655eD8sXniLqMB93TBK9GrNzGrxDWSjiqz2hLU0Ha8MTXFIP0yd9fNdP+m43ZQ== +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.6.0", "@babel/parser@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.2.tgz#205e9c95e16ba3b8b96090677a67c9d6075b70a1" + integrity sha512-mdFqWrSPCmikBoaBYMuBulzTIKuXVPtEISFbRRVNwMWpCms/hmE2kRq0bblUHaNRKrjRlmVbx1sDHmjmRgD2Xg== "@babel/plugin-proposal-async-generator-functions@^7.2.0": version "7.2.0" @@ -329,7 +348,7 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.2.0" -"@babel/plugin-proposal-object-rest-spread@7.5.5", "@babel/plugin-proposal-object-rest-spread@^7.5.5": +"@babel/plugin-proposal-object-rest-spread@7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz#61939744f71ba76a3ae46b5eea18a54c16d22e58" integrity sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw== @@ -337,6 +356,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" +"@babel/plugin-proposal-object-rest-spread@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz#8ffccc8f3a6545e9f78988b6bf4fe881b88e8096" + integrity sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-proposal-optional-catch-binding@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" @@ -385,14 +412,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-throw-expressions" "^7.2.0" -"@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" - integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== +"@babel/plugin-proposal-unicode-property-regex@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.6.2.tgz#05413762894f41bfe42b9a5e80919bd575dcc802" + integrity sha512-NxHETdmpeSCtiatMRYWVJo7266rrvAC3DTeG5exQBIH/fMIUK7ejDNznBbn3HQl/o9peymRRg7Yqkx6PdUXmMw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" + regexpu-core "^4.6.0" "@babel/plugin-syntax-async-generators@^7.2.0": version "7.2.0" @@ -543,10 +570,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-block-scoping@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.0.tgz#c49e21228c4bbd4068a35667e6d951c75439b1dc" - integrity sha512-tIt4E23+kw6TgL/edACZwP1OUKrjOTyMrFMLoT5IOFrfMRabCgekjqFd5o6PaAMildBu46oFkekIdMuGkkPEpA== +"@babel/plugin-transform-block-scoping@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.2.tgz#96c33ab97a9ae500cc6f5b19e04a7e6553360a79" + integrity sha512-zZT8ivau9LOQQaOGC7bQLQOT4XPkPXgN2ERfUgk1X8ql+mVkLc4E8eKk+FO3o0154kxzqenWCorfmEXpEZcrSQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" lodash "^4.17.13" @@ -579,14 +606,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" - integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== +"@babel/plugin-transform-dotall-regex@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.6.2.tgz#44abb948b88f0199a627024e1508acaf8dc9b2f9" + integrity sha512-KGKT9aqKV+9YMZSkowzYoYEiHqgaDhGmPNZlZxX6UeHC4z30nC1J9IrZuGqbYFB1jaIGdv91ujpze0exiVK8bA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" + regexpu-core "^4.6.0" "@babel/plugin-transform-duplicate-keys@^7.5.0": version "7.5.0" @@ -668,12 +695,12 @@ "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-named-capturing-groups-regex@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.0.tgz#1e6e663097813bb4f53d42df0750cf28ad3bb3f1" - integrity sha512-jem7uytlmrRl3iCAuQyw8BpB4c4LWvSpvIeXKpMb+7j84lkx4m4mYr5ErAcmN5KM7B6BqrAvRGjBIbbzqCczew== +"@babel/plugin-transform-named-capturing-groups-regex@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.2.tgz#c1ca0bb84b94f385ca302c3932e870b0fb0e522b" + integrity sha512-xBdB+XOs+lgbZc2/4F5BVDVcDNS4tcSKQc96KmlqLEAwz6tpYPEvPdmDfvVG0Ssn8lAhronaRs6Z6KSexIpK5g== dependencies: - regexp-tree "^0.1.13" + regexpu-core "^4.6.0" "@babel/plugin-transform-new-target@^7.4.4": version "7.4.4" @@ -752,16 +779,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-runtime@^7.5.5": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.0.tgz#85a3cce402b28586138e368fce20ab3019b9713e" - integrity sha512-Da8tMf7uClzwUm/pnJ1S93m/aRXmoYNDD7TkHua8xBDdaAs54uZpTWvEt6NGwmoVMb9mZbntfTqmG2oSzN/7Vg== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - resolve "^1.8.1" - semver "^5.5.1" - "@babel/plugin-transform-shorthand-properties@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" @@ -769,10 +786,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-spread@^7.2.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" - integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== +"@babel/plugin-transform-spread@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz#fc77cf798b24b10c46e1b51b1b88c2bf661bb8dd" + integrity sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -808,28 +825,28 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-typescript" "^7.2.0" -"@babel/plugin-transform-unicode-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" - integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== +"@babel/plugin-transform-unicode-regex@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.6.2.tgz#b692aad888a7e8d8b1b214be6b9dc03d5031f698" + integrity sha512-orZI6cWlR3nk2YmYdb0gImrgCUwb5cBUwjf6Ks6dvNVvXERkwtJWOQaEOjPiu0Gu1Tq6Yq/hruCZZOOi9F34Dw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" + regexpu-core "^4.6.0" -"@babel/preset-env@^7.5.5", "@babel/preset-env@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.6.0.tgz#aae4141c506100bb2bfaa4ac2a5c12b395619e50" - integrity sha512-1efzxFv/TcPsNXlRhMzRnkBFMeIqBBgzwmZwlFDw5Ubj0AGLeufxugirwZmkkX/ayi3owsSqoQ4fw8LkfK9SYg== +"@babel/preset-env@^7.6.0": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.6.2.tgz#abbb3ed785c7fe4220d4c82a53621d71fc0c75d3" + integrity sha512-Ru7+mfzy9M1/YTEtlDS8CD45jd22ngb9tXnn64DvQK3ooyqSw9K4K9DUWmYknTTVk4TqygL9dqCrZgm1HMea/Q== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-async-generator-functions" "^7.2.0" "@babel/plugin-proposal-dynamic-import" "^7.5.0" "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.5.5" + "@babel/plugin-proposal-object-rest-spread" "^7.6.2" "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-proposal-unicode-property-regex" "^7.6.2" "@babel/plugin-syntax-async-generators" "^7.2.0" "@babel/plugin-syntax-dynamic-import" "^7.2.0" "@babel/plugin-syntax-json-strings" "^7.2.0" @@ -838,11 +855,11 @@ "@babel/plugin-transform-arrow-functions" "^7.2.0" "@babel/plugin-transform-async-to-generator" "^7.5.0" "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.6.0" + "@babel/plugin-transform-block-scoping" "^7.6.2" "@babel/plugin-transform-classes" "^7.5.5" "@babel/plugin-transform-computed-properties" "^7.2.0" "@babel/plugin-transform-destructuring" "^7.6.0" - "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.6.2" "@babel/plugin-transform-duplicate-keys" "^7.5.0" "@babel/plugin-transform-exponentiation-operator" "^7.2.0" "@babel/plugin-transform-for-of" "^7.4.4" @@ -853,7 +870,7 @@ "@babel/plugin-transform-modules-commonjs" "^7.6.0" "@babel/plugin-transform-modules-systemjs" "^7.5.0" "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.6.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.6.2" "@babel/plugin-transform-new-target" "^7.4.4" "@babel/plugin-transform-object-super" "^7.5.5" "@babel/plugin-transform-parameters" "^7.4.4" @@ -861,11 +878,11 @@ "@babel/plugin-transform-regenerator" "^7.4.5" "@babel/plugin-transform-reserved-words" "^7.2.0" "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.2.0" + "@babel/plugin-transform-spread" "^7.6.2" "@babel/plugin-transform-sticky-regex" "^7.2.0" "@babel/plugin-transform-template-literals" "^7.4.4" "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.4.4" + "@babel/plugin-transform-unicode-regex" "^7.6.2" "@babel/types" "^7.6.0" browserslist "^4.6.0" core-js-compat "^3.1.1" @@ -893,9 +910,9 @@ "@babel/plugin-transform-typescript" "^7.6.0" "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.0.tgz#4fc1d642a9fd0299754e8b5de62c631cf5568205" - integrity sha512-89eSBLJsxNxOERC0Op4vd+0Bqm6wRMqMbFtV3i0/fbaWw/mJ8Q3eBvgX0G4SyrOOLCtbu98HspF8o09MRT+KzQ== + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.6.2.tgz#c3d6e41b304ef10dcf13777a33e7694ec4a9a6dd" + integrity sha512-EXxN64agfUqqIGeEjI5dL5z0Sw0ZwWo1mLTi4mQowCZ42O59b7DRpZAnTC6OqdF28wMBMFKNb/4uFGrVaigSpg== dependencies: regenerator-runtime "^0.13.2" @@ -908,16 +925,16 @@ "@babel/parser" "^7.6.0" "@babel/types" "^7.6.0" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5", "@babel/traverse@^7.6.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.0.tgz#389391d510f79be7ce2ddd6717be66d3fed4b516" - integrity sha512-93t52SaOBgml/xY74lsmt7xOR4ufYvhb5c5qiM6lu4J/dWGMAfAh6eKw4PjLes6DI6nQgearoxnFJk60YchpvQ== +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5", "@babel/traverse@^7.6.0", "@babel/traverse@^7.6.2": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.2.tgz#b0e2bfd401d339ce0e6c05690206d1e11502ce2c" + integrity sha512-8fRE76xNwNttVEF2TwxJDGBLWthUkHWSldmfuBzVRmEDWOtu4XdINTgN7TDWzuLg4bbeIMLvfMFD9we5YcWkRQ== dependencies: "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.6.0" + "@babel/generator" "^7.6.2" "@babel/helper-function-name" "^7.1.0" "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.6.0" + "@babel/parser" "^7.6.2" "@babel/types" "^7.6.0" debug "^4.1.0" globals "^11.1.0" @@ -2081,10 +2098,10 @@ mkdirp "^0.5.1" rimraf "^2.5.2" -"@mdx-js/util@^1.4.5": - version "1.4.5" - resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.4.5.tgz#6426e8473f81fcca7648d09d11d263e3070ddcce" - integrity sha512-1MkrXjMfbFnVEkFGqc7oBf2iWObVbkxyBue0C24B+0Qg5s2gejIhs/wcA5/2c9RqvACURDgPNiD6rx3lf+zRsQ== +"@mdx-js/util@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-1.5.0.tgz#4915de47ae55ae62bb26eef073b8e022ea506e14" + integrity sha512-+mJxrZfDoZ1TX/BVxBaDtYfZFS95r6Z6u5CnYNZJYZdcELUaBX0D7FMM9Up/sb9OTq1sfxHkEkud8sohqrIT/Q== "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" @@ -2100,9 +2117,9 @@ integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== "@octokit/endpoint@^5.1.0": - version "5.3.5" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-5.3.5.tgz#2822c3b01107806dbdce3863b6205e3eff4289ed" - integrity sha512-f8KqzIrnzPLiezDsZZPB+K8v8YSv6aKFl7eOu59O46lmlW4HagWl1U6NWl6LmT8d1w7NsKBI3paVtzcnRGO1gw== + version "5.3.6" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-5.3.6.tgz#58a67b75b853127568e0db533cdd10f3bdca2e23" + integrity sha512-XuerByak8H+jW9J/rVMEdBXfI4UTsDWUwAKgIP/uhQjXIUVdPRwt2Zg+SmbWQ+WY7pRkw/hFVES8C4G/Kle7oA== dependencies: is-plain-object "^3.0.0" universal-user-agent "^4.0.0" @@ -2134,9 +2151,9 @@ universal-user-agent "^4.0.0" "@octokit/rest@^16.28.4": - version "16.28.9" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.28.9.tgz#ac8c5f3ff305e9e0a0989a5245e4286f057a95d7" - integrity sha512-IKGnX+Tvzt7XHhs8f4ajqxyJvYAMNX5nWfoJm4CQj8LZToMiaJgutf5KxxpxoC3y5w7JTJpW5rnWnF4TsIvCLA== + version "16.30.1" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.30.1.tgz#03e6dfb93e9a9cd2b3bacb95c49a8c7923f42ad0" + integrity sha512-1n2QzTbbaBXNLpx7WHlcsSMdJvxSdKmerXQm+bMYlKDbQM19uq446ZpGs7Ynq5SsdLj1usIfgJ9gJf4LtcWkDw== dependencies: "@octokit/request" "^5.0.0" "@octokit/request-error" "^1.0.2" @@ -2266,11 +2283,11 @@ babel-preset-proposal-typescript "^1.4.1" "@tunnckocore/eslint-config@*": - version "4.1.6" - resolved "https://registry.yarnpkg.com/@tunnckocore/eslint-config/-/eslint-config-4.1.6.tgz#25e2eb89b518100eedcdac766726593ee60f8b6e" - integrity sha512-DngNm8rEE1vN7ACXW2vm4i5z9i8NbLJ+HGlkzepMBToscdMpmoCwGjmnOQ/ZhWnnymJuMuyh8o6GUz5e+EKXjw== + version "4.1.10" + resolved "https://registry.yarnpkg.com/@tunnckocore/eslint-config/-/eslint-config-4.1.10.tgz#50b014423ef5193f8ceef957ffb404626e92992b" + integrity sha512-/Bg/RudNpiG65lRFeWjF+RL+9wpEJV65jIHElBoSMuZgJj29TYFliOMJSeEUKkvntlHJUtbj52xw+woQglk4/g== dependencies: - "@tunnckocore/utils" "^0.5.2" + "@tunnckocore/utils" "^0.7.0" "@typescript-eslint/eslint-plugin" "^2.3.0" "@typescript-eslint/parser" "^2.3.0" babel-eslint "^10.0.3" @@ -2304,11 +2321,6 @@ resolved "https://registry.yarnpkg.com/@tunnckocore/typescript-config/-/typescript-config-0.3.1.tgz#2ec44bc5e4e7cad023e5e2f34360c0bc0f5cd597" integrity sha512-SNrvUSzWuMi5Qp9SMGrJAlir7zn7xEQOquRxv8Y71stf4v+OkHGs+yl2N51Hb2DdlAg/ouMdFzqhiXmXlTZnSw== -"@tunnckocore/utils@^0.5.2": - version "0.5.3" - resolved "https://registry.yarnpkg.com/@tunnckocore/utils/-/utils-0.5.3.tgz#1d2f442c7803dc620f56487a10a72043d4d91b57" - integrity sha512-tMpAQyWZk0u+g7U5zBorPIjXzI4C3mbWz7DYpqMh/deEmwS6HDzEWY9s/HfJLeciZmtAASN37zfvqzgqEzwK2Q== - "@types/babel__core@^7.1.0": version "7.1.3" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.3.tgz#e441ea7df63cd080dfcd02ab199e6d16a735fc30" @@ -2321,9 +2333,9 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.0.2.tgz#d2112a6b21fad600d7674274293c85dce0cb47fc" - integrity sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ== + version "7.6.0" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.0.tgz#f1ec1c104d1bb463556ecb724018ab788d0c172a" + integrity sha512-c1mZUu4up5cp9KROs/QAw0gTeHrw/x7m52LcnvMxxOZ03DmLwPV0MlGmlgzV3cnSdjhJOZsj7E7FHeioai+egw== dependencies: "@babel/types" "^7.0.0" @@ -2347,7 +2359,7 @@ resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== -"@types/estree@0.0.39": +"@types/estree@*", "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== @@ -2396,28 +2408,16 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== -"@types/mkdirp@^0.5.2": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.5.2.tgz#503aacfe5cc2703d5484326b1b27efa67a339c1f" - integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== - dependencies: - "@types/node" "*" - -"@types/node@*", "@types/node@^12.0.2", "@types/node@^12.7.2", "@types/node@^12.7.5": - version "12.7.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.5.tgz#e19436e7f8e9b4601005d73673b6dc4784ffcc2f" - integrity sha512-9fq4jZVhPNW8r+UYKnxF1e2HkDWOWKM5bC2/7c9wPV835I0aOrVbS/Hw/pWPk2uKrNXQqg9Z959Kz+IYDd5p3w== +"@types/node@*", "@types/node@^12.0.2": + version "12.7.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.8.tgz#cb1bf6800238898bc2ff6ffa5702c3cadd350708" + integrity sha512-FMdVn84tJJdV+xe+53sYiZS4R5yn1mAIxfj+DVoNiQjTYz1+OYmjwEZr1ev9nU0axXwda0QDbYl06QHanRVH3A== "@types/normalize-package-data@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== -"@types/object-path@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@types/object-path/-/object-path-0.11.0.tgz#0b744309b2573dc8bf867ef589b6288be998e602" - integrity sha512-/tuN8jDbOXcPk+VzEVZzzAgw1Byz7s/itb2YI10qkSyy6nykJH02DuhfrflxVdAdE7AZ91h5X6Cn0dmVdFw2TQ== - "@types/resolve@0.0.8": version "0.0.8" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" @@ -2425,7 +2425,7 @@ dependencies: "@types/node" "*" -"@types/semver@^6.0.0", "@types/semver@^6.0.1": +"@types/semver@^6.0.1": version "6.0.2" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-6.0.2.tgz#5e8b09f0e4af53034b1d0fb9977a277847836205" integrity sha512-G1Ggy7/9Nsa1Jt2yiBR2riEuyK2DFNnqow6R7cromXPMNynackRY1vqFTLz/gwnef1LHokbXThcPhqMRjUbkpQ== @@ -2435,11 +2435,6 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== -"@types/ua-parser-js@^0.7.33": - version "0.7.33" - resolved "https://registry.yarnpkg.com/@types/ua-parser-js/-/ua-parser-js-0.7.33.tgz#4a92089511574e12928a7cb6b99a01831acd1dd7" - integrity sha512-ngUKcHnytUodUCL7C6EZ+lVXUjTMQb+9p/e1JjV5tN9TVzS98lHozWEFRPY1QcCdwFeMsmVWfZ3DPPT/udCyIw== - "@types/unist@^2.0.0", "@types/unist@^2.0.2": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" @@ -2451,30 +2446,30 @@ integrity sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg== "@types/yargs@^13.0.0": - version "13.0.2" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.2.tgz#a64674fc0149574ecd90ba746e932b5a5f7b3653" - integrity sha512-lwwgizwk/bIIU+3ELORkyuOgDjCh7zuWDFqRtPPhhVgq9N1F7CvLNKg1TX4f2duwtKQ0p044Au9r1PLIXHrIzQ== + version "13.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.3.tgz#76482af3981d4412d65371a318f992d33464a380" + integrity sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ== dependencies: "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.3.0.tgz#6ead12c6b15a9b930430931e396e01a1fe181fcc" - integrity sha512-QgO/qmNye+rKsU7dan6pkBTSfpbyrHJidsw9bR3gZCrQNTB9eWQ5+UDkrrev/fu9xg6Qh7ebbx03IVuGnGRmEw== + version "2.3.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.3.2.tgz#7e112ca0bb29044d915baf10163a8199a20f7c69" + integrity sha512-tcnpksq1bXzcIRbYLeXkgp6l+ggEMXXUcl1wsSvL807fRtmvVQKygElwEUf4hBA76dNag3VAK1q2m3vd7qJaZA== dependencies: - "@typescript-eslint/experimental-utils" "2.3.0" + "@typescript-eslint/experimental-utils" "2.3.2" eslint-utils "^1.4.2" functional-red-black-tree "^1.0.1" regexpp "^2.0.1" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.3.0.tgz#19a8e1b8fcee7d7469f3b44691d91830568de140" - integrity sha512-ry+fgd0Hh33LyzS30bIhX/a1HJpvtnecjQjWxxsZTavrRa1ymdmX7tz+7lPrPAxB018jnNzwNtog6s3OhxPTAg== +"@typescript-eslint/experimental-utils@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.3.2.tgz#e50f31264507e6fec7b33840bb6af260c24f4ea8" + integrity sha512-t+JGdTT6dRbmvKDlhlVkEueoZa0fhJNfG6z2cpnRPLwm3VwYr2BjR//acJGC1Yza0I9ZNcDfRY7ubQEvvfG6Jg== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.3.0" + "@typescript-eslint/typescript-estree" "2.3.2" eslint-scope "^5.0.0" "@typescript-eslint/experimental-utils@^1.13.0": @@ -2487,13 +2482,13 @@ eslint-scope "^4.0.0" "@typescript-eslint/parser@^2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.3.0.tgz#d2df1d4bb8827e36125fb7c6274df1b4d4e614f0" - integrity sha512-Dc+LAtHts0yDuusxG0NVjGvrpPy2kZauxqPbfFs0fmcMB4JhNs+WwIDMFGWeKjbGoPt/SIUC9XJ7E0ZD/f8InQ== + version "2.3.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.3.2.tgz#e9b742e191cd1209930da469cde379591ad0af5b" + integrity sha512-nq1UQeNGdKdqdgF6Ww+Ov2OidWgiL96+JYdXXZ2rkP/OWyc6KMNSbs6MpRCpI8q+PmDa7hBnHNQIo7w/drYccA== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.3.0" - "@typescript-eslint/typescript-estree" "2.3.0" + "@typescript-eslint/experimental-utils" "2.3.2" + "@typescript-eslint/typescript-estree" "2.3.2" eslint-visitor-keys "^1.1.0" "@typescript-eslint/typescript-estree@1.13.0": @@ -2504,67 +2499,16 @@ lodash.unescape "4.0.1" semver "5.5.0" -"@typescript-eslint/typescript-estree@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.3.0.tgz#fd8faff7e4c73795c65e5817c52f9038e33ef29d" - integrity sha512-WBxfwsTeCOsmQ7cLjow7lgysviBKUW34npShu7dxJYUQCbSG5nfZWZTgmQPKEc+3flpbSM7tjXjQOgETYp+njQ== +"@typescript-eslint/typescript-estree@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.3.2.tgz#107414aa04e689fe6f7251eb63fb500217f2b7f4" + integrity sha512-eZNEAai16nwyhIVIEaWQlaUgAU3S9CkQ58qvK0+3IuSdLJD3W1PNuehQFMIhW/mTP1oFR9GNoTcLg7gtXz6lzA== dependencies: glob "^7.1.4" is-glob "^4.0.1" lodash.unescape "4.0.1" semver "^6.3.0" -"@wessberg/browserslist-generator@1.0.23": - version "1.0.23" - resolved "https://registry.yarnpkg.com/@wessberg/browserslist-generator/-/browserslist-generator-1.0.23.tgz#fd608259ec0adefa60a4d0d15b722eec1e03822e" - integrity sha512-QP6p7Gr+/sRu/NBqhxdNuFeWLdJVrKYURELw+RX8IADPZ0N3mwoSBP7cHgsC+lMVBf0UiinS/TquLuPMLczRhw== - dependencies: - "@types/object-path" "^0.11.0" - "@types/semver" "^6.0.0" - "@types/ua-parser-js" "^0.7.33" - browserslist "4.6.2" - caniuse-lite "1.0.30000974" - mdn-browser-compat-data "0.0.84" - object-path "^0.11.4" - semver "^6.1.1" - ua-parser-js "^0.7.20" - -"@wessberg/rollup-plugin-ts@^1.1.64": - version "1.1.64" - resolved "https://registry.yarnpkg.com/@wessberg/rollup-plugin-ts/-/rollup-plugin-ts-1.1.64.tgz#b1743199a2d5a0ab45b7485172e4c85c26e95b5b" - integrity sha512-Ch6ZNfsnpFVkIV8JqKpkMt+0fDTHOIIVFSoqQc46z/wl7PibwNUXCv/mTt3pKvVyJdVQ8fSaoevJo/pUzhQKxQ== - dependencies: - "@babel/core" "^7.5.5" - "@babel/plugin-proposal-async-generator-functions" "^7.2.0" - "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.5.5" - "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-syntax-dynamic-import" "^7.2.0" - "@babel/plugin-transform-runtime" "^7.5.5" - "@babel/preset-env" "^7.5.5" - "@babel/runtime" "^7.5.5" - "@types/mkdirp" "^0.5.2" - "@types/node" "^12.7.2" - "@types/resolve" "0.0.8" - "@wessberg/browserslist-generator" "1.0.23" - "@wessberg/stringutil" "^1.0.18" - browserslist "4.6.6" - find-up "^4.1.0" - magic-string "^0.25.3" - mkdirp "^0.5.1" - resolve "^1.12.0" - rollup-pluginutils "^2.8.1" - slash "^3.0.0" - tslib "^1.10.0" - -"@wessberg/stringutil@^1.0.18": - version "1.0.18" - resolved "https://registry.yarnpkg.com/@wessberg/stringutil/-/stringutil-1.0.18.tgz#5e4ce89ed3e5bfbce7f00a64f9eb5f877bdb2b76" - integrity sha512-nIVMm7P5OKyVjxdQb8vuklqi2aXNS6FtdXhp28Ot6aUF/4BDO09u9xJKDpKHQXjkQ3g0bApjPuBij6MrARNUBA== - dependencies: - tslib "^1.9.3" - "@zkochan/cmd-shim@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@zkochan/cmd-shim/-/cmd-shim-3.1.0.tgz#2ab8ed81f5bb5452a85f25758eb9b8681982fd2e" @@ -2583,9 +2527,9 @@ JSONStream@^1.0.4, JSONStream@^1.3.4: through ">=2.2.7 <3" abab@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.1.tgz#3fa17797032b71410ec372e11668f4b4ffc86a82" - integrity sha512-1zSbbCuoIjafKZ3mblY5ikvAb0ODUbqBnFuUb7f6uLeQhhGJ0vEV4ntmtxKLT2WgXCO94E07BjunsIw1jOMPZw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.2.tgz#a2fba1b122c69a85caa02d10f9270c7219709a9d" + integrity sha512-2scffjvioEmNz0OyDSLGWDfKCVwaKc6l9Pm9kOIREU13ClXZvHpg/nRL5xyjSSSLhOnXqft2HpsAzNEEA8cFFg== abbrev@1: version "1.1.1" @@ -2628,10 +2572,10 @@ acorn@^6.0.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" integrity sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA== -acorn@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.0.0.tgz#26b8d1cd9a9b700350b71c0905546f64d1284e7a" - integrity sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ== +acorn@^7.0.0, acorn@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" + integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== agent-base@4, agent-base@^4.3.0: version "4.3.0" @@ -3113,24 +3057,6 @@ browser-resolve@^1.11.3: dependencies: resolve "1.1.7" -browserslist@4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.2.tgz#574c665950915c2ac73a4594b8537a9eba26203f" - integrity sha512-2neU/V0giQy9h3XMPwLhEY3+Ao0uHSwHvU8Q1Ea6AgLVL1sXbX3dzPrJ8NWe5Hi4PoTkCYXOtVR9rfRLI0J/8Q== - dependencies: - caniuse-lite "^1.0.30000974" - electron-to-chromium "^1.3.150" - node-releases "^1.1.23" - -browserslist@4.6.6: - version "4.6.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.6.tgz#6e4bf467cde520bc9dbdf3747dafa03531cec453" - integrity sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA== - dependencies: - caniuse-lite "^1.0.30000984" - electron-to-chromium "^1.3.191" - node-releases "^1.1.25" - browserslist@^4.6.0, browserslist@^4.6.6: version "4.7.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.0.tgz#9ee89225ffc07db03409f2fee524dc8227458a17" @@ -3279,15 +3205,10 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@1.0.30000974: - version "1.0.30000974" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000974.tgz#b7afe14ee004e97ce6dc73e3f878290a12928ad8" - integrity sha512-xc3rkNS/Zc3CmpMKuczWEdY2sZgx09BkAxfvkxlAEBTqcMHeL8QnPqhKse+5sRTi3nrw2pJwToD2WvKn1Uhvww== - -caniuse-lite@^1.0.30000974, caniuse-lite@^1.0.30000984, caniuse-lite@^1.0.30000989: - version "1.0.30000989" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz#b9193e293ccf7e4426c5245134b8f2a56c0ac4b9" - integrity sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw== +caniuse-lite@^1.0.30000989: + version "1.0.30000997" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000997.tgz#ba44a606804f8680894b7042612c2c7f65685b7e" + integrity sha512-BQLFPIdj2ntgBNWp9Q64LGUIEmvhKkzzHhUHR3CD5A9Lb7ZKF20/+sgadhFap69lk5XmK1fTUleDclaRFvgVUA== capture-exit@^2.0.0: version "2.0.0" @@ -3360,9 +3281,9 @@ chokidar@^2.0.4, chokidar@^2.1.8: fsevents "^1.2.7" chownr@^1.1.1, chownr@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" - integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A== + version "1.1.3" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" + integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== ci-info@^2.0.0: version "2.0.0" @@ -3476,10 +3397,10 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.11.0, commander@^2.20.0, commander@^2.8.1, commander@~2.20.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== +commander@^2.11.0, commander@^2.8.1, commander@~2.20.0: + version "2.20.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.1.tgz#3863ce3ca92d0831dcf2a102f5fb4b5926afd0f9" + integrity sha512-cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg== compare-func@^1.3.1: version "1.3.2" @@ -3536,9 +3457,9 @@ config-chain@^1.1.11: proto-list "~1.2.1" confusing-browser-globals@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.8.tgz#93ffec1f82a6e2bf2bc36769cc3a92fa20e502f3" - integrity sha512-lI7asCibVJ6Qd3FGU7mu4sfG4try4LX3+GVS+Gv8UlrEf2AeW57piecapnog2UHZSbcX/P/1UDWVaTsblowlZg== + version "1.0.9" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" + integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" @@ -4042,15 +3963,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.150, electron-to-chromium@^1.3.191: - version "1.3.262" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.262.tgz#8022933e46e5a2c7b0fd1565d215872326520a7c" - integrity sha512-YFr53qZWr2pWkiTUorWEhAweujdf0ALiUp8VkNa0WGtbMVR+kZ8jNy3VTCemLsA4sT6+srCqehNn8TEAD0Ngrw== - electron-to-chromium@^1.3.247: - version "1.3.260" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.260.tgz#ffd686b4810bab0e1a428e7af5f08c21fe7c1fa2" - integrity sha512-wGt+OivF1C1MPwaSv3LJ96ebNbLAWlx3HndivDDWqwIVSQxmhL17Y/YmwUdEMtS/bPyommELt47Dct0/VZNQBQ== + version "1.3.270" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.270.tgz#a3faa2c51f73bf7a020370b3e28a99b32eae47ed" + integrity sha512-426qbfgLn0hVE4pDxok2dcAhA3u5lwXlBg2+i6VWQJvnMZNgevkC6s/qr91YH/avVMKXKwxnR5iBznpivg210A== emoji-regex@^7.0.1, emoji-regex@^7.0.2: version "7.0.3" @@ -4065,9 +3981,9 @@ encoding@^0.1.11: iconv-lite "~0.4.13" end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" @@ -4215,15 +4131,16 @@ eslint-import-resolver-node@^0.3.2: debug "^2.6.9" resolve "^1.5.0" -eslint-mdx@^1.4.5: - version "1.4.5" - resolved "https://registry.yarnpkg.com/eslint-mdx/-/eslint-mdx-1.4.5.tgz#5341ae8bf77b4afedcb4d2d4983dc0ed11bef4c0" - integrity sha512-+J2ODRnyNkxAzU7mLCLFPwF0JMALgSFFtbrpfB8i7t72vx7Lz3gFsPgugkd/ktWjB7Bi9qWeh1vNRs8JnNxTqQ== +eslint-mdx@^1.4.5, eslint-mdx@^1.5.5: + version "1.5.5" + resolved "https://registry.yarnpkg.com/eslint-mdx/-/eslint-mdx-1.5.5.tgz#71de4e2c05ab59005e75113e6ba6731ef6566002" + integrity sha512-IWic9iYZNnVnvftGQf49BfChsxcMeP8fuMuPAEjQPYfJHV6Elp0XoJIDUdepgCtpHlCLoE2kbO9pf7d5vW6h1Q== dependencies: espree "^6.1.1" - remark-mdx "^1.4.4" + remark-mdx "^1.4.5" remark-parse "^7.0.1" - unified "^8.3.2" + tslib "^1.10.0" + unified "^8.4.0" eslint-module-utils@^2.4.0: version "2.4.1" @@ -4298,18 +4215,21 @@ eslint-plugin-markdown@^1.0.0: unified "^6.1.2" eslint-plugin-mdx@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-mdx/-/eslint-plugin-mdx-1.5.0.tgz#aee249a01e1f86c2e6d1f365fde04c0a21120154" - integrity sha512-BiNhdW6HUprzixfxmBYyjH0FSvi6EfI7ZYwqvR9i9aQM4yUFdu2C83ifPTWbH4xDFU1OQHF0xeW4eg/K+SjdVA== + version "1.5.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-mdx/-/eslint-plugin-mdx-1.5.5.tgz#df00b7e44ca509f565f0c79b0b39a9ab9f1ebd44" + integrity sha512-sObXZaCzhb+xvCFDTIJCDJNbCS93KE3zlK5g+8xqQpE4iMCylLFoEevtnMcMf2fyB58AM7RNqUDoT98UAWzFow== dependencies: cosmiconfig "^5.2.1" - eslint-mdx "^1.4.5" - rebass "^4.0.5" - remark-mdx "^1.4.4" + eslint-mdx "^1.5.5" + eslint-plugin-react ">=7.0.0" + remark-mdx "^1.4.5" remark-parse "^7.0.1" remark-stringify "^7.0.3" - unified "^8.3.2" + tslib "^1.10.0" + unified "^8.4.0" vfile "^4.0.1" + optionalDependencies: + rebass "^4.0.6" eslint-plugin-no-use-extend-native@^0.4.1: version "0.4.1" @@ -4334,9 +4254,9 @@ eslint-plugin-node@^10.0.0: semver "^6.1.0" eslint-plugin-prettier@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.0.tgz#8695188f95daa93b0dc54b249347ca3b79c4686d" - integrity sha512-XWX2yVuwVNLOUhQijAkXz+rMPPoCr7WFiAl8ig6I7Xn+pPVhDhzg4DxHpmbeb0iqjO9UronEA3Tb09ChnFVHHA== + version "3.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.1.tgz#507b8562410d02a03f0ddc949c616f877852f2ba" + integrity sha512-A+TZuHZ0KU0cnn56/9mfR7/KjUJ9QNVXUhwvRFSR7PGPe0zQR6PTkmyqg1AtUUEOzTqeRsUwyKFh0oVZKVCrtA== dependencies: prettier-linter-helpers "^1.0.0" @@ -4346,29 +4266,29 @@ eslint-plugin-promise@^4.2.1: integrity sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw== eslint-plugin-react-hooks@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.0.1.tgz#e898ec26a0a335af6f7b0ad1f0bedda7143ed756" - integrity sha512-xir+3KHKo86AasxlCV8AHRtIZPHljqCRRUYgASkbatmt0fad4+5GgC7zkT7o/06hdKM6MIwp8giHVXqBPaarHQ== + version "2.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.1.1.tgz#b416390b642113f444ee175b667c3222a045a98e" + integrity sha512-AYitPYzwHyKpZKpzMH5sCkld68vP8wn29Lq716h4jk1ll9Gp4BBFoPq/iCjBBT35eXFJvOPjgMlvhIXFB0OhXg== -eslint-plugin-react@^7.14.3: - version "7.14.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13" - integrity sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA== +eslint-plugin-react@>=7.0.0, eslint-plugin-react@^7.14.3: + version "7.15.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.15.0.tgz#4808b19cf7b4c439454099d4eb8f0cf0e9fe31dd" + integrity sha512-NbIh/yVXoltm8Df28PiPRanfCZAYubGqXU391MTCpW955Vum7S0nZdQYXGAvDh9ye4aNCmOR6YcYZsfMbEQZQA== dependencies: array-includes "^3.0.3" doctrine "^2.1.0" has "^1.0.3" - jsx-ast-utils "^2.1.0" + jsx-ast-utils "^2.2.1" object.entries "^1.1.0" object.fromentries "^2.0.0" object.values "^1.1.0" prop-types "^15.7.2" - resolve "^1.10.1" + resolve "^1.12.0" eslint-plugin-unicorn@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-11.0.0.tgz#5a2d4a360fda718032017b10da3a0b7e0806628f" - integrity sha512-uOfRBpXVQcOENzHgMKLe57aTHa9pLpxU9WcpyK50n7WtdtC31chAPwkCueYHQfSL6LwTuqin+/RyI3Nv6Z1Udw== + version "11.0.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-11.0.2.tgz#d330148d4f15a5eae5d10cb501bacd5328736264" + integrity sha512-tNpaQPYV4QOrTYY99/rghfjJY8pb4flBa2W9Dfyz/kOwE4Pe0JqatRI9gIIEdnZXwdZ+9Qh0csSxBjFwutow5g== dependencies: ci-info "^2.0.0" clean-regexp "^1.0.0" @@ -4415,9 +4335,9 @@ eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== eslint@^6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.4.0.tgz#5aa9227c3fbe921982b2eda94ba0d7fae858611a" - integrity sha512-WTVEzK3lSFoXUovDHEbkJqCVPEPwbhCq4trDktNI6ygs7aO41d4cDT0JFAT5MivzZeVLWlg7vHL+bgrQv/t3vA== + version "6.5.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.5.1.tgz#828e4c469697d43bb586144be152198b91e96ed6" + integrity sha512-32h99BoLYStT1iq1v2P9uwpyznQ4M2jRiFB6acitKz52Gqn+vPaMDUTB1bYi1WN4Nquj2w+t+bimYUG83DC55A== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.10.0" @@ -4588,7 +4508,7 @@ extend-shallow@^2.0.1: dependencies: is-extendable "^0.1.0" -extend@3.0.2, extend@^3.0.0, extend@~3.0.2: +extend@^3.0.0, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -4721,7 +4641,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0, find-up@^4.1.0: +find-up@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -5018,9 +4938,9 @@ glob-parent@^3.1.0: path-dirname "^1.0.0" glob-parent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954" - integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== + version "5.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" + integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== dependencies: is-glob "^4.0.1" @@ -5078,9 +4998,9 @@ growly@^1.3.0: integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= handlebars@^4.1.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.2.0.tgz#57ce8d2175b9bbb3d8b3cf3e4217b1aec8ddcb2e" - integrity sha512-Kb4xn5Qh1cxAKvQnzNWZ512DhABzyFNmsaJf3OAkWNa4NkaqWcNI8Tao8Tasi0/F4JD9oyG0YxuFyvyR57d+Gw== + version "4.4.0" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.4.0.tgz#22e1a897c5d83023d39801f35f6b65cf97ed8b25" + integrity sha512-xkRtOt3/3DzTKMOt3xahj2M/EqNhY988T+imYSlMgs5fVhLN2fmKVVj0LtEGmb+3UUYV5Qmm1052Mm3dIQxOvw== dependencies: neo-async "^2.6.0" optimist "^0.6.1" @@ -5414,7 +5334,7 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" -is-buffer@2.0.3, is-buffer@^2.0.0: +is-buffer@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== @@ -5424,6 +5344,11 @@ is-buffer@^1.1.4, is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-buffer@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" + integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== + is-callable@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" @@ -5621,9 +5546,9 @@ is-proto-prop@^2.0.0: proto-props "^2.0.0" is-reference@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.3.tgz#e99059204b66fdbe09305cfca715a29caa5c8a51" - integrity sha512-W1iHHv/oyBb2pPxkBxtaewxa1BC58Pn5J0hogyCdefwUIvb6R+TGbAcIa4qPNYLqLhb3EnOgUf2MQkkF76BcKw== + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.4.tgz#3f95849886ddb70256a3e6d062b1a68c13c51427" + integrity sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw== dependencies: "@types/estree" "0.0.39" @@ -6262,7 +6187,7 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.1.0, jsx-ast-utils@^2.2.1: +jsx-ast-utils@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz#4d4973ebf8b9d2837ee91a8208cc66f3a2776cfb" integrity sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ== @@ -6613,10 +6538,10 @@ macos-release@^2.2.0: resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== -magic-string@^0.25.2, magic-string@^0.25.3: - version "0.25.3" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.3.tgz#34b8d2a2c7fec9d9bdf9929a3fd81d271ef35be9" - integrity sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA== +magic-string@^0.25.2: + version "0.25.4" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.4.tgz#325b8a0a79fc423db109b77fd5a19183b7ba5143" + integrity sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw== dependencies: sourcemap-codec "^1.4.4" @@ -6705,13 +6630,6 @@ mdast-util-compact@^1.0.0: dependencies: unist-util-visit "^1.1.0" -mdn-browser-compat-data@0.0.84: - version "0.0.84" - resolved "https://registry.yarnpkg.com/mdn-browser-compat-data/-/mdn-browser-compat-data-0.0.84.tgz#791d0e238cff5779fae589f99f5b2c7b84ea44b5" - integrity sha512-fAznuGNaQMQiWLVf+gyp33FaABTglYWqMT7JqvH+4RZn2UQPD12gbMqxwP9m0lj8AAbNpu5/kD6n4Ox1SOffpw== - dependencies: - extend "3.0.2" - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -6863,20 +6781,20 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass@^2.2.1, minipass@^2.3.5, minipass@^2.6.0: - version "2.6.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.6.4.tgz#c15b8e86d1ecee001652564a2c240c0b6e58e817" - integrity sha512-D/+wBy2YykFsCcWvaIslCKKus5tqGQZ8MhEzNx4mujLNgHhXWaaUOZkok6/kztAlTt0QkYLEyIShrybNmzoeTA== +minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" minizlib@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.2.tgz#6f0ccc82fa53e1bf2ff145f220d2da9fa6e3a166" - integrity sha512-hR3At21uSrsjjDTWrbu0IMLTpnkpv8IIMFDFaoz43Tmu4LkmAXfH44vNNzpTnf+OAQQCHrb91y/wc2J4x5XgSQ== + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== dependencies: - minipass "^2.2.1" + minipass "^2.9.0" mississippi@^3.0.0: version "3.0.0" @@ -7038,9 +6956,9 @@ node-fetch@^2.3.0, node-fetch@^2.5.0: integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== node-gyp@^5.0.2: - version "5.0.3" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.0.3.tgz#80d64c23790244991b6d44532f0a351bedd3dd45" - integrity sha512-z/JdtkFGUm0QaQUusvloyYuGDub3nUbOo5de1Fz57cM++osBTvQatBUSTlF1k/w8vFHPxxXW6zxGvkxXSpaBkQ== + version "5.0.4" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.0.4.tgz#1de243f17b081a6e89f4330967900c816114f8fb" + integrity sha512-PMYap4ekQckQDZ2lxoORUF/nX13haU1JdCAlmLgvrykLyN0LFkhfwPbWhYjTxwTruCWbTkeOxFo043kjhmKHZA== dependencies: env-paths "^1.0.0" glob "^7.0.3" @@ -7051,7 +6969,7 @@ node-gyp@^5.0.2: request "^2.87.0" rimraf "2" semver "~5.3.0" - tar "^4.4.8" + tar "^4.4.12" which "1" node-int64@^0.4.0: @@ -7091,10 +7009,10 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" -node-releases@^1.1.23, node-releases@^1.1.25, node-releases@^1.1.29: - version "1.1.32" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.32.tgz#485b35c1bf9b4d8baa105d782f8ca731e518276e" - integrity sha512-VhVknkitq8dqtWoluagsGPn3dxTvN9fwgR59fV3D7sLBHe0JfDramsMI8n8mY//ccq/Kkrf8ZRHRpsyVZ3qw1A== +node-releases@^1.1.29: + version "1.1.33" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.33.tgz#349f10291234624574f44cf32b7de259bf028303" + integrity sha512-I0V30bWQEoHb+10W8oedVoUrdjW5wIkYm0w7vvcrPO95pZY738m1k77GF5sO0vKg5eXYg9oGtrMAETbgZGm11A== dependencies: semver "^5.3.0" @@ -7146,9 +7064,9 @@ npm-bundled@^1.0.1: integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== npm-lifecycle@^3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.3.tgz#09e9b0b6686e85fd53bab82364386222d97a3730" - integrity sha512-M0QmmqbEHBXxDrmc6X3+eKjW9+F7Edg1ENau92WkYw1sox6wojHzEZJIRm1ItljEiaigZlKL8mXni/4ylAy1Dg== + version "3.1.4" + resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.4.tgz#de6975c7d8df65f5150db110b57cce498b0b604c" + integrity sha512-tgs1PaucZwkxECGKhC/stbEgFyc3TGh2TJcg2CDr6jbvQRdteHNhmMeljRzpe4wgFAXQADoy1cSqqi7mtiAa5A== dependencies: byline "^5.0.0" graceful-fs "^4.1.15" @@ -7254,11 +7172,6 @@ object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-path@^0.11.4: - version "0.11.4" - resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" - integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= - object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -7492,11 +7405,6 @@ p-map-series@^1.0.0: dependencies: p-reduce "^1.0.0" -p-map-series@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" - integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== - p-map@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" @@ -7526,11 +7434,6 @@ p-reduce@^1.0.0: resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= -p-reduce@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" - integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== - p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -7920,11 +7823,16 @@ q@^1.5.1: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qs@6.8.0, qs@^6.5.1: +qs@6.8.0: version "6.8.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.8.0.tgz#87b763f0d37ca54200334cd57bb2ef8f68a1d081" integrity sha512-tPSkj8y92PfZVbinY1n84i1Qdx75lZjMQYx9WZhnkofyxzw2r7Ho39G3/aEvSUdebxpnnM4LZJCtvE/Aq3+s9w== +qs@^6.5.1: + version "6.9.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.0.tgz#d1297e2a049c53119cb49cca366adbbacc80b409" + integrity sha512-27RP4UotQORTpmNQDX8BHPukOnBP3p1uUJY5UnDhaJB+rMt9iMsok724XL+UHU23bEFOHRMQ2ZhI99qOWUMGFA== + qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" @@ -7956,14 +7864,14 @@ rc@^1.2.7: strip-json-comments "~2.0.1" react-is@^16.8.1, react-is@^16.8.4: - version "16.9.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.9.0.tgz#21ca9561399aad0ff1a7701c01683e8ca981edcb" - integrity sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw== + version "16.10.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.10.1.tgz#0612786bf19df406502d935494f0450b40b8294f" + integrity sha512-BXUMf9sIOPXXZWqr7+c5SeOKJykyVr2u0UDzEf4LNGc6taGkQe1A9DFD07umCIXz45RLr9oAAwZbAJ0Pkknfaw== -react@^16.8.6: - version "16.9.0" - resolved "https://registry.yarnpkg.com/react/-/react-16.9.0.tgz#40ba2f9af13bc1a38d75dbf2f4359a5185c4f7aa" - integrity sha512-+7LQnFBwkiw+BobzOF6N//BdoNw0ouwmSJTEm9cglOOmsg/TMiFHZLe2sEoN5M7LgJTj9oHH0gxklfnQe66S1w== +react@^16.10.1: + version "16.10.1" + resolved "https://registry.yarnpkg.com/react/-/react-16.10.1.tgz#967c1e71a2767dfa699e6ba702a00483e3b0573f" + integrity sha512-2bisHwMhxQ3XQz4LiJJwG3360pY965pTl/MRrZYxIBKVj4fOHoDs5aZAkYXGxDRO1Li+SyjTAilQEbOmtQJHzA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -8121,12 +8029,12 @@ realpath-native@^1.1.0: dependencies: util.promisify "^1.0.0" -rebass@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/rebass/-/rebass-4.0.5.tgz#87bf5b0cc53e530ce0939611637d01aeb989df57" - integrity sha512-8MZngk/AmbC8u8pGmI1WelbsKYjmN9Z91C11G4ESB9QZnoppWsI+OAqio1/4/l6dxHmwZ/hR8Q4UApF+IVEprA== +rebass@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/rebass/-/rebass-4.0.6.tgz#eaded5d0d99f68e69cd6b1e9e645f391c15d90dd" + integrity sha512-O4eSG4vhboiI00R5YmrRTuKiehpLkB3gDBWp00qymEbPxJPjkXoQVkOEhbWaRNRqBv/bMlvLczqarvCno1JORw== dependencies: - reflexbox "^4.0.5" + reflexbox "^4.0.6" redent@^1.0.0: version "1.0.0" @@ -8144,16 +8052,15 @@ redent@^2.0.0: indent-string "^3.0.0" strip-indent "^2.0.0" -reflexbox@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/reflexbox/-/reflexbox-4.0.5.tgz#63a53702a111d16df6b1f0d6363b86be8ebc1fc6" - integrity sha512-SFWlrlKusgQVqjEimlLGNls3khjMlaTLrrF1H7YY7FfXv/mKK5mREDOW4l95D6Qa1kGoyM3hF+H5RLb3N6bCCA== +reflexbox@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/reflexbox/-/reflexbox-4.0.6.tgz#fc756d2cc1ca493baf9b96bb27dd640ad8154cf1" + integrity sha512-UNUL4YoJEXAPjRKHuty1tuOk+LV1nDJ2KYViDcH7lYm5yU3AQ+EKNXxPU3E14bQNK/pE09b1hYl+ZKdA94tWLQ== dependencies: "@emotion/core" "^10.0.0" "@emotion/styled" "^10.0.0" "@styled-system/css" "^5.0.0" "@styled-system/should-forward-prop" "^5.0.0" - react "^16.8.6" styled-system "^5.0.0" regenerate-unicode-properties@^8.1.0: @@ -8198,10 +8105,10 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp-tree@^0.1.13, regexp-tree@~0.1.1: - version "0.1.13" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.13.tgz#5b19ab9377edc68bc3679256840bb29afc158d7f" - integrity sha512-hwdV/GQY5F8ReLZWO+W1SRoN5YfpOKY6852+tBFcma72DKBIcHjPRIlIvQN35bCOljuAfP2G2iB0FC/w236mUw== +regexp-tree@~0.1.1: + version "0.1.14" + resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.14.tgz#1abca3675f6cc4b0dee5c959c6c4554ed172dfae" + integrity sha512-59v5A90TAh4cAMyDQEOzcnsu4q7Wb10RsyTjngEnJIZsWYM4siVGu+JmLT1WsxHvOWhiu4YS20XiTuxWMeVoHQ== regexpp@^2.0.1: version "2.0.1" @@ -8213,7 +8120,7 @@ regexpp@^3.0.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g== -regexpu-core@^4.5.4: +regexpu-core@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.6.0.tgz#2037c18b327cfce8a6fea2a4ec441f2432afb8b6" integrity sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg== @@ -8237,16 +8144,16 @@ regjsparser@^0.6.0: dependencies: jsesc "~0.5.0" -remark-mdx@^1.4.4: - version "1.4.5" - resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-1.4.5.tgz#4701cad33c6a4a0465514f39a7dbe9ee7715139f" - integrity sha512-Njjly0I6l7WAe+ob2qQ3K393rtkyJLjbaZOn84CE2P6nQRzei5PlNRn6DH5SfCzdzP7llHZbW+CVsj989kd/Wg== +remark-mdx@^1.4.5: + version "1.5.0" + resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-1.5.0.tgz#780541b0455ab7432dbb8501be32aa7734b1f441" + integrity sha512-eeYUHFAkfsX+zGDQ8iMjsIGWRvco9x//P6OOemYTnXhqlcnn3Xo2kcxsMX9ibvBtX+/qwZ/i+juDnMe5Buu0Xw== dependencies: "@babel/core" "7.6.0" "@babel/helper-plugin-utils" "7.0.0" "@babel/plugin-proposal-object-rest-spread" "7.5.5" "@babel/plugin-syntax-jsx" "7.2.0" - "@mdx-js/util" "^1.4.5" + "@mdx-js/util" "^1.5.0" is-alphabetical "1.0.3" remark-parse "7.0.1" unified "8.3.2" @@ -8441,7 +8348,7 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: +resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.5.0: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== @@ -8480,14 +8387,6 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rollup-plugin-babel@^4.3.3: - version "4.3.3" - resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.3.3.tgz#7eb5ac16d9b5831c3fd5d97e8df77ba25c72a2aa" - integrity sha512-tKzWOCmIJD/6aKNz0H1GMM+lW1q9KyFubbWzGiOG540zxPPifnEAHTZwjo0g991Y+DyOZcLqBgqOdqazYE5fkw== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - rollup-pluginutils "^2.8.1" - rollup-plugin-commonjs@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb" @@ -8499,13 +8398,6 @@ rollup-plugin-commonjs@^10.1.0: resolve "^1.11.0" rollup-pluginutils "^2.8.1" -rollup-plugin-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz#a18da0a4b30bf5ca1ee76ddb1422afbb84ae2b9e" - integrity sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow== - dependencies: - rollup-pluginutils "^2.5.0" - rollup-plugin-node-resolve@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523" @@ -8517,40 +8409,21 @@ rollup-plugin-node-resolve@^5.2.0: resolve "^1.11.1" rollup-pluginutils "^2.8.1" -rollup-plugin-replace@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-replace/-/rollup-plugin-replace-2.2.0.tgz#f41ae5372e11e7a217cde349c8b5d5fd115e70e3" - integrity sha512-/5bxtUPkDHyBJAKketb4NfaeZjL5yLZdeUihSfbF2PQMz+rSTEb8ARKoOl3UBT4m7/X+QOXJo3sLTcq+yMMYTA== - dependencies: - magic-string "^0.25.2" - rollup-pluginutils "^2.6.0" - -rollup-plugin-terser@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.1.2.tgz#3e41256205cb75f196fc70d4634227d1002c255c" - integrity sha512-sWKBCOS+vUkRtHtEiJPAf+WnBqk/C402fBD9AVHxSIXMqjsY7MnYWKYEUqGixtr0c8+1DjzUEPlNgOYQPVrS1g== - dependencies: - "@babel/code-frame" "^7.0.0" - jest-worker "^24.6.0" - rollup-pluginutils "^2.8.1" - serialize-javascript "^1.7.0" - terser "^4.1.0" - -rollup-pluginutils@^2.5.0, rollup-pluginutils@^2.6.0, rollup-pluginutils@^2.8.1: +rollup-pluginutils@^2.8.1: version "2.8.2" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== dependencies: estree-walker "^0.6.1" -rollup@^1.21.4: - version "1.21.4" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.21.4.tgz#00a41a30f90095db890301b226cbe2918e4cf54d" - integrity sha512-Pl512XVCmVzgcBz5h/3Li4oTaoDcmpuFZ+kdhS/wLreALz//WuDAMfomD3QEYl84NkDu6Z6wV9twlcREb4qQsw== +rollup@^1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.22.0.tgz#a5b2672c0eebe9f2b6454220f785dbc09b64b4bc" + integrity sha512-x4l4ZrV/Mr/x/jvFTmwROdEAhbZjx16yDRTVSKWh/i4oJDuW2dVEbECT853mybYCz7BAitU8ElGlhx7dNjw3qQ== dependencies: - "@types/estree" "0.0.39" - "@types/node" "^12.7.5" - acorn "^7.0.0" + "@types/estree" "*" + "@types/node" "*" + acorn "^7.1.0" rsvp@^4.8.4: version "4.8.5" @@ -8642,7 +8515,7 @@ semver@6.2.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== -semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: +semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -8652,11 +8525,6 @@ semver@~5.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= -serialize-javascript@^1.7.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz#cfc200aef77b600c47da9bb8149c943e798c2fdb" - integrity sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A== - set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -8714,11 +8582,6 @@ slash@^2.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -8802,7 +8665,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.6, source-map-support@~0.5.12: +source-map-support@^0.5.6: version "0.5.13" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== @@ -9166,14 +9029,14 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tar@^4, tar@^4.4.10, tar@^4.4.8: - version "4.4.10" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" - integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA== +tar@^4, tar@^4.4.10, tar@^4.4.12, tar@^4.4.8: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== dependencies: chownr "^1.1.1" fs-minipass "^1.2.5" - minipass "^2.3.5" + minipass "^2.8.6" minizlib "^1.2.1" mkdirp "^0.5.0" safe-buffer "^5.1.2" @@ -9196,15 +9059,6 @@ temp-write@^3.4.0: temp-dir "^1.0.0" uuid "^3.0.1" -terser@^4.1.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.3.1.tgz#09820bcb3398299c4b48d9a86aefc65127d0ed65" - integrity sha512-pnzH6dnFEsR2aa2SJaKb1uSCl3QmIsJ8dEkj0Fky+2AwMMcC9doMqLOQIH6wVTEKaVfKVvLSk5qxPBEZT9mywg== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - test-exclude@^5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" @@ -9354,11 +9208,6 @@ trim-off-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= - trim-trailing-lines@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz#d2f1e153161152e9f02fabc670fb40bec2ea2e3a" @@ -9374,7 +9223,7 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.4.tgz#3b52b1f13924f460c3fbfd0df69b587dbcbc762e" integrity sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q== -tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== @@ -9433,11 +9282,6 @@ typescript@^3.6.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.6.3.tgz#fea942fabb20f7e1ca7164ff626f1a9f3f70b4da" integrity sha512-N7bceJL1CtRQ2RiG0AQME13ksR7DiuQh/QehubYcghzv20tnh+MQnQIuJddTmsbqYj+dztchykemz0zFzlvdQw== -ua-parser-js@^0.7.20: - version "0.7.20" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.20.tgz#7527178b82f6a62a0f243d1f94fd30e3e3c21098" - integrity sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw== - uglify-js@^3.1.4: version "3.6.0" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" @@ -9456,11 +9300,6 @@ umask@^1.1.0: resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= -umd-globals@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/umd-globals/-/umd-globals-0.3.0.tgz#650ef00b93df9f9f4152fd74da02464f886e623b" - integrity sha512-9eKjtI3oV9L36uql8bwmmCS1Gkxi0kX0SvX9CrdW83pt5o+7Dbybf3j1rJSCD9cT0/2RH69ckbDzZoeoFTcTIg== - unherit@^1.0.4: version "1.1.2" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.2.tgz#14f1f397253ee4ec95cec167762e77df83678449" @@ -9515,7 +9354,7 @@ unified@^6.1.2: vfile "^2.0.0" x-is-string "^0.1.0" -unified@^8.3.2: +unified@^8.4.0: version "8.4.0" resolved "https://registry.yarnpkg.com/unified/-/unified-8.4.0.tgz#5bb8a05c2a0b9dcc56152312ad8e4578a0d90af7" integrity sha512-hQqeCrzqqS3vk8WbvbjYgaxe9WqmZF32Y3lz/kY5A8/5RdJbxoa4yOIAYpSEvqii9n2MTI2OL1+ByoVJYLhlUg== @@ -9934,9 +9773,9 @@ xtend@^4.0.1, xtend@~4.0.1: integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yargs-parser@^10.0.0: version "10.1.0"