diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..0879e03c --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,24 @@ +name: CI + +on: + push: + paths-ignore: + - "views/website/libraries/*.json" + pull_request: + paths-ignore: + - "views/website/libraries/*.json" + +jobs: + test: + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + runs-on: macos-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + node-version: '14' + - run: npm install + - run: npm test diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 08c99c3a..00000000 --- a/.travis.yml +++ /dev/null @@ -1,11 +0,0 @@ -language: node_js -node_js: - - "stable" -before_script: - - echo "Host github.com" >> ~/.ssh/config - - echo " StrictHostKeyChecking no" >> ~/.ssh/config - - echo " CheckHostIP no" >> ~/.ssh/config - - npm install -#cache: -# directories: -# - node_modules diff --git a/Gruntfile.js b/Gruntfile.js index 3b7f261b..536d941f 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -119,6 +119,17 @@ module.exports = (grunt) => { }, pug: { + website: { + options: { + data: { + languages: getLanguages(), + }, + }, + files: { + "dist/website/index.html": "views/website/index.pug", + "dist/website/introduction/index.html": "views/website/introduction.pug", + }, + }, extension: { files: { "dist/extension/index.html": "views/extension/index.pug", @@ -258,6 +269,7 @@ module.exports = (grunt) => { grunt.registerTask("functional-tests", [ "build-website-dev", + "pug:website", "connect:website", "mochaTest:functional", ]); @@ -265,4 +277,4 @@ module.exports = (grunt) => { grunt.registerTask("test", ["unit-tests", "functional-tests"]); grunt.registerTask("default", ["build-dev", "connect:website", "watch"]); -}; \ No newline at end of file +}; diff --git a/README.md b/README.md index 1b4236ce..4cbfafbf 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,6 @@ -[![Build Status](https://travis-ci.org/jsonwebtoken/jsonwebtoken.github.io.png?branch=master)](https://travis-ci.org/jsonwebtoken/jsonwebtoken.github.io) - ### Sponsor ||| diff --git a/libraries.js b/libraries.js index 204a634a..cb71305c 100644 --- a/libraries.js +++ b/libraries.js @@ -3,7 +3,7 @@ const { Octokit } = require("@octokit/rest"); const dotenv = require("dotenv").config(); const getLanguages = require("./views/website/libraries/support/get-languages.js"); const octokit = new Octokit({ - auth: process.env.GITHUB, + auth: process.env.GITHUB || process.env.GITHUB_TOKEN, }); function fetchGithubStars() { diff --git a/package-lock.json b/package-lock.json index b21b2393..9bdfddbb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,9 @@ "@babel/preset-env": "^7.4.5", "babel-loader": "^8.0.6", "babel-plugin-transform-async-to-generator": "^6.24.1", + "base64url": "^3.0.1", "bootstrap": "^3.4.1", + "bowser": "^2.11.0", "chai": "^4.2.0", "chai-arrays": "^2.0.0", "chai-as-promised": "^7.1.1", @@ -49,11 +51,13 @@ "highlight.js": "^10.4.1", "inject-loader": "^3.0.1", "isotope-layout": "^3.0.6", + "jose": "^3.19.0", "jquery": "^3.4.1", "lodash": "^4.17.13", "loglevel": "^1.6.2", "mocha": "^5.2.0", - "node-jose": "^1.1.4", + "nock": "^13.1.3", + "node-forge": "^0.10.0", "promise.any": "^0.1.1", "puppeteer": "^1.17.0", "request-promise-native": "^1.0.7", @@ -112,12 +116,20 @@ "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, "node_modules/@babel/core/node_modules/debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -170,6 +182,9 @@ "invariant": "^2.2.4", "levenary": "^1.1.1", "semver": "^5.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { @@ -184,6 +199,9 @@ "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-replace-supers": "^7.10.4", "@babel/helper-split-export-declaration": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { @@ -195,6 +213,9 @@ "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-regex": "^7.10.4", "regexpu-core": "^4.7.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-define-map": { @@ -401,7 +422,13 @@ "version": "7.11.2", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.2.tgz", "integrity": "sha512-Vuj/+7vLo6l1Vi7uuO+1ngCDNeVmNbTngcJFKCR/oEtz8tKz0CJxZEGmPt9KcIloZhOZ3Zit6xbpXT2MDlS9Vw==", - "dev": true + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { "version": "7.10.5", @@ -412,6 +439,9 @@ "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-remap-async-to-generator": "^7.10.4", "@babel/plugin-syntax-async-generators": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { @@ -422,6 +452,9 @@ "dependencies": { "@babel/helper-create-class-features-plugin": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-dynamic-import": { @@ -432,6 +465,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { @@ -442,6 +478,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { @@ -452,6 +491,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { @@ -462,6 +504,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { @@ -472,6 +517,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-numeric-separator": { @@ -482,6 +530,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { @@ -493,6 +544,9 @@ "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-transform-parameters": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { @@ -503,6 +557,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-chaining": { @@ -514,6 +571,9 @@ "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-methods": { @@ -524,6 +584,9 @@ "dependencies": { "@babel/helper-create-class-features-plugin": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { @@ -534,6 +597,12 @@ "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-async-generators": { @@ -543,6 +612,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-class-properties": { @@ -552,6 +624,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-dynamic-import": { @@ -561,6 +636,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-export-namespace-from": { @@ -570,6 +648,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-json-strings": { @@ -579,6 +660,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { @@ -588,6 +672,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { @@ -597,6 +684,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-numeric-separator": { @@ -606,6 +696,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-object-rest-spread": { @@ -615,6 +708,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { @@ -624,6 +720,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-optional-chaining": { @@ -633,6 +732,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-top-level-await": { @@ -642,6 +744,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { @@ -651,6 +756,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { @@ -662,6 +770,9 @@ "@babel/helper-module-imports": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-remap-async-to-generator": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { @@ -671,6 +782,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { @@ -680,6 +794,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { @@ -696,6 +813,9 @@ "@babel/helper-replace-supers": "^7.10.4", "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { @@ -705,6 +825,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { @@ -714,6 +837,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { @@ -724,6 +850,9 @@ "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { @@ -733,6 +862,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { @@ -743,6 +875,9 @@ "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { @@ -752,6 +887,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { @@ -762,6 +900,9 @@ "dependencies": { "@babel/helper-function-name": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { @@ -771,6 +912,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { @@ -780,6 +924,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { @@ -791,6 +938,9 @@ "@babel/helper-module-transforms": "^7.10.5", "@babel/helper-plugin-utils": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { @@ -803,6 +953,9 @@ "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-simple-access": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { @@ -815,6 +968,9 @@ "@babel/helper-module-transforms": "^7.10.5", "@babel/helper-plugin-utils": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { @@ -825,6 +981,9 @@ "dependencies": { "@babel/helper-module-transforms": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { @@ -834,6 +993,9 @@ "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { @@ -843,6 +1005,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { @@ -853,6 +1018,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-replace-supers": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { @@ -863,6 +1031,9 @@ "dependencies": { "@babel/helper-get-function-arity": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { @@ -872,6 +1043,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { @@ -881,6 +1055,9 @@ "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { @@ -890,6 +1067,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { @@ -899,6 +1079,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { @@ -909,6 +1092,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { @@ -919,6 +1105,9 @@ "dependencies": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-regex": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { @@ -929,6 +1118,9 @@ "dependencies": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { @@ -938,6 +1130,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { @@ -947,6 +1142,9 @@ "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { @@ -957,12 +1155,16 @@ "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/polyfill": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.10.4.tgz", "integrity": "sha512-8BYcnVqQ5kMD2HXoHInBH7H1b/uP3KdnwCYXOqFnXqguOyuu443WXusbIUbWEfY3Z0Txk0M1uG/8YuAMhNl6zg==", + "deprecated": "🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.", "dev": true, "dependencies": { "core-js": "^2.6.5", @@ -1043,6 +1245,9 @@ "invariant": "^2.2.2", "levenary": "^1.1.1", "semver": "^5.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-modules": { @@ -1056,6 +1261,9 @@ "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/register": { @@ -1071,6 +1279,9 @@ "mkdirp": "^0.5.1", "pirates": "^4.0.0", "source-map-support": "^0.5.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/register/node_modules/find-cache-dir": { @@ -1082,6 +1293,9 @@ "commondir": "^1.0.1", "make-dir": "^1.0.0", "pkg-dir": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/@babel/register/node_modules/find-up": { @@ -1091,13 +1305,19 @@ "dev": true, "dependencies": { "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/@babel/register/node_modules/home-or-tmp": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-3.0.0.tgz", "integrity": "sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/@babel/register/node_modules/locate-path": { "version": "2.0.0", @@ -1107,6 +1327,9 @@ "dependencies": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/@babel/register/node_modules/make-dir": { @@ -1116,6 +1339,9 @@ "dev": true, "dependencies": { "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/@babel/register/node_modules/p-limit": { @@ -1125,6 +1351,9 @@ "dev": true, "dependencies": { "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/@babel/register/node_modules/p-locate": { @@ -1134,19 +1363,28 @@ "dev": true, "dependencies": { "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/@babel/register/node_modules/p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/@babel/register/node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/@babel/register/node_modules/pkg-dir": { "version": "2.0.0", @@ -1155,6 +1393,9 @@ "dev": true, "dependencies": { "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/@babel/runtime": { @@ -1198,6 +1439,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -1234,7 +1476,10 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.1.90" + } }, "node_modules/@cliqz-oss/node-firefox-connect": { "version": "1.2.1", @@ -1654,12 +1899,21 @@ "dependencies": { "mime-types": "~2.1.24", "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/acorn": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/acorn-globals": { "version": "3.1.0", @@ -1672,13 +1926,22 @@ "node_modules/acorn-globals/node_modules/acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/acorn-jsx": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", - "dev": true + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0" + } }, "node_modules/adbkit": { "version": "2.11.0", @@ -1693,13 +1956,22 @@ "debug": "~2.6.3", "node-forge": "^0.7.1", "split": "~0.3.3" + }, + "bin": { + "adbkit": "bin/adbkit" + }, + "engines": { + "node": ">= 0.10.4" } }, "node_modules/adbkit-logcat": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/adbkit-logcat/-/adbkit-logcat-1.1.0.tgz", "integrity": "sha1-Adf5sM75CTowvLOwB+//MBUIli8=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.10.4" + } }, "node_modules/adbkit-monkey": { "version": "1.0.1", @@ -1708,6 +1980,9 @@ "dev": true, "dependencies": { "async": "~0.2.9" + }, + "engines": { + "node": ">= 0.10.4" } }, "node_modules/adbkit-monkey/node_modules/async": { @@ -1726,7 +2001,10 @@ "version": "0.7.6", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/addons-linter": { "version": "1.4.1", @@ -1753,7 +2031,6 @@ "esprima": "3.1.3", "first-chunk-stream": "2.0.0", "fluent-syntax": "0.7.0", - "fsevents": "2.0.1", "glob": "7.1.3", "is-mergeable-object": "1.1.0", "jed": "1.1.1", @@ -1775,6 +2052,9 @@ "yargs": "12.0.2", "yauzl": "2.9.2" }, + "bin": { + "addons-linter": "bin/addons-linter" + }, "optionalDependencies": { "fsevents": "2.0.1" } @@ -1783,6 +2063,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0.tgz", "integrity": "sha512-dnrMRkyyr74CRelJwvgnnSUDh2ge2NCTyHVwpOdvRMHtJUyxLtMAfhBN3s64pY41zdw0kgiLPh6S20eb1NcX6Q==", + "deprecated": "🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.", "dev": true, "dependencies": { "core-js": "^2.5.7", @@ -1805,13 +2086,19 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/addons-linter/node_modules/camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/addons-linter/node_modules/chalk": { "version": "2.4.0", @@ -1822,6 +2109,9 @@ "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/addons-linter/node_modules/cliui": { @@ -1842,13 +2132,23 @@ "dev": true, "dependencies": { "xregexp": "4.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/addons-linter/node_modules/esprima": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } }, "node_modules/addons-linter/node_modules/fast-deep-equal": { "version": "2.0.1", @@ -1868,6 +2168,9 @@ "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" } }, "node_modules/addons-linter/node_modules/regenerator-runtime": { @@ -1880,13 +2183,19 @@ "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true + "dev": true, + "bin": { + "semver": "bin/semver" + } }, "node_modules/addons-linter/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/addons-linter/node_modules/source-map-support": { "version": "0.5.6", @@ -1905,6 +2214,9 @@ "dev": true, "dependencies": { "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/addons-linter/node_modules/xregexp": { @@ -1956,7 +2268,10 @@ "version": "0.4.16", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.3.0" + } }, "node_modules/agent-base": { "version": "4.3.0", @@ -1965,7 +2280,10 @@ "dev": true, "dependencies": { "es6-promisify": "^5.0.0" - } + }, + "engines": { + "node": ">= 4.0.0" + } }, "node_modules/ajv": { "version": "6.12.3", @@ -1977,19 +2295,29 @@ "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, "node_modules/ajv-errors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true + "dev": true, + "peerDependencies": { + "ajv": ">=5.0.0" + } }, "node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } }, "node_modules/ajv-merge-patch": { "version": "4.1.0", @@ -1999,6 +2327,9 @@ "dependencies": { "fast-json-patch": "^2.0.6", "json-merge-patch": "^0.2.3" + }, + "peerDependencies": { + "ajv": ">=6.0.0" } }, "node_modules/align-text": { @@ -2009,6 +2340,9 @@ "kind-of": "^3.0.2", "longest": "^1.0.1", "repeat-string": "^1.5.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/align-text/node_modules/kind-of": { @@ -2017,13 +2351,19 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dependencies": { "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.2" + } }, "node_modules/ansi-align": { "version": "2.0.0", @@ -2038,13 +2378,19 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/ansi-styles": { "version": "3.2.1", @@ -2053,6 +2399,9 @@ "dev": true, "dependencies": { "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/ansicolors": { @@ -2098,6 +2447,9 @@ "tar-stream": "^1.5.0", "walkdir": "^0.0.11", "zip-stream": "^1.1.0" + }, + "engines": { + "node": ">= 0.10.0" } }, "node_modules/archiver-utils": { @@ -2112,6 +2464,9 @@ "lodash": "^4.8.0", "normalize-path": "^2.0.0", "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 0.10.0" } }, "node_modules/archiver/node_modules/async": { @@ -2146,31 +2501,46 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/array-differ": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/array-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/array-filter": { "version": "0.0.1", @@ -2205,7 +2575,10 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/array-union": { "version": "1.0.2", @@ -2214,25 +2587,37 @@ "dev": true, "dependencies": { "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/asap": { "version": "2.0.6", @@ -2276,7 +2661,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8" + } }, "node_modules/assert/node_modules/inherits": { "version": "2.0.1", @@ -2297,19 +2685,28 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/ast-types": { "version": "0.13.3", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz", "integrity": "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/async": { "version": "1.5.2", @@ -2339,13 +2736,22 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/aws4": { "version": "1.10.0", @@ -2368,7 +2774,10 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/babel-code-frame/node_modules/chalk": { "version": "1.1.3", @@ -2381,6 +2790,9 @@ "has-ansi": "^2.0.0", "strip-ansi": "^3.0.0", "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/babel-code-frame/node_modules/js-tokens": { @@ -2393,7 +2805,10 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/babel-core": { "version": "6.26.3", @@ -2426,7 +2841,10 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true + "dev": true, + "bin": { + "json5": "lib/cli.js" + } }, "node_modules/babel-generator": { "version": "6.26.1", @@ -2448,7 +2866,10 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } }, "node_modules/babel-helper-function-name": { "version": "6.24.1", @@ -2507,6 +2928,13 @@ "mkdirp": "^0.5.3", "pify": "^4.0.1", "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 6.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" } }, "node_modules/babel-messages": { @@ -2633,7 +3061,10 @@ "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/babel-types": { "version": "6.26.0", @@ -2649,12 +3080,18 @@ "node_modules/babel-types/node_modules/to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "bin": { + "babylon": "bin/babylon.js" + } }, "node_modules/balanced-match": { "version": "1.0.0", @@ -2675,6 +3112,9 @@ "isobject": "^3.0.1", "mixin-deep": "^1.2.0", "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/base/node_modules/define-property": { @@ -2684,6 +3124,9 @@ "dev": true, "dependencies": { "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/base/node_modules/is-accessor-descriptor": { @@ -2693,6 +3136,9 @@ "dev": true, "dependencies": { "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/base/node_modules/is-data-descriptor": { @@ -2702,6 +3148,9 @@ "dev": true, "dependencies": { "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/base/node_modules/is-descriptor": { @@ -2713,6 +3162,9 @@ "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/base64-js": { @@ -2725,7 +3177,10 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.0.0" + } }, "node_modules/basic-auth": { "version": "2.0.1", @@ -2734,6 +3189,9 @@ "dev": true, "dependencies": { "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" } }, "node_modules/batch": { @@ -2760,13 +3218,19 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/binary-extensions": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/bindings": { "version": "1.5.0", @@ -2827,6 +3291,9 @@ "qs": "6.7.0", "raw-body": "2.4.0", "type-is": "~1.6.17" + }, + "engines": { + "node": ">= 0.8" } }, "node_modules/body/node_modules/bytes": { @@ -2843,6 +3310,9 @@ "dependencies": { "bytes": "1", "string_decoder": "0.10" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/boolbase": { @@ -2855,6 +3325,15 @@ "version": "3.4.1", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "dev": true }, "node_modules/boxen": { @@ -2870,13 +3349,19 @@ "string-width": "^2.0.0", "term-size": "^1.2.0", "widest-line": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/boxen/node_modules/camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/brace-expansion": { "version": "1.1.11", @@ -2904,6 +3389,9 @@ "snapdragon-node": "^2.0.1", "split-string": "^3.0.2", "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/braces/node_modules/extend-shallow": { @@ -2913,6 +3401,9 @@ "dev": true, "dependencies": { "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/brorand": { @@ -3012,13 +3503,30 @@ "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/browserify-sign/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/browserify-sign/node_modules/string_decoder": { "version": "1.3.0", @@ -3048,6 +3556,16 @@ "electron-to-chromium": "^1.3.488", "escalade": "^3.0.1", "node-releases": "^1.1.58" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" } }, "node_modules/buffer": { @@ -3080,7 +3598,10 @@ "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", @@ -3117,14 +3638,15 @@ "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", "dev": true, - "dependencies": { - "dtrace-provider": "~0.8", - "moment": "^2.10.6", - "mv": "~2", - "safe-json-stringify": "~1" + "engines": [ + "node >=0.10.0" + ], + "bin": { + "bunyan": "bin/bunyan" }, "optionalDependencies": { "dtrace-provider": "~0.8", + "moment": "^2.10.6", "mv": "~2", "safe-json-stringify": "~1" } @@ -3132,7 +3654,10 @@ "node_modules/bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "engines": { + "node": ">= 0.8" + } }, "node_modules/cacache": { "version": "10.0.4", @@ -3162,6 +3687,9 @@ "dev": true, "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, "node_modules/cache-base": { @@ -3179,6 +3707,9 @@ "to-object-path": "^0.3.0", "union-value": "^1.0.0", "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/caller-path": { @@ -3188,18 +3719,27 @@ "dev": true, "dependencies": { "callsites": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/callsites": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/camelcase": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/caniuse-lite": { "version": "1.0.30001111", @@ -3211,10 +3751,13 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", - "dev": true - }, - "node_modules/caseless": { - "version": "0.12.0", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/caseless": { + "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true @@ -3226,6 +3769,9 @@ "dependencies": { "align-text": "^0.1.3", "lazy-cache": "^1.0.3" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/chai": { @@ -3240,13 +3786,19 @@ "get-func-name": "^2.0.0", "pathval": "^1.1.0", "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" } }, "node_modules/chai-arrays": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/chai-arrays/-/chai-arrays-2.2.0.tgz", "integrity": "sha512-4awrdGI2EH8owJ9I58PXwG4N56/FiM8bsn4CVSNEgr4GKAM6Kq5JPVApUbhUBjDakbZNuRvV7quRSC38PWq/tg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10" + } }, "node_modules/chai-as-promised": { "version": "7.1.1", @@ -3255,6 +3807,9 @@ "dev": true, "dependencies": { "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 5" } }, "node_modules/chai-json-schema": { @@ -3265,6 +3820,12 @@ "dependencies": { "jsonpointer.js": "0.4.0", "tv4": "^1.3.0" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "chai": ">= 1.6.1 < 5" } }, "node_modules/chalk": { @@ -3276,6 +3837,9 @@ "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/character-parser": { @@ -3296,7 +3860,10 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/cheerio": { "version": "1.0.0-rc.2", @@ -3310,18 +3877,21 @@ "htmlparser2": "^3.9.1", "lodash": "^4.15.0", "parse5": "^3.0.1" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", "dev": true, "dependencies": { "anymatch": "^2.0.0", "async-each": "^1.0.1", "braces": "^2.3.2", - "fsevents": "^1.2.7", "glob-parent": "^3.1.0", "inherits": "^2.0.3", "is-binary-path": "^1.0.0", @@ -3339,11 +3909,19 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", "dev": true, + "hasInstallScript": true, "optional": true, + "os": [ + "darwin" + ], "dependencies": { "bindings": "^1.5.0", "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" } }, "node_modules/chokidar/node_modules/is-glob": { @@ -3353,19 +3931,29 @@ "dev": true, "dependencies": { "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/chokidar/node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/chokidar/node_modules/upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } }, "node_modules/chownr": { "version": "1.1.4", @@ -3380,6 +3968,9 @@ "dev": true, "dependencies": { "tslib": "^1.9.0" + }, + "engines": { + "node": ">=6.0" } }, "node_modules/cipher-base": { @@ -3396,6 +3987,7 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "deprecated": "CircularJSON is in maintenance only, flatted is its successor.", "dev": true }, "node_modules/class-utils": { @@ -3408,6 +4000,9 @@ "define-property": "^0.2.5", "isobject": "^3.0.0", "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/class-utils/node_modules/define-property": { @@ -3417,6 +4012,9 @@ "dev": true, "dependencies": { "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/clean-css": { @@ -3425,18 +4023,27 @@ "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", "dependencies": { "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" } }, "node_modules/clean-css/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/cli-boxes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/cli-cursor": { "version": "2.1.0", @@ -3445,6 +4052,9 @@ "dev": true, "dependencies": { "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/cli-width": { @@ -3473,7 +4083,10 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8" + } }, "node_modules/clone-deep": { "version": "0.3.0", @@ -3485,6 +4098,9 @@ "is-plain-object": "^2.0.1", "kind-of": "^3.2.2", "shallow-clone": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/clone-deep/node_modules/kind-of": { @@ -3494,19 +4110,29 @@ "dev": true, "dependencies": { "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } }, "node_modules/code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/codemirror": { "version": "5.56.0", @@ -3522,6 +4148,9 @@ "dependencies": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/color-convert": { @@ -3543,7 +4172,10 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.1.90" + } }, "node_modules/columnify": { "version": "1.5.4", @@ -3562,6 +4194,9 @@ "dev": true, "dependencies": { "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, "node_modules/commander": { @@ -3574,7 +4209,10 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.0.0" + } }, "node_modules/commondir": { "version": "1.0.1", @@ -3598,6 +4236,9 @@ "crc32-stream": "^2.0.0", "normalize-path": "^2.0.0", "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 0.10.0" } }, "node_modules/concat-map": { @@ -3611,6 +4252,9 @@ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, + "engines": [ + "node >= 0.8" + ], "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -3630,6 +4274,9 @@ "unique-string": "^1.0.0", "write-file-atomic": "^2.0.0", "xdg-basedir": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/configstore/node_modules/make-dir": { @@ -3639,13 +4286,19 @@ "dev": true, "dependencies": { "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/configstore/node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/connect": { "version": "3.7.0", @@ -3657,13 +4310,19 @@ "finalhandler": "1.1.2", "parseurl": "~1.3.3", "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" } }, "node_modules/connect-livereload": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz", "integrity": "sha1-gBV9E3HJ83zBQDmrGJWXDRGdw7w=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/console-browserify": { "version": "1.2.0", @@ -3694,12 +4353,18 @@ "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", "dependencies": { "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } }, "node_modules/continuable-cache": { "version": "0.3.1", @@ -3719,7 +4384,10 @@ "node_modules/cookie": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "engines": { + "node": ">= 0.6" + } }, "node_modules/cookie-signature": { "version": "1.0.6", @@ -3747,18 +4415,26 @@ "dev": true, "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, "node_modules/copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/core-js": { "version": "2.6.11", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", + "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true }, "node_modules/core-js-compat": { "version": "3.6.5", @@ -3768,13 +4444,20 @@ "dependencies": { "browserslist": "^4.8.5", "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, "node_modules/core-js-compat/node_modules/semver": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, "node_modules/core-util-is": { "version": "1.0.2", @@ -3799,6 +4482,9 @@ "dependencies": { "crc": "^3.4.4", "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 0.10.0" } }, "node_modules/create-ecdh": { @@ -3824,6 +4510,9 @@ "dev": true, "dependencies": { "capture-stack-trace": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/create-hash": { @@ -3864,6 +4553,9 @@ "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" } }, "node_modules/crx": { @@ -3876,6 +4568,12 @@ "commander": "^2.5.0", "es6-promise": "^3.0.0", "node-rsa": "^0.2.10" + }, + "bin": { + "crx": "bin/crx.js" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/crx-parser": { @@ -3901,13 +4599,19 @@ "public-encrypt": "^4.0.0", "randombytes": "^2.0.0", "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" } }, "node_modules/crypto-random-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/css": { "version": "2.2.4", @@ -3943,13 +4647,19 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/css/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/cyclist": { "version": "1.0.1", @@ -3974,6 +4684,9 @@ "dev": true, "dependencies": { "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/data-uri-to-buffer": { @@ -3986,7 +4699,10 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/debounce": { "version": "1.1.0", @@ -4005,13 +4721,19 @@ "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10" + } }, "node_modules/deep-eql": { "version": "3.0.1", @@ -4020,6 +4742,9 @@ "dev": true, "dependencies": { "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=0.12" } }, "node_modules/deep-equal": { @@ -4034,13 +4759,19 @@ "object-is": "^1.0.1", "object-keys": "^1.1.1", "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.0.0" + } }, "node_modules/deep-for-each": { "version": "2.0.3", @@ -4073,7 +4804,10 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/defaults": { "version": "1.0.3", @@ -4091,6 +4825,9 @@ "dev": true, "dependencies": { "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/define-property": { @@ -4101,6 +4838,9 @@ "dependencies": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/define-property/node_modules/is-accessor-descriptor": { @@ -4110,6 +4850,9 @@ "dev": true, "dependencies": { "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/define-property/node_modules/is-data-descriptor": { @@ -4119,6 +4862,9 @@ "dev": true, "dependencies": { "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/define-property/node_modules/is-descriptor": { @@ -4130,6 +4876,9 @@ "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/degenerator": { @@ -4147,18 +4896,31 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } }, "node_modules/deprecation": { "version": "2.3.1", @@ -4190,7 +4952,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/detect-indent": { "version": "4.0.0", @@ -4199,13 +4964,19 @@ "dev": true, "dependencies": { "repeating": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.3.1" + } }, "node_modules/diffie-hellman": { "version": "5.0.3", @@ -4238,13 +5009,22 @@ "sha.js": "~2.4.4", "source-map-support": "~0.5.4", "yargs": "~12.0.1" + }, + "bin": { + "dispensary": "bin/dispensary" + }, + "engines": { + "node": ">= 8.0.0" } }, "node_modules/dispensary/node_modules/ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/dispensary/node_modules/async": { "version": "2.6.3", @@ -4280,6 +5060,9 @@ "pump": "^3.0.0", "quick-format-unescaped": "^3.0.0", "sonic-boom": "^0.6.1" + }, + "bin": { + "pino": "bin.js" } }, "node_modules/dispensary/node_modules/pump": { @@ -4299,6 +5082,9 @@ "dev": true, "dependencies": { "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/dispensary/node_modules/yargs": { @@ -4328,8 +5114,11 @@ "dev": true, "dependencies": { "vscode-languageserver-types": "^3.5.0" - } - }, + }, + "engines": { + "node": "*" + } + }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -4337,6 +5126,9 @@ "dev": true, "dependencies": { "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/doctypes": { @@ -4364,7 +5156,11 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } }, "node_modules/domelementtype": { "version": "1.3.1", @@ -4398,6 +5194,9 @@ "dev": true, "dependencies": { "is-obj": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/dotenv": { @@ -4413,9 +5212,13 @@ "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", "dev": true, + "hasInstallScript": true, "optional": true, "dependencies": { "nan": "^2.14.0" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/duplexer3": { @@ -4491,18 +5294,27 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==", - "dev": true + "dev": true, + "engines": { + "node": ">4.0" + } }, "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true + "dev": true, + "engines": { + "node": ">= 4" + } }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "engines": { + "node": ">= 0.8" + } }, "node_modules/encoding": { "version": "0.1.13", @@ -4520,6 +5332,9 @@ "dev": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/end-of-stream": { @@ -4540,6 +5355,9 @@ "graceful-fs": "^4.1.2", "memory-fs": "^0.5.0", "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/enhanced-resolve/node_modules/memory-fs": { @@ -4550,6 +5368,9 @@ "dependencies": { "errno": "^0.1.3", "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" } }, "node_modules/entities": { @@ -4564,6 +5385,9 @@ "dev": true, "dependencies": { "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" } }, "node_modules/error": { @@ -4601,6 +5425,12 @@ "object.assign": "^4.1.0", "string.prototype.trimend": "^1.0.1", "string.prototype.trimstart": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/es-to-primitive": { @@ -4612,6 +5442,12 @@ "is-callable": "^1.1.4", "is-date-object": "^1.0.1", "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/es5-ext": { @@ -4726,7 +5562,10 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/escape-html": { "version": "1.0.3", @@ -4737,7 +5576,10 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/escodegen": { "version": "1.14.3", @@ -4748,8 +5590,14 @@ "esprima": "^4.0.1", "estraverse": "^4.2.0", "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" }, "optionalDependencies": { "source-map": "~0.6.1" @@ -4760,7 +5608,10 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "optional": true + "optional": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/escope": { "version": "3.6.0", @@ -4772,6 +5623,9 @@ "es6-weak-map": "^2.0.1", "esrecurse": "^4.1.0", "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=0.4.0" } }, "node_modules/eslint": { @@ -4818,6 +5672,12 @@ "strip-json-comments": "^2.0.1", "table": "^4.0.3", "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^6.14.0 || ^8.10.0 || >=9.10.0" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml": { @@ -4833,7 +5693,13 @@ "version": "5.7.4", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/acorn-jsx": { "version": "3.0.1", @@ -4848,7 +5714,13 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/ajv": { "version": "4.11.8", @@ -4864,19 +5736,28 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true + "dev": true, + "peerDependencies": { + "ajv": ">=4.10.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/ansi-escapes": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/chalk": { "version": "1.1.3", @@ -4889,6 +5770,9 @@ "has-ansi": "^2.0.0", "strip-ansi": "^3.0.0", "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/cli-cursor": { @@ -4898,6 +5782,9 @@ "dev": true, "dependencies": { "restore-cursor": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/eslint": { @@ -4941,6 +5828,12 @@ "table": "^3.7.8", "text-table": "~0.2.0", "user-home": "^2.0.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": ">=4" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/espree": { @@ -4951,6 +5844,9 @@ "dependencies": { "acorn": "^5.5.0", "acorn-jsx": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/figures": { @@ -4961,13 +5857,19 @@ "dependencies": { "escape-string-regexp": "^1.0.5", "object-assign": "^4.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/inquirer": { "version": "0.12.0", @@ -4997,13 +5899,19 @@ "dev": true, "dependencies": { "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/onetime": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/pluralize": { "version": "1.2.1", @@ -5015,7 +5923,10 @@ "version": "1.1.8", "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/restore-cursor": { "version": "1.0.1", @@ -5025,6 +5936,9 @@ "dependencies": { "exit-hook": "^1.0.0", "onetime": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/run-async": { @@ -5045,13 +5959,23 @@ "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "iojs": "*", + "node": ">=0.11.0" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/slice-ansi": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/string-width": { "version": "1.0.2", @@ -5062,13 +5986,19 @@ "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/table": { "version": "3.8.3", @@ -5088,13 +6018,19 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/table/node_modules/is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/table/node_modules/string-width": { "version": "2.1.1", @@ -5104,6 +6040,9 @@ "dependencies": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/eslint-plugin-no-unsafe-innerhtml/node_modules/table/node_modules/strip-ansi": { @@ -5113,6 +6052,9 @@ "dev": true, "dependencies": { "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/eslint-scope": { @@ -5123,24 +6065,34 @@ "dependencies": { "esrecurse": "^4.1.0", "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" } }, "node_modules/eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/eslint/node_modules/ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/eslint/node_modules/debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -5159,13 +6111,19 @@ "dev": true, "dependencies": { "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/esm": { "version": "3.2.25", "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/espree": { "version": "4.1.0", @@ -5176,19 +6134,35 @@ "acorn": "^6.0.2", "acorn-jsx": "^5.0.0", "eslint-visitor-keys": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/espree/node_modules/acorn": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } }, "node_modules/esquery": { "version": "1.3.1", @@ -5197,13 +6171,19 @@ "dev": true, "dependencies": { "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/esquery/node_modules/estraverse": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.0" + } }, "node_modules/esrecurse": { "version": "4.2.1", @@ -5212,23 +6192,35 @@ "dev": true, "dependencies": { "estraverse": "^4.1.0" + }, + "engines": { + "node": ">=4.0" } }, "node_modules/estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.0" + } }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "engines": { + "node": ">= 0.6" + } }, "node_modules/ev-emitter": { "version": "1.1.1", @@ -5250,6 +6242,7 @@ "version": "0.8.0", "resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.8.0.tgz", "integrity": "sha1-S4TxF3K28l93Uvx02XFTGsb1tiY=", + "deprecated": "Use promise-toolbox/fromEvent instead", "dev": true }, "node_modules/eventemitter2": { @@ -5262,7 +6255,10 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.x" + } }, "node_modules/evp_bytestokey": { "version": "1.0.3", @@ -5287,19 +6283,28 @@ "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8.0" + } }, "node_modules/exit-hook": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/expand-brackets": { "version": "2.1.4", @@ -5314,6 +6319,9 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/expand-brackets/node_modules/define-property": { @@ -5323,6 +6331,9 @@ "dev": true, "dependencies": { "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/expand-brackets/node_modules/extend-shallow": { @@ -5332,6 +6343,9 @@ "dev": true, "dependencies": { "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/expand-tilde": { @@ -5341,6 +6355,9 @@ "dev": true, "dependencies": { "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/express": { @@ -5378,6 +6395,9 @@ "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" } }, "node_modules/express-sslify": { @@ -5414,6 +6434,9 @@ "dependencies": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/extend-shallow/node_modules/is-extendable": { @@ -5423,6 +6446,9 @@ "dev": true, "dependencies": { "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/external-editor": { @@ -5434,6 +6460,9 @@ "chardet": "^0.4.0", "iconv-lite": "^0.4.17", "tmp": "^0.0.33" + }, + "engines": { + "node": ">=0.12" } }, "node_modules/extglob": { @@ -5450,8 +6479,11 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" - } - }, + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/extglob/node_modules/define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", @@ -5459,6 +6491,9 @@ "dev": true, "dependencies": { "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/extglob/node_modules/extend-shallow": { @@ -5468,6 +6503,9 @@ "dev": true, "dependencies": { "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/extglob/node_modules/is-accessor-descriptor": { @@ -5477,6 +6515,9 @@ "dev": true, "dependencies": { "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/extglob/node_modules/is-data-descriptor": { @@ -5486,6 +6527,9 @@ "dev": true, "dependencies": { "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/extglob/node_modules/is-descriptor": { @@ -5497,6 +6541,9 @@ "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/extract-zip": { @@ -5509,13 +6556,19 @@ "debug": "^2.6.9", "mkdirp": "^0.5.4", "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" } }, "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true + "dev": true, + "engines": [ + "node >=0.6.0" + ] }, "node_modules/fast-deep-equal": { "version": "3.1.3", @@ -5536,6 +6589,9 @@ "dev": true, "dependencies": { "fast-deep-equal": "^2.0.1" + }, + "engines": { + "node": ">= 0.4.0" } }, "node_modules/fast-json-patch/node_modules/fast-deep-equal": { @@ -5560,7 +6616,10 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-1.5.0.tgz", "integrity": "sha512-Afo61CgUjkzdvOKDHn08qnZ0kwck38AOGcMlvSGzvJbIab6soAP5rdoQayecGCDsD69AiF9vJBXyq31eoEO2tQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/fast-safe-stringify": { "version": "2.0.7", @@ -5575,6 +6634,9 @@ "dev": true, "dependencies": { "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.4.0" } }, "node_modules/fd-slicer": { @@ -5599,6 +6661,9 @@ "dev": true, "dependencies": { "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" } }, "node_modules/file-entry-cache": { @@ -5609,6 +6674,9 @@ "dependencies": { "flat-cache": "^1.2.1", "object-assign": "^4.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/file-sync-cmp": { @@ -5633,6 +6701,9 @@ "is-number": "^3.0.0", "repeat-string": "^1.6.1", "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/fill-range/node_modules/extend-shallow": { @@ -5642,6 +6713,9 @@ "dev": true, "dependencies": { "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/finalhandler": { @@ -5656,6 +6730,9 @@ "parseurl": "~1.3.3", "statuses": "~1.5.0", "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, "node_modules/find-cache-dir": { @@ -5667,6 +6744,9 @@ "commondir": "^1.0.1", "make-dir": "^2.0.0", "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/find-up": { @@ -5676,6 +6756,9 @@ "dev": true, "dependencies": { "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/findup-sync": { @@ -5685,6 +6768,9 @@ "dev": true, "dependencies": { "glob": "~5.0.0" + }, + "engines": { + "node": ">= 0.6.0" } }, "node_modules/findup-sync/node_modules/glob": { @@ -5698,6 +6784,9 @@ "minimatch": "2 || 3", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" } }, "node_modules/fined": { @@ -5711,6 +6800,9 @@ "object.defaults": "^1.1.0", "object.pick": "^1.2.0", "parse-filepath": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/firefox-profile": { @@ -5730,6 +6822,9 @@ "minimist": "^1.1.1", "uuid": "^3.0.0", "xml2js": "~0.4.4" + }, + "bin": { + "firefox-profile": "lib/cli.js" } }, "node_modules/firefox-profile/node_modules/archiver": { @@ -5746,6 +6841,9 @@ "readable-stream": "^2.0.0", "tar-stream": "^1.5.0", "zip-stream": "^1.2.0" + }, + "engines": { + "node": ">= 4" } }, "node_modules/firefox-profile/node_modules/async": { @@ -5764,6 +6862,9 @@ "dev": true, "dependencies": { "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/fizzy-ui-utils": { @@ -5779,7 +6880,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.10" + } }, "node_modules/flat-cache": { "version": "1.3.4", @@ -5791,6 +6895,9 @@ "graceful-fs": "^4.1.2", "rimraf": "~2.6.2", "write": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/flat-cache/node_modules/rimraf": { @@ -5800,6 +6907,9 @@ "dev": true, "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, "node_modules/flatstr": { @@ -5821,7 +6931,10 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/fluent-syntax/-/fluent-syntax-0.7.0.tgz", "integrity": "sha512-T0iqfhC40jrs3aDjYOKgzIQjjhsH2Fa6LnXB6naPv0ymW3DeYMUFa89y9aLKMpi1P9nl2vEimK7blx4tVnUWBg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/flush-write-stream": { "version": "1.1.1", @@ -5837,7 +6950,10 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/for-own": { "version": "1.0.0", @@ -5846,13 +6962,19 @@ "dev": true, "dependencies": { "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/form-data": { "version": "2.3.3", @@ -5863,12 +6985,18 @@ "asynckit": "^0.4.0", "combined-stream": "^1.0.6", "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" } }, "node_modules/forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "engines": { + "node": ">= 0.6" + } }, "node_modules/fragment-cache": { "version": "0.2.1", @@ -5877,12 +7005,18 @@ "dev": true, "dependencies": { "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "engines": { + "node": ">= 0.6" + } }, "node_modules/from2": { "version": "2.3.0", @@ -5933,8 +7067,16 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.0.1.tgz", "integrity": "sha512-p+CXqK/iLvDESUWdn3NA3JVO9HxdfI+iXx8xR3DqWgKZvQNiEVpAyUQo0lmwz8rqksb4xaGerG291xuwwhX2kA==", + "deprecated": "\"Please update to latest v2.3 or v2.2\"", "dev": true, - "optional": true + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=6.0.0" + } }, "node_modules/ftp": { "version": "0.3.10", @@ -5944,6 +7086,9 @@ "dependencies": { "readable-stream": "1.1.x", "xregexp": "2.0.0" + }, + "engines": { + "node": ">=0.8.0" } }, "node_modules/ftp/node_modules/isarray": { @@ -5989,6 +7134,9 @@ "when": "3.7.7", "which": "1.2.4", "winreg": "0.0.12" + }, + "bin": { + "fx-runner": "bin/fx-runner" } }, "node_modules/fx-runner/node_modules/commander": { @@ -5998,6 +7146,9 @@ "dev": true, "dependencies": { "graceful-readlink": ">= 1.0.0" + }, + "engines": { + "node": ">= 0.6.x" } }, "node_modules/fx-runner/node_modules/is-absolute": { @@ -6007,13 +7158,19 @@ "dev": true, "dependencies": { "is-relative": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/fx-runner/node_modules/is-relative": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/fx-runner/node_modules/isexe": { "version": "1.1.2", @@ -6035,6 +7192,9 @@ "dependencies": { "is-absolute": "^0.1.7", "isexe": "^1.1.1" + }, + "bin": { + "which": "bin/which" } }, "node_modules/gaze": { @@ -6044,6 +7204,9 @@ "dev": true, "dependencies": { "globule": "^1.0.0" + }, + "engines": { + "node": ">= 4.0.0" } }, "node_modules/generate-function": { @@ -6068,7 +7231,10 @@ "version": "1.0.0-beta.1", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/get-caller-file": { "version": "1.0.3", @@ -6080,7 +7246,10 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/get-size": { "version": "2.0.3", @@ -6092,7 +7261,10 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/get-uri": { "version": "2.0.4", @@ -6112,13 +7284,19 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/getobject": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8.0" + } }, "node_modules/getpass": { "version": "0.1.7", @@ -6153,7 +7331,10 @@ "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/git-rev-sync/node_modules/shelljs": { "version": "0.7.7", @@ -6164,6 +7345,13 @@ "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "iojs": "*", + "node": ">=0.11.0" } }, "node_modules/glob": { @@ -6178,6 +7366,12 @@ "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/glob-parent": { @@ -6207,6 +7401,9 @@ "dev": true, "dependencies": { "ini": "^1.3.4" + }, + "engines": { + "node": ">=4" } }, "node_modules/global-modules": { @@ -6218,6 +7415,9 @@ "global-prefix": "^1.0.1", "is-windows": "^1.0.1", "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/global-prefix": { @@ -6231,13 +7431,19 @@ "ini": "^1.3.4", "is-windows": "^1.0.1", "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/globule": { "version": "1.3.2", @@ -6248,6 +7454,9 @@ "glob": "~7.1.1", "lodash": "~4.17.10", "minimatch": "~3.0.2" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/got": { @@ -6267,6 +7476,9 @@ "timed-out": "^4.0.0", "unzip-response": "^2.0.1", "url-parse-lax": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/graceful-fs": { @@ -6294,7 +7506,10 @@ "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.x" + } }, "node_modules/growly": { "version": "1.3.0", @@ -6323,6 +7538,12 @@ "mkdirp": "~1.0.4", "nopt": "~3.0.6", "rimraf": "~3.0.2" + }, + "bin": { + "grunt": "bin/grunt" + }, + "engines": { + "node": ">=8" } }, "node_modules/grunt-cli": { @@ -6336,6 +7557,12 @@ "liftoff": "~2.5.0", "nopt": "~4.0.1", "v8flags": "~3.1.1" + }, + "bin": { + "grunt": "bin/grunt" + }, + "engines": { + "node": ">=4" } }, "node_modules/grunt-cli/node_modules/nopt": { @@ -6346,6 +7573,9 @@ "dependencies": { "abbrev": "1", "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" } }, "node_modules/grunt-contrib-clean": { @@ -6356,6 +7586,12 @@ "dependencies": { "async": "^1.5.2", "rimraf": "^2.5.1" + }, + "engines": { + "node": ">= 0.10.0" + }, + "peerDependencies": { + "grunt": ">=0.4.5" } }, "node_modules/grunt-contrib-clean/node_modules/rimraf": { @@ -6365,6 +7601,9 @@ "dev": true, "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, "node_modules/grunt-contrib-connect": { @@ -6382,6 +7621,12 @@ "portscanner": "^1.0.0", "serve-index": "^1.7.1", "serve-static": "^1.10.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "grunt": ">=0.4.0" } }, "node_modules/grunt-contrib-copy": { @@ -6392,13 +7637,19 @@ "dependencies": { "chalk": "^1.1.1", "file-sync-cmp": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/grunt-contrib-copy/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/grunt-contrib-copy/node_modules/chalk": { "version": "1.1.3", @@ -6411,13 +7662,19 @@ "has-ansi": "^2.0.0", "strip-ansi": "^3.0.0", "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/grunt-contrib-copy/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/grunt-contrib-pug": { "version": "1.0.0", @@ -6427,13 +7684,19 @@ "dependencies": { "chalk": "^1.0.0", "pug": "^2.0.0-alpha3" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/grunt-contrib-pug/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/grunt-contrib-pug/node_modules/chalk": { "version": "1.1.3", @@ -6446,13 +7709,19 @@ "has-ansi": "^2.0.0", "strip-ansi": "^3.0.0", "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/grunt-contrib-pug/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/grunt-contrib-stylus": { "version": "1.2.0", @@ -6465,13 +7734,19 @@ "lodash": "^4.0.0", "nib": "^1.1.0", "stylus": "^0.54.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/grunt-contrib-stylus/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/grunt-contrib-stylus/node_modules/chalk": { "version": "1.1.3", @@ -6484,13 +7759,19 @@ "has-ansi": "^2.0.0", "strip-ansi": "^3.0.0", "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/grunt-contrib-stylus/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/grunt-contrib-watch": { "version": "1.1.0", @@ -6502,6 +7783,9 @@ "gaze": "^1.1.0", "lodash": "^4.17.10", "tiny-lr": "^1.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/grunt-contrib-watch/node_modules/async": { @@ -6524,19 +7808,34 @@ "mkdirp": "^0.5.0", "os-homedir": "^1.0.1", "xtend": "^4.0.1" - } - }, - "node_modules/grunt-exec": { + }, + "bin": { + "grunt-crx": "bin/grunt-crx" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/grunt-exec": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-3.0.0.tgz", "integrity": "sha512-cgAlreXf3muSYS5LzW0Cc4xHK03BjFOYk0MqCQ/MZ3k1Xz2GU7D+IAJg4UKicxpO+XdONJdx/NJ6kpy2wI+uHg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + }, + "peerDependencies": { + "grunt": ">=0.4" + } }, "node_modules/grunt-known-options": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/grunt-legacy-log": { "version": "2.0.0", @@ -6548,6 +7847,9 @@ "grunt-legacy-log-utils": "~2.0.0", "hooker": "~0.2.3", "lodash": "~4.17.5" + }, + "engines": { + "node": ">= 0.10.0" } }, "node_modules/grunt-legacy-log-utils": { @@ -6558,6 +7860,9 @@ "dependencies": { "chalk": "~2.4.1", "lodash": "~4.17.10" + }, + "engines": { + "node": ">=6" } }, "node_modules/grunt-legacy-util": { @@ -6573,6 +7878,9 @@ "lodash": "~4.17.10", "underscore.string": "~3.3.4", "which": "~1.3.0" + }, + "engines": { + "node": ">= 6" } }, "node_modules/grunt-mocha-test": { @@ -6583,6 +7891,12 @@ "dependencies": { "hooker": "^0.2.3", "mkdirp": "^0.5.0" + }, + "engines": { + "node": ">= 0.10.4" + }, + "peerDependencies": { + "mocha": ">=1.20.0" } }, "node_modules/grunt-webpack": { @@ -6593,28 +7907,47 @@ "dependencies": { "deep-for-each": "^2.0.2", "lodash": "^4.7.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" } }, "node_modules/grunt/node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } }, "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/har-validator": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", "dev": true, "dependencies": { "ajv": "^6.12.3", "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/has": { @@ -6624,6 +7957,9 @@ "dev": true, "dependencies": { "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" } }, "node_modules/has-ansi": { @@ -6633,24 +7969,39 @@ "dev": true, "dependencies": { "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/has-color": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/has-symbols": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/has-value": { "version": "1.0.0", @@ -6661,6 +8012,9 @@ "get-value": "^2.0.6", "has-values": "^1.0.0", "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/has-values": { @@ -6671,6 +8025,9 @@ "dependencies": { "is-number": "^3.0.0", "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/has-values/node_modules/kind-of": { @@ -6680,6 +8037,9 @@ "dev": true, "dependencies": { "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/hasbin": { @@ -6689,6 +8049,9 @@ "dev": true, "dependencies": { "async": "~1.5" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/hash-base": { @@ -6700,6 +8063,9 @@ "inherits": "^2.0.4", "readable-stream": "^3.6.0", "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/hash-base/node_modules/inherits": { @@ -6717,13 +8083,30 @@ "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/hash-base/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/hash-base/node_modules/string_decoder": { "version": "1.3.0", @@ -6748,13 +8131,19 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true + "dev": true, + "bin": { + "he": "bin/he" + } }, "node_modules/highlight.js": { "version": "10.4.1", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.4.1.tgz", "integrity": "sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/hmac-drbg": { "version": "1.0.1", @@ -6775,6 +8164,9 @@ "dependencies": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/homedir-polyfill": { @@ -6784,13 +8176,19 @@ "dev": true, "dependencies": { "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/hooker": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/hosted-git-info": { "version": "2.8.8", @@ -6821,13 +8219,30 @@ "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/htmlparser2/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/htmlparser2/node_modules/string_decoder": { "version": "1.3.0", @@ -6848,6 +8263,9 @@ "setprototypeof": "1.1.1", "statuses": ">= 1.5.0 < 2", "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/http-parser-js": { @@ -6864,6 +8282,9 @@ "dependencies": { "agent-base": "4", "debug": "3.1.0" + }, + "engines": { + "node": ">= 4.5.0" } }, "node_modules/http-proxy-agent/node_modules/debug": { @@ -6884,13 +8305,21 @@ "assert-plus": "^1.0.0", "jsprim": "^1.2.2", "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" } }, "node_modules/http2": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/http2/-/http2-3.3.7.tgz", "integrity": "sha512-puSi8M8WNlFJm9Pk4c/Mbz9Gwparuj3gO9/RRO5zv6piQ0FY+9Qywp0PdWshYgsMJSalixFY7eC6oPu0zRxLAQ==", - "dev": true + "deprecated": "Use the built-in module in node 9.0.0 or newer, instead", + "dev": true, + "engines": { + "node": ">=0.12.0 <9.0.0" + } }, "node_modules/https-browserify": { "version": "1.0.0", @@ -6906,12 +8335,16 @@ "dependencies": { "agent-base": "^4.3.0", "debug": "^3.1.0" + }, + "engines": { + "node": ">= 4.5.0" } }, "node_modules/https-proxy-agent/node_modules/debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -6929,6 +8362,9 @@ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/ieee754": { @@ -6959,13 +8395,19 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.19" + } }, "node_modules/infer-owner": { "version": "1.0.4", @@ -7001,6 +8443,9 @@ "dev": true, "dependencies": { "babel-core": "~6" + }, + "peerDependencies": { + "webpack": "^1 || ^2 || ^3" } }, "node_modules/inquirer": { @@ -7022,13 +8467,19 @@ "string-width": "^2.1.0", "strip-ansi": "^4.0.0", "through": "^2.3.6" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/inquirer/node_modules/ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/inquirer/node_modules/strip-ansi": { "version": "4.0.0", @@ -7037,6 +8488,9 @@ "dev": true, "dependencies": { "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/interpret": { @@ -7058,7 +8512,10 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/ip": { "version": "1.1.5", @@ -7069,7 +8526,10 @@ "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } }, "node_modules/is-absolute": { "version": "1.0.0", @@ -7079,6 +8539,9 @@ "dependencies": { "is-relative": "^1.0.0", "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-accessor-descriptor": { @@ -7088,6 +8551,9 @@ "dev": true, "dependencies": { "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-accessor-descriptor/node_modules/kind-of": { @@ -7097,13 +8563,19 @@ "dev": true, "dependencies": { "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-arguments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4" + } }, "node_modules/is-arrayish": { "version": "0.2.1", @@ -7118,6 +8590,9 @@ "dev": true, "dependencies": { "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-buffer": { @@ -7129,7 +8604,13 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-data-descriptor": { "version": "0.1.4", @@ -7138,6 +8619,9 @@ "dev": true, "dependencies": { "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-data-descriptor/node_modules/kind-of": { @@ -7147,13 +8631,22 @@ "dev": true, "dependencies": { "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-descriptor": { "version": "0.1.6", @@ -7164,13 +8657,19 @@ "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-descriptor/node_modules/kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/is-expression": { "version": "3.0.0", @@ -7184,31 +8683,52 @@ "node_modules/is-expression/node_modules/acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/is-finite": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/is-glob": { "version": "3.1.0", @@ -7217,6 +8737,9 @@ "dev": true, "dependencies": { "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-installed-globally": { @@ -7227,6 +8750,9 @@ "dependencies": { "global-dirs": "^0.1.0", "is-path-inside": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/is-mergeable-object": { @@ -7258,7 +8784,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/is-number": { "version": "3.0.0", @@ -7267,6 +8796,9 @@ "dev": true, "dependencies": { "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-number/node_modules/kind-of": { @@ -7276,13 +8808,19 @@ "dev": true, "dependencies": { "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/is-path-inside": { "version": "1.0.1", @@ -7291,6 +8829,9 @@ "dev": true, "dependencies": { "path-is-inside": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-plain-object": { @@ -7300,6 +8841,9 @@ "dev": true, "dependencies": { "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-promise": { @@ -7317,7 +8861,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/is-regex": { "version": "1.1.1", @@ -7325,6 +8872,12 @@ "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dependencies": { "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-relative": { @@ -7334,6 +8887,9 @@ "dev": true, "dependencies": { "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-resolvable": { @@ -7346,13 +8902,19 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/is-symbol": { "version": "1.0.3", @@ -7361,6 +8923,12 @@ "dev": true, "dependencies": { "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-typedarray": { @@ -7376,6 +8944,9 @@ "dev": true, "dependencies": { "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/is-utf8": { @@ -7388,13 +8959,19 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/isarray": { "version": "1.0.0", @@ -7412,7 +8989,10 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/isotope-layout": { "version": "3.0.6", @@ -7443,8 +9023,18 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/jetpack-id/-/jetpack-id-1.0.0.tgz", "integrity": "sha1-LPn7rkbYB0/Ba33gBxyO/rykc6Y=", + "deprecated": "Jetpack extensions are no longer supported by Firefox. Use web-ext instead to build a WebExtension.", "dev": true }, + "node_modules/jose": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/jose/-/jose-3.19.0.tgz", + "integrity": "sha512-G5imz/7oSe8Ohg4EMEhGhMhN+yzACMw7NC7ZrEYSoJekQXHPf+TPQNc/XJkYRm6TFWIbf3HA4OHZhdRv8KsskA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, "node_modules/jquery": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", @@ -7455,6 +9045,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/js-select/-/js-select-0.6.0.tgz", "integrity": "sha1-woTiKCTVknrsli3N8kcXSu+w0ZA=", + "deprecated": "Package no longer supported. Contact support@npmjs.com for more info.", "dev": true, "dependencies": { "JSONSelect": "0.2.1", @@ -7480,6 +9071,9 @@ "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/jsbn": { @@ -7492,7 +9086,13 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } }, "node_modules/json-merge-patch": { "version": "0.2.3", @@ -7549,6 +9149,12 @@ "dev": true, "dependencies": { "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, "node_modules/jsonfile": { @@ -7556,7 +9162,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, - "dependencies": { + "optionalDependencies": { "graceful-fs": "^4.1.6" } }, @@ -7564,13 +9170,19 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/jsonpointer": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/jsonpointer.js": { "version": "0.4.0", @@ -7582,7 +9194,10 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/JSONSelect/-/JSONSelect-0.2.1.tgz", "integrity": "sha1-QVQYpSbTP+MddLTe+jyDbUhewgM=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.7" + } }, "node_modules/jsonwebtoken": { "version": "8.2.1", @@ -7600,6 +9215,10 @@ "lodash.once": "^4.0.0", "ms": "^2.1.1", "xtend": "^4.0.1" + }, + "engines": { + "node": ">=0.12", + "npm": ">=1.4.28" } }, "node_modules/jsonwebtoken/node_modules/ms": { @@ -7613,6 +9232,9 @@ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, + "engines": [ + "node >=0.6.0" + ], "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -7694,7 +9316,10 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/latest-version": { "version": "3.1.0", @@ -7703,12 +9328,18 @@ "dev": true, "dependencies": { "package-json": "^4.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/lazystream": { "version": "1.0.0", @@ -7717,6 +9348,9 @@ "dev": true, "dependencies": { "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" } }, "node_modules/lcid": { @@ -7726,13 +9360,19 @@ "dev": true, "dependencies": { "invert-kv": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/levenary": { "version": "1.1.1", @@ -7741,6 +9381,9 @@ "dev": true, "dependencies": { "leven": "^3.1.0" + }, + "engines": { + "node": ">= 6" } }, "node_modules/levn": { @@ -7751,6 +9394,9 @@ "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/lie": { @@ -7776,6 +9422,9 @@ "object.map": "^1.0.0", "rechoir": "^0.6.2", "resolve": "^1.1.7" + }, + "engines": { + "node": ">= 0.8" } }, "node_modules/liftoff/node_modules/findup-sync": { @@ -7788,6 +9437,9 @@ "is-glob": "^3.1.0", "micromatch": "^3.0.4", "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/linkify-it": { @@ -7815,6 +9467,9 @@ "pify": "^2.0.0", "pinkie-promise": "^2.0.0", "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/load-json-file/node_modules/parse-json": { @@ -7824,13 +9479,19 @@ "dev": true, "dependencies": { "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/load-json-file/node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/load-json-file/node_modules/strip-bom": { "version": "2.0.0", @@ -7839,13 +9500,19 @@ "dev": true, "dependencies": { "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } }, "node_modules/loader-utils": { "version": "1.4.0", @@ -7856,6 +9523,9 @@ "big.js": "^5.2.2", "emojis-list": "^3.0.0", "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" } }, "node_modules/loader-utils/node_modules/json5": { @@ -7865,6 +9535,9 @@ "dev": true, "dependencies": { "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" } }, "node_modules/locate-path": { @@ -7875,6 +9548,9 @@ "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/lodash": { @@ -7981,7 +9657,14 @@ "version": "1.6.8", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-loglevel?utm_medium=referral&utm_source=npm_fund" + } }, "node_modules/lolex": { "version": "2.7.5", @@ -7989,16 +9672,13 @@ "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", "dev": true }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "dev": true - }, "node_modules/longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/loose-envify": { "version": "1.4.0", @@ -8007,13 +9687,19 @@ "dev": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" } }, "node_modules/lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/lru-cache": { "version": "4.1.5", @@ -8029,7 +9715,10 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-1.1.0.tgz", "integrity": "sha512-mmLbumEYMi5nXReB9js3WGsB8UE6cDBWyIO62Z4DNx6GbRhDxHNjA1MlzSpJ2S2KM1wyiPRA0d19uHWYYvMHjA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/make-dir": { "version": "2.1.0", @@ -8039,6 +9728,9 @@ "dependencies": { "pify": "^4.0.1", "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/make-iterator": { @@ -8048,6 +9740,9 @@ "dev": true, "dependencies": { "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/map-age-cleaner": { @@ -8057,13 +9752,19 @@ "dev": true, "dependencies": { "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/map-visit": { "version": "1.0.0", @@ -8072,6 +9773,9 @@ "dev": true, "dependencies": { "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/markdown": { @@ -8143,7 +9847,10 @@ "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "engines": { + "node": ">= 0.6" + } }, "node_modules/mem": { "version": "4.3.0", @@ -8154,6 +9861,9 @@ "map-age-cleaner": "^0.1.1", "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/memory-fs": { @@ -8174,7 +9884,10 @@ "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "engines": { + "node": ">= 0.6" + } }, "node_modules/micromatch": { "version": "3.1.10", @@ -8195,6 +9908,9 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/miller-rabin": { @@ -8205,6 +9921,9 @@ "dependencies": { "bn.js": "^4.0.0", "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" } }, "node_modules/miller-rabin/node_modules/bn.js": { @@ -8216,12 +9935,21 @@ "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } }, "node_modules/mime-db": { "version": "1.44.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "engines": { + "node": ">= 0.6" + } }, "node_modules/mime-types": { "version": "2.1.27", @@ -8229,13 +9957,19 @@ "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", "dependencies": { "mime-db": "1.44.0" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/min-document": { "version": "2.19.0", @@ -8265,6 +9999,9 @@ "dev": true, "dependencies": { "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, "node_modules/minimist": { @@ -8289,6 +10026,9 @@ "pumpify": "^1.3.3", "stream-each": "^1.1.0", "through2": "^2.0.0" + }, + "engines": { + "node": ">=4.0.0" } }, "node_modules/mixin-deep": { @@ -8299,6 +10039,9 @@ "dependencies": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/mixin-deep/node_modules/is-extendable": { @@ -8308,6 +10051,9 @@ "dev": true, "dependencies": { "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/mixin-object": { @@ -8318,13 +10064,19 @@ "dependencies": { "for-in": "^0.1.3", "is-extendable": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/mixin-object/node_modules/for-in": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/mkdirp": { "version": "0.5.5", @@ -8333,6 +10085,9 @@ "dev": true, "dependencies": { "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, "node_modules/mocha": { @@ -8352,6 +10107,13 @@ "minimatch": "3.0.4", "mkdirp": "0.5.1", "supports-color": "5.4.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 4.0.0" } }, "node_modules/mocha/node_modules/commander": { @@ -8381,6 +10143,9 @@ "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" } }, "node_modules/mocha/node_modules/minimist": { @@ -8393,9 +10158,13 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", "dev": true, "dependencies": { "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, "node_modules/mocha/node_modules/supports-color": { @@ -8405,13 +10174,19 @@ "dev": true, "dependencies": { "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/moment": { "version": "2.27.0", "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/morgan": { "version": "1.10.0", @@ -8424,13 +10199,19 @@ "depd": "~2.0.0", "on-finished": "~2.3.0", "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/morgan/node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8" + } }, "node_modules/move-concurrently": { "version": "1.0.1", @@ -8453,6 +10234,9 @@ "dev": true, "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, "node_modules/ms": { @@ -8470,6 +10254,9 @@ "array-union": "^1.0.1", "arrify": "^1.0.0", "minimatch": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/mute-stream": { @@ -8488,6 +10275,9 @@ "mkdirp": "~0.5.1", "ncp": "~2.0.0", "rimraf": "~2.4.0" + }, + "engines": { + "node": ">=0.8.0" } }, "node_modules/mv/node_modules/glob": { @@ -8502,6 +10292,9 @@ "minimatch": "2 || 3", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" } }, "node_modules/mv/node_modules/rimraf": { @@ -8512,6 +10305,9 @@ "optional": true, "dependencies": { "glob": "^6.0.1" + }, + "bin": { + "rimraf": "bin.js" } }, "node_modules/mz": { @@ -8549,6 +10345,9 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/natural-compare": { @@ -8573,13 +10372,19 @@ "ini": "^1.3.0", "secure-keys": "^1.0.0", "yargs": "^3.19.0" + }, + "engines": { + "node": ">= 0.4.0" } }, "node_modules/nconf/node_modules/camelcase": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/nconf/node_modules/cliui": { "version": "3.2.0", @@ -8596,7 +10401,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/nconf/node_modules/is-fullwidth-code-point": { "version": "1.0.0", @@ -8605,6 +10413,9 @@ "dev": true, "dependencies": { "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/nconf/node_modules/lcid": { @@ -8614,6 +10425,9 @@ "dev": true, "dependencies": { "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/nconf/node_modules/os-locale": { @@ -8623,6 +10437,9 @@ "dev": true, "dependencies": { "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/nconf/node_modules/string-width": { @@ -8634,13 +10451,22 @@ "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/nconf/node_modules/window-size": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", - "dev": true + "dev": true, + "bin": { + "window-size": "cli.js" + }, + "engines": { + "node": ">= 0.10.0" + } }, "node_modules/nconf/node_modules/y18n": { "version": "3.2.1", @@ -8668,7 +10494,10 @@ "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", "dev": true, - "optional": true + "optional": true, + "bin": { + "ncp": "bin/ncp" + } }, "node_modules/needle": { "version": "2.5.0", @@ -8679,12 +10508,19 @@ "debug": "^3.2.6", "iconv-lite": "^0.4.4", "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" } }, "node_modules/needle/node_modules/debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -8705,7 +10541,10 @@ "node_modules/negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "engines": { + "node": ">= 0.6" + } }, "node_modules/neo-async": { "version": "2.6.2", @@ -8717,7 +10556,10 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4.0" + } }, "node_modules/next-tick": { "version": "1.0.0", @@ -8732,6 +10574,9 @@ "dev": true, "dependencies": { "stylus": "0.54.5" + }, + "engines": { + "node": "*" } }, "node_modules/nib/node_modules/glob": { @@ -8746,6 +10591,9 @@ "minimatch": "^3.0.2", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" } }, "node_modules/nib/node_modules/source-map": { @@ -8755,6 +10603,9 @@ "dev": true, "dependencies": { "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" } }, "node_modules/nib/node_modules/stylus": { @@ -8769,6 +10620,12 @@ "mkdirp": "0.5.x", "sax": "0.5.x", "source-map": "0.1.x" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" } }, "node_modules/nice-try": { @@ -8824,6 +10681,44 @@ "isarray": "0.0.1" } }, + "node_modules/nock": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.1.3.tgz", + "integrity": "sha512-YKj0rKQWMGiiIO+Y65Ut8OEgYM3PplLU2+GAhnPmqZdBd6z5IskgdBqWmjzA6lH3RF0S2a3wiAlrMOF5Iv2Jeg==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash.set": "^4.3.2", + "propagate": "^2.0.0" + }, + "engines": { + "node": ">= 10.13" + } + }, + "node_modules/nock/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/nock/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/node-fetch": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", @@ -8833,35 +10728,14 @@ } }, "node_modules/node-forge": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", - "integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q==", - "dev": true - }, - "node_modules/node-jose": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/node-jose/-/node-jose-1.1.4.tgz", - "integrity": "sha512-L31IFwL3pWWcMHxxidCY51ezqrDXMkvlT/5pLTfNw5sXmmOLJuN6ug7txzF/iuZN55cRpyOmoJrotwBQIoo5Lw==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", "dev": true, - "dependencies": { - "base64url": "^3.0.1", - "browserify-zlib": "^0.2.0", - "buffer": "^5.5.0", - "es6-promise": "^4.2.8", - "lodash": "^4.17.15", - "long": "^4.0.0", - "node-forge": "^0.8.5", - "process": "^0.11.10", - "react-zlib-js": "^1.0.4", - "uuid": "^3.3.3" + "engines": { + "node": ">= 6.0.0" } }, - "node_modules/node-jose/node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, "node_modules/node-libs-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", @@ -8914,7 +10788,21 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/node-libs-browser/node_modules/string_decoder": { "version": "1.3.0", @@ -8938,7 +10826,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/node-notifier": { "version": "5.2.1", @@ -8978,6 +10869,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", + "deprecated": "Package no longer supported. Contact support@npmjs.com for more info.", "dev": true, "dependencies": { "chalk": "~0.4.0", @@ -8988,7 +10880,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/nomnom/node_modules/chalk": { "version": "0.4.0", @@ -8999,13 +10894,22 @@ "ansi-styles": "~1.0.0", "has-color": "~0.1.0", "strip-ansi": "~0.1.0" + }, + "engines": { + "node": ">=0.8.0" } }, "node_modules/nomnom/node_modules/strip-ansi": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", - "dev": true + "dev": true, + "bin": { + "strip-ansi": "cli.js" + }, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/nopt": { "version": "3.0.6", @@ -9014,6 +10918,9 @@ "dev": true, "dependencies": { "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" } }, "node_modules/normalize-package-data": { @@ -9035,6 +10942,9 @@ "dev": true, "dependencies": { "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/npm-run-path": { @@ -9044,6 +10954,9 @@ "dev": true, "dependencies": { "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/nth-check": { @@ -9059,18 +10972,27 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/object-copy": { "version": "0.1.0", @@ -9081,6 +11003,9 @@ "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/object-copy/node_modules/define-property": { @@ -9090,6 +11015,9 @@ "dev": true, "dependencies": { "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/object-copy/node_modules/kind-of": { @@ -9099,13 +11027,19 @@ "dev": true, "dependencies": { "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/object-inspect": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", - "dev": true + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/object-is": { "version": "1.1.2", @@ -9115,13 +11049,22 @@ "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4" + } }, "node_modules/object-visit": { "version": "1.0.1", @@ -9130,6 +11073,9 @@ "dev": true, "dependencies": { "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/object.assign": { @@ -9142,6 +11088,9 @@ "function-bind": "^1.1.1", "has-symbols": "^1.0.0", "object-keys": "^1.0.11" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/object.defaults": { @@ -9154,6 +11103,9 @@ "array-slice": "^1.0.0", "for-own": "^1.0.0", "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/object.map": { @@ -9164,6 +11116,9 @@ "dependencies": { "for-own": "^1.0.0", "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/object.pick": { @@ -9173,6 +11128,9 @@ "dev": true, "dependencies": { "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/on-finished": { @@ -9181,13 +11139,19 @@ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "dependencies": { "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" } }, "node_modules/on-headers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8" + } }, "node_modules/once": { "version": "1.4.0", @@ -9204,13 +11168,19 @@ "dev": true, "dependencies": { "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/onetime/node_modules/mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/opn": { "version": "4.0.2", @@ -9220,6 +11190,9 @@ "dependencies": { "object-assign": "^4.0.1", "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/optionator": { @@ -9234,6 +11207,9 @@ "prelude-ls": "~1.1.2", "type-check": "~0.3.2", "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/os-browserify": { @@ -9246,7 +11222,10 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/os-locale": { "version": "3.0.1", @@ -9257,6 +11236,9 @@ "execa": "^0.10.0", "lcid": "^2.0.0", "mem": "^4.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/os-name": { @@ -9267,19 +11249,28 @@ "dependencies": { "macos-release": "^1.0.0", "win-release": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/os-shim": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4.0" + } }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/osenv": { "version": "0.1.5", @@ -9306,19 +11297,28 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/p-is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/p-limit": { "version": "2.3.0", @@ -9327,6 +11327,12 @@ "dev": true, "dependencies": { "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { @@ -9336,13 +11342,19 @@ "dev": true, "dependencies": { "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/pac-proxy-agent": { "version": "2.0.2", @@ -9364,6 +11376,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -9398,6 +11411,9 @@ "registry-auth-token": "^3.0.1", "registry-url": "^3.0.3", "semver": "^5.1.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/pako": { @@ -9440,6 +11456,9 @@ "is-absolute": "^1.0.0", "map-cache": "^0.2.0", "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" } }, "node_modules/parse-json": { @@ -9450,13 +11469,19 @@ "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" } }, "node_modules/parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/parse5": { "version": "3.0.3", @@ -9470,13 +11495,19 @@ "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } }, "node_modules/pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/path": { "version": "0.12.7", @@ -9504,13 +11535,19 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/path-is-inside": { "version": "1.0.2", @@ -9522,7 +11559,10 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/path-parse": { "version": "1.0.6", @@ -9536,13 +11576,19 @@ "dev": true, "dependencies": { "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/path-root-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/path-to-regexp": { "version": "0.1.7", @@ -9558,19 +11604,28 @@ "graceful-fs": "^4.1.2", "pify": "^2.0.0", "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/path-type/node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/pathval": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/pbkdf2": { "version": "3.1.1", @@ -9583,6 +11638,9 @@ "ripemd160": "^2.0.1", "safe-buffer": "^5.0.1", "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" } }, "node_modules/pend": { @@ -9602,19 +11660,31 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true, - "optional": true + "optional": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, "node_modules/pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/pinkie-promise": { "version": "2.0.1", @@ -9623,6 +11693,9 @@ "dev": true, "dependencies": { "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/pino": { @@ -9639,6 +11712,9 @@ "pump": "^3.0.0", "quick-format-unescaped": "^3.0.0", "sonic-boom": "^0.6.3" + }, + "bin": { + "pino": "bin.js" } }, "node_modules/pino-std-serializers": { @@ -9664,6 +11740,9 @@ "dev": true, "dependencies": { "node-modules-regexp": "^1.0.0" + }, + "engines": { + "node": ">= 6" } }, "node_modules/pkg-dir": { @@ -9673,13 +11752,19 @@ "dev": true, "dependencies": { "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/pluralize": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/po2json": { "version": "0.4.5", @@ -9689,13 +11774,24 @@ "dependencies": { "gettext-parser": "1.1.0", "nomnom": "1.8.1" + }, + "bin": { + "po2json": "bin/po2json" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/popper.js": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "dev": true + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } }, "node_modules/portscanner": { "version": "1.2.0", @@ -9704,13 +11800,20 @@ "dev": true, "dependencies": { "async": "1.5.2" + }, + "engines": { + "node": ">=0.4", + "npm": ">=1.0.0" } }, "node_modules/posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/postcss": { "version": "7.0.6", @@ -9721,31 +11824,46 @@ "chalk": "^2.4.1", "source-map": "^0.6.1", "supports-color": "^5.5.0" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/postcss/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8.0" + } }, "node_modules/prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, "node_modules/probe-image-size": { "version": "4.0.0", @@ -9765,7 +11883,10 @@ "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6.0" + } }, "node_modules/process-nextick-args": { "version": "2.0.1", @@ -9777,7 +11898,10 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/promise": { "version": "7.3.1", @@ -9797,7 +11921,20 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/promise.any/-/promise.any-0.1.1.tgz", "integrity": "sha1-Fg+JisPHW1y7cw/yOgyi8XQHvzo=", - "dev": true + "deprecated": "Please use v1.0 or higher, which is now compliant with the proposed JS spec", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "dev": true, + "engines": { + "node": ">= 8" + } }, "node_modules/proxy-addr": { "version": "2.0.6", @@ -9806,6 +11943,9 @@ "dependencies": { "forwarded": "~0.1.2", "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/proxy-agent": { @@ -9828,6 +11968,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -10022,13 +12163,17 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/puppeteer": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.20.0.tgz", "integrity": "sha512-bt48RDBy2eIwZPrkgbcwHtb51mj2nKvHOPMaSH2IsWiv7lOG9k9zhaRzpDZafrk05ajMc3cu+lSQYYOfH2DkVQ==", "dev": true, + "hasInstallScript": true, "dependencies": { "debug": "^4.1.0", "extract-zip": "^1.6.6", @@ -10038,12 +12183,16 @@ "proxy-from-env": "^1.0.0", "rimraf": "^2.6.1", "ws": "^6.1.0" + }, + "engines": { + "node": ">=6.4.0" } }, "node_modules/puppeteer/node_modules/debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -10053,7 +12202,13 @@ "version": "2.4.6", "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", - "dev": true + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } }, "node_modules/puppeteer/node_modules/ms": { "version": "2.1.2", @@ -10068,23 +12223,36 @@ "dev": true, "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, "node_modules/qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "engines": { + "node": ">=0.6" + } }, "node_modules/querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } }, "node_modules/querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.x" + } }, "node_modules/quick-format-unescaped": { "version": "3.0.3", @@ -10114,7 +12282,10 @@ "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } }, "node_modules/raw-body": { "version": "2.4.0", @@ -10125,6 +12296,9 @@ "http-errors": "1.7.2", "iconv-lite": "0.4.24", "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, "node_modules/rc": { @@ -10137,14 +12311,11 @@ "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" } }, - "node_modules/react-zlib-js": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/react-zlib-js/-/react-zlib-js-1.0.5.tgz", - "integrity": "sha512-TLcPdmqhIl+ylwOwlfm1WUuI7NVvhAv3L74d1AabhjyaAbmLOROTA/Q4EQ/UMCFCOjIkVim9fT3UZOQSFk/mlA==", - "dev": true - }, "node_modules/read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -10154,6 +12325,9 @@ "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/read-pkg-up": { @@ -10164,6 +12338,9 @@ "dependencies": { "find-up": "^1.0.0", "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/read-pkg-up/node_modules/find-up": { @@ -10174,6 +12351,9 @@ "dependencies": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/read-pkg-up/node_modules/path-exists": { @@ -10183,6 +12363,9 @@ "dev": true, "dependencies": { "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/readable-stream": { @@ -10218,6 +12401,9 @@ "graceful-fs": "^4.1.11", "micromatch": "^3.1.10", "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/readline2": { @@ -10238,6 +12424,9 @@ "dev": true, "dependencies": { "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/readline2/node_modules/mute-stream": { @@ -10253,6 +12442,9 @@ "dev": true, "dependencies": { "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/recursive-readdir": { @@ -10262,6 +12454,9 @@ "dev": true, "dependencies": { "minimatch": "3.0.4" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/regenerate": { @@ -10277,6 +12472,9 @@ "dev": true, "dependencies": { "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/regenerator-runtime": { @@ -10302,6 +12500,9 @@ "dependencies": { "extend-shallow": "^3.0.2", "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/regexp.prototype.flags": { @@ -10312,13 +12513,22 @@ "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/regexpp": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.0.0" + } }, "node_modules/regexpu-core": { "version": "4.7.0", @@ -10332,6 +12542,9 @@ "regjsparser": "^0.6.4", "unicode-match-property-ecmascript": "^1.0.4", "unicode-match-property-value-ecmascript": "^1.2.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/registry-auth-token": { @@ -10351,6 +12564,9 @@ "dev": true, "dependencies": { "rc": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/regjsgen": { @@ -10366,13 +12582,19 @@ "dev": true, "dependencies": { "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" } }, "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } }, "node_modules/relaxed-json": { "version": "1.0.1", @@ -10382,13 +12604,22 @@ "dependencies": { "chalk": "^1.0.0", "commander": "^2.6.0" + }, + "bin": { + "rjson": "bin/rjson.js" + }, + "engines": { + "node": ">= 0.10.0" } }, "node_modules/relaxed-json/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/relaxed-json/node_modules/chalk": { "version": "1.1.3", @@ -10401,13 +12632,19 @@ "has-ansi": "^2.0.0", "strip-ansi": "^3.0.0", "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/relaxed-json/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/remove-trailing-separator": { "version": "1.1.0", @@ -10419,12 +12656,18 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "engines": { + "node": ">=0.10" + } }, "node_modules/repeating": { "version": "2.0.1", @@ -10433,12 +12676,16 @@ "dev": true, "dependencies": { "is-finite": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", "dev": true, "dependencies": { "aws-sign2": "~0.7.0", @@ -10461,6 +12708,9 @@ "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" } }, "node_modules/request-promise-core": { @@ -10470,30 +12720,49 @@ "dev": true, "dependencies": { "lodash": "^4.17.19" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "request": "^2.34" } }, "node_modules/request-promise-native": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", "dev": true, "dependencies": { "request-promise-core": "1.1.4", "stealthy-require": "^1.1.1", "tough-cookie": "^2.3.3" + }, + "engines": { + "node": ">=0.12.0" + }, + "peerDependencies": { + "request": "^2.34" } }, "node_modules/request/node_modules/qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.6" + } }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/require-main-filename": { "version": "1.0.1", @@ -10509,6 +12778,9 @@ "dependencies": { "caller-path": "^0.1.0", "resolve-from": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/resolve": { @@ -10517,6 +12789,9 @@ "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "dependencies": { "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-dir": { @@ -10527,18 +12802,25 @@ "dependencies": { "expand-tilde": "^2.0.0", "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", "dev": true }, "node_modules/restore-cursor": { @@ -10549,13 +12831,19 @@ "dependencies": { "onetime": "^2.0.0", "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" } }, "node_modules/ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.12" + } }, "node_modules/right-align": { "version": "0.1.3", @@ -10563,6 +12851,9 @@ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dependencies": { "align-text": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/rimraf": { @@ -10572,6 +12863,12 @@ "dev": true, "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/ripemd160": { @@ -10588,7 +12885,10 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.12.0" + } }, "node_modules/run-queue": { "version": "1.0.3", @@ -10621,6 +12921,9 @@ "dev": true, "dependencies": { "symbol-observable": "1.0.1" + }, + "engines": { + "npm": ">=2.0.0" } }, "node_modules/safe-buffer": { @@ -10659,6 +12962,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", + "deprecated": "This package has been deprecated in favour of @sinonjs/samsam", "dev": true }, "node_modules/sax": { @@ -10676,6 +12980,13 @@ "@types/json-schema": "^7.0.4", "ajv": "^6.12.2", "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/secure-keys": { @@ -10688,7 +12999,10 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "dev": true, + "bin": { + "semver": "bin/semver" + } }, "node_modules/semver-diff": { "version": "2.1.0", @@ -10697,6 +13011,9 @@ "dev": true, "dependencies": { "semver": "^5.0.3" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/send": { @@ -10717,6 +13034,9 @@ "on-finished": "~2.3.0", "range-parser": "~1.2.1", "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/send/node_modules/ms": { @@ -10743,6 +13063,9 @@ "http-errors": "~1.6.2", "mime-types": "~2.1.17", "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/serve-index/node_modules/http-errors": { @@ -10755,6 +13078,9 @@ "inherits": "2.0.3", "setprototypeof": "1.1.0", "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/serve-index/node_modules/setprototypeof": { @@ -10772,6 +13098,9 @@ "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "0.17.1" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/set-blocking": { @@ -10784,7 +13113,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/set-value": { "version": "2.0.1", @@ -10796,6 +13128,9 @@ "is-extendable": "^0.1.1", "is-plain-object": "^2.0.3", "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/set-value/node_modules/extend-shallow": { @@ -10805,6 +13140,9 @@ "dev": true, "dependencies": { "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/setimmediate": { @@ -10826,6 +13164,9 @@ "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" } }, "node_modules/shallow-clone": { @@ -10838,6 +13179,9 @@ "kind-of": "^2.0.1", "lazy-cache": "^0.2.3", "mixin-object": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/shallow-clone/node_modules/kind-of": { @@ -10847,13 +13191,19 @@ "dev": true, "dependencies": { "is-buffer": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/shallow-clone/node_modules/lazy-cache": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/shebang-command": { "version": "1.2.0", @@ -10862,13 +13212,19 @@ "dev": true, "dependencies": { "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/shell-quote": { "version": "1.6.1", @@ -10891,6 +13247,12 @@ "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" } }, "node_modules/shellwords": { @@ -10956,10 +13318,14 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "deprecated": "this library is no longer supported", "dev": true, "dependencies": { "ajv": "^5.1.0", "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/sign-addon/node_modules/json-schema-traverse": { @@ -10983,7 +13349,10 @@ "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/sign-addon/node_modules/punycode": { "version": "1.4.1", @@ -10995,7 +13364,10 @@ "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.6" + } }, "node_modules/sign-addon/node_modules/regenerator-runtime": { "version": "0.9.6", @@ -11007,6 +13379,7 @@ "version": "2.87.0", "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", "dev": true, "dependencies": { "aws-sign2": "~0.7.0", @@ -11029,6 +13402,9 @@ "tough-cookie": "~2.3.3", "tunnel-agent": "^0.6.0", "uuid": "^3.1.0" + }, + "engines": { + "node": ">= 4" } }, "node_modules/sign-addon/node_modules/source-map-support": { @@ -11047,6 +13423,9 @@ "dev": true, "dependencies": { "punycode": "^1.4.1" + }, + "engines": { + "node": ">=0.8" } }, "node_modules/signal-exit": { @@ -11060,6 +13439,7 @@ "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.5.0.tgz", "integrity": "sha512-trdx+mB0VBBgoYucy6a9L7/jfQOmvGeaKZT4OOJ+lPAtI8623xyGr8wLiE4eojzBS8G9yXbhx42GHUOVLr4X2w==", "dev": true, + "hasInstallScript": true, "dependencies": { "@sinonjs/formatio": "^2.0.0", "diff": "^3.1.0", @@ -11074,13 +13454,20 @@ "version": "2.14.0", "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.14.0.tgz", "integrity": "sha512-9stIF1utB0ywNHNT7RgiXbdmen8QDCRsrTjw+G9TgKt1Yexjiv8TOWZ6WHsTPz57Yky3DIswZvEqX8fpuHNDtQ==", - "dev": true + "dev": true, + "peerDependencies": { + "chai": ">=1.9.2 <5", + "sinon": "^1.4.0 || ^2.1.0 || ^3.0.0 || ^4.0.0" + } }, "node_modules/slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/slice-ansi": { "version": "1.0.0", @@ -11089,13 +13476,20 @@ "dev": true, "dependencies": { "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/smart-buffer": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.1.15.tgz", "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.10.15", + "npm": ">= 1.3.5" + } }, "node_modules/snapdragon": { "version": "0.8.2", @@ -11111,6 +13505,9 @@ "source-map": "^0.5.6", "source-map-resolve": "^0.5.0", "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snapdragon-node": { @@ -11122,6 +13519,9 @@ "define-property": "^1.0.0", "isobject": "^3.0.0", "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snapdragon-node/node_modules/define-property": { @@ -11131,6 +13531,9 @@ "dev": true, "dependencies": { "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { @@ -11140,6 +13543,9 @@ "dev": true, "dependencies": { "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snapdragon-node/node_modules/is-data-descriptor": { @@ -11149,6 +13555,9 @@ "dev": true, "dependencies": { "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snapdragon-node/node_modules/is-descriptor": { @@ -11160,6 +13569,9 @@ "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snapdragon-util": { @@ -11169,6 +13581,9 @@ "dev": true, "dependencies": { "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snapdragon-util/node_modules/kind-of": { @@ -11178,6 +13593,9 @@ "dev": true, "dependencies": { "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snapdragon/node_modules/define-property": { @@ -11187,6 +13605,9 @@ "dev": true, "dependencies": { "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snapdragon/node_modules/extend-shallow": { @@ -11196,6 +13617,9 @@ "dev": true, "dependencies": { "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/snyk": { @@ -11240,6 +13664,12 @@ "then-fs": "^2.0.0", "undefsafe": "^2.0.0", "uuid": "^3.2.1" + }, + "bin": { + "snyk": "dist/cli/index.js" + }, + "engines": { + "node": ">=4" } }, "node_modules/snyk-config": { @@ -11257,6 +13687,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -11283,6 +13714,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -11328,6 +13760,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -11357,6 +13790,12 @@ "source-map-support": "^0.5.7", "tslib": "^1.9.3", "uuid": "^3.3.2" + }, + "bin": { + "parse-nodejs-lockfile": "bin/index.js" + }, + "engines": { + "node": ">=4" } }, "node_modules/snyk-nodejs-lockfile-parser/node_modules/lodash": { @@ -11381,6 +13820,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -11407,6 +13847,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -11439,6 +13880,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -11496,6 +13938,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -11511,6 +13954,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -11535,6 +13979,9 @@ "dev": true, "dependencies": { "archy": "^1.0.0" + }, + "bin": { + "npm-tree": "lib/index.js" } }, "node_modules/snyk-try-require": { @@ -11553,6 +14000,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -11568,12 +14016,16 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/snyk/node_modules/debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -11614,6 +14066,9 @@ "dev": true, "dependencies": { "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/snyk/node_modules/rx-lite": { @@ -11629,16 +14084,24 @@ "dev": true, "dependencies": { "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/socks": { "version": "1.1.10", "resolved": "https://registry.npmjs.org/socks/-/socks-1.1.10.tgz", "integrity": "sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=", + "deprecated": "If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious bug with socket data flow and an import issue introduced in 2.1.0", "dev": true, "dependencies": { "ip": "^1.1.4", "smart-buffer": "^1.0.13" + }, + "engines": { + "node": ">= 0.10.0", + "npm": ">= 1.3.5" } }, "node_modules/socks-proxy-agent": { @@ -11669,7 +14132,10 @@ "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/source-map-resolve": { "version": "0.5.3", @@ -11698,7 +14164,10 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/source-map-url": { "version": "0.4.0", @@ -11711,6 +14180,7 @@ "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=", "dev": true, + "hasInstallScript": true, "dependencies": { "concat-stream": "^1.4.7", "os-shim": "^0.1.2" @@ -11755,6 +14225,9 @@ "dev": true, "dependencies": { "through": "2" + }, + "engines": { + "node": "*" } }, "node_modules/split-string": { @@ -11764,6 +14237,9 @@ "dev": true, "dependencies": { "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/sprintf-js": { @@ -11787,6 +14263,14 @@ "jsbn": "~0.1.0", "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/ssri": { @@ -11806,6 +14290,9 @@ "dependencies": { "define-property": "^0.2.5", "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/static-extend/node_modules/define-property": { @@ -11815,18 +14302,27 @@ "dev": true, "dependencies": { "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" + } }, "node_modules/stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/stream-browserify": { "version": "2.0.2", @@ -11934,13 +14430,19 @@ "dependencies": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/string-width/node_modules/ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/string-width/node_modules/strip-ansi": { "version": "4.0.0", @@ -11949,6 +14451,9 @@ "dev": true, "dependencies": { "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/string.prototype.matchall": { @@ -11972,6 +14477,9 @@ "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { @@ -11982,6 +14490,9 @@ "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/strip-ansi": { @@ -11991,13 +14502,19 @@ "dev": true, "dependencies": { "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/strip-bom-buf": { "version": "1.0.0", @@ -12006,6 +14523,9 @@ "dev": true, "dependencies": { "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=4" } }, "node_modules/strip-bom-stream": { @@ -12016,19 +14536,28 @@ "dependencies": { "first-chunk-stream": "^2.0.0", "strip-bom-buf": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/stylus": { "version": "0.54.8", @@ -12044,6 +14573,12 @@ "sax": "~1.2.4", "semver": "^6.3.0", "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" } }, "node_modules/stylus/node_modules/css-parse": { @@ -12068,7 +14603,13 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } }, "node_modules/stylus/node_modules/sax": { "version": "1.2.4", @@ -12080,13 +14621,19 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, "node_modules/stylus/node_modules/source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true + "dev": true, + "engines": { + "node": ">= 8" + } }, "node_modules/supports-color": { "version": "5.5.0", @@ -12095,13 +14642,19 @@ "dev": true, "dependencies": { "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/symbol-observable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/table": { "version": "4.0.3", @@ -12115,13 +14668,19 @@ "lodash": "^4.17.4", "slice-ansi": "1.0.0", "string-width": "^2.1.1" + }, + "engines": { + "node": ">=4.0.0" } }, "node_modules/tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/tar-stream": { "version": "1.6.2", @@ -12136,13 +14695,19 @@ "readable-stream": "^2.3.0", "to-buffer": "^1.1.1", "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/temp-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/tempfile": { "version": "2.0.0", @@ -12152,6 +14717,9 @@ "dependencies": { "temp-dir": "^1.0.0", "uuid": "^3.0.1" + }, + "engines": { + "node": ">=4" } }, "node_modules/term-size": { @@ -12161,6 +14729,9 @@ "dev": true, "dependencies": { "execa": "^0.7.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/term-size/node_modules/cross-spawn": { @@ -12187,6 +14758,9 @@ "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/terser": { @@ -12198,6 +14772,12 @@ "commander": "^2.20.0", "source-map": "~0.6.1", "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/terser-webpack-plugin": { @@ -12215,6 +14795,12 @@ "terser": "^4.1.2", "webpack-sources": "^1.4.0", "worker-farm": "^1.7.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" } }, "node_modules/terser-webpack-plugin/node_modules/cacache": { @@ -12265,6 +14851,9 @@ "pumpify": "^1.3.3", "stream-each": "^1.1.0", "through2": "^2.0.0" + }, + "engines": { + "node": ">=4.0.0" } }, "node_modules/terser-webpack-plugin/node_modules/pump": { @@ -12284,6 +14873,9 @@ "dev": true, "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { @@ -12295,6 +14887,9 @@ "ajv": "^6.1.0", "ajv-errors": "^1.0.0", "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" } }, "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { @@ -12310,7 +14905,10 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/terser-webpack-plugin/node_modules/ssri": { "version": "6.0.1", @@ -12331,7 +14929,10 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/text-table": { "version": "0.2.0", @@ -12364,6 +14965,9 @@ "dev": true, "dependencies": { "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" } }, "node_modules/through": { @@ -12392,7 +14996,10 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/timers-browserify": { "version": "2.0.11", @@ -12401,6 +15008,9 @@ "dev": true, "dependencies": { "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" } }, "node_modules/tiny-lr": { @@ -12421,6 +15031,7 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -12448,6 +15059,9 @@ "dev": true, "dependencies": { "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" } }, "node_modules/to-arraybuffer": { @@ -12466,7 +15080,10 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/to-object-path": { "version": "0.3.0", @@ -12475,6 +15092,9 @@ "dev": true, "dependencies": { "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/to-object-path/node_modules/kind-of": { @@ -12484,6 +15104,9 @@ "dev": true, "dependencies": { "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/to-regex": { @@ -12496,6 +15119,9 @@ "extend-shallow": "^3.0.2", "regex-not": "^1.0.2", "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/to-regex-range": { @@ -12506,12 +15132,18 @@ "dependencies": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "engines": { + "node": ">=0.6" + } }, "node_modules/token-stream": { "version": "0.0.1", @@ -12528,7 +15160,10 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/tosource/-/tosource-1.0.0.tgz", "integrity": "sha1-QtiN0RZhi88A1hBt1URvNCeQL/E=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/tough-cookie": { "version": "2.5.0", @@ -12538,6 +15173,9 @@ "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" } }, "node_modules/tr46": { @@ -12553,13 +15191,19 @@ "version": "0.4.6", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.4.6.tgz", "integrity": "sha1-0EsigOTHkqWBVCnve4tgxkyczDQ=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/tslib": { "version": "1.13.0", @@ -12580,13 +15224,19 @@ "dev": true, "dependencies": { "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" } }, "node_modules/tv4": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", "integrity": "sha1-0CDIRvrdUMhVq7JeuuzGj8EPeWM=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8.0" + } }, "node_modules/tv4-formats": { "version": "3.0.3", @@ -12617,13 +15267,19 @@ "dev": true, "dependencies": { "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/type-is": { "version": "1.6.18", @@ -12632,6 +15288,9 @@ "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/typedarray": { @@ -12651,9 +15310,14 @@ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dependencies": { "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", "yargs": "~3.10.0" }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + }, "optionalDependencies": { "uglify-to-browserify": "~1.0.0" } @@ -12678,6 +15342,12 @@ "uglify-es": "^3.3.4", "webpack-sources": "^1.1.0", "worker-farm": "^1.5.2" + }, + "engines": { + "node": ">= 4.8 < 5.0.0 || >= 5.10" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" } }, "node_modules/uglifyjs-webpack-plugin/node_modules/commander": { @@ -12695,6 +15365,9 @@ "commondir": "^1.0.1", "make-dir": "^1.0.0", "pkg-dir": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/uglifyjs-webpack-plugin/node_modules/find-up": { @@ -12704,6 +15377,9 @@ "dev": true, "dependencies": { "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/uglifyjs-webpack-plugin/node_modules/locate-path": { @@ -12714,6 +15390,9 @@ "dependencies": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/uglifyjs-webpack-plugin/node_modules/make-dir": { @@ -12723,6 +15402,9 @@ "dev": true, "dependencies": { "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/uglifyjs-webpack-plugin/node_modules/p-limit": { @@ -12732,6 +15414,9 @@ "dev": true, "dependencies": { "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/uglifyjs-webpack-plugin/node_modules/p-locate": { @@ -12741,19 +15426,28 @@ "dev": true, "dependencies": { "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/uglifyjs-webpack-plugin/node_modules/p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/uglifyjs-webpack-plugin/node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/uglifyjs-webpack-plugin/node_modules/pkg-dir": { "version": "2.0.0", @@ -12762,6 +15456,9 @@ "dev": true, "dependencies": { "find-up": "^2.1.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/uglifyjs-webpack-plugin/node_modules/schema-utils": { @@ -12772,29 +15469,45 @@ "dependencies": { "ajv": "^6.1.0", "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" } }, "node_modules/uglifyjs-webpack-plugin/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/uglifyjs-webpack-plugin/node_modules/uglify-es": { "version": "3.3.9", "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "deprecated": "support for ECMAScript is superseded by `uglify-js` as of v3.13.0", "dev": true, "dependencies": { "commander": "~2.13.0", "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" } }, "node_modules/unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/undefsafe": { "version": "2.0.3", @@ -12819,13 +15532,19 @@ "dependencies": { "sprintf-js": "^1.0.3", "util-deprecate": "^1.0.2" + }, + "engines": { + "node": "*" } }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/unicode-match-property-ecmascript": { "version": "1.0.4", @@ -12835,19 +15554,28 @@ "dependencies": { "unicode-canonical-property-names-ecmascript": "^1.0.4", "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" } }, "node_modules/unicode-match-property-value-ecmascript": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/unicode-property-aliases-ecmascript": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/union-value": { "version": "1.0.1", @@ -12859,6 +15587,9 @@ "get-value": "^2.0.6", "is-extendable": "^0.1.1", "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/unique-filename": { @@ -12886,6 +15617,9 @@ "dev": true, "dependencies": { "crypto-random-string": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/universal-user-agent": { @@ -12897,12 +15631,18 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "dev": true, + "engines": { + "node": ">= 4.0.0" + } }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "engines": { + "node": ">= 0.8" + } }, "node_modules/unset-value": { "version": "1.0.0", @@ -12912,6 +15652,9 @@ "dependencies": { "has-value": "^0.3.1", "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/unset-value/node_modules/has-value": { @@ -12923,6 +15666,9 @@ "get-value": "^2.0.3", "has-values": "^0.1.4", "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { @@ -12932,25 +15678,37 @@ "dev": true, "dependencies": { "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/unset-value/node_modules/has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/unzip-response": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/upath": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/update-notifier": { "version": "2.3.0", @@ -12967,6 +15725,9 @@ "latest-version": "^3.0.0", "semver-diff": "^2.0.0", "xdg-basedir": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/uri-js": { @@ -12982,6 +15743,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", "dev": true }, "node_modules/url": { @@ -13001,6 +15763,9 @@ "dev": true, "dependencies": { "prepend-http": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/url/node_modules/punycode": { @@ -13013,7 +15778,10 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/user-home": { "version": "2.0.0", @@ -13022,6 +15790,9 @@ "dev": true, "dependencies": { "os-homedir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/util": { @@ -13042,13 +15813,20 @@ "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "engines": { + "node": ">= 0.4.0" + } }, "node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } }, "node_modules/v8flags": { "version": "3.1.3", @@ -13057,6 +15835,9 @@ "dev": true, "dependencies": { "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/validate-npm-package-license": { @@ -13073,18 +15854,27 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz", "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.10" + } }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "engines": { + "node": ">= 0.8" + } }, "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, + "engines": [ + "node >=0.6.0" + ], "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -13100,7 +15890,10 @@ "node_modules/void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/vscode-languageserver-types": { "version": "3.15.1", @@ -13112,7 +15905,10 @@ "version": "0.0.11", "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.6.0" + } }, "node_modules/watchpack": { "version": "1.5.0", @@ -13133,6 +15929,9 @@ "optional": true, "dependencies": { "chokidar": "^2.1.8" + }, + "engines": { + "node": "<8.10.0" } }, "node_modules/wcwidth": { @@ -13183,13 +15982,23 @@ "watchpack": "1.5.0", "yargs": "6.6.0", "zip-dir": "1.0.2" + }, + "bin": { + "web-ext": "bin/web-ext" + }, + "engines": { + "node": ">=6.0.0", + "npm": ">=3.0.0" } }, "node_modules/web-ext/node_modules/camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/web-ext/node_modules/cliui": { "version": "3.2.0", @@ -13209,13 +16018,19 @@ "dev": true, "dependencies": { "xregexp": "4.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/web-ext/node_modules/invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/web-ext/node_modules/is-fullwidth-code-point": { "version": "1.0.0", @@ -13224,6 +16039,9 @@ "dev": true, "dependencies": { "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/web-ext/node_modules/lcid": { @@ -13233,6 +16051,9 @@ "dev": true, "dependencies": { "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/web-ext/node_modules/minimist": { @@ -13245,9 +16066,13 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", "dev": true, "dependencies": { "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, "node_modules/web-ext/node_modules/opn": { @@ -13257,6 +16082,9 @@ "dev": true, "dependencies": { "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/web-ext/node_modules/os-locale": { @@ -13266,6 +16094,9 @@ "dev": true, "dependencies": { "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/web-ext/node_modules/regenerator-runtime": { @@ -13278,7 +16109,10 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/web-ext/node_modules/source-map-support": { "version": "0.5.3", @@ -13298,6 +16132,9 @@ "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/web-ext/node_modules/which-module": { @@ -13352,19 +16189,28 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/web-ext/node_modules/yargs/node_modules/camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/web-ext/node_modules/yargs/node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/webidl-conversions": { "version": "4.0.2", @@ -13401,6 +16247,24 @@ "terser-webpack-plugin": "^1.4.3", "watchpack": "^1.7.4", "webpack-sources": "^1.4.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } } }, "node_modules/webpack-merge": { @@ -13426,13 +16290,22 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/webpack/node_modules/acorn": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/webpack/node_modules/anymatch": { "version": "3.1.1", @@ -13443,6 +16316,9 @@ "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, "node_modules/webpack/node_modules/binary-extensions": { @@ -13450,7 +16326,10 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", "dev": true, - "optional": true + "optional": true, + "engines": { + "node": ">=8" + } }, "node_modules/webpack/node_modules/braces": { "version": "3.0.2", @@ -13460,6 +16339,9 @@ "optional": true, "dependencies": { "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/webpack/node_modules/chokidar": { @@ -13471,12 +16353,17 @@ "dependencies": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.1.2", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.4.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.1.2" } }, "node_modules/webpack/node_modules/fill-range": { @@ -13487,14 +16374,25 @@ "optional": true, "dependencies": { "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/webpack/node_modules/fsevents": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "deprecated": "\"Please update to latest v2.3 or v2.2\"", "dev": true, - "optional": true + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, "node_modules/webpack/node_modules/glob-parent": { "version": "5.1.1", @@ -13504,6 +16402,9 @@ "optional": true, "dependencies": { "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/webpack/node_modules/is-binary-path": { @@ -13514,6 +16415,9 @@ "optional": true, "dependencies": { "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/webpack/node_modules/is-glob": { @@ -13524,6 +16428,9 @@ "optional": true, "dependencies": { "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/webpack/node_modules/is-number": { @@ -13531,14 +16438,20 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "optional": true + "optional": true, + "engines": { + "node": ">=0.12.0" + } }, "node_modules/webpack/node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "optional": true + "optional": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/webpack/node_modules/readdirp": { "version": "3.4.0", @@ -13548,6 +16461,9 @@ "optional": true, "dependencies": { "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, "node_modules/webpack/node_modules/schema-utils": { @@ -13559,6 +16475,9 @@ "ajv": "^6.1.0", "ajv-errors": "^1.0.0", "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" } }, "node_modules/webpack/node_modules/to-regex-range": { @@ -13569,6 +16488,9 @@ "optional": true, "dependencies": { "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, "node_modules/webpack/node_modules/watchpack": { @@ -13577,10 +16499,8 @@ "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", "dev": true, "dependencies": { - "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.0" + "neo-async": "^2.5.0" }, "optionalDependencies": { "chokidar": "^3.4.1", @@ -13596,13 +16516,19 @@ "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" } }, "node_modules/websocket-extensions": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, "node_modules/whatwg-url": { "version": "7.0.0", @@ -13628,6 +16554,9 @@ "dev": true, "dependencies": { "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, "node_modules/which-module": { @@ -13643,6 +16572,9 @@ "dev": true, "dependencies": { "string-width": "^2.1.1" + }, + "engines": { + "node": ">=4" } }, "node_modules/win-release": { @@ -13652,12 +16584,18 @@ "dev": true, "dependencies": { "semver": "^5.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "engines": { + "node": ">= 0.8.0" + } }, "node_modules/winreg": { "version": "0.0.12", @@ -13678,12 +16616,18 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "engines": { + "node": ">=0.4.0" + } }, "node_modules/worker-farm": { "version": "1.7.0", @@ -13702,6 +16646,9 @@ "dependencies": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { @@ -13711,6 +16658,9 @@ "dev": true, "dependencies": { "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/wrap-ansi/node_modules/string-width": { @@ -13722,6 +16672,9 @@ "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/wrappy": { @@ -13736,6 +16689,9 @@ "dev": true, "dependencies": { "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/write-file-atomic": { @@ -13762,7 +16718,10 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", - "dev": true + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/xhr-mock": { "version": "2.5.1", @@ -13782,6 +16741,9 @@ "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" } }, "node_modules/xml2js/node_modules/sax": { @@ -13794,25 +16756,38 @@ "version": "11.0.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true + "dev": true, + "engines": { + "node": ">=4.0" + } }, "node_modules/xmldom": { "version": "0.1.27", "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", - "dev": true + "deprecated": "Deprecated due to CVE-2021-21366 resolved in 0.5.0", + "dev": true, + "engines": { + "node": ">=0.1" + } }, "node_modules/xregexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", - "dev": true + "dev": true, + "engines": { + "node": "*" + } }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4" + } }, "node_modules/y18n": { "version": "4.0.0", @@ -13851,7 +16826,10 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/yauzl": { "version": "2.10.0", @@ -13892,6 +16870,9 @@ "compress-commons": "^1.2.0", "lodash": "^4.8.0", "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 0.10.0" } } }, @@ -15506,7 +18487,8 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", - "dev": true + "dev": true, + "requires": {} }, "adbkit": { "version": "2.11.0", @@ -15814,13 +18796,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true + "dev": true, + "requires": {} }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "ajv-merge-patch": { "version": "4.1.0", @@ -16718,6 +19702,12 @@ "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==", "dev": true }, + "bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "dev": true + }, "boxen": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", @@ -18793,7 +21783,8 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true + "dev": true, + "requires": {} }, "ansi-escapes": { "version": "1.4.0", @@ -20481,7 +23472,8 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-3.0.0.tgz", "integrity": "sha512-cgAlreXf3muSYS5LzW0Cc4xHK03BjFOYk0MqCQ/MZ3k1Xz2GU7D+IAJg4UKicxpO+XdONJdx/NJ6kpy2wI+uHg==", - "dev": true + "dev": true, + "requires": {} }, "grunt-known-options": { "version": "1.1.1", @@ -21412,6 +24404,12 @@ "integrity": "sha1-LPn7rkbYB0/Ba33gBxyO/rykc6Y=", "dev": true }, + "jose": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/jose/-/jose-3.19.0.tgz", + "integrity": "sha512-G5imz/7oSe8Ohg4EMEhGhMhN+yzACMw7NC7ZrEYSoJekQXHPf+TPQNc/XJkYRm6TFWIbf3HA4OHZhdRv8KsskA==", + "dev": true + }, "jquery": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", @@ -21958,12 +24956,6 @@ "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", "dev": true }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "dev": true - }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -22805,43 +25797,46 @@ } } }, - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" - }, - "node-forge": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", - "integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q==", - "dev": true - }, - "node-jose": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/node-jose/-/node-jose-1.1.4.tgz", - "integrity": "sha512-L31IFwL3pWWcMHxxidCY51ezqrDXMkvlT/5pLTfNw5sXmmOLJuN6ug7txzF/iuZN55cRpyOmoJrotwBQIoo5Lw==", + "nock": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.1.3.tgz", + "integrity": "sha512-YKj0rKQWMGiiIO+Y65Ut8OEgYM3PplLU2+GAhnPmqZdBd6z5IskgdBqWmjzA6lH3RF0S2a3wiAlrMOF5Iv2Jeg==", "dev": true, "requires": { - "base64url": "^3.0.1", - "browserify-zlib": "^0.2.0", - "buffer": "^5.5.0", - "es6-promise": "^4.2.8", - "lodash": "^4.17.15", - "long": "^4.0.0", - "node-forge": "^0.8.5", - "process": "^0.11.10", - "react-zlib-js": "^1.0.4", - "uuid": "^3.3.3" + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash.set": "^4.3.2", + "propagate": "^2.0.0" }, "dependencies": { - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + }, "node-libs-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", @@ -23797,6 +26792,12 @@ "integrity": "sha1-Fg+JisPHW1y7cw/yOgyi8XQHvzo=", "dev": true }, + "propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "dev": true + }, "proxy-addr": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", @@ -24143,12 +27144,6 @@ "strip-json-comments": "~2.0.1" } }, - "react-zlib-js": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/react-zlib-js/-/react-zlib-js-1.0.5.tgz", - "integrity": "sha512-TLcPdmqhIl+ylwOwlfm1WUuI7NVvhAv3L74d1AabhjyaAbmLOROTA/Q4EQ/UMCFCOjIkVim9fT3UZOQSFk/mlA==", - "dev": true - }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -25100,7 +28095,8 @@ "version": "2.14.0", "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.14.0.tgz", "integrity": "sha512-9stIF1utB0ywNHNT7RgiXbdmen8QDCRsrTjw+G9TgKt1Yexjiv8TOWZ6WHsTPz57Yky3DIswZvEqX8fpuHNDtQ==", - "dev": true + "dev": true, + "requires": {} }, "slash": { "version": "1.0.0", diff --git a/package.json b/package.json index b4105f15..a5d531a1 100644 --- a/package.json +++ b/package.json @@ -16,17 +16,15 @@ "pug": "^2.0.4", "querystring": "^0.2.0" }, - "devEngines": { - "node": "^8.12.0", - "npm": "^6.4.1" - }, "devDependencies": { "@babel/core": "^7.4.5", "@babel/polyfill": "^7.4.4", "@babel/preset-env": "^7.4.5", "babel-loader": "^8.0.6", "babel-plugin-transform-async-to-generator": "^6.24.1", + "base64url": "^3.0.1", "bootstrap": "^3.4.1", + "bowser": "^2.11.0", "chai": "^4.2.0", "chai-arrays": "^2.0.0", "chai-as-promised": "^7.1.1", @@ -51,11 +49,13 @@ "highlight.js": "^10.4.1", "inject-loader": "^3.0.1", "isotope-layout": "^3.0.6", + "jose": "^3.19.0", "jquery": "^3.4.1", "lodash": "^4.17.13", "loglevel": "^1.6.2", "mocha": "^5.2.0", - "node-jose": "^1.1.4", + "nock": "^13.1.3", + "node-forge": "^0.10.0", "promise.any": "^0.1.1", "puppeteer": "^1.17.0", "request-promise-native": "^1.0.7", diff --git a/src/editor/default-tokens.js b/src/editor/default-tokens.js index 3844f818..88a6d862 100644 --- a/src/editor/default-tokens.js +++ b/src/editor/default-tokens.js @@ -2,43 +2,55 @@ // them safely to GitHub. const rsaPrivateKey = -`-----BEGIN RSA PRIVATE KEY----- -MIIEogIBAAKCAQEAnzyis1ZjfNB0bBgKFMSvvkTtwlvBsaJq7S5wA+kzeVOVpVWw -kWdVha4s38XM/pa/yr47av7+z3VTmvDRyAHcaT92whREFpLv9cj5lTeJSibyr/Mr -m/YtjCZVWgaOYIhwrXwKLqPr/11inWsAkfIytvHWTxZYEcXLgAXFuUuaS3uF9gEi -NQwzGTU1v0FqkqTBr4B8nW3HCN47XUu0t8Y0e+lf4s4OxQawWD79J9/5d3Ry0vbV -3Am1FtGJiJvOwRsIfVChDpYStTcHTCMqtvWbV6L11BWkpzGXSW4Hv43qa+GSYOD2 -QU68Mb59oSk2OB+BtOLpJofmbGEGgvmwyCI9MwIDAQABAoIBACiARq2wkltjtcjs -kFvZ7w1JAORHbEufEO1Eu27zOIlqbgyAcAl7q+/1bip4Z/x1IVES84/yTaM8p0go -amMhvgry/mS8vNi1BN2SAZEnb/7xSxbflb70bX9RHLJqKnp5GZe2jexw+wyXlwaM -+bclUCrh9e1ltH7IvUrRrQnFJfh+is1fRon9Co9Li0GwoN0x0byrrngU8Ak3Y6D9 -D8GjQA4Elm94ST3izJv8iCOLSDBmzsPsXfcCUZfmTfZ5DbUDMbMxRnSo3nQeoKGC -0Lj9FkWcfmLcpGlSXTO+Ww1L7EGq+PT3NtRae1FZPwjddQ1/4V905kyQFLamAA5Y -lSpE2wkCgYEAy1OPLQcZt4NQnQzPz2SBJqQN2P5u3vXl+zNVKP8w4eBv0vWuJJF+ -hkGNnSxXQrTkvDOIUddSKOzHHgSg4nY6K02ecyT0PPm/UZvtRpWrnBjcEVtHEJNp -bU9pLD5iZ0J9sbzPU/LxPmuAP2Bs8JmTn6aFRspFrP7W0s1Nmk2jsm0CgYEAyH0X -+jpoqxj4efZfkUrg5GbSEhf+dZglf0tTOA5bVg8IYwtmNk/pniLG/zI7c+GlTc9B -BwfMr59EzBq/eFMI7+LgXaVUsM/sS4Ry+yeK6SJx/otIMWtDfqxsLD8CPMCRvecC -2Pip4uSgrl0MOebl9XKp57GoaUWRWRHqwV4Y6h8CgYAZhI4mh4qZtnhKjY4TKDjx -QYufXSdLAi9v3FxmvchDwOgn4L+PRVdMwDNms2bsL0m5uPn104EzM6w1vzz1zwKz -5pTpPI0OjgWN13Tq8+PKvm/4Ga2MjgOgPWQkslulO/oMcXbPwWC3hcRdr9tcQtn9 -Imf9n2spL/6EDFId+Hp/7QKBgAqlWdiXsWckdE1Fn91/NGHsc8syKvjjk1onDcw0 -NvVi5vcba9oGdElJX3e9mxqUKMrw7msJJv1MX8LWyMQC5L6YNYHDfbPF1q5L4i8j -8mRex97UVokJQRRA452V2vCO6S5ETgpnad36de3MUxHgCOX3qL382Qx9/THVmbma -3YfRAoGAUxL/Eu5yvMK8SAt/dJK6FedngcM3JEFNplmtLYVLWhkIlNRGDwkg3I5K -y18Ae9n7dHVueyslrb6weq7dTkYDi3iOYRW8HRkIQh06wEdbxt0shTzAJvvCQfrB -jg/3747WSsf/zBTcHihTRBdAv6OmdhV4/dD5YBfLAkLrd+mX7iE= ------END RSA PRIVATE KEY-----`; +`-----BEGIN PRIVATE KEY----- +MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC7VJTUt9Us8cKj +MzEfYyjiWA4R4/M2bS1GB4t7NXp98C3SC6dVMvDuictGeurT8jNbvJZHtCSuYEvu +NMoSfm76oqFvAp8Gy0iz5sxjZmSnXyCdPEovGhLa0VzMaQ8s+CLOyS56YyCFGeJZ +qgtzJ6GR3eqoYSW9b9UMvkBpZODSctWSNGj3P7jRFDO5VoTwCQAWbFnOjDfH5Ulg +p2PKSQnSJP3AJLQNFNe7br1XbrhV//eO+t51mIpGSDCUv3E0DDFcWDTH9cXDTTlR +ZVEiR2BwpZOOkE/Z0/BVnhZYL71oZV34bKfWjQIt6V/isSMahdsAASACp4ZTGtwi +VuNd9tybAgMBAAECggEBAKTmjaS6tkK8BlPXClTQ2vpz/N6uxDeS35mXpqasqskV +laAidgg/sWqpjXDbXr93otIMLlWsM+X0CqMDgSXKejLS2jx4GDjI1ZTXg++0AMJ8 +sJ74pWzVDOfmCEQ/7wXs3+cbnXhKriO8Z036q92Qc1+N87SI38nkGa0ABH9CN83H +mQqt4fB7UdHzuIRe/me2PGhIq5ZBzj6h3BpoPGzEP+x3l9YmK8t/1cN0pqI+dQwY +dgfGjackLu/2qH80MCF7IyQaseZUOJyKrCLtSD/Iixv/hzDEUPfOCjFDgTpzf3cw +ta8+oE4wHCo1iI1/4TlPkwmXx4qSXtmw4aQPz7IDQvECgYEA8KNThCO2gsC2I9PQ +DM/8Cw0O983WCDY+oi+7JPiNAJwv5DYBqEZB1QYdj06YD16XlC/HAZMsMku1na2T +N0driwenQQWzoev3g2S7gRDoS/FCJSI3jJ+kjgtaA7Qmzlgk1TxODN+G1H91HW7t +0l7VnL27IWyYo2qRRK3jzxqUiPUCgYEAx0oQs2reBQGMVZnApD1jeq7n4MvNLcPv +t8b/eU9iUv6Y4Mj0Suo/AU8lYZXm8ubbqAlwz2VSVunD2tOplHyMUrtCtObAfVDU +AhCndKaA9gApgfb3xw1IKbuQ1u4IF1FJl3VtumfQn//LiH1B3rXhcdyo3/vIttEk +48RakUKClU8CgYEAzV7W3COOlDDcQd935DdtKBFRAPRPAlspQUnzMi5eSHMD/ISL +DY5IiQHbIH83D4bvXq0X7qQoSBSNP7Dvv3HYuqMhf0DaegrlBuJllFVVq9qPVRnK +xt1Il2HgxOBvbhOT+9in1BzA+YJ99UzC85O0Qz06A+CmtHEy4aZ2kj5hHjECgYEA +mNS4+A8Fkss8Js1RieK2LniBxMgmYml3pfVLKGnzmng7H2+cwPLhPIzIuwytXywh +2bzbsYEfYx3EoEVgMEpPhoarQnYPukrJO4gwE2o5Te6T5mJSZGlQJQj9q4ZB2Dfz +et6INsK0oG8XVGXSpQvQh3RUYekCZQkBBFcpqWpbIEsCgYAnM3DQf3FJoSnXaMhr +VBIovic5l0xFkEHskAjFTevO86Fsz1C2aSeRKSqGFoOQ0tmJzBEs1R6KqnHInicD +TQrKhArgLXX4v3CddjfTRJkFWDbE/CkvKZNOrcf1nhaGCPspRJj2KUkj1Fhl9Cnc +dn/RsYEONbwQSjIfMPkvxF+8HQ== +-----END PRIVATE KEY-----`; +const rsaJwk = { + e: 'AQAB', + n: 'u1SU1LfVLPHCozMxH2Mo4lgOEePzNm0tRgeLezV6ffAt0gunVTLw7onLRnrq0_IzW7yWR7QkrmBL7jTKEn5u-qKhbwKfBstIs-bMY2Zkp18gnTxKLxoS2tFczGkPLPgizskuemMghRniWaoLcyehkd3qqGElvW_VDL5AaWTg0nLVkjRo9z-40RQzuVaE8AkAFmxZzow3x-VJYKdjykkJ0iT9wCS0DRTXu269V264Vf_3jvredZiKRkgwlL9xNAwxXFg0x_XFw005UWVRIkdgcKWTjpBP2dPwVZ4WWC-9aGVd-Gyn1o0CLelf4rEjGoXbAAEgAqeGUxrcIlbjXfbcmw', + d: 'pOaNpLq2QrwGU9cKVNDa-nP83q7EN5LfmZempqyqyRWVoCJ2CD-xaqmNcNtev3ei0gwuVawz5fQKowOBJcp6MtLaPHgYOMjVlNeD77QAwnywnvilbNUM5-YIRD_vBezf5xudeEquI7xnTfqr3ZBzX43ztIjfyeQZrQAEf0I3zceZCq3h8HtR0fO4hF7-Z7Y8aEirlkHOPqHcGmg8bMQ_7HeX1iYry3_Vw3Smoj51DBh2B8aNpyQu7_aofzQwIXsjJBqx5lQ4nIqsIu1IP8iLG_-HMMRQ984KMUOBOnN_dzC1rz6gTjAcKjWIjX_hOU-TCZfHipJe2bDhpA_PsgNC8Q', + p: '8KNThCO2gsC2I9PQDM_8Cw0O983WCDY-oi-7JPiNAJwv5DYBqEZB1QYdj06YD16XlC_HAZMsMku1na2TN0driwenQQWzoev3g2S7gRDoS_FCJSI3jJ-kjgtaA7Qmzlgk1TxODN-G1H91HW7t0l7VnL27IWyYo2qRRK3jzxqUiPU', + q: 'x0oQs2reBQGMVZnApD1jeq7n4MvNLcPvt8b_eU9iUv6Y4Mj0Suo_AU8lYZXm8ubbqAlwz2VSVunD2tOplHyMUrtCtObAfVDUAhCndKaA9gApgfb3xw1IKbuQ1u4IF1FJl3VtumfQn__LiH1B3rXhcdyo3_vIttEk48RakUKClU8', + dp: 'zV7W3COOlDDcQd935DdtKBFRAPRPAlspQUnzMi5eSHMD_ISLDY5IiQHbIH83D4bvXq0X7qQoSBSNP7Dvv3HYuqMhf0DaegrlBuJllFVVq9qPVRnKxt1Il2HgxOBvbhOT-9in1BzA-YJ99UzC85O0Qz06A-CmtHEy4aZ2kj5hHjE', + dq: 'mNS4-A8Fkss8Js1RieK2LniBxMgmYml3pfVLKGnzmng7H2-cwPLhPIzIuwytXywh2bzbsYEfYx3EoEVgMEpPhoarQnYPukrJO4gwE2o5Te6T5mJSZGlQJQj9q4ZB2Dfzet6INsK0oG8XVGXSpQvQh3RUYekCZQkBBFcpqWpbIEs', + qi: 'JzNw0H9xSaEp12jIa1QSKL4nOZdMRZBB7JAIxU3rzvOhbM9QtmknkSkqhhaDkNLZicwRLNUeiqpxyJ4nA00KyoQK4C11-L9wnXY300SZBVg2xPwpLymTTq3H9Z4Whgj7KUSY9ilJI9RYZfQp3HZ_0bGBDjW8EEoyHzD5L8RfvB0', + kty: 'RSA' +} const rsaPublicKey = `-----BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnzyis1ZjfNB0bBgKFMSv -vkTtwlvBsaJq7S5wA+kzeVOVpVWwkWdVha4s38XM/pa/yr47av7+z3VTmvDRyAHc -aT92whREFpLv9cj5lTeJSibyr/Mrm/YtjCZVWgaOYIhwrXwKLqPr/11inWsAkfIy -tvHWTxZYEcXLgAXFuUuaS3uF9gEiNQwzGTU1v0FqkqTBr4B8nW3HCN47XUu0t8Y0 -e+lf4s4OxQawWD79J9/5d3Ry0vbV3Am1FtGJiJvOwRsIfVChDpYStTcHTCMqtvWb -V6L11BWkpzGXSW4Hv43qa+GSYOD2QU68Mb59oSk2OB+BtOLpJofmbGEGgvmwyCI9 -MwIDAQAB +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu1SU1LfVLPHCozMxH2Mo +4lgOEePzNm0tRgeLezV6ffAt0gunVTLw7onLRnrq0/IzW7yWR7QkrmBL7jTKEn5u ++qKhbwKfBstIs+bMY2Zkp18gnTxKLxoS2tFczGkPLPgizskuemMghRniWaoLcyeh +kd3qqGElvW/VDL5AaWTg0nLVkjRo9z+40RQzuVaE8AkAFmxZzow3x+VJYKdjykkJ +0iT9wCS0DRTXu269V264Vf/3jvredZiKRkgwlL9xNAwxXFg0x/XFw005UWVRIkdg +cKWTjpBP2dPwVZ4WWC+9aGVd+Gyn1o0CLelf4rEjGoXbAAEgAqeGUxrcIlbjXfbc +mwIDAQAB -----END PUBLIC KEY-----`; const ecPrivateKey256 = @@ -47,6 +59,13 @@ MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgevZzL1gdAFr88hb2 OF/2NxApJCzGCEDdfSp6VQO30hyhRANCAAQRWz+jn65BtOMvdyHKcvjBeBSDZH2r 1RTwjmYSi9R/zpBnuQ4EiMnCqfMPWiZqB4QdbAd0E7oH50VpuZ1P087G -----END PRIVATE KEY-----`; +const ecJwk256 = { + crv: 'P-256', + x: 'EVs_o5-uQbTjL3chynL4wXgUg2R9q9UU8I5mEovUf84', + y: 'kGe5DgSIycKp8w9aJmoHhB1sB3QTugfnRWm5nU_TzsY', + d: 'evZzL1gdAFr88hb2OF_2NxApJCzGCEDdfSp6VQO30hw', + kty: 'EC' +}; const ecPublicKey256 = `-----BEGIN PUBLIC KEY----- @@ -55,12 +74,19 @@ q9UU8I5mEovUf86QZ7kOBIjJwqnzD1omageEHWwHdBO6B+dFabmdT9POxg== -----END PUBLIC KEY-----`; const ecPrivateKey384 = -`-----BEGIN EC PRIVATE KEY----- -MIGkAgEBBDCAHpFQ62QnGCEvYh/pE9QmR1C9aLcDItRbslbmhen/h1tt8AyMhske -enT+rAyyPhGgBwYFK4EEACKhZANiAAQLW5ZJePZzMIPAxMtZXkEWbDF0zo9f2n4+ -T1h/2sh/fviblc/VTyrv10GEtIi5qiOy85Pf1RRw8lE5IPUWpgu553SteKigiKLU -PeNpbqmYZUkWGh3MLfVzLmx85ii2vMU= ------END EC PRIVATE KEY-----`; +`-----BEGIN PRIVATE KEY----- +MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDCAHpFQ62QnGCEvYh/p +E9QmR1C9aLcDItRbslbmhen/h1tt8AyMhskeenT+rAyyPhGhZANiAAQLW5ZJePZz +MIPAxMtZXkEWbDF0zo9f2n4+T1h/2sh/fviblc/VTyrv10GEtIi5qiOy85Pf1RRw +8lE5IPUWpgu553SteKigiKLUPeNpbqmYZUkWGh3MLfVzLmx85ii2vMU= +-----END PRIVATE KEY-----`; +const ecJwk384 = { + crv: 'P-384', + x: 'C1uWSXj2czCDwMTLWV5BFmwxdM6PX9p-Pk9Yf9rIf374m5XP1U8q79dBhLSIuaoj', + y: 'svOT39UUcPJROSD1FqYLued0rXiooIii1D3jaW6pmGVJFhodzC31cy5sfOYotrzF', + d: 'gB6RUOtkJxghL2If6RPUJkdQvWi3AyLUW7JW5oXp_4dbbfAMjIbJHnp0_qwMsj4R', + kty: 'EC' +} const ecPublicKey384 = `-----BEGIN PUBLIC KEY----- @@ -70,13 +96,21 @@ Pk9Yf9rIf374m5XP1U8q79dBhLSIuaojsvOT39UUcPJROSD1FqYLued0rXiooIii -----END PUBLIC KEY-----`; const ecPrivateKey521 = -`-----BEGIN EC PRIVATE KEY----- -MIHcAgEBBEIBiyAa7aRHFDCh2qga9sTUGINE5jHAFnmM8xWeT/uni5I4tNqhV5Xx -0pDrmCV9mbroFtfEa0XVfKuMAxxfZ6LM/yKgBwYFK4EEACOhgYkDgYYABAGBzgdn -P798FsLuWYTDDQA7c0r3BVk8NnRUSexpQUsRilPNv3SchO0lRw9Ru86x1khnVDx+ -duq4BiDFcvlSAcyjLACJvjvoyTLJiA+TQFdmrearjMiZNE25pT2yWP1NUndJxPcv -VtfBW48kPOmvkY4WlqP5bAwCXwbsKrCgk6xbsp12ew== ------END EC PRIVATE KEY-----`; +`-----BEGIN PRIVATE KEY----- +MIHuAgEAMBAGByqGSM49AgEGBSuBBAAjBIHWMIHTAgEBBEIBiyAa7aRHFDCh2qga +9sTUGINE5jHAFnmM8xWeT/uni5I4tNqhV5Xx0pDrmCV9mbroFtfEa0XVfKuMAxxf +Z6LM/yKhgYkDgYYABAGBzgdnP798FsLuWYTDDQA7c0r3BVk8NnRUSexpQUsRilPN +v3SchO0lRw9Ru86x1khnVDx+duq4BiDFcvlSAcyjLACJvjvoyTLJiA+TQFdmrear +jMiZNE25pT2yWP1NUndJxPcvVtfBW48kPOmvkY4WlqP5bAwCXwbsKrCgk6xbsp12 +ew== +-----END PRIVATE KEY-----`; +const ecJwk521 = { + crv: 'P-521', + x: 'AYHOB2c_v3wWwu5ZhMMNADtzSvcFWTw2dFRJ7GlBSxGKU82_dJyE7SVHD1G7zrHWSGdUPH526rgGIMVy-VIBzKMs', + y: 'AIm-O-jJMsmID5NAV2at5quMyJk0TbmlPbJY_U1Sd0nE9y9W18FbjyQ86a-RjhaWo_lsDAJfBuwqsKCTrFuynXZ7', + d: 'AYsgGu2kRxQwodqoGvbE1BiDROYxwBZ5jPMVnk_7p4uSOLTaoVeV8dKQ65glfZm66BbXxGtF1XyrjAMcX2eizP8i', + kty: 'EC' +} const ecPublicKey521 = `-----BEGIN PUBLIC KEY----- @@ -100,48 +134,57 @@ export default { secret: 'your-512-bit-secret' }, rs256: { - token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.POstGetfAytaZS82wHcjoTyoqhMyxXiWdR7Nn7A29DNSl0EiXLdwJ6xC6AfgZWF1bOsS_TuYI3OG85AmiExREkrS6tDfTQ2B3WXlrr-wp5AokiRbz3_oB4OxG-W9KcEEbDRcZc0nH3L7LzYptiy1PtAylQGxHTWZXtGz4ht0bAecBgmpdgXMguEIcoqPJ1n3pIWk_dUZegpqx0Lka21H6XxUTxiy8OcaarA8zdnPUnV6AmNP3ecFawIFYdvJB_cm-GvpCSbr8G8y_Mllj8f4x9nBH8pQux89_6gUY618iYv7tuPWBFfEbLxtF2pZS6YC1aSfLQxeNe8djT9YjpvRZA', + token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.NHVaYe26MbtOYhSKkoKYdFVomg4i8ZJd8_-RU8VNbftc4TSMb4bXP3l3YlNWACwyXPGffz5aXHc6lty1Y2t4SWRqGteragsVdZufDn5BlnJl9pdR_kdVFUsra2rWKEofkZeIC4yWytE58sMIihvo9H1ScmmVwBcQP6XETqYd0aSHp1gOa9RdUPDvoXQ5oqygTqVtxaDr6wUFKrKItgBMzWIdNZ6y7O9E0DhEPTbE9rfBo6KTFsHAZnMg4k68CDp2woYIaXbmYTWcvbzIuHO7_37GT79XdIwkm95QJ7hYC9RiwrV7mesbY4PAahERJawntho0my942XheVLmGwLMBkQ', privateKey: rsaPrivateKey, + jwk: rsaJwk, publicKey: rsaPublicKey }, rs384: { - token: 'eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.D4kXa3UspFjRA9ys5tsD4YDyxxam3l_XnOb3hMEdPDTfSLRHPv4HPwxvin-pIkEmfJshXPSK7O4zqSXWAXFO52X-upJjFc_gpGDswctNWpOJeXe1xBgJ--VuGDzUQCqkr9UBpN-Q7TE5u9cgIVisekSFSH5Ax6aXQC9vCO5LooNFx_WnbTLNZz7FUia9vyJ544kLB7UcacL-_idgRNIWPdd_d1vvnNGkknIMarRjCsjAEf6p5JGhYZ8_C18g-9DsfokfUfSpKgBR23R8v8ZAAmPPPiJ6MZXkefqE7p3jRbA--58z5TlHmH9nTB1DYE2872RYvyzG3LoQ-2s93VaVuw', + token: 'eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.o1hC1xYbJolSyh0-bOY230w22zEQSk5TiBfc-OCvtpI2JtYlW-23-8B48NpATozzMHn0j3rE0xVUldxShzy0xeJ7vYAccVXu2Gs9rnTVqouc-UZu_wJHkZiKBL67j8_61L6SXswzPAQu4kVDwAefGf5hyYBUM-80vYZwWPEpLI8K4yCBsF6I9N1yQaZAJmkMp_Iw371Menae4Mp4JusvBJS-s6LrmG2QbiZaFaxVJiW8KlUkWyUCns8-qFl5OMeYlgGFsyvvSHvXCzQrsEXqyCdS4tQJd73ayYA4SPtCb9clz76N1zE5WsV4Z0BYrxeb77oA7jJhh994RAPzCG0hmQ', privateKey: rsaPrivateKey, + jwk: rsaJwk, publicKey: rsaPublicKey }, rs512: { - token: 'eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.JlX3gXGyClTBFciHhknWrjo7SKqyJ5iBO0n-3S2_I7cIgfaZAeRDJ3SQEbaPxVC7X8aqGCOM-pQOjZPKUJN8DMFrlHTOdqMs0TwQ2PRBmVAxXTSOZOoEhD4ZNCHohYoyfoDhJDP4Qye_FCqu6POJzg0Jcun4d3KW04QTiGxv2PkYqmB7nHxYuJdnqE3704hIS56pc_8q6AW0WIT0W-nIvwzaSbtBU9RgaC7ZpBD2LiNE265UBIFraMDF8IAFw9itZSUCTKg1Q-q27NwwBZNGYStMdIBDor2Bsq5ge51EkWajzZ7ALisVp-bskzUsqUf77ejqX_CBAqkNdH1Zebn93A', + token: 'eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.jYW04zLDHfR1v7xdrW3lCGZrMIsVe0vWCfVkN2DRns2c3MN-mcp_-RE6TN9umSBYoNV-mnb31wFf8iun3fB6aDS6m_OXAiURVEKrPFNGlR38JSHUtsFzqTOj-wFrJZN4RwvZnNGSMvK3wzzUriZqmiNLsG8lktlEn6KA4kYVaM61_NpmPHWAjGExWv7cjHYupcjMSmR8uMTwN5UuAwgW6FRstCJEfoxwb0WKiyoaSlDuIiHZJ0cyGhhEmmAPiCwtPAwGeaL1yZMcp0p82cpTQ5Qb-7CtRov3N4DcOHgWYk6LomPR5j5cCkePAz87duqyzSMpCB0mCOuE3CU2VMtGeQ', privateKey: rsaPrivateKey, + jwk: rsaJwk, publicKey: rsaPublicKey }, es256: { token: 'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.tyh-VfuzIxCyGYDlkBA7DfyjrqmSHu6pQ2hoZuFqUSLPNY2N0mpHb3nk5K17HWP_3cYHBw7AhHale5wky6-sVA', privateKey: ecPrivateKey256, + jwk: ecJwk256, publicKey: ecPublicKey256 }, es384: { token: 'eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6ImlUcVhYSTB6YkFuSkNLRGFvYmZoa00xZi02ck1TcFRmeVpNUnBfMnRLSTgifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.cJOP_w-hBqnyTsBm3T6lOE5WpcHaAkLuQGAs1QO-lg2eWs8yyGW8p9WagGjxgvx7h9X72H7pXmXqej3GdlVbFmhuzj45A9SXDOAHZ7bJXwM1VidcPi7ZcrsMSCtP1hiN', privateKey: ecPrivateKey384, + jwk: ecJwk384, publicKey: ecPublicKey384 }, es512: { token: 'eyJhbGciOiJFUzUxMiIsInR5cCI6IkpXVCIsImtpZCI6InhaRGZacHJ5NFA5dlpQWnlHMmZOQlJqLTdMejVvbVZkbTd0SG9DZ1NOZlkifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.AP_CIMClixc5-BFflmjyh_bRrkloEvwzn8IaWJFfMz13X76PGWF0XFuhjJUjp7EYnSAgtjJ-7iJG4IP7w3zGTBk_AUdmvRCiWp5YAe8S_Hcs8e3gkeYoOxiXFZlSSAx0GfwW1cZ0r67mwGtso1I3VXGkSjH5J0Rk6809bn25GoGRjOPu', privateKey: ecPrivateKey521, + jwk: ecJwk521, publicKey: ecPublicKey521 }, ps256: { - token: 'eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.hZnl5amPk_I3tb4O-Otci_5XZdVWhPlFyVRvcqSwnDo_srcysDvhhKOD01DigPK1lJvTSTolyUgKGtpLqMfRDXQlekRsF4XhAjYZTmcynf-C-6wO5EI4wYewLNKFGGJzHAknMgotJFjDi_NCVSjHsW3a10nTao1lB82FRS305T226Q0VqNVJVWhE4G0JQvi2TssRtCxYTqzXVt22iDKkXeZJARZ1paXHGV5Kd1CljcZtkNZYIGcwnj65gvuCwohbkIxAnhZMJXCLaVvHqv9l-AAUV7esZvkQR1IpwBAiDQJh4qxPjFGylyXrHMqh5NlT_pWL2ZoULWTg_TJjMO9TuQ', + token: 'eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.iOeNU4dAFFeBwNj6qdhdvm-IvDQrTa6R22lQVJVuWJxorJfeQww5Nwsra0PjaOYhAMj9jNMO5YLmud8U7iQ5gJK2zYyepeSuXhfSi8yjFZfRiSkelqSkU19I-Ja8aQBDbqXf2SAWA8mHF8VS3F08rgEaLCyv98fLLH4vSvsJGf6ueZSLKDVXz24rZRXGWtYYk_OYYTVgR1cg0BLCsuCvqZvHleImJKiWmtS0-CymMO4MMjCy_FIl6I56NqLE9C87tUVpo1mT-kbg5cHDD8I7MjCW5Iii5dethB4Vid3mZ6emKjVYgXrtkOQ-JyGMh6fnQxEFN1ft33GX2eRHluK9eg', privateKey: rsaPrivateKey, + jwk: rsaJwk, publicKey: rsaPublicKey }, ps384: { - token: 'eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.MqF1AKsJkijKnfqEI3VA1OnzAL2S4eIpAuievMgD3tEFyFMU67gCbg-fxsc5dLrxNwdZEXs9h0kkicJZ70mp6p5vdv-j2ycDKBWg05Un4OhEl7lYcdIsCsB8QUPmstF-lQWnNqnq3wra1GynJrOXDL27qIaJnnQKlXuayFntBF0j-82jpuVdMaSXvk3OGaOM-7rCRsBcSPmocaAO-uWJEGPw_OWVaC5RRdWDroPi4YL4lTkDEC-KEvVkqCnFm_40C-T_siXquh5FVbpJjb3W2_YvcqfDRj44TsRrpVhk6ohsHMNeUad_cxnFnpolIKnaXq_COv35e9EgeQIPAbgIeg', + token: 'eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.Lfe_aCQme_gQpUk9-6l9qesu0QYZtfdzfy08w8uqqPH_gnw-IVyQwyGLBHPFBJHMbifdSMxPjJjkCD0laIclhnBhowILu6k66_5Y2z78GHg8YjKocAvB-wSUiBhuV6hXVxE5emSjhfVz2OwiCk2bfk2hziRpkdMvfcITkCx9dmxHU6qcEIsTTHuH020UcGayB1-IoimnjTdCsV1y4CMr_ECDjBrqMdnontkqKRIM1dtmgYFsJM6xm7ewi_ksG_qZHhaoBkxQ9wq9OVQRGiSZYowCp73d2BF3jYMhdmv2JiaUz5jRvv6lVU7Quq6ylVAlSPxeov9voYHO1mgZFCY1kQ', privateKey: rsaPrivateKey, + jwk: rsaJwk, publicKey: rsaPublicKey - }/*, + }, ps512: { - token: 'eyJhbGciOiJQUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.lLFQm3WUmHanSiQZBDcwEX9CH34ROOlPtgH3icJxaiesfvRHFDWHnG7GZQ6_-c6MU1h2LmP-mCpWM2evj7arIQCS63vp6K869CUZROhwCGZK1dfbOlYFAPg-AO4bBIKpS4NHkBIoo4O2LIbaIQT2gpBsYr4vMOX5UPCULWz8V8GlNKDv_2TYoHlttVm-2fpqQCt-ZEeCvaWEbWmk_dagewuxlhR7fXjdaSHo_6oQe6vic2sBu8RGv_NyQ97sB6X2jv1sXo0WIWihmPzDOpP0J4dmAIyCiGWQa8jXQfPN8JYbBD9j2w3xkKs7HCSl7VX3JfzxmSpTaOcVIGRnEt3kZA', + token: 'eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.W0vasx0Lxmn3hkfi3RjJSLDSZnZbqDRZy6fau8wvIm_sdtTCiSJAjMSO1eR8YbnUF_MD10JYwR5unI8JO_qB8uSrW5vg4OPCDuPSQQu0Pnf9Q2Cy3WqSK166lgidlwAqyijgPFp5ggOnJM20IY4F8W6HOqcGeXcRzsaM2DIBEnku32TM7Xb-aCJYdKtawEfvD1zEwE1of02BoGva3sf_RhijMZpOA3yIG3FCDll-3M1rILP9Bi4FPz_uOAbJkKvUirAdaMX-KNaw6T_0nnBwHaFc8M9GGVZV6bT4uaOQ1U0Ezi4SAcBWW8kkPKZNorpRC5EtO_X6uvIVazj5EHERuw', privateKey: rsaPrivateKey, + jwk: rsaJwk, publicKey: rsaPublicKey - }*/ + } }; diff --git a/src/editor/jwt.js b/src/editor/jwt.js index 22a0cc98..83f4bb15 100644 --- a/src/editor/jwt.js +++ b/src/editor/jwt.js @@ -1,74 +1,61 @@ -import jose from 'node-jose'; import b64u from 'base64url'; import any from 'promise.any'; -import { pki } from 'node-forge'; import strings from '../strings'; -strings import log from 'loglevel'; -import { findLastIndex } from 'lodash'; +import * as keyImport from 'jose/key/import' +import CompactSign from 'jose/jws/compact/sign' +import compactVerify from 'jose/jws/compact/verify' +import { pki } from 'node-forge'; -// node-jose does not support keys shorter than block size. This is a -// limitation from their implementation and could be resolved in the future. -// See: https://github.com/cisco/node-jose/blob/master/lib/jwk/octkey.js#L141 -function paddedKey(key, alg, base64Secret) { - const blockSizeBytes = alg.indexOf('256') !== -1 ? 512 / 8 : 1024 / 8; +function symmetricSecret(key, alg, base64Secret) { + let secret = base64Secret ? Buffer.from(key, 'base64') : Buffer.from(key); - let buf = base64Secret ? Buffer.from(key, 'base64') : Buffer.from(key); + const len = Math.max(parseInt(alg.substr(-3), 10) >> 3, secret.byteLength); - if (buf.length < blockSizeBytes) { - const oldBuf = buf; - buf = Buffer.alloc(blockSizeBytes); - buf.set(oldBuf); - } + const padded = new Uint8Array(len); + padded.set(secret); - return b64u.encode(buf); + return Promise.resolve(padded); } -/* - * This function handles plain RSA keys not wrapped in a - * X.509 SubjectPublicKeyInfo structure. It returns a PEM encoded public key - * wrapper in that structure. - * See: https://stackoverflow.com/questions/18039401/how-can-i-transform-between-the-two-styles-of-public-key-format-one-begin-rsa - * @param {String} publicKey The public key as a PEM string. - * @returns {String} The PEM encoded public key in - * X509 SubjectPublicKeyInfo format. - */ -function plainRsaKeyToX509Key(key) { - try { - const startTag = '-----BEGIN RSA PUBLIC KEY-----'; - const endTag = '-----END RSA PUBLIC KEY-----'; - const startTagPos = key.indexOf(startTag); - const endTagPos = key.indexOf(endTag); - - return startTagPos !== -1 && endTagPos !== -1 ? - pki.publicKeyToPem(pki.publicKeyFromPem(key)) : - key; - } catch (e) { - // If anything fails, it may not be a plain RSA key, so return the same key. - return key; - } -} +const types = { + 'PRIVATE': 1, + 'PUBLIC': 2, +}; + +const rawPublic = ({ alg, oth, d, p, q, dp, dq, qi, use, key_ops, ext, ...jwk }) => jwk; +const rawPrivate = ({ alg, use, key_ops, ext, ...jwk }) => jwk; -function getJoseKey(header, key, base64Secret) { +function getJoseKey(header, key, base64Secret, type) { if (header.alg.indexOf('HS') === 0) { - return jose.JWK.asKey({ - kty: 'oct', - use: 'sig', - alg: header.alg, - k: paddedKey(key, header.alg, base64Secret) - }); - } else { - if (header.alg.indexOf('RS') === 0) { - key = plainRsaKeyToX509Key(key); - } + return symmetricSecret(key, header.alg, base64Secret) + } - return any(['pem', 'json'].map(form => { - try { - return jose.JWK.asKey(key, form); - } catch (e) { - return Promise.reject(e); + switch (type) { + case types.PRIVATE: + if (key.startsWith('-----BEGIN RSA PRIVATE KEY-----')) { + key = pki.privateKeyInfoToPem(pki.wrapRsaPrivateKey(pki.privateKeyToAsn1(pki.privateKeyFromPem(key)))) + } + return any([ + keyImport.importPKCS8(key, header.alg), + Promise.resolve().then(() => JSON.parse(key)).then(rawPrivate).then((jwk) => { + if (!('d' in jwk)) throw new Error('not a private JWK') + return keyImport.importJWK(jwk, header.alg) + }) + ]) + case types.PUBLIC: + if (key.startsWith('-----BEGIN RSA PUBLIC KEY-----')) { + key = pki.publicKeyToPem(pki.publicKeyFromPem(key)) } - })); + return any([ + keyImport.importSPKI(key, header.alg), + keyImport.importX509(key, header.alg), + Promise.resolve().then(() => JSON.parse(key)).then(rawPublic).then((jwk) => { + return keyImport.importJWK(jwk, header.alg) + }) + ]) + default: + throw new Error('unreachable') } } @@ -80,19 +67,15 @@ export function sign(header, return Promise.reject(new Error('Missing "alg" claim in header')); } - return getJoseKey(header, secretOrPrivateKeyString, base64Secret).then( + return getJoseKey(header, secretOrPrivateKeyString, base64Secret, types.PRIVATE).then( key => { if (!(typeof payload === 'string' || payload instanceof String)) { payload = JSON.stringify(payload); } - return jose.JWS.createSign({ - fields: header, - format: 'compact' - }, { - key: key, - reference: false - }).update(payload, 'utf8').final(); + return new CompactSign(new TextEncoder().encode(payload)) + .setProtectedHeader(header) + .sign(key); } ); } @@ -108,17 +91,18 @@ export function verify(jwt, secretOrPublicKeyString, base64Secret = false) { return Promise.resolve({ validSignature: false }); } - return getJoseKey(decoded.header, secretOrPublicKeyString, base64Secret).then( + return getJoseKey(decoded.header, secretOrPublicKeyString, base64Secret, types.PUBLIC).then( key => { - return jose.JWS.createVerify(key) - .verify(jwt) + return compactVerify(jwt, key) .then(() => ({ validSignature: true, validBase64: jwt.split('.').reduce((valid, s) => valid = valid && isValidBase64String(s), true) - }), () => ({ validSignature: false })); + }), (e) => { + log.warn('Could not verify token: ', e); + return { validSignature: false } + }); }, e => { - log.warn('Could not verify token, ' + - 'probably due to bad data in it or the keys: ', e); + log.warn('Could not load the key(s): ', e); return { validSignature: false }; } ); @@ -206,4 +190,4 @@ export function isToken(jwt, checkTypClaim = false) { split.forEach(s => valid = valid && isValidBase64String(s, true)); return valid; -} \ No newline at end of file +} diff --git a/src/editor/public-key-download.js b/src/editor/public-key-download.js index 07b9209b..a43bd581 100644 --- a/src/editor/public-key-download.js +++ b/src/editor/public-key-download.js @@ -1,24 +1,15 @@ -import jose from 'node-jose'; +import { createRemoteJWKSet } from 'jose/jwks/remote' +import * as keyExport from 'jose/key/export' import { httpGet } from '../utils.js'; function getKeyFromX5c(x5c) { - if(!x5c) { - throw new Error('x5c claim not present?'); + if(!Array.isArray(x5c) || typeof x5c[0] !== 'string') { + throw new Error('x5c claim not present or invalid'); } - if(!(x5c instanceof Array)) { - x5c = [ x5c ]; - } - - let certChain = ''; - x5c.forEach(cert => { - certChain += '-----BEGIN CERTIFICATE-----\n'; - certChain += cert + '\n'; - certChain += '-----END CERTIFICATE-----\n'; - }); - - return certChain; + const newlined = (x5c[0].match(/.{1,64}/g) || []).join('\n') + return `-----BEGIN CERTIFICATE-----\n${newlined}\n-----END CERTIFICATE-----` } function getKeyFromX5Claims(claims) { @@ -33,36 +24,8 @@ function getKeyFromX5Claims(claims) { }); } -function getKeyFromJwkKeySetUrl(kid, url) { - return httpGet(url).then(data => { - data = JSON.parse(data); - - if(!data || !data.keys || !(data.keys instanceof Array)) { - throw new Error(`Could not get JWK key set from URL: ${url}`); - } - - for(let i = 0; i < data.keys.length; ++i) { - const jwk = data.keys[i]; - if(jwk.kid === kid) { - return getKeyFromX5Claims(jwk); - } - } - - throw new Error(`Could not find key with kid ${kid} in URL: ${url}`); - }); -} - -function supportedJwk({ kty, crv }) { - switch (kty) { - case 'RSA': - return true; - case 'EC': - return ['P-256', 'P-384', 'P-521'].includes(crv) - // node-jose does not support e.g. OKP keys or non-registered curves such as P-256K - // we also don't populate the HMAC secret - default: - return false; - } +function getKeyFromJwkKeySetUrl(header, url) { + return createRemoteJWKSet(new URL(url))(header, {}).then(keyExport.exportJWK).then((jwk) => JSON.stringify(jwk, null, 2)) } export function downloadPublicKeyIfPossible(decodedToken) { @@ -76,11 +39,11 @@ export function downloadPublicKeyIfPossible(decodedToken) { } if(header.x5c || header.x5u) { - resolve(getKeyFromX5Claims(header)); + getKeyFromX5Claims(header).then(resolve, reject); } else if(header.jku) { - resolve(getKeyFromJwkKeySetUrl(header.kid, header.jku)); + getKeyFromJwkKeySetUrl(header, header.jku).then(resolve, reject); } else if(header.jwk) { - resolve(getKeyFromX5Claims(header.jwk)); + resolve(JSON.stringify(header.jwk, null, 2)) } else if(payload.iss) { const url = payload.iss + (payload.iss.substr(-1) === '/' ? '.well-known/openid-configuration' : '/.well-known/openid-configuration') @@ -91,20 +54,7 @@ export function downloadPublicKeyIfPossible(decodedToken) { throw new Error(`Could not get jwks_uri from URL: ${url}`); } - return httpGet(data.jwks_uri) - }).then(data => { - const { keys } = JSON.parse(data); - - return jose.JWK.asKeyStore({ keys: keys.filter(supportedJwk) }); - }).then(jwks => { - - const keys = jwks.all({ alg: header.alg, kid: header.kid, use: 'sig' }) - - if (keys.length !== 1) { - throw new Error('Could not find a single definitive key in jwks_uri'); - } - - resolve(keys[0].toPEM()) + return getKeyFromJwkKeySetUrl(header, data.jwks_uri).then(resolve); }).catch(reject); } else { reject('No details about key'); diff --git a/src/editor/utils.js b/src/editor/utils.js index e944ac14..60121485 100644 --- a/src/editor/utils.js +++ b/src/editor/utils.js @@ -1,7 +1,5 @@ +import * as Bowser from 'bowser'; import { isWideScreen } from '../utils.js'; -import * as jwt from './jwt.js'; -import registeredClaims from './jwt-iana-registered-claims.js'; -import forge from 'node-forge'; import { algorithmSelect, algorithmEs512, @@ -9,7 +7,7 @@ import { decodedElement } from '../dom-elements.js'; -const sha256 = forge.md.sha256.create(); +const browser = Bowser.parse(window.navigator.userAgent); export function getTrimmedValue(instance) { const value = instance.getValue(); @@ -37,13 +35,13 @@ export function getSelectedAlgorithm() { return selected.value; } -export function isSafari() { - return /^((?!chrome|android).)*safari/i.test(navigator.userAgent); +export function isWebkit() { + return browser.engine.name === 'WebKit'; } export function disableUnsupportedAlgorithms() { // TODO: test supported algorithms in runtime - if(isSafari()) { + if(isWebkit()) { algorithmEs512.disabled = true; } } @@ -51,86 +49,3 @@ export function disableUnsupportedAlgorithms() { export function isString(value) { return typeof value === 'string' || value instanceof String; } - -function getRegisteredClaims(payload) { - const result = []; - - registeredClaims.forEach(claim => { - if(claim in payload) { - result.push(claim); - } - }); - - return result; -} - -function getScopes(payload) { - if(!isString(payload.scope)) { - return []; - } - - const scopes = payload.scope.split(/\s+/).filter(scope => { - return scope.length > 0 && /\S+/.test(scope); - }); - - return scopes; -} - -function getNumberOfScopes(payload) { - return getScopes(payload).length; -} - -function getOIDCScopes(payload) { - const oidcScopes = ['openid', 'profile', 'email', - 'address', 'phone', 'offline_access']; - const scopes = getScopes(payload); - - return scopes.filter(scope => oidcScopes.indexOf(scope) !== -1); -} - -export function getSafeTokenInfo(token) { - try { - sha256.start(); - sha256.update(token); - - const result = { - hash: sha256.digest().toHex() - }; - - try { - const decoded = jwt.decode(token); - - Object.assign(result, { - decodedWithErrors: decoded.errors, - encodedSize: token.length, - header: { - alg: decoded.header.alg, - }, - payload: { - registeredClaimsPresent: getRegisteredClaims(decoded.payload), - oidcScopesPresent: getOIDCScopes(decoded.payload), - numberOfScopes: getNumberOfScopes(decoded.payload), - numberOfClaims: Object.keys(decoded.payload).length, - issuer: decoded.payload.iss ? decoded.payload.iss : null - } - }); - - if(decoded.payload.amr) { - result.payload.amr = decoded.payload.amr; - } - - return result; - } catch(e) { - return Object.assign(result, { - error: 'error decoding token', - }); - } - } catch(e) { - sha256.start(); - - return { - error: 'error reading token', - hash: sha256.digest().toHex() // Hash for empty string - }; - } -} diff --git a/src/utils.js b/src/utils.js index e6f91ac2..85e8dd90 100644 --- a/src/utils.js +++ b/src/utils.js @@ -30,49 +30,6 @@ export function httpGet(url, cache = true) { }); } -/*export function isValidKey(key) { - // Four tries: no header, header for cert, header for pub key, - // header for priv key - - const headers = [{ - prologue: '', - epilogue: '' - },{ - prologue: '-----BEGIN CERTIFICATE-----\n', - epilogue: '-----END CERTIFICATE-----\n' - }, { - prologue: '-----BEGIN PUBLIC KEY-----\n', - epilogue: '-----END PUBLIC KEY-----\n' - }, { - prologue: '-----BEGIN PRIVATE KEY-----\n', - epilogue: '-----END PRIVATE KEY-----\n' - }, { - prologue: '-----BEGIN RSA PRIVATE KEY-----\n', - epilogue: '-----END RSA PRIVATE KEY-----\n' - }]; - - for(let i = 0; i < headers.length; ++i) { - const header = headers[i]; - try { - let newKey = header.prologue; - newKey += key + '\n'; - newKey += header.epilogue; - - return { - valid: !!KEYUTIL.getKey(newKey), - key: newKey - }; - } catch(e2) { - // Ignore - } - } - - return { - valid: false, - key: key - }; -}*/ - export function deferToNextLoop(func) { setTimeout(func, 1); } diff --git a/test/functional/editor.js b/test/functional/editor.js index 897dea2d..39c6f8ae 100644 --- a/test/functional/editor.js +++ b/test/functional/editor.js @@ -3,12 +3,12 @@ const chaiAsPromised = require('chai-as-promised'); const chaiArrays = require('chai-arrays'); const express = require('express'); -const jose = require('node-jose'); +const { importPKCS8 } = require('jose/key/import') +const { CompactSign } = require('jose/jws/compact/sign') const _ = require('lodash'); const utils = require('./utils.js'); -const tokens = require('./tokens.js'); const defaultTokens = require('esm')(module)('../../src/editor/default-tokens.js').default; const jwks = require('./jwks.json'); @@ -328,22 +328,18 @@ describe('Editor', function() { }); describe('HS256/384/512', function() { - const algs = Object.keys(tokens).filter(alg => alg.includes('hs')); + const algs = Object.keys(defaultTokens).filter(alg => alg.includes('hs')); for(const alg of algs) { it(`Decodes ${alg.toUpperCase()} tokens`, async function() { const secretInput = await this.page.$('input[name="secret"]'); await secretInput.click(); await selectAll.call(this); - await secretInput.type(tokens[alg].secret, { - delay: typingDelay - }); + await secretInput.type(defaultTokens[alg].secret); await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(tokens[alg].token, { - delay: typingDelay - }); + await this.page.keyboard.type(defaultTokens[alg].token); // Wait for token processing. await this.page.waitFor(tokenProcessingWait); @@ -355,12 +351,6 @@ describe('Editor', function() { }); expect(valid).to.be.true; - - const payload = await this.page.evaluate(() => { - return window.test.payloadEditor.getValue(); - }); - - expect(payload).to.include(alg + 'test'); }); const bits = parseInt(alg.substr(2)); @@ -425,153 +415,77 @@ describe('Editor', function() { describe('Public-key', function() { describe('Decodes RS/ES/PS tokens', function() { - const algs = Object.keys(defaultTokens) - .filter(alg => !alg.includes('hs')); + const algs = Object.keys(defaultTokens).filter(alg => !alg.includes('hs')); for(const alg of algs) { - it(alg.toUpperCase(), async function() { - await this.page.click('.js-input'); - await selectAll.call(this); - await this.page.keyboard.type(tokens[alg].token, { - delay: typingDelay - }); + for (const format of ['pem', 'jwk']) { + it(`${alg.toUpperCase()} using a ${format.toUpperCase()} key`, async function() { + await this.page.click('.js-input'); + await selectAll.call(this); + await this.page.keyboard.type(defaultTokens[alg].token); - const secretInput = await this.page.$('textarea[name="public-key"]'); - await secretInput.click(); - await selectAll.call(this); - await secretInput.type(tokens[alg].publicKey, { - delay: typingDelay - }); + const secretInput = await this.page.$('textarea[name="public-key"]'); + await secretInput.click(); + await selectAll.call(this); - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); - await this.page.waitFor(tokenEditorThrottleWait); + let publicKey = defaultTokens[alg].publicKey; + if (format === 'jwk') { + publicKey = JSON.stringify(defaultTokens[alg].jwk) + } - const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); + await secretInput.type(publicKey); - expect(valid).to.be.true; + // Wait for token processing. + await this.page.waitFor(tokenProcessingWait); + await this.page.waitFor(tokenEditorThrottleWait); - const payload = await this.page.evaluate(() => { - return window.test.payloadEditor.getValue(); - }); + const valid = await this.page.$eval('.validation-status', status => { + return status.classList.contains('valid-token') && + status.textContent.indexOf('verified') !== -1; + }); - expect(payload).to.include(alg + 'test'); - }); + expect(valid).to.be.true; + }); + } } }); describe('Encodes RS/ES/PS tokens', function() { - describe('RS/PS', async function() { - before(async function() { - await this.page.select('#algorithm-select', 'RS256'); - - await this.page.click('textarea[name="public-key"]'); - await selectAll.call(this); - await this.page.keyboard.type(defaultTokens['rs256'].publicKey, { - delay: typingDelay - }); - - await this.page.click('textarea[name="private-key"]'); - await selectAll.call(this); - await this.page.keyboard.type(defaultTokens['rs256'].privateKey, { - delay: typingDelay - }); - }); - - const algs = - Object.keys(defaultTokens) - .filter(alg => alg.includes('rs') || alg.includes('ps')); - - for(const alg of algs) { - it(alg.toUpperCase(), async function() { - //this.timeout(30000); - - await this.page.evaluate(token => { - window.test.tokenEditor.setValue(token); - }, defaultTokens[alg].token); + const algs = Object.keys(defaultTokens).filter(alg => !alg.includes('hs')); + for(const alg of algs) { + for (const format of ['pem', 'jwk']) { + it(`${alg.toUpperCase()} using a ${format.toUpperCase()} key`, async function() { await this.page.select('#algorithm-select', alg.toUpperCase()); - const oldToken = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue(); - }); + let publicKey = defaultTokens[alg].publicKey; + if (format === 'jwk') { + publicKey = JSON.stringify(defaultTokens[alg].jwk) + } - await this.page.click('.js-header'); + let privateKey = defaultTokens[alg].privateKey; + if (format === 'jwk') { + privateKey = JSON.stringify(defaultTokens[alg].jwk) + } + + await this.page.click('textarea[name="public-key"]'); await selectAll.call(this); - await this.page.keyboard.type(JSON.stringify({ - alg: alg.toUpperCase(), - typ: 'JWT' - }, null, 2), { + await this.page.keyboard.type(publicKey, { delay: typingDelay }); - await this.page.click('.js-payload'); + await this.page.click('textarea[name="private-key"]'); await selectAll.call(this); - await this.page.keyboard.type(JSON.stringify({ - sub: 'test' - }, null, 2), { + await this.page.keyboard.type(privateKey, { delay: typingDelay }); - // Wait for token processing. - await this.page.waitFor(tokenProcessingWait); - await this.page.waitFor(tokenEditorThrottleWait); - - const newToken = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue(); - }); - - expect(newToken).to.not.be.empty; - expect(newToken).to.not.equal(oldToken); - - const valid = await this.page.$eval('.validation-status', - status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); - - expect(valid).to.be.true; - }); - } - }); - - describe('ES', async function() { - before(async function() { - await this.page.select('#algorithm-select', 'ES256'); - - await this.page.click('textarea[name="public-key"]'); - await selectAll.call(this); - await this.page.keyboard.type(defaultTokens['es256'].publicKey, { - delay: typingDelay - }); - - await this.page.click('textarea[name="private-key"]'); - await selectAll.call(this); - await this.page.keyboard.type(defaultTokens['es256'].privateKey, { - delay: typingDelay - }); - }); - - const algs = Object.keys(defaultTokens) - .filter(alg => alg.includes('es')); - - for(const alg of algs) { - it(alg.toUpperCase(), async function() { - //this.timeout(30000); - await this.page.evaluate(token => { window.test.tokenEditor.setValue(token); }, defaultTokens[alg].token); await this.page.select('#algorithm-select', alg.toUpperCase()); - const oldToken = await this.page.evaluate(() => { - return window.test.tokenEditor.getValue(); - }); - await this.page.click('.js-header'); await selectAll.call(this); await this.page.keyboard.type(JSON.stringify({ @@ -598,18 +512,17 @@ describe('Editor', function() { }); expect(newToken).to.not.be.empty; - expect(newToken).to.not.equal(oldToken); const valid = await this.page.$eval('.validation-status', status => { return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; + status.textContent.indexOf('verified') !== -1; }); expect(valid).to.be.true; }); } - }); + } }); describe('Should download public-keys when possible', function() { @@ -645,26 +558,19 @@ describe('Editor', function() { }); it('iss URL + .well-known', async function() { - const key = await jose.JWK.asKey(defaultTokens.rs256.privateKey, 'pem'); - const token = await jose.JWS.createSign({ - fields: { - alg: 'RS256', - typ: 'JWT', - kid: '1' - }, - format: 'compact' - }, { - key: key - }).update(JSON.stringify({ + const key = await importPKCS8(defaultTokens.rs256.privateKey, 'RS256'); + const token = await new CompactSign(Buffer.from(JSON.stringify({ sub: 'test', iss: 'http://localhost:3000/' - }), 'utf8').final(); + }))).setProtectedHeader({ + alg: 'RS256', + typ: 'JWT', + kid: '1' + }).sign(key); await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(token, { - delay: typingDelay - }); + await this.page.keyboard.type(token); await this.page.waitFor(2000); await this.page.waitFor(tokenEditorThrottleWait); @@ -672,39 +578,25 @@ describe('Editor', function() { const publicKey = await this.page.$eval('textarea[name="public-key"]', publicKeyElement => publicKeyElement.value); - expect(publicKey).to.include(`-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnzyis1ZjfNB0bBgKFMSv\nvkTtwlvBsaJq7S5wA+kzeVOVpVWwkWdVha4s38XM/pa/yr47av7+z3VTmvDRyAHc\naT92whREFpLv9cj5lTeJSibyr/Mrm/YtjCZVWgaOYIhwrXwKLqPr/11inWsAkfIy\ntvHWTxZYEcXLgAXFuUuaS3uF9gEiNQwzGTU1v0FqkqTBr4B8nW3HCN47XUu0t8Y0\ne+lf4s4OxQawWD79J9/5d3Ry0vbV3Am1FtGJiJvOwRsIfVChDpYStTcHTCMqtvWb\nV6L11BWkpzGXSW4Hv43qa+GSYOD2QU68Mb59oSk2OB+BtOLpJofmbGEGgvmwyCI9\nMwIDAQAB\n-----END PUBLIC KEY-----`); - - const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); - - expect(valid).to.be.true; + expect(jwks.keys[0]).to.contain(JSON.parse(publicKey)) }); it('jku', async function() { //this.timeout(20000); - const key = await jose.JWK.asKey(defaultTokens.rs256.privateKey, 'pem'); - const token = await jose.JWS.createSign({ - fields: { - alg: 'RS256', - typ: 'JWT', - kid: '1', - jku: 'http://localhost:3000/.well-known/jwks.json' - }, - format: 'compact' - }, { - key: key - }).update(JSON.stringify({ + const key = await importPKCS8(defaultTokens.rs256.privateKey, 'RS256'); + const token = await new CompactSign(Buffer.from(JSON.stringify({ sub: 'test' - }), 'utf8').final(); + }))).setProtectedHeader({ + alg: 'RS256', + typ: 'JWT', + kid: '1', + jku: 'http://localhost:3000/.well-known/jwks.json' + }).sign(key); await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(token, { - delay: typingDelay - }); + await this.page.keyboard.type(token); await this.page.waitFor(2000); await this.page.waitFor(tokenEditorThrottleWait); @@ -712,52 +604,31 @@ describe('Editor', function() { const publicKey = await this.page.$eval('textarea[name="public-key"]', publicKeyElement => publicKeyElement.value); - expect(publicKey).to.include(jwks.keys[0].x5c[0]); - - const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); - - expect(valid).to.be.true; + expect(jwks.keys[0]).to.contain(JSON.parse(publicKey)) }); it('x5c', async function() { //this.timeout(35000); - const key = await jose.JWK.asKey(defaultTokens.rs256.privateKey, 'pem'); - const token = await jose.JWS.createSign({ - fields: { - alg: 'RS256', - typ: 'JWT', - x5c: jwks.keys[0].x5c[0] - }, - format: 'compact' - }, { - key: key - }).update(JSON.stringify({ - sub: 'test', - }), 'utf8').final(); + const key = await importPKCS8(defaultTokens.rs256.privateKey, 'RS256'); + const token = await new CompactSign(Buffer.from(JSON.stringify({ + sub: 'test' + }))).setProtectedHeader({ + alg: 'RS256', + typ: 'JWT', + x5c: jwks.keys[0].x5c + }).sign(key); await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(token, { - delay: typingDelay - }); + await this.page.keyboard.type(token); await this.page.waitFor(2000); const publicKey = await this.page.$eval('textarea[name="public-key"]', publicKeyElement => publicKeyElement.value); - expect(publicKey).to.include(jwks.keys[0].x5c[0]); - - const valid = await this.page.$eval('.validation-status', status => { - return status.classList.contains('valid-token') && - status.textContent.indexOf('verified') !== -1; - }); - - expect(valid).to.be.true; + expect(publicKey).to.include('-----BEGIN CERTIFICATE-----\nMIIDBjCCAe4CCQDOaPo3zzlhlzANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJV\nUzETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0\ncyBQdHkgTHRkMB4XDTE5MDYwNTEwMDg0OVoXDTIwMDYwNDEwMDg0OVowRTELMAkG\nA1UEBhMCVVMxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0\nIFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\nAJ88orNWY3zQdGwYChTEr75E7cJbwbGiau0ucAPpM3lTlaVVsJFnVYWuLN/FzP6W\nv8q+O2r+/s91U5rw0cgB3Gk/dsIURBaS7/XI+ZU3iUom8q/zK5v2LYwmVVoGjmCI\ncK18Ci6j6/9dYp1rAJHyMrbx1k8WWBHFy4AFxblLmkt7hfYBIjUMMxk1Nb9BapKk\nwa+AfJ1txwjeO11LtLfGNHvpX+LODsUGsFg+/Sff+Xd0ctL21dwJtRbRiYibzsEb\nCH1QoQ6WErU3B0wjKrb1m1ei9dQVpKcxl0luB7+N6mvhkmDg9kFOvDG+faEpNjgf\ngbTi6SaH5mxhBoL5sMgiPTMCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAU4Nx25sl\niX8gD10Oik+RpBpHmsuZBU6q3nqYQKMlVdKFVeuptdqNjnVZY0WSSYvAUdtZ1kCu\nkMxjhvPb+LVaCkfOfXEuSqyjN55C1vDLpCV0xMb3irltYaWRIeHkqlRxRmoS+569\nZ/qg+JqZnCuEc6CeLLkzhVq+zagJkJs3evpSmofrY4qzJ1s1rygqSUhyS5NoyGAX\nCHba+m+7qMuSC3yOEPfiuAh9h6D/RltGi1iQ9Yqi4DoKlW9mfKGXbDn8thkGNdc7\n6yffilC8B/7Q8d5Btox/fE9yNI4YVhUEo+MkvUMnT1KS9fbw0o6fTjSa0D2oaHSO\nyBSs097rzC1PIw==\n-----END CERTIFICATE-----'); }); }); @@ -828,16 +699,12 @@ describe('Editor', function() { await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(tokens['rs256'].token, { - delay: typingDelay - }); + await this.page.keyboard.type(defaultTokens['rs256'].token); const secretInput = await this.page.$('textarea[name="public-key"]'); await secretInput.click(); await selectAll.call(this); - await secretInput.type(tokens['rs256'].publicKey, { - delay: typingDelay - }); + await secretInput.type(defaultTokens['rs256'].publicKey); // Wait for token processing. await this.page.waitFor(tokenProcessingWait); @@ -873,16 +740,12 @@ describe('Editor', function() { await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(tokens['rs256'].token, { - delay: typingDelay - }); + await this.page.keyboard.type(defaultTokens['rs256'].token); const secretInput = await this.page.$('textarea[name="public-key"]'); await secretInput.click(); await selectAll.call(this); - await secretInput.type(tokens['rs256'].publicKey, { - delay: typingDelay - }); + await secretInput.type(defaultTokens['rs256'].publicKey); // Wait for token processing. await this.page.waitFor(tokenProcessingWait); @@ -960,9 +823,7 @@ describe('Editor', function() { const secretInput = await this.page.$('textarea[name="public-key"]'); await secretInput.click(); await selectAll.call(this); - await secretInput.type(tokens['rs256'].publicKey, { - delay: typingDelay - }); + await secretInput.type(defaultTokens['rs256'].publicKey); const privateKeyInput = await this.page.$('textarea[name="private-key"]'); await privateKeyInput.click(); @@ -971,9 +832,7 @@ describe('Editor', function() { await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(tokens['rs256'].token, { - delay: typingDelay - }); + await this.page.keyboard.type(defaultTokens['rs256'].token); await this.page.waitFor(1000); @@ -992,9 +851,7 @@ describe('Editor', function() { await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(tokens.hs256.token, { - delay: typingDelay - }); + await this.page.keyboard.type(defaultTokens.hs256.token); await this.page.select('#algorithm-select', 'HS384'); @@ -1010,9 +867,7 @@ describe('Editor', function() { await this.page.click('.js-input'); await selectAll.call(this); - await this.page.keyboard.type(tokens.none.token, { - delay: typingDelay - }); + await this.page.keyboard.type('eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.'); // Wait for token processing. await this.page.waitFor(tokenProcessingWait); diff --git a/test/functional/jwks.json b/test/functional/jwks.json index 8f57c7e7..89192924 100644 --- a/test/functional/jwks.json +++ b/test/functional/jwks.json @@ -10,7 +10,7 @@ "kid": "1", "x5t": "1", "e": "AQAB", - "n": "nzyis1ZjfNB0bBgKFMSvvkTtwlvBsaJq7S5wA-kzeVOVpVWwkWdVha4s38XM_pa_yr47av7-z3VTmvDRyAHcaT92whREFpLv9cj5lTeJSibyr_Mrm_YtjCZVWgaOYIhwrXwKLqPr_11inWsAkfIytvHWTxZYEcXLgAXFuUuaS3uF9gEiNQwzGTU1v0FqkqTBr4B8nW3HCN47XUu0t8Y0e-lf4s4OxQawWD79J9_5d3Ry0vbV3Am1FtGJiJvOwRsIfVChDpYStTcHTCMqtvWbV6L11BWkpzGXSW4Hv43qa-GSYOD2QU68Mb59oSk2OB-BtOLpJofmbGEGgvmwyCI9Mw" + "n": "u1SU1LfVLPHCozMxH2Mo4lgOEePzNm0tRgeLezV6ffAt0gunVTLw7onLRnrq0_IzW7yWR7QkrmBL7jTKEn5u-qKhbwKfBstIs-bMY2Zkp18gnTxKLxoS2tFczGkPLPgizskuemMghRniWaoLcyehkd3qqGElvW_VDL5AaWTg0nLVkjRo9z-40RQzuVaE8AkAFmxZzow3x-VJYKdjykkJ0iT9wCS0DRTXu269V264Vf_3jvredZiKRkgwlL9xNAwxXFg0x_XFw005UWVRIkdgcKWTjpBP2dPwVZ4WWC-9aGVd-Gyn1o0CLelf4rEjGoXbAAEgAqeGUxrcIlbjXfbcmw" } ] } diff --git a/test/functional/libraries.js b/test/functional/libraries.js index 7ca00ab4..2176c945 100644 --- a/test/functional/libraries.js +++ b/test/functional/libraries.js @@ -92,7 +92,8 @@ describe('Libraries', function() { })).to.be.true; }); - it('Has a data-repo attribute for star counts if repo ' + + // skipped since we're pulling these on the server now + it.skip('Has a data-repo attribute for star counts if repo ' + 'is in GitHub', async function() { const repos = await this.page.$$eval('.panel-wrap', bodies => { const result = []; diff --git a/test/functional/tokens.js b/test/functional/tokens.js deleted file mode 100644 index 56ea8df9..00000000 --- a/test/functional/tokens.js +++ /dev/null @@ -1,78 +0,0 @@ -const rsaPublicKey = -`-----BEGIN PUBLIC KEY----- -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd -UWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs -HUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D -o2kQ+X5xK9cipRgEKwIDAQAB ------END PUBLIC KEY-----`; - -const ecPublicKey256 = -`-----BEGIN PUBLIC KEY----- -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEVs/o5+uQbTjL3chynL4wXgUg2R9 -q9UU8I5mEovUf86QZ7kOBIjJwqnzD1omageEHWwHdBO6B+dFabmdT9POxg== ------END PUBLIC KEY-----`; - -const ecPublicKey384 = -`-----BEGIN PUBLIC KEY----- -MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEC1uWSXj2czCDwMTLWV5BFmwxdM6PX9p+ -Pk9Yf9rIf374m5XP1U8q79dBhLSIuaojsvOT39UUcPJROSD1FqYLued0rXiooIii -1D3jaW6pmGVJFhodzC31cy5sfOYotrzF ------END PUBLIC KEY-----`; - -const ecPublicKey521 = -`-----BEGIN PUBLIC KEY----- -MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQBgc4HZz+/fBbC7lmEww0AO3NK9wVZ -PDZ0VEnsaUFLEYpTzb90nITtJUcPUbvOsdZIZ1Q8fnbquAYgxXL5UgHMoywAib47 -6MkyyYgPk0BXZq3mq4zImTRNuaU9slj9TVJ3ScT3L1bXwVuPJDzpr5GOFpaj+WwM -Al8G7CqwoJOsW7Kddns= ------END PUBLIC KEY-----`; - -module.exports = { - none: { - token: 'eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.' - }, - hs512: { - token: 'eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImhzNTEydGVzdCJ9.RVBLQLIZqA6n8prLoVLsxsYb0nGg1-q4j-qUOwN7zjCC9RwS3HlOG2bNUB6cTKS7WBRHScVXnmwCoeHP0gVtDA', - secret: 'secret' - }, - hs384: { - token: 'eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImhzMzg0dGVzdCJ9.xD9kvywowrJYO9Lo-zwXvmydjc6DkGtJHUWAmTjL144xSqExhnhUgoTG_04Lu4Ma', - secret: 'secret' - }, - hs256: { - token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImhzMjU2dGVzdCJ9.mNZ_thfG9tYoIoV7TD_CQG6sQRAfGJqmBdEbU_uf4-0', - secret: 'secret' - }, - rs256: { - token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InJzMjU2dGVzdCJ9.qEQ_Gi7jYveN-sg-nRol_y0ULB0rtGIOGdOly0SkMFpc3HUxnj8addm-0UNdrJYLJv3CsFpXj_HnldvgDxpk0XAw8ArbeK-jCoxNFqUGBSITsLXQY5Chs8dh80C4vhKwxFqzo1FVxT2RlZIp_wN9dteKelGG-IVFNAhIlcHsSdw', - publicKey: rsaPublicKey - }, - rs384: { - token: 'eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InJzMzg0dGVzdCJ9.YdJv8eHUfsheBaH8Y2OprzO8ewP4-wfuyCtYjx-vm-KybqPhfKDxaq9QsjYqNWPn7rZVnc843FL0G-0rSl2YDQG5QM0uW44jl20C5-LouloaSQ0Mg88Wj8-0kt8R22bXBeBc1tNuIezlna80pCvxZrZnVkphLGKlWXOu7tSwUVc', - publicKey: rsaPublicKey - }, - rs512: { - token: 'eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InJzNTEydGVzdCJ9.x6PkeyOYFCdmxV-JfsHmeVXad41h3AoyldaQVDaWJbD9SLXnz_hkbQ6KcUJGIzkLnL5KWuRc1IAYfa1lxk3ijWS0p42YKLbqdX3tXBvuaAr7bV8KM-rb_6RqhLqGXjkVJ8jjpCy0uu4VS3Yg0xojbm8sY6Jf-YbggRpFpvF_CxU', - publicKey: rsaPublicKey - }, - es256: { - token: 'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImVzMjU2dGVzdCJ9.Ir41cyW-pc_pM2L0_cl0spnr8Y3GRUYKm7LfLhScI8SaPLfaQn9B7uES8OkYxu1YfudkYfgoFV_Bh1Qvu8lf7g', - publicKey: ecPublicKey256 - }, - es384: { - token: 'eyJhbGciOiJFUzM4NCIsInR5cCI6IkpXVCIsImtpZCI6ImlUcVhYSTB6YkFuSkNLRGFvYmZoa00xZi02ck1TcFRmeVpNUnBfMnRLSTgifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImVzMzg0dGVzdCJ9.YXzDoj68bFiJ-1gIOrqgSJUvyzh0y61uf6mqp4rWuhekhB1Ck1utbZ20Fg0fqokguEWG-9mj_iyEbiVDD9upf9SLU7M3_9PidGQ4YxbiMhXe3Q2iJyIcMHOqteqqobrt', - publicKey: ecPublicKey384 - }, - es512: { - token: 'eyJhbGciOiJFUzUxMiIsInR5cCI6IkpXVCIsImtpZCI6InhaRGZacHJ5NFA5dlpQWnlHMmZOQlJqLTdMejVvbVZkbTd0SG9DZ1NOZlkifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6ImVzNTEydGVzdCJ9.AF3NvldM10bAnAYvoy337HgVLAyJealQRYLCYD1FxayivcNinURScqM49bhUWKUg6svLxi03ENhpcsErqJt2x6QnAOkkepMOPU52r1mVYNz_kB0gxY8Xvl8_0d9CYn84NmNL11NrvZlzm03vL2oFZnWZx1L_4st7bm4jsDglnzkapkdh', - publicKey: ecPublicKey521 - }, - ps256: { - token: 'eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InBzMjU2dGVzdCJ9.jVQfrR2D8k3I5FsIBDW2zn1OINhemVA7T1izMSlYb-7MNlw4DrlcifJ0ilQwXHNw1rZI00OkGjeoJBNpArhEROCY8odXLosjvetRvfp0QPyH0mL5IehWcSsSAhJU0jL8FNQ44HBAUnTQ41llG6p1q7w7qIVcHnFmyqaXcFCP5B8', - publicKey: rsaPublicKey - }, - ps384: { - token: 'eyJhbGciOiJQUzM4NCIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMiwidGVzdCI6InBzMzg0dGVzdCJ9.yS13poMub8KhYAT3p_Sd7FBIH6DtKLf-aPaxlNnyWwWmYXJm75uxG1XJ6pwTNZ2Sw-nw_YyFALVpO3QyUPtK16ZkyyQ2CrJ6w0nfRL5Bi7uah8OKXZh5ykqK9hq_No83AAPK53O-NPkG5CSreaexHOpCPqdjruV7JWyHysGFA80', - publicKey: rsaPublicKey - } -}; diff --git a/test/functional/utils.js b/test/functional/utils.js index d975720b..0da4f836 100644 --- a/test/functional/utils.js +++ b/test/functional/utils.js @@ -18,7 +18,9 @@ async function launchBrowser() { // Initial navigation may take long due to outside requests. this.timeout(30000); - this.browser = await puppeteer.launch(); + this.browser = await puppeteer.launch({ + args: ['--disable-dev-shm-usage'] + }); this.page = await this.browser.newPage(); await this.page.setViewport({ width: 1920, diff --git a/test/unit/editor/jwt.js b/test/unit/editor/jwt.js index 5af6542e..45673040 100644 --- a/test/unit/editor/jwt.js +++ b/test/unit/editor/jwt.js @@ -5,21 +5,11 @@ import b64u from 'base64url'; import log from 'loglevel'; import chai from 'chai'; import chaiAsPromised from 'chai-as-promised'; -import { randomFillSync } from 'crypto'; +import { randomFillSync, generateKeyPair } from 'crypto'; chai.use(chaiAsPromised); chai.should(); -const publicKeyPlainRSA = -`-----BEGIN RSA PUBLIC KEY----- -MIIBCgKCAQEAnzyis1ZjfNB0bBgKFMSvvkTtwlvBsaJq7S5wA+kzeVOVpVWwkWdV -ha4s38XM/pa/yr47av7+z3VTmvDRyAHcaT92whREFpLv9cj5lTeJSibyr/Mrm/Yt -jCZVWgaOYIhwrXwKLqPr/11inWsAkfIytvHWTxZYEcXLgAXFuUuaS3uF9gEiNQwz -GTU1v0FqkqTBr4B8nW3HCN47XUu0t8Y0e+lf4s4OxQawWD79J9/5d3Ry0vbV3Am1 -FtGJiJvOwRsIfVChDpYStTcHTCMqtvWbV6L11BWkpzGXSW4Hv43qa+GSYOD2QU68 -Mb59oSk2OB+BtOLpJofmbGEGgvmwyCI9MwIDAQAB ------END RSA PUBLIC KEY-----`; - describe('JWT', function() { it('detects tokens', function() { jwt.isToken('skdjf9238ujdhkf.asdfasdf2.sdsdffsfsd').should.be.false; @@ -45,20 +35,6 @@ describe('JWT', function() { return jwt.verify(token, tokens.hs256.secret).should.eventually.include({validSignature: false}); }); - describe('verifies valid tokens', function() { - Object.keys(tokens).forEach(alg => { - it(alg.toUpperCase(), function() { - if(alg.indexOf('hs') !== -1) { - return jwt.verify(tokens[alg].token, tokens[alg].secret) - .should.eventually.include({validSignature: true}); - } else { - return jwt.verify(tokens[alg].token, tokens[alg].publicKey) - .should.eventually.be.include({validSignature: true}); - } - }); - }); - }); - it('fails to verify invalid tokens ' + '(logging temporarily disabled to hide exceptions)', function() { log.disableAll(); @@ -99,98 +75,68 @@ describe('JWT', function() { .should.eventually.be.true; }); - it('signs/verifies tokens (HS256)', function() { - const header = { - alg: 'HS256' - }; - const payload = { - sub: 'test' - }; - - return jwt.sign(header, payload, 'secret').then(token => { - token.should.be.a('string'); - - const split = token.split('.'); - split.should.have.lengthOf(3); - - const decoded = jwt.decode(token); - decoded.header.should.deep.equal(header); - decoded.payload.should.deep.equal(payload); - - return jwt.verify(token, 'secret').should.eventually.include({validSignature: true}); - }); - }); - - it('signs/verifies tokens (RS256)', function() { - const header = { - alg: 'RS256' - }; - const payload = { - sub: 'test' - }; - - return jwt.sign(header, payload, tokens.rs256.privateKey).then(token => { - token.should.be.a('string'); - - const split = token.split('.'); - split.should.have.lengthOf(3); - - const decoded = jwt.decode(token); - decoded.header.should.deep.equal(header); - decoded.payload.should.deep.equal(payload); + for (const [alg, vector] of Object.entries(tokens)) { + let { privateKey, publicKey, jwk } = vector; + if (vector.secret) { + privateKey = publicKey = vector.secret; + } - return jwt.verify(token, tokens.rs256.publicKey) - .should.eventually.include({validSignature: true}); + it(`signs/verifies ${alg.toUpperCase()}`, function () { + const header = { alg: alg.toUpperCase(), iat: Date.now() }; + const payload = { sub: 'test' }; + + // test the default token + return jwt.verify(vector.token, publicKey).should.eventually.include({validSignature: true}) + .then(() => { + // test signing + return jwt.sign(header, payload, privateKey).then(token => { + token.should.be.a('string'); + + const split = token.split('.'); + split.should.have.lengthOf(3); + + const decoded = jwt.decode(token); + decoded.header.should.deep.equal(header); + decoded.payload.should.deep.equal(payload); + + // test verifying just signed token + return jwt.verify(token, publicKey) + .should.eventually.include({validSignature: true}); + }); + }); }); - }); - it('signs/verifies tokens (ES256)', function() { - const header = { - alg: 'ES256' - }; - const payload = { - sub: 'test' - }; + if (jwk) { + it(`signs/verifies ${alg.toUpperCase()} with a JWK`, function () { + const header = { alg: alg.toUpperCase(), iat: Date.now() }; + const payload = { sub: 'test' }; - return jwt.sign(header, payload, tokens.es256.privateKey).then(token => { - token.should.be.a('string'); + const jsonJWK = JSON.stringify(jwk, null, 4) - const split = token.split('.'); - split.should.have.lengthOf(3); + // test the default token + return jwt.verify(vector.token, jsonJWK).should.eventually.include({validSignature: true}) + .then(() => { + // test signing + return jwt.sign(header, payload, jsonJWK).then(token => { + token.should.be.a('string'); - const decoded = jwt.decode(token); - decoded.header.should.deep.equal(header); - decoded.payload.should.deep.equal(payload); + const split = token.split('.'); + split.should.have.lengthOf(3); - return jwt.verify(token, tokens.es256.publicKey) - .should.eventually.include({validSignature: true}); - }); - }); + const decoded = jwt.decode(token); + decoded.header.should.deep.equal(header); + decoded.payload.should.deep.equal(payload); - it('signs/verifies tokens (PS256)', function() { - const header = { - alg: 'PS256' - }; - const payload = { - sub: 'test' - }; - - return jwt.sign(header, payload, tokens.ps256.privateKey).then(token => { - token.should.be.a('string'); - - const split = token.split('.'); - split.should.have.lengthOf(3); - - const decoded = jwt.decode(token); - decoded.header.should.deep.equal(header); - decoded.payload.should.deep.equal(payload); - - return jwt.verify(token, tokens.ps256.publicKey) - .should.eventually.include({validSignature: true}); - }); - }); + // test verifying just signed token + return jwt.verify(token, jsonJWK) + .should.eventually.include({validSignature: true}); + }); + }); + }); + } + } - it('verifies tokens (RS256) using a plain RSA public key', function() { + it('signs and verifies tokens using a PKCS1 RSA keys', function() { const header = { alg: 'RS256' }; @@ -198,8 +144,19 @@ describe('JWT', function() { sub: 'test' }; - return jwt.sign(header, payload, tokens.rs256.privateKey).then(token => { - return jwt.verify(token, publicKeyPlainRSA).should.eventually.include({validSignature: true}); + return new Promise((resolve, reject) => { + generateKeyPair('rsa', { + modulusLength: 2048, + privateKeyEncoding: { format: 'pem', type: 'pkcs1' }, + publicKeyEncoding: { format: 'pem', type: 'pkcs1' }, + }, (err, publicKey, privateKey) => { + if (err) return reject(err); + return resolve({ publicKey, privateKey }); + }) + }).then(({ privateKey, publicKey }) => { + return jwt.sign(header, payload, privateKey).then((token) => { + return jwt.verify(token, publicKey).should.eventually.include({validSignature: true}); + }); }); }); diff --git a/test/unit/editor/public-key-download.js b/test/unit/editor/public-key-download.js index 8ee23556..43148382 100644 --- a/test/unit/editor/public-key-download.js +++ b/test/unit/editor/public-key-download.js @@ -3,6 +3,7 @@ import chaiAsPromised from 'chai-as-promised'; import _ from 'lodash'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; +import nock from 'nock'; import publicKeyDownloadInjector from 'inject-loader!../../../src/editor/public-key-download.js'; @@ -12,7 +13,20 @@ chai.use(sinonChai); chai.should(); describe('Public key downloader', function() { - const baseUrl = '/'; + before(() => { + nock.disableNetConnect(); + }) + + after(() => { + nock.enableNetConnect(); + }) + + afterEach(() => { + nock.isDone().should.be.true; + nock.cleanAll(); + }); + + const baseUrl = 'http://local.dev/'; const decodedBaseToken = { header: { @@ -34,11 +48,7 @@ describe('Public key downloader', function() { }] }; - const keyAsPEM = `-----BEGIN PUBLIC KEY-----\r\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1GPz+Er5h7PCk4v3pSln\r\naLYNYrp4sVc6Tx7FVz9d8m4zIS2qzcTM/6dRbMgZ4hBdD35NpYzU4z+d8lN27+J/\r\njOzHnCiMdkY+w52dCofAkICh6ftkFlG9bFQyH8Jz5UtpVkZyy1dxCRz/sbRAzUdj\r\nUYsGvrKXg+3UYCL5SBCnt0ycrvr3iKX9k8IlMrFRB8lBJ6eQVzkzGsuivPaThXjV\r\nZ/OpY7W+XsDjut7cFgPKIc843tW4CNaDJ6j3afm+RFOok//xLQH5uA7HXS/yqfEc\r\nhvzXfYfMxJY2d+Eqw4xTurm3TT07RnwJuN9slDJUrTH9EKkJkjZ7dn7fZtGjGTpa\r\nDQIDAQAB\r\n-----END PUBLIC KEY-----\r\n`; - - function httpGetMock(data) { - return (url) => data ? Promise.resolve(data) : Promise.reject(); - } + const keyAsJWK = JSON.stringify({ kty: jwks.keys[0].kty, n: jwks.keys[0].n, e: jwks.keys[0].e }, null, 2) it('Finds keys in iss + .well-known URL', function(done) { const decodedToken = _.defaultsDeep({}, decodedBaseToken, { @@ -51,8 +61,11 @@ describe('Public key downloader', function() { }); const httpGetStub = sinon.stub() - .onCall(0).resolves(JSON.stringify({ jwks_uri: '/.well-known/jwks.json' })) - .onCall(1).resolves(JSON.stringify(jwks)); + .onCall(0).resolves(JSON.stringify({ jwks_uri: baseUrl + '.well-known/jwks.json' })) + + nock(baseUrl) + .get('/.well-known/jwks.json') + .reply(200, jwks) const downloadPublicKeyIfPossible = publicKeyDownloadInjector({ '../utils.js': { @@ -61,12 +74,10 @@ describe('Public key downloader', function() { }).downloadPublicKeyIfPossible; downloadPublicKeyIfPossible(decodedToken) - .should.eventually.include(keyAsPEM) + .should.eventually.include(keyAsJWK) .then(() => { httpGetStub.should.have.been .calledWith(baseUrl + '.well-known/openid-configuration'); - httpGetStub.should.have.been - .calledWith(baseUrl + '.well-known/jwks.json'); }).should.notify(done); }); @@ -86,7 +97,7 @@ describe('Public key downloader', function() { }).downloadPublicKeyIfPossible; downloadPublicKeyIfPossible(decodedToken) - .should.eventually.include(jwks.keys[0].x5c[0]) + .should.eventually.include(JSON.stringify(jwks.keys[0], null, 2)) .then(() => { httpGetStub.should.have.callCount(0); }).should.notify(done); @@ -100,7 +111,11 @@ describe('Public key downloader', function() { } }); - const httpGetStub = sinon.stub().resolves(JSON.stringify(jwks)); + nock(baseUrl) + .get('/') + .reply(200, jwks) + + const httpGetStub = sinon.stub().rejects('Should not be called'); const downloadPublicKeyIfPossible = publicKeyDownloadInjector({ '../utils.js': { httpGet: httpGetStub @@ -108,10 +123,11 @@ describe('Public key downloader', function() { }).downloadPublicKeyIfPossible; downloadPublicKeyIfPossible(decodedToken) - .should.eventually.include(jwks.keys[0].x5c[0]) + .should.eventually.include(keyAsJWK) .then(() => { - httpGetStub.should.have.been.calledWith(baseUrl); - }).should.notify(done); + httpGetStub.should.have.callCount(0); + }) + .should.notify(done); }); it('Finds keys in x5u header claim', function(done) { @@ -121,7 +137,7 @@ describe('Public key downloader', function() { } }); - const httpGetStub = sinon.stub().resolves(jwks.keys[0].x5c[0]); + const httpGetStub = sinon.stub().resolves(jwks.keys[0].x5c); const downloadPublicKeyIfPossible = publicKeyDownloadInjector({ '../utils.js': { httpGet: httpGetStub @@ -129,33 +145,12 @@ describe('Public key downloader', function() { }).downloadPublicKeyIfPossible; downloadPublicKeyIfPossible(decodedToken) - .should.eventually.include(jwks.keys[0].x5c[0]) + .should.eventually.include(jwks.keys[0].x5c) .then(() => { httpGetStub.should.have.been.calledWith(baseUrl); }).should.notify(done); }); - it('Finds keys in x5c string header claim', function(done) { - const decodedToken = _.defaultsDeep({}, decodedBaseToken, { - header: { - x5c: jwks.keys[0].x5c[0] - } - }); - - const httpGetStub = sinon.stub().rejects('Should not be called'); - const downloadPublicKeyIfPossible = publicKeyDownloadInjector({ - '../utils.js': { - httpGet: httpGetStub - } - }).downloadPublicKeyIfPossible; - - downloadPublicKeyIfPossible(decodedToken) - .should.eventually.include(jwks.keys[0].x5c[0]) - .then(() => { - httpGetStub.should.have.callCount(0); - }).should.notify(done); - }); - it('Finds keys in x5c array header claim', function(done) { const decodedToken = _.defaultsDeep({}, decodedBaseToken, { header: { @@ -171,7 +166,7 @@ describe('Public key downloader', function() { }).downloadPublicKeyIfPossible; downloadPublicKeyIfPossible(decodedToken) - .should.eventually.include(jwks.keys[0].x5c[0]) + .should.eventually.include(jwks.keys[0].x5c) .then(() => { httpGetStub.should.have.callCount(0); }).should.notify(done); @@ -181,7 +176,7 @@ describe('Public key downloader', function() { const decodedToken = _.defaultsDeep({}, decodedBaseToken, { header: { kid: '1', - jku: baseUrl + x5u: baseUrl } }); @@ -208,62 +203,33 @@ describe('Public key downloader', function() { } }); - let httpGetStub; + const httpGetStub = sinon.stub().rejects('Should not be called'); const downloadPublicKeyIfPossible = publicKeyDownloadInjector({ '../utils.js': { - httpGet: url => httpGetStub(url) + httpGet: httpGetStub } }).downloadPublicKeyIfPossible; it('when the keys object is not an array', function(done) { - httpGetStub = sinon.stub().resolves({ - keys: {} - }); - downloadPublicKeyIfPossible(decodedToken) - .should.be.rejected - .then(() => { - httpGetStub.should.have.been.calledWith(baseUrl); - }).should.notify(done); - }); - it('when the keys object does not exist', function(done) { - httpGetStub = sinon.stub().resolves({ - }); + nock(baseUrl) + .get('/') + .reply(200, { keys: {} }) downloadPublicKeyIfPossible(decodedToken) .should.be.rejected - .then(() => { - httpGetStub.should.have.been.calledWith(baseUrl); - }).should.notify(done); + .should.notify(done); }); - it('when there is no kid', function(done) { - httpGetStub = sinon.stub().resolves({ - keys: [{ - x5c: jwks.keys[0].x5c - }] - }); - - downloadPublicKeyIfPossible(decodedToken) - .should.be.rejected - .then(() => { - httpGetStub.should.have.been.calledWith(baseUrl); - }).should.notify(done); - }); - - it('when there are no x5u or x5c claims', function(done) { - httpGetStub = sinon.stub().resolves({ - keys: [{ - kid: '1' - }] - }); + it('when the keys object does not exist', function(done) { + nock(baseUrl) + .get('/') + .reply(200, {}) downloadPublicKeyIfPossible(decodedToken) .should.be.rejected - .then(() => { - httpGetStub.should.have.been.calledWith(baseUrl); - }).should.notify(done); + .should.notify(done); }); }); }); diff --git a/test/unit/utils.js b/test/unit/utils.js index 3b850c64..3d5c7e36 100644 --- a/test/unit/utils.js +++ b/test/unit/utils.js @@ -4,8 +4,6 @@ import xhrMock from 'xhr-mock'; import { httpGet } from '../../src/utils.js'; -import { randomFillSync } from 'crypto'; - chai.use(chaiAsPromised); chai.should(); diff --git a/views/token-editor-algorithms.pug b/views/token-editor-algorithms.pug index 20ebb164..886c5172 100644 --- a/views/token-editor-algorithms.pug +++ b/views/token-editor-algorithms.pug @@ -10,6 +10,4 @@ select#algorithm-select option(name='algorithm',value='ES512') ES512 option(name='algorithm',value='PS256') PS256 option(name='algorithm',value='PS384') PS384 - //- Buggy in node-jose for now, supported by browsers - option(name='algorithm',value='PS512') PS512 - + option(name='algorithm',value='PS512') PS512 diff --git a/views/token-editor-common.pug b/views/token-editor-common.pug index 991402f1..d1959cf9 100644 --- a/views/token-editor-common.pug +++ b/views/token-editor-common.pug @@ -35,6 +35,6 @@ RSASHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), - , - + , + ) diff --git a/views/website/layout.pug b/views/website/layout.pug index cdb529b2..72e926b6 100644 --- a/views/website/layout.pug +++ b/views/website/layout.pug @@ -73,7 +73,8 @@ html(lang='en') script. !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs'); - div - div(id="consent_blackbar") - div(id="teconsent" style="position: absolute; bottom: -100px;") - script(async="async" src="//consent.trustarc.com/notice?domain=auth0banner.com&c=teconsent&js=nj¬iceType=bb&text=true" crossOrigin) + if process.env.NODE_ENV === "production" + div + div(id="consent_blackbar") + div(id="teconsent" style="position: absolute; bottom: -100px;") + script(async="async" src="//consent.trustarc.com/notice?domain=auth0banner.com&c=teconsent&js=nj¬iceType=bb&text=true" crossOrigin) diff --git a/webpack.common.js b/webpack.common.js index 34aef2cb..f837d22b 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -33,4 +33,14 @@ module.exports = { jQuery: "jquery", }), ], -}; \ No newline at end of file + resolve: { + alias: { + 'jose/key/import': 'jose/dist/browser/key/import', + 'jose/key/export': 'jose/dist/browser/key/export', + 'jose/jws/compact/sign': 'jose/dist/browser/jws/compact/sign', + 'jose/jws/compact/verify': 'jose/dist/browser/jws/compact/verify', + 'jose/jwks/remote': 'jose/dist/browser/jwks/remote', + 'jose/jwk/embedded': 'jose/dist/browser/jwk/embedded', + } + } +}; diff --git a/webpack.website-unit-tests.js b/webpack.website-unit-tests.js index 91ac6e30..55d54796 100644 --- a/webpack.website-unit-tests.js +++ b/webpack.website-unit-tests.js @@ -41,5 +41,15 @@ module.exports = merge(common, { } } }] + }, + resolve: { + alias: { + 'jose/key/import': 'jose/dist/node/cjs/key/import', + 'jose/key/export': 'jose/dist/node/cjs/key/export', + 'jose/jws/compact/sign': 'jose/dist/node/cjs/jws/compact/sign', + 'jose/jws/compact/verify': 'jose/dist/node/cjs/jws/compact/verify', + 'jose/jwks/remote': 'jose/dist/node/cjs/jwks/remote', + 'jose/jwk/embedded': 'jose/dist/node/cjs/jwk/embedded', + } } });