@okta/configuration-validation
Advanced tools
Comparing version 0.4.3 to 1.0.0
250
dist/lib.js
@@ -1,9 +0,2 @@ | ||
'use strict'; | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } | ||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } | ||
"use strict"; | ||
/*! | ||
@@ -20,24 +13,30 @@ * Copyright (c) 2018-Present, Okta, Inc. and/or its affiliates. All rights reserved. | ||
*/ | ||
var merge = require('lodash/merge'); | ||
var ConfigurationValidationError = function (_Error) { | ||
_inherits(ConfigurationValidationError, _Error); | ||
function ConfigurationValidationError() { | ||
_classCallCheck(this, ConfigurationValidationError); | ||
return _possibleConstructorReturn(this, (ConfigurationValidationError.__proto__ || Object.getPrototypeOf(ConfigurationValidationError)).apply(this, arguments)); | ||
} | ||
return ConfigurationValidationError; | ||
}(Error); | ||
var configUtil = module.exports; | ||
var __extends = (this && this.__extends) || (function () { | ||
var extendStatics = function (d, b) { | ||
extendStatics = Object.setPrototypeOf || | ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; | ||
return extendStatics(d, b); | ||
}; | ||
return function (d, b) { | ||
extendStatics(d, b); | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
})(); | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.assertAppBaseUrl = exports.assertRedirectUri = exports.assertClientSecret = exports.assertClientId = exports.assertIssuer = exports.buildConfigObject = void 0; | ||
var lodash_1 = require("lodash"); | ||
var ConfigurationValidationError = /** @class */ (function (_super) { | ||
__extends(ConfigurationValidationError, _super); | ||
function ConfigurationValidationError() { | ||
return _super !== null && _super.apply(this, arguments) || this; | ||
} | ||
return ConfigurationValidationError; | ||
}(Error)); | ||
var findDomainURL = 'https://bit.ly/finding-okta-domain'; | ||
var findAppCredentialsURL = 'https://bit.ly/finding-okta-app-credentials'; | ||
var copyCredentialsMessage = 'You can copy it from the Okta Developer Console ' + 'in the details for the Application you created. ' + ('Follow these instructions to find it: ' + findAppCredentialsURL); | ||
var copyCredentialsMessage = 'You can copy it from the Okta Developer Console ' + | ||
'in the details for the Application you created. ' + | ||
("Follow these instructions to find it: " + findAppCredentialsURL); | ||
var isHttps = new RegExp('^https://'); | ||
@@ -47,105 +46,104 @@ var hasProtocol = new RegExp('://'); | ||
var endsInPath = new RegExp('/$'); | ||
configUtil.buildConfigObject = function (config) { | ||
// See all supported options: https://github.com/okta/okta-auth-js#configuration-reference | ||
// Support for parameters with an underscore will be deprecated in a future release | ||
// camelCase was added 2/11/2019: https://github.com/okta/okta-oidc-js/commit/9b04ada6a01c9d9aca391abf0de3e5ecc9811e64 | ||
config = config || {}; // accept empty | ||
// Legacy support: allow a property named 'scope' to be either an array or a string. | ||
var scopes = config.scopes; | ||
if (!scopes && config.scope) { | ||
if (Array.isArray(config.scope)) { | ||
scopes = config.scope; | ||
} else { | ||
scopes = config.scope.split(/\s+/); | ||
exports.buildConfigObject = function (config) { | ||
// See all supported options: https://github.com/okta/okta-auth-js#configuration-reference | ||
// Support for parameters with an underscore will be deprecated in a future release | ||
// camelCase was added 2/11/2019: https://github.com/okta/okta-oidc-js/commit/9b04ada6a01c9d9aca391abf0de3e5ecc9811e64 | ||
config = config || {}; // accept empty | ||
// Legacy support: allow a property named 'scope' to be either an array or a string. | ||
var scopes = config.scopes; | ||
if (!scopes && config.scope) { | ||
if (Array.isArray(config.scope)) { | ||
scopes = config.scope; | ||
} | ||
else { | ||
scopes = config.scope.split(/\s+/); | ||
} | ||
} | ||
} | ||
// Legacy support: allow TokenManager config 'autoRenew' and 'storage' to be defined at top-level | ||
var tokenManager = config.tokenManager; | ||
var autoRenew = config.autoRenew !== undefined ? config.autoRenew : config.auto_renew; // Only check legacy property if necessary | ||
var storage = config.storage; | ||
if (storage !== undefined || autoRenew !== undefined) { | ||
// Properties already defined within the "tokenManager" section will not be overwritten | ||
tokenManager = merge({ | ||
autoRenew: autoRenew, | ||
storage: storage | ||
}, tokenManager || {}); | ||
} | ||
// Legacy support: allow 'responseType' to be a string or an array | ||
var responseType = config.responseType || config.response_type; | ||
if (typeof responseType === 'string' && responseType.indexOf(' ') >= 0) { | ||
responseType = responseType.split(/\s+/); | ||
} | ||
var normalizedConfig = merge({}, config, { | ||
clientId: config.clientId || config.client_id, | ||
redirectUri: config.redirectUri || config.redirect_uri, | ||
responseType: responseType, | ||
scopes: scopes, | ||
tokenManager: tokenManager | ||
}); | ||
return normalizedConfig; | ||
// Legacy support: allow TokenManager config 'autoRenew' and 'storage' to be defined at top-level | ||
var tokenManager = config.tokenManager; | ||
var autoRenew = (config.autoRenew !== undefined ? config.autoRenew : config.auto_renew); // Only check legacy property if necessary | ||
var storage = config.storage; | ||
if (storage !== undefined || autoRenew !== undefined) { | ||
// Properties already defined within the "tokenManager" section will not be overwritten | ||
tokenManager = lodash_1.merge({ | ||
autoRenew: autoRenew, | ||
storage: storage, | ||
}, tokenManager || {}); | ||
} | ||
// Legacy support: allow 'responseType' to be a string or an array | ||
var responseType = config.responseType || config.response_type; | ||
if (typeof responseType === 'string' && responseType.indexOf(' ') >= 0) { | ||
responseType = responseType.split(/\s+/); | ||
} | ||
var normalizedConfig = lodash_1.merge({}, config, { | ||
clientId: config.clientId || config.client_id, | ||
redirectUri: config.redirectUri || config.redirect_uri, | ||
responseType: responseType, | ||
scopes: scopes, | ||
tokenManager: tokenManager, | ||
}); | ||
return normalizedConfig; | ||
}; | ||
configUtil.assertIssuer = function (issuer) { | ||
var testing = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
var copyMessage = 'You can copy your domain from the Okta Developer ' + 'Console. Follow these instructions to find it: ' + findDomainURL; | ||
if (testing.disableHttpsCheck) { | ||
var httpsWarning = 'Warning: HTTPS check is disabled. ' + 'This allows for insecure configurations and is NOT recommended for production use.'; | ||
/* eslint-disable-next-line no-console */ | ||
console.warn(httpsWarning); | ||
} | ||
if (!issuer) { | ||
throw new ConfigurationValidationError('Your Okta URL is missing. ' + copyMessage); | ||
} else if (!testing.disableHttpsCheck && !issuer.match(isHttps)) { | ||
throw new ConfigurationValidationError('Your Okta URL must start with https. ' + ('Current value: ' + issuer + '. ' + copyMessage)); | ||
} else if (issuer.match(/{yourOktaDomain}/)) { | ||
throw new ConfigurationValidationError('Replace {yourOktaDomain} with your Okta domain. ' + copyMessage); | ||
} else if (issuer.match(hasDomainAdmin)) { | ||
throw new ConfigurationValidationError('Your Okta domain should not contain -admin. ' + ('Current value: ' + issuer + '. ' + copyMessage)); | ||
} | ||
exports.assertIssuer = function (issuer, testing) { | ||
if (testing === void 0) { testing = {}; } | ||
var copyMessage = 'You can copy your domain from the Okta Developer ' + | ||
'Console. Follow these instructions to find it: ' + findDomainURL; | ||
if (testing.disableHttpsCheck) { | ||
var httpsWarning = 'Warning: HTTPS check is disabled. ' + | ||
'This allows for insecure configurations and is NOT recommended for production use.'; | ||
/* eslint-disable-next-line no-console */ | ||
console.warn(httpsWarning); | ||
} | ||
if (!issuer) { | ||
throw new ConfigurationValidationError('Your Okta URL is missing. ' + copyMessage); | ||
} | ||
else if (!testing.disableHttpsCheck && !issuer.match(isHttps)) { | ||
throw new ConfigurationValidationError('Your Okta URL must start with https. ' + | ||
("Current value: " + issuer + ". " + copyMessage)); | ||
} | ||
else if (issuer.match(/{yourOktaDomain}/)) { | ||
throw new ConfigurationValidationError('Replace {yourOktaDomain} with your Okta domain. ' + copyMessage); | ||
} | ||
else if (issuer.match(hasDomainAdmin)) { | ||
throw new ConfigurationValidationError('Your Okta domain should not contain -admin. ' + | ||
("Current value: " + issuer + ". " + copyMessage)); | ||
} | ||
}; | ||
configUtil.assertClientId = function (clientId) { | ||
if (!clientId) { | ||
throw new ConfigurationValidationError('Your client ID is missing. ' + copyCredentialsMessage); | ||
} else if (clientId.match(/{clientId}/)) { | ||
throw new ConfigurationValidationError('Replace {clientId} with the client ID of your Application. ' + copyCredentialsMessage); | ||
} | ||
exports.assertClientId = function (clientId) { | ||
if (!clientId) { | ||
throw new ConfigurationValidationError('Your client ID is missing. ' + copyCredentialsMessage); | ||
} | ||
else if (clientId.match(/{clientId}/)) { | ||
throw new ConfigurationValidationError('Replace {clientId} with the client ID of your Application. ' + copyCredentialsMessage); | ||
} | ||
}; | ||
configUtil.assertClientSecret = function (clientSecret) { | ||
if (!clientSecret) { | ||
throw new ConfigurationValidationError('Your client secret is missing. ' + copyCredentialsMessage); | ||
} else if (clientSecret.match(/{clientSecret}/)) { | ||
throw new ConfigurationValidationError('Replace {clientSecret} with the client secret of your Application. ' + copyCredentialsMessage); | ||
} | ||
exports.assertClientSecret = function (clientSecret) { | ||
if (!clientSecret) { | ||
throw new ConfigurationValidationError('Your client secret is missing. ' + copyCredentialsMessage); | ||
} | ||
else if (clientSecret.match(/{clientSecret}/)) { | ||
throw new ConfigurationValidationError('Replace {clientSecret} with the client secret of your Application. ' + copyCredentialsMessage); | ||
} | ||
}; | ||
configUtil.assertRedirectUri = function (redirectUri) { | ||
if (!redirectUri) { | ||
throw new ConfigurationValidationError('Your redirect URI is missing.'); | ||
} else if (redirectUri.match(/{redirectUri}/)) { | ||
throw new ConfigurationValidationError('Replace {redirectUri} with the redirect URI of your Application.'); | ||
} | ||
exports.assertRedirectUri = function (redirectUri) { | ||
if (!redirectUri) { | ||
throw new ConfigurationValidationError('Your redirect URI is missing.'); | ||
} | ||
else if (redirectUri.match(/{redirectUri}/)) { | ||
throw new ConfigurationValidationError('Replace {redirectUri} with the redirect URI of your Application.'); | ||
} | ||
}; | ||
configUtil.assertAppBaseUrl = function (appBaseUrl) { | ||
if (!appBaseUrl) { | ||
throw new ConfigurationValidationError('Your appBaseUrl is missing.'); | ||
} else if (appBaseUrl.match(/{appBaseUrl}/)) { | ||
throw new ConfigurationValidationError('Replace {appBaseUrl} with the base URL of your Application.'); | ||
} else if (!appBaseUrl.match(hasProtocol)) { | ||
throw new ConfigurationValidationError('Your appBaseUrl must contain a protocol (e.g. https://). Current value: ' + appBaseUrl + '.'); | ||
} else if (appBaseUrl.match(endsInPath)) { | ||
throw new ConfigurationValidationError('Your appBaseUrl must not end in a \'/\'. Current value: ' + appBaseUrl + '.'); | ||
} | ||
}; | ||
exports.assertAppBaseUrl = function (appBaseUrl) { | ||
if (!appBaseUrl) { | ||
throw new ConfigurationValidationError('Your appBaseUrl is missing.'); | ||
} | ||
else if (appBaseUrl.match(/{appBaseUrl}/)) { | ||
throw new ConfigurationValidationError('Replace {appBaseUrl} with the base URL of your Application.'); | ||
} | ||
else if (!appBaseUrl.match(hasProtocol)) { | ||
throw new ConfigurationValidationError("Your appBaseUrl must contain a protocol (e.g. https://). Current value: " + appBaseUrl + "."); | ||
} | ||
else if (appBaseUrl.match(endsInPath)) { | ||
throw new ConfigurationValidationError("Your appBaseUrl must not end in a '/'. Current value: " + appBaseUrl + "."); | ||
} | ||
}; |
{ | ||
"name": "@okta/configuration-validation", | ||
"version": "0.4.3", | ||
"version": "1.0.0", | ||
"description": "Configuration validation support for Okta JavaScript SDKs", | ||
"main": "./dist/lib.js", | ||
"types": "./dist/lib.d.ts", | ||
"files": [ | ||
@@ -11,4 +12,5 @@ "dist", | ||
"scripts": { | ||
"build": "babel src -d dist", | ||
"lint": "eslint .", | ||
"clean": "rimraf dist", | ||
"build": "tsc", | ||
"lint": "eslint . && tsc -p test", | ||
"prepare": "yarn build", | ||
@@ -36,19 +38,41 @@ "test": "yarn lint && yarn test:unit", | ||
"devDependencies": { | ||
"babel-cli": "^6.26.0", | ||
"babel-eslint": "^8.1.1", | ||
"babel-preset-env": "^1.7.0", | ||
"@babel/core": "^7.8.0", | ||
"@babel/plugin-transform-typescript": "^7.11.0", | ||
"@babel/preset-env": "^7.8.2", | ||
"@babel/preset-typescript": "^7.10.4", | ||
"@types/jest": "^25.2.3", | ||
"@types/json-schema": "^7.0.5", | ||
"@types/minimatch": "^3.0.3", | ||
"@types/node": "^14.6.1", | ||
"@typescript-eslint/eslint-plugin": "^2.34.0", | ||
"@typescript-eslint/parser": "^2.34.0", | ||
"babel-jest": "^26.3.0", | ||
"deep-extend": "^0.6.0", | ||
"eslint": "^4.7.1", | ||
"jest": "^23.6.0" | ||
"eslint": "^7.7.0", | ||
"eslint-plugin-jest": "^23.20.0", | ||
"jest": "^26.4.2", | ||
"rimraf": "^3.0.2", | ||
"typescript": "^4.0.2" | ||
}, | ||
"jest": { | ||
"testEnvironment": "jsdom" | ||
"moduleNameMapper": { | ||
"^@okta/configuration-validation$": "<rootDir>/src/lib" | ||
}, | ||
"restoreMocks": true, | ||
"testEnvironment": "jsdom", | ||
"testMatch": [ | ||
"**/test/*.{js,ts}" | ||
], | ||
"roots": [ | ||
"test" | ||
] | ||
}, | ||
"dependencies": { | ||
"@okta/okta-auth-js": "^4.0.0", | ||
"lodash": "^4.17.15" | ||
}, | ||
"okta": { | ||
"commitSha": "5266f3bcd9d4285b9dc057e6706810c69466b607", | ||
"fullVersion": "0.4.3-beta.g5266f3b-20200702142818-5266f3b" | ||
"commitSha": "1244b68146ab43e0dbc089daa0f1a7c5bbbb7182", | ||
"fullVersion": "1.0.0-beta.g1244b68-20200831192228-1244b68" | ||
} | ||
} |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
31116
7
315
0
2
17
1
+ Added@okta/okta-auth-js@^4.0.0
+ Added@ampproject/remapping@2.3.0(transitive)
+ Added@babel/code-frame@7.26.2(transitive)
+ Added@babel/compat-data@7.26.5(transitive)
+ Added@babel/core@7.26.7(transitive)
+ Added@babel/generator@7.26.5(transitive)
+ Added@babel/helper-compilation-targets@7.26.5(transitive)
+ Added@babel/helper-module-imports@7.25.9(transitive)
+ Added@babel/helper-module-transforms@7.26.0(transitive)
+ Added@babel/helper-string-parser@7.25.9(transitive)
+ Added@babel/helper-validator-identifier@7.25.9(transitive)
+ Added@babel/helper-validator-option@7.25.9(transitive)
+ Added@babel/helpers@7.26.7(transitive)
+ Added@babel/parser@7.26.7(transitive)
+ Added@babel/runtime@7.26.7(transitive)
+ Added@babel/template@7.25.9(transitive)
+ Added@babel/traverse@7.26.7(transitive)
+ Added@babel/types@7.26.7(transitive)
+ Added@istanbuljs/schema@0.1.3(transitive)
+ Added@jridgewell/gen-mapping@0.3.8(transitive)
+ Added@jridgewell/resolve-uri@3.1.2(transitive)
+ Added@jridgewell/set-array@1.2.1(transitive)
+ Added@jridgewell/sourcemap-codec@1.5.0(transitive)
+ Added@jridgewell/trace-mapping@0.3.25(transitive)
+ Added@nodelib/fs.scandir@2.1.5(transitive)
+ Added@nodelib/fs.stat@2.0.5(transitive)
+ Added@nodelib/fs.walk@1.2.8(transitive)
+ Added@okta/okta-auth-js@4.9.2(transitive)
+ Added@sindresorhus/is@0.14.0(transitive)
+ Added@szmarczak/http-timer@1.1.2(transitive)
+ Added@types/eslint@7.29.0(transitive)
+ Added@types/estree@1.0.6(transitive)
+ Added@types/json-schema@7.0.15(transitive)
+ Added@types/minimist@1.2.5(transitive)
+ Added@types/normalize-package-data@2.4.4(transitive)
+ AddedBase64@1.1.0(transitive)
+ Addedansi-align@3.0.1(transitive)
+ Addedansi-escapes@4.3.2(transitive)
+ Addedansi-regex@5.0.1(transitive)
+ Addedansi-styles@4.3.0(transitive)
+ Addedarray-union@2.1.0(transitive)
+ Addedarrify@1.0.1(transitive)
+ Addedbalanced-match@1.0.2(transitive)
+ Addedboxen@4.2.0(transitive)
+ Addedbrace-expansion@1.1.11(transitive)
+ Addedbraces@3.0.3(transitive)
+ Addedbrowserslist@4.24.4(transitive)
+ Addedcacheable-request@6.1.0(transitive)
+ Addedcamelcase@5.3.1(transitive)
+ Addedcamelcase-keys@6.2.2(transitive)
+ Addedcaniuse-lite@1.0.30001696(transitive)
+ Addedchalk@3.0.04.1.2(transitive)
+ Addedci-info@2.0.0(transitive)
+ Addedcli-boxes@2.2.1(transitive)
+ Addedclone@2.1.2(transitive)
+ Addedclone-response@1.0.3(transitive)
+ Addedcolor-convert@2.0.1(transitive)
+ Addedcolor-name@1.1.4(transitive)
+ Addedconcat-map@0.0.1(transitive)
+ Addedconfigstore@5.0.1(transitive)
+ Addedconvert-source-map@2.0.0(transitive)
+ Addedcore-js@3.40.0(transitive)
+ Addedcross-fetch@3.2.0(transitive)
+ Addedcrypto-random-string@2.0.0(transitive)
+ Addeddebug@4.4.0(transitive)
+ Addeddecamelize@1.2.0(transitive)
+ Addeddecamelize-keys@1.1.1(transitive)
+ Addeddecompress-response@3.3.0(transitive)
+ Addeddeep-extend@0.6.0(transitive)
+ Addeddefer-to-connect@1.1.3(transitive)
+ Addeddir-glob@3.0.1(transitive)
+ Addeddot-prop@5.3.0(transitive)
+ Addedduplexer3@0.1.5(transitive)
+ Addedelectron-to-chromium@1.5.90(transitive)
+ Addedemoji-regex@8.0.0(transitive)
+ Addedend-of-stream@1.4.4(transitive)
+ Addederror-ex@1.3.2(transitive)
+ Addedescalade@3.2.0(transitive)
+ Addedescape-goat@2.1.1(transitive)
+ Addedeslint-formatter-pretty@4.1.0(transitive)
+ Addedeslint-rule-docs@1.1.235(transitive)
+ Addedfast-glob@3.3.3(transitive)
+ Addedfastq@1.19.0(transitive)
+ Addedfill-range@7.1.1(transitive)
+ Addedfind-up@4.1.0(transitive)
+ Addedfunction-bind@1.1.2(transitive)
+ Addedgensync@1.0.0-beta.2(transitive)
+ Addedget-stream@4.1.05.2.0(transitive)
+ Addedglob-parent@5.1.2(transitive)
+ Addedglobal-dirs@2.1.0(transitive)
+ Addedglobals@11.12.0(transitive)
+ Addedglobby@11.1.0(transitive)
+ Addedgot@9.6.0(transitive)
+ Addedgraceful-fs@4.2.11(transitive)
+ Addedhard-rejection@2.1.0(transitive)
+ Addedhas-flag@4.0.0(transitive)
+ Addedhas-yarn@2.1.0(transitive)
+ Addedhasown@2.0.2(transitive)
+ Addedhosted-git-info@2.8.9(transitive)
+ Addedhtml-escaper@2.0.2(transitive)
+ Addedhttp-cache-semantics@4.1.1(transitive)
+ Addedignore@5.3.2(transitive)
+ Addedimport-lazy@2.1.0(transitive)
+ Addedimurmurhash@0.1.4(transitive)
+ Addedindent-string@4.0.0(transitive)
+ Addedini@1.3.7(transitive)
+ Addedirregular-plurals@3.5.0(transitive)
+ Addedis-arrayish@0.2.1(transitive)
+ Addedis-ci@2.0.0(transitive)
+ Addedis-core-module@2.16.1(transitive)
+ Addedis-extglob@2.1.1(transitive)
+ Addedis-fullwidth-code-point@3.0.0(transitive)
+ Addedis-glob@4.0.3(transitive)
+ Addedis-installed-globally@0.3.2(transitive)
+ Addedis-npm@4.0.0(transitive)
+ Addedis-number@7.0.0(transitive)
+ Addedis-obj@2.0.0(transitive)
+ Addedis-path-inside@3.0.3(transitive)
+ Addedis-plain-obj@1.1.0(transitive)
+ Addedis-typedarray@1.0.0(transitive)
+ Addedis-unicode-supported@0.1.0(transitive)
+ Addedis-yarn-global@0.3.0(transitive)
+ Addedistanbul-lib-coverage@3.2.2(transitive)
+ Addedistanbul-lib-instrument@5.2.1(transitive)
+ Addedistanbul-lib-report@3.0.1(transitive)
+ Addedistanbul-lib-source-maps@4.0.1(transitive)
+ Addedistanbul-reports@3.1.7(transitive)
+ Addedjs-cookie@2.2.1(transitive)
+ Addedjs-tokens@4.0.0(transitive)
+ Addedjsesc@3.1.0(transitive)
+ Addedjson-buffer@3.0.0(transitive)
+ Addedjson-parse-even-better-errors@2.3.1(transitive)
+ Addedjson5@2.2.3(transitive)
+ Addedkarma-coverage@2.2.1(transitive)
+ Addedkeyv@3.1.0(transitive)
+ Addedkind-of@6.0.3(transitive)
+ Addedlatest-version@5.1.0(transitive)
+ Addedlines-and-columns@1.2.4(transitive)
+ Addedlocate-path@5.0.0(transitive)
+ Addedlog-symbols@4.1.0(transitive)
+ Addedlowercase-keys@1.0.12.0.0(transitive)
+ Addedlru-cache@5.1.1(transitive)
+ Addedmake-dir@3.1.04.0.0(transitive)
+ Addedmap-obj@1.0.14.3.0(transitive)
+ Addedmeow@7.1.1(transitive)
+ Addedmerge2@1.4.1(transitive)
+ Addedmicromatch@4.0.8(transitive)
+ Addedmimic-response@1.0.1(transitive)
+ Addedmin-indent@1.0.1(transitive)
+ Addedminimatch@3.1.2(transitive)
+ Addedminimist@1.2.8(transitive)
+ Addedminimist-options@4.1.0(transitive)
+ Addedms@2.1.3(transitive)
+ Addednode-cache@5.1.2(transitive)
+ Addednode-fetch@2.7.0(transitive)
+ Addednode-releases@2.0.19(transitive)
+ Addednormalize-package-data@2.5.0(transitive)
+ Addednormalize-url@4.5.1(transitive)
+ Addedonce@1.4.0(transitive)
+ Addedp-cancelable@1.1.02.1.1(transitive)
+ Addedp-limit@2.3.0(transitive)
+ Addedp-locate@4.1.0(transitive)
+ Addedp-try@2.2.0(transitive)
+ Addedpackage-json@6.5.0(transitive)
+ Addedparse-json@5.2.0(transitive)
+ Addedpath-exists@4.0.0(transitive)
+ Addedpath-parse@1.0.7(transitive)
+ Addedpath-type@4.0.0(transitive)
+ Addedpicocolors@1.1.1(transitive)
+ Addedpicomatch@2.3.1(transitive)
+ Addedplur@4.0.0(transitive)
+ Addedprepend-http@2.0.0(transitive)
+ Addedpump@3.0.2(transitive)
+ Addedpupa@2.1.1(transitive)
+ Addedqueue-microtask@1.2.3(transitive)
+ Addedquick-lru@4.0.1(transitive)
+ Addedrc@1.2.8(transitive)
+ Addedread-pkg@5.2.0(transitive)
+ Addedread-pkg-up@7.0.1(transitive)
+ Addedredent@3.0.0(transitive)
+ Addedregenerator-runtime@0.14.1(transitive)
+ Addedregistry-auth-token@4.2.2(transitive)
+ Addedregistry-url@5.1.0(transitive)
+ Addedresolve@1.22.10(transitive)
+ Addedresponselike@1.0.2(transitive)
+ Addedreusify@1.0.4(transitive)
+ Addedrun-parallel@1.2.0(transitive)
+ Addedsemver@5.7.26.3.17.7.0(transitive)
+ Addedsemver-diff@3.1.1(transitive)
+ Addedsignal-exit@3.0.7(transitive)
+ Addedslash@3.0.0(transitive)
+ Addedsource-map@0.6.1(transitive)
+ Addedspdx-correct@3.2.0(transitive)
+ Addedspdx-exceptions@2.5.0(transitive)
+ Addedspdx-expression-parse@3.0.1(transitive)
+ Addedspdx-license-ids@3.0.21(transitive)
+ Addedstring-width@4.2.3(transitive)
+ Addedstrip-ansi@6.0.1(transitive)
+ Addedstrip-indent@3.0.0(transitive)
+ Addedstrip-json-comments@2.0.1(transitive)
+ Addedsupports-color@7.2.0(transitive)
+ Addedsupports-hyperlinks@2.3.0(transitive)
+ Addedsupports-preserve-symlinks-flag@1.0.0(transitive)
+ Addedterm-size@2.2.1(transitive)
+ Addedtext-encoding@0.7.0(transitive)
+ Addedtiny-emitter@1.1.0(transitive)
+ Addedto-readable-stream@1.0.0(transitive)
+ Addedto-regex-range@5.0.1(transitive)
+ Addedtr46@0.0.3(transitive)
+ Addedtrim-newlines@3.0.1(transitive)
+ Addedtsd@0.14.0(transitive)
+ Addedtype-fest@0.13.10.21.30.6.00.8.1(transitive)
+ Addedtypedarray-to-buffer@3.1.5(transitive)
+ Addedunique-string@2.0.0(transitive)
+ Addedupdate-browserslist-db@1.1.2(transitive)
+ Addedupdate-notifier@4.1.3(transitive)
+ Addedurl-parse-lax@3.0.0(transitive)
+ Addedvalidate-npm-package-license@3.0.4(transitive)
+ Addedwebcrypto-shim@0.1.7(transitive)
+ Addedwebidl-conversions@3.0.1(transitive)
+ Addedwhatwg-url@5.0.0(transitive)
+ Addedwidest-line@3.1.0(transitive)
+ Addedwrappy@1.0.2(transitive)
+ Addedwrite-file-atomic@3.0.3(transitive)
+ Addedxdg-basedir@4.0.0(transitive)
+ Addedxhr2@0.1.3(transitive)
+ Addedyallist@3.1.1(transitive)
+ Addedyargs-parser@18.1.3(transitive)