diff --git a/.eslintignore b/.eslintignore index a6537f53305..3aa5dc37e08 100644 --- a/.eslintignore +++ b/.eslintignore @@ -12,6 +12,7 @@ # # Now un-ignore source code, tests, configuration, etc !/packages/*/src/** +!/packages/*/cypress/** !/packages/*/test/** !/packages/codemirror-graphql/resources/** !/packages/examples/** @@ -31,6 +32,7 @@ # Build artifacts **/flow-typed **/dist +**/renderExample.js # Vendored files /packages/codemirror-graphql/ diff --git a/.eslintrc.js b/.eslintrc.js index 56f73ffe67a..8c7ead336db 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -20,6 +20,11 @@ module.exports = { experimentalObjectRestSpread: true, }, }, + settings: { + 'react': { + 'version': 'detect' + } + }, // https://github.com/sindresorhus/globals/blob/master/globals.json env: { atomtest: true, @@ -28,9 +33,10 @@ module.exports = { jest: true, mocha: true, browser: true, + 'cypress/globals': true }, - extends: ['prettier', 'plugin:import/typescript'], + extends: ['prettier', 'plugin:import/typescript', 'plugin:react/recommended'], globals: { atom: false, @@ -286,7 +292,7 @@ module.exports = { 'prefer-object-spread/prefer-object-spread': 1, }, - plugins: ['babel', 'import', 'flowtype', 'prefer-object-spread'], + plugins: ['babel', 'import', 'flowtype', 'prefer-object-spread', 'cypress'], overrides: [ // Rules for TypeScript only diff --git a/.npmignore b/.npmignore index 51297667274..69f4b51e8b5 100644 --- a/.npmignore +++ b/.npmignore @@ -14,3 +14,6 @@ coverage resources src packages +packages/graphiql/*.html +cypress.json +babel.config.js diff --git a/babel.config.js b/babel.config.js index 9a5a04de22a..5646fbbd7ff 100644 --- a/babel.config.js +++ b/babel.config.js @@ -5,5 +5,8 @@ module.exports = { require.resolve('@babel/preset-flow'), require.resolve('@babel/preset-react'), ], - plugins: [require.resolve('@babel/plugin-proposal-class-properties')], + plugins: [ + require.resolve('@babel/plugin-proposal-class-properties'), + require.resolve('@babel/plugin-syntax-dynamic-import'), + ], }; diff --git a/netlify.toml b/netlify.toml index 077fab7f254..b91bf4aa6bd 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,3 +1,3 @@ [build] command = "yarn && yarn build && lerna run build-demo" - publish = "packages/examples/graphiql-cdn" + publish = "packages/graphiql" diff --git a/package.json b/package.json index 95dcdbe2a40..6d2afcc2dd1 100644 --- a/package.json +++ b/package.json @@ -19,28 +19,32 @@ } }, "scripts": { - "build": "tsc --build && lerna run build --scope codemirror-graphql --scope graphiql --scope graphql-language-service --scope graphql-language-service-server", + "build": "yarn run build-clean && yarn build-ts && yarn build-js", + "build-js": "lerna run build --scope codemirror-graphql --scope graphql-language-service-server --scope graphiql graphql-language-service", + "build-ts": "tsc --build", + "build-clean": "tsc --build --clean && rm -rf 'packages/**/src/{dist,esm,bundle}' && lerna run build-clean --parallel", "test": "yarn run lint && yarn run check && yarn run build && yarn run testonly && yarn run e2e", "testonly": "jest && lerna run test --scope codemirror-graphql", "e2e": "cd packages/graphiql && yarn e2e", - "cypress:open": "cd packages/graphiql && yarn e2e:server & cypress open --project ./packages/graphiql", + "cypress-open": "cd packages/graphiql && yarn e2e:server & cypress open --project ./packages/graphiql", "t": "yarn run testonly", - "lint": "eslint --ext=ts,js,jsx,tsx . || (printf '\\033[33mTry: \\033[7m yarn run lint -- --fix \\033[0m\\n' && exit 1)", - "lint:fix": "eslint --ext=ts,js,jsx,tsx . --fix", - "lint:check": "eslint --print-config .eslintrc.js | eslint-config-prettier-check", + "lint": "eslint --ext=ts,js,jsx,tsx . || (printf '\\033[33mTry: \\033[7m yarn format \\033[0m\\n' && exit 1)", + "lint-fix": "eslint --ext=ts,js,jsx,tsx . --fix", + "lint-check": "eslint --print-config .eslintrc.js | eslint-config-prettier-check", "check": "flow check --show-all-errors", "prepublish": "node resources/prepublish.js", "pretty": "node resources/pretty.js", "pretty-check": "node resources/pretty.js --check", - "version:release": "lerna version", - "version:prerelease": "lerna version --conventional-prerelease", - "version:graduate": "lerna version --conventional-graduate" + "version-release": "lerna version", + "version-prerelease": "lerna version --conventional-prerelease", + "version-graduate": "lerna version --conventional-graduate" }, "devDependencies": { "@babel/cli": "7.4.4", "@babel/core": "7.4.5", "@babel/node": "7.4.5", "@babel/plugin-proposal-class-properties": "7.4.4", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/plugin-transform-runtime": "^7.4.4", "@babel/polyfill": "^7.4.4", "@babel/preset-env": "7.4.5", @@ -50,6 +54,7 @@ "@commitlint/cli": "^8.1.0", "@commitlint/config-conventional": "^8.1.0", "@commitlint/config-lerna-scopes": "^8.1.0", + "@cypress/code-coverage": "^1.10.2", "@types/jest": "^24.0.18", "@typescript-eslint/parser": "^2.3.0", "babel-eslint": "^10.0.1", @@ -60,6 +65,7 @@ "eslint": "^6.4.0", "eslint-config-prettier": "6.3.0", "eslint-plugin-babel": "5.3.0", + "eslint-plugin-cypress": "^2.7.0", "eslint-plugin-flowtype": "4.3.0", "eslint-plugin-import": "^2.18.2", "eslint-plugin-prefer-object-spread": "1.2.1", @@ -74,6 +80,7 @@ "lerna": "^3.16.4", "mocha": "6.1.4", "prettier": "^1.18.2", + "rimraf": "^3.0.0", "ts-jest": "^24.1.0", "typescript": "^3.6.3", "wait-on": "^3.3.0" diff --git a/packages/codemirror-graphql/.gitignore b/packages/codemirror-graphql/.gitignore index 230058dcee0..b70dbf78038 100644 --- a/packages/codemirror-graphql/.gitignore +++ b/packages/codemirror-graphql/.gitignore @@ -1,6 +1,7 @@ node_modules/ coverage/ /*.js +/*.js.flow !babel.config.js /utils /variables diff --git a/packages/codemirror-graphql/babel.config.js b/packages/codemirror-graphql/babel.config.js index 42697e010a3..5646fbbd7ff 100644 --- a/packages/codemirror-graphql/babel.config.js +++ b/packages/codemirror-graphql/babel.config.js @@ -1,8 +1,12 @@ + module.exports = { presets: [ require.resolve('@babel/preset-env'), require.resolve('@babel/preset-flow'), require.resolve('@babel/preset-react'), ], - plugins: [require.resolve('@babel/plugin-proposal-class-properties')], + plugins: [ + require.resolve('@babel/plugin-proposal-class-properties'), + require.resolve('@babel/plugin-syntax-dynamic-import'), + ], }; diff --git a/packages/codemirror-graphql/package.json b/packages/codemirror-graphql/package.json index b5390b9950e..df611794d7a 100644 --- a/packages/codemirror-graphql/package.json +++ b/packages/codemirror-graphql/package.json @@ -14,17 +14,20 @@ }, "license": "MIT", "files": [ + "dist", "hint.js", "info.js", "jump.js", "lint.js", "mode.js", + "*.flow", "utils", "variables", "results", "README.md", "LICENSE" ], + "main": "dist", "options": { "mocha": "--full-trace --require resources/mochaBootload src/*/__tests__/*-test.js", "mocha_tdd": "--full-trace --watch --require resources/mochaBootload src/**/*/__tests__/*-test.js" @@ -32,8 +35,9 @@ "scripts": { "lint": "eslint src", "check": "flow check", - "build": "babel src --root-mode upward --ignore __tests__ --out-dir .", - "build-js": "node ../../resources/buildJs.js", + "build": "yarn build-clean && yarn build-js && yarn build-flow .", + "build-js": "babel src --root-mode upward --ignore src/__tests__ --out-dir .", + "build-clean": "rimraf {mode,hint,info,jump,lint}.{js,js.flow} && rimraf esm results utils variables coverage __tests__", "build-flow": "node ../../resources/buildFlow.js", "watch": "babel --optional runtime resources/watch.js | node", "prepublish": "node ../../resources/prepublish.js", @@ -54,6 +58,7 @@ "graphql": "^14.0.2", "jsdom": "^11.2.0", "mocha": "3.5.0", + "rimraf": "^3.0.0", "sane": "2.0.0" } } diff --git a/packages/examples/graphiql-cdn/.gitignore b/packages/examples/graphiql-cdn/.gitignore index adbb10bb9e5..07218a086e8 100644 --- a/packages/examples/graphiql-cdn/.gitignore +++ b/packages/examples/graphiql-cdn/.gitignore @@ -1,2 +1,3 @@ graphiql.js graphiql.css +renderExample.js diff --git a/packages/examples/graphiql-cdn/README.md b/packages/examples/graphiql-cdn/README.md index b43e163d7ca..fb9e6d6120b 100644 --- a/packages/examples/graphiql-cdn/README.md +++ b/packages/examples/graphiql-cdn/README.md @@ -1,14 +1,15 @@ Example GraphiQL Install ======================== -This example uses the browserified, unminified CDN version of GraphiQL found in packages/graphiql to make it easy to test changes. It's also used by netlify builds +This example uses the browserified, unminified CDN version of GraphiQL found in packages/graphiql to make it easy to test changes. It's also used by netlify builds. 1. Run `yarn` and `yarn build` in the root of this project 2. Navigate to this directory (packages/examples/graphiql-cdn) in Terminal 3. Then, run `yarn setup` and `yarn start` 4. Open your browser to the automatically generated address listed in your console. e.g. `Started on http://localhost:49811/` +5. To have it open on the same port consistently, use `PORT=3000 yarn start` ## Notes - If the `setup` script fails, it's because `graphiql` hasn't been built. -- Thanks to @orta being super clever, if you run this from a host other than localhost (i.e. remotely or by changing your /etc/hosts file) it will load the remote swapi graphql instead of the local server (the old graphcool one for now) +- Thanks to @orta, if you run this from a host other than localhost (i.e. remotely or by changing your /etc/hosts file) it will load the remote swapi graphql instead of the local server (the old graphcool one for now) diff --git a/packages/examples/graphiql-cdn/index.html b/packages/examples/graphiql-cdn/index.html index 8ec2f764170..31795dd79de 100644 --- a/packages/examples/graphiql-cdn/index.html +++ b/packages/examples/graphiql-cdn/index.html @@ -27,10 +27,8 @@ If you do not want to rely on a CDN, you can host these files locally or include them directly in your favored resource bunder. --> - - - - + + - + +
Loading...
diff --git a/packages/examples/graphiql-cdn/package.json b/packages/examples/graphiql-cdn/package.json index 366cd4b8d7a..6d4fbdd46fe 100644 --- a/packages/examples/graphiql-cdn/package.json +++ b/packages/examples/graphiql-cdn/package.json @@ -5,7 +5,7 @@ "license": "MIT", "description": "An example using GraphiQL", "scripts": { - "build-demo": "cp ../../graphiql/graphiql.js ../../graphiql/graphiql.css .", + "build-demo": "cp ../../graphiql/graphiql.js ../../graphiql/graphiql.css ../../graphiql/resources/renderExample.js .", "start": "node server" }, "dependencies": { diff --git a/packages/graphiql/.eslintrc.js b/packages/graphiql/.eslintrc.js index 5ad7625f75c..c92cccef8e1 100644 --- a/packages/graphiql/.eslintrc.js +++ b/packages/graphiql/.eslintrc.js @@ -71,6 +71,8 @@ module.exports = { order: ['static-methods', 'lifecycle', 'render', 'everything-else'], }, ], + // temporary + 'react/no-find-dom-node': 'warn', 'no-constant-condition': 'error', 'no-control-regex': 'error', 'no-debugger': 'warn', diff --git a/packages/graphiql/.gitignore b/packages/graphiql/.gitignore index ba08d35fcdb..e4e3352fc4d 100644 --- a/packages/graphiql/.gitignore +++ b/packages/graphiql/.gitignore @@ -6,3 +6,6 @@ example/yarn.lock example/graphiql.js example/graphiql.css test/pid +/*.html +renderGraphiql.js +cypress/screenshots diff --git a/packages/graphiql/cypress/integration/.prettierrc b/packages/graphiql/cypress/integration/.prettierrc deleted file mode 100644 index 963354f2316..00000000000 --- a/packages/graphiql/cypress/integration/.prettierrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "printWidth": 120 -} diff --git a/packages/graphiql/cypress/integration/init.spec.js b/packages/graphiql/cypress/integration/init.spec.js index 4825051e725..0947b5b3322 100644 --- a/packages/graphiql/cypress/integration/init.spec.js +++ b/packages/graphiql/cypress/integration/init.spec.js @@ -1,4 +1,3 @@ - const testQuery = `{ longDescriptionType { id @@ -10,49 +9,50 @@ longDescriptionType { __typename } } -}` +}`; const mockSuccess = { - "data": { - "longDescriptionType": { - "id": "abc123", - "image": "/images/logo.svg", - "hasArgs": "{\"defaultValue\":\"test default value\"}", - "test": { - "id": "abc123", - "isTest": true, - "__typename": "Test" - } - } - } -} - + data: { + longDescriptionType: { + id: 'abc123', + image: '/images/logo.svg', + hasArgs: '{"defaultValue":"test default value"}', + test: { + id: 'abc123', + isTest: true, + __typename: 'Test', + }, + }, + }, +}; -describe('GraphiQL On Initialization', function() { - it('Renders without error', function() { +describe('GraphiQL On Initialization', () => { + it('Renders without error', () => { const containers = [ - '#graphiql', '.graphiql-container', '.topBarWrap', '.editorWrap', '.queryWrap', '.resultWrap', '.variable-editor' - ] - cy.visit(`/?query=${testQuery}`) - containers.forEach(cSelector => cy.get(cSelector).should('be.visible')) - }) + '#graphiql', + '.graphiql-container', + '.topBarWrap', + '.editorWrap', + '.queryWrap', + '.resultWrap', + '.variable-editor', + ]; + cy.visit(`/?query=${testQuery}`); + containers.forEach(cSelector => cy.get(cSelector).should('be.visible')); + }); - it('Executes a GraphQL query over HTTP that has the expected result', function() { - cy.get('.execute-button').click() - cy.window().then((w) => { - cy.expect(JSON.parse(w.g.resultComponent.viewer.getValue())).to.deep.equal(mockSuccess) - }) - }) + it('Executes a GraphQL query over HTTP that has the expected result', () => { + cy.assertQueryResult({ query: testQuery }, mockSuccess); + }); - it('Toggles doc pane off', function() { - // there are two components with .docExplorerHide, one in query history - cy.get('.docExplorerWrap button.docExplorerHide').click() - cy.get('.doc-explorer').should('not.exist') - }) + it('Toggles doc pane on', () => { + cy.get('.docExplorerShow').click(); + cy.get('.doc-explorer').should('be.visible'); + }); - it('Toggles doc pane back on', function() { - cy.get('.docExplorerShow').click() - cy.get('.doc-explorer').should('be.visible') - }) - -}) + it('Toggles doc pane back off', () => { + // there are two components with .docExplorerHide, one in query history + cy.get('.docExplorerWrap button.docExplorerHide').click(); + cy.get('.doc-explorer').should('not.exist'); + }); +}); diff --git a/packages/graphiql/cypress/integration/prettify.spec.js b/packages/graphiql/cypress/integration/prettify.spec.js index ad469d8d5e4..29283cb4538 100644 --- a/packages/graphiql/cypress/integration/prettify.spec.js +++ b/packages/graphiql/cypress/integration/prettify.spec.js @@ -11,54 +11,60 @@ const prettifiedVariables = `{ const uglyQuery = `{longDescriptionType {id}}`; -const uglyVaribles = `{"a": 1}`; +const uglyVariables = `{"a": 1}`; const brokenQuery = `longDescriptionType {id}}`; -const brokenVaribles = `"a": 1}`; +const brokenVariables = `"a": 1}`; -describe('GraphiQL Prettify', function() { - it('Regular prettification', function() { - cy.visit(`/?query=${encodeURIComponent(uglyQuery)}&variables=${encodeURIComponent(uglyVaribles)}`); +describe('GraphiQL Prettify', () => { + it('Regular prettification', () => { + cy.visitWithOp({ query: uglyQuery, variables: uglyVariables }); - cy.get('[title="Prettify Query (Shift-Ctrl-P)"]').click(); + cy.clickPrettify(); - cy.window().then((w) => { + cy.window().then(w => { cy.expect(w.g.getQueryEditor().getValue()).to.equal(prettifiedQuery); - cy.expect(w.g.getVariableEditor().getValue()).to.equal(prettifiedVariables); - }) - }) + cy.expect(w.g.getVariableEditor().getValue()).to.equal( + prettifiedVariables, + ); + }); + }); - it('Noop prettification', function() { - cy.visit(`/?query=${encodeURIComponent(prettifiedQuery)}&variables=${encodeURIComponent(prettifiedVariables)}`); + it('Noop prettification', () => { + cy.visitWithOp({ query: prettifiedQuery, variables: prettifiedVariables }); - cy.get('[title="Prettify Query (Shift-Ctrl-P)"]').click(); + cy.clickPrettify(); - cy.window().then((w) => { + cy.window().then(w => { cy.expect(w.g.getQueryEditor().getValue()).to.equal(prettifiedQuery); - cy.expect(w.g.getVariableEditor().getValue()).to.equal(prettifiedVariables); - }) - }) - - it('No crash on bad query', function() { - cy.visit(`/?query=${encodeURIComponent(brokenQuery)}&variables=${encodeURIComponent(uglyVaribles)}`); + cy.expect(w.g.getVariableEditor().getValue()).to.equal( + prettifiedVariables, + ); + }); + }); - cy.get('[title="Prettify Query (Shift-Ctrl-P)"]').click(); + it('No crash on bad query', () => { + cy.visitWithOp({ query: brokenQuery, variables: uglyVariables }); - cy.window().then((w) => { + cy.clickPrettify(); + + cy.window().then(w => { cy.expect(w.g.getQueryEditor().getValue()).to.equal(brokenQuery); - cy.expect(w.g.getVariableEditor().getValue()).to.equal(prettifiedVariables); - }) - }) + cy.expect(w.g.getVariableEditor().getValue()).to.equal( + prettifiedVariables, + ); + }); + }); - it('No crash on bad variables', function() { - cy.visit(`/?query=${encodeURIComponent(uglyQuery)}&variables=${encodeURIComponent(brokenVaribles)}`); + it('No crash on bad variables', () => { + cy.visitWithOp({ query: uglyQuery, variables: brokenVariables }); - cy.get('[title="Prettify Query (Shift-Ctrl-P)"]').click(); + cy.clickPrettify(); - cy.window().then((w) => { + cy.window().then(w => { cy.expect(w.g.getQueryEditor().getValue()).to.equal(prettifiedQuery); - cy.expect(w.g.getVariableEditor().getValue()).to.equal(brokenVaribles); - }) - }) -}) + cy.expect(w.g.getVariableEditor().getValue()).to.equal(brokenVariables); + }); + }); +}); diff --git a/packages/graphiql/cypress/plugins/index.js b/packages/graphiql/cypress/plugins/index.js index fd170fba691..d5fad444ee5 100644 --- a/packages/graphiql/cypress/plugins/index.js +++ b/packages/graphiql/cypress/plugins/index.js @@ -11,7 +11,9 @@ // This function is called when a project is opened or re-opened (e.g. due to // the project's config changing) -module.exports = (on, config) => { +module.exports = (on) => { + on('task', require('@cypress/code-coverage/task')); + on('file:preprocessor', require('@cypress/code-coverage/use-babelrc')); // `on` is used to hook into various events Cypress emits // `config` is the resolved Cypress config } diff --git a/packages/graphiql/cypress/support/commands.js b/packages/graphiql/cypress/support/commands.js index af1c2291d92..2c3d6046d7e 100644 --- a/packages/graphiql/cypress/support/commands.js +++ b/packages/graphiql/cypress/support/commands.js @@ -12,6 +12,33 @@ Cypress.Commands.add('getCy', cyName => { return cy.get(`[data-cy=${cyName}]`); }); + +Cypress.Commands.add('clickExecuteQuery', () => { + return cy.get('.execute-button').click(); +}); + +Cypress.Commands.add('clickPrettify', () => { + return cy.get('[title="Prettify Query (Shift-Ctrl-P)"]').click(); +}); + +Cypress.Commands.add('visitWithOp', ({ query, variables }) => { + let url = `/?query=${encodeURIComponent(query)}`; + if (variables) { + url += `&variables=${encodeURIComponent(variables)}`; + } + return cy.visit(url); +}); + +Cypress.Commands.add('assertQueryResult', (op, mockSuccess) => { + cy.visitWithOp(op); + cy.clickExecuteQuery(); + cy.wait(500); + cy.window().then(w => { + cy.expect(JSON.parse(w.g.resultComponent.viewer.getValue())).to.deep.equal( + mockSuccess, + ); + }); +}); // // // -- This is a child command -- diff --git a/packages/graphiql/cypress/support/index.js b/packages/graphiql/cypress/support/index.js index d68db96df26..908f991d29d 100644 --- a/packages/graphiql/cypress/support/index.js +++ b/packages/graphiql/cypress/support/index.js @@ -13,6 +13,8 @@ // https://on.cypress.io/configuration // *********************************************************** +import '@cypress/code-coverage/support'; + // Import commands.js using ES2015 syntax: import './commands' diff --git a/packages/graphiql/package.json b/packages/graphiql/package.json index cad93e273ba..6fae7826d90 100644 --- a/packages/graphiql/package.json +++ b/packages/graphiql/package.json @@ -21,14 +21,23 @@ "README.md", "LICENSE" ], + "nyc": { + "report-dir": "coverage/cypress", + "reporter": [ + "lcov", + "json" + ] + }, "scripts": { - "build": "yarn run build-js && yarn run build-flow", + "build": "yarn build-clean && yarn build-js && yarn build-flow && yarn build-demo", + "build-clean": "rimraf 'graphiql.{css,*min.js,js}' esm dist", "build-js": "bash ./resources/build.sh", "build-flow": "node ../../resources/buildFlow.js", + "build-demo": "cp resources/index.html .", "check": "flow check", "dev": "babel-node test/server.js", "e2e": "yarn e2e:server && cypress run && kill -9 `cat test/pid`", - "e2e:server": "PORT=8080 babel-node test/server.js & wait-on http://localhost:8080", + "e2e:server": "PORT=8080 node test/e2e-server & wait-on http://localhost:8080", "test": "node ../../resources/runTests ENZYME=true" }, "lint-staged": { @@ -67,11 +76,14 @@ "graphql": "14.4.2", "jest": "^24.8.0", "jsdom": "15.0.0", + "nyc": "^14.1.1", "postcss-cli": "6.1.2", "prop-types": "15.7.2", "react": "15.6.2", "react-dom": "15.6.2", "react-test-renderer": "15.6.2", + "rimraf": "^3.0.0", + "serve": "^11.2.0", "uglify-js": "3.5.11", "uglifyify": "5.0.1", "watchify": "3.11.1" diff --git a/packages/graphiql/resources/build.sh b/packages/graphiql/resources/build.sh index 73aef0be61e..7a91044ced3 100644 --- a/packages/graphiql/resources/build.sh +++ b/packages/graphiql/resources/build.sh @@ -8,7 +8,6 @@ if [ ! -d "node_modules/.bin" ]; then exit 1 fi -rm -rf dist/ && mkdir -p dist/ babel src --ignore __tests__ --out-dir dist/ echo "Bundling graphiql.js..." browserify -g browserify-shim -s GraphiQL dist/index.js > graphiql.js diff --git a/packages/graphiql/resources/index.html b/packages/graphiql/resources/index.html new file mode 100644 index 00000000000..2bdd3ccca63 --- /dev/null +++ b/packages/graphiql/resources/index.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + +
Loading...
+ + + + diff --git a/packages/graphiql/resources/renderExample.js b/packages/graphiql/resources/renderExample.js new file mode 100644 index 00000000000..e8398a3df8f --- /dev/null +++ b/packages/graphiql/resources/renderExample.js @@ -0,0 +1,120 @@ +/** + * This GraphiQL example illustrates how to use some of GraphiQL's props + * in order to enable reading and updating the URL parameters, making + * link sharing of queries a little bit easier. + * + * This is only one example of this kind of feature, GraphiQL exposes + * various React params to enable interesting integrations. + */ + +// Parse the search string to get url parameters. +var search = window.location.search; +var parameters = {}; +search + .substr(1) + .split('&') + .forEach(function(entry) { + var eq = entry.indexOf('='); + if (eq >= 0) { + parameters[decodeURIComponent(entry.slice(0, eq))] = decodeURIComponent( + entry.slice(eq + 1) + ); + } + }); + +// If variables was provided, try to format it. +if (parameters.variables) { + try { + parameters.variables = JSON.stringify( + JSON.parse(parameters.variables), + null, + 2 + ); + } catch (e) { + // Do nothing, we want to display the invalid JSON as a string, rather + // than present an error. + } +} + +// When the query and variables string is edited, update the URL bar so +// that it can be easily shared. +function onEditQuery(newQuery) { + parameters.query = newQuery; + updateURL(); +} + +function onEditVariables(newVariables) { + parameters.variables = newVariables; + updateURL(); +} + +function onEditOperationName(newOperationName) { + parameters.operationName = newOperationName; + updateURL(); +} + +function updateURL() { + var newSearch = + '?' + + Object.keys(parameters) + .filter(function(key) { + return Boolean(parameters[key]); + }) + .map(function(key) { + return ( + encodeURIComponent(key) + '=' + encodeURIComponent(parameters[key]) + ); + }) + .join('&'); + history.replaceState(null, null, newSearch); +} + +// Defines a GraphQL fetcher using the fetch API. You're not required to +// use fetch, and could instead implement graphQLFetcher however you like, +// as long as it returns a Promise or Observable. +function graphQLFetcher(graphQLParams) { + // When working locally, the example expects a GraphQL server at the path /graphql. + // In a PR preview, it connects to the Star Wars API externally. + // Change this to point wherever you host your GraphQL server. + const isDev = !window.location.hostname.match( + /(^|\.)netlify\.com$|(^|\.)graphql\.org$/ + ); + const api = isDev ? '/graphql' : 'https://swapi.graph.cool/'; + return fetch(api, { + method: 'post', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + body: JSON.stringify(graphQLParams), + credentials: 'include', + }) + .then(function(response) { + return response.text(); + }) + .then(function(responseBody) { + try { + return JSON.parse(responseBody); + } catch (error) { + return responseBody; + } + }); +} + +// Render into the body. +// See the README in the top level of this module to learn more about +// how you can customize GraphiQL by providing different values or +// additional child elements. +ReactDOM.render( + React.createElement(GraphiQL, { + fetcher: graphQLFetcher, + query: parameters.query, + variables: parameters.variables, + operationName: parameters.operationName, + onEditQuery: onEditQuery, + onEditVariables: onEditVariables, + defaultVariableEditorOpen: true, + onEditOperationName: onEditOperationName, + }), + document.getElementById('graphiql') +); diff --git a/packages/graphiql/test/e2e-server.js b/packages/graphiql/test/e2e-server.js new file mode 100644 index 00000000000..6d2b996da03 --- /dev/null +++ b/packages/graphiql/test/e2e-server.js @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2019 GraphQL Contributors. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* eslint-disable no-console */ +const express = require('express'); +const path = require('path'); +const graphqlHTTP = require('express-graphql'); +const fs = require('fs'); +const schema = require('./schema'); + +const app = express(); +// Server +app.use('/graphql', graphqlHTTP({ schema })); + +app.use(express.static(path.resolve(path.join(__dirname, '../')))); + +app.listen(process.env.PORT || 0, function() { + const port = this.address().port; + console.log('PID', process.pid); + fs.writeFile(path.join(__dirname, 'pid'), parseInt(process.pid, 10), () => { + console.log(`Started on http://localhost:${port}/`); + }); + process.once('SIGINT', () => { + process.exit(); + }); + process.once('SIGTERM', () => { + process.exit(); + }); +}); + diff --git a/packages/graphql-language-service-utils/src/file.spec.ts b/packages/graphql-language-service-utils/src/file.spec.ts index a646d13bec7..819a3860d04 100644 --- a/packages/graphql-language-service-utils/src/file.spec.ts +++ b/packages/graphql-language-service-utils/src/file.spec.ts @@ -49,6 +49,16 @@ describe('requireFile', () => { `cannot require() module with extension 'npmignore'`, ); }); + it('should fail when requiring a valid extension but invalid js path', () => { + expect(() => requireFile('../.npmignore.js')).toThrowError( + `Cannot find module '../.npmignore.js' from 'file.ts'`, + ); + }); + it('should fail when requiring a valid extension but invalid json path', () => { + expect(() => requireFile('../.npmignore.json')).toThrowError( + `Cannot find module '../.npmignore.json' from 'file.ts'`, + ); + }); it('should require file with no extension using js', async () => { const config = await requireFile(path.join(__dirname, '../../../jest.config')); await expect(config.collectCoverage).toEqual(true); @@ -73,12 +83,20 @@ describe('resolveFile', () => { require.resolve(path.join(__dirname, '../package.json')), ); }); + it('should resolve when path has extension', () => { - const resolvedPath = resolveFile('../../../.eslintrc.js'); + const resolvedPath = resolveFile(path.join(__dirname, '../package')); expect(resolvedPath).toEqual( - require.resolve(path.join(__dirname, '../../../.eslintrc.js')), + require.resolve(path.join(__dirname, '../package.json')), + ); + }); + + it('should resolve when path has extension but path is not found', () => { + expect(() => resolveFile('../../../.eslinignore.js')).toThrowError( + `Cannot find module '../../../.eslinignore.js'`, ); }); + it('should resolve when path has no extension', () => { const resolvedPath = resolveFile( path.join(__dirname, '../../../.eslintrc'), diff --git a/packages/graphql-language-service-utils/src/file.ts b/packages/graphql-language-service-utils/src/file.ts index 285e594da22..d585acb3f00 100644 --- a/packages/graphql-language-service-utils/src/file.ts +++ b/packages/graphql-language-service-utils/src/file.ts @@ -1,5 +1,3 @@ -import fs from 'fs'; - export function getFileExtension(filePath: string): string | null { const pathParts = /^.+\.([^.]+)$/.exec(filePath); // if there's a file extension @@ -23,6 +21,11 @@ export function getPathWithoutExtension( return pathWithoutExtension; } +function handleExtensionErr(extension: string | null) { + if (extension) { + throw Error(`cannot require() module with extension '${extension}'`); + } +} // these make webpack happy export function resolveFile(filePath: string) { @@ -36,16 +39,15 @@ export function resolveFile(filePath: string) { return require.resolve(pathWithoutExtension + '.json'); } default: { - if (fs.existsSync(filePath + `.js`)) { + try { return require.resolve(filePath + '.js'); - } - if (fs.existsSync(filePath + `.json`)) { - return require.resolve(filePath + '.json'); - } - if (extension) { - throw Error( - `cannot require.resolve() module with extension '${extension}'`, - ); + } catch (err) { + try { + return require.resolve(filePath + '.json'); + } catch (err) { + handleExtensionErr(extension); + throw err; + } } } } @@ -60,22 +62,29 @@ export function requireFile(filePath: string) { const pathWithoutExtension = getPathWithoutExtension(filePath, extension); switch (extension) { case 'js': { - return import(pathWithoutExtension + '.js'); + if (resolveFile(pathWithoutExtension + '.js')) { + return import(pathWithoutExtension + '.js'); + } + return null; } case 'json': { - return import(pathWithoutExtension + '.json'); + if (resolveFile(pathWithoutExtension + '.json')) { + return import(pathWithoutExtension + '.json'); + } + return null; } default: { - if (fs.existsSync(filePath + `.js`)) { - return import(filePath + '.js'); + try { + if (resolveFile(filePath + `.js`)) { + return import(filePath + '.js'); + } + } catch (err) { + handleExtensionErr(extension); } - if (fs.existsSync(filePath + `.json`)) { + if (resolveFile(filePath + `.json`)) { return import(filePath + '.json'); } - if (extension) { - throw Error(`cannot require() module with extension '${extension}'`); - } - throw Error(`No extension found, and no supported file found to match '${filePath}'`); + handleExtensionErr(extension); } } } diff --git a/resources/buildFlow.js b/resources/buildFlow.js index 7d636e82058..8af5110fc18 100644 --- a/resources/buildFlow.js +++ b/resources/buildFlow.js @@ -16,7 +16,7 @@ const { cp } = require('./util'); readdirSync('src').forEach(entry => { if (entry.endsWith('.js')) { const source = join('src', entry); - const destination = join('dist', `${entry}.flow`); + const destination = join(process.argv[2] || 'dist', `${entry}.flow`); cp(source, destination); } }); diff --git a/tsconfig.json b/tsconfig.json index 07c8010d929..58568dc3ded 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,7 +14,7 @@ { "path": "packages/graphql-language-service-parser" }, - { + { "path": "packages/graphql-language-service-interface" } ] diff --git a/yarn.lock b/yarn.lock index d3c260efbde..3d6b1aec6c6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -134,6 +134,18 @@ "@babel/traverse" "^7.4.4" "@babel/types" "^7.4.4" +"@babel/helper-create-class-features-plugin@^7.3.0", "@babel/helper-create-class-features-plugin@^7.7.0": + version "7.7.0" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.0.tgz#bcdc223abbfdd386f94196ae2544987f8df775e8" + integrity sha512-MZiB5qvTWoyiFOgootmRSDV1udjIqJW/8lmxgzKq6oDqxdmHUjeP2ZUOmgHdYjmUVNABqRrHjYAYRvj8Eox/UA== + dependencies: + "@babel/helper-function-name" "^7.7.0" + "@babel/helper-member-expression-to-functions" "^7.7.0" + "@babel/helper-optimise-call-expression" "^7.7.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.7.0" + "@babel/helper-split-export-declaration" "^7.7.0" + "@babel/helper-create-class-features-plugin@^7.4.4": version "7.6.0" resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.6.0.tgz#769711acca889be371e9bc2eb68641d55218021f" @@ -146,18 +158,6 @@ "@babel/helper-replace-supers" "^7.5.5" "@babel/helper-split-export-declaration" "^7.4.4" -"@babel/helper-create-class-features-plugin@^7.7.0": - version "7.7.0" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.0.tgz#bcdc223abbfdd386f94196ae2544987f8df775e8" - integrity sha512-MZiB5qvTWoyiFOgootmRSDV1udjIqJW/8lmxgzKq6oDqxdmHUjeP2ZUOmgHdYjmUVNABqRrHjYAYRvj8Eox/UA== - dependencies: - "@babel/helper-function-name" "^7.7.0" - "@babel/helper-member-expression-to-functions" "^7.7.0" - "@babel/helper-optimise-call-expression" "^7.7.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.7.0" - "@babel/helper-split-export-declaration" "^7.7.0" - "@babel/helper-create-regexp-features-plugin@^7.7.0": version "7.7.2" resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.2.tgz#6f20443778c8fce2af2ff4206284afc0ced65db6" @@ -466,6 +466,14 @@ "@babel/helper-remap-async-to-generator" "^7.7.0" "@babel/plugin-syntax-async-generators" "^7.2.0" +"@babel/plugin-proposal-class-properties@7.3.0": + version "7.3.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.0.tgz#272636bc0fa19a0bc46e601ec78136a173ea36cd" + integrity sha512-wNHxLkEKTQ2ay0tnsam2z7fGZUi+05ziDJflEt3AZTP3oXLKHJp9HqhfroB/vdMvt3sda9fAbq7FsG8QPDrZBg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.3.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-class-properties@7.4.4": version "7.4.4" resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.4.tgz#93a6486eed86d53452ab9bab35e368e9461198ce" @@ -498,6 +506,14 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-json-strings" "^7.2.0" +"@babel/plugin-proposal-object-rest-spread@7.3.2": + version "7.3.2" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.2.tgz#6d1859882d4d778578e41f82cc5d7bf3d5daf6c1" + integrity sha512-DjeMS+J2+lpANkYLLO+m6GjoTMygYglKmRe6cDTbFv3L9i6mmiE8fe6B8MtCSLZpVXscD5kn7s6SgtHrDoBWoA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-proposal-object-rest-spread@^7.4.4": version "7.5.5" resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz#61939744f71ba76a3ae46b5eea18a54c16d22e58" @@ -932,6 +948,16 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/plugin-transform-runtime@7.2.0": + version "7.2.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz#566bc43f7d0aedc880eaddbd29168d0f248966ea" + integrity sha512-jIgkljDdq4RYDnJyQsiWbdvGeei/0MOTtSHKO/rfbd/mXBxNpdlulMx49L0HQ4pug1fXannxoqCI+fYSle9eSw== + 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-runtime@^7.4.4": version "7.6.0" resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.0.tgz#85a3cce402b28586138e368fce20ab3019b9713e" @@ -1171,6 +1197,13 @@ pirates "^4.0.0" source-map-support "^0.5.9" +"@babel/runtime@7.3.1": + version "7.3.1" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.1.tgz#574b03e8e8a9898eaf4a872a92ea20b7846f6f2a" + integrity sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA== + dependencies: + regenerator-runtime "^0.12.0" + "@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4", "@babel/template@^7.6.0": version "7.6.0" resolved "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz#7f0159c7f5012230dad64cca42ec9bdb5c9536e6" @@ -1384,6 +1417,37 @@ dependencies: find-up "^4.0.0" +"@cypress/browserify-preprocessor@2.1.1": + version "2.1.1" + resolved "https://registry.npmjs.org/@cypress/browserify-preprocessor/-/browserify-preprocessor-2.1.1.tgz#93e7c1228fee9dea9e80a1ccf0dd8cca1ffcbad8" + integrity sha512-S+0bzZbRsiFbrLkEygu5D0958z4ejio7hWxnO5MoSqD7SmZOmGRpjuZ9RaGcDmL6RWnklNjn8DkpP2s368qCKA== + dependencies: + "@babel/core" "7.4.5" + "@babel/plugin-proposal-class-properties" "7.3.0" + "@babel/plugin-proposal-object-rest-spread" "7.3.2" + "@babel/plugin-transform-runtime" "7.2.0" + "@babel/preset-env" "7.4.5" + "@babel/preset-react" "7.0.0" + "@babel/runtime" "7.3.1" + babel-plugin-add-module-exports "1.0.0" + babelify "10.0.0" + bluebird "3.5.3" + browserify "16.2.3" + coffeeify "3.0.1" + coffeescript "1.12.7" + debug "4.1.1" + fs-extra "7.0.1" + lodash.clonedeep "4.5.0" + watchify "3.11.1" + +"@cypress/code-coverage@^1.10.2": + version "1.10.2" + resolved "https://registry.npmjs.org/@cypress/code-coverage/-/code-coverage-1.10.2.tgz#b7561ca5858ae7f4767cc4ce38fe675e45edffbd" + integrity sha512-OCX04NeTUp8tZHxakxPNgAt1Lhod8o8lsbL8yUyNIdg97qAktJ1hSfIcVTEepeEl3cWguvKrORc3XwPTurT9QQ== + dependencies: + "@cypress/browserify-preprocessor" "2.1.1" + debug "4.1.1" + "@cypress/listr-verbose-renderer@0.4.1": version "0.4.1" resolved "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a" @@ -2719,6 +2783,11 @@ resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +"@zeit/schemas@2.6.0": + version "2.6.0" + resolved "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.6.0.tgz#004e8e553b4cd53d538bd38eac7bcbf58a867fe3" + integrity sha512-uUrgZ8AxS+Lio0fZKAipJjAh415JyrOZowliZAzmnJSsf7piVL5w+G0+gFJ0KSu3QRhvui/7zuvpLz03YjXAhg== + "@zkochan/cmd-shim@^3.1.0": version "3.1.0" resolved "https://registry.npmjs.org/@zkochan/cmd-shim/-/cmd-shim-3.1.0.tgz#2ab8ed81f5bb5452a85f25758eb9b8681982fd2e" @@ -2857,6 +2926,16 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== +ajv@6.5.3: + version "6.5.3" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz#71a569d189ecf4f4f321224fecb166f071dd90f9" + integrity sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: version "6.10.2" resolved "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" @@ -2872,6 +2951,13 @@ amdefine@>=0.0.4: resolved "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= +ansi-align@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" + integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= + dependencies: + string-width "^2.0.0" + ansi-colors@3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" @@ -2950,6 +3036,13 @@ ap@~0.2.0: resolved "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz#ae0942600b29912f0d2b14ec60c45e8f330b6110" integrity sha1-rglCYAspkS8NKxTsYMRejzMLYRA= +append-transform@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" + integrity sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw== + dependencies: + default-require-extensions "^2.0.0" + aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -2960,11 +3053,16 @@ aproba@^2.0.0: resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== -arch@2.1.1: +arch@2.1.1, arch@^2.1.0: version "2.1.1" resolved "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e" integrity sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg== +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= + are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" @@ -2973,6 +3071,11 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" +arg@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/arg/-/arg-2.0.0.tgz#c06e7ff69ab05b3a4a03ebe0407fac4cba657545" + integrity sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -3245,6 +3348,13 @@ babel-loader@^8.0.6: mkdirp "^0.5.1" pify "^4.0.1" +babel-plugin-add-module-exports@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.0.tgz#72b5424d941a336c6a35357f373d8b8366263031" + integrity sha512-m0sMxPL4FaN2K69GQgaRJa4Ny15qKSdoknIcpN+gz+NaJlAW9pge/povs13tPYsKDboflrEQC+/3kfIsONBTaw== + optionalDependencies: + chokidar "^2.0.4" + babel-plugin-dynamic-import-node@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" @@ -3364,6 +3474,11 @@ bluebird@3.5.0: resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" integrity sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw= +bluebird@3.5.3: + version "3.5.3" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" + integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== + bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: version "3.5.5" resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" @@ -3407,6 +3522,19 @@ boolbase@~1.0.0: resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= +boxen@1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" + integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== + dependencies: + ansi-align "^2.0.0" + camelcase "^4.0.0" + chalk "^2.0.1" + cli-boxes "^1.0.0" + string-width "^2.0.0" + term-size "^1.2.0" + widest-line "^2.0.0" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -3800,6 +3928,16 @@ cachedir@1.3.0: dependencies: os-homedir "^1.0.1" +caching-transform@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz#601d46b91eca87687a281e71cef99791b0efca70" + integrity sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w== + dependencies: + hasha "^3.0.0" + make-dir "^2.0.0" + package-hash "^3.0.0" + write-file-atomic "^2.4.2" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -3864,7 +4002,7 @@ camelcase@^3.0.0: resolved "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= -camelcase@^4.1.0: +camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= @@ -3920,6 +4058,15 @@ chai@4.2.0: pathval "^1.1.0" type-detect "^4.0.5" +chalk@2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -4033,6 +4180,11 @@ clean-css@4.2.x: dependencies: source-map "~0.6.0" +cli-boxes@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= + cli-cursor@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" @@ -4065,6 +4217,14 @@ cli-width@^2.0.0: resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= +clipboardy@1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz#0526361bf78724c1f20be248d428e365433c07ef" + integrity sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA== + dependencies: + arch "^2.1.0" + execa "^0.8.0" + cliui@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" @@ -4123,6 +4283,19 @@ codemirror@^5.28.0, codemirror@^5.47.0: resolved "https://registry.npmjs.org/codemirror/-/codemirror-5.48.4.tgz#4210fbe92be79a88f0eea348fab3ae78da85ce47" integrity sha512-pUhZXDQ6qXSpWdwlgAwHEkd4imA0kf83hINmUEzJpmG80T/XLtDDEzZo8f6PQLuRCcUQhmzqqIo3ZPTRaWByRA== +coffeeify@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/coffeeify/-/coffeeify-3.0.1.tgz#5e2753000c50bd24c693115f33864248dd11136c" + integrity sha512-Qjnr7UX6ldK1PHV7wCnv7AuCd4q19KTUtwJnu/6JRJB4rfm12zvcXtKdacUoePOKr1I4ka/ydKiwWpNAdsQb0g== + dependencies: + convert-source-map "^1.3.0" + through2 "^2.0.0" + +coffeescript@1.12.7: + version "1.12.7" + resolved "https://registry.npmjs.org/coffeescript/-/coffeescript-1.12.7.tgz#e57ee4c4867cf7f606bfc4a0f2d550c0981ddd27" + integrity sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA== + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -4223,13 +4396,26 @@ component-emitter@^1.2.1: resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== -compressible@~2.0.16: +compressible@~2.0.14, compressible@~2.0.16: version "2.0.17" resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== dependencies: mime-db ">= 1.40.0 < 2" +compression@1.7.3: + version "1.7.3" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db" + integrity sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.14" + debug "2.6.9" + on-headers "~1.0.1" + safe-buffer "5.1.2" + vary "~1.1.2" + compression@^1.7.4: version "1.7.4" resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" @@ -4439,6 +4625,13 @@ convert-source-map@^1.1.0, convert-source-map@^1.4.0: dependencies: safe-buffer "~5.1.1" +convert-source-map@^1.3.0, convert-source-map@^1.6.0: + version "1.7.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + convert-source-map@~1.1.0: version "1.1.3" resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" @@ -4516,6 +4709,17 @@ cosmiconfig@^5.0.0, cosmiconfig@^5.1.0, cosmiconfig@^5.2.0, cosmiconfig@^5.2.1: js-yaml "^3.13.1" parse-json "^4.0.0" +cp-file@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz#40d5ea4a1def2a9acdd07ba5c0b0246ef73dc10d" + integrity sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA== + dependencies: + graceful-fs "^4.1.2" + make-dir "^2.0.0" + nested-error-stacks "^2.0.0" + pify "^4.0.1" + safe-buffer "^5.0.1" + create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -4575,6 +4779,23 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^4: + version "4.0.2" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" + integrity sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE= + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + crypto-browserify@^3.0.0, crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -4767,7 +4988,7 @@ debug@3.2.6, debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2. dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: +debug@4.1.1, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== @@ -4846,6 +5067,13 @@ default-gateway@^4.2.0: execa "^1.0.0" ip-regex "^2.1.0" +default-require-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" + integrity sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc= + dependencies: + strip-bom "^3.0.0" + defaults@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -5385,6 +5613,11 @@ es-to-primitive@^1.2.0: is-date-object "^1.0.1" is-symbol "^1.0.2" +es6-error@^4.0.1: + version "4.1.1" + resolved "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" + integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== + es6-promise@^4.0.3: version "4.2.8" resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" @@ -5460,6 +5693,13 @@ eslint-plugin-babel@5.3.0: dependencies: eslint-rule-composer "^0.3.0" +eslint-plugin-cypress@^2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.7.0.tgz#117f14ce63698e4c4f3afea3d7e27025c8d504f0" + integrity sha512-52Lq5ePCD/8jc536e1RqtLfj33BAy1s7BlYgCjbG39J5kqUitcTlRY5i3NRoeAyPHueDwETsq0eASF44ugLosQ== + dependencies: + globals "^11.12.0" + eslint-plugin-flowtype@4.3.0: version "4.3.0" resolved "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.3.0.tgz#06d0837ac341caf369e7e6dbb112dd7fd21acf17" @@ -5708,6 +5948,32 @@ execa@0.10.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^0.8.0: + version "0.8.0" + resolved "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" + integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + execa@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -5989,6 +6255,13 @@ fast-levenshtein@~2.0.4: resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fast-url-parser@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" + integrity sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0= + dependencies: + punycode "^1.3.2" + faye-websocket@^0.10.0: version "0.10.0" resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" @@ -6232,6 +6505,14 @@ for-own@^0.1.4: dependencies: for-in "^1.0.1" +foreground-child@^1.5.6: + version "1.5.6" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" + integrity sha1-T9ca0t/elnibmApcCilZN8svXOk= + dependencies: + cross-spawn "^4" + signal-exit "^3.0.0" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -6285,7 +6566,7 @@ fs-extra@5.0.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^7.0.0: +fs-extra@7.0.1, fs-extra@^7.0.0: version "7.0.1" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== @@ -6643,7 +6924,7 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" -globals@^11.1.0, globals@^11.7.0: +globals@^11.1.0, globals@^11.12.0, globals@^11.7.0: version "11.12.0" resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== @@ -6873,6 +7154,13 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +hasha@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz#52a32fab8569d41ca69a61ff1a214f8eb7c8bd39" + integrity sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk= + dependencies: + is-stream "^1.0.1" + he@1.2.0, he@1.2.x: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -7751,6 +8039,13 @@ istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== +istanbul-lib-hook@^2.0.7: + version "2.0.7" + resolved "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz#c95695f383d4f8f60df1f04252a9550e15b5b133" + integrity sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA== + dependencies: + append-transform "^1.0.0" + istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" @@ -7764,7 +8059,7 @@ istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: istanbul-lib-coverage "^2.0.5" semver "^6.0.0" -istanbul-lib-report@^2.0.4: +istanbul-lib-report@^2.0.4, istanbul-lib-report@^2.0.8: version "2.0.8" resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== @@ -7773,7 +8068,7 @@ istanbul-lib-report@^2.0.4: make-dir "^2.1.0" supports-color "^6.1.0" -istanbul-lib-source-maps@^3.0.1: +istanbul-lib-source-maps@^3.0.1, istanbul-lib-source-maps@^3.0.6: version "3.0.6" resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== @@ -7784,7 +8079,7 @@ istanbul-lib-source-maps@^3.0.1: rimraf "^2.6.3" source-map "^0.6.1" -istanbul-reports@^2.2.6: +istanbul-reports@^2.2.4, istanbul-reports@^2.2.6: version "2.2.6" resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== @@ -8635,7 +8930,7 @@ lodash._reinterpolate@^3.0.0: resolved "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= -lodash.clonedeep@^4.5.0: +lodash.clonedeep@4.5.0, lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= @@ -8800,6 +9095,14 @@ lower-case@^1.1.1: resolved "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -9001,6 +9304,13 @@ merge-descriptors@1.0.1: resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= +merge-source-map@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" + integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== + dependencies: + source-map "^0.6.1" + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -9077,6 +9387,18 @@ mime-db@1.42.0, "mime-db@>= 1.40.0 < 2": resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== +mime-db@~1.33.0: + version "1.33.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== + +mime-types@2.1.18: + version "2.1.18" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== + dependencies: + mime-db "~1.33.0" + mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.24" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" @@ -9429,6 +9751,11 @@ neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== +nested-error-stacks@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61" + integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug== + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -9716,6 +10043,37 @@ nwsapi@^2.0.7, nwsapi@^2.1.3: resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f" integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw== +nyc@^14.1.1: + version "14.1.1" + resolved "https://registry.npmjs.org/nyc/-/nyc-14.1.1.tgz#151d64a6a9f9f5908a1b73233931e4a0a3075eeb" + integrity sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw== + dependencies: + archy "^1.0.0" + caching-transform "^3.0.2" + convert-source-map "^1.6.0" + cp-file "^6.2.0" + find-cache-dir "^2.1.0" + find-up "^3.0.0" + foreground-child "^1.5.6" + glob "^7.1.3" + istanbul-lib-coverage "^2.0.5" + istanbul-lib-hook "^2.0.7" + istanbul-lib-instrument "^3.3.0" + istanbul-lib-report "^2.0.8" + istanbul-lib-source-maps "^3.0.6" + istanbul-reports "^2.2.4" + js-yaml "^3.13.1" + make-dir "^2.1.0" + merge-source-map "^1.1.0" + resolve-from "^4.0.0" + rimraf "^2.6.3" + signal-exit "^3.0.2" + spawn-wrap "^1.4.2" + test-exclude "^5.2.3" + uuid "^3.3.2" + yargs "^13.2.2" + yargs-parser "^13.0.0" + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -9842,7 +10200,7 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -on-headers@~1.0.2: +on-headers@~1.0.1, on-headers@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== @@ -10093,6 +10451,16 @@ p-waterfall@^1.0.0: dependencies: p-reduce "^1.0.0" +package-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz#50183f2d36c9e3e528ea0a8605dff57ce976f88e" + integrity sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA== + dependencies: + graceful-fs "^4.1.15" + hasha "^3.0.0" + lodash.flattendeep "^4.4.0" + release-zalgo "^1.0.0" + pako@~1.0.5: version "1.0.10" resolved "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" @@ -10267,7 +10635,7 @@ path-is-absolute@1.0.1, path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1, path-is-inside@^1.0.2: +path-is-inside@1.0.2, path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -10292,6 +10660,11 @@ path-to-regexp@0.1.7: resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-to-regexp@2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45" + integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== + path-to-regexp@^2.2.1: version "2.4.0" resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.4.0.tgz#35ce7f333d5616f1c1e1bfe266c3aba2e5b2e704" @@ -10682,6 +11055,11 @@ prr@~1.0.1: resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + psl@^1.1.24, psl@^1.1.28: version "1.4.0" resolved "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" @@ -10828,6 +11206,11 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" +range-parser@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= + range-parser@^1.2.1, range-parser@~1.2.0, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -10853,7 +11236,7 @@ raw-body@^2.1.0, raw-body@^2.4.1: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.2.7: +rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: version "1.2.8" resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -11145,6 +11528,11 @@ regenerator-runtime@^0.11.0: resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== +regenerator-runtime@^0.12.0: + version "0.12.1" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" + integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== + regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.3: version "0.13.3" resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" @@ -11201,6 +11589,21 @@ regexpu-core@^4.5.4, regexpu-core@^4.6.0: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.1.0" +registry-auth-token@3.3.2: + version "3.3.2" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" + integrity sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ== + dependencies: + rc "^1.1.6" + safe-buffer "^5.0.1" + +registry-url@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= + dependencies: + rc "^1.0.1" + regjsgen@^0.5.0: version "0.5.0" resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" @@ -11218,6 +11621,13 @@ relateurl@0.2.x: resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= +release-zalgo@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" + integrity sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA= + dependencies: + es6-error "^4.0.1" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -11448,6 +11858,13 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" +rimraf@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz#614176d4b3010b75e5c390eb0ee96f6dc0cebb9b" + integrity sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -11689,6 +12106,20 @@ serialize-javascript@^1.7.0: resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz#cfc200aef77b600c47da9bb8149c943e798c2fdb" integrity sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A== +serve-handler@6.1.2: + version "6.1.2" + resolved "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.2.tgz#f05b0421a313fff2d257838cba00cbcc512cd2b6" + integrity sha512-RFh49wX7zJmmOVDcIjiDSJnMH+ItQEvyuYLYuDBVoA/xmQSCuj+uRmk1cmBB5QQlI3qOiWKp6p4DUGY+Z5AB2A== + dependencies: + bytes "3.0.0" + content-disposition "0.5.2" + fast-url-parser "1.1.3" + mime-types "2.1.18" + minimatch "3.0.4" + path-is-inside "1.0.2" + path-to-regexp "2.2.1" + range-parser "1.2.0" + serve-index@^1.9.1: version "1.9.1" resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" @@ -11722,6 +12153,21 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" +serve@^11.2.0: + version "11.2.0" + resolved "https://registry.npmjs.org/serve/-/serve-11.2.0.tgz#0405ce95c4e4a6abd9cd3d3a04ebaa7d94638627" + integrity sha512-THZcLzDGk3vJqjhAbLkLag43tiE3V0B7wVe98Xtl+1KyAsr+4iShg+9hke4pLZmrCJu0pUg0TrbhJmdqn/MKoA== + dependencies: + "@zeit/schemas" "2.6.0" + ajv "6.5.3" + arg "2.0.0" + boxen "1.3.0" + chalk "2.4.1" + clipboardy "1.2.3" + compression "1.7.3" + serve-handler "6.1.2" + update-check "1.5.2" + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -11976,6 +12422,18 @@ source-map@~0.1.30: dependencies: amdefine ">=0.0.4" +spawn-wrap@^1.4.2: + version "1.4.3" + resolved "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.3.tgz#81b7670e170cca247d80bf5faf0cfb713bdcf848" + integrity sha512-IgB8md0QW/+tWqcavuFgKYR/qIRvJkRLPJDFaoXtLLUaVcCDK0+HeFTkmQHj3eprcYhc+gOl0aEA1w7qZlYezw== + dependencies: + foreground-child "^1.5.6" + mkdirp "^0.5.0" + os-homedir "^1.0.1" + rimraf "^2.6.2" + signal-exit "^3.0.2" + which "^1.3.0" + spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" @@ -12430,6 +12888,13 @@ temp-write@^3.4.0: temp-dir "^1.0.0" uuid "^3.0.1" +term-size@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" + integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= + dependencies: + execa "^0.7.0" + ternary@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/ternary/-/ternary-1.0.0.tgz#45702725608c9499d46a9610e9b0e49ff26f789e" @@ -12924,6 +13389,14 @@ upath@^1.1.1: resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== +update-check@1.5.2: + version "1.5.2" + resolved "https://registry.npmjs.org/update-check/-/update-check-1.5.2.tgz#2fe09f725c543440b3d7dabe8971f2d5caaedc28" + integrity sha512-1TrmYLuLj/5ZovwUS7fFd1jMH3NnFDN1y1A8dboedIDt7zs/zJMo6TwwlhYKkSeEwzleeiSBV5/3c9ufAQWDaQ== + dependencies: + registry-auth-token "3.3.2" + registry-url "3.1.0" + upper-case@^1.1.1: version "1.1.3" resolved "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" @@ -13390,6 +13863,13 @@ wide-align@1.1.3, wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" +widest-line@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" + integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== + dependencies: + string-width "^2.1.1" + windows-release@^3.1.0: version "3.2.0" resolved "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz#8122dad5afc303d833422380680a79cdfa91785f" @@ -13539,6 +14019,11 @@ y18n@^3.2.1: resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: version "3.0.3" resolved "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" @@ -13643,7 +14128,7 @@ yargs@13.2.4: y18n "^4.0.0" yargs-parser "^13.1.0" -yargs@^13.3.0: +yargs@^13.2.2, yargs@^13.3.0: version "13.3.0" resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==