diff --git a/.gitignore b/.gitignore index a771e3252..ac117c00e 100644 --- a/.gitignore +++ b/.gitignore @@ -36,7 +36,10 @@ node_modules # Optional REPL history .node_repl_history -# Webstorm project metadata +# Project metadata .idea - /.vscode + +# Verdaccio +storage +htpasswd diff --git a/.travis.yml b/.travis.yml index ac8aaec1b..efb89e7b2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,9 +18,8 @@ install: # Remove --ignore-engines when this fixed: # https://github.com/anodynos/upath/issues/14 - yarn install --frozen-lockfile --ignore-engines -- yarn link:all script: - yarn validate:eslintrc - yarn lint -- yarn build -- yarn test:all +- yarn test +- scripts/test-create-project-ci.sh diff --git a/docs/contributing/development.md b/docs/contributing/development.md index 087f6a7b6..b608bb254 100644 --- a/docs/contributing/development.md +++ b/docs/contributing/development.md @@ -58,6 +58,33 @@ anywhere on your system for neutrino-dev packages, making testing of the package --- +`test` + +Runs the unit test suite against all packages in the monorepo. For the most part +the intent of the unit tests is to ensure that packages do not throw errors +when being required or used as middleware by Neutrino. These tests typically +do not ensure that their middleware produces the expected output, instead +leaving this functionality for integration tests via `test:create-project`. + +--- + +`test:create-project` + +Runs the integration test suite by determining correct output of the +`create-project` CLI tool and ensuring that package.json scripts do not throw. +This test requires a local [verdaccio](https://www.verdaccio.org/) instance +to be running, and this is ensured in CI via the +`scripts/test-create-project-ci.sh` script. Typically this command is only used +in CI, with the unit tests being run locally via `yarn test`. If you do run +this command locally by setting up verdaccio locally as well, ensure that +you revert back any changes you make to your local registry when finished with: + +```bash +yarn config set registry https://registry.yarnpkg.com +``` + +--- + `changelog` Generates a changelog for the `mozilla-neutrino/neutrino-dev` GitHub repository. This changelog is output to a diff --git a/package.json b/package.json index 6aa40cc8a..66a13c1a8 100644 --- a/package.json +++ b/package.json @@ -15,24 +15,22 @@ "packages/*" ], "scripts": { - "build": "lerna run build", "changelog": "auto-changelog --remote upstream --commit-limit false", - "cnp": "NODE_ENV=test packages/create-project/bin/create-neutrino-project.js $(yarn random)", "link:all": "lerna exec yarn link", "lint": "node packages/neutrino/bin/neutrino lint", "precommit": "lint-staged", "random": "node -e \"process.stdout.write(require('crypto').randomBytes(8).toString('hex'))\"", - "release": "yarn build && lerna publish --force-publish=*", - "release:preview": "yarn build && lerna publish --force-publish=* --skip-git --skip-npm", - "test": "yarn test:all --no-verbose --match '!*@neutrinojs*'", - "test:all": "nyc --reporter lcov ava --verbose --fail-fast packages/*/test", + "release": "lerna publish --force-publish=*", + "release:preview": "lerna publish --force-publish=* --skip-git --skip-npm", + "test": "ava --fail-fast packages/*/test \"!packages/create-project/test\"", + "test:create-project": "ava --verbose packages/create-project/test", "validate:eslintrc:root": "eslint --no-eslintrc --print-config . -c ./.eslintrc.js > /dev/null", "validate:eslintrc:eslint": "eslint --no-eslintrc --print-config . -c ./packages/eslint/eslintrc.js > /dev/null", "validate:eslintrc:airbnb": "eslint --no-eslintrc --print-config . -c ./packages/airbnb/eslintrc.js > /dev/null", "validate:eslintrc:airbnb-base": "eslint --no-eslintrc --print-config . -c ./packages/airbnb-base/eslintrc.js > /dev/null", "validate:eslintrc:standardjs": "eslint --no-eslintrc --print-config . -c ./packages/standardjs/eslintrc.js > /dev/null", "validate:eslintrc": "yarn validate:eslintrc:eslint && yarn validate:eslintrc:airbnb-base && yarn validate:eslintrc:airbnb && yarn validate:eslintrc:standardjs && yarn validate:eslintrc:root", - "version": "yarn changelog --package && git add CHANGELOG.md" + "version": "test -v SKIP_CHANGELOG || yarn changelog --package && git add CHANGELOG.md" }, "devDependencies": { "auto-changelog": "^1.4.6", @@ -44,7 +42,9 @@ "lerna": "^2.11.0", "lint-staged": "^7.0.5", "nyc": "^11.7.1", - "prettier": "^1.12.1" + "prettier": "^1.12.1", + "verdaccio": "3.0.0-beta.10", + "verdaccio-memory": "^1.0.1" }, "lint-staged": { "*.js": [ diff --git a/packages/create-project/commands/init/index.js b/packages/create-project/commands/init/index.js index 3ef70d95c..3f082f46b 100644 --- a/packages/create-project/commands/init/index.js +++ b/packages/create-project/commands/init/index.js @@ -3,7 +3,6 @@ const { basename, join, relative } = require('path'); const chalk = require('chalk'); const stringify = require('javascript-stringify'); const merge = require('deepmerge'); -const { contains, partition } = require('ramda'); const Generator = require('yeoman-generator'); const questions = require('./questions'); const { projects, packages, isYarn } = require('./utils'); @@ -145,42 +144,45 @@ module.exports = class Project extends Generator { if (dependencies) { this.log(`${chalk.green('⏳ Installing dependencies:')} ${chalk.yellow(dependencies.join(', '))}`); - this.spawnCommandSync(packageManager, [install, ...dependencies], { - cwd: this.options.directory, - stdio: this.options.stdio, - env: process.env - }); + this.spawnCommandSync( + packageManager, + [ + install, + ...( + this.options.registry + ? ['--registry', this.options.registry] : + [] + ), + ...dependencies + ], + { + cwd: this.options.directory, + stdio: this.options.stdio, + env: process.env + } + ); } if (devDependencies) { - if (process.env.NODE_ENV === 'test') { - const [local, remote] = partition(contains(packages.NEUTRINO), devDependencies); - - if (remote.length) { - this.log(`${chalk.green('⏳ Installing remote devDependencies:')} ${chalk.yellow(remote.join(', '))}`); - this.spawnCommandSync(packageManager, [install, devFlag, ...remote], { - stdio: this.options.stdio, - env: process.env, - cwd: this.options.directory - }); - } - - if (local.length) { - this.log(`${chalk.green('⏳ Linking local devDependencies:')} ${chalk.yellow(local.join(', '))}`); - this.spawnCommandSync('yarn', ['link', ...local], { - stdio: this.options.stdio, - env: process.env, - cwd: this.options.directory - }); - } - } else { - this.log(`${chalk.green('⏳ Installing devDependencies:')} ${chalk.yellow(devDependencies.join(', '))}`); - this.spawnCommandSync(packageManager, [install, devFlag, ...devDependencies], { + this.log(`${chalk.green('⏳ Installing devDependencies:')} ${chalk.yellow(devDependencies.join(', '))}`); + this.spawnCommandSync( + packageManager, + [ + install, + devFlag, + ...( + this.options.registry + ? ['--registry', this.options.registry] : + [] + ), + ...devDependencies + ], + { + cwd: this.options.directory, stdio: this.options.stdio, - env: process.env, - cwd: this.options.directory - }); - } + env: process.env + } + ); } if (this.data.linter) { @@ -190,7 +192,9 @@ module.exports = class Project extends Generator { ? ['lint', '--fix'] : ['run', 'lint', '--fix'], { - stdio: this.options.stdio === 'inherit' ? 'ignore' : this.options.stdio, + stdio: this.options.stdio === 'inherit' || !this.options.stdio + ? 'ignore' : + this.options.stdio, env: process.env, cwd: this.options.directory }); diff --git a/packages/create-project/commands/init/matrix.js b/packages/create-project/commands/init/matrix.js new file mode 100644 index 000000000..fc6efe10e --- /dev/null +++ b/packages/create-project/commands/init/matrix.js @@ -0,0 +1,94 @@ +const LINTING = 'linting'; +const PROJECT = 'project'; +const TESTING = 'testing'; +const N = 'neutrino'; +const REACT = '@neutrinojs/react'; +const PREACT = '@neutrinojs/preact'; +const VUE = '@neutrinojs/vue'; +const WEB = '@neutrinojs/web'; +const NODE = '@neutrinojs/node'; +const WEB_NODE_LIBRARY = '@neutrinojs/library'; +const REACT_COMPONENTS = '@neutrinojs/react-components'; +const JEST = '@neutrinojs/jest'; +const KARMA = '@neutrinojs/karma'; +const MOCHA = '@neutrinojs/mocha'; +const AIRBNB = '@neutrinojs/airbnb'; +const AIRBNB_BASE = '@neutrinojs/airbnb-base'; +const STANDARDJS = '@neutrinojs/standardjs'; + +const projects = { + [AIRBNB]: { + type: LINTING, + devDependencies: [AIRBNB] + }, + [AIRBNB_BASE]: { + type: LINTING, + devDependencies: [AIRBNB_BASE] + }, + [WEB_NODE_LIBRARY]: { + type: PROJECT, + devDependencies: [WEB_NODE_LIBRARY, N] + }, + [NODE]: { + type: PROJECT, + devDependencies: [NODE, N] + }, + [PREACT]: { + type: PROJECT, + dependencies: ['preact', 'preact-compat'], + devDependencies: [PREACT, N] + }, + [REACT]: { + type: PROJECT, + dependencies: ['prop-types', 'react', 'react-dom', 'react-hot-loader'], + devDependencies: [REACT, N] + }, + [REACT_COMPONENTS]: { + type: PROJECT, + devDependencies: [REACT_COMPONENTS, N, 'prop-types', 'react', 'react-dom'] + }, + [STANDARDJS]: { + type: LINTING, + devDependencies: [STANDARDJS] + }, + [VUE]: { + type: PROJECT, + dependencies: ['vue'], + devDependencies: [VUE, N] + }, + [WEB]: { + type: PROJECT, + devDependencies: [WEB, N] + }, + [JEST]: { + type: TESTING, + devDependencies: [JEST] + }, + [KARMA]: { + type: TESTING, + devDependencies: [KARMA] + }, + [MOCHA]: { + type: TESTING, + devDependencies: [MOCHA] + } +}; + +const packages = { + NEUTRINO: N, + REACT, + PREACT, + VUE, + WEB, + NODE, + WEB_NODE_LIBRARY, + REACT_COMPONENTS, + JEST, + KARMA, + MOCHA, + AIRBNB, + AIRBNB_BASE, + STANDARDJS +}; + +module.exports = { projects, packages }; diff --git a/packages/create-project/commands/init/utils.js b/packages/create-project/commands/init/utils.js index 05c2726df..c3b761f29 100644 --- a/packages/create-project/commands/init/utils.js +++ b/packages/create-project/commands/init/utils.js @@ -1,97 +1,5 @@ const commandExists = require('command-exists'); - -const LINTING = 'linting'; -const PROJECT = 'project'; -const TESTING = 'testing'; -const N = 'neutrino'; -const REACT = '@neutrinojs/react'; -const PREACT = '@neutrinojs/preact'; -const VUE = '@neutrinojs/vue'; -const WEB = '@neutrinojs/web'; -const NODE = '@neutrinojs/node'; -const WEB_NODE_LIBRARY = '@neutrinojs/library'; -const REACT_COMPONENTS = '@neutrinojs/react-components'; -const JEST = '@neutrinojs/jest'; -const KARMA = '@neutrinojs/karma'; -const MOCHA = '@neutrinojs/mocha'; -const AIRBNB = '@neutrinojs/airbnb'; -const AIRBNB_BASE = '@neutrinojs/airbnb-base'; -const STANDARDJS = '@neutrinojs/standardjs'; - -const projects = { - [AIRBNB]: { - type: LINTING, - devDependencies: [AIRBNB] - }, - [AIRBNB_BASE]: { - type: LINTING, - devDependencies: [AIRBNB_BASE] - }, - [WEB_NODE_LIBRARY]: { - type: PROJECT, - devDependencies: [WEB_NODE_LIBRARY, N] - }, - [NODE]: { - type: PROJECT, - devDependencies: [NODE, N] - }, - [PREACT]: { - type: PROJECT, - dependencies: ['preact', 'preact-compat'], - devDependencies: [PREACT, N] - }, - [REACT]: { - type: PROJECT, - dependencies: ['prop-types', 'react', 'react-dom', 'react-hot-loader'], - devDependencies: [REACT, N] - }, - [REACT_COMPONENTS]: { - type: PROJECT, - devDependencies: [REACT_COMPONENTS, N, 'prop-types', 'react', 'react-dom'] - }, - [STANDARDJS]: { - type: LINTING, - devDependencies: [STANDARDJS] - }, - [VUE]: { - type: PROJECT, - dependencies: ['vue'], - devDependencies: [VUE, N] - }, - [WEB]: { - type: PROJECT, - devDependencies: [WEB, N] - }, - [JEST]: { - type: TESTING, - devDependencies: [JEST] - }, - [KARMA]: { - type: TESTING, - devDependencies: [KARMA] - }, - [MOCHA]: { - type: TESTING, - devDependencies: [MOCHA] - } -}; - -const packages = { - NEUTRINO: N, - REACT, - PREACT, - VUE, - WEB, - NODE, - WEB_NODE_LIBRARY, - REACT_COMPONENTS, - JEST, - KARMA, - MOCHA, - AIRBNB, - AIRBNB_BASE, - STANDARDJS -}; +const { packages, projects } = require('./matrix'); const isYarn = commandExists.sync('yarnpkg'); diff --git a/packages/create-project/package.json b/packages/create-project/package.json index a52feaf07..184bdf5a0 100644 --- a/packages/create-project/package.json +++ b/packages/create-project/package.json @@ -40,7 +40,6 @@ "deepmerge": "^1.5.2", "fs-extra": "^6.0.0", "javascript-stringify": "^1.6.0", - "ramda": "^0.25.0", "yargs": "^11.0.0", "yeoman-environment": "^2.0.6", "yeoman-generator": "^2.0.5" diff --git a/packages/create-project/test/cli_test.js b/packages/create-project/test/cli_test.js index 6cfadf460..97cdbdf1f 100644 --- a/packages/create-project/test/cli_test.js +++ b/packages/create-project/test/cli_test.js @@ -1,23 +1,48 @@ import test from 'ava'; -import { xprod } from 'ramda'; import assert from 'yeoman-assert'; import helpers from 'yeoman-test'; import { join } from 'path'; import { spawn } from 'child_process'; -import { packages } from '../commands/init/utils' - -if (process.env.NODE_ENV !== 'test') { - process.env.NODE_ENV = 'test'; -} +import { packages } from '../commands/init/matrix'; +const REGISTRY = 'http://localhost:4873'; +const tests = { + [packages.REACT]: { + linter: packages.AIRBNB, + tester: packages.JEST + }, + [packages.PREACT]: { + linter: packages.AIRBNB, + tester: packages.KARMA + }, + [packages.VUE]: { + linter: packages.AIRBNB_BASE + }, + [packages.NODE]: { + linter: packages.AIRBNB_BASE, + tester: packages.MOCHA + }, + [packages.REACT_COMPONENTS]: { + linter: packages.STANDARDJS + }, + [packages.WEB_NODE_LIBRARY]: { + linter: packages.STANDARDJS + }, + [packages.WEB]: { + linter: packages.AIRBNB_BASE + } +}; const project = (prompts) => helpers .run(require.resolve(join(__dirname, '../commands/init'))) .inTmpDir(function(dir) { - this.withOptions({ directory: dir, name: 'testable', stdio: 'ignore' }); + this.withOptions({ + directory: dir, + name: 'testable', + registry: REGISTRY + }); }) .withPrompts(prompts) .toPromise(); -const usable = (dir, files) => assert.file(files.map(f => join(dir, f))); const spawnP = (cmd, args, options) => new Promise((resolve, reject) => { const child = spawn(cmd, args, options); let output = ''; @@ -52,107 +77,37 @@ const lintable = async (t, dir) => { t.fail(`Failed to lint project:\n\n${output}`); } }; -const tests = [packages.JEST, packages.KARMA, packages.MOCHA]; -const matrix = { - react: [ - [packages.REACT], - [packages.AIRBNB, packages.STANDARDJS], - tests - ], - preact: [ - [packages.PREACT], - [packages.AIRBNB, packages.STANDARDJS], - tests - ], - node: [ - [packages.NODE], - [packages.AIRBNB_BASE, packages.STANDARDJS], - tests.filter(t => t !== packages.KARMA) - ], - 'react-components': [ - [packages.REACT_COMPONENTS], - [packages.AIRBNB, packages.STANDARDJS], - tests - ], - vue: [ - [packages.VUE], - [packages.AIRBNB_BASE, packages.STANDARDJS], - tests - ], - web: [ - [packages.WEB], - [packages.AIRBNB_BASE, packages.STANDARDJS], - tests - ], -}; - -Object - .keys(matrix) - .forEach((key) => { - const [presets, linters, tests] = matrix[key]; - const [preset] = presets; - test.serial(preset, async t => { - const dir = await project({ - projectType: 'application', - project: preset, - testRunner: false, - linter: false - }); +Object.keys(tests).forEach(projectName => { + const { linter, tester } = tests[projectName]; + const projectType = projectName.includes('library') + ? 'library' + : projectName.includes('components') + ? 'components' + : 'application'; + const testName = tester + ? `${projectName} + ${linter} + ${tester}` + : `${projectName} + ${linter}`; - usable(dir, [ - 'package.json', - '.neutrinorc.js' - ]); - - await buildable(t, dir); + test.serial(testName, async t => { + const dir = await project({ + projectType, + linter, + project: projectName, + testRunner: tester || false }); - xprod(presets, tests).forEach(([preset, testRunner]) => { - const testName = testRunner ? `${preset} + ${testRunner}` : preset; - - test.serial(testName, async t => { - const dir = await project({ - projectType: 'application', - project: preset, - testRunner, - linter: false - }); + t.truthy(dir); + assert.file(join(dir, 'package.json')); + assert.file(join(dir, '.neutrinorc.js')); + assert.file(join(dir, '.eslintrc.js')); - usable(dir, [ - 'package.json', - '.neutrinorc.js', - 'test/simple_test.js' - ]); + await lintable(t, dir); + await buildable(t, dir); - await Promise.all([ - buildable(t, dir), - testable(t, dir) - ]); - }); - }); - - xprod(presets, linters).forEach(([preset, linter]) => { - const testName = `${preset} + ${linter}`; - - test.serial(testName, async t => { - const dir = await project({ - projectType: 'application', - project: preset, - testRunner: false, - linter - }); - - usable(dir, [ - 'package.json', - '.neutrinorc.js', - '.eslintrc.js' - ]); - - await Promise.all([ - buildable(t, dir), - lintable(t, dir) - ]); - }); - }); + if (tester) { + assert.file(join(dir, 'test/simple_test.js')); + await testable(t, dir); + } }); +}); diff --git a/scripts/test-create-project-ci.sh b/scripts/test-create-project-ci.sh new file mode 100755 index 000000000..98b09bd8e --- /dev/null +++ b/scripts/test-create-project-ci.sh @@ -0,0 +1,25 @@ +#! /usr/bin/env bash + +set -euo pipefail + +export SKIP_CHANGELOG=true +export YARN_AUTH_TOKEN="//localhost:4873/:_authToken=token" + +# Start verdaccio registry proxy in the background +yarn verdaccio --config verdaccio.yml & +yarn config set registry "http://localhost:4873" + +# Verdaccio isn't ready to immediately accept connections, so we need to wait +while ! nc -zw 1 localhost 4873; do sleep 1; done + +# Publish all monorepo packages to the verdaccio registry +yarn lerna publish \ + --force-publish=* \ + --skip-git \ + --registry http://localhost:4873/ \ + --yes \ + --cd-version major + +# Run the integration tests, which will install packages +# from the verdaccio registry +yarn test:create-project diff --git a/verdaccio.yml b/verdaccio.yml new file mode 100644 index 000000000..9f597b1f6 --- /dev/null +++ b/verdaccio.yml @@ -0,0 +1,24 @@ +store: + memory: + limit: 10000 +auth: + htpasswd: + file: ./htpasswd +uplinks: + npmjs: + url: https://registry.npmjs.org/ +packages: + '**': + access: $all + publish: $all + proxy: npmjs + 'neutrino': + access: $anonymous + publish: $anonymous + proxy: npmjs + '@neutrinojs': + access: $anonymous + publish: $anonymous + proxy: npmjs +logs: + - {type: stdout, format: pretty, level: warn} diff --git a/yarn.lock b/yarn.lock index 970715d89..91384604c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -723,6 +723,28 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" +"@verdaccio/file-locking@0.0.7", "@verdaccio/file-locking@^0.0.7": + version "0.0.7" + resolved "https://registry.yarnpkg.com/@verdaccio/file-locking/-/file-locking-0.0.7.tgz#5fd1b2bd391e54fa32d079002b5f7ba90844e344" + dependencies: + lockfile "1.0.3" + lodash "4.17.10" + +"@verdaccio/local-storage@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@verdaccio/local-storage/-/local-storage-1.0.3.tgz#f7916afbde27e725339b1fa1e11566c3734b5194" + dependencies: + "@verdaccio/file-locking" "0.0.7" + "@verdaccio/streams" "1.0.0" + async "2.6.0" + http-errors "1.6.2" + lodash "4.17.10" + mkdirp "0.5.1" + +"@verdaccio/streams@1.0.0", "@verdaccio/streams@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@verdaccio/streams/-/streams-1.0.0.tgz#d5d24c6747208728b9fd16b908e3932c3fb1f864" + "@webassemblyjs/ast@1.4.2": version "1.4.2" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.4.2.tgz#ab715aa1fec9dd23c025204dba39690c119418ea" @@ -835,7 +857,7 @@ "@webassemblyjs/wast-parser" "1.4.2" long "^3.2.0" -JSONStream@^1.0.4: +JSONStream@1.3.2, JSONStream@^1.0.4: version "1.3.2" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" dependencies: @@ -1025,6 +1047,10 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +apache-md5@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/apache-md5/-/apache-md5-1.1.2.tgz#ee49736b639b4f108b6e9e626c6da99306b41692" + app-root-path@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46" @@ -1226,7 +1252,7 @@ async@1.x, async@^1.4.0, async@^1.5.0, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@^2.0.0, async@^2.1.4, async@^2.6.0, async@~2.6.0: +async@2.6.0, async@^2.0.0, async@^2.1.4, async@^2.6.0, async@~2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" dependencies: @@ -1816,6 +1842,10 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +bcryptjs@2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb" + beeper@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" @@ -2135,6 +2165,10 @@ buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" +buffer-equal-constant-time@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + buffer-fill@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-0.1.1.tgz#76d825c4d6e50e06b7a31eb520c04d08cc235071" @@ -2204,6 +2238,15 @@ builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" +bunyan@1.8.12: + version "1.8.12" + resolved "https://registry.yarnpkg.com/bunyan/-/bunyan-1.8.12.tgz#f150f0f6748abdd72aeae84f04403be2ef113797" + optionalDependencies: + dtrace-provider "~0.8" + moment "^2.10.6" + mv "~2" + safe-json-stringify "~1" + byline@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" @@ -2385,6 +2428,14 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" +chalk@2.4.1, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chalk@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" @@ -2403,14 +2454,6 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - change-case@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.0.2.tgz#fd48746cce02f03f0a672577d1d3a8dc2eceb037" @@ -2793,6 +2836,10 @@ commander@2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" +commander@2.15.0: + version "2.15.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.0.tgz#ad2a23a1c3b036e392469b8012cec6b33b4c1322" + commander@2.15.x, commander@^2.11.0, commander@^2.14.1, commander@^2.9.0, commander@~2.15.0: version "2.15.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" @@ -2844,7 +2891,7 @@ compressible@~2.0.13: dependencies: mime-db ">= 1.33.0 < 2" -compression@^1.5.2: +compression@1.7.2, compression@^1.5.2: version "1.7.2" resolved "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz#aaffbcd6aaf854b44ebb280353d5ad1651f59a69" dependencies: @@ -3132,6 +3179,13 @@ cookie@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" +cookies@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.7.1.tgz#7c8a615f5481c61ab9f16c833731bcb8f663b99b" + dependencies: + depd "~1.1.1" + keygrip "~1.0.2" + copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" @@ -3179,6 +3233,13 @@ core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" +cors@2.8.4: + version "2.8.4" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.4.tgz#2bd381f2eb201020105cd50ea59da63090694686" + dependencies: + object-assign "^4" + vary "^1" + cosmiconfig@^2.1.0, cosmiconfig@^2.1.1: version "2.2.2" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892" @@ -3499,7 +3560,7 @@ data-urls@^1.0.0: whatwg-mimetype "^2.0.0" whatwg-url "^6.4.0" -date-fns@^1.27.2: +date-fns@1.29.0, date-fns@^1.27.2: version "1.29.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" @@ -4032,6 +4093,12 @@ download@^6.2.2: p-event "^1.0.0" pify "^3.0.0" +dtrace-provider@~0.8: + version "0.8.6" + resolved "https://registry.yarnpkg.com/dtrace-provider/-/dtrace-provider-0.8.6.tgz#428a223afe03425d2cd6d6347fdf40c66903563d" + dependencies: + nan "^2.3.3" + duplexer2@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" @@ -4074,6 +4141,12 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" +ecdsa-sig-formatter@1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz#1c595000f04a8897dfb85000892a0f4c33af86c3" + dependencies: + safe-buffer "^5.0.1" + editions@^1.3.3: version "1.3.4" resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" @@ -4725,7 +4798,7 @@ expect@^22.4.3: jest-message-util "^22.4.3" jest-regex-util "^22.4.3" -express@^4.16.2: +express@4.16.3, express@^4.16.2: version "4.16.3" resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" dependencies: @@ -5489,13 +5562,23 @@ glob@^5.0.15, glob@^5.0.3: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^6.0.1: + version "6.0.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + global-dirs@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" dependencies: ini "^1.3.4" -global@^4.3.0: +global@4.3.2, global@^4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" dependencies: @@ -5703,7 +5786,7 @@ handle-thing@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" -handlebars@^4.0.1, handlebars@^4.0.11, handlebars@^4.0.2, handlebars@^4.0.3: +handlebars@4.0.11, handlebars@^4.0.1, handlebars@^4.0.11, handlebars@^4.0.2, handlebars@^4.0.3: version "4.0.11" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" dependencies: @@ -7236,7 +7319,7 @@ js-base64@^2.1.9: version "2.4.3" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582" -js-string-escape@^1.0.1: +js-string-escape@1.0.1, js-string-escape@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" @@ -7244,7 +7327,7 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@3.x, js-yaml@^3.10.0, js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: +js-yaml@3.11.0, js-yaml@3.x, js-yaml@^3.10.0, js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: version "3.11.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" dependencies: @@ -7370,6 +7453,21 @@ jsonpointer@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" +jsonwebtoken@8.2.1: + version "8.2.1" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.2.1.tgz#333ee39aa8f238f32fa41693e7a2fb7e42f82b31" + dependencies: + jws "^3.1.4" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" + ms "^2.1.1" + xtend "^4.0.1" + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -7385,6 +7483,21 @@ jsx-ast-utils@^2.0.0, jsx-ast-utils@^2.0.1: dependencies: array-includes "^3.0.3" +jwa@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.1.6.tgz#87240e76c9808dbde18783cf2264ef4929ee50e6" + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.10" + safe-buffer "^5.0.1" + +jws@^3.1.4: + version "3.1.5" + resolved "https://registry.yarnpkg.com/jws/-/jws-3.1.5.tgz#80d12d05b293d1e841e7cb8b4e69e561adcf834f" + dependencies: + jwa "^1.1.5" + safe-buffer "^5.0.1" + karma-chrome-launcher@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" @@ -7459,6 +7572,10 @@ karma@^2.0.2: tmp "0.0.33" useragent "2.2.1" +keygrip@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.0.2.tgz#ad3297c557069dea8bcfe7a4fa491b75c5ddeb91" + killable@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b" @@ -7750,6 +7867,10 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +lockfile@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.3.tgz#2638fc39a0331e9cac1a04b71799931c9c50df79" + lodash._basecopy@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" @@ -7820,6 +7941,10 @@ lodash.flattendeep@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" +lodash.includes@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" + lodash.isarguments@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" @@ -7828,10 +7953,30 @@ lodash.isarray@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + lodash.isequal@^4.0.0, lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" +lodash.isinteger@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" + +lodash.isnumber@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + lodash.keys@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" @@ -7848,6 +7993,10 @@ lodash.merge@^4.6.0: version "4.6.1" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" +lodash.once@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" @@ -7894,7 +8043,7 @@ lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.6.1: +lodash@4.17.10, "lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.6.1: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -8025,6 +8174,10 @@ lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2: pseudomap "^1.0.2" yallist "^2.1.2" +lunr@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/lunr/-/lunr-0.7.0.tgz#e7d279a273c4ab42ff584b61ce32a3513a2d3859" + macaddress@^0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" @@ -8088,6 +8241,10 @@ markdown-table@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.2.tgz#c78db948fa879903a41bce522e3b96f801c63786" +marked@0.3.17: + version "0.3.17" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.17.tgz#607f06668b3c6b1246b28f13da76116ac1aa2d2b" + matcher@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/matcher/-/matcher-1.1.0.tgz#4ad3a9cb6585186dc95cb8a08c7de936caed17ee" @@ -8174,7 +8331,7 @@ mem@^1.1.0: dependencies: mimic-fn "^1.0.0" -memory-fs@^0.4.0, memory-fs@~0.4.1: +memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" dependencies: @@ -8295,6 +8452,10 @@ mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" +mime@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.2.0.tgz#161e541965551d3b549fa1114391e3a3d55b923b" + mime@^1.3.4: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -8434,7 +8595,7 @@ modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" -moment@^2.6.0: +moment@^2.10.6, moment@^2.6.0: version "2.22.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.1.tgz#529a2e9bf973f259c9643d237fda84de3a26e8ad" @@ -8461,7 +8622,7 @@ ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" -ms@^2.0.0: +ms@^2.0.0, ms@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" @@ -8495,7 +8656,15 @@ mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" -nan@^2.9.2: +mv@~2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/mv/-/mv-2.1.1.tgz#ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2" + dependencies: + mkdirp "~0.5.1" + ncp "~2.0.0" + rimraf "~2.4.0" + +nan@^2.3.3, nan@^2.9.2: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" @@ -8524,6 +8693,10 @@ natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" +ncp@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" + needle@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" @@ -8855,7 +9028,7 @@ object-assign@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" -object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -9437,6 +9610,10 @@ pkg-dir@^2.0.0: dependencies: find-up "^2.1.0" +pkginfo@0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.1.tgz#b5418ef0439de5425fc4995042dced14fb2a84ff" + please-upgrade-node@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.0.2.tgz#7b9eaeca35aa4a43d6ebdfd10616c042f9a83acc" @@ -10547,7 +10724,7 @@ request@2.75.x: tough-cookie "~2.3.0" tunnel-agent "~0.4.1" -request@^2.0.0, request@^2.74.0, request@^2.83.0: +request@2.85.0, request@^2.0.0, request@^2.74.0, request@^2.83.0: version "2.85.0" resolved "https://registry.yarnpkg.com/request/-/request-2.85.0.tgz#5a03615a47c61420b3eb99b7dba204f83603e1fa" dependencies: @@ -10680,6 +10857,12 @@ rimraf@^2.2.6, rimraf@^2.2.8, rimraf@^2.4.4, rimraf@^2.5.4, rimraf@^2.6.0, rimra dependencies: glob "^7.0.5" +rimraf@~2.4.0: + version "2.4.5" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" + dependencies: + glob "^6.0.1" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -10727,6 +10910,10 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" +safe-json-stringify@~1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.1.0.tgz#bd2b6dad1ebafab3c24672a395527f01804b7e19" + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -10821,7 +11008,7 @@ semver-truncate@^1.0.0: dependencies: semver "^5.3.0" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: +"semver@2 || 3 || 4 || 5", semver@5.5.0, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" @@ -12279,6 +12466,10 @@ universalify@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" +unix-crypt-td-js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unix-crypt-td-js/-/unix-crypt-td-js-1.0.0.tgz#1c0824150481bc7a01d49e98f1ec668d82412f3b" + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -12463,7 +12654,7 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -vary@~1.1.2: +vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -12471,6 +12662,59 @@ vendors@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801" +verdaccio-htpasswd@0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/verdaccio-htpasswd/-/verdaccio-htpasswd-0.2.2.tgz#6873fe42cd83ff03d260b21483941635f320c8ba" + dependencies: + "@verdaccio/file-locking" "^0.0.7" + apache-md5 "^1.1.2" + bcryptjs "2.4.3" + unix-crypt-td-js "^1.0.0" + +verdaccio-memory@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/verdaccio-memory/-/verdaccio-memory-1.0.1.tgz#1bd49c997145a0c2d8d73836e2714e79d1463a12" + dependencies: + "@verdaccio/streams" "^1.0.0" + http-errors "1.6.3" + memory-fs "^0.4.1" + +verdaccio@3.0.0-beta.10: + version "3.0.0-beta.10" + resolved "https://registry.yarnpkg.com/verdaccio/-/verdaccio-3.0.0-beta.10.tgz#40be1c27b09aef4fb5abb52118b2efcec7ddbc97" + dependencies: + "@verdaccio/file-locking" "0.0.7" + "@verdaccio/local-storage" "1.0.3" + "@verdaccio/streams" "1.0.0" + JSONStream "1.3.2" + async "2.6.0" + body-parser "1.18.2" + bunyan "1.8.12" + chalk "2.4.1" + commander "2.15.0" + compression "1.7.2" + cookies "0.7.1" + cors "2.8.4" + date-fns "1.29.0" + express "4.16.3" + global "4.3.2" + handlebars "4.0.11" + http-errors "1.6.2" + js-string-escape "1.0.1" + js-yaml "3.11.0" + jsonwebtoken "8.2.1" + lockfile "1.0.3" + lodash "4.17.10" + lunr "0.7.0" + marked "0.3.17" + mime "2.2.0" + minimatch "3.0.4" + mkdirp "0.5.1" + pkginfo "0.4.1" + request "2.85.0" + semver "5.5.0" + verdaccio-htpasswd "0.2.2" + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"