From c0109038507d9c671e9c2fc3ebfc16535c82d7a6 Mon Sep 17 00:00:00 2001 From: Ramon Brullo Date: Mon, 16 Oct 2023 12:06:11 +0200 Subject: [PATCH 001/201] fix: eslint-prettier error When attempting to fix eslint rules in file, the following error appeared ```Error: "prettier/vue" has been merged into "prettier" in eslint-config-prettier 8.0.0. See: https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md#version-800-2021-02-21``` Reading the linked changelog, it seemed the fix was to simply only use the prettier/recommended extension. Simplified eslintrc to reflect this. --- .eslintrc.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index fe83a0f9..be58536d 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -5,8 +5,6 @@ module.exports = { }, extends: [ "eslint:recommended", - "plugin:vue/recommended", - "prettier/vue", "plugin:prettier/recommended" ], rules: { From df4e12221dff18a936b81b035d5b3c616ddadc37 Mon Sep 17 00:00:00 2001 From: Ramon Brullo Date: Mon, 16 Oct 2023 15:43:58 +0200 Subject: [PATCH 002/201] deps: install typescript --- package-lock.json | 53 ++++++++++++++++++++- package.json | 4 +- tsconfig.json | 118 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 173 insertions(+), 2 deletions(-) create mode 100644 tsconfig.json diff --git a/package-lock.json b/package-lock.json index 6ba5e9ed..8e0a9d41 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,6 +36,7 @@ "@babel/eslint-parser": "^7.17.0", "@semantic-release/changelog": "^6.0.1", "@semantic-release/git": "^10.0.1", + "@types/node": "^20.8.6", "cross-env": "^7.0.3", "eslint": "^8.15.0", "eslint-config-prettier": "^8.5.0", @@ -46,7 +47,8 @@ "prettier": "^2.6.2", "semantic-release": "^19.0.2", "should": "^13.2.3", - "test-console": "^2.0.0" + "test-console": "^2.0.0", + "typescript": "^5.2.2" }, "engines": { "node": ">=14.18" @@ -1028,6 +1030,15 @@ "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, + "node_modules/@types/node": { + "version": "20.8.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.6.tgz", + "integrity": "sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.25.1" + } + }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", @@ -9241,6 +9252,19 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/uglify-js": { "version": "3.15.5", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.5.tgz", @@ -9254,6 +9278,12 @@ "node": ">=0.8.0" } }, + "node_modules/undici-types": { + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", + "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", + "dev": true + }, "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -10510,6 +10540,15 @@ "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, + "@types/node": { + "version": "20.8.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.6.tgz", + "integrity": "sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==", + "dev": true, + "requires": { + "undici-types": "~5.25.1" + } + }, "@types/normalize-package-data": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", @@ -16551,6 +16590,12 @@ "is-typedarray": "^1.0.0" } }, + "typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true + }, "uglify-js": { "version": "3.15.5", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.5.tgz", @@ -16558,6 +16603,12 @@ "dev": true, "optional": true }, + "undici-types": { + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", + "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", + "dev": true + }, "unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", diff --git a/package.json b/package.json index 3e97c7dd..4399afa0 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "@babel/eslint-parser": "^7.17.0", "@semantic-release/changelog": "^6.0.1", "@semantic-release/git": "^10.0.1", + "@types/node": "^20.8.6", "cross-env": "^7.0.3", "eslint": "^8.15.0", "eslint-config-prettier": "^8.5.0", @@ -45,7 +46,8 @@ "prettier": "^2.6.2", "semantic-release": "^19.0.3", "should": "^13.2.3", - "test-console": "^2.0.0" + "test-console": "^2.0.0", + "typescript": "^5.2.2" }, "dependencies": { "@iarna/toml": "^2.2.5", diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..17b19bf6 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,118 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", + /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", + /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + "outDir": "./build", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, + /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, + /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, + /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true + /* Skip type checking all .d.ts files. */ + }, + "include": [ + "./lib/**/*" + ] +} From 9f49b38c31e14bf92ac8e56dbb5013f79ab08d4f Mon Sep 17 00:00:00 2001 From: Ramon Brullo Date: Mon, 16 Oct 2023 17:35:55 +0200 Subject: [PATCH 003/201] misc: ignore builds --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index c94b3753..eff3a566 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,7 @@ typings/ # next.js build output .next .vscode/settings.json + +# builds + +/build \ No newline at end of file From b981987235fb4aaaecef835990f3d1bd3fd817f8 Mon Sep 17 00:00:00 2001 From: Ramon Brullo Date: Mon, 16 Oct 2023 17:36:12 +0200 Subject: [PATCH 004/201] feat: convert to typescript --- bin/openupm | 2 +- bin/openupm-cn | 2 +- lib/{cli.js => cli.ts} | 51 +-- lib/{client.js => client.ts} | 14 +- lib/{cmd-add.js => cmd-add.ts} | 67 ++-- lib/{cmd-deps.js => cmd-deps.ts} | 34 +- lib/{cmd-login.js => cmd-login.ts} | 119 +++++-- lib/{cmd-remove.js => cmd-remove.ts} | 30 +- lib/{cmd-search.js => cmd-search.ts} | 83 +++-- lib/{cmd-view.js => cmd-view.ts} | 25 +- lib/{core.js => core.ts} | 241 ++++++++----- lib/error-handler.js | 13 - lib/error-handler.ts | 15 + lib/logger.js | 8 - lib/logger.ts | 8 + lib/types.ts | 129 +++++++ lib/utils/process.js | 35 -- lib/utils/process.ts | 34 ++ package-lock.json | 512 ++++++++++++++++++++++++++- package.json | 9 +- test/test-cmd-add.js | 193 +++++----- test/test-cmd-deps.js | 76 ++-- test/test-cmd-login.js | 4 +- test/test-cmd-remove.js | 52 +-- test/test-cmd-search.js | 84 +++-- test/test-cmd-view.js | 78 ++-- test/test-core.js | 4 +- tsconfig.json | 2 +- 28 files changed, 1366 insertions(+), 558 deletions(-) rename lib/{cli.js => cli.ts} (76%) rename lib/{client.js => client.ts} (59%) rename lib/{cmd-add.js => cmd-add.ts} (83%) rename lib/{cmd-deps.js => cmd-deps.ts} (51%) rename lib/{cmd-login.js => cmd-login.ts} (70%) rename lib/{cmd-remove.js => cmd-remove.ts} (78%) rename lib/{cmd-search.js => cmd-search.ts} (54%) rename lib/{cmd-view.js => cmd-view.ts} (83%) rename lib/{core.js => core.ts} (71%) delete mode 100644 lib/error-handler.js create mode 100644 lib/error-handler.ts delete mode 100644 lib/logger.js create mode 100644 lib/logger.ts create mode 100644 lib/types.ts delete mode 100644 lib/utils/process.js create mode 100644 lib/utils/process.ts diff --git a/bin/openupm b/bin/openupm index b465f9fa..148b0b2a 100755 --- a/bin/openupm +++ b/bin/openupm @@ -1,3 +1,3 @@ #!/usr/bin/env node -require("../lib/cli"); +require("../build/lib/cli"); diff --git a/bin/openupm-cn b/bin/openupm-cn index 9d08b384..a8f5aef5 100755 --- a/bin/openupm-cn +++ b/bin/openupm-cn @@ -1,4 +1,4 @@ #!/usr/bin/env node if (!process.argv.includes("--cn")) process.argv.push("--cn"); -require("../lib/cli"); +require("../build/lib/cli"); diff --git a/lib/cli.js b/lib/cli.ts similarity index 76% rename from lib/cli.js rename to lib/cli.ts index ab3d0886..87f5db70 100644 --- a/lib/cli.js +++ b/lib/cli.ts @@ -1,16 +1,20 @@ -const program = require("commander"); -const add = require("./cmd-add"); -const remove = require("./cmd-remove"); -const search = require("./cmd-search"); -const view = require("./cmd-view"); -const deps = require("./cmd-deps"); -const { login } = require("./cmd-login"); -const { log } = require("./logger"); -require("pkginfo")(module); +import { program } from "commander"; +import pkginfo from "pkginfo"; +import updateNotifier from "update-notifier"; +import { add } from "./cmd-add"; +import { remove } from "./cmd-remove"; +import { search } from "./cmd-search"; +import { view } from "./cmd-view"; +import { deps } from "./cmd-deps"; +import { login } from "./cmd-login"; + +import log from "./logger"; // update-notifier -const updateNotifier = require("update-notifier"); -const pkg = require("../package.json"); + +import pkg from "../package.json"; + +pkginfo(module); const notifier = updateNotifier({ pkg }); notifier.notify(); @@ -39,7 +43,7 @@ openupm add [otherPkgs...] openupm add @ [otherPkgs...]` ) .action(async function (pkg, otherPkgs, options) { - options._global = program.opts() + options._global = program.opts(); const pkgs = [pkg].concat(otherPkgs); const retCode = await add(pkgs, options); if (retCode) process.exit(retCode); @@ -49,8 +53,8 @@ program .command("remove [otherPkgs...]") .aliases(["rm", "uninstall"]) .description("remove package from manifest json") - .action(async function(pkg, otherPkgs, options) { - options._global = program.opts() + .action(async function (pkg, otherPkgs, options) { + options._global = program.opts(); const pkgs = [pkg].concat(otherPkgs); const retCode = await remove(pkgs, options); if (retCode) process.exit(retCode); @@ -60,8 +64,8 @@ program .command("search ") .aliases(["s", "se", "find"]) .description("Search package by keyword") - .action(async function(keyword, options) { - options._global = program.opts() + .action(async function (keyword, options) { + options._global = program.opts(); const retCode = await search(keyword, options); if (retCode) process.exit(retCode); }); @@ -70,8 +74,8 @@ program .command("view ") .aliases(["v", "info", "show"]) .description("view package information") - .action(async function(pkg, options) { - options._global = program.opts() + .action(async function (pkg, options) { + options._global = program.opts(); const retCode = await view(pkg, options); if (retCode) process.exit(retCode); }); @@ -85,8 +89,8 @@ program openupm deps openupm deps @` ) - .action(async function(pkg, options) { - options._global = program.opts() + .action(async function (pkg, options) { + options._global = program.opts(); const retCode = await deps(pkg, options); if (retCode) process.exit(retCode); }); @@ -104,19 +108,20 @@ program "always auth for tarball hosted on a different domain" ) .description("authenticate with a scoped registry") - .action(async function(options) { - options._global = program.opts() + .action(async function (options) { + options._global = program.opts(); try { const retCode = await login(options); if (retCode) process.exit(retCode); } catch (err) { + // @ts-ignore log.error("", err.message); process.exit(1); } }); // prompt for invalid command -program.on("command:*", function() { +program.on("command:*", function () { log.warn("", `unknown command: ${program.args.join(" ")}`); log.warn("", "see --help for a list of available commands"); process.exit(1); diff --git a/lib/client.js b/lib/client.ts similarity index 59% rename from lib/client.js rename to lib/client.ts index 61bcda47..55a356ea 100644 --- a/lib/client.js +++ b/lib/client.ts @@ -1,12 +1,14 @@ -const { promisify } = require("util"); -const RegClient = require("another-npm-registry-client"); +import {promisify} from "util"; + +// @ts-ignore +import RegClient from "another-npm-registry-client"; +import log from "./logger"; -const { log } = require("./logger"); /** * Return npm client */ -const getNpmClient = function() { +export const getNpmClient = function() { // create client const client = new RegClient({ log }); return { @@ -17,7 +19,3 @@ const getNpmClient = function() { adduser: promisify(client.adduser.bind(client)) }; }; - -module.exports = { - getNpmClient -}; diff --git a/lib/cmd-add.js b/lib/cmd-add.ts similarity index 83% rename from lib/cmd-add.js rename to lib/cmd-add.ts index 272e1ff2..94ab4283 100644 --- a/lib/cmd-add.js +++ b/lib/cmd-add.ts @@ -1,6 +1,6 @@ -const { log } = require("./logger"); -const url = require("url"); -const { +import log from "./logger"; +import url from "url"; +import { compareEditorVersion, env, fetchPackageDependencies, @@ -10,10 +10,20 @@ const { parseEditorVersion, parseEnv, parseName, - saveManifest -} = require("./core"); + saveManifest, +} from "./core"; +import { GlobalOptions, Pkg, PkgName, ScopedRegistry } from "./types"; -const add = async function(pkgs, options) { +export type AddOptions = { + test: boolean; + force: boolean; + _global: GlobalOptions; +}; + +export const add = async function ( + pkgs: Pkg | Pkg[], + options: AddOptions +): Promise { if (!Array.isArray(pkgs)) pkgs = [pkgs]; // parse env const envOk = await parseEnv(options, { checkPath: true }); @@ -25,8 +35,8 @@ const add = async function(pkgs, options) { await _add({ pkg, testables: options.test, force: options.force }) ); const result = { - code: results.filter(x => x.code != 0).length > 0 ? 1 : 0, - dirty: results.filter(x => x.dirty).length > 0 + code: results.filter((x) => x.code != 0).length > 0 ? 1 : 0, + dirty: results.filter((x) => x.dirty).length > 0, }; // print manifest notice if (result.dirty) @@ -34,7 +44,15 @@ const add = async function(pkgs, options) { return result.code; }; -const _add = async function({ pkg, testables, force }) { +const _add = async function ({ + pkg, + testables, + force, +}: { + pkg: Pkg; + testables: boolean; + force: boolean; +}) { // dirty flag let dirty = false; // is upstream package flag @@ -49,7 +67,7 @@ const _add = async function({ pkg, testables, force }) { manifest.dependencies = {}; } // packages that added to scope registry - const pkgsInScope = []; + const pkgsInScope: PkgName[] = []; const isGitOrLocal = version && (version.startsWith("git") || @@ -70,7 +88,7 @@ const _add = async function({ pkg, testables, force }) { const versions = Object.keys(pkgInfo.versions); // eslint-disable-next-line require-atomic-updates if (!version || version == "latest") version = getLatestVersion(pkgInfo); - if (versions.filter(x => x == version).length <= 0) { + if (versions.filter((x) => x == version).length <= 0) { log.warn( "404", `version ${version} is not a valid choice of: ${versions @@ -79,6 +97,7 @@ const _add = async function({ pkg, testables, force }) { ); return { code: 1, dirty }; } + const versionInfo = pkgInfo.versions[version]; // verify editor version if (versionInfo.unity) { @@ -130,16 +149,18 @@ const _add = async function({ pkg, testables, force }) { const [depsValid, depsInvalid] = await fetchPackageDependencies({ name, version, - deep: true + deep: true, }); // add depsValid to pkgsInScope. depsValid - .filter(x => !x.upstream && !x.internal) - .map(x => x.name) - .forEach(name => pkgsInScope.push(name)); + .filter((x) => !x.upstream && !x.internal) + .map((x) => x.name) + .forEach((name) => pkgsInScope.push(name)); // print suggestion for depsInvalid - depsInvalid.forEach(depObj => { + depsInvalid.forEach((depObj) => { if (depObj.reason == "package404" || depObj.reason == "version404") { + // TODO: Do null check on manifest + // @ts-ignore const resolvedVersion = manifest.dependencies[depObj.name]; depObj.resolved = Boolean(resolvedVersion); if (!depObj.resolved) @@ -149,7 +170,7 @@ const _add = async function({ pkg, testables, force }) { ); } }); - if (depsInvalid.filter(x => !x.resolved).length > 0) { + if (depsInvalid.filter((x) => !x.resolved).length > 0) { if (!force) { log.error( "missing dependencies", @@ -162,6 +183,8 @@ const _add = async function({ pkg, testables, force }) { } // add to dependencies const oldVersion = manifest.dependencies[name]; + // TODO: Do undefined check on version + // @ts-ignore manifest.dependencies[name] = version; if (!oldVersion) { // Log the added package @@ -181,16 +204,18 @@ const _add = async function({ pkg, testables, force }) { manifest.scopedRegistries = []; dirty = true; } - const filterEntry = x => { + const filterEntry = (x: ScopedRegistry): boolean => { let addr = x.url || ""; if (addr.endsWith("/")) addr = addr.slice(0, -1); return addr == env.registry; }; if (manifest.scopedRegistries.filter(filterEntry).length <= 0) { manifest.scopedRegistries.push({ + // TODO: Handle null name + // @ts-ignore name: url.parse(env.registry).hostname, url: env.registry, - scopes: [] + scopes: [], }); dirty = true; } @@ -198,7 +223,7 @@ const _add = async function({ pkg, testables, force }) { // apply pkgsInScope let scopesSet = new Set(entry.scopes || []); pkgsInScope.push(env.namespace); - pkgsInScope.forEach(name => { + pkgsInScope.forEach((name) => { if (!scopesSet.has(name)) { scopesSet.add(name); dirty = true; @@ -220,5 +245,3 @@ const _add = async function({ pkg, testables, force }) { } return { code: 0, dirty }; }; - -module.exports = add; diff --git a/lib/cmd-deps.js b/lib/cmd-deps.ts similarity index 51% rename from lib/cmd-deps.js rename to lib/cmd-deps.ts index ff1f4e58..47f39aba 100644 --- a/lib/cmd-deps.js +++ b/lib/cmd-deps.ts @@ -1,7 +1,13 @@ -const { log } = require("./logger"); -const { fetchPackageDependencies, parseEnv, parseName } = require("./core"); +import log from "./logger"; +import { fetchPackageDependencies, parseEnv, parseName } from "./core"; +import { GlobalOptions, Pkg, PkgName, PkgVersionName } from "./types"; -const deps = async function(pkg, options) { +export type DepsOptions = { + deep: boolean; + _global: GlobalOptions; +}; + +export const deps = async function (pkg: Pkg, options: DepsOptions) { // parse env const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; @@ -12,24 +18,30 @@ const deps = async function(pkg, options) { return 0; }; -const _deps = async function({ name, version, deep }) { +const _deps = async function ({ + name, + version, + deep, +}: { + name: PkgName; + version: PkgVersionName; + deep: boolean; +}) { // eslint-disable-next-line no-unused-vars const [depsValid, depsInvalid] = await fetchPackageDependencies({ name, version, - deep + deep, }); depsValid - .filter(x => !x.self) - .forEach(x => log.notice("dependency", `${x.name}@${x.version}`)); + .filter((x) => !x.self) + .forEach((x) => log.notice("dependency", `${x.name}@${x.version}`)); depsInvalid - .filter(x => !x.self) - .forEach(x => { + .filter((x) => !x.self) + .forEach((x) => { let reason = "unknown"; if (x.reason == "package404") reason = "missing dependency"; else if (x.reason == "version404") reason = "missing dependency version"; log.warn(reason, `${x.name}@${x.version}`); }); }; - -module.exports = deps; diff --git a/lib/cmd-login.js b/lib/cmd-login.ts similarity index 70% rename from lib/cmd-login.js rename to lib/cmd-login.ts index 6b839c32..bdc55db2 100644 --- a/lib/cmd-login.js +++ b/lib/cmd-login.ts @@ -1,19 +1,29 @@ -const fs = require("fs"); -const path = require("path"); +import fs from "fs"; +import path from "path"; +import _ from "lodash"; +import promptly from "promptly"; +import { getNpmClient } from "./client"; -const _ = require("lodash"); -const promptly = require("promptly"); +import log from "./logger"; -const { getNpmClient } = require("./client"); -const { log } = require("./logger"); -const { +import { getUpmConfigDir, loadUpmConfig, + parseEnv, saveUpmConfig, - parseEnv -} = require("./core"); +} from "./core"; +import { GlobalOptions, Registry } from "./types"; -const login = async function(options) { +export type LoginOptions = { + username?: string; + password?: string; + email?: string; + basicAuth?: boolean; + alwaysAuth?: boolean; + _global: GlobalOptions; +}; + +export const login = async function (options: LoginOptions) { // parse env const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; @@ -24,7 +34,7 @@ const login = async function(options) { if (!options.email) options.email = await promptly.prompt("Email: "); if (!options._global.registry) options._global.registry = await promptly.prompt("Registry: ", { - validator: [validateRegistry] + validator: [validateRegistry], }); let token = null; let _auth = null; @@ -38,7 +48,7 @@ const login = async function(options) { username: options.username, password: options.password, email: options.email, - registry: options._global.registry + registry: options._global.registry, }); if (result.code == 1) return result.code; if (!result.token) { @@ -49,7 +59,7 @@ const login = async function(options) { // write npm token await writeNpmToken({ registry: options._global.registry, - token: result.token + token: result.token, }); } // write unity token @@ -59,7 +69,7 @@ const login = async function(options) { basicAuth: options.basicAuth || false, email: options.email, registry: options._global.registry, - token + token, }); }; @@ -67,15 +77,25 @@ const login = async function(options) { * Return npm login token * @param {*} param0 */ -const npmLogin = async function({ username, password, email, registry }) { +const npmLogin = async function ({ + username, + password, + email, + registry, +}: { + username: string; + password: string; + email: string; + registry: Registry; +}) { const client = getNpmClient(); try { const data = await client.adduser(registry, { auth: { username, password, - email - } + email, + }, }); if (_.isString(data.ok)) log.notice("auth", data.ok); else if (data.ok) @@ -83,10 +103,13 @@ const npmLogin = async function({ username, password, email, registry }) { const token = data.token; return { code: 0, token }; } catch (err) { + // TODO: Type-check error + // @ts-ignore if (err.statusCode == 401 || err.code == "EAUTHUNKNOWN") { log.warn("401", "Incorrect username or password"); return { code: 1 }; } else { + // @ts-ignore log.error(err.statusCode ? err.statusCode.toString() : "", err.message); return { code: 1 }; } @@ -97,7 +120,13 @@ const npmLogin = async function({ username, password, email, registry }) { * Write npm token to .npmrc * @param {*} param0 */ -const writeNpmToken = async function({ registry, token }) { +const writeNpmToken = async function ({ + registry, + token, +}: { + registry: Registry; + token: string; +}) { const configPath = getNpmrcPath(); // read config let content = ""; @@ -114,10 +143,12 @@ const writeNpmToken = async function({ registry, token }) { /** * Return .npmrc config file path */ -const getNpmrcPath = function() { +export const getNpmrcPath = function () { const dirPath = process.env.USERPROFILE ? process.env.USERPROFILE : process.env.HOME; + // TODO: Handle undefined + // @ts-ignore const configPath = path.join(dirPath, ".npmrc"); return configPath; }; @@ -128,29 +159,38 @@ const getNpmrcPath = function() { * @param {*} registry * @param {*} token */ -const generateNpmrcLines = function(content, registry, token) { +export const generateNpmrcLines = function ( + content: string, + registry: Registry, + token: string +) { let lines = content ? content.split("\n") : []; const quotes = /(\?|=)/.test(token) ? '"' : ""; // get the registry url without http protocal + // TODO: Investigate extra quotes + // @ts-ignore let registryUrl = registry.slice(registry.search(/:\/\//, "") + 1); // add trailing slash if (!registryUrl.endsWith("/")) registryUrl = registryUrl + "/"; - const index = _.findIndex(lines, function(element, index, array) { + const index = _.findIndex(lines, function (element, index, array) { if (element.indexOf(registryUrl + ":_authToken=") !== -1) { // If an entry for the auth token is found, replace it + // TODO: Investigate error + // @ts-ignore array[index] = element.replace( /authToken=.*/, "authToken=" + quotes + token + quotes ); return true; } + return false; }); // If no entry for the auth token is found, add one if (index === -1) { lines.push(registryUrl + ":_authToken=" + quotes + token + quotes); } // Remove empty lines - lines = lines.filter(l => l); + lines = lines.filter((l) => l); return lines; }; @@ -158,7 +198,7 @@ const generateNpmrcLines = function(content, registry, token) { * http protocal validator * @param {*} value */ -const validateRegistry = function(value) { +export const validateRegistry = function (value: Registry): Registry { if (!/http(s?):\/\//.test(value)) throw new Error("The registry address should starts with http(s)://"); return value; @@ -168,13 +208,20 @@ const validateRegistry = function(value) { * Write npm token to Unity * @param {*} param0 */ -const writeUnityToken = async function({ +const writeUnityToken = async function ({ _auth, alwaysAuth, basicAuth, email, registry, - token + token, +}: { + _auth: unknown; + alwaysAuth: boolean; + basicAuth: boolean; + email: string; + registry: Registry; + token: string; }) { // Create config dir if necessary const configDir = await getUpmConfigDir(); @@ -183,21 +230,21 @@ const writeUnityToken = async function({ if (!config.npmAuth) config.npmAuth = {}; // Remove ending slash of registry if (registry.endsWith("/")) registry = registry.replace(/\/$/, ""); + + // TODO: Investigate ts warnings // Update config file + // @ts-ignore config["npmAuth"][registry] = { email, - alwaysAuth + alwaysAuth, }; - if (basicAuth) config["npmAuth"][registry]._auth = _auth; - else config["npmAuth"][registry].token = token; + if (basicAuth) { + // @ts-ignore + config["npmAuth"][registry]._auth = _auth; + } else { + // @ts-ignore + config["npmAuth"][registry].token = token; + } // Write config file await saveUpmConfig(config, configDir); }; - -module.exports = { - generateNpmrcLines, - getNpmrcPath, - login, - npmLogin, - validateRegistry -}; diff --git a/lib/cmd-remove.js b/lib/cmd-remove.ts similarity index 78% rename from lib/cmd-remove.js rename to lib/cmd-remove.ts index 451bbebf..ac1372bb 100644 --- a/lib/cmd-remove.js +++ b/lib/cmd-remove.ts @@ -1,13 +1,15 @@ -const { log } = require("./logger"); -const { - env, - loadManifest, - parseEnv, - parseName, - saveManifest -} = require("./core"); +import log from "./logger"; +import { env, loadManifest, parseEnv, parseName, saveManifest } from "./core"; +import { GlobalOptions, Pkg, ScopedRegistry } from "./types"; -const remove = async function(pkgs, options) { +export type RemoveOptions = { + _global: GlobalOptions; +}; + +export const remove = async function ( + pkgs: Pkg[] | Pkg, + options: RemoveOptions +) { if (!Array.isArray(pkgs)) pkgs = [pkgs]; // parse env const envOk = await parseEnv(options, { checkPath: true }); @@ -16,8 +18,8 @@ const remove = async function(pkgs, options) { const results = []; for (const pkg of pkgs) results.push(await _remove(pkg)); const result = { - code: results.filter(x => x.code != 0).length > 0 ? 1 : 0, - dirty: results.filter(x => x.dirty).length > 0 + code: results.filter((x) => x.code != 0).length > 0 ? 1 : 0, + dirty: results.filter((x) => x.dirty).length > 0, }; // print manifest notice if (result.dirty) @@ -25,7 +27,7 @@ const remove = async function(pkgs, options) { return result.code; }; -const _remove = async function(pkg) { +const _remove = async function (pkg: Pkg) { // dirty flag let dirty = false; // parse name @@ -50,7 +52,7 @@ const _remove = async function(pkg) { } // remove from scopedRegistries if (manifest.scopedRegistries) { - const filterEntry = x => { + const filterEntry = (x: ScopedRegistry) => { let url = x.url || ""; if (url.endsWith("/")) url = url.slice(0, -1); return url == env.registry; @@ -78,5 +80,3 @@ const _remove = async function(pkg) { } return { code: 0, dirty }; }; - -module.exports = remove; diff --git a/lib/cmd-search.js b/lib/cmd-search.ts similarity index 54% rename from lib/cmd-search.js rename to lib/cmd-search.ts index 6dde44a9..ec3a09ad 100644 --- a/lib/cmd-search.js +++ b/lib/cmd-search.ts @@ -1,34 +1,58 @@ -const npmSearch = require("libnpmsearch"); -const npmFetch = require("npm-registry-fetch"); -const Table = require("cli-table"); +import npmSearch from "libnpmsearch"; +import npmFetch from "npm-registry-fetch"; +import Table from "cli-table"; +import log from "./logger"; -const { log } = require("./logger"); -const { - env, - getLatestVersion, - getNpmFetchOptions, - parseEnv -} = require("./core"); -const { isConnectionError, is404Error } = require("./error-handler"); +import { env, getLatestVersion, getNpmFetchOptions, parseEnv } from "./core"; -const searchEndpoint = async function (keyword, registry) { +import { is404Error } from "./error-handler"; +import { + GlobalOptions, + PkgInfo, + PkgName, + PkgVersionName, + Registry, +} from "./types"; + +type TableRow = [PkgName, PkgVersionName, string, ""]; + +export type SearchOptions = { + _global: GlobalOptions; +}; + +const searchEndpoint = async function ( + keyword: string, + registry?: Registry +): Promise { if (!registry) registry = env.registry; try { const results = await npmSearch(keyword, getNpmFetchOptions()); + // TODO: This should be converted to a string + // @ts-ignore log.verbose("npmsearch", results); + // TODO: Fix type error + // @ts-ignore return results.map(getTableRow); } catch (err) { - if (!is404Error(err)) log.error("", err.message); + if (!is404Error(err)) { + // TODO: Type check error + // @ts-ignore + log.error("", err.message); + } log.warn("", "fast search endpoint is not available, using old search."); } }; -const searchOld = async function (keyword) { +const searchOld = async function ( + keyword: string +): Promise { // all endpoint try { const results = await npmFetch.json("/-/all", getNpmFetchOptions()); + // TODO: This should be converted to a string + // @ts-ignore log.verbose("endpoint.all", results); - let objects = []; + let objects: PkgInfo[] = []; if (results) { if (Array.isArray(results)) { // results is an array of objects @@ -36,20 +60,26 @@ const searchOld = async function (keyword) { } else { // results is an object if ("_updated" in results) delete results["_updated"]; + // TODO: Do better type checking + // @ts-ignore objects = Object.values(results); } } // prepare rows - const rows = objects.map(pkg => { + const rows = objects.map((pkg) => { return getTableRow(pkg); }); // filter keyword const klc = keyword.toLowerCase(); return rows.filter( - row => row.filter(x => x.toLowerCase().includes(klc)).length > 0 + (row) => row.filter((x) => x.toLowerCase().includes(klc)).length > 0 ); } catch (err) { - if (!is404Error(err)) log.error("", err.message); + if (!is404Error(err)) { + // TODO: Type-check error + // @ts-ignore + log.error("", err.message); + } log.warn("", "/-/all endpoint is not available"); } }; @@ -57,24 +87,23 @@ const searchOld = async function (keyword) { const getTable = function () { var table = new Table({ head: ["Name", "Version", "Date"], - colWidths: [42, 20, 12] + colWidths: [42, 20, 12], }); return table; }; -const getTableRow = function (pkg) { +const getTableRow = function (pkg: PkgInfo): TableRow { const name = pkg.name; const version = getLatestVersion(pkg); let date = ""; if (pkg.time && pkg.time.modified) date = pkg.time.modified.split("T")[0]; if (pkg.date) { - date = pkg.date.toISOString().slice(0, 10) + date = pkg.date.toISOString().slice(0, 10); } - const row = [name, version, date, ""]; - return row -} + return [name, version, date, ""]; +}; -module.exports = async function (keyword, options) { +export async function search(keyword: string, options: SearchOptions) { // parse env const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; @@ -92,8 +121,8 @@ module.exports = async function (keyword, options) { // results.push(...upstreamResults); // } if (results && results.length) { - results.forEach(x => table.push(x.slice(0, -1))); + results.forEach((x) => table.push(x.slice(0, -1))); console.log(table.toString()); } else log.notice("", `No matches found for "${keyword}"`); return 0; -}; +} diff --git a/lib/cmd-view.js b/lib/cmd-view.ts similarity index 83% rename from lib/cmd-view.js rename to lib/cmd-view.ts index bb0a191b..80c98ef7 100644 --- a/lib/cmd-view.js +++ b/lib/cmd-view.ts @@ -1,15 +1,20 @@ -const chalk = require("chalk"); +import chalk from "chalk"; +import log from "./logger"; -const { log } = require("./logger"); -const { +import { env, fetchPackageInfo, getLatestVersion, parseEnv, - parseName -} = require("./core"); + parseName, +} from "./core"; +import { GlobalOptions, Pkg, PkgInfo } from "./types"; -const view = async function(pkg, options) { +export type ViewOptions = { + _global: GlobalOptions; +}; + +export const view = async function (pkg: Pkg, options: ViewOptions) { // parse env const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; @@ -32,7 +37,7 @@ const view = async function(pkg, options) { return 0; }; -const printInfo = function(pkg) { +const printInfo = function (pkg: PkgInfo) { const versionCount = Object.keys(pkg.versions).length; const ver = getLatestVersion(pkg); const verInfo = pkg.versions[ver]; @@ -45,7 +50,7 @@ const printInfo = function(pkg) { const dependencies = verInfo.dependencies; const latest = pkg["dist-tags"].latest; let time = pkg.time.modified; - if (!time && latest in pkg.time) time = pkg.time[latest]; + if (!time && latest && latest in pkg.time) time = pkg.time[latest]; console.log(); console.log( @@ -78,7 +83,7 @@ const printInfo = function(pkg) { console.log("dependencies"); Object.keys(dependencies) .sort() - .forEach(n => console.log(chalk.yellow(n) + ` ${dependencies[n]}`)); + .forEach((n) => console.log(chalk.yellow(n) + ` ${dependencies[n]}`)); } console.log(); @@ -93,5 +98,3 @@ const printInfo = function(pkg) { console.log(" " + chalk.greenBright(version)); } }; - -module.exports = view; diff --git a/lib/core.js b/lib/core.ts similarity index 71% rename from lib/core.js rename to lib/core.ts index 71861077..79159fbc 100644 --- a/lib/core.js +++ b/lib/core.ts @@ -1,24 +1,41 @@ -const fs = require("fs"); -const os = require("os"); -const path = require("path"); -const url = require("url"); +import fs from "fs"; +import path from "path"; +import url from "url"; +import _ from "lodash"; +import chalk from "chalk"; +// @ts-ignore +import mkdirp from "mkdirp"; +import net from "node:net"; +import isWsl from "is-wsl"; +import TOML from "@iarna/toml"; +import yaml from "yaml"; +import execute from "./utils/process"; +import { getNpmClient } from "./client"; +import log from "./logger"; +import { + Dependency, + Env, + GlobalOptions, + NameVersionPair, + NpmFetchOptions, + Pkg, + PkgInfo, + PkgManifest, + PkgName, + PkgVersionName, + Registry, + SemanticVersion, + UPMConfig, +} from "./types"; -const _ = require("lodash"); -const chalk = require("chalk"); -const mkdirp = require("mkdirp"); -const net = require('node:net'); -const isWsl = require("is-wsl"); -const TOML = require("@iarna/toml"); -const yaml = require("yaml"); - -const { execute } = require("./utils/process"); -const { getNpmClient } = require("./client"); -const { log } = require("./logger"); - -const env = {}; +// @ts-ignore +export const env: Env = {}; // Parse env -const parseEnv = async function(options, { checkPath }) { +export const parseEnv = async function ( + options: { _global: GlobalOptions } & Record, + { checkPath }: { checkPath: unknown } +) { // set defaults env.registry = "https://package.openupm.com"; env.namespace = "com.openupm"; @@ -60,14 +77,10 @@ const parseEnv = async function(options, { checkPath }) { registry = "http://" + registry; if (registry.endsWith("/")) registry = registry.slice(0, -1); env.registry = registry; - const hostname = url.parse(registry).hostname; + // TODO: Check hostname for null + const hostname = url.parse(registry).hostname as string; if (net.isIP(hostname)) env.namespace = hostname; - else - env.namespace = hostname - .split(".") - .reverse() - .slice(0, 2) - .join("."); + else env.namespace = hostname.split(".").reverse().slice(0, 2).join("."); } // auth if (options._global.systemUser) env.systemUser = true; @@ -78,12 +91,14 @@ const parseEnv = async function(options, { checkPath }) { if (env.npmAuth) { for (const reg in env.npmAuth) { const regAuth = env.npmAuth[reg]; - if (regAuth.token) { + if ("token" in regAuth) { env.auth[reg] = { token: regAuth.token, - alwaysAuth: regAuth.alwaysAuth || false + alwaysAuth: regAuth.alwaysAuth || false, }; - } else if (regAuth._auth) { + } else if ("_auth" in regAuth) { + // NOTE: We can rule out undefined because of the if + // @ts-ignore const buf = Buffer.from(regAuth._auth, "base64"); const text = buf.toString("utf-8"); const [username, password] = text.split(":", 2); @@ -91,13 +106,15 @@ const parseEnv = async function(options, { checkPath }) { username, password: Buffer.from(password).toString("base64"), email: regAuth.email, - alwaysAuth: regAuth.alwaysAuth || false + alwaysAuth: regAuth.alwaysAuth || false, }; } else { log.warn( "env.auth", `failed to parse auth info for ${reg} in .upmconfig.toml: missing token or _auth fields` ); + // TODO: Convert to string + // @ts-ignore log.warn("env.auth", regAuth); } } @@ -145,19 +162,24 @@ const parseEnv = async function(options, { checkPath }) { }; // Parse name to {name, version} -const parseName = function(pkg) { +export const parseName = function (pkg: Pkg): { + name: PkgName; + version: PkgVersionName; +} { const segs = pkg.split("@"); const name = segs[0]; const version = segs.length > 1 ? segs.slice(1, segs.length).join("@") : undefined; + // TODO: Handle version undefined + // @ts-ignore return { name, version }; }; // Get npm fetch options -const getNpmFetchOptions = function() { - const opts = { +export const getNpmFetchOptions = function (): NpmFetchOptions { + const opts: NpmFetchOptions = { log, - registry: env.registry + registry: env.registry, }; const auth = env.auth[env.registry]; if (auth) { @@ -171,7 +193,10 @@ const getNpmFetchOptions = function() { }; // Fetch package info json from registry -const fetchPackageInfo = async function(name, registry) { +export const fetchPackageInfo = async function ( + name: PkgName, + registry?: Registry +): Promise { if (!registry) registry = env.registry; const pkgPath = `${registry}/${name}`; const client = getNpmClient(); @@ -193,10 +218,18 @@ const fetchPackageInfo = async function(name, registry) { }, ... ] */ -const fetchPackageDependencies = async function({ name, version, deep }) { +export const fetchPackageDependencies = async function ({ + name, + version, + deep, +}: { + name: PkgName; + version: PkgVersionName; + deep: boolean; +}): Promise<[Dependency[], Dependency[]]> { log.verbose("dependency", `fetch: ${name}@${version} deep=${deep}`); // a list of pending dependency {name, version} - const pendingList = [{ name, version }]; + const pendingList: NameVersionPair[] = [{ name, version }]; // a list of processed dependency {name, version} const processedList = []; // a list of dependency entry exists on the registry @@ -204,32 +237,36 @@ const fetchPackageDependencies = async function({ name, version, deep }) { // a list of dependency entry doesn't exist on the registry const depsInvalid = []; // cached dict: {pkg-name: pkgInfo} - const cachedPacakgeInfoDict = {}; + const cachedPacakgeInfoDict: Record< + PkgVersionName, + { pkgInfo: PkgInfo; upstream: boolean } + > = {}; while (pendingList.length > 0) { - const entry = pendingList.shift(); - if (processedList.find(x => _.isEqual(x, entry)) === undefined) { + // NOTE: Guaranteed defined because of while loop logic + const entry = pendingList.shift() as NameVersionPair; + if (processedList.find((x) => _.isEqual(x, entry)) === undefined) { // add entry to processed list processedList.push(entry); // create valid depedenency structure - const depObj = { + const depObj: Dependency = { ...entry, internal: isInternalPackage(entry.name), upstream: false, self: entry.name == name, - reason: null + reason: null, }; if (!depObj.internal) { // try fetching package info from cache let { pkgInfo, upstream } = _.get(cachedPacakgeInfoDict, entry.name, { pkgInfo: null, - upstream: false + upstream: false, }); - if (pkgInfo) { + if (pkgInfo !== null) { depObj.upstream = upstream; } // try fetching package info from the default registry - if (!pkgInfo) { - pkgInfo = await fetchPackageInfo(entry.name); + if (pkgInfo === null) { + pkgInfo = (await fetchPackageInfo(entry.name)) ?? null; if (pkgInfo) { depObj.upstream = false; cachedPacakgeInfoDict[entry.name] = { pkgInfo, upstream: false }; @@ -237,7 +274,8 @@ const fetchPackageDependencies = async function({ name, version, deep }) { } // try fetching package info from the upstream registry if (!pkgInfo) { - pkgInfo = await fetchPackageInfo(entry.name, env.upstreamRegistry); + pkgInfo = + (await fetchPackageInfo(entry.name, env.upstreamRegistry)) ?? null; if (pkgInfo) { depObj.upstream = true; cachedPacakgeInfoDict[entry.name] = { pkgInfo, upstream: true }; @@ -257,7 +295,7 @@ const fetchPackageDependencies = async function({ name, version, deep }) { depObj.version = entry.version = getLatestVersion(pkgInfo); } // handle version not exist - if (!versions.find(x => x == entry.version)) { + if (!versions.find((x) => x == entry.version)) { log.warn( "404", `package ${entry.name}@${ @@ -273,12 +311,12 @@ const fetchPackageDependencies = async function({ name, version, deep }) { } // add dependencies to pending list if (depObj.self || deep) { - const deps = _.toPairs( + const deps: NameVersionPair[] = _.toPairs( pkgInfo.versions[entry.version]["dependencies"] - ).map(x => { + ).map((x: [PkgName, PkgVersionName]): NameVersionPair => { return { name: x[0], version: x[1] }; }); - deps.forEach(x => pendingList.push(x)); + deps.forEach((x) => pendingList.push(x)); } } depsValid.push(depObj); @@ -294,23 +332,30 @@ const fetchPackageDependencies = async function({ name, version, deep }) { }; // Get latest version from package info -const getLatestVersion = function(pkgInfo) { +// @ts-ignore +export const getLatestVersion = function (pkgInfo: PkgInfo): PkgVersionName { if (pkgInfo["dist-tags"] && pkgInfo["dist-tags"]["latest"]) return pkgInfo["dist-tags"]["latest"]; - else if (pkgInfo.versions) + else if (pkgInfo.versions) { + // @ts-ignore + // TODO: Handle undefined return Object.keys(pkgInfo.versions).find( - key => pkgInfo.versions[key] == "latest" + // TODO: Something is wrong here + // @ts-ignore + (key) => pkgInfo.versions[key] == "latest" ); - else if (pkgInfo.version) - return pkgInfo.version + } else if (pkgInfo.version) return pkgInfo.version; + // TODO: Not handling undefined case }; // Load manifest json file -const loadManifest = function() { +export const loadManifest = function (): PkgManifest | null { try { let text = fs.readFileSync(env.manifestPath, { encoding: "utf8" }); return JSON.parse(text); } catch (err) { + // TODO: Type error + // @ts-ignore if (err.code == "ENOENT") log.error("manifest", "file Packages/manifest.json does not exist"); else { @@ -318,6 +363,7 @@ const loadManifest = function() { "manifest", `failed to parse Packages/manifest.json at ${env.manifestPath}` ); + // @ts-ignore log.error("manifest", err.message); } return null; @@ -325,20 +371,22 @@ const loadManifest = function() { }; // Save manifest json file -const saveManifest = function(data) { +export const saveManifest = function (data: PkgManifest) { let json = JSON.stringify(data, null, 2); try { fs.writeFileSync(env.manifestPath, json); return true; } catch (err) { log.error("manifest", "can not write manifest json file"); + // @ts-ignore + // TODO: Type-check error log.error("manifest", err.message); return false; } }; // Get .upmconfig.toml directory -const getUpmConfigDir = async function() { +export const getUpmConfigDir = async function (): Promise { let dirPath = ""; const systemUserSubPath = "Unity/config/ServiceAccounts"; if (env.wsl) { @@ -353,10 +401,12 @@ const getUpmConfigDir = async function() { dirPath = path.join(allUserProfilePath, systemUserSubPath); } else { dirPath = await execute('wslpath "$(wslvar USERPROFILE)"', { - trim: true + trim: true, }); } } else { + // TODO: Handle undefined + // @ts-ignore dirPath = process.env.USERPROFILE ? process.env.USERPROFILE : process.env.HOME; @@ -371,18 +421,25 @@ const getUpmConfigDir = async function() { }; // Load .upmconfig.toml -const loadUpmConfig = async function(configDir) { +export const loadUpmConfig = async function ( + configDir?: string +): Promise { if (configDir === undefined) configDir = await getUpmConfigDir(); const configPath = path.join(configDir, ".upmconfig.toml"); if (fs.existsSync(configPath)) { const content = fs.readFileSync(configPath, "utf8"); const config = TOML.parse(content); - return config; + + // NOTE: We assume correct format + return config as UPMConfig; } }; // Save .upmconfig.toml -const saveUpmConfig = async function(config, configDir) { +export const saveUpmConfig = async function ( + config: UPMConfig, + configDir: string +) { if (configDir === undefined) configDir = await getUpmConfigDir(); mkdirp.sync(configDir); const configPath = path.join(configDir, ".upmconfig.toml"); @@ -392,19 +449,22 @@ const saveUpmConfig = async function(config, configDir) { }; // Compare unity editor version and return -1, 0, or 1. -const compareEditorVersion = function(a, b) { +export const compareEditorVersion = function (a: string, b: string) { const verA = parseEditorVersion(a); const verB = parseEditorVersion(b); - const editorVersionToArray = ver => [ + const editorVersionToArray = (ver: SemanticVersion) => [ ver.major, ver.minor, ver.patch || 0, ver.flagValue || 0, ver.build || 0, ver.locValue || 0, - ver.locBuild || 0 + ver.locBuild || 0, ]; + // TODO: Handle null + // @ts-ignore const arrA = editorVersionToArray(verA); + // @ts-ignore const arrB = editorVersionToArray(verB); for (let i = 0; i < arrA.length; i++) { const valA = arrA[i]; @@ -429,58 +489,61 @@ const compareEditorVersion = function(a, b) { * locValue: 1 * locBuild: 4 */ -const parseEditorVersion = function(version) { +export const parseEditorVersion = function ( + version: string +): SemanticVersion | null { if (!version) return null; - const regex = /^(?\d+)\.(?\d+)(\.(?\d+)((?a|b|f|c)(?\d+)((?c)(?\d+))?)?)?/; + const regex = + /^(?\d+)\.(?\d+)(\.(?\d+)((?a|b|f|c)(?\d+)((?c)(?\d+))?)?)?/; const match = regex.exec(version); if (!match) return null; const groups = match.groups; - const result = { + const result: SemanticVersion = { + // TODO: Check undefined + // @ts-ignore major: parseInt(groups.major), - minor: parseInt(groups.minor) + // @ts-ignore + minor: parseInt(groups.minor), }; + // TODO: Check undefined + // @ts-ignore if (groups.patch) result.patch = parseInt(groups.patch); + // TODO: Check undefined + // @ts-ignore if (groups.flag) { + // TODO: Do type checking + // @ts-ignore result.flag = groups.flag.toLowerCase(); if (result.flag == "a") result.flagValue = 0; if (result.flag == "b") result.flagValue = 1; if (result.flag == "f") result.flagValue = 2; + // TODO: Handle undefined + // @ts-ignore if (groups.build) result.build = parseInt(groups.build); } + + // TODO: Handle undefined + // @ts-ignore if (groups.loc) { + // TODO: Handle undefined + // @ts-ignore result.loc = groups.loc.toLowerCase(); if (result.loc == "c") result.locValue = 1; + // TODO: Handle undefined + // @ts-ignore if (groups.locBuild) result.locBuild = parseInt(groups.locBuild); } return result; }; // Detect if the given package name is an internal package -const isInternalPackage = function(name) { +export const isInternalPackage = function (name: PkgName): boolean { const internals = [ "com.unity.ugui", "com.unity.2d.sprite", "com.unity.2d.tilemap", "com.unity.package-manager-ui", - "com.unity.ugui" + "com.unity.ugui", ]; return /com.unity.modules/i.test(name) || internals.includes(name); }; - -module.exports = { - compareEditorVersion, - env, - fetchPackageDependencies, - fetchPackageInfo, - getLatestVersion, - getNpmFetchOptions, - getUpmConfigDir, - isInternalPackage, - loadManifest, - loadUpmConfig, - parseEnv, - parseName, - parseEditorVersion, - saveManifest, - saveUpmConfig -}; diff --git a/lib/error-handler.js b/lib/error-handler.js deleted file mode 100644 index ae24c716..00000000 --- a/lib/error-handler.js +++ /dev/null @@ -1,13 +0,0 @@ -const isConnectionError = function(err) { - return err.code == "ENOTFOUND"; -}; - -const is404Error = function(err) { - return (err.response && err.response.notFound) || err.message.includes("404"); -}; - -const is503Error = function(err) { - return err.response && err.status == 503; -}; - -module.exports = { isConnectionError, is404Error, is503Error }; diff --git a/lib/error-handler.ts b/lib/error-handler.ts new file mode 100644 index 00000000..e1476d02 --- /dev/null +++ b/lib/error-handler.ts @@ -0,0 +1,15 @@ +// TODO: Use better error types + +export const isConnectionError = function(err: any) { + return err.code == "ENOTFOUND"; +}; + +export const is404Error = function(err: any) { + return (err.response && err.response.notFound) || err.message.includes("404"); +}; + +const is503Error = function(err: any) { + return err.response && err.status == 503; +}; + +export default { isConnectionError, is404Error, is503Error }; diff --git a/lib/logger.js b/lib/logger.js deleted file mode 100644 index 1309641b..00000000 --- a/lib/logger.js +++ /dev/null @@ -1,8 +0,0 @@ -const npmlog = require("npmlog"); - -if (process.env.NODE_ENV == "test") { - npmlog.stream = process.stdout; - npmlog.disableColor(); -} - -module.exports = { log: npmlog }; diff --git a/lib/logger.ts b/lib/logger.ts new file mode 100644 index 00000000..92a13e8e --- /dev/null +++ b/lib/logger.ts @@ -0,0 +1,8 @@ +import npmlog from "npmlog"; + +if (process.env.NODE_ENV == "test") { + npmlog.stream = process.stdout; + npmlog.disableColor(); +} + +export default npmlog; diff --git a/lib/types.ts b/lib/types.ts new file mode 100644 index 00000000..c7624acf --- /dev/null +++ b/lib/types.ts @@ -0,0 +1,129 @@ +import { Logger } from "npmlog"; + +export type PkgName = string; + +export type PkgVersionName = string; + +export type Pkg = `${PkgName}@${PkgVersionName}`; + +export type Region = "us" | "cn"; + +export type Registry = string; + +export type SemanticVersion = { + major: number; + minor: number; + patch?: number; + flag?: "a" | "b" | "f"; + flagValue?: 0 | 1 | 2; + build?: number; + loc?: string; + locValue?: number; + locBuild?: number; +}; + +export type Auth = { + alwaysAuth?: boolean; + _auth?: string; + username?: string; + password?: string; + email?: string; + token?: string; +}; + +export type Env = { + cwd: string; + color: boolean; + systemUser: boolean; + wsl: boolean; + npmAuth?: Record; + auth: Record; + upstream: boolean; + upstreamRegistry: string; + registry: string; + namespace: string; + editorVersion: string | null; + region: Region; + manifestPath: string; +}; + +export type Dist = { + tarball: string; + shasum: string; + integrity: string; +}; + +export type PkgVersion = { + unity: string; + unityRelease: string; + dependencies: Record; + license?: string; + displayName: string; + description?: string; + keywords?: string[]; + homepage: string; + dist?: Dist; +}; + +export type PkgInfo = { + name: PkgName; + versions: Record; + "dist-tags": { latest?: PkgVersionName }; + version?: PkgVersionName; + description?: string; + keywords?: string[]; + time: Record<"created" | "modified" | PkgVersionName, string>; + date?: Date; +}; + +export type NameVersionPair = { + name: PkgName; + version: PkgVersionName; +}; + +export type Dependency = { + name: PkgName; + version: PkgVersionName; + upstream: boolean; + self: boolean; + internal: boolean; + reason: string | null; + resolved?: boolean; +}; + +export type ScopedRegistry = { + name: string; + url: string; + scopes: PkgName[]; +}; + +export type PkgManifest = { + dependencies: Record; + scopedRegistries: ScopedRegistry[]; + testables: string[]; +}; + +export type GlobalOptions = { + registry?: Registry; + verbose: boolean; + color: boolean; + upstream: boolean; + cn: boolean; + systemUser: boolean; + wsl: boolean; + chdir: string; +}; + +export type UPMConfig = { + npmAuth?: Record; +}; + +export type NpmFetchOptions = { + log: Logger; + registry: Registry; + alwaysAuth?: boolean; + email?: string; + password?: string; + token?: string; + username?: string; +}; diff --git a/lib/utils/process.js b/lib/utils/process.js deleted file mode 100644 index f1e91c1c..00000000 --- a/lib/utils/process.js +++ /dev/null @@ -1,35 +0,0 @@ -const childProcess = require("child_process"); - -/** - * @param {string} command A shell command to execute - * @return {Promise} A promise that resolve to the output of the shell command, or an error - * @example const output = await execute("ls -alh"); - */ -function execute(command, { trim }) { - /** - * @param {Function} resolve A function that resolves the promise - * @param {Function} reject A function that fails the promise - * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise - */ - return new Promise(function(resolve, reject) { - /** - * @param {Error} error An error triggered during the execution of the childProcess.exec command - * @param {string|Buffer} stdout The result of the shell command execution - * @param {string|Buffer} stderr The error resulting of the shell command execution - * @see https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback - */ - childProcess.exec(command, function(error, stdout, stderr) { - if (error) { - reject(); - return; - } - if (stderr) { - reject(stderr); - return; - } - resolve(trim ? stdout.trim() : stdout); - }); - }); -} - -module.exports = { execute }; diff --git a/lib/utils/process.ts b/lib/utils/process.ts new file mode 100644 index 00000000..c6212f07 --- /dev/null +++ b/lib/utils/process.ts @@ -0,0 +1,34 @@ +import childProcess from "child_process"; + +/** + * @param command A shell command to execute + * @return A promise that resolve to the output of the shell command, or an error + * @example const output = await execute("ls -alh"); + */ +export default function execute(command: string, {trim}: { trim: boolean }): Promise { + /** + * @param {Function} resolve A function that resolves the promise + * @param {Function} reject A function that fails the promise + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise + */ + return new Promise(function (resolve, reject) { + /** + * @param {Error} error An error triggered during the execution of the childProcess.exec command + * @param {string|Buffer} stdout The result of the shell command execution + * @param {string|Buffer} stderr The error resulting of the shell command execution + * @see https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback + */ + childProcess.exec(command, function (error, stdout, stderr) { + if (error) { + reject(); + return; + } + if (stderr) { + reject(stderr); + return; + } + resolve(trim ? stdout.trim() : stdout); + }); + }); +} + diff --git a/package-lock.json b/package-lock.json index 8e0a9d41..73052625 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,7 +36,14 @@ "@babel/eslint-parser": "^7.17.0", "@semantic-release/changelog": "^6.0.1", "@semantic-release/git": "^10.0.1", + "@types/cli-table": "^0.3.2", + "@types/libnpmsearch": "^2.0.4", + "@types/lodash": "^4.14.199", "@types/node": "^20.8.6", + "@types/npmlog": "^4.1.4", + "@types/pkginfo": "^0.4.1", + "@types/promptly": "^3.0.3", + "@types/update-notifier": "^6.0.5", "cross-env": "^7.0.3", "eslint": "^8.15.0", "eslint-config-prettier": "^8.5.0", @@ -45,7 +52,7 @@ "mocha": "^10.0.0", "nock": "^13.2.4", "prettier": "^2.6.2", - "semantic-release": "^19.0.2", + "semantic-release": "^19.0.3", "should": "^13.2.3", "test-console": "^2.0.0", "typescript": "^5.2.2" @@ -1024,6 +1031,34 @@ "node": ">= 10" } }, + "node_modules/@types/cli-table": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@types/cli-table/-/cli-table-0.3.2.tgz", + "integrity": "sha512-yEwKAYmZsgb59xHtNRXaQAloxrm5xr8CQcrYerYlPK+3nwhPk1VC3QFwuiCd/jVWFu2hm4uFiiWDCJQSKhkROQ==", + "dev": true + }, + "node_modules/@types/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@types/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-GUvNiia85zTDDIx0iPrtF3pI8dwrQkfuokEqxqPDE55qxH0U5SZz4awVZjiJLWN2ZZRkXCUqgsMUbygXY+kytA==", + "dev": true + }, + "node_modules/@types/libnpmsearch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/libnpmsearch/-/libnpmsearch-2.0.4.tgz", + "integrity": "sha512-2qlwrkVckDG+0AcMxr41hURNNZCJUhJ74/hkMjaW4/z5eT2zRYlTaSdUIjPnQYH2YTM0SSa1qKTcpO9g+zzlgw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/npm-registry-fetch": "*" + } + }, + "node_modules/@types/lodash": { + "version": "4.14.199", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz", + "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==", + "dev": true + }, "node_modules/@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -1039,24 +1074,274 @@ "undici-types": "~5.25.1" } }, + "node_modules/@types/node-fetch": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/node-fetch/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "dev": true }, + "node_modules/@types/npm-package-arg": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@types/npm-package-arg/-/npm-package-arg-6.1.2.tgz", + "integrity": "sha512-K7TdZq7dTZKKgxaFGLR6VPAeNMDM7GwTELlVNyzQ0KKc6Du3+SYYRXFNEDrsCptpEpMjMNKVlb/5/ZNS/MeHjw==", + "dev": true + }, + "node_modules/@types/npm-registry-fetch": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/@types/npm-registry-fetch/-/npm-registry-fetch-8.0.5.tgz", + "integrity": "sha512-mAyQmKTF/4dhXTeSicltEtMO+Vj/LEUoBkMgDn9tS2fGp8IsrZPkYv2GH0KKBcbFLXUq67wuzYwl0DCZGeRcpw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/node-fetch": "*", + "@types/npm-package-arg": "*", + "@types/npmlog": "*", + "@types/ssri": "*" + } + }, + "node_modules/@types/npmlog": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.4.tgz", + "integrity": "sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==", + "dev": true + }, "node_modules/@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "node_modules/@types/pkginfo": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/pkginfo/-/pkginfo-0.4.1.tgz", + "integrity": "sha512-zdrklc4j/o5Nlp/O2JMn2t2lzVaPHeDUV4XD27PAJFqOnEP9dhWGEbsOucp9i4W02p4OtrzL7Up5fZ+ZzyKuKg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/promptly": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/promptly/-/promptly-3.0.3.tgz", + "integrity": "sha512-eM4RvsPy0cT37wJHTcOWvemIyPzBoSKEATp2OO4ptKeSrcNjMwGpDsUSBuBHuleC/datJW7A6NUlBAZsZGJmpA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "node_modules/@types/ssri": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@types/ssri/-/ssri-7.1.2.tgz", + "integrity": "sha512-Mbo/NaBiZlXNlOFTLK+PXeVEzKFxi+ZVELuzmk4VxdRz6aqKpmP9bhcNqsIB2c/s78355WBHwUCGYhQDydcfEg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/update-notifier": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/@types/update-notifier/-/update-notifier-6.0.5.tgz", + "integrity": "sha512-uUOhxsJ3edPHu06r3k4I2yJ4eoyqBt+53ra9+caXEx0ruoPwqNHTlkq75CUvI4yWsrCA5+31tih+opunLCYnXw==", + "dev": true, + "dependencies": { + "@types/configstore": "*", + "boxen": "^7.0.0" + } + }, + "node_modules/@types/update-notifier/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@types/update-notifier/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/update-notifier/node_modules/boxen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "dev": true, + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@types/update-notifier/node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@types/update-notifier/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@types/update-notifier/node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@types/update-notifier/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@types/update-notifier/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@types/update-notifier/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@types/update-notifier/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@types/update-notifier/node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dev": true, + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@types/update-notifier/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@ungap/promise-all-settled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", @@ -2406,6 +2691,12 @@ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", "integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==" }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -10534,6 +10825,34 @@ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" }, + "@types/cli-table": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@types/cli-table/-/cli-table-0.3.2.tgz", + "integrity": "sha512-yEwKAYmZsgb59xHtNRXaQAloxrm5xr8CQcrYerYlPK+3nwhPk1VC3QFwuiCd/jVWFu2hm4uFiiWDCJQSKhkROQ==", + "dev": true + }, + "@types/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@types/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-GUvNiia85zTDDIx0iPrtF3pI8dwrQkfuokEqxqPDE55qxH0U5SZz4awVZjiJLWN2ZZRkXCUqgsMUbygXY+kytA==", + "dev": true + }, + "@types/libnpmsearch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/libnpmsearch/-/libnpmsearch-2.0.4.tgz", + "integrity": "sha512-2qlwrkVckDG+0AcMxr41hURNNZCJUhJ74/hkMjaW4/z5eT2zRYlTaSdUIjPnQYH2YTM0SSa1qKTcpO9g+zzlgw==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/npm-registry-fetch": "*" + } + }, + "@types/lodash": { + "version": "4.14.199", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz", + "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==", + "dev": true + }, "@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -10549,24 +10868,209 @@ "undici-types": "~5.25.1" } }, + "@types/node-fetch": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw==", + "dev": true, + "requires": { + "@types/node": "*", + "form-data": "^4.0.0" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, "@types/normalize-package-data": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "dev": true }, + "@types/npm-package-arg": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@types/npm-package-arg/-/npm-package-arg-6.1.2.tgz", + "integrity": "sha512-K7TdZq7dTZKKgxaFGLR6VPAeNMDM7GwTELlVNyzQ0KKc6Du3+SYYRXFNEDrsCptpEpMjMNKVlb/5/ZNS/MeHjw==", + "dev": true + }, + "@types/npm-registry-fetch": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/@types/npm-registry-fetch/-/npm-registry-fetch-8.0.5.tgz", + "integrity": "sha512-mAyQmKTF/4dhXTeSicltEtMO+Vj/LEUoBkMgDn9tS2fGp8IsrZPkYv2GH0KKBcbFLXUq67wuzYwl0DCZGeRcpw==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/node-fetch": "*", + "@types/npm-package-arg": "*", + "@types/npmlog": "*", + "@types/ssri": "*" + } + }, + "@types/npmlog": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.4.tgz", + "integrity": "sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==", + "dev": true + }, "@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "@types/pkginfo": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/pkginfo/-/pkginfo-0.4.1.tgz", + "integrity": "sha512-zdrklc4j/o5Nlp/O2JMn2t2lzVaPHeDUV4XD27PAJFqOnEP9dhWGEbsOucp9i4W02p4OtrzL7Up5fZ+ZzyKuKg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/promptly": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/promptly/-/promptly-3.0.3.tgz", + "integrity": "sha512-eM4RvsPy0cT37wJHTcOWvemIyPzBoSKEATp2OO4ptKeSrcNjMwGpDsUSBuBHuleC/datJW7A6NUlBAZsZGJmpA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "@types/ssri": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@types/ssri/-/ssri-7.1.2.tgz", + "integrity": "sha512-Mbo/NaBiZlXNlOFTLK+PXeVEzKFxi+ZVELuzmk4VxdRz6aqKpmP9bhcNqsIB2c/s78355WBHwUCGYhQDydcfEg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/update-notifier": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/@types/update-notifier/-/update-notifier-6.0.5.tgz", + "integrity": "sha512-uUOhxsJ3edPHu06r3k4I2yJ4eoyqBt+53ra9+caXEx0ruoPwqNHTlkq75CUvI4yWsrCA5+31tih+opunLCYnXw==", + "dev": true, + "requires": { + "@types/configstore": "*", + "boxen": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "boxen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "dev": true, + "requires": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" + } + }, + "camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "dev": true + }, + "chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true + }, + "cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true + }, + "widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dev": true, + "requires": { + "string-width": "^5.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, "@ungap/promise-all-settled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", @@ -11591,6 +12095,12 @@ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", "integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==" }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", diff --git a/package.json b/package.json index 4399afa0..83471633 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ }, "main": "index.js", "scripts": { - "test": "cross-env NODE_ENV=test mocha", + "test": "tsc && cross-env NODE_ENV=test mocha", "semantic-release": "semantic-release" }, "bin": { @@ -35,7 +35,14 @@ "@babel/eslint-parser": "^7.17.0", "@semantic-release/changelog": "^6.0.1", "@semantic-release/git": "^10.0.1", + "@types/cli-table": "^0.3.2", + "@types/libnpmsearch": "^2.0.4", + "@types/lodash": "^4.14.199", "@types/node": "^20.8.6", + "@types/npmlog": "^4.1.4", + "@types/pkginfo": "^0.4.1", + "@types/promptly": "^3.0.3", + "@types/update-notifier": "^6.0.5", "cross-env": "^7.0.3", "eslint": "^8.15.0", "eslint-config-prettier": "^8.5.0", diff --git a/test/test-cmd-add.js b/test/test-cmd-add.js index b0f14844..1f2e0267 100644 --- a/test/test-cmd-add.js +++ b/test/test-cmd-add.js @@ -4,8 +4,8 @@ const assert = require("assert"); const nock = require("nock"); const should = require("should"); -const { parseEnv, loadManifest } = require("../lib/core"); -const add = require("../lib/cmd-add"); +const { parseEnv, loadManifest } = require("../build/lib/core"); +const { add } = require("../build/lib/cmd-add"); const { getWorkDir, createWorkDir, @@ -13,41 +13,41 @@ const { getInspects, getOutputs, nockUp, - nockDown + nockDown, } = require("./utils"); -describe("cmd-add.js", function() { +describe("cmd-add.ts", function () { const options = { _global: { registry: "http://example.com", upstream: false, - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; const upstreamOptions = { _global: { registry: "http://example.com", upstream: true, - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; const testableOptions = { _global: { registry: "http://example.com", upstream: false, - chdir: getWorkDir("test-openupm-cli") + chdir: getWorkDir("test-openupm-cli"), }, - test: true + test: true, }; const forceOptions = { _global: { registry: "http://example.com", upstream: false, - chdir: getWorkDir("test-openupm-cli") + chdir: getWorkDir("test-openupm-cli"), }, - force: true + force: true, }; - describe("add", function() { + describe("add", function () { let stdoutInspect = null; let stderrInspect = null; const remotePkgInfoA = { @@ -56,17 +56,17 @@ describe("cmd-add.js", function() { "0.1.0": { name: "com.base.package-a", version: "0.1.0", - dependencies: {} + dependencies: {}, }, "1.0.0": { name: "com.base.package-a", version: "1.0.0", - dependencies: {} - } + dependencies: {}, + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; const remotePkgInfoB = { name: "com.base.package-b", @@ -74,12 +74,12 @@ describe("cmd-add.js", function() { "1.0.0": { name: "com.base.package-b", version: "1.0.0", - dependencies: {} - } + dependencies: {}, + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; const remotePkgInfoC = { name: "com.base.package-c", @@ -89,13 +89,13 @@ describe("cmd-add.js", function() { version: "1.0.0", dependencies: { "com.base.package-d": "1.0.0", - "com.unity.modules.x": "1.0.0" - } - } + "com.unity.modules.x": "1.0.0", + }, + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; const remotePkgInfoD = { name: "com.base.package-d", @@ -104,13 +104,13 @@ describe("cmd-add.js", function() { name: "com.base.package-d", version: "1.0.0", dependencies: { - "com.upstream.package-up": "1.0.0" - } - } + "com.upstream.package-up": "1.0.0", + }, + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; const remotePkgInfoWithLowerEditorVersion = { name: "com.base.package-with-lower-editor-version", @@ -119,12 +119,12 @@ describe("cmd-add.js", function() { name: "com.base.package-with-lower-editor-version", version: "1.0.0", unity: "2019.1", - unityRelease: "0b1" - } + unityRelease: "0b1", + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; const remotePkgInfoWithHigherEditorVersion = { name: "com.base.package-with-higher-editor-version", @@ -132,12 +132,12 @@ describe("cmd-add.js", function() { "1.0.0": { name: "com.base.package-with-higher-editor-version", version: "1.0.0", - unity: "2020.2" - } + unity: "2020.2", + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; const remotePkgInfoWithWrongEditorVersion = { name: "com.base.package-with-wrong-editor-version", @@ -145,12 +145,12 @@ describe("cmd-add.js", function() { "1.0.0": { name: "com.base.package-with-wrong-editor-version", version: "1.0.0", - unity: "2020" - } + unity: "2020", + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; const remotePkgInfoUp = { name: "com.upstream.package-up", @@ -158,76 +158,76 @@ describe("cmd-add.js", function() { "1.0.0": { name: "com.upstream.package-up", version: "1.0.0", - dependencies: {} - } + dependencies: {}, + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; const defaultManifest = { - dependencies: {} + dependencies: {}, }; const expectedManifestA = { dependencies: { - "com.base.package-a": "1.0.0" + "com.base.package-a": "1.0.0", }, scopedRegistries: [ { name: "example.com", scopes: ["com.base.package-a", "com.example"], - url: "http://example.com" - } - ] + url: "http://example.com", + }, + ], }; const expectedManifestAB = { dependencies: { "com.base.package-a": "1.0.0", - "com.base.package-b": "1.0.0" + "com.base.package-b": "1.0.0", }, scopedRegistries: [ { name: "example.com", scopes: ["com.base.package-a", "com.base.package-b", "com.example"], - url: "http://example.com" - } - ] + url: "http://example.com", + }, + ], }; const expectedManifestC = { dependencies: { - "com.base.package-c": "1.0.0" + "com.base.package-c": "1.0.0", }, scopedRegistries: [ { name: "example.com", scopes: ["com.base.package-c", "com.base.package-d", "com.example"], - url: "http://example.com" - } - ] + url: "http://example.com", + }, + ], }; const expectedManifestUpstream = { dependencies: { - "com.upstream.package-up": "1.0.0" - } + "com.upstream.package-up": "1.0.0", + }, }; const expectedManifestTestable = { dependencies: { - "com.base.package-a": "1.0.0" + "com.base.package-a": "1.0.0", }, scopedRegistries: [ { name: "example.com", scopes: ["com.base.package-a", "com.example"], - url: "http://example.com" - } + url: "http://example.com", + }, ], - testables: ["com.base.package-a"] + testables: ["com.base.package-a"], }; - beforeEach(function() { + beforeEach(function () { removeWorkDir("test-openupm-cli"); createWorkDir("test-openupm-cli", { manifest: true, - editorVersion: "2019.2.13f1" + editorVersion: "2019.2.13f1", }); nockUp(); nock("http://example.com") @@ -250,24 +250,21 @@ describe("cmd-add.js", function() { .persist() .get("/com.base.package-with-lower-editor-version") .reply(200, remotePkgInfoWithLowerEditorVersion, { - "Content-Type": "application/json" + "Content-Type": "application/json", }); nock("http://example.com") .persist() .get("/com.base.package-with-higher-editor-version") .reply(200, remotePkgInfoWithHigherEditorVersion, { - "Content-Type": "application/json" + "Content-Type": "application/json", }); nock("http://example.com") .persist() .get("/com.base.package-with-wrong-editor-version") .reply(200, remotePkgInfoWithWrongEditorVersion, { - "Content-Type": "application/json" + "Content-Type": "application/json", }); - nock("http://example.com") - .persist() - .get("/pkg-not-exist") - .reply(404); + nock("http://example.com").persist().get("/pkg-not-exist").reply(404); nock("http://example.com") .persist() .get("/com.upstream.package-up") @@ -276,7 +273,7 @@ describe("cmd-add.js", function() { .persist() .get("/com.upstream.package-up") .reply(200, remotePkgInfoUp, { - "Content-Type": "application/json" + "Content-Type": "application/json", }); nock("https://packages.unity.com") .persist() @@ -284,13 +281,13 @@ describe("cmd-add.js", function() { .reply(404); [stdoutInspect, stderrInspect] = getInspects(); }); - afterEach(function() { + afterEach(function () { removeWorkDir("test-openupm-cli"); nockDown(); stdoutInspect.restore(); stderrInspect.restore(); }); - it("add pkg", async function() { + it("add pkg", async function () { const retCode = await add("com.base.package-a", options); retCode.should.equal(0); const manifest = await loadManifest(); @@ -299,7 +296,7 @@ describe("cmd-add.js", function() { stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg@1.0.0", async function() { + it("add pkg@1.0.0", async function () { const retCode = await add("com.base.package-a@1.0.0", options); retCode.should.equal(0); const manifest = await loadManifest(); @@ -308,7 +305,7 @@ describe("cmd-add.js", function() { stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg@latest", async function() { + it("add pkg@latest", async function () { const retCode = await add("com.base.package-a@latest", options); retCode.should.equal(0); const manifest = await loadManifest(); @@ -317,7 +314,7 @@ describe("cmd-add.js", function() { stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg@0.1.0 then pkg@1.0.0", async function() { + it("add pkg@0.1.0 then pkg@1.0.0", async function () { const retCode1 = await add("com.base.package-a@0.1.0", options); retCode1.should.equal(0); const retCode2 = await add("com.base.package-a@1.0.0", options); @@ -328,7 +325,7 @@ describe("cmd-add.js", function() { stdout.includes("modified ").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add exited pkg version", async function() { + it("add exited pkg version", async function () { const retCode1 = await add("com.base.package-a@1.0.0", options); retCode1.should.equal(0); const retCode2 = await add("com.base.package-a@1.0.0", options); @@ -339,7 +336,7 @@ describe("cmd-add.js", function() { stdout.includes("existed ").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg@not-exist-version", async function() { + it("add pkg@not-exist-version", async function () { const retCode = await add("com.base.package-a@2.0.0", options); retCode.should.equal(1); const manifest = await loadManifest(); @@ -348,7 +345,7 @@ describe("cmd-add.js", function() { stdout.includes("version 2.0.0 is not a valid choice").should.be.ok(); stdout.includes("1.0.0").should.be.ok(); }); - it("add pkg@http", async function() { + it("add pkg@http", async function () { const gitUrl = "https://github.com/yo/com.base.package-a"; const retCode = await add("com.base.package-a@" + gitUrl, options); retCode.should.equal(0); @@ -358,7 +355,7 @@ describe("cmd-add.js", function() { stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg@git", async function() { + it("add pkg@git", async function () { const gitUrl = "git@github.com:yo/com.base.package-a"; const retCode = await add("com.base.package-a@" + gitUrl, options); retCode.should.equal(0); @@ -368,7 +365,7 @@ describe("cmd-add.js", function() { stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg@file", async function() { + it("add pkg@file", async function () { const fileUrl = "file../yo/com.base.package-a"; const retCode = await add("com.base.package-a@" + fileUrl, options); retCode.should.equal(0); @@ -378,7 +375,7 @@ describe("cmd-add.js", function() { stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg-not-exist", async function() { + it("add pkg-not-exist", async function () { const retCode = await add("pkg-not-exist", options); retCode.should.equal(1); const manifest = await loadManifest(); @@ -386,7 +383,7 @@ describe("cmd-add.js", function() { const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); }); - it("add more than one pkgs", async function() { + it("add more than one pkgs", async function () { const retCode = await add( ["com.base.package-a", "com.base.package-b"], options @@ -399,7 +396,7 @@ describe("cmd-add.js", function() { stdout.includes("added com.base.package-b").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg from upstream", async function() { + it("add pkg from upstream", async function () { const retCode = await add("com.upstream.package-up", upstreamOptions); retCode.should.equal(0); const manifest = await loadManifest(); @@ -408,7 +405,7 @@ describe("cmd-add.js", function() { stdout.includes("added com.upstream.package-up").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg-not-exist from upstream", async function() { + it("add pkg-not-exist from upstream", async function () { const retCode = await add("pkg-not-exist", upstreamOptions); retCode.should.equal(1); const manifest = await loadManifest(); @@ -416,7 +413,7 @@ describe("cmd-add.js", function() { const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); }); - it("add pkg with nested dependencies", async function() { + it("add pkg with nested dependencies", async function () { const retCode = await add("com.base.package-c@latest", upstreamOptions); retCode.should.equal(0); const manifest = await loadManifest(); @@ -425,7 +422,7 @@ describe("cmd-add.js", function() { stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg with tests", async function() { + it("add pkg with tests", async function () { const retCode = await add("com.base.package-a", testableOptions); retCode.should.equal(0); const manifest = await loadManifest(); @@ -434,7 +431,7 @@ describe("cmd-add.js", function() { stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg with lower editor version", async function() { + it("add pkg with lower editor version", async function () { const retCode = await add( "com.base.package-with-lower-editor-version", testableOptions @@ -444,7 +441,7 @@ describe("cmd-add.js", function() { stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg with higher editor version", async function() { + it("add pkg with higher editor version", async function () { const retCode = await add( "com.base.package-with-higher-editor-version", testableOptions @@ -453,7 +450,7 @@ describe("cmd-add.js", function() { const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("requires 2020.2 but found 2019.2.13f1").should.be.ok(); }); - it("force add pkg with higher editor version", async function() { + it("force add pkg with higher editor version", async function () { const retCode = await add( "com.base.package-with-higher-editor-version", forceOptions @@ -462,7 +459,7 @@ describe("cmd-add.js", function() { const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("requires 2020.2 but found 2019.2.13f1").should.be.ok(); }); - it("add pkg with wrong editor version", async function() { + it("add pkg with wrong editor version", async function () { const retCode = await add( "com.base.package-with-wrong-editor-version", testableOptions @@ -472,7 +469,7 @@ describe("cmd-add.js", function() { stdout.includes("2020 is not valid").should.be.ok(); console.log(stdout); }); - it("force add pkg with wrong editor version", async function() { + it("force add pkg with wrong editor version", async function () { const retCode = await add( "com.base.package-with-wrong-editor-version", forceOptions diff --git a/test/test-cmd-deps.js b/test/test-cmd-deps.js index 95dd3566..68d1cd0f 100644 --- a/test/test-cmd-deps.js +++ b/test/test-cmd-deps.js @@ -4,8 +4,8 @@ const assert = require("assert"); const nock = require("nock"); const should = require("should"); -const { parseEnv, loadManifest } = require("../lib/core"); -const deps = require("../lib/cmd-deps"); +const { parseEnv, loadManifest } = require("../build/lib/core"); +const { deps } = require("../build/lib/cmd-deps"); const { getWorkDir, createWorkDir, @@ -13,17 +13,17 @@ const { getInspects, getOutputs, nockUp, - nockDown + nockDown, } = require("./utils"); -describe("cmd-deps.js", function() { +describe("cmd-deps.ts", function () { const options = { _global: { registry: "http://example.com", - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; - describe("deps", function() { + describe("deps", function () { let stdoutInspect = null; let stderrInspect = null; const remotePkgInfoA = { @@ -33,13 +33,13 @@ describe("cmd-deps.js", function() { name: "com.example.package-a", version: "1.0.0", dependencies: { - "com.example.package-b": "1.0.0" - } - } + "com.example.package-b": "1.0.0", + }, + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; const remotePkgInfoB = { name: "com.example.package-b", @@ -48,13 +48,13 @@ describe("cmd-deps.js", function() { name: "com.example.package-b", version: "1.0.0", dependencies: { - "com.example.package-up": "1.0.0" - } - } + "com.example.package-up": "1.0.0", + }, + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; const remotePkgInfoUp = { name: "com.example.package-up", @@ -62,14 +62,14 @@ describe("cmd-deps.js", function() { "1.0.0": { name: "com.example.package-up", version: "1.0.0", - dependencies: {} - } + dependencies: {}, + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; - beforeEach(function() { + beforeEach(function () { removeWorkDir("test-openupm-cli"); createWorkDir("test-openupm-cli", { manifest: true }); nockUp(); @@ -79,69 +79,63 @@ describe("cmd-deps.js", function() { nock("http://example.com") .get("/com.example.package-b") .reply(200, remotePkgInfoB, { "Content-Type": "application/json" }); - nock("http://example.com") - .get("/pkg-not-exist") - .reply(404); - nock("http://example.com") - .get("/com.example.package-up") - .reply(404); + nock("http://example.com").get("/pkg-not-exist").reply(404); + nock("http://example.com").get("/com.example.package-up").reply(404); nock("https://packages.unity.com") .get("/com.example.package-up") .reply(200, remotePkgInfoUp, { - "Content-Type": "application/json" + "Content-Type": "application/json", }); - nock("https://packages.unity.com") - .get("/pkg-not-exist") - .reply(404); + nock("https://packages.unity.com").get("/pkg-not-exist").reply(404); [stdoutInspect, stderrInspect] = getInspects(); }); - afterEach(function() { + afterEach(function () { removeWorkDir("test-openupm-cli"); nockDown(); stdoutInspect.restore(); stderrInspect.restore(); }); - it("deps pkg", async function() { + it("deps pkg", async function () { const retCode = await deps("com.example.package-a", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-b").should.be.ok(); }); - it("deps pkg --deep", async function() { + it("deps pkg --deep", async function () { const retCode = await deps("com.example.package-a", { ...options, - deep: true + deep: true, }); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-b").should.be.ok(); stdout.includes("com.example.package-up").should.be.ok(); }); - it("deps pkg@latest", async function() { + it("deps pkg@latest", async function () { const retCode = await deps("com.example.package-a@latest", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-b").should.be.ok(); }); - it("deps pkg@1.0.0", async function() { + it("deps pkg@1.0.0", async function () { const retCode = await deps("com.example.package-a@1.0.0", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-b").should.be.ok(); }); - it("deps pkg@not-exist-version", async function() { + it("deps pkg@not-exist-version", async function () { const retCode = await deps("com.example.package-a@2.0.0", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("is not a valid choice").should.be.ok(); }); - it("deps pkg-not-exist", async function() { + it("deps pkg-not-exist", async function () { const retCode = await deps("pkg-not-exist", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("not found").should.be.ok(); }); - it("deps pkg upstream", async function() { + it("deps pkg upstream", async function () { const retCode = await deps("com.example.package-up", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); diff --git a/test/test-cmd-login.js b/test/test-cmd-login.js index b5edab71..bf0d55ac 100644 --- a/test/test-cmd-login.js +++ b/test/test-cmd-login.js @@ -7,9 +7,9 @@ const { validateRegistry, generateNpmrcLines, getNpmrcPath -} = require("../lib/cmd-login"); +} = require("../build/lib/cmd-login"); -describe("cmd-login.js", function() { +describe("cmd-login.ts", function() { describe("validateRegistry", function() { it("should validate http", async function() { validateRegistry("http://registry.npmjs.org/").should.be.ok(); diff --git a/test/test-cmd-remove.js b/test/test-cmd-remove.js index 398b42ec..9f66e7d6 100644 --- a/test/test-cmd-remove.js +++ b/test/test-cmd-remove.js @@ -3,24 +3,24 @@ const assert = require("assert"); const should = require("should"); -const { parseEnv, loadManifest } = require("../lib/core"); -const remove = require("../lib/cmd-remove"); +const { parseEnv, loadManifest } = require("../build/lib/core"); +const { remove } = require("../build/lib/cmd-remove"); const { getInspects, getOutputs, getWorkDir, createWorkDir, - removeWorkDir + removeWorkDir, } = require("./utils"); -describe("cmd-remove.js", function() { - describe("remove", function() { +describe("cmd-remove.ts", function () { + describe("remove", function () { let stdoutInspect = null; let stderrInspect = null; const defaultManifest = { dependencies: { "com.example.package-a": "1.0.0", - "com.example.package-b": "1.0.0" + "com.example.package-b": "1.0.0", }, scopedRegistries: [ { @@ -28,30 +28,30 @@ describe("cmd-remove.js", function() { scopes: [ "com.example", "com.example.package-a", - "com.example.package-b" + "com.example.package-b", ], - url: "http://example.com" - } - ] + url: "http://example.com", + }, + ], }; - beforeEach(function() { + beforeEach(function () { removeWorkDir("test-openupm-cli"); createWorkDir("test-openupm-cli", { - manifest: defaultManifest + manifest: defaultManifest, }); [stdoutInspect, stderrInspect] = getInspects(); }); - afterEach(function() { + afterEach(function () { removeWorkDir("test-openupm-cli"); stdoutInspect.restore(); stderrInspect.restore(); }); - it("remove pkg", async function() { + it("remove pkg", async function () { const options = { _global: { registry: "http://example.com", - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; const retCode = await remove("com.example.package-a", options); retCode.should.equal(0); @@ -61,18 +61,18 @@ describe("cmd-remove.js", function() { ).should.be.ok(); manifest.scopedRegistries[0].scopes.should.be.deepEqual([ "com.example", - "com.example.package-b" + "com.example.package-b", ]); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("removed ").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("remove pkg@1.0.0", async function() { + it("remove pkg@1.0.0", async function () { const options = { _global: { registry: "http://example.com", - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; const retCode = await remove("com.example.package-a@1.0.0", options); retCode.should.equal(1); @@ -81,12 +81,12 @@ describe("cmd-remove.js", function() { const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("please replace").should.be.ok(); }); - it("remove pkg-not-exist", async function() { + it("remove pkg-not-exist", async function () { const options = { _global: { registry: "http://example.com", - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; const retCode = await remove("pkg-not-exist", options); retCode.should.equal(1); @@ -95,12 +95,12 @@ describe("cmd-remove.js", function() { const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); }); - it("remove more than one pkgs", async function() { + it("remove more than one pkgs", async function () { const options = { _global: { registry: "http://example.com", - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; const retCode = await remove( ["com.example.package-a", "com.example.package-b"], diff --git a/test/test-cmd-search.js b/test/test-cmd-search.js index dc7622e0..d9060ded 100644 --- a/test/test-cmd-search.js +++ b/test/test-cmd-search.js @@ -4,7 +4,7 @@ const assert = require("assert"); const nock = require("nock"); const should = require("should"); -const search = require("../lib/cmd-search"); +const { search } = require("../build/lib/cmd-search"); const { getWorkDir, createWorkDir, @@ -12,38 +12,38 @@ const { getInspects, getOutputs, nockUp, - nockDown + nockDown, } = require("./utils"); -describe("cmd-search.js", function() { +describe("cmd-search.ts", function () { let stdoutInspect = null; let stderrInspect = null; const options = { _global: { registry: "http://example.com", upstream: false, - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; const upstreamOptions = { _global: { registry: "http://example.com", - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; - beforeEach(function() { + beforeEach(function () { removeWorkDir("test-openupm-cli"); createWorkDir("test-openupm-cli", { manifest: true }); removeWorkDir("test-openupm-cli"); createWorkDir("test-openupm-cli", { manifest: true }); [stdoutInspect, stderrInspect] = getInspects(); }); - afterEach(function() { + afterEach(function () { removeWorkDir("test-openupm-cli"); stdoutInspect.restore(); stderrInspect.restore(); }); - describe("search endpoint", function() { + describe("search endpoint", function () { const searchEndpointResult = { objects: [ { @@ -52,16 +52,16 @@ describe("cmd-search.js", function() { scope: "unscoped", "dist-tags": { latest: "1.0.0" }, versions: { - "1.0.0": "latest" + "1.0.0": "latest", }, description: "A demo package", time: { - modified: "2019-10-02T04:02:38.335Z" + modified: "2019-10-02T04:02:38.335Z", }, links: {}, author: { name: "yo", url: "https://github.com/yo" }, publisher: { username: "yo", email: "yo@example.com" }, - maintainers: [{ username: "yo", email: "yo@example.com" }] + maintainers: [{ username: "yo", email: "yo@example.com" }], }, flags: { unstable: true }, score: { @@ -69,37 +69,37 @@ describe("cmd-search.js", function() { detail: { quality: 0.64303646684878, popularity: 0.0034858628087645178, - maintenance: 0.3329285640997383 - } + maintenance: 0.3329285640997383, + }, }, - searchScore: 0.000005798558 - } + searchScore: 0.000005798558, + }, ], total: 1, - time: "Sat Dec 07 2019 04:57:11 GMT+0000 (UTC)" + time: "Sat Dec 07 2019 04:57:11 GMT+0000 (UTC)", }; const searchEndpointEmptyResult = { objects: [], total: 0, - time: "Sat Dec 07 2019 05:07:42 GMT+0000 (UTC)" + time: "Sat Dec 07 2019 05:07:42 GMT+0000 (UTC)", }; - beforeEach(function() { + beforeEach(function () { nockUp(); nock("http://example.com") .get(/-\/v1\/search\?text=package-a/) .reply(200, searchEndpointResult, { - "Content-Type": "application/json" + "Content-Type": "application/json", }); nock("http://example.com") .get(/-\/v1\/search\?text=pkg-not-exist/) .reply(200, searchEndpointEmptyResult, { - "Content-Type": "application/json" + "Content-Type": "application/json", }); }); - afterEach(function() { + afterEach(function () { nockDown(); }); - it("simple", async function() { + it("simple", async function () { const retCode = await search("package-a", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); @@ -107,7 +107,7 @@ describe("cmd-search.js", function() { stdout.includes("1.0.0").should.be.ok(); stdout.includes("2019-10-02").should.be.ok(); }); - it("pkg not exist", async function() { + it("pkg not exist", async function () { const retCode = await search("pkg-not-exist", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); @@ -115,7 +115,7 @@ describe("cmd-search.js", function() { }); }); - describe("old search", function() { + describe("old search", function () { const allResult = { _updated: 99999, "com.example.package-a": { @@ -126,34 +126,32 @@ describe("cmd-search.js", function() { author: { name: "yo", url: "https://github.com/yo" }, repository: { type: "git", - url: "git+https://github.com/yo/com.example.package-a.git" + url: "git+https://github.com/yo/com.example.package-a.git", }, readmeFilename: "README.md", homepage: "https://github.com/yo/com.example.package-a#readme", bugs: { - url: "https://github.com/yo/com.example.package-a/issues" + url: "https://github.com/yo/com.example.package-a/issues", }, license: "MIT", time: { modified: "2019-10-02T18:22:51.000Z" }, - versions: { "1.0.0": "latest" } - } + versions: { "1.0.0": "latest" }, + }, }; - beforeEach(function() { + beforeEach(function () { nockUp(); nock("http://example.com") .persist() .get(/-\/v1\/search\?text=/) .reply(404); }); - afterEach(function() { + afterEach(function () { nockDown(); }); - it("from remote", async function() { - nock("http://example.com") - .get("/-/all") - .reply(200, allResult, { - "Content-Type": "application/json" - }); + it("from remote", async function () { + nock("http://example.com").get("/-/all").reply(200, allResult, { + "Content-Type": "application/json", + }); const retCode = await search("package-a", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); @@ -162,12 +160,10 @@ describe("cmd-search.js", function() { stdout.includes("1.0.0").should.be.ok(); stdout.includes("2019-10-02").should.be.ok(); }); - it("pkg not exist", async function() { - nock("http://example.com") - .get("/-/all") - .reply(200, allResult, { - "Content-Type": "application/json" - }); + it("pkg not exist", async function () { + nock("http://example.com").get("/-/all").reply(200, allResult, { + "Content-Type": "application/json", + }); const retCode = await search("pkg-not-exist", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); diff --git a/test/test-cmd-view.js b/test/test-cmd-view.js index 94a463ba..c2bda8e3 100644 --- a/test/test-cmd-view.js +++ b/test/test-cmd-view.js @@ -3,8 +3,8 @@ const assert = require("assert"); const nock = require("nock"); const should = require("should"); -const { parseEnv, loadManifest } = require("../lib/core"); -const view = require("../lib/cmd-view"); +const { parseEnv, loadManifest } = require("../build/lib/core"); +const { view } = require("../build/lib/cmd-view"); const { getWorkDir, createWorkDir, @@ -12,24 +12,24 @@ const { getInspects, getOutputs, nockUp, - nockDown + nockDown, } = require("./utils"); -describe("cmd-view.js", function() { +describe("cmd-view.ts", function () { const options = { _global: { registry: "http://example.com", upstream: false, - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; const upstreamOptions = { _global: { registry: "http://example.com", - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; - describe("view", function() { + describe("view", function () { let stdoutInspect = null; let stderrInspect = null; const remotePkgInfoA = { @@ -39,7 +39,7 @@ describe("cmd-view.js", function() { name: "com.example.package-a", displayName: "Package A", author: { - name: "batman" + name: "batman", }, version: "1.0.0", unity: "2018.4", @@ -47,7 +47,7 @@ describe("cmd-view.js", function() { keywords: [""], category: "Unity", dependencies: { - "com.example.package-a": "^1.0.0" + "com.example.package-a": "^1.0.0", }, gitHead: "5c141ecfac59c389090a07540f44c8ac5d07a729", readmeFilename: "README.md", @@ -59,24 +59,24 @@ describe("cmd-view.js", function() { "sha512-MAh44bur7HGyfbCXH9WKfaUNS67aRMfO0VAbLkr+jwseb1hJue/I1pKsC7PKksuBYh4oqoo9Jov1cBcvjVgjmA==", shasum: "516957cac4249f95cafab0290335def7d9703db7", tarball: - "https://cdn.example.com/com.example.package-a/com.example.package-a-1.0.0.tgz" + "https://cdn.example.com/com.example.package-a/com.example.package-a-1.0.0.tgz", }, - contributors: [] - } + contributors: [], + }, }, time: { modified: "2019-11-28T18:51:58.123Z", created: "2019-11-28T18:51:58.123Z", - "1.0.0": "2019-11-28T18:51:58.123Z" + "1.0.0": "2019-11-28T18:51:58.123Z", }, users: {}, "dist-tags": { - latest: "1.0.0" + latest: "1.0.0", }, _rev: "3-418f950115c32bd0", _id: "com.example.package-a", readme: "A demo package", - _attachments: {} + _attachments: {}, }; const remotePkgInfoUp = { name: "com.example.package-up", @@ -85,7 +85,7 @@ describe("cmd-view.js", function() { name: "com.example.package-up", displayName: "Package A", author: { - name: "batman" + name: "batman", }, version: "1.0.0", unity: "2018.4", @@ -93,7 +93,7 @@ describe("cmd-view.js", function() { keywords: [""], category: "Unity", dependencies: { - "com.example.package-up": "^1.0.0" + "com.example.package-up": "^1.0.0", }, gitHead: "5c141ecfac59c389090a07540f44c8ac5d07a729", readmeFilename: "README.md", @@ -105,79 +105,73 @@ describe("cmd-view.js", function() { "sha512-MAh44bur7HGyfbCXH9WKfaUNS67aRMfO0VAbLkr+jwseb1hJue/I1pKsC7PKksuBYh4oqoo9Jov1cBcvjVgjmA==", shasum: "516957cac4249f95cafab0290335def7d9703db7", tarball: - "https://cdn.example.com/com.example.package-up/com.example.package-up-1.0.0.tgz" + "https://cdn.example.com/com.example.package-up/com.example.package-up-1.0.0.tgz", }, - contributors: [] - } + contributors: [], + }, }, time: { modified: "2019-11-28T18:51:58.123Z", created: "2019-11-28T18:51:58.123Z", - "1.0.0": "2019-11-28T18:51:58.123Z" + "1.0.0": "2019-11-28T18:51:58.123Z", }, users: {}, "dist-tags": { - latest: "1.0.0" + latest: "1.0.0", }, _rev: "3-418f950115c32bd0", _id: "com.example.package-up", readme: "A demo package", - _attachments: {} + _attachments: {}, }; - beforeEach(function() { + beforeEach(function () { removeWorkDir("test-openupm-cli"); createWorkDir("test-openupm-cli", { manifest: true }); nockUp(); nock("http://example.com") .get("/com.example.package-a") .reply(200, remotePkgInfoA, { "Content-Type": "application/json" }); - nock("http://example.com") - .get("/pkg-not-exist") - .reply(404); - nock("http://example.com") - .get("/com.example.package-up") - .reply(404); + nock("http://example.com").get("/pkg-not-exist").reply(404); + nock("http://example.com").get("/com.example.package-up").reply(404); nock("https://packages.unity.com") .get("/com.example.package-up") .reply(200, remotePkgInfoUp, { - "Content-Type": "application/json" + "Content-Type": "application/json", }); - nock("https://packages.unity.com") - .get("/pkg-not-exist") - .reply(404); + nock("https://packages.unity.com").get("/pkg-not-exist").reply(404); [stdoutInspect, stderrInspect] = getInspects(); }); - afterEach(function() { + afterEach(function () { removeWorkDir("test-openupm-cli"); nockDown(); stdoutInspect.restore(); stderrInspect.restore(); }); - it("view pkg", async function() { + it("view pkg", async function () { const retCode = await view("com.example.package-a", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-a@1.0.0").should.be.ok(); }); - it("view pkg@1.0.0", async function() { + it("view pkg@1.0.0", async function () { const retCode = await view("com.example.package-a@1.0.0", options); retCode.should.equal(1); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("please replace").should.be.ok(); }); - it("view pkg-not-exist", async function() { + it("view pkg-not-exist", async function () { const retCode = await view("pkg-not-exist", options); retCode.should.equal(1); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); }); - it("view pkg from upstream", async function() { + it("view pkg from upstream", async function () { const retCode = await view("com.example.package-up", upstreamOptions); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-up@1.0.0").should.be.ok(); }); - it("view pkg-not-exist from upstream", async function() { + it("view pkg-not-exist from upstream", async function () { const retCode = await view("pkg-not-exist", upstreamOptions); retCode.should.equal(1); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); diff --git a/test/test-core.js b/test/test-core.js index 0a07393c..bc1fe13b 100644 --- a/test/test-core.js +++ b/test/test-core.js @@ -16,7 +16,7 @@ const { parseName, saveManifest, isInternalPackage -} = require("../lib/core"); +} = require("../build/lib/core"); const { getWorkDir, createWorkDir, @@ -27,7 +27,7 @@ const { nockDown } = require("./utils"); -describe("cmd-core.js", function() { +describe("cmd-core.ts", function() { describe("parseName", function() { it("pkg@version", function() { parseName("pkg@1.0.0").should.deepEqual({ diff --git a/tsconfig.json b/tsconfig.json index 17b19bf6..4f54999c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -41,7 +41,7 @@ // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ + "resolveJsonModule": true, /* Enable importing .json files. */ // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ From 7aece473ccf51b7badccee64e0d018e5eb34bfc3 Mon Sep 17 00:00:00 2001 From: Ramon Brullo Date: Mon, 16 Oct 2023 12:06:11 +0200 Subject: [PATCH 005/201] fix: eslint-prettier error When attempting to fix eslint rules in file, the following error appeared ```Error: "prettier/vue" has been merged into "prettier" in eslint-config-prettier 8.0.0. See: https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md#version-800-2021-02-21``` Reading the linked changelog, it seemed the fix was to simply only use the prettier/recommended extension. Simplified eslintrc to reflect this. --- .eslintrc.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index fe83a0f9..be58536d 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -5,8 +5,6 @@ module.exports = { }, extends: [ "eslint:recommended", - "plugin:vue/recommended", - "prettier/vue", "plugin:prettier/recommended" ], rules: { From 9ca868f346345dac3b03edd5ef75b645f192ed83 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 18 Oct 2023 18:59:25 +0200 Subject: [PATCH 006/201] fix: eslint errors in typescript-files Eslint was complaining about various keywords being reserved and was unerlining them. Fixed by installing `typescript-eslint` according to [this guide](https://typescript-eslint.io/getting-started) --- .eslintrc.js | 13 +- package-lock.json | 953 +++++++++++++++++++++++++++++++++++++--------- package.json | 4 +- 3 files changed, 776 insertions(+), 194 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index be58536d..1705e73b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,14 +1,17 @@ module.exports = { root: true, env: { - node: true + node: true, }, extends: [ "eslint:recommended", - "plugin:prettier/recommended" + "plugin:prettier/recommended", + "plugin:@typescript-eslint/recommended", ], rules: { "no-console": process.env.NODE_ENV === "production" ? "error" : "off", - "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off" - } -} + "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off", + }, + parser: "@typescript-eslint/parser", + plugins: ["@typescript-eslint"], +}; diff --git a/package-lock.json b/package-lock.json index 73052625..b7d77ab5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,8 +44,10 @@ "@types/pkginfo": "^0.4.1", "@types/promptly": "^3.0.3", "@types/update-notifier": "^6.0.5", + "@typescript-eslint/eslint-plugin": "^6.8.0", + "@typescript-eslint/parser": "^6.8.0", "cross-env": "^7.0.3", - "eslint": "^8.15.0", + "eslint": "^8.51.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.0.0", "eslint-plugin-vue": "^8.7.1", @@ -61,6 +63,15 @@ "node": ">=14.18" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", @@ -465,16 +476,52 @@ "node": ">=0.1.90" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.0", + "espree": "^9.6.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -483,12 +530,15 @@ }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -512,25 +562,47 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/js": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", + "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" }, "node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", @@ -1043,6 +1115,12 @@ "integrity": "sha512-GUvNiia85zTDDIx0iPrtF3pI8dwrQkfuokEqxqPDE55qxH0U5SZz4awVZjiJLWN2ZZRkXCUqgsMUbygXY+kytA==", "dev": true }, + "node_modules/@types/json-schema": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", + "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", + "dev": true + }, "node_modules/@types/libnpmsearch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/libnpmsearch/-/libnpmsearch-2.0.4.tgz", @@ -1159,6 +1237,12 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "node_modules/@types/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", + "dev": true + }, "node_modules/@types/ssri": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/@types/ssri/-/ssri-7.1.2.tgz", @@ -1342,6 +1426,288 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz", + "integrity": "sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/type-utils": "6.8.0", + "@typescript-eslint/utils": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.8.0.tgz", + "integrity": "sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/typescript-estree": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz", + "integrity": "sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz", + "integrity": "sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.8.0", + "@typescript-eslint/utils": "6.8.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.8.0.tgz", + "integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz", + "integrity": "sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.8.0.tgz", + "integrity": "sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/typescript-estree": "6.8.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz", + "integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.8.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@ungap/promise-all-settled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", @@ -1349,9 +1715,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2792,46 +3158,48 @@ } }, "node_modules/eslint": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", - "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", + "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.51.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" @@ -2964,9 +3332,9 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -2974,15 +3342,21 @@ }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/estraverse": { @@ -2995,9 +3369,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -3022,26 +3396,32 @@ } }, "node_modules/espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^8.7.1", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { @@ -3058,9 +3438,9 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -3418,12 +3798,6 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, "node_modules/gauge": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", @@ -3632,6 +4006,12 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "node_modules/handlebars": { "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", @@ -3812,9 +4192,9 @@ } }, "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, "engines": { "node": ">= 4" @@ -7776,17 +8156,17 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -8535,18 +8915,6 @@ "esprima": "~4.0.0" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/registry-auth-token": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", @@ -9490,6 +9858,18 @@ "node": ">=8" } }, + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -9707,12 +10087,6 @@ "uuid": "bin/uuid" } }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -9880,15 +10254,6 @@ "node": ">=8" } }, - "node_modules/word-wrap": { - "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, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -10061,6 +10426,12 @@ } }, "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, "@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", @@ -10368,16 +10739,39 @@ "dev": true, "optional": true }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + } + } + }, + "@eslint-community/regexpp": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", + "dev": true + }, "@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.0", + "espree": "^9.6.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -10386,9 +10780,9 @@ }, "dependencies": { "globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -10402,22 +10796,34 @@ } } }, + "@eslint/js": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", + "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", + "dev": true + }, "@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" }, "@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" } }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, "@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", @@ -10837,6 +11243,12 @@ "integrity": "sha512-GUvNiia85zTDDIx0iPrtF3pI8dwrQkfuokEqxqPDE55qxH0U5SZz4awVZjiJLWN2ZZRkXCUqgsMUbygXY+kytA==", "dev": true }, + "@types/json-schema": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", + "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", + "dev": true + }, "@types/libnpmsearch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/libnpmsearch/-/libnpmsearch-2.0.4.tgz", @@ -10952,6 +11364,12 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "@types/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", + "dev": true + }, "@types/ssri": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/@types/ssri/-/ssri-7.1.2.tgz", @@ -11071,6 +11489,174 @@ } } }, + "@typescript-eslint/eslint-plugin": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz", + "integrity": "sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/type-utils": "6.8.0", + "@typescript-eslint/utils": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.8.0.tgz", + "integrity": "sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/typescript-estree": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz", + "integrity": "sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz", + "integrity": "sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "6.8.0", + "@typescript-eslint/utils": "6.8.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + } + }, + "@typescript-eslint/types": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.8.0.tgz", + "integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz", + "integrity": "sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.8.0.tgz", + "integrity": "sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/typescript-estree": "6.8.0", + "semver": "^7.5.4" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz", + "integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.8.0", + "eslint-visitor-keys": "^3.4.1" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + } + } + }, "@ungap/promise-all-settled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", @@ -11078,9 +11664,9 @@ "dev": true }, "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true }, "acorn-jsx": { @@ -12181,52 +12767,54 @@ "dev": true }, "eslint": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", - "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", + "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.51.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "dependencies": { "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -12234,9 +12822,9 @@ } }, "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true }, "estraverse": { @@ -12246,9 +12834,9 @@ "dev": true }, "globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -12338,20 +12926,20 @@ "dev": true }, "espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "requires": { - "acorn": "^8.7.1", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.1" }, "dependencies": { "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true } } @@ -12363,9 +12951,9 @@ "dev": true }, "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -12632,12 +13220,6 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, "gauge": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", @@ -12804,6 +13386,12 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "handlebars": { "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", @@ -12935,9 +13523,9 @@ } }, "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true }, "import-fresh": { @@ -15776,17 +16364,17 @@ } }, "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" } }, "os-homedir": { @@ -16330,12 +16918,6 @@ "esprima": "~4.0.0" } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, "registry-auth-token": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", @@ -17059,6 +17641,13 @@ "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true }, + "ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "requires": {} + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -17225,12 +17814,6 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -17363,12 +17946,6 @@ "string-width": "^4.0.0" } }, - "word-wrap": { - "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 - }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", diff --git a/package.json b/package.json index 83471633..937e1be6 100644 --- a/package.json +++ b/package.json @@ -43,8 +43,10 @@ "@types/pkginfo": "^0.4.1", "@types/promptly": "^3.0.3", "@types/update-notifier": "^6.0.5", + "@typescript-eslint/eslint-plugin": "^6.8.0", + "@typescript-eslint/parser": "^6.8.0", "cross-env": "^7.0.3", - "eslint": "^8.15.0", + "eslint": "^8.51.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.0.0", "eslint-plugin-vue": "^8.7.1", From 2d03393f15b85d562d644cf9d13d15e2cc1c5562 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 18 Oct 2023 19:01:21 +0200 Subject: [PATCH 007/201] misc: apply eslint rules reformat and clean-up using new eslint config --- lib/client.ts | 7 +++---- lib/cmd-add.ts | 6 +++--- lib/cmd-deps.ts | 2 +- lib/cmd-login.ts | 2 +- lib/cmd-remove.ts | 10 ++++----- lib/cmd-search.ts | 4 ++-- lib/cmd-view.ts | 2 +- lib/core.ts | 4 ++-- lib/error-handler.ts | 6 +++--- lib/logger.ts | 4 ++-- lib/utils/process.ts | 48 +++++++++++++++++++++++--------------------- 11 files changed, 48 insertions(+), 47 deletions(-) diff --git a/lib/client.ts b/lib/client.ts index 55a356ea..a050635c 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -1,14 +1,13 @@ -import {promisify} from "util"; +import { promisify } from "util"; // @ts-ignore import RegClient from "another-npm-registry-client"; import log from "./logger"; - /** * Return npm client */ -export const getNpmClient = function() { +export const getNpmClient = function () { // create client const client = new RegClient({ log }); return { @@ -16,6 +15,6 @@ export const getNpmClient = function() { rawClient: client, // Promisified methods get: promisify(client.get.bind(client)), - adduser: promisify(client.adduser.bind(client)) + adduser: promisify(client.adduser.bind(client)), }; }; diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index 94ab4283..9a6fab25 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -60,7 +60,7 @@ const _add = async function ({ // parse name let { name, version } = parseName(pkg); // load manifest - let manifest = loadManifest(); + const manifest = loadManifest(); if (manifest === null) return { code: 1, dirty }; // ensure manifest.dependencies if (!manifest.dependencies) { @@ -219,9 +219,9 @@ const _add = async function ({ }); dirty = true; } - let entry = manifest.scopedRegistries.filter(filterEntry)[0]; + const entry = manifest.scopedRegistries.filter(filterEntry)[0]; // apply pkgsInScope - let scopesSet = new Set(entry.scopes || []); + const scopesSet = new Set(entry.scopes || []); pkgsInScope.push(env.namespace); pkgsInScope.forEach((name) => { if (!scopesSet.has(name)) { diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index 47f39aba..91601318 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -12,7 +12,7 @@ export const deps = async function (pkg: Pkg, options: DepsOptions) { const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; // parse name - let { name, version } = parseName(pkg); + const { name, version } = parseName(pkg); // deps await _deps({ name, version, deep: options.deep }); return 0; diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index bdc55db2..6391153b 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -44,7 +44,7 @@ export const login = async function (options: LoginOptions) { _auth = Buffer.from(userPass).toString("base64"); } else { // npm login - let result = await npmLogin({ + const result = await npmLogin({ username: options.username, password: options.password, email: options.email, diff --git a/lib/cmd-remove.ts b/lib/cmd-remove.ts index ac1372bb..19121798 100644 --- a/lib/cmd-remove.ts +++ b/lib/cmd-remove.ts @@ -37,10 +37,10 @@ const _remove = async function (pkg: Pkg) { return { code: 1, dirty }; } // load manifest - let manifest = loadManifest(); + const manifest = loadManifest(); if (manifest === null) return { code: 1, dirty }; // not found array - let pkgsNotFound = []; + const pkgsNotFound = []; // remove from dependencies if (manifest.dependencies) { version = manifest.dependencies[name]; @@ -57,13 +57,13 @@ const _remove = async function (pkg: Pkg) { if (url.endsWith("/")) url = url.slice(0, -1); return url == env.registry; }; - let entires = manifest.scopedRegistries.filter(filterEntry); + const entires = manifest.scopedRegistries.filter(filterEntry); if (entires.length > 0) { - let entry = entires[0]; + const entry = entires[0]; const index = entry.scopes.indexOf(name); if (index > -1) { entry.scopes.splice(index, 1); - let scopesSet = new Set(entry.scopes); + const scopesSet = new Set(entry.scopes); scopesSet.add(env.namespace); entry.scopes = Array.from(scopesSet).sort(); dirty = true; diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index ec3a09ad..3e3c79fc 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -85,7 +85,7 @@ const searchOld = async function ( }; const getTable = function () { - var table = new Table({ + const table = new Table({ head: ["Name", "Version", "Date"], colWidths: [42, 20, 12], }); @@ -107,7 +107,7 @@ export async function search(keyword: string, options: SearchOptions) { // parse env const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; - let table = getTable(); + const table = getTable(); // search endpoint let results = await searchEndpoint(keyword); // search old search diff --git a/lib/cmd-view.ts b/lib/cmd-view.ts index 80c98ef7..109088bf 100644 --- a/lib/cmd-view.ts +++ b/lib/cmd-view.ts @@ -19,7 +19,7 @@ export const view = async function (pkg: Pkg, options: ViewOptions) { const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; // parse name - let { name, version } = parseName(pkg); + const { name, version } = parseName(pkg); if (version) { log.warn("", `please replace '${name}@${version}' with '${name}'`); return 1; diff --git a/lib/core.ts b/lib/core.ts index 79159fbc..4a5967fe 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -351,7 +351,7 @@ export const getLatestVersion = function (pkgInfo: PkgInfo): PkgVersionName { // Load manifest json file export const loadManifest = function (): PkgManifest | null { try { - let text = fs.readFileSync(env.manifestPath, { encoding: "utf8" }); + const text = fs.readFileSync(env.manifestPath, { encoding: "utf8" }); return JSON.parse(text); } catch (err) { // TODO: Type error @@ -372,7 +372,7 @@ export const loadManifest = function (): PkgManifest | null { // Save manifest json file export const saveManifest = function (data: PkgManifest) { - let json = JSON.stringify(data, null, 2); + const json = JSON.stringify(data, null, 2); try { fs.writeFileSync(env.manifestPath, json); return true; diff --git a/lib/error-handler.ts b/lib/error-handler.ts index e1476d02..32c06335 100644 --- a/lib/error-handler.ts +++ b/lib/error-handler.ts @@ -1,14 +1,14 @@ // TODO: Use better error types -export const isConnectionError = function(err: any) { +export const isConnectionError = function (err: any) { return err.code == "ENOTFOUND"; }; -export const is404Error = function(err: any) { +export const is404Error = function (err: any) { return (err.response && err.response.notFound) || err.message.includes("404"); }; -const is503Error = function(err: any) { +const is503Error = function (err: any) { return err.response && err.status == 503; }; diff --git a/lib/logger.ts b/lib/logger.ts index 92a13e8e..41115c54 100644 --- a/lib/logger.ts +++ b/lib/logger.ts @@ -1,8 +1,8 @@ import npmlog from "npmlog"; if (process.env.NODE_ENV == "test") { - npmlog.stream = process.stdout; - npmlog.disableColor(); + npmlog.stream = process.stdout; + npmlog.disableColor(); } export default npmlog; diff --git a/lib/utils/process.ts b/lib/utils/process.ts index c6212f07..20ad13b3 100644 --- a/lib/utils/process.ts +++ b/lib/utils/process.ts @@ -5,30 +5,32 @@ import childProcess from "child_process"; * @return A promise that resolve to the output of the shell command, or an error * @example const output = await execute("ls -alh"); */ -export default function execute(command: string, {trim}: { trim: boolean }): Promise { +export default function execute( + command: string, + { trim }: { trim: boolean } +): Promise { + /** + * @param {Function} resolve A function that resolves the promise + * @param {Function} reject A function that fails the promise + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise + */ + return new Promise(function (resolve, reject) { /** - * @param {Function} resolve A function that resolves the promise - * @param {Function} reject A function that fails the promise - * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise + * @param {Error} error An error triggered during the execution of the childProcess.exec command + * @param {string|Buffer} stdout The result of the shell command execution + * @param {string|Buffer} stderr The error resulting of the shell command execution + * @see https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback */ - return new Promise(function (resolve, reject) { - /** - * @param {Error} error An error triggered during the execution of the childProcess.exec command - * @param {string|Buffer} stdout The result of the shell command execution - * @param {string|Buffer} stderr The error resulting of the shell command execution - * @see https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback - */ - childProcess.exec(command, function (error, stdout, stderr) { - if (error) { - reject(); - return; - } - if (stderr) { - reject(stderr); - return; - } - resolve(trim ? stdout.trim() : stdout); - }); + childProcess.exec(command, function (error, stdout, stderr) { + if (error) { + reject(); + return; + } + if (stderr) { + reject(stderr); + return; + } + resolve(trim ? stdout.trim() : stdout); }); + }); } - From 0db8ba7bba2267b5660e7ecf892ace4134f7f21d Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 18 Oct 2023 19:13:11 +0200 Subject: [PATCH 008/201] chore(deps): bump mkdirp Bumped because >=2 includes typings and seemingly no other breaking changes --- package-lock.json | 71 +++++++++++++++++++++++++++++++++++++++++------ package.json | 2 +- 2 files changed, 64 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index b7d77ab5..90330c00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "is-wsl": "^2.2.0", "libnpmsearch": "^5.0.3", "lodash": "^4.17.21", - "mkdirp": "^1.0.4", + "mkdirp": "^3.0.1", "npm-registry-fetch": "^13.1.1", "npmlog": "^6.0.2", "pkginfo": "^0.4.1", @@ -745,6 +745,17 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@octokit/auth-token": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", @@ -2319,6 +2330,17 @@ "node": ">=10" } }, + "node_modules/cacache/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/cacache/node_modules/ssri": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", @@ -5287,14 +5309,17 @@ } }, "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", "bin": { - "mkdirp": "bin/cmd.js" + "mkdirp": "dist/cjs/src/bin.js" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/mocha": { @@ -9706,6 +9731,17 @@ "node": ">= 10" } }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/temp-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", @@ -10933,6 +10969,13 @@ "requires": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } } }, "@octokit/auth-token": { @@ -12136,6 +12179,11 @@ "brace-expansion": "^2.0.1" } }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, "ssri": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", @@ -14331,9 +14379,9 @@ } }, "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==" }, "mocha": { "version": "10.0.0", @@ -17519,6 +17567,13 @@ "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } } }, "temp-dir": { diff --git a/package.json b/package.json index 937e1be6..1e5e1904 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "is-wsl": "^2.2.0", "libnpmsearch": "^5.0.3", "lodash": "^4.17.21", - "mkdirp": "^1.0.4", + "mkdirp": "^3.0.1", "npm-registry-fetch": "^13.1.1", "npmlog": "^6.0.2", "pkginfo": "^0.4.1", From 2d345936c87c5483598aaf1e4285f7a85df10fad Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 18 Oct 2023 19:18:06 +0200 Subject: [PATCH 009/201] chore: fix eslint end-of-line error On my Windows machine eslint was constantly complaining about line endings. Fixed using this answer https://stackoverflow.com/a/53769213 --- .eslintrc.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.eslintrc.js b/.eslintrc.js index 1705e73b..f4110fbd 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -11,6 +11,12 @@ module.exports = { rules: { "no-console": process.env.NODE_ENV === "production" ? "error" : "off", "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off", + "prettier/prettier": [ + "error", + { + endOfLine: "auto", + }, + ], }, parser: "@typescript-eslint/parser", plugins: ["@typescript-eslint"], From c3262768a01750f9e53a06b26ae3472238f1db01 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 18 Oct 2023 20:01:24 +0200 Subject: [PATCH 010/201] feat: ambient typings for js module Add ambient typings for another-npm-registry-client --- lib/client.ts | 2 -- lib/types/another-npm-registry-client.d.ts | 8 ++++++++ 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 lib/types/another-npm-registry-client.d.ts diff --git a/lib/client.ts b/lib/client.ts index a050635c..3a41ba0c 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -1,6 +1,4 @@ import { promisify } from "util"; - -// @ts-ignore import RegClient from "another-npm-registry-client"; import log from "./logger"; diff --git a/lib/types/another-npm-registry-client.d.ts b/lib/types/another-npm-registry-client.d.ts new file mode 100644 index 00000000..b366fb98 --- /dev/null +++ b/lib/types/another-npm-registry-client.d.ts @@ -0,0 +1,8 @@ +declare module "another-npm-registry-client" { + class RegClient { + constructor(...args: unknown[]); + get(...args: unknown[]): unknown; + adduser(...args: unknown[]): unknown; + } + export = RegClient; +} From 9eb4b9bba178e587a54f6617c6c4d8affa441980 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Thu, 19 Oct 2023 17:35:42 +0200 Subject: [PATCH 011/201] refactor: move file Move types file into types folder --- lib/cmd-add.ts | 2 +- lib/cmd-deps.ts | 2 +- lib/cmd-login.ts | 2 +- lib/cmd-remove.ts | 2 +- lib/cmd-search.ts | 2 +- lib/cmd-view.ts | 2 +- lib/core.ts | 2 +- lib/{ => types}/types.ts | 0 8 files changed, 7 insertions(+), 7 deletions(-) rename lib/{ => types}/types.ts (100%) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index 9a6fab25..7ada82cc 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -12,7 +12,7 @@ import { parseName, saveManifest, } from "./core"; -import { GlobalOptions, Pkg, PkgName, ScopedRegistry } from "./types"; +import { GlobalOptions, Pkg, PkgName, ScopedRegistry } from "./types/types"; export type AddOptions = { test: boolean; diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index 91601318..adacb180 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -1,6 +1,6 @@ import log from "./logger"; import { fetchPackageDependencies, parseEnv, parseName } from "./core"; -import { GlobalOptions, Pkg, PkgName, PkgVersionName } from "./types"; +import { GlobalOptions, Pkg, PkgName, PkgVersionName } from "./types/types"; export type DepsOptions = { deep: boolean; diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index 6391153b..9da61bf1 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -12,7 +12,7 @@ import { parseEnv, saveUpmConfig, } from "./core"; -import { GlobalOptions, Registry } from "./types"; +import { GlobalOptions, Registry } from "./types/types"; export type LoginOptions = { username?: string; diff --git a/lib/cmd-remove.ts b/lib/cmd-remove.ts index 19121798..18740240 100644 --- a/lib/cmd-remove.ts +++ b/lib/cmd-remove.ts @@ -1,6 +1,6 @@ import log from "./logger"; import { env, loadManifest, parseEnv, parseName, saveManifest } from "./core"; -import { GlobalOptions, Pkg, ScopedRegistry } from "./types"; +import { GlobalOptions, Pkg, ScopedRegistry } from "./types/types"; export type RemoveOptions = { _global: GlobalOptions; diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index 3e3c79fc..01634490 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -12,7 +12,7 @@ import { PkgName, PkgVersionName, Registry, -} from "./types"; +} from "./types/types"; type TableRow = [PkgName, PkgVersionName, string, ""]; diff --git a/lib/cmd-view.ts b/lib/cmd-view.ts index 109088bf..05d89b8c 100644 --- a/lib/cmd-view.ts +++ b/lib/cmd-view.ts @@ -8,7 +8,7 @@ import { parseEnv, parseName, } from "./core"; -import { GlobalOptions, Pkg, PkgInfo } from "./types"; +import { GlobalOptions, Pkg, PkgInfo } from "./types/types"; export type ViewOptions = { _global: GlobalOptions; diff --git a/lib/core.ts b/lib/core.ts index 4a5967fe..8610c771 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -26,7 +26,7 @@ import { Registry, SemanticVersion, UPMConfig, -} from "./types"; +} from "./types/types"; // @ts-ignore export const env: Env = {}; diff --git a/lib/types.ts b/lib/types/types.ts similarity index 100% rename from lib/types.ts rename to lib/types/types.ts From 7926eac4ace550a0f6728be0e229866ad4262aee Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Thu, 19 Oct 2023 17:48:17 +0200 Subject: [PATCH 012/201] refactor: add basic type for NpmClient Based on usage. Could use some cleanup --- lib/client.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/client.ts b/lib/client.ts index 3a41ba0c..3a32c691 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -1,11 +1,21 @@ import { promisify } from "util"; import RegClient from "another-npm-registry-client"; import log from "./logger"; +import { Auth, PkgInfo, Registry } from "./types/types"; + +export type NpmClient = { + rawClient: RegClient; + get(path: string, options: { auth: Auth }): Promise; + adduser( + registry: Registry, + options: { auth: Auth } + ): Promise<{ ok: boolean | string; token: string }>; +}; /** * Return npm client */ -export const getNpmClient = function () { +export const getNpmClient = (): NpmClient => { // create client const client = new RegClient({ log }); return { From 20389964c0b99b7c24643b0cd74d8d6ff9aa6956 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Thu, 19 Oct 2023 17:51:34 +0200 Subject: [PATCH 013/201] refactor: declare global types Declare types instead of exporting them for easier use --- lib/client.ts | 1 - lib/cmd-add.ts | 1 - lib/cmd-deps.ts | 1 - lib/cmd-login.ts | 1 - lib/cmd-remove.ts | 1 - lib/cmd-search.ts | 9 --- lib/cmd-view.ts | 2 - lib/core.ts | 15 ----- lib/types/global.d.ts | 131 ++++++++++++++++++++++++++++++++++++++++++ lib/types/types.ts | 129 ----------------------------------------- 10 files changed, 131 insertions(+), 160 deletions(-) create mode 100644 lib/types/global.d.ts delete mode 100644 lib/types/types.ts diff --git a/lib/client.ts b/lib/client.ts index 3a32c691..c8e2224d 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -1,7 +1,6 @@ import { promisify } from "util"; import RegClient from "another-npm-registry-client"; import log from "./logger"; -import { Auth, PkgInfo, Registry } from "./types/types"; export type NpmClient = { rawClient: RegClient; diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index 7ada82cc..acdc8750 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -12,7 +12,6 @@ import { parseName, saveManifest, } from "./core"; -import { GlobalOptions, Pkg, PkgName, ScopedRegistry } from "./types/types"; export type AddOptions = { test: boolean; diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index adacb180..af6859fb 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -1,6 +1,5 @@ import log from "./logger"; import { fetchPackageDependencies, parseEnv, parseName } from "./core"; -import { GlobalOptions, Pkg, PkgName, PkgVersionName } from "./types/types"; export type DepsOptions = { deep: boolean; diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index 9da61bf1..24d9b89c 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -12,7 +12,6 @@ import { parseEnv, saveUpmConfig, } from "./core"; -import { GlobalOptions, Registry } from "./types/types"; export type LoginOptions = { username?: string; diff --git a/lib/cmd-remove.ts b/lib/cmd-remove.ts index 18740240..9109b5a4 100644 --- a/lib/cmd-remove.ts +++ b/lib/cmd-remove.ts @@ -1,6 +1,5 @@ import log from "./logger"; import { env, loadManifest, parseEnv, parseName, saveManifest } from "./core"; -import { GlobalOptions, Pkg, ScopedRegistry } from "./types/types"; export type RemoveOptions = { _global: GlobalOptions; diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index 01634490..f2c75e19 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -2,17 +2,8 @@ import npmSearch from "libnpmsearch"; import npmFetch from "npm-registry-fetch"; import Table from "cli-table"; import log from "./logger"; - import { env, getLatestVersion, getNpmFetchOptions, parseEnv } from "./core"; - import { is404Error } from "./error-handler"; -import { - GlobalOptions, - PkgInfo, - PkgName, - PkgVersionName, - Registry, -} from "./types/types"; type TableRow = [PkgName, PkgVersionName, string, ""]; diff --git a/lib/cmd-view.ts b/lib/cmd-view.ts index 05d89b8c..c446eee1 100644 --- a/lib/cmd-view.ts +++ b/lib/cmd-view.ts @@ -1,6 +1,5 @@ import chalk from "chalk"; import log from "./logger"; - import { env, fetchPackageInfo, @@ -8,7 +7,6 @@ import { parseEnv, parseName, } from "./core"; -import { GlobalOptions, Pkg, PkgInfo } from "./types/types"; export type ViewOptions = { _global: GlobalOptions; diff --git a/lib/core.ts b/lib/core.ts index 8610c771..68809cf0 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -12,21 +12,6 @@ import yaml from "yaml"; import execute from "./utils/process"; import { getNpmClient } from "./client"; import log from "./logger"; -import { - Dependency, - Env, - GlobalOptions, - NameVersionPair, - NpmFetchOptions, - Pkg, - PkgInfo, - PkgManifest, - PkgName, - PkgVersionName, - Registry, - SemanticVersion, - UPMConfig, -} from "./types/types"; // @ts-ignore export const env: Env = {}; diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts new file mode 100644 index 00000000..88a11479 --- /dev/null +++ b/lib/types/global.d.ts @@ -0,0 +1,131 @@ +import { Logger } from "npmlog"; + +declare global { + type PkgName = string; + + type PkgVersionName = string; + + type Pkg = `${PkgName}@${PkgVersionName}`; + + type Region = "us" | "cn"; + + type Registry = string; + + type SemanticVersion = { + major: number; + minor: number; + patch?: number; + flag?: "a" | "b" | "f"; + flagValue?: 0 | 1 | 2; + build?: number; + loc?: string; + locValue?: number; + locBuild?: number; + }; + + type Auth = { + alwaysAuth?: boolean; + _auth?: string; + username?: string; + password?: string; + email?: string; + token?: string; + }; + + type Env = { + cwd: string; + color: boolean; + systemUser: boolean; + wsl: boolean; + npmAuth?: Record; + auth: Record; + upstream: boolean; + upstreamRegistry: string; + registry: string; + namespace: string; + editorVersion: string | null; + region: Region; + manifestPath: string; + }; + + type Dist = { + tarball: string; + shasum: string; + integrity: string; + }; + + type PkgVersion = { + unity: string; + unityRelease: string; + dependencies: Record; + license?: string; + displayName: string; + description?: string; + keywords?: string[]; + homepage: string; + dist?: Dist; + }; + + type PkgInfo = { + name: PkgName; + versions: Record; + "dist-tags": { latest?: PkgVersionName }; + version?: PkgVersionName; + description?: string; + keywords?: string[]; + time: Record<"created" | "modified" | PkgVersionName, string>; + date?: Date; + }; + + type NameVersionPair = { + name: PkgName; + version: PkgVersionName; + }; + + type Dependency = { + name: PkgName; + version: PkgVersionName; + upstream: boolean; + self: boolean; + internal: boolean; + reason: string | null; + resolved?: boolean; + }; + + type ScopedRegistry = { + name: string; + url: string; + scopes: PkgName[]; + }; + + type PkgManifest = { + dependencies: Record; + scopedRegistries: ScopedRegistry[]; + testables: string[]; + }; + + type GlobalOptions = { + registry?: Registry; + verbose: boolean; + color: boolean; + upstream: boolean; + cn: boolean; + systemUser: boolean; + wsl: boolean; + chdir: string; + }; + + type UPMConfig = { + npmAuth?: Record; + }; + + type NpmFetchOptions = { + log: Logger; + registry: Registry; + alwaysAuth?: boolean; + email?: string; + password?: string; + token?: string; + username?: string; + }; +} diff --git a/lib/types/types.ts b/lib/types/types.ts deleted file mode 100644 index c7624acf..00000000 --- a/lib/types/types.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { Logger } from "npmlog"; - -export type PkgName = string; - -export type PkgVersionName = string; - -export type Pkg = `${PkgName}@${PkgVersionName}`; - -export type Region = "us" | "cn"; - -export type Registry = string; - -export type SemanticVersion = { - major: number; - minor: number; - patch?: number; - flag?: "a" | "b" | "f"; - flagValue?: 0 | 1 | 2; - build?: number; - loc?: string; - locValue?: number; - locBuild?: number; -}; - -export type Auth = { - alwaysAuth?: boolean; - _auth?: string; - username?: string; - password?: string; - email?: string; - token?: string; -}; - -export type Env = { - cwd: string; - color: boolean; - systemUser: boolean; - wsl: boolean; - npmAuth?: Record; - auth: Record; - upstream: boolean; - upstreamRegistry: string; - registry: string; - namespace: string; - editorVersion: string | null; - region: Region; - manifestPath: string; -}; - -export type Dist = { - tarball: string; - shasum: string; - integrity: string; -}; - -export type PkgVersion = { - unity: string; - unityRelease: string; - dependencies: Record; - license?: string; - displayName: string; - description?: string; - keywords?: string[]; - homepage: string; - dist?: Dist; -}; - -export type PkgInfo = { - name: PkgName; - versions: Record; - "dist-tags": { latest?: PkgVersionName }; - version?: PkgVersionName; - description?: string; - keywords?: string[]; - time: Record<"created" | "modified" | PkgVersionName, string>; - date?: Date; -}; - -export type NameVersionPair = { - name: PkgName; - version: PkgVersionName; -}; - -export type Dependency = { - name: PkgName; - version: PkgVersionName; - upstream: boolean; - self: boolean; - internal: boolean; - reason: string | null; - resolved?: boolean; -}; - -export type ScopedRegistry = { - name: string; - url: string; - scopes: PkgName[]; -}; - -export type PkgManifest = { - dependencies: Record; - scopedRegistries: ScopedRegistry[]; - testables: string[]; -}; - -export type GlobalOptions = { - registry?: Registry; - verbose: boolean; - color: boolean; - upstream: boolean; - cn: boolean; - systemUser: boolean; - wsl: boolean; - chdir: string; -}; - -export type UPMConfig = { - npmAuth?: Record; -}; - -export type NpmFetchOptions = { - log: Logger; - registry: Registry; - alwaysAuth?: boolean; - email?: string; - password?: string; - token?: string; - username?: string; -}; From 4804895f4f0b3889d04b363efc5a6ce32b311635 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 16:10:19 +0200 Subject: [PATCH 014/201] refactor: improve ambient type declarations Improve type declarations for another-npm-registry-client by reading it's docs --- lib/client.ts | 13 ++++---- lib/types/another-npm-registry-client.d.ts | 38 +++++++++++++++++++--- lib/types/global.d.ts | 16 +++------ 3 files changed, 45 insertions(+), 22 deletions(-) diff --git a/lib/client.ts b/lib/client.ts index c8e2224d..ba2d4380 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -1,14 +1,15 @@ import { promisify } from "util"; -import RegClient from "another-npm-registry-client"; +import RegClient, { + GetParams, + AddUserParams, + AddUserResponse, +} from "another-npm-registry-client"; import log from "./logger"; export type NpmClient = { rawClient: RegClient; - get(path: string, options: { auth: Auth }): Promise; - adduser( - registry: Registry, - options: { auth: Auth } - ): Promise<{ ok: boolean | string; token: string }>; + get(uri: string, options: GetParams): Promise; + adduser(uri: string, options: AddUserParams): Promise; }; /** diff --git a/lib/types/another-npm-registry-client.d.ts b/lib/types/another-npm-registry-client.d.ts index b366fb98..ad207a1b 100644 --- a/lib/types/another-npm-registry-client.d.ts +++ b/lib/types/another-npm-registry-client.d.ts @@ -1,8 +1,38 @@ declare module "another-npm-registry-client" { - class RegClient { + export type NpmAuth = + | { + username: string; + password: string; + email: string; + alwaysAuth?: boolean; + } + | { token: string; alwaysAuth?: boolean }; + export type AddUserParams = { auth: NpmAuth }; + + export type GetParams = { + timeout: number; + follow: boolean; + staleOk: boolean; + auth: NpmAuth; + fullMetadata: boolean; + }; + + export type AddUserResponse = { ok: true; token: string } | { ok: false }; + + type ClientCallback = ( + error: Error | null, + data: TData, + raw: string, + res: Response + ) => void; + + export default class RegClient { constructor(...args: unknown[]); - get(...args: unknown[]): unknown; - adduser(...args: unknown[]): unknown; + get(uri: string, params: GetParams, cb: ClientCallback): void; + adduser( + uri: string, + params: AddUserParams, + cb: ClientCallback + ): void; } - export = RegClient; } diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index 88a11479..5d7c186b 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -1,4 +1,5 @@ import { Logger } from "npmlog"; +import { NpmAuth } from "another-npm-registry-client"; declare global { type PkgName = string; @@ -23,22 +24,13 @@ declare global { locBuild?: number; }; - type Auth = { - alwaysAuth?: boolean; - _auth?: string; - username?: string; - password?: string; - email?: string; - token?: string; - }; - type Env = { cwd: string; color: boolean; systemUser: boolean; wsl: boolean; - npmAuth?: Record; - auth: Record; + npmAuth?: Record; + auth: Record; upstream: boolean; upstreamRegistry: string; registry: string; @@ -116,7 +108,7 @@ declare global { }; type UPMConfig = { - npmAuth?: Record; + npmAuth?: Record; }; type NpmFetchOptions = { From ddd5c2ecac416e9add21d5fa803fb55532631b63 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 17:17:50 +0200 Subject: [PATCH 015/201] conf: bump target es version Bump to ES2020 to match Node 14 after consulting https://github.com/microsoft/TypeScript/wiki/Node-Target-Mapping --- tsconfig.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index 4f54999c..27e1d3c9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,9 +11,9 @@ // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ /* Language and Environment */ - "target": "es2016", + "target": "ES2020", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + "lib": ["ES2020"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ // "jsx": "preserve", /* Specify what JSX code is generated. */ // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ From d5c6929930b082797c9f7e3074e3c3c741b11071 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 17:35:22 +0200 Subject: [PATCH 016/201] deps: downgrade node types Downgrade to match node version --- package-lock.json | 24 +++++++++--------------- package.json | 2 +- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 90330c00..cd955f44 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,7 +39,7 @@ "@types/cli-table": "^0.3.2", "@types/libnpmsearch": "^2.0.4", "@types/lodash": "^4.14.199", - "@types/node": "^20.8.6", + "@types/node": "^14.18.63", "@types/npmlog": "^4.1.4", "@types/pkginfo": "^0.4.1", "@types/promptly": "^3.0.3", @@ -1155,13 +1155,10 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.8.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.6.tgz", - "integrity": "sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==", - "dev": true, - "dependencies": { - "undici-types": "~5.25.1" - } + "version": "14.18.63", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", + "dev": true }, "node_modules/@types/node-fetch": { "version": "2.6.6", @@ -11315,13 +11312,10 @@ "dev": true }, "@types/node": { - "version": "20.8.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.6.tgz", - "integrity": "sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==", - "dev": true, - "requires": { - "undici-types": "~5.25.1" - } + "version": "14.18.63", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", + "dev": true }, "@types/node-fetch": { "version": "2.6.6", diff --git a/package.json b/package.json index 1e5e1904..842d1d47 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "@types/cli-table": "^0.3.2", "@types/libnpmsearch": "^2.0.4", "@types/lodash": "^4.14.199", - "@types/node": "^20.8.6", + "@types/node": "^14.18.63", "@types/npmlog": "^4.1.4", "@types/pkginfo": "^0.4.1", "@types/promptly": "^3.0.3", From 9947cfa617e8d492f83d5fcee39f000ba0b87990 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 17:37:57 +0200 Subject: [PATCH 017/201] refactor: add correct response type --- lib/types/another-npm-registry-client.d.ts | 5 +- package-lock.json | 88 +++++++++++++++++++--- package.json | 1 + 3 files changed, 80 insertions(+), 14 deletions(-) diff --git a/lib/types/another-npm-registry-client.d.ts b/lib/types/another-npm-registry-client.d.ts index ad207a1b..ab5a65d2 100644 --- a/lib/types/another-npm-registry-client.d.ts +++ b/lib/types/another-npm-registry-client.d.ts @@ -1,4 +1,5 @@ declare module "another-npm-registry-client" { + import request from "request"; export type NpmAuth = | { username: string; @@ -19,11 +20,11 @@ declare module "another-npm-registry-client" { export type AddUserResponse = { ok: true; token: string } | { ok: false }; - type ClientCallback = ( + export type ClientCallback = ( error: Error | null, data: TData, raw: string, - res: Response + res: request.Response ) => void; export default class RegClient { diff --git a/package-lock.json b/package-lock.json index cd955f44..96637dcc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,6 +43,7 @@ "@types/npmlog": "^4.1.4", "@types/pkginfo": "^0.4.1", "@types/promptly": "^3.0.3", + "@types/request": "^2.48.11", "@types/update-notifier": "^6.0.5", "@typescript-eslint/eslint-plugin": "^6.8.0", "@typescript-eslint/parser": "^6.8.0", @@ -1114,6 +1115,12 @@ "node": ">= 10" } }, + "node_modules/@types/caseless": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.4.tgz", + "integrity": "sha512-2in/lrHRNmDvHPgyormtEralhPcN3An1gLjJzj2Bw145VBxkQ75JEXW6CTdMAwShiHQcYsl2d10IjQSdJSJz4g==", + "dev": true + }, "node_modules/@types/cli-table": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@types/cli-table/-/cli-table-0.3.2.tgz", @@ -1239,6 +1246,32 @@ "@types/node": "*" } }, + "node_modules/@types/request": { + "version": "2.48.11", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.11.tgz", + "integrity": "sha512-HuihY1+Vss5RS9ZHzRyTGIzwPTdrJBkCm/mAeLRYrOQu/MGqyezKXWOK1VhCnR+SDbp9G2mRUP+OVEqCrzpcfA==", + "dev": true, + "dependencies": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + } + }, + "node_modules/@types/request/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, "node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", @@ -1260,6 +1293,12 @@ "@types/node": "*" } }, + "node_modules/@types/tough-cookie": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.4.tgz", + "integrity": "sha512-95Sfz4nvMAb0Nl9DTxN3j64adfwfbBPEYq14VN7zT5J5O2M9V6iZMIIQU1U+pJyl9agHYHNCqhCXgyEtIRRa5A==", + "dev": true + }, "node_modules/@types/update-notifier": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/@types/update-notifier/-/update-notifier-6.0.5.tgz", @@ -9982,12 +10021,6 @@ "node": ">=0.8.0" } }, - "node_modules/undici-types": { - "version": "5.25.3", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", - "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", - "dev": true - }, "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -11271,6 +11304,12 @@ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" }, + "@types/caseless": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.4.tgz", + "integrity": "sha512-2in/lrHRNmDvHPgyormtEralhPcN3An1gLjJzj2Bw145VBxkQ75JEXW6CTdMAwShiHQcYsl2d10IjQSdJSJz4g==", + "dev": true + }, "@types/cli-table": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@types/cli-table/-/cli-table-0.3.2.tgz", @@ -11395,6 +11434,31 @@ "@types/node": "*" } }, + "@types/request": { + "version": "2.48.11", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.11.tgz", + "integrity": "sha512-HuihY1+Vss5RS9ZHzRyTGIzwPTdrJBkCm/mAeLRYrOQu/MGqyezKXWOK1VhCnR+SDbp9G2mRUP+OVEqCrzpcfA==", + "dev": true, + "requires": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + }, + "dependencies": { + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + } + } + }, "@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", @@ -11416,6 +11480,12 @@ "@types/node": "*" } }, + "@types/tough-cookie": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.4.tgz", + "integrity": "sha512-95Sfz4nvMAb0Nl9DTxN3j64adfwfbBPEYq14VN7zT5J5O2M9V6iZMIIQU1U+pJyl9agHYHNCqhCXgyEtIRRa5A==", + "dev": true + }, "@types/update-notifier": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/@types/update-notifier/-/update-notifier-6.0.5.tgz", @@ -17751,12 +17821,6 @@ "dev": true, "optional": true }, - "undici-types": { - "version": "5.25.3", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", - "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", - "dev": true - }, "unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", diff --git a/package.json b/package.json index 842d1d47..399cccc4 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "@types/npmlog": "^4.1.4", "@types/pkginfo": "^0.4.1", "@types/promptly": "^3.0.3", + "@types/request": "^2.48.11", "@types/update-notifier": "^6.0.5", "@typescript-eslint/eslint-plugin": "^6.8.0", "@typescript-eslint/parser": "^6.8.0", From 3253326c9f64e8df4fc4332c65a1ead6515a1a10 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 17:38:40 +0200 Subject: [PATCH 018/201] feat: typecheck errors Add some custom type assertions for expected errors --- lib/cli.ts | 3 +- lib/client.ts | 61 ++++++++++++++++++++++++++++++- lib/cmd-login.ts | 20 +++++----- lib/cmd-search.ts | 10 ++--- lib/core.ts | 8 ++-- lib/error-handler.ts | 15 -------- lib/types/npm-registry-fetch.d.ts | 6 +++ lib/utils/error-type-guards.ts | 24 ++++++++++++ 8 files changed, 107 insertions(+), 40 deletions(-) delete mode 100644 lib/error-handler.ts create mode 100644 lib/types/npm-registry-fetch.d.ts create mode 100644 lib/utils/error-type-guards.ts diff --git a/lib/cli.ts b/lib/cli.ts index 87f5db70..b1abf9e9 100644 --- a/lib/cli.ts +++ b/lib/cli.ts @@ -13,6 +13,7 @@ import log from "./logger"; // update-notifier import pkg from "../package.json"; +import { assertIsError } from "./utils/error-type-guards"; pkginfo(module); const notifier = updateNotifier({ pkg }); @@ -114,7 +115,7 @@ program const retCode = await login(options); if (retCode) process.exit(retCode); } catch (err) { - // @ts-ignore + assertIsError(err); log.error("", err.message); process.exit(1); } diff --git a/lib/client.ts b/lib/client.ts index ba2d4380..bb26db7a 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -3,15 +3,72 @@ import RegClient, { GetParams, AddUserParams, AddUserResponse, + ClientCallback, } from "another-npm-registry-client"; import log from "./logger"; +import request from "request"; +import { AssertionError } from "assert"; +import { assertIsError } from "./utils/error-type-guards"; export type NpmClient = { rawClient: RegClient; + /** + * @throws {NpmClientError} + */ get(uri: string, options: GetParams): Promise; + /** + * @throws {NpmClientError} + */ adduser(uri: string, options: AddUserParams): Promise; }; +export class NpmClientError extends Error { + cause: Error | null; + response: request.Response; + + constructor(cause: Error | null, response: request.Response) { + super( + cause?.message ?? + "An error occurred while interacting with an Npm registry" + ); + this.name = "NpmClientError"; + this.cause = cause; + this.response = response; + } +} + +export function assertIsNpmClientError( + x: unknown +): asserts x is NpmClientError { + if (!(x instanceof NpmClientError)) + throw new AssertionError({ + message: "Given object was not an NpmClientError", + actual: x, + }); +} + +/** + * Normalizes a RegClient function. Specifically it merges it's multiple + * callback arguments into a single NormalizedError object. This function + * also takes care of binding and promisifying. + */ +function normalizeClientFunction( + client: RegClient, + fn: (uri: string, params: TParam, cb: ClientCallback) => void +): (uri: string, params: TParam) => Promise { + const bound = fn.bind(client); + const withNormalizedError = ( + uri: string, + params: TParam, + cb: (error: NpmClientError, data: TData) => void + ) => { + return bound(uri, params, (error, data, raw, res) => { + cb(new NpmClientError(error, res), data); + }); + }; + return promisify(withNormalizedError); +} + /** * Return npm client */ @@ -22,7 +79,7 @@ export const getNpmClient = (): NpmClient => { // The instance of raw npm client rawClient: client, // Promisified methods - get: promisify(client.get.bind(client)), - adduser: promisify(client.adduser.bind(client)), + get: normalizeClientFunction(client, client.get), + adduser: normalizeClientFunction(client, client.adduser), }; }; diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index 24d9b89c..965cf09c 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -2,7 +2,7 @@ import fs from "fs"; import path from "path"; import _ from "lodash"; import promptly from "promptly"; -import { getNpmClient } from "./client"; +import { assertIsNpmClientError, getNpmClient } from "./client"; import log from "./logger"; @@ -74,7 +74,6 @@ export const login = async function (options: LoginOptions) { /** * Return npm login token - * @param {*} param0 */ const npmLogin = async function ({ username, @@ -97,19 +96,20 @@ const npmLogin = async function ({ }, }); if (_.isString(data.ok)) log.notice("auth", data.ok); - else if (data.ok) + else if (data.ok) { log.notice("auth", `you are authenticated as '${username}'`); - const token = data.token; - return { code: 0, token }; + const token = data.token; + return { code: 0, token }; + } + return { code: 1 }; } catch (err) { - // TODO: Type-check error - // @ts-ignore - if (err.statusCode == 401 || err.code == "EAUTHUNKNOWN") { + assertIsNpmClientError(err); + + if (err.response.statusCode == 401) { log.warn("401", "Incorrect username or password"); return { code: 1 }; } else { - // @ts-ignore - log.error(err.statusCode ? err.statusCode.toString() : "", err.message); + log.error(err.response.statusCode.toString(), err.message); return { code: 1 }; } } diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index f2c75e19..8a832943 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -3,7 +3,7 @@ import npmFetch from "npm-registry-fetch"; import Table from "cli-table"; import log from "./logger"; import { env, getLatestVersion, getNpmFetchOptions, parseEnv } from "./core"; -import { is404Error } from "./error-handler"; +import { is404Error, isHttpError } from "./utils/error-type-guards"; type TableRow = [PkgName, PkgVersionName, string, ""]; @@ -25,9 +25,7 @@ const searchEndpoint = async function ( // @ts-ignore return results.map(getTableRow); } catch (err) { - if (!is404Error(err)) { - // TODO: Type check error - // @ts-ignore + if (isHttpError(err) && !is404Error(err)) { log.error("", err.message); } log.warn("", "fast search endpoint is not available, using old search."); @@ -66,9 +64,7 @@ const searchOld = async function ( (row) => row.filter((x) => x.toLowerCase().includes(klc)).length > 0 ); } catch (err) { - if (!is404Error(err)) { - // TODO: Type-check error - // @ts-ignore + if (isHttpError(err) && !is404Error(err)) { log.error("", err.message); } log.warn("", "/-/all endpoint is not available"); diff --git a/lib/core.ts b/lib/core.ts index 68809cf0..2bee8d44 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -12,6 +12,7 @@ import yaml from "yaml"; import execute from "./utils/process"; import { getNpmClient } from "./client"; import log from "./logger"; +import { assertIsError } from "./utils/error-type-guards"; // @ts-ignore export const env: Env = {}; @@ -339,8 +340,7 @@ export const loadManifest = function (): PkgManifest | null { const text = fs.readFileSync(env.manifestPath, { encoding: "utf8" }); return JSON.parse(text); } catch (err) { - // TODO: Type error - // @ts-ignore + assertIsError(err); if (err.code == "ENOENT") log.error("manifest", "file Packages/manifest.json does not exist"); else { @@ -348,7 +348,6 @@ export const loadManifest = function (): PkgManifest | null { "manifest", `failed to parse Packages/manifest.json at ${env.manifestPath}` ); - // @ts-ignore log.error("manifest", err.message); } return null; @@ -362,9 +361,8 @@ export const saveManifest = function (data: PkgManifest) { fs.writeFileSync(env.manifestPath, json); return true; } catch (err) { + assertIsError(err); log.error("manifest", "can not write manifest json file"); - // @ts-ignore - // TODO: Type-check error log.error("manifest", err.message); return false; } diff --git a/lib/error-handler.ts b/lib/error-handler.ts deleted file mode 100644 index 32c06335..00000000 --- a/lib/error-handler.ts +++ /dev/null @@ -1,15 +0,0 @@ -// TODO: Use better error types - -export const isConnectionError = function (err: any) { - return err.code == "ENOTFOUND"; -}; - -export const is404Error = function (err: any) { - return (err.response && err.response.notFound) || err.message.includes("404"); -}; - -const is503Error = function (err: any) { - return err.response && err.status == 503; -}; - -export default { isConnectionError, is404Error, is503Error }; diff --git a/lib/types/npm-registry-fetch.d.ts b/lib/types/npm-registry-fetch.d.ts new file mode 100644 index 00000000..ff3fed57 --- /dev/null +++ b/lib/types/npm-registry-fetch.d.ts @@ -0,0 +1,6 @@ +declare module "npm-registry-fetch" { + declare class HttpErrorBase extends Error { + statusCode: Response["status"]; + code: `E${Response["status"]}}` | `E${string}`; + } +} diff --git a/lib/utils/error-type-guards.ts b/lib/utils/error-type-guards.ts new file mode 100644 index 00000000..701db6ef --- /dev/null +++ b/lib/utils/error-type-guards.ts @@ -0,0 +1,24 @@ +import { HttpErrorBase } from "npm-registry-fetch"; +import { AssertionError } from "assert"; +import ErrnoException = NodeJS.ErrnoException; + +export function assertIsError(x: unknown): asserts x is ErrnoException { + if (!(x instanceof Error)) + throw new AssertionError({ + message: "Argument was not an error!", + actual: x, + }); +} + +export const isHttpError = (x: unknown): x is HttpErrorBase => { + return x instanceof HttpErrorBase; +}; + +export const isConnectionError = (err: HttpErrorBase): boolean => + err.code === "ENOTFOUND"; + +export const is404Error = (err: HttpErrorBase): boolean => + err.statusCode === 404 || err.message.includes("404"); + +export const is503Error = (err: HttpErrorBase): boolean => + err.statusCode === 503; From 4e7fe2df95d995fe0b68993ceb2e06af37eb98ba Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 17:39:12 +0200 Subject: [PATCH 019/201] misc: add shared idea files --- .idea/.gitignore | 8 ++++++++ .idea/inspectionProfiles/Project_Default.xml | 6 ++++++ .idea/modules.xml | 8 ++++++++ .idea/openupm-cli.iml | 12 ++++++++++++ .idea/prettier.xml | 6 ++++++ .idea/vcs.xml | 6 ++++++ 6 files changed, 46 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/openupm-cli.iml create mode 100644 .idea/prettier.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..13566b81 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 00000000..03d9549e --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..04f9c757 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/openupm-cli.iml b/.idea/openupm-cli.iml new file mode 100644 index 00000000..24643cc3 --- /dev/null +++ b/.idea/openupm-cli.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/prettier.xml b/.idea/prettier.xml new file mode 100644 index 00000000..b0c1c68f --- /dev/null +++ b/.idea/prettier.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..35eb1ddf --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file From 0edcc59d4517759fe504c33c3ff9193adcb8a4b0 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 20:38:10 +0200 Subject: [PATCH 020/201] refactor: clean up imports --- lib/cli.ts | 1 - lib/client.ts | 3 +-- lib/core.ts | 4 ++-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/cli.ts b/lib/cli.ts index b1abf9e9..b45a572c 100644 --- a/lib/cli.ts +++ b/lib/cli.ts @@ -11,7 +11,6 @@ import { login } from "./cmd-login"; import log from "./logger"; // update-notifier - import pkg from "../package.json"; import { assertIsError } from "./utils/error-type-guards"; diff --git a/lib/client.ts b/lib/client.ts index bb26db7a..e430584c 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -1,14 +1,13 @@ import { promisify } from "util"; import RegClient, { - GetParams, AddUserParams, AddUserResponse, ClientCallback, + GetParams, } from "another-npm-registry-client"; import log from "./logger"; import request from "request"; import { AssertionError } from "assert"; -import { assertIsError } from "./utils/error-type-guards"; export type NpmClient = { rawClient: RegClient; diff --git a/lib/core.ts b/lib/core.ts index 2bee8d44..ea6484c5 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -10,9 +10,9 @@ import isWsl from "is-wsl"; import TOML from "@iarna/toml"; import yaml from "yaml"; import execute from "./utils/process"; -import { getNpmClient } from "./client"; +import {getNpmClient} from "./client"; import log from "./logger"; -import { assertIsError } from "./utils/error-type-guards"; +import {assertIsError} from "./utils/error-type-guards"; // @ts-ignore export const env: Env = {}; From b3033a6d1509872f7c56c1ac6fecd24960974406 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 20:49:54 +0200 Subject: [PATCH 021/201] refactor: make variables constant Make variables constant where possible --- lib/cmd-add.ts | 5 ++++- lib/cmd-remove.ts | 4 +++- lib/core.ts | 8 +++++--- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index acdc8750..688a8425 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -57,7 +57,10 @@ const _add = async function ({ // is upstream package flag let isUpstreamPackage = false; // parse name - let { name, version } = parseName(pkg); + const parseResult = parseName(pkg); + const name = parseResult.name; + let version = parseResult.version; + // load manifest const manifest = loadManifest(); if (manifest === null) return { code: 1, dirty }; diff --git a/lib/cmd-remove.ts b/lib/cmd-remove.ts index 9109b5a4..aad8a7ac 100644 --- a/lib/cmd-remove.ts +++ b/lib/cmd-remove.ts @@ -30,7 +30,9 @@ const _remove = async function (pkg: Pkg) { // dirty flag let dirty = false; // parse name - let { name, version } = parseName(pkg); + const parseResult = parseName(pkg); + const name = parseResult.name; + let version = parseResult.version; if (version) { log.warn("", `please replace '${name}@${version}' with '${name}'`); return { code: 1, dirty }; diff --git a/lib/core.ts b/lib/core.ts index ea6484c5..a9c164f5 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -10,9 +10,9 @@ import isWsl from "is-wsl"; import TOML from "@iarna/toml"; import yaml from "yaml"; import execute from "./utils/process"; -import {getNpmClient} from "./client"; +import { getNpmClient } from "./client"; import log from "./logger"; -import {assertIsError} from "./utils/error-type-guards"; +import { assertIsError } from "./utils/error-type-guards"; // @ts-ignore export const env: Env = {}; @@ -243,10 +243,12 @@ export const fetchPackageDependencies = async function ({ }; if (!depObj.internal) { // try fetching package info from cache - let { pkgInfo, upstream } = _.get(cachedPacakgeInfoDict, entry.name, { + const getResult = _.get(cachedPacakgeInfoDict, entry.name, { pkgInfo: null, upstream: false, }); + let pkgInfo = getResult.pkgInfo; + const upstream = getResult.upstream; if (pkgInfo !== null) { depObj.upstream = upstream; } From 180e73267cdbe6673033be046dd9fd7f1a15feed Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 20:52:01 +0200 Subject: [PATCH 022/201] misc: remove outdated ts-ignores --- lib/cmd-add.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index 688a8425..3eb5a42a 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -161,8 +161,6 @@ const _add = async function ({ // print suggestion for depsInvalid depsInvalid.forEach((depObj) => { if (depObj.reason == "package404" || depObj.reason == "version404") { - // TODO: Do null check on manifest - // @ts-ignore const resolvedVersion = manifest.dependencies[depObj.name]; depObj.resolved = Boolean(resolvedVersion); if (!depObj.resolved) @@ -185,8 +183,6 @@ const _add = async function ({ } // add to dependencies const oldVersion = manifest.dependencies[name]; - // TODO: Do undefined check on version - // @ts-ignore manifest.dependencies[name] = version; if (!oldVersion) { // Log the added package From 547879c70ca266d46158ce2616b1421713f1e4e8 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 20:52:14 +0200 Subject: [PATCH 023/201] refactor: handle potential null --- lib/cmd-add.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index 3eb5a42a..d3c4ede2 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -208,10 +208,10 @@ const _add = async function ({ return addr == env.registry; }; if (manifest.scopedRegistries.filter(filterEntry).length <= 0) { + const name = url.parse(env.registry).hostname; + if (name === null) throw new Error("Could not resolve registry name"); manifest.scopedRegistries.push({ - // TODO: Handle null name - // @ts-ignore - name: url.parse(env.registry).hostname, + name, url: env.registry, scopes: [], }); From 76638bd40599a87097e8a00c28a3418452dd2101 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:20:57 +0200 Subject: [PATCH 024/201] fix: add better type for upm auth Previously mistakenly used the same auth type as for npm --- lib/types/global.d.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index 5d7c186b..72a5e7e5 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -107,8 +107,13 @@ declare global { chdir: string; }; + type UpmAuth = { + email: string; + alwaysAuth: boolean; + } & ({ token: string } | { _auth: string }); + type UPMConfig = { - npmAuth?: Record; + npmAuth?: Record; }; type NpmFetchOptions = { From fbebfde2ef648cb22a28f4e3568a3b4848a79328 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:22:57 +0200 Subject: [PATCH 025/201] refactor: fix type warning Instead of assigning different auth properties separately, assign all at once in the different if branches in order to avoid type warnings --- lib/cmd-login.ts | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index 965cf09c..8ef9678a 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -230,19 +230,18 @@ const writeUnityToken = async function ({ // Remove ending slash of registry if (registry.endsWith("/")) registry = registry.replace(/\/$/, ""); - // TODO: Investigate ts warnings - // Update config file - // @ts-ignore - config["npmAuth"][registry] = { - email, - alwaysAuth, - }; if (basicAuth) { - // @ts-ignore - config["npmAuth"][registry]._auth = _auth; + config["npmAuth"][registry] = { + email, + alwaysAuth, + _auth, + }; } else { - // @ts-ignore - config["npmAuth"][registry].token = token; + config["npmAuth"][registry] = { + email, + alwaysAuth, + token, + }; } // Write config file await saveUpmConfig(config, configDir); From 8f8ad114fda7aa68b63d35576cc9a4ba2db5eeb3 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:23:17 +0200 Subject: [PATCH 026/201] fix: type parameter --- lib/cmd-login.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index 8ef9678a..9fa66e40 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -215,7 +215,7 @@ const writeUnityToken = async function ({ registry, token, }: { - _auth: unknown; + _auth: string; alwaysAuth: boolean; basicAuth: boolean; email: string; From a3c5ab62f1f0d74a64ab331e752e67b82a4e71e4 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:23:29 +0200 Subject: [PATCH 027/201] misc: delete outdates jsdoc comment --- lib/cmd-login.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index 9fa66e40..7d2148f1 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -205,7 +205,6 @@ export const validateRegistry = function (value: Registry): Registry { /** * Write npm token to Unity - * @param {*} param0 */ const writeUnityToken = async function ({ _auth, From 331486171bd0635cea8e1456028da58e0593acec Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:27:42 +0200 Subject: [PATCH 028/201] fix: unhandled null values Check token and _auth for null before respective usage --- lib/cmd-login.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index 7d2148f1..98f662aa 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -35,8 +35,8 @@ export const login = async function (options: LoginOptions) { options._global.registry = await promptly.prompt("Registry: ", { validator: [validateRegistry], }); - let token = null; - let _auth = null; + let token: string | null = null; + let _auth: string | null = null; if (options.basicAuth) { // basic auth const userPass = `${options.username}:${options.password}`; @@ -61,6 +61,7 @@ export const login = async function (options: LoginOptions) { token: result.token, }); } + // write unity token await writeUnityToken({ _auth, @@ -214,12 +215,12 @@ const writeUnityToken = async function ({ registry, token, }: { - _auth: string; + _auth: string | null; alwaysAuth: boolean; basicAuth: boolean; email: string; registry: Registry; - token: string; + token: string | null; }) { // Create config dir if necessary const configDir = await getUpmConfigDir(); @@ -230,12 +231,14 @@ const writeUnityToken = async function ({ if (registry.endsWith("/")) registry = registry.replace(/\/$/, ""); if (basicAuth) { + if (_auth === null) throw new Error("Auth is null"); config["npmAuth"][registry] = { email, alwaysAuth, _auth, }; } else { + if (token === null) throw new Error("Token is null"); config["npmAuth"][registry] = { email, alwaysAuth, From e6ced3b63170b9394f18dbe26aa1dcfbb30cecc4 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:32:02 +0200 Subject: [PATCH 029/201] fix: type error Convert results array to string before logging to avoid type error. I joined the results using line-breaks, don't know if this is intended. --- lib/cmd-search.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index 8a832943..3fd47d07 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -4,6 +4,7 @@ import Table from "cli-table"; import log from "./logger"; import { env, getLatestVersion, getNpmFetchOptions, parseEnv } from "./core"; import { is404Error, isHttpError } from "./utils/error-type-guards"; +import * as os from "os"; type TableRow = [PkgName, PkgVersionName, string, ""]; @@ -18,9 +19,7 @@ const searchEndpoint = async function ( if (!registry) registry = env.registry; try { const results = await npmSearch(keyword, getNpmFetchOptions()); - // TODO: This should be converted to a string - // @ts-ignore - log.verbose("npmsearch", results); + log.verbose("npmsearch", results.join(os.EOL)); // TODO: Fix type error // @ts-ignore return results.map(getTableRow); From 18f2f7e64c189018b28283f49178019ef0f83f93 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:33:27 +0200 Subject: [PATCH 030/201] refactor: use existing type Previously added a custom type for npm search options even though such a type already exists --- lib/core.ts | 5 +++-- lib/types/global.d.ts | 10 ---------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index a9c164f5..968c111d 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -13,6 +13,7 @@ import execute from "./utils/process"; import { getNpmClient } from "./client"; import log from "./logger"; import { assertIsError } from "./utils/error-type-guards"; +import search from "libnpmsearch"; // @ts-ignore export const env: Env = {}; @@ -162,8 +163,8 @@ export const parseName = function (pkg: Pkg): { }; // Get npm fetch options -export const getNpmFetchOptions = function (): NpmFetchOptions { - const opts: NpmFetchOptions = { +export const getNpmFetchOptions = function (): search.Options { + const opts: search.Options = { log, registry: env.registry, }; diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index 72a5e7e5..abe770c4 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -115,14 +115,4 @@ declare global { type UPMConfig = { npmAuth?: Record; }; - - type NpmFetchOptions = { - log: Logger; - registry: Registry; - alwaysAuth?: boolean; - email?: string; - password?: string; - token?: string; - username?: string; - }; } From b21e91b45c8fd80abeb2cd6fb31a83968c319e6f Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:44:35 +0200 Subject: [PATCH 031/201] fix: add missing import Response type was ambiguous without import --- lib/types/npm-registry-fetch.d.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/types/npm-registry-fetch.d.ts b/lib/types/npm-registry-fetch.d.ts index ff3fed57..e0920e18 100644 --- a/lib/types/npm-registry-fetch.d.ts +++ b/lib/types/npm-registry-fetch.d.ts @@ -1,3 +1,5 @@ +import { Response } from "request"; + declare module "npm-registry-fetch" { declare class HttpErrorBase extends Error { statusCode: Response["status"]; From 09846fc3d1bee9de4447ef6bf26eaf29bbb471e0 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:45:10 +0200 Subject: [PATCH 032/201] fix: remove extraneous declare It seems to cause problems and to be honest I don't know if we need it --- lib/types/npm-registry-fetch.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/types/npm-registry-fetch.d.ts b/lib/types/npm-registry-fetch.d.ts index e0920e18..3dedc984 100644 --- a/lib/types/npm-registry-fetch.d.ts +++ b/lib/types/npm-registry-fetch.d.ts @@ -1,7 +1,7 @@ import { Response } from "request"; declare module "npm-registry-fetch" { - declare class HttpErrorBase extends Error { + class HttpErrorBase extends Error { statusCode: Response["status"]; code: `E${Response["status"]}}` | `E${string}`; } From 6bc923b43cd5d2b79ef5f3c78d7ff13e0751fc0b Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:49:36 +0200 Subject: [PATCH 033/201] fix: type error The result of the nmp-search function is search.Result but because we know the openupm server actually returns PkgInfo objects we can change the type --- lib/cmd-search.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index 3fd47d07..de215b64 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -18,10 +18,9 @@ const searchEndpoint = async function ( ): Promise { if (!registry) registry = env.registry; try { - const results = await npmSearch(keyword, getNpmFetchOptions()); + // NOTE: The results of the search will be PkgInfo objects so we can change the type + const results = await npmSearch(keyword, getNpmFetchOptions()); log.verbose("npmsearch", results.join(os.EOL)); - // TODO: Fix type error - // @ts-ignore return results.map(getTableRow); } catch (err) { if (isHttpError(err) && !is404Error(err)) { From 64bfdc3277a5442301d2c94a89947a4ba47eabfa Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:50:01 +0200 Subject: [PATCH 034/201] fix: remove extraneous ts-ignore --- lib/core.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/core.ts b/lib/core.ts index 968c111d..a1d1c00f 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -3,7 +3,6 @@ import path from "path"; import url from "url"; import _ from "lodash"; import chalk from "chalk"; -// @ts-ignore import mkdirp from "mkdirp"; import net from "node:net"; import isWsl from "is-wsl"; From c7b5ee11930b7856a346900b149c19c38bdfe748 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:56:06 +0200 Subject: [PATCH 035/201] fix: type error Instead of initializing env with empty object, populate with default members in order to avoid type error --- lib/core.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index a1d1c00f..bb02585f 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -14,8 +14,20 @@ import log from "./logger"; import { assertIsError } from "./utils/error-type-guards"; import search from "libnpmsearch"; -// @ts-ignore -export const env: Env = {}; +export const env: Env = { + auth: {}, + color: false, + cwd: "", + editorVersion: null, + manifestPath: "", + namespace: "", + region: "us", + registry: "", + systemUser: false, + upstream: false, + upstreamRegistry: "", + wsl: false, +}; // Parse env export const parseEnv = async function ( From 9c733f8b5ba75d771ac095255d8d9398c8affe30 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:59:00 +0200 Subject: [PATCH 036/201] fix: type error Type was declared incorrectly --- lib/types/global.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index abe770c4..a5dbe8a8 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -29,7 +29,7 @@ declare global { color: boolean; systemUser: boolean; wsl: boolean; - npmAuth?: Record; + npmAuth?: Record; auth: Record; upstream: boolean; upstreamRegistry: string; From 6370c75c352363ee9958f76473d6ac1cdf57d3dc Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 22:01:19 +0200 Subject: [PATCH 037/201] misc: remove extraneous ts-ignores --- lib/core.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index bb02585f..395f0b02 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -95,8 +95,6 @@ export const parseEnv = async function ( alwaysAuth: regAuth.alwaysAuth || false, }; } else if ("_auth" in regAuth) { - // NOTE: We can rule out undefined because of the if - // @ts-ignore const buf = Buffer.from(regAuth._auth, "base64"); const text = buf.toString("utf-8"); const [username, password] = text.split(":", 2); @@ -111,8 +109,6 @@ export const parseEnv = async function ( "env.auth", `failed to parse auth info for ${reg} in .upmconfig.toml: missing token or _auth fields` ); - // TODO: Convert to string - // @ts-ignore log.warn("env.auth", regAuth); } } From e00f4cb6d4de1c0f31fe73ced2d061ffe8b774c1 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 22:02:28 +0200 Subject: [PATCH 038/201] fix: type error Based on line 166 we can assume that undefined is actually a valid value for the version. Adjusted signature accordingly --- lib/core.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index 395f0b02..7f92f34d 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -158,14 +158,12 @@ export const parseEnv = async function ( // Parse name to {name, version} export const parseName = function (pkg: Pkg): { name: PkgName; - version: PkgVersionName; + version: PkgVersionName | undefined; } { const segs = pkg.split("@"); const name = segs[0]; const version = segs.length > 1 ? segs.slice(1, segs.length).join("@") : undefined; - // TODO: Handle version undefined - // @ts-ignore return { name, version }; }; From 94eacc615a66c01a60bba59088ab8156ae1a473f Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 22:03:58 +0200 Subject: [PATCH 039/201] refactor: prevent value conversion Explicitly check for undefined instead using auto-conversion to avoid "isGitOrLocal" becoming equal to some string --- lib/cmd-add.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index d3c4ede2..65d0f7bc 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -71,7 +71,7 @@ const _add = async function ({ // packages that added to scope registry const pkgsInScope: PkgName[] = []; const isGitOrLocal = - version && + version !== undefined && (version.startsWith("git") || version.startsWith("file") || version.startsWith("http")); From aa814d91c61fe42f519e426c36aa32e01c7873fa Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 22:08:17 +0200 Subject: [PATCH 040/201] misc: handle undefined Probably unrecoverable, so we just throw --- lib/cmd-add.ts | 1 + lib/cmd-deps.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index 65d0f7bc..60af54d6 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -182,6 +182,7 @@ const _add = async function ({ } else pkgsInScope.push(name); } // add to dependencies + if (version === undefined) throw new Error("Version is undefined"); const oldVersion = manifest.dependencies[name]; manifest.dependencies[name] = version; if (!oldVersion) { diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index af6859fb..b836d738 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -13,6 +13,7 @@ export const deps = async function (pkg: Pkg, options: DepsOptions) { // parse name const { name, version } = parseName(pkg); // deps + if (version === undefined) throw new Error("Version undefined"); await _deps({ name, version, deep: options.deep }); return 0; }; From 951755bd25c6f6dc323761b589ce66251ddb3d97 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 22:10:27 +0200 Subject: [PATCH 041/201] refactor: shorten and fix type error Use Object.assign instead of copying all properties manually. This also avoids an error for unchecked property access --- lib/core.ts | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index 7f92f34d..da740c72 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -174,13 +174,7 @@ export const getNpmFetchOptions = function (): search.Options { registry: env.registry, }; const auth = env.auth[env.registry]; - if (auth) { - opts.alwaysAuth = auth.alwaysAuth; - opts.email = auth.email; - opts.password = auth.password; - opts.token = auth.token; - opts.username = auth.username; - } + if (auth) Object.assign(opts, auth); return opts; }; From fd463f038973afdd1772ca22cbc52f7f5dd6b742 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 22:11:55 +0200 Subject: [PATCH 042/201] fix: type error Make properties of options optional --- lib/types/another-npm-registry-client.d.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/types/another-npm-registry-client.d.ts b/lib/types/another-npm-registry-client.d.ts index ab5a65d2..1cdce144 100644 --- a/lib/types/another-npm-registry-client.d.ts +++ b/lib/types/another-npm-registry-client.d.ts @@ -11,11 +11,11 @@ declare module "another-npm-registry-client" { export type AddUserParams = { auth: NpmAuth }; export type GetParams = { - timeout: number; - follow: boolean; - staleOk: boolean; - auth: NpmAuth; - fullMetadata: boolean; + timeout?: number; + follow?: boolean; + staleOk?: boolean; + auth?: NpmAuth; + fullMetadata?: boolean; }; export type AddUserResponse = { ok: true; token: string } | { ok: false }; From 4d45333e71b38836b6d2b5250ac7df38af672930 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 22:13:00 +0200 Subject: [PATCH 043/201] fix: potential undefined error --- lib/cmd-login.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index 98f662aa..fb44e495 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -147,10 +147,8 @@ export const getNpmrcPath = function () { const dirPath = process.env.USERPROFILE ? process.env.USERPROFILE : process.env.HOME; - // TODO: Handle undefined - // @ts-ignore - const configPath = path.join(dirPath, ".npmrc"); - return configPath; + if (dirPath === undefined) throw new Error("Could not determine home path"); + return path.join(dirPath, ".npmrc"); }; /** From 6185479d7cd9a17d84325e17d6624e0f0c9aa413 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 22:13:40 +0200 Subject: [PATCH 044/201] fix: extraneous parameter According to the signature of search it expects only one parameter. Removed the second empty string parameter --- lib/cmd-login.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index fb44e495..c6ab488d 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -165,9 +165,7 @@ export const generateNpmrcLines = function ( let lines = content ? content.split("\n") : []; const quotes = /(\?|=)/.test(token) ? '"' : ""; // get the registry url without http protocal - // TODO: Investigate extra quotes - // @ts-ignore - let registryUrl = registry.slice(registry.search(/:\/\//, "") + 1); + let registryUrl = registry.slice(registry.search(/:\/\//) + 1); // add trailing slash if (!registryUrl.endsWith("/")) registryUrl = registryUrl + "/"; const index = _.findIndex(lines, function (element, index, array) { From 1caa52bf62a3f4dad1722e15da7e9d5d803a6028 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 22:14:47 +0200 Subject: [PATCH 045/201] fix: editing readonly list The array given to findIndex seems to be readonly so instead we modify the original lines array --- lib/cmd-login.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index c6ab488d..2a88f340 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -168,12 +168,10 @@ export const generateNpmrcLines = function ( let registryUrl = registry.slice(registry.search(/:\/\//) + 1); // add trailing slash if (!registryUrl.endsWith("/")) registryUrl = registryUrl + "/"; - const index = _.findIndex(lines, function (element, index, array) { + const index = _.findIndex(lines, function (element, index) { if (element.indexOf(registryUrl + ":_authToken=") !== -1) { // If an entry for the auth token is found, replace it - // TODO: Investigate error - // @ts-ignore - array[index] = element.replace( + lines[index] = element.replace( /authToken=.*/, "authToken=" + quotes + token + quotes ); From 327b290686cc9fdb81f4bccd9da4a340ee7ad4f3 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 10:14:27 +0200 Subject: [PATCH 046/201] fix: type errors First we type-assert the result of npmFetch.json to match its usage. We can assume that it is either an array or record of packages. We also move the log until later in the code and log the objects variable instead of results, since that is guarantied to be an array. We also convert the array to a string using join for better logging --- lib/cmd-search.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index de215b64..fd7644c4 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -35,10 +35,9 @@ const searchOld = async function ( ): Promise { // all endpoint try { - const results = await npmFetch.json("/-/all", getNpmFetchOptions()); - // TODO: This should be converted to a string - // @ts-ignore - log.verbose("endpoint.all", results); + const results = | PkgInfo[]>( + await npmFetch.json("/-/all", getNpmFetchOptions()) + ); let objects: PkgInfo[] = []; if (results) { if (Array.isArray(results)) { @@ -47,11 +46,10 @@ const searchOld = async function ( } else { // results is an object if ("_updated" in results) delete results["_updated"]; - // TODO: Do better type checking - // @ts-ignore objects = Object.values(results); } } + log.verbose("endpoint.all", objects.join(os.EOL)); // prepare rows const rows = objects.map((pkg) => { return getTableRow(pkg); From c3d1ad54f8cbc423f4d4d61b982fcfa8953b689f Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 10:30:16 +0200 Subject: [PATCH 047/201] refactor: simplify property access --- lib/core.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/core.ts b/lib/core.ts index da740c72..1a1a7cee 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -322,7 +322,7 @@ export const fetchPackageDependencies = async function ({ // Get latest version from package info // @ts-ignore export const getLatestVersion = function (pkgInfo: PkgInfo): PkgVersionName { - if (pkgInfo["dist-tags"] && pkgInfo["dist-tags"]["latest"]) + if (pkgInfo["dist-tags"]?.["latest"] !== undefined) return pkgInfo["dist-tags"]["latest"]; else if (pkgInfo.versions) { // @ts-ignore From dc1e931f13d369a114ee57b4a5fa95026e169eaf Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 10:30:33 +0200 Subject: [PATCH 048/201] fix: handle undefined Throw if no latest version could be found --- lib/core.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index 1a1a7cee..25297faf 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -320,20 +320,17 @@ export const fetchPackageDependencies = async function ({ }; // Get latest version from package info -// @ts-ignore export const getLatestVersion = function (pkgInfo: PkgInfo): PkgVersionName { if (pkgInfo["dist-tags"]?.["latest"] !== undefined) return pkgInfo["dist-tags"]["latest"]; else if (pkgInfo.versions) { - // @ts-ignore - // TODO: Handle undefined return Object.keys(pkgInfo.versions).find( // TODO: Something is wrong here // @ts-ignore (key) => pkgInfo.versions[key] == "latest" ); } else if (pkgInfo.version) return pkgInfo.version; - // TODO: Not handling undefined case + throw new Error("Could not get latest version from package"); }; // Load manifest json file From 91089708cfe91f29f4bd640e597bbcb04e9ed34a Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 10:33:56 +0200 Subject: [PATCH 049/201] fix: handle undefined Throw if upm-config dir-path could not be resolved --- lib/core.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index 25297faf..100563b2 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -369,7 +369,7 @@ export const saveManifest = function (data: PkgManifest) { // Get .upmconfig.toml directory export const getUpmConfigDir = async function (): Promise { - let dirPath = ""; + let dirPath: string | undefined = ""; const systemUserSubPath = "Unity/config/ServiceAccounts"; if (env.wsl) { if (!isWsl) { @@ -387,8 +387,6 @@ export const getUpmConfigDir = async function (): Promise { }); } } else { - // TODO: Handle undefined - // @ts-ignore dirPath = process.env.USERPROFILE ? process.env.USERPROFILE : process.env.HOME; @@ -399,6 +397,8 @@ export const getUpmConfigDir = async function (): Promise { dirPath = path.join(process.env.ALLUSERSPROFILE, systemUserSubPath); } } + if (dirPath === undefined) + throw new Error("Could not resolve upm-config dir-path"); return dirPath; }; From dd0cc5cafec74635ae31e2d376d3e9080b32a242 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 10:35:33 +0200 Subject: [PATCH 050/201] fix: handle null Throw if editor-version could not be parsed --- lib/core.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index 100563b2..30246215 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -434,6 +434,10 @@ export const saveUpmConfig = async function ( export const compareEditorVersion = function (a: string, b: string) { const verA = parseEditorVersion(a); const verB = parseEditorVersion(b); + + if (verA === null || verB === null) + throw new Error("An editor version could not be parsed"); + const editorVersionToArray = (ver: SemanticVersion) => [ ver.major, ver.minor, @@ -443,10 +447,7 @@ export const compareEditorVersion = function (a: string, b: string) { ver.locValue || 0, ver.locBuild || 0, ]; - // TODO: Handle null - // @ts-ignore const arrA = editorVersionToArray(verA); - // @ts-ignore const arrB = editorVersionToArray(verB); for (let i = 0; i < arrA.length; i++) { const valA = arrA[i]; From 8b63a92f03bcc5f2d63d6212d633f75743548d56 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 10:47:59 +0200 Subject: [PATCH 051/201] fix: type errors Add type for editor-version regex matches in order to prevent type errors. Also on line 501 I removed the toLowerCase() because it does not seem to be necessary looking at the regex --- lib/core.ts | 32 +++++++++++++------------------- lib/types/global.d.ts | 2 +- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index 30246215..fb98b50b 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -13,6 +13,7 @@ import { getNpmClient } from "./client"; import log from "./logger"; import { assertIsError } from "./utils/error-type-guards"; import search from "libnpmsearch"; +import { type } from "os"; export const env: Env = { auth: {}, @@ -475,45 +476,38 @@ export const compareEditorVersion = function (a: string, b: string) { export const parseEditorVersion = function ( version: string ): SemanticVersion | null { + type RegexMatchGroups = { + major: `${number}`; + minor: `${number}`; + patch?: string; + flag?: "a" | "b" | "f" | "c"; + build?: `${number}`; + loc?: "c"; + locBuild?: `${number}`; + }; + if (!version) return null; const regex = /^(?\d+)\.(?\d+)(\.(?\d+)((?a|b|f|c)(?\d+)((?c)(?\d+))?)?)?/; const match = regex.exec(version); if (!match) return null; - const groups = match.groups; + const groups = match.groups; const result: SemanticVersion = { - // TODO: Check undefined - // @ts-ignore major: parseInt(groups.major), - // @ts-ignore minor: parseInt(groups.minor), }; - // TODO: Check undefined - // @ts-ignore if (groups.patch) result.patch = parseInt(groups.patch); - // TODO: Check undefined - // @ts-ignore if (groups.flag) { - // TODO: Do type checking - // @ts-ignore - result.flag = groups.flag.toLowerCase(); + result.flag = groups.flag; if (result.flag == "a") result.flagValue = 0; if (result.flag == "b") result.flagValue = 1; if (result.flag == "f") result.flagValue = 2; - // TODO: Handle undefined - // @ts-ignore if (groups.build) result.build = parseInt(groups.build); } - // TODO: Handle undefined - // @ts-ignore if (groups.loc) { - // TODO: Handle undefined - // @ts-ignore result.loc = groups.loc.toLowerCase(); if (result.loc == "c") result.locValue = 1; - // TODO: Handle undefined - // @ts-ignore if (groups.locBuild) result.locBuild = parseInt(groups.locBuild); } return result; diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index a5dbe8a8..8cb7e7ae 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -16,7 +16,7 @@ declare global { major: number; minor: number; patch?: number; - flag?: "a" | "b" | "f"; + flag?: "a" | "b" | "f" | "c"; flagValue?: 0 | 1 | 2; build?: number; loc?: string; From 1084bd9f85ec8c0e9222b24a36d051e0c01e9a5e Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 10:50:48 +0200 Subject: [PATCH 052/201] fix: getLatestVersion should return undefined By reading the tests I saw that this function should return undefined if the version could not be determined. Changed signature --- lib/core.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index fb98b50b..a3daeb6c 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -321,7 +321,9 @@ export const fetchPackageDependencies = async function ({ }; // Get latest version from package info -export const getLatestVersion = function (pkgInfo: PkgInfo): PkgVersionName { +export const getLatestVersion = function ( + pkgInfo: PkgInfo +): PkgVersionName | undefined { if (pkgInfo["dist-tags"]?.["latest"] !== undefined) return pkgInfo["dist-tags"]["latest"]; else if (pkgInfo.versions) { @@ -331,7 +333,6 @@ export const getLatestVersion = function (pkgInfo: PkgInfo): PkgVersionName { (key) => pkgInfo.versions[key] == "latest" ); } else if (pkgInfo.version) return pkgInfo.version; - throw new Error("Could not get latest version from package"); }; // Load manifest json file From 3eb242c7fdd146ec0689b9ac162dcf42e323b46a Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 10:51:12 +0200 Subject: [PATCH 053/201] refactor: remove outdated logic See https://github.com/openupm/openupm-cli/pull/52#issuecomment-1776779428 --- lib/core.ts | 8 +------- test/test-core.js | 5 ----- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index a3daeb6c..3539d032 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -326,13 +326,7 @@ export const getLatestVersion = function ( ): PkgVersionName | undefined { if (pkgInfo["dist-tags"]?.["latest"] !== undefined) return pkgInfo["dist-tags"]["latest"]; - else if (pkgInfo.versions) { - return Object.keys(pkgInfo.versions).find( - // TODO: Something is wrong here - // @ts-ignore - (key) => pkgInfo.versions[key] == "latest" - ); - } else if (pkgInfo.version) return pkgInfo.version; + else if (pkgInfo.version) return pkgInfo.version; }; // Load manifest json file diff --git a/test/test-core.js b/test/test-core.js index bc1fe13b..cb8e3edc 100644 --- a/test/test-core.js +++ b/test/test-core.js @@ -373,11 +373,6 @@ describe("cmd-core.ts", function() { "1.0.0" ); }); - it("from versions", async function() { - getLatestVersion({ versions: { "1.0.0": "latest" } }).should.equal( - "1.0.0" - ); - }); it("not found", async function() { ( getLatestVersion({ versions: { "1.0.0": "patch" } }) === undefined From bcd0dde28fc5aed8eb4fa17ce038d46a28e141df Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 14:32:37 +0200 Subject: [PATCH 054/201] fix: handle undefined Throw if version of package to add could not be determined --- lib/cmd-add.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index 60af54d6..2566ba27 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -100,6 +100,8 @@ const _add = async function ({ return { code: 1, dirty }; } + if (version === undefined) + throw new Error("Could not determine package version to add"); const versionInfo = pkgInfo.versions[version]; // verify editor version if (versionInfo.unity) { From bc08acc7e4ec4dbba3c2ff5ee51dbde8d58f5c10 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 14:35:46 +0200 Subject: [PATCH 055/201] fix: fix type error Allow undefined as possible value for version in table-row --- lib/cmd-search.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index fd7644c4..a7af3e0e 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -6,7 +6,7 @@ import { env, getLatestVersion, getNpmFetchOptions, parseEnv } from "./core"; import { is404Error, isHttpError } from "./utils/error-type-guards"; import * as os from "os"; -type TableRow = [PkgName, PkgVersionName, string, ""]; +type TableRow = [PkgName, PkgVersionName | undefined, string, ""]; export type SearchOptions = { _global: GlobalOptions; From dc79145f548d6dffd38605c3b7ad32f9f03cdae1 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 14:36:41 +0200 Subject: [PATCH 056/201] refactor: assert undefined Version is required in order to print package info --- lib/cmd-view.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/cmd-view.ts b/lib/cmd-view.ts index c446eee1..4e5cad1f 100644 --- a/lib/cmd-view.ts +++ b/lib/cmd-view.ts @@ -7,6 +7,7 @@ import { parseEnv, parseName, } from "./core"; +import assert from "assert"; export type ViewOptions = { _global: GlobalOptions; @@ -38,6 +39,7 @@ export const view = async function (pkg: Pkg, options: ViewOptions) { const printInfo = function (pkg: PkgInfo) { const versionCount = Object.keys(pkg.versions).length; const ver = getLatestVersion(pkg); + assert(ver !== undefined); const verInfo = pkg.versions[ver]; const license = verInfo.license || "proprietary or unlicensed"; const displayName = verInfo.displayName; From 8937e2d7e81e063b57cc640f88039121143584cd Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 14:40:32 +0200 Subject: [PATCH 057/201] refactor: remove unused imports --- lib/core.ts | 1 - lib/types/global.d.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index 3539d032..31065aa7 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -13,7 +13,6 @@ import { getNpmClient } from "./client"; import log from "./logger"; import { assertIsError } from "./utils/error-type-guards"; import search from "libnpmsearch"; -import { type } from "os"; export const env: Env = { auth: {}, diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index 8cb7e7ae..62f05c14 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -1,4 +1,3 @@ -import { Logger } from "npmlog"; import { NpmAuth } from "another-npm-registry-client"; declare global { From 920fd52ae4337a362bdcd9c1bab3f9020c5a1ccf Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 14:43:43 +0200 Subject: [PATCH 058/201] fix: unhandled undefined Latest version is required --- lib/core.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/core.ts b/lib/core.ts index 31065aa7..065fcde6 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -13,6 +13,7 @@ import { getNpmClient } from "./client"; import log from "./logger"; import { assertIsError } from "./utils/error-type-guards"; import search from "libnpmsearch"; +import assert from "assert"; export const env: Env = { auth: {}, @@ -279,8 +280,10 @@ export const fetchPackageDependencies = async function ({ // verify version const versions = Object.keys(pkgInfo.versions); if (!entry.version || entry.version == "latest") { + const latestVersion = getLatestVersion(pkgInfo); + assert(latestVersion !== undefined); // eslint-disable-next-line require-atomic-updates - depObj.version = entry.version = getLatestVersion(pkgInfo); + depObj.version = entry.version = latestVersion; } // handle version not exist if (!versions.find((x) => x == entry.version)) { From 379b0a449de3005187afa9c5b14e4c3d37369247 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 14:46:01 +0200 Subject: [PATCH 059/201] fix: handle undefined Require latest version --- lib/cmd-search.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index a7af3e0e..b4ea8e3f 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -5,8 +5,11 @@ import log from "./logger"; import { env, getLatestVersion, getNpmFetchOptions, parseEnv } from "./core"; import { is404Error, isHttpError } from "./utils/error-type-guards"; import * as os from "os"; +import assert from "assert"; -type TableRow = [PkgName, PkgVersionName | undefined, string, ""]; +type DateString = string; + +type TableRow = [PkgName, PkgVersionName, DateString, ""]; export type SearchOptions = { _global: GlobalOptions; @@ -83,6 +86,7 @@ const getTableRow = function (pkg: PkgInfo): TableRow { if (pkg.date) { date = pkg.date.toISOString().slice(0, 10); } + assert(version !== undefined); return [name, version, date, ""]; }; From f9ae663df71b1cd38fcddcf0ee442835bd32958b Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 14:49:29 +0200 Subject: [PATCH 060/201] refactor: simplify ifs Remove unnecessary boolean comparisons --- lib/core.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index 065fcde6..4c758bd8 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -54,16 +54,16 @@ export const parseEnv = async function ( // log level log.level = options._global.verbose ? "verbose" : "notice"; // color - if (options._global.color === false) env.color = false; + if (!options._global.color) env.color = false; if (process.env.NODE_ENV == "test") env.color = false; if (!env.color) { chalk.level = 0; log.disableColor(); } // upstream - if (options._global.upstream === false) env.upstream = false; + if (!options._global.upstream) env.upstream = false; // region cn - if (options._global.cn === true) { + if (options._global.cn) { env.registry = "https://package.openupm.cn"; env.upstreamRegistry = "https://packages.unity.cn"; env.region = "cn"; From 539f953a562f5c0a3ade15400d524ba47b890538 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 14:49:47 +0200 Subject: [PATCH 061/201] refactor: inline return --- lib/cmd-search.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index b4ea8e3f..b65ae3f0 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -71,11 +71,10 @@ const searchOld = async function ( }; const getTable = function () { - const table = new Table({ + return new Table({ head: ["Name", "Version", "Date"], colWidths: [42, 20, 12], }); - return table; }; const getTableRow = function (pkg: PkgInfo): TableRow { From 9215dc99ce9072a4420aaae43d12e21a50df227b Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 15:41:14 +0200 Subject: [PATCH 062/201] fix: incorrectly registering errors The callbacks used by the registry client incorrectly always registered an error. Added a null-check to only create an error when something actually went wrong --- lib/client.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/client.ts b/lib/client.ts index e430584c..5d16f17f 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -22,10 +22,10 @@ export type NpmClient = { }; export class NpmClientError extends Error { - cause: Error | null; + cause: Error; response: request.Response; - constructor(cause: Error | null, response: request.Response) { + constructor(cause: Error, response: request.Response) { super( cause?.message ?? "An error occurred while interacting with an Npm registry" @@ -59,10 +59,10 @@ function normalizeClientFunction( const withNormalizedError = ( uri: string, params: TParam, - cb: (error: NpmClientError, data: TData) => void + cb: (error: NpmClientError | null, data: TData) => void ) => { return bound(uri, params, (error, data, raw, res) => { - cb(new NpmClientError(error, res), data); + cb(error !== null ? new NpmClientError(error, res) : null, data); }); }; return promisify(withNormalizedError); From 0ee74661db7ebed0a907d970b9f214164961551f Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 15:49:48 +0200 Subject: [PATCH 063/201] misc: add build npm script Just runs tsc --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 399cccc4..a68ae0a4 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ }, "main": "index.js", "scripts": { + "build": "tsc", "test": "tsc && cross-env NODE_ENV=test mocha", "semantic-release": "semantic-release" }, From 0e08924bae4c4840d8cbb2b2565f83554ae0040f Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 15:49:58 +0200 Subject: [PATCH 064/201] misc: reformat file --- tsconfig.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index 27e1d3c9..e5605e29 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,8 +11,7 @@ // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ /* Language and Environment */ - "target": "ES2020", - /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + "target": "ES2020", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ "lib": ["ES2020"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ // "jsx": "preserve", /* Specify what JSX code is generated. */ // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ From 164c2561718e8f51b10ba9723ea088420f94c003 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 15:51:47 +0200 Subject: [PATCH 065/201] fix: undefined error Some tests where failing because there was a throw if a package with unknown version was added. Undefined was an acceptable value, so the throw was removed and the types changed accordingly --- lib/cmd-deps.ts | 3 +-- lib/core.ts | 2 +- lib/types/global.d.ts | 4 ++-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index b836d738..908ff4ba 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -13,7 +13,6 @@ export const deps = async function (pkg: Pkg, options: DepsOptions) { // parse name const { name, version } = parseName(pkg); // deps - if (version === undefined) throw new Error("Version undefined"); await _deps({ name, version, deep: options.deep }); return 0; }; @@ -24,7 +23,7 @@ const _deps = async function ({ deep, }: { name: PkgName; - version: PkgVersionName; + version: PkgVersionName | undefined; deep: boolean; }) { // eslint-disable-next-line no-unused-vars diff --git a/lib/core.ts b/lib/core.ts index 4c758bd8..0f8392c6 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -211,7 +211,7 @@ export const fetchPackageDependencies = async function ({ deep, }: { name: PkgName; - version: PkgVersionName; + version: PkgVersionName | undefined; deep: boolean; }): Promise<[Dependency[], Dependency[]]> { log.verbose("dependency", `fetch: ${name}@${version} deep=${deep}`); diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index 62f05c14..4704df32 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -70,12 +70,12 @@ declare global { type NameVersionPair = { name: PkgName; - version: PkgVersionName; + version: PkgVersionName | undefined; }; type Dependency = { name: PkgName; - version: PkgVersionName; + version: PkgVersionName | undefined; upstream: boolean; self: boolean; internal: boolean; From a4765e96c1c084ecaadcbd05733e036fc5e7a0a2 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 16:19:28 +0200 Subject: [PATCH 066/201] conf: generate sourcemaps To enable debugging --- tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index e5605e29..15adc119 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -53,7 +53,7 @@ // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ // "declarationMap": true, /* Create sourcemaps for d.ts files. */ // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + "sourceMap": true, /* Create source map files for emitted JavaScript files. */ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ "outDir": "./build", /* Specify an output folder for all emitted files. */ From 91aa003d5bc22d2af86056d4119f13014d9bd365 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 16:19:37 +0200 Subject: [PATCH 067/201] Revert "refactor: simplify ifs" This reverts commit f9ae663df71b1cd38fcddcf0ee442835bd32958b. --- lib/core.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index 0f8392c6..8dec82d8 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -54,16 +54,16 @@ export const parseEnv = async function ( // log level log.level = options._global.verbose ? "verbose" : "notice"; // color - if (!options._global.color) env.color = false; + if (options._global.color === false) env.color = false; if (process.env.NODE_ENV == "test") env.color = false; if (!env.color) { chalk.level = 0; log.disableColor(); } // upstream - if (!options._global.upstream) env.upstream = false; + if (options._global.upstream === false) env.upstream = false; // region cn - if (options._global.cn) { + if (options._global.cn === true) { env.registry = "https://package.openupm.cn"; env.upstreamRegistry = "https://packages.unity.cn"; env.region = "cn"; From 2b84c6bac340747ebfcc88fdfcf8d5173b564c9e Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 16:20:29 +0200 Subject: [PATCH 068/201] fix: incorrect type for env properties --- lib/types/global.d.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index 4704df32..6ac3906a 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -98,9 +98,9 @@ declare global { type GlobalOptions = { registry?: Registry; verbose: boolean; - color: boolean; - upstream: boolean; - cn: boolean; + color?: boolean; + upstream?: boolean; + cn?: boolean; systemUser: boolean; wsl: boolean; chdir: string; From 8027f16c0342c406851a88ba2ea1fad6b1c0af7f Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 16:22:23 +0200 Subject: [PATCH 069/201] fix: invalid type assertion --- lib/utils/error-type-guards.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/utils/error-type-guards.ts b/lib/utils/error-type-guards.ts index 701db6ef..95745343 100644 --- a/lib/utils/error-type-guards.ts +++ b/lib/utils/error-type-guards.ts @@ -11,7 +11,7 @@ export function assertIsError(x: unknown): asserts x is ErrnoException { } export const isHttpError = (x: unknown): x is HttpErrorBase => { - return x instanceof HttpErrorBase; + return x instanceof Error && "statusCode" in x; }; export const isConnectionError = (err: HttpErrorBase): boolean => From ef79f70fab736827ba8cb324ee718e900b39d70e Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 21:27:49 +0200 Subject: [PATCH 070/201] refactor: change type Expand type for package names with attached version to allow all strings for the version. The reason is that the string after the @ may not only include versions such as "1.0.0" but also tags such as "beta" --- lib/types/global.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index 6ac3906a..daf23c04 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -5,7 +5,7 @@ declare global { type PkgVersionName = string; - type Pkg = `${PkgName}@${PkgVersionName}`; + type Pkg = `${PkgName}@${string}`; type Region = "us" | "cn"; From b08bcf2d1fa7fb91b08f31c8879db75f7eeffe1b Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 21:29:46 +0200 Subject: [PATCH 071/201] refactor: rename type Rename PkgVersion to PkgVersionInfo in order to be more in line with PkgInfo type name --- lib/types/global.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index daf23c04..03d19c5b 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -45,7 +45,7 @@ declare global { integrity: string; }; - type PkgVersion = { + type PkgVersionInfo = { unity: string; unityRelease: string; dependencies: Record; @@ -59,7 +59,7 @@ declare global { type PkgInfo = { name: PkgName; - versions: Record; + versions: Record; "dist-tags": { latest?: PkgVersionName }; version?: PkgVersionName; description?: string; From 8758094cb46cf739b1353caecebae0af0a28a044 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 21:31:27 +0200 Subject: [PATCH 072/201] refactor: rename type Extend type name to be clearer --- lib/cmd-add.ts | 4 ++-- lib/cmd-deps.ts | 2 +- lib/cmd-remove.ts | 4 ++-- lib/cmd-view.ts | 2 +- lib/core.ts | 2 +- lib/types/global.d.ts | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index 2566ba27..f5b1072b 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -20,7 +20,7 @@ export type AddOptions = { }; export const add = async function ( - pkgs: Pkg | Pkg[], + pkgs: PkgNameWithVersion | PkgNameWithVersion[], options: AddOptions ): Promise { if (!Array.isArray(pkgs)) pkgs = [pkgs]; @@ -48,7 +48,7 @@ const _add = async function ({ testables, force, }: { - pkg: Pkg; + pkg: PkgNameWithVersion; testables: boolean; force: boolean; }) { diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index 908ff4ba..1a863d34 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -6,7 +6,7 @@ export type DepsOptions = { _global: GlobalOptions; }; -export const deps = async function (pkg: Pkg, options: DepsOptions) { +export const deps = async function (pkg: PkgNameWithVersion, options: DepsOptions) { // parse env const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; diff --git a/lib/cmd-remove.ts b/lib/cmd-remove.ts index aad8a7ac..38c4b4b3 100644 --- a/lib/cmd-remove.ts +++ b/lib/cmd-remove.ts @@ -6,7 +6,7 @@ export type RemoveOptions = { }; export const remove = async function ( - pkgs: Pkg[] | Pkg, + pkgs: PkgNameWithVersion[] | PkgNameWithVersion, options: RemoveOptions ) { if (!Array.isArray(pkgs)) pkgs = [pkgs]; @@ -26,7 +26,7 @@ export const remove = async function ( return result.code; }; -const _remove = async function (pkg: Pkg) { +const _remove = async function (pkg: PkgNameWithVersion) { // dirty flag let dirty = false; // parse name diff --git a/lib/cmd-view.ts b/lib/cmd-view.ts index 4e5cad1f..6d1186f9 100644 --- a/lib/cmd-view.ts +++ b/lib/cmd-view.ts @@ -13,7 +13,7 @@ export type ViewOptions = { _global: GlobalOptions; }; -export const view = async function (pkg: Pkg, options: ViewOptions) { +export const view = async function (pkg: PkgNameWithVersion, options: ViewOptions) { // parse env const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; diff --git a/lib/core.ts b/lib/core.ts index 8dec82d8..682168c5 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -157,7 +157,7 @@ export const parseEnv = async function ( }; // Parse name to {name, version} -export const parseName = function (pkg: Pkg): { +export const parseName = function (pkg: PkgNameWithVersion): { name: PkgName; version: PkgVersionName | undefined; } { diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index 03d19c5b..fe1f599d 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -5,7 +5,7 @@ declare global { type PkgVersionName = string; - type Pkg = `${PkgName}@${string}`; + type PkgNameWithVersion = `${PkgName}@${string}`; type Region = "us" | "cn"; From 84d1e1fb8983d923fef8aa4bb34c893a430856e6 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 21:43:05 +0200 Subject: [PATCH 073/201] refactor: simplify package name type A package-name can now include a version or not --- lib/cmd-add.ts | 4 ++-- lib/cmd-deps.ts | 2 +- lib/cmd-remove.ts | 4 ++-- lib/cmd-view.ts | 2 +- lib/core.ts | 4 ++-- lib/types/global.d.ts | 6 +++--- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index f5b1072b..b07054e4 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -20,7 +20,7 @@ export type AddOptions = { }; export const add = async function ( - pkgs: PkgNameWithVersion | PkgNameWithVersion[], + pkgs: PkgName | PkgName[], options: AddOptions ): Promise { if (!Array.isArray(pkgs)) pkgs = [pkgs]; @@ -48,7 +48,7 @@ const _add = async function ({ testables, force, }: { - pkg: PkgNameWithVersion; + pkg: PkgName; testables: boolean; force: boolean; }) { diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index 1a863d34..650a6725 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -6,7 +6,7 @@ export type DepsOptions = { _global: GlobalOptions; }; -export const deps = async function (pkg: PkgNameWithVersion, options: DepsOptions) { +export const deps = async function (pkg: PkgName, options: DepsOptions) { // parse env const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; diff --git a/lib/cmd-remove.ts b/lib/cmd-remove.ts index 38c4b4b3..61017151 100644 --- a/lib/cmd-remove.ts +++ b/lib/cmd-remove.ts @@ -6,7 +6,7 @@ export type RemoveOptions = { }; export const remove = async function ( - pkgs: PkgNameWithVersion[] | PkgNameWithVersion, + pkgs: PkgName[] | PkgName, options: RemoveOptions ) { if (!Array.isArray(pkgs)) pkgs = [pkgs]; @@ -26,7 +26,7 @@ export const remove = async function ( return result.code; }; -const _remove = async function (pkg: PkgNameWithVersion) { +const _remove = async function (pkg: PkgName) { // dirty flag let dirty = false; // parse name diff --git a/lib/cmd-view.ts b/lib/cmd-view.ts index 6d1186f9..c62e03b7 100644 --- a/lib/cmd-view.ts +++ b/lib/cmd-view.ts @@ -13,7 +13,7 @@ export type ViewOptions = { _global: GlobalOptions; }; -export const view = async function (pkg: PkgNameWithVersion, options: ViewOptions) { +export const view = async function (pkg: PkgName, options: ViewOptions) { // parse env const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; diff --git a/lib/core.ts b/lib/core.ts index 682168c5..7d6388bc 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -157,8 +157,8 @@ export const parseEnv = async function ( }; // Parse name to {name, version} -export const parseName = function (pkg: PkgNameWithVersion): { - name: PkgName; +export const parseName = function (pkg: PkgName): { + name: ReverseDomainName; version: PkgVersionName | undefined; } { const segs = pkg.split("@"); diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index fe1f599d..99845653 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -1,11 +1,11 @@ import { NpmAuth } from "another-npm-registry-client"; declare global { - type PkgName = string; - type PkgVersionName = string; - type PkgNameWithVersion = `${PkgName}@${string}`; + type ReverseDomainName = string; + + type PkgName = ReverseDomainName | `${ReverseDomainName}@${PkgVersionName}`; type Region = "us" | "cn"; From 70e8873ba76f2795a093b312cb0407603e89b2ac Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 22:02:50 +0200 Subject: [PATCH 074/201] refactor: make property optional As indicated by usage --- lib/types/global.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index 99845653..f2b4a584 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -46,7 +46,7 @@ declare global { }; type PkgVersionInfo = { - unity: string; + unity?: string; unityRelease: string; dependencies: Record; license?: string; From ebfa04b1615b7d3fe0a1807f185cd05ff5be8713 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 22:13:46 +0200 Subject: [PATCH 075/201] refactor: extract utility function Extract function that checks if the version-name of a package is a url version, such as a git-url. For now we do this as before by just checking if it starts with one of the common protocols --- lib/cmd-add.ts | 8 ++------ lib/utils/version-name.ts | 10 ++++++++++ 2 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 lib/utils/version-name.ts diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index b07054e4..bfac7051 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -12,6 +12,7 @@ import { parseName, saveManifest, } from "./core"; +import { isUrlVersion } from "./utils/version-name"; export type AddOptions = { test: boolean; @@ -70,12 +71,7 @@ const _add = async function ({ } // packages that added to scope registry const pkgsInScope: PkgName[] = []; - const isGitOrLocal = - version !== undefined && - (version.startsWith("git") || - version.startsWith("file") || - version.startsWith("http")); - if (!isGitOrLocal) { + if (version === undefined || !isUrlVersion(version)) { // verify name let pkgInfo = await fetchPackageInfo(name); if (!pkgInfo && env.upstream) { diff --git a/lib/utils/version-name.ts b/lib/utils/version-name.ts new file mode 100644 index 00000000..1ca778cc --- /dev/null +++ b/lib/utils/version-name.ts @@ -0,0 +1,10 @@ +const isGit = (versionName: PkgVersionName): boolean => + versionName.startsWith("git"); +const isHttp = (versionName: PkgVersionName): boolean => + versionName.startsWith("http"); + +const isLocal = (versionName: PkgVersionName): boolean => + versionName.startsWith("file"); + +export const isUrlVersion = (versionName: PkgVersionName): boolean => + isGit(versionName) || isHttp(versionName) || isLocal(versionName); From b54c937d450b007c2c916c67e551f158b77c4c6e Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 10:59:45 +0200 Subject: [PATCH 076/201] refactor: rename type Shorten version-name type name to just version, since it no longer conflicts with version-info --- lib/cmd-add.ts | 2 +- lib/cmd-deps.ts | 2 +- lib/cmd-search.ts | 2 +- lib/core.ts | 10 +++++----- lib/types/global.d.ts | 20 ++++++++++---------- lib/utils/version-name.ts | 10 ---------- lib/utils/version.ts | 7 +++++++ 7 files changed, 25 insertions(+), 28 deletions(-) delete mode 100644 lib/utils/version-name.ts create mode 100644 lib/utils/version.ts diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index bfac7051..604ec8c6 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -12,7 +12,7 @@ import { parseName, saveManifest, } from "./core"; -import { isUrlVersion } from "./utils/version-name"; +import { isUrlVersion } from "./utils/version"; export type AddOptions = { test: boolean; diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index 650a6725..6da80762 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -23,7 +23,7 @@ const _deps = async function ({ deep, }: { name: PkgName; - version: PkgVersionName | undefined; + version: PkgVersion | undefined; deep: boolean; }) { // eslint-disable-next-line no-unused-vars diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index b65ae3f0..c0a4a757 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -9,7 +9,7 @@ import assert from "assert"; type DateString = string; -type TableRow = [PkgName, PkgVersionName, DateString, ""]; +type TableRow = [PkgName, PkgVersion, DateString, ""]; export type SearchOptions = { _global: GlobalOptions; diff --git a/lib/core.ts b/lib/core.ts index 7d6388bc..8da107ba 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -159,7 +159,7 @@ export const parseEnv = async function ( // Parse name to {name, version} export const parseName = function (pkg: PkgName): { name: ReverseDomainName; - version: PkgVersionName | undefined; + version: PkgVersion | undefined; } { const segs = pkg.split("@"); const name = segs[0]; @@ -211,7 +211,7 @@ export const fetchPackageDependencies = async function ({ deep, }: { name: PkgName; - version: PkgVersionName | undefined; + version: PkgVersion | undefined; deep: boolean; }): Promise<[Dependency[], Dependency[]]> { log.verbose("dependency", `fetch: ${name}@${version} deep=${deep}`); @@ -225,7 +225,7 @@ export const fetchPackageDependencies = async function ({ const depsInvalid = []; // cached dict: {pkg-name: pkgInfo} const cachedPacakgeInfoDict: Record< - PkgVersionName, + PkgVersion, { pkgInfo: PkgInfo; upstream: boolean } > = {}; while (pendingList.length > 0) { @@ -304,7 +304,7 @@ export const fetchPackageDependencies = async function ({ if (depObj.self || deep) { const deps: NameVersionPair[] = _.toPairs( pkgInfo.versions[entry.version]["dependencies"] - ).map((x: [PkgName, PkgVersionName]): NameVersionPair => { + ).map((x: [PkgName, PkgVersion]): NameVersionPair => { return { name: x[0], version: x[1] }; }); deps.forEach((x) => pendingList.push(x)); @@ -325,7 +325,7 @@ export const fetchPackageDependencies = async function ({ // Get latest version from package info export const getLatestVersion = function ( pkgInfo: PkgInfo -): PkgVersionName | undefined { +): PkgVersion | undefined { if (pkgInfo["dist-tags"]?.["latest"] !== undefined) return pkgInfo["dist-tags"]["latest"]; else if (pkgInfo.version) return pkgInfo.version; diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index f2b4a584..65265d93 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -1,11 +1,11 @@ import { NpmAuth } from "another-npm-registry-client"; declare global { - type PkgVersionName = string; + type PkgVersion = string; type ReverseDomainName = string; - type PkgName = ReverseDomainName | `${ReverseDomainName}@${PkgVersionName}`; + type PkgName = ReverseDomainName | `${ReverseDomainName}@${PkgVersion}`; type Region = "us" | "cn"; @@ -48,7 +48,7 @@ declare global { type PkgVersionInfo = { unity?: string; unityRelease: string; - dependencies: Record; + dependencies: Record; license?: string; displayName: string; description?: string; @@ -59,23 +59,23 @@ declare global { type PkgInfo = { name: PkgName; - versions: Record; - "dist-tags": { latest?: PkgVersionName }; - version?: PkgVersionName; + versions: Record; + "dist-tags": { latest?: PkgVersion }; + version?: PkgVersion; description?: string; keywords?: string[]; - time: Record<"created" | "modified" | PkgVersionName, string>; + time: Record<"created" | "modified" | PkgVersion, string>; date?: Date; }; type NameVersionPair = { name: PkgName; - version: PkgVersionName | undefined; + version: PkgVersion | undefined; }; type Dependency = { name: PkgName; - version: PkgVersionName | undefined; + version: PkgVersion | undefined; upstream: boolean; self: boolean; internal: boolean; @@ -90,7 +90,7 @@ declare global { }; type PkgManifest = { - dependencies: Record; + dependencies: Record; scopedRegistries: ScopedRegistry[]; testables: string[]; }; diff --git a/lib/utils/version-name.ts b/lib/utils/version-name.ts deleted file mode 100644 index 1ca778cc..00000000 --- a/lib/utils/version-name.ts +++ /dev/null @@ -1,10 +0,0 @@ -const isGit = (versionName: PkgVersionName): boolean => - versionName.startsWith("git"); -const isHttp = (versionName: PkgVersionName): boolean => - versionName.startsWith("http"); - -const isLocal = (versionName: PkgVersionName): boolean => - versionName.startsWith("file"); - -export const isUrlVersion = (versionName: PkgVersionName): boolean => - isGit(versionName) || isHttp(versionName) || isLocal(versionName); diff --git a/lib/utils/version.ts b/lib/utils/version.ts new file mode 100644 index 00000000..459ae800 --- /dev/null +++ b/lib/utils/version.ts @@ -0,0 +1,7 @@ +const isGit = (version: PkgVersion): boolean => version.startsWith("git"); +const isHttp = (version: PkgVersion): boolean => version.startsWith("http"); + +const isLocal = (version: PkgVersion): boolean => version.startsWith("file"); + +export const isUrlVersion = (version: PkgVersion): boolean => + isGit(version) || isHttp(version) || isLocal(version); From ead4616d5bdb21f571bec9eb569c6cbce7f38354 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 11:00:50 +0200 Subject: [PATCH 077/201] refactor: remove extraneous if IDE tells me that this if is always false --- lib/cmd-add.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index 604ec8c6..0b9fccfd 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -180,7 +180,6 @@ const _add = async function ({ } else pkgsInScope.push(name); } // add to dependencies - if (version === undefined) throw new Error("Version is undefined"); const oldVersion = manifest.dependencies[name]; manifest.dependencies[name] = version; if (!oldVersion) { From 996aa41167c7415a9283e9155a1fa4c977b7c82d Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 11:03:55 +0200 Subject: [PATCH 078/201] refactor: rename module To match type --- lib/cmd-add.ts | 2 +- lib/utils/{version.ts => pkg-version.ts} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename lib/utils/{version.ts => pkg-version.ts} (100%) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index 0b9fccfd..bfdc12b2 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -12,7 +12,7 @@ import { parseName, saveManifest, } from "./core"; -import { isUrlVersion } from "./utils/version"; +import { isUrlVersion } from "./utils/pkg-version"; export type AddOptions = { test: boolean; diff --git a/lib/utils/version.ts b/lib/utils/pkg-version.ts similarity index 100% rename from lib/utils/version.ts rename to lib/utils/pkg-version.ts From 151334bb9c09c7c3d1f1c96c61da1751636d30fd Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 11:08:10 +0200 Subject: [PATCH 079/201] refactor: extract and rename function Rename the parseName function to splitPackageName to better reflect it's purpose. Also moved to separate module --- lib/cmd-add.ts | 8 ++++---- lib/cmd-deps.ts | 5 +++-- lib/cmd-remove.ts | 9 ++++---- lib/cmd-view.ts | 11 +++------- lib/core.ts | 12 ----------- lib/utils/pkg-name.ts | 16 +++++++++++++++ test/test-core.js | 40 ------------------------------------ test/test-pkg-name.js | 48 +++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 79 insertions(+), 70 deletions(-) create mode 100644 lib/utils/pkg-name.ts create mode 100644 test/test-pkg-name.js diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index bfdc12b2..aa12b3bb 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -9,10 +9,10 @@ import { loadManifest, parseEditorVersion, parseEnv, - parseName, saveManifest, } from "./core"; import { isUrlVersion } from "./utils/pkg-version"; +import { splitPkgName } from "./utils/pkg-name"; export type AddOptions = { test: boolean; @@ -58,9 +58,9 @@ const _add = async function ({ // is upstream package flag let isUpstreamPackage = false; // parse name - const parseResult = parseName(pkg); - const name = parseResult.name; - let version = parseResult.version; + const split = splitPkgName(pkg); + const name = split.name; + let version = split.version; // load manifest const manifest = loadManifest(); diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index 6da80762..2cdaa758 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -1,5 +1,6 @@ import log from "./logger"; -import { fetchPackageDependencies, parseEnv, parseName } from "./core"; +import { fetchPackageDependencies, parseEnv } from "./core"; +import { splitPkgName } from "./utils/pkg-name"; export type DepsOptions = { deep: boolean; @@ -11,7 +12,7 @@ export const deps = async function (pkg: PkgName, options: DepsOptions) { const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; // parse name - const { name, version } = parseName(pkg); + const { name, version } = splitPkgName(pkg); // deps await _deps({ name, version, deep: options.deep }); return 0; diff --git a/lib/cmd-remove.ts b/lib/cmd-remove.ts index 61017151..025ec8ea 100644 --- a/lib/cmd-remove.ts +++ b/lib/cmd-remove.ts @@ -1,5 +1,6 @@ import log from "./logger"; -import { env, loadManifest, parseEnv, parseName, saveManifest } from "./core"; +import { env, loadManifest, parseEnv, saveManifest } from "./core"; +import { splitPkgName } from "./utils/pkg-name"; export type RemoveOptions = { _global: GlobalOptions; @@ -30,9 +31,9 @@ const _remove = async function (pkg: PkgName) { // dirty flag let dirty = false; // parse name - const parseResult = parseName(pkg); - const name = parseResult.name; - let version = parseResult.version; + const split = splitPkgName(pkg); + const name = split.name; + let version = split.version; if (version) { log.warn("", `please replace '${name}@${version}' with '${name}'`); return { code: 1, dirty }; diff --git a/lib/cmd-view.ts b/lib/cmd-view.ts index c62e03b7..1a7fc537 100644 --- a/lib/cmd-view.ts +++ b/lib/cmd-view.ts @@ -1,13 +1,8 @@ import chalk from "chalk"; import log from "./logger"; -import { - env, - fetchPackageInfo, - getLatestVersion, - parseEnv, - parseName, -} from "./core"; +import { env, fetchPackageInfo, getLatestVersion, parseEnv } from "./core"; import assert from "assert"; +import { splitPkgName } from "./utils/pkg-name"; export type ViewOptions = { _global: GlobalOptions; @@ -18,7 +13,7 @@ export const view = async function (pkg: PkgName, options: ViewOptions) { const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; // parse name - const { name, version } = parseName(pkg); + const { name, version } = splitPkgName(pkg); if (version) { log.warn("", `please replace '${name}@${version}' with '${name}'`); return 1; diff --git a/lib/core.ts b/lib/core.ts index 8da107ba..6c28f0d5 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -156,18 +156,6 @@ export const parseEnv = async function ( return true; }; -// Parse name to {name, version} -export const parseName = function (pkg: PkgName): { - name: ReverseDomainName; - version: PkgVersion | undefined; -} { - const segs = pkg.split("@"); - const name = segs[0]; - const version = - segs.length > 1 ? segs.slice(1, segs.length).join("@") : undefined; - return { name, version }; -}; - // Get npm fetch options export const getNpmFetchOptions = function (): search.Options { const opts: search.Options = { diff --git a/lib/utils/pkg-name.ts b/lib/utils/pkg-name.ts new file mode 100644 index 00000000..dcbbc0d2 --- /dev/null +++ b/lib/utils/pkg-name.ts @@ -0,0 +1,16 @@ +/** + * Split package-name, which may include a version into the actual name of the + * package and the version if it exists + */ +export const splitPkgName = function (pkgName: PkgName): { + name: ReverseDomainName; + version: PkgVersion | undefined; +} { + const segments = pkgName.split("@"); + const name = segments[0]; + const version = + segments.length > 1 + ? segments.slice(1, segments.length).join("@") + : undefined; + return { name, version }; +}; diff --git a/test/test-core.js b/test/test-core.js index cb8e3edc..72e93b0a 100644 --- a/test/test-core.js +++ b/test/test-core.js @@ -13,7 +13,6 @@ const { loadManifest, parseEditorVersion, parseEnv, - parseName, saveManifest, isInternalPackage } = require("../build/lib/core"); @@ -28,45 +27,6 @@ const { } = require("./utils"); describe("cmd-core.ts", function() { - describe("parseName", function() { - it("pkg@version", function() { - parseName("pkg@1.0.0").should.deepEqual({ - name: "pkg", - version: "1.0.0" - }); - }); - it("pkg@latest", function() { - parseName("pkg@latest").should.deepEqual({ - name: "pkg", - version: "latest" - }); - }); - it("pkg", function() { - parseName("pkg").should.deepEqual({ - name: "pkg", - version: undefined - }); - }); - it("pkg@file", function() { - parseName("pkg@file:../pkg").should.deepEqual({ - name: "pkg", - version: "file:../pkg" - }); - }); - it("pkg@http", function() { - parseName("pkg@https://github.com/owner/pkg").should.deepEqual({ - name: "pkg", - version: "https://github.com/owner/pkg" - }); - }); - it("pkg@git", function() { - parseName("pkg@git@github.com:owner/pkg.git").should.deepEqual({ - name: "pkg", - version: "git@github.com:owner/pkg.git" - }); - }); - }); - describe("parseEnv", function() { let stdoutInspect = null; let stderrInspect = null; diff --git a/test/test-pkg-name.js b/test/test-pkg-name.js new file mode 100644 index 00000000..6904d9f5 --- /dev/null +++ b/test/test-pkg-name.js @@ -0,0 +1,48 @@ +/* eslint-disable no-unused-vars */ +/* eslint-disable no-undef */ +const assert = require("assert"); +const fs = require("fs"); +const nock = require("nock"); +const path = require("path"); +const should = require("should"); +const { splitPkgName } = require("../build/lib/utils/pkg-name"); +describe("pkg-name.ts", function () { + describe("splitPkgName", function () { + it("pkg@version", function () { + splitPkgName("pkg@1.0.0").should.deepEqual({ + name: "pkg", + version: "1.0.0", + }); + }); + it("pkg@latest", function () { + splitPkgName("pkg@latest").should.deepEqual({ + name: "pkg", + version: "latest", + }); + }); + it("pkg", function () { + splitPkgName("pkg").should.deepEqual({ + name: "pkg", + version: undefined, + }); + }); + it("pkg@file", function () { + splitPkgName("pkg@file:../pkg").should.deepEqual({ + name: "pkg", + version: "file:../pkg", + }); + }); + it("pkg@http", function () { + splitPkgName("pkg@https://github.com/owner/pkg").should.deepEqual({ + name: "pkg", + version: "https://github.com/owner/pkg", + }); + }); + it("pkg@git", function () { + splitPkgName("pkg@git@github.com:owner/pkg.git").should.deepEqual({ + name: "pkg", + version: "git@github.com:owner/pkg.git", + }); + }); + }); +}); From 5f44032beb4ccf56f88e83cd12fd510dee95886a Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 11:30:05 +0200 Subject: [PATCH 080/201] misc: convert tests to typescript Whole bunch of TS errors still, but the tests all pass --- package-lock.json | 305 ++++++++++++++++++ package.json | 7 +- test/{test-cmd-add.js => test-cmd-add.ts} | 21 +- test/{test-cmd-deps.js => test-cmd-deps.ts} | 21 +- test/{test-cmd-login.js => test-cmd-login.ts} | 50 ++- ...{test-cmd-remove.js => test-cmd-remove.ts} | 15 +- ...{test-cmd-search.js => test-cmd-search.ts} | 18 +- test/{test-cmd-view.js => test-cmd-view.ts} | 22 +- test/{test-core.js => test-core.ts} | 177 +++++----- test/{test-pkg-name.js => test-pkg-name.ts} | 13 +- test/{utils.js => utils.ts} | 38 +-- 11 files changed, 495 insertions(+), 192 deletions(-) rename test/{test-cmd-add.js => test-cmd-add.ts} (98%) rename test/{test-cmd-deps.js => test-cmd-deps.ts} (94%) rename test/{test-cmd-login.js => test-cmd-login.ts} (64%) rename test/{test-cmd-remove.js => test-cmd-remove.ts} (94%) rename test/{test-cmd-search.js => test-cmd-search.ts} (96%) rename test/{test-cmd-view.js => test-cmd-view.ts} (96%) rename test/{test-core.js => test-core.ts} (77%) rename test/{test-pkg-name.js => test-pkg-name.ts} (84%) rename test/{utils.js => utils.ts} (65%) diff --git a/package-lock.json b/package-lock.json index 96637dcc..74f87b58 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,13 +37,17 @@ "@semantic-release/changelog": "^6.0.1", "@semantic-release/git": "^10.0.1", "@types/cli-table": "^0.3.2", + "@types/fs-extra": "^11.0.3", "@types/libnpmsearch": "^2.0.4", "@types/lodash": "^4.14.199", + "@types/mocha": "^10.0.3", "@types/node": "^14.18.63", "@types/npmlog": "^4.1.4", "@types/pkginfo": "^0.4.1", "@types/promptly": "^3.0.3", "@types/request": "^2.48.11", + "@types/should": "^13.0.0", + "@types/test-console": "^2.0.1", "@types/update-notifier": "^6.0.5", "@typescript-eslint/eslint-plugin": "^6.8.0", "@typescript-eslint/parser": "^6.8.0", @@ -58,6 +62,7 @@ "semantic-release": "^19.0.3", "should": "^13.2.3", "test-console": "^2.0.0", + "ts-mocha": "^10.0.0", "typescript": "^5.2.2" }, "engines": { @@ -1133,12 +1138,38 @@ "integrity": "sha512-GUvNiia85zTDDIx0iPrtF3pI8dwrQkfuokEqxqPDE55qxH0U5SZz4awVZjiJLWN2ZZRkXCUqgsMUbygXY+kytA==", "dev": true }, + "node_modules/@types/fs-extra": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.3.tgz", + "integrity": "sha512-sF59BlXtUdzEAL1u0MSvuzWd7PdZvZEtnaVkzX5mjpdWTJ8brG0jUqve3jPCzSzvAKKMHTG8F8o/WMQLtleZdQ==", + "dev": true, + "dependencies": { + "@types/jsonfile": "*", + "@types/node": "*" + } + }, "node_modules/@types/json-schema": { "version": "7.0.14", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", "dev": true }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "optional": true + }, + "node_modules/@types/jsonfile": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.3.tgz", + "integrity": "sha512-/yqTk2SZ1wIezK0hiRZD7RuSf4B3whFxFamB1kGStv+8zlWScTMcHanzfc0XKWs5vA1TkHeckBlOyM8jxU8nHA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/libnpmsearch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/libnpmsearch/-/libnpmsearch-2.0.4.tgz", @@ -1161,6 +1192,12 @@ "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, + "node_modules/@types/mocha": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.3.tgz", + "integrity": "sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ==", + "dev": true + }, "node_modules/@types/node": { "version": "14.18.63", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", @@ -1284,6 +1321,16 @@ "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", "dev": true }, + "node_modules/@types/should": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@types/should/-/should-13.0.0.tgz", + "integrity": "sha512-Mi6YZ2ABnnGGFMuiBDP0a8s1ZDCDNHqP97UH8TyDmCWuGGavpsFMfJnAMYaaqmDlSCOCNbVLHBrSDEOpx/oLhw==", + "deprecated": "This is a stub types definition for should.js (https://github.com/shouldjs/should.js). should.js provides its own type definitions, so you don't need @types/should installed!", + "dev": true, + "dependencies": { + "should": "*" + } + }, "node_modules/@types/ssri": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/@types/ssri/-/ssri-7.1.2.tgz", @@ -1293,6 +1340,12 @@ "@types/node": "*" } }, + "node_modules/@types/test-console": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/test-console/-/test-console-2.0.1.tgz", + "integrity": "sha512-oHttegDDXlGWAiVT3812HLnY6fcwXkbbgFy+5O6/LnqI6qXiUjCxQj7Yvdr8aiuW1iem1SFDM3kJniwkeoLN3w==", + "dev": true + }, "node_modules/@types/tough-cookie": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.4.tgz", @@ -4953,6 +5006,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "node_modules/make-fetch-happen": { "version": "10.1.6", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.6.tgz", @@ -9523,6 +9582,16 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/spawn-error-forwarder": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", @@ -9942,6 +10011,96 @@ "typescript": ">=4.2.0" } }, + "node_modules/ts-mocha": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.0.0.tgz", + "integrity": "sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==", + "dev": true, + "dependencies": { + "ts-node": "7.0.1" + }, + "bin": { + "ts-mocha": "bin/ts-mocha" + }, + "engines": { + "node": ">= 6.X.X" + }, + "optionalDependencies": { + "tsconfig-paths": "^3.5.0" + }, + "peerDependencies": { + "mocha": "^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X" + } + }, + "node_modules/ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "dependencies": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + }, + "bin": { + "ts-node": "dist/bin.js" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ts-node/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, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/ts-node/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "optional": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "optional": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -10478,6 +10637,15 @@ "node": ">=8" } }, + "node_modules/yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -11322,12 +11490,38 @@ "integrity": "sha512-GUvNiia85zTDDIx0iPrtF3pI8dwrQkfuokEqxqPDE55qxH0U5SZz4awVZjiJLWN2ZZRkXCUqgsMUbygXY+kytA==", "dev": true }, + "@types/fs-extra": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.3.tgz", + "integrity": "sha512-sF59BlXtUdzEAL1u0MSvuzWd7PdZvZEtnaVkzX5mjpdWTJ8brG0jUqve3jPCzSzvAKKMHTG8F8o/WMQLtleZdQ==", + "dev": true, + "requires": { + "@types/jsonfile": "*", + "@types/node": "*" + } + }, "@types/json-schema": { "version": "7.0.14", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", "dev": true }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "optional": true + }, + "@types/jsonfile": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.3.tgz", + "integrity": "sha512-/yqTk2SZ1wIezK0hiRZD7RuSf4B3whFxFamB1kGStv+8zlWScTMcHanzfc0XKWs5vA1TkHeckBlOyM8jxU8nHA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/libnpmsearch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/libnpmsearch/-/libnpmsearch-2.0.4.tgz", @@ -11350,6 +11544,12 @@ "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, + "@types/mocha": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.3.tgz", + "integrity": "sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ==", + "dev": true + }, "@types/node": { "version": "14.18.63", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", @@ -11471,6 +11671,15 @@ "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", "dev": true }, + "@types/should": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@types/should/-/should-13.0.0.tgz", + "integrity": "sha512-Mi6YZ2ABnnGGFMuiBDP0a8s1ZDCDNHqP97UH8TyDmCWuGGavpsFMfJnAMYaaqmDlSCOCNbVLHBrSDEOpx/oLhw==", + "dev": true, + "requires": { + "should": "*" + } + }, "@types/ssri": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/@types/ssri/-/ssri-7.1.2.tgz", @@ -11480,6 +11689,12 @@ "@types/node": "*" } }, + "@types/test-console": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/test-console/-/test-console-2.0.1.tgz", + "integrity": "sha512-oHttegDDXlGWAiVT3812HLnY6fcwXkbbgFy+5O6/LnqI6qXiUjCxQj7Yvdr8aiuW1iem1SFDM3kJniwkeoLN3w==", + "dev": true + }, "@types/tough-cookie": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.4.tgz", @@ -14158,6 +14373,12 @@ "semver": "^6.0.0" } }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "make-fetch-happen": { "version": "10.1.6", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.6.tgz", @@ -17438,6 +17659,16 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "spawn-error-forwarder": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", @@ -17767,6 +17998,74 @@ "dev": true, "requires": {} }, + "ts-mocha": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.0.0.tgz", + "integrity": "sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==", + "dev": true, + "requires": { + "ts-node": "7.0.1", + "tsconfig-paths": "^3.5.0" + } + }, + "ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + }, + "dependencies": { + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + } + } + }, + "tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "optional": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "optional": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -18177,6 +18476,12 @@ } } }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", + "dev": true + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index a68ae0a4..465ddef5 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "main": "index.js", "scripts": { "build": "tsc", - "test": "tsc && cross-env NODE_ENV=test mocha", + "test": "tsc && cross-env NODE_ENV=test ts-mocha test/**/*.ts", "semantic-release": "semantic-release" }, "bin": { @@ -37,13 +37,17 @@ "@semantic-release/changelog": "^6.0.1", "@semantic-release/git": "^10.0.1", "@types/cli-table": "^0.3.2", + "@types/fs-extra": "^11.0.3", "@types/libnpmsearch": "^2.0.4", "@types/lodash": "^4.14.199", + "@types/mocha": "^10.0.3", "@types/node": "^14.18.63", "@types/npmlog": "^4.1.4", "@types/pkginfo": "^0.4.1", "@types/promptly": "^3.0.3", "@types/request": "^2.48.11", + "@types/should": "^13.0.0", + "@types/test-console": "^2.0.1", "@types/update-notifier": "^6.0.5", "@typescript-eslint/eslint-plugin": "^6.8.0", "@typescript-eslint/parser": "^6.8.0", @@ -58,6 +62,7 @@ "semantic-release": "^19.0.3", "should": "^13.2.3", "test-console": "^2.0.0", + "ts-mocha": "^10.0.0", "typescript": "^5.2.2" }, "dependencies": { diff --git a/test/test-cmd-add.js b/test/test-cmd-add.ts similarity index 98% rename from test/test-cmd-add.js rename to test/test-cmd-add.ts index 1f2e0267..2bc0e01d 100644 --- a/test/test-cmd-add.js +++ b/test/test-cmd-add.ts @@ -1,20 +1,21 @@ /* eslint-disable no-unused-vars */ /* eslint-disable no-undef */ -const assert = require("assert"); -const nock = require("nock"); -const should = require("should"); +import assert from "assert"; +import nock from "nock"; +import should from "should"; +import { loadManifest, parseEnv } from "../lib/core"; -const { parseEnv, loadManifest } = require("../build/lib/core"); -const { add } = require("../build/lib/cmd-add"); -const { - getWorkDir, +import { add } from "../lib/cmd-add"; + +import { createWorkDir, - removeWorkDir, getInspects, getOutputs, - nockUp, + getWorkDir, nockDown, -} = require("./utils"); + nockUp, + removeWorkDir, +} from "./utils"; describe("cmd-add.ts", function () { const options = { diff --git a/test/test-cmd-deps.js b/test/test-cmd-deps.ts similarity index 94% rename from test/test-cmd-deps.js rename to test/test-cmd-deps.ts index 68d1cd0f..62333e14 100644 --- a/test/test-cmd-deps.js +++ b/test/test-cmd-deps.ts @@ -1,20 +1,21 @@ /* eslint-disable no-unused-vars */ /* eslint-disable no-undef */ -const assert = require("assert"); -const nock = require("nock"); -const should = require("should"); +import assert from "assert"; +import nock from "nock"; +import should from "should"; +import { loadManifest, parseEnv } from "../lib/core"; -const { parseEnv, loadManifest } = require("../build/lib/core"); -const { deps } = require("../build/lib/cmd-deps"); -const { - getWorkDir, +import { deps } from "../lib/cmd-deps"; + +import { createWorkDir, - removeWorkDir, getInspects, getOutputs, - nockUp, + getWorkDir, nockDown, -} = require("./utils"); + nockUp, + removeWorkDir, +} from "./utils"; describe("cmd-deps.ts", function () { const options = { diff --git a/test/test-cmd-login.js b/test/test-cmd-login.ts similarity index 64% rename from test/test-cmd-login.js rename to test/test-cmd-login.ts index bf0d55ac..94a52374 100644 --- a/test/test-cmd-login.js +++ b/test/test-cmd-login.ts @@ -1,48 +1,48 @@ /* eslint-disable no-unused-vars */ /* eslint-disable no-undef */ -const assert = require("assert"); -const nock = require("nock"); -const should = require("should"); -const { - validateRegistry, +import assert from "assert"; +import nock from "nock"; +import should from "should"; +import { generateNpmrcLines, - getNpmrcPath -} = require("../build/lib/cmd-login"); + getNpmrcPath, + validateRegistry, +} from "../lib/cmd-login"; -describe("cmd-login.ts", function() { - describe("validateRegistry", function() { - it("should validate http", async function() { +describe("cmd-login.ts", function () { + describe("validateRegistry", function () { + it("should validate http", async function () { validateRegistry("http://registry.npmjs.org/").should.be.ok(); }); - it("should validate https", async function() { + it("should validate https", async function () { validateRegistry("https://registry.npmjs.org/").should.be.ok(); }); - it("should reject without http protocal", async function() { - should(function() { + it("should reject without http protocal", async function () { + should(function () { validateRegistry("registry.npmjs.org/"); }).throw("The registry address should starts with http(s)://"); }); }); - describe("generateNpmrcLines", function() { - it("should append token to empty content", async function() { + describe("generateNpmrcLines", function () { + it("should append token to empty content", async function () { generateNpmrcLines( "", "http://registry.npmjs.org/", "123-456-789" ).should.deepEqual(["//registry.npmjs.org/:_authToken=123-456-789"]); }); - it("should append token to exist contents", async function() { + it("should append token to exist contents", async function () { generateNpmrcLines( "registry=https://registry.npmjs.org/", "http://registry.npmjs.org/", "123-456-789" ).should.deepEqual([ "registry=https://registry.npmjs.org/", - "//registry.npmjs.org/:_authToken=123-456-789" + "//registry.npmjs.org/:_authToken=123-456-789", ]); }); - it("should replace token to exist contents", async function() { + it("should replace token to exist contents", async function () { generateNpmrcLines( "registry=https://registry.npmjs.org/\n//127.0.0.1:4873/:_authToken=blar-blar-blar\n//registry.npmjs.org/:_authToken=blar-blar-blar", "http://registry.npmjs.org/", @@ -50,17 +50,17 @@ describe("cmd-login.ts", function() { ).should.deepEqual([ "registry=https://registry.npmjs.org/", "//127.0.0.1:4873/:_authToken=blar-blar-blar", - "//registry.npmjs.org/:_authToken=123-456-789" + "//registry.npmjs.org/:_authToken=123-456-789", ]); }); - it("should handle registry without trailing slash", async function() { + it("should handle registry without trailing slash", async function () { generateNpmrcLines( "", "http://registry.npmjs.org", "123-456-789" ).should.deepEqual(["//registry.npmjs.org/:_authToken=123-456-789"]); }); - it("should quote token if necessary", async function() { + it("should quote token if necessary", async function () { generateNpmrcLines( "", "http://registry.npmjs.org/", @@ -74,11 +74,9 @@ describe("cmd-login.ts", function() { }); }); - describe("getNpmrcPath", function() { - it("should includes .npmrc", async function() { - getNpmrcPath() - .includes(".npmrc") - .should.be.ok(); + describe("getNpmrcPath", function () { + it("should includes .npmrc", async function () { + getNpmrcPath().includes(".npmrc").should.be.ok(); }); }); }); diff --git a/test/test-cmd-remove.js b/test/test-cmd-remove.ts similarity index 94% rename from test/test-cmd-remove.js rename to test/test-cmd-remove.ts index 9f66e7d6..32f109f9 100644 --- a/test/test-cmd-remove.js +++ b/test/test-cmd-remove.ts @@ -1,17 +1,18 @@ /* eslint-disable no-unused-vars */ /* eslint-disable no-undef */ -const assert = require("assert"); -const should = require("should"); +import assert from "assert"; +import should from "should"; +import { loadManifest, parseEnv } from "../lib/core"; -const { parseEnv, loadManifest } = require("../build/lib/core"); -const { remove } = require("../build/lib/cmd-remove"); -const { +import { remove } from "../lib/cmd-remove"; + +import { + createWorkDir, getInspects, getOutputs, getWorkDir, - createWorkDir, removeWorkDir, -} = require("./utils"); +} from "./utils"; describe("cmd-remove.ts", function () { describe("remove", function () { diff --git a/test/test-cmd-search.js b/test/test-cmd-search.ts similarity index 96% rename from test/test-cmd-search.js rename to test/test-cmd-search.ts index d9060ded..c3f512de 100644 --- a/test/test-cmd-search.js +++ b/test/test-cmd-search.ts @@ -1,19 +1,19 @@ /* eslint-disable no-unused-vars */ /* eslint-disable no-undef */ -const assert = require("assert"); -const nock = require("nock"); -const should = require("should"); +import assert from "assert"; +import nock from "nock"; +import should from "should"; +import { search } from "../lib/cmd-search"; -const { search } = require("../build/lib/cmd-search"); -const { - getWorkDir, +import { createWorkDir, - removeWorkDir, getInspects, getOutputs, - nockUp, + getWorkDir, nockDown, -} = require("./utils"); + nockUp, + removeWorkDir, +} from "./utils"; describe("cmd-search.ts", function () { let stdoutInspect = null; diff --git a/test/test-cmd-view.js b/test/test-cmd-view.ts similarity index 96% rename from test/test-cmd-view.js rename to test/test-cmd-view.ts index c2bda8e3..47913a8a 100644 --- a/test/test-cmd-view.js +++ b/test/test-cmd-view.ts @@ -1,19 +1,21 @@ /* eslint-disable no-unused-vars */ /* eslint-disable no-undef */ -const assert = require("assert"); -const nock = require("nock"); -const should = require("should"); -const { parseEnv, loadManifest } = require("../build/lib/core"); -const { view } = require("../build/lib/cmd-view"); -const { - getWorkDir, +import assert from "assert"; +import nock from "nock"; +import should from "should"; +import { loadManifest, parseEnv } from "../lib/core"; + +import { view } from "../lib/cmd-view"; + +import { createWorkDir, - removeWorkDir, getInspects, getOutputs, - nockUp, + getWorkDir, nockDown, -} = require("./utils"); + nockUp, + removeWorkDir, +} from "./utils"; describe("cmd-view.ts", function () { const options = { diff --git a/test/test-core.js b/test/test-core.ts similarity index 77% rename from test/test-core.js rename to test/test-core.ts index 72e93b0a..0a746c3b 100644 --- a/test/test-core.js +++ b/test/test-core.ts @@ -1,59 +1,60 @@ /* eslint-disable no-unused-vars */ /* eslint-disable no-undef */ -const assert = require("assert"); -const fs = require("fs"); -const nock = require("nock"); -const path = require("path"); -const should = require("should"); -const { +import assert from "assert"; +import fs from "fs"; +import nock from "nock"; +import path from "path"; +import should from "should"; +import { compareEditorVersion, env, fetchPackageInfo, getLatestVersion, + isInternalPackage, loadManifest, parseEditorVersion, parseEnv, saveManifest, - isInternalPackage -} = require("../build/lib/core"); -const { - getWorkDir, +} from "../lib/core"; + +import { createWorkDir, - removeWorkDir, getInspects, getOutputs, + getWorkDir, + nockDown, nockUp, - nockDown -} = require("./utils"); + removeWorkDir, +} from "./utils"; -describe("cmd-core.ts", function() { - describe("parseEnv", function() { +describe("cmd-core.ts", function () { + describe("parseEnv", function () { let stdoutInspect = null; let stderrInspect = null; - before(function() { + before(function () { removeWorkDir("test-openupm-cli"); removeWorkDir("test-openupm-cli-no-manifest"); createWorkDir("test-openupm-cli", { manifest: true, - editorVersion: " 2019.2.13f1" + editorVersion: " 2019.2.13f1", }); createWorkDir("test-openupm-cli-no-manifest", { manifest: false, - editorVersion: " 2019.2.13f1" + editorVersion: " 2019.2.13f1", }); }); - after(function() { + after(function () { removeWorkDir("test-openupm-cli"); removeWorkDir("test-openupm-cli-no-manifest"); }); - beforeEach(function() { + beforeEach(function () { [stdoutInspect, stderrInspect] = getInspects(); }); - afterEach(function() { + afterEach(function () { stdoutInspect.restore(); stderrInspect.restore(); }); - it("defaults", async function() { + it("defaults", async function () { (await parseEnv({ _global: {} }, { checkPath: false })).should.be.ok(); env.registry.should.equal("https://package.openupm.com"); env.upstream.should.be.ok(); @@ -64,7 +65,7 @@ describe("cmd-core.ts", function() { (env.editorVersion === null).should.be.ok(); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("check path", async function() { + it("check path", async function () { ( await parseEnv( { _global: { chdir: getWorkDir("test-openupm-cli") } }, @@ -77,7 +78,7 @@ describe("cmd-core.ts", function() { ); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("can not resolve path", async function() { + it("can not resolve path", async function () { ( await parseEnv( { _global: { chdir: getWorkDir("path-not-exist") } }, @@ -87,7 +88,7 @@ describe("cmd-core.ts", function() { const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("can not resolve path").should.be.ok(); }); - it("can not locate manifest.json", async function() { + it("can not locate manifest.json", async function () { ( await parseEnv( { _global: { chdir: getWorkDir("test-openupm-cli-no-manifest") } }, @@ -97,7 +98,7 @@ describe("cmd-core.ts", function() { const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("can not locate manifest.json").should.be.ok(); }); - it("custom registry", async function() { + it("custom registry", async function () { ( await parseEnv( { _global: { registry: "https://registry.npmjs.org" } }, @@ -108,7 +109,7 @@ describe("cmd-core.ts", function() { env.namespace.should.be.equal("org.npmjs"); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("custom registry with splash", async function() { + it("custom registry with splash", async function () { ( await parseEnv( { _global: { registry: "https://registry.npmjs.org/" } }, @@ -119,7 +120,7 @@ describe("cmd-core.ts", function() { env.namespace.should.be.equal("org.npmjs"); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("custom registry with extra path", async function() { + it("custom registry with extra path", async function () { ( await parseEnv( { _global: { registry: "https://registry.npmjs.org/some" } }, @@ -130,7 +131,7 @@ describe("cmd-core.ts", function() { env.namespace.should.be.equal("org.npmjs"); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("custom registry with extra path and splash", async function() { + it("custom registry with extra path and splash", async function () { ( await parseEnv( { _global: { registry: "https://registry.npmjs.org/some/" } }, @@ -141,7 +142,7 @@ describe("cmd-core.ts", function() { env.namespace.should.be.equal("org.npmjs"); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("custom registry without http", async function() { + it("custom registry without http", async function () { ( await parseEnv( { _global: { registry: "registry.npmjs.org" } }, @@ -152,7 +153,7 @@ describe("cmd-core.ts", function() { env.namespace.should.be.equal("org.npmjs"); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("custom registry with ipv4+port", async function() { + it("custom registry with ipv4+port", async function () { ( await parseEnv( { _global: { registry: "http://127.0.0.1:4873" } }, @@ -163,7 +164,7 @@ describe("cmd-core.ts", function() { env.namespace.should.be.equal("127.0.0.1"); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("custom registry with ipv6+port", async function() { + it("custom registry with ipv6+port", async function () { ( await parseEnv( { _global: { registry: "http://[1:2:3:4:5:6:7:8]:4873" } }, @@ -174,14 +175,14 @@ describe("cmd-core.ts", function() { env.namespace.should.be.equal("1:2:3:4:5:6:7:8"); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("upstream", async function() { + it("upstream", async function () { ( await parseEnv({ _global: { upstream: false } }, { checkPath: false }) ).should.be.ok(); env.upstream.should.not.be.ok(); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("editorVersion", async function() { + it("editorVersion", async function () { ( await parseEnv( { _global: { chdir: getWorkDir("test-openupm-cli") } }, @@ -191,7 +192,7 @@ describe("cmd-core.ts", function() { env.editorVersion.should.be.equal("2019.2.13f1"); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("region cn", async function() { + it("region cn", async function () { ( await parseEnv({ _global: { cn: true } }, { checkPath: false }) ).should.be.ok(); @@ -200,7 +201,7 @@ describe("cmd-core.ts", function() { env.region.should.be.equal("cn"); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("region cn with a custom registry", async function() { + it("region cn with a custom registry", async function () { ( await parseEnv( { _global: { cn: true, registry: "https://reg.custom-package.com" } }, @@ -214,14 +215,14 @@ describe("cmd-core.ts", function() { }); }); - describe("loadManifest/SaveManifest", function() { + describe("loadManifest/SaveManifest", function () { let stdoutInspect = null; let stderrInspect = null; - beforeEach(function() { + beforeEach(function () { removeWorkDir("test-openupm-cli"); createWorkDir("test-openupm-cli", { manifest: true }); createWorkDir("test-openupm-cli-wrong-json", { - manifest: true + manifest: true, }); fs.writeFileSync( path.join( @@ -232,13 +233,13 @@ describe("cmd-core.ts", function() { ); [stdoutInspect, stderrInspect] = getInspects(); }); - afterEach(function() { + afterEach(function () { removeWorkDir("test-openupm-cli"); removeWorkDir("test-openupm-cli-wrong-json"); stdoutInspect.restore(); stderrInspect.restore(); }); - it("loadManifest", async function() { + it("loadManifest", async function () { ( await parseEnv( { _global: { chdir: getWorkDir("test-openupm-cli") } }, @@ -249,7 +250,7 @@ describe("cmd-core.ts", function() { manifest.should.be.deepEqual({ dependencies: {} }); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("no manifest file", async function() { + it("no manifest file", async function () { ( await parseEnv( { _global: { chdir: getWorkDir("path-not-exist") } }, @@ -261,7 +262,7 @@ describe("cmd-core.ts", function() { const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("does not exist").should.be.ok(); }); - it("wrong json content", async function() { + it("wrong json content", async function () { ( await parseEnv( { _global: { chdir: getWorkDir("test-openupm-cli-wrong-json") } }, @@ -273,7 +274,7 @@ describe("cmd-core.ts", function() { const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("failed to parse").should.be.ok(); }); - it("saveManifest", async function() { + it("saveManifest", async function () { ( await parseEnv( { _global: { chdir: getWorkDir("test-openupm-cli") } }, @@ -290,101 +291,99 @@ describe("cmd-core.ts", function() { }); }); - describe("fetchPackageInfo", function() { - beforeEach(function() { + describe("fetchPackageInfo", function () { + beforeEach(function () { nockUp(); }); - afterEach(function() { + afterEach(function () { nockDown(); }); - it("simple", async function() { + it("simple", async function () { ( await parseEnv( { _global: { registry: "http://example.com" } }, { checkPath: false } ) ).should.be.ok(); - let pkgInfoRemote = { name: "com.littlebigfun.addressable-importer" }; + const pkgInfoRemote = { name: "com.littlebigfun.addressable-importer" }; nock("http://example.com") .get("/package-a") .reply(200, pkgInfoRemote, { "Content-Type": "application/json" }); const info = await fetchPackageInfo("package-a"); info.should.deepEqual(pkgInfoRemote); }); - it("404", async function() { + it("404", async function () { ( await parseEnv( { _global: { registry: "http://example.com" } }, { checkPath: false } ) ).should.be.ok(); - let pkgInfoRemote = { name: "com.littlebigfun.addressable-importer" }; - nock("http://example.com") - .get("/package-a") - .reply(404); + const pkgInfoRemote = { name: "com.littlebigfun.addressable-importer" }; + nock("http://example.com").get("/package-a").reply(404); const info = await fetchPackageInfo("package-a"); (info === undefined).should.be.ok(); }); }); - describe("getLatestVersion", function() { - it("from dist-tags", async function() { + describe("getLatestVersion", function () { + it("from dist-tags", async function () { getLatestVersion({ "dist-tags": { latest: "1.0.0" } }).should.equal( "1.0.0" ); }); - it("not found", async function() { + it("not found", async function () { ( getLatestVersion({ versions: { "1.0.0": "patch" } }) === undefined ).should.be.ok(); (getLatestVersion({}) === undefined).should.be.ok(); }); }); - describe("parseEditorVersion", function() { - it("test null", function() { + describe("parseEditorVersion", function () { + it("test null", function () { (parseEditorVersion(null) === null).should.be.ok(); }); - it("test x.y", function() { + it("test x.y", function () { parseEditorVersion("2019.2").should.deepEqual({ major: 2019, minor: 2 }); }); - it("test x.y.z", function() { + it("test x.y.z", function () { parseEditorVersion("2019.2.1").should.deepEqual({ major: 2019, minor: 2, - patch: 1 + patch: 1, }); }); - it("test x.y.zan", function() { + it("test x.y.zan", function () { parseEditorVersion("2019.2.1a5").should.deepEqual({ major: 2019, minor: 2, patch: 1, flag: "a", flagValue: 0, - build: 5 + build: 5, }); }); - it("test x.y.zbn", function() { + it("test x.y.zbn", function () { parseEditorVersion("2019.2.1b5").should.deepEqual({ major: 2019, minor: 2, patch: 1, flag: "b", flagValue: 1, - build: 5 + build: 5, }); }); - it("test x.y.zfn", function() { + it("test x.y.zfn", function () { parseEditorVersion("2019.2.1f5").should.deepEqual({ major: 2019, minor: 2, patch: 1, flag: "f", flagValue: 2, - build: 5 + build: 5, }); }); - it("test x.y.zcn", function() { + it("test x.y.zcn", function () { parseEditorVersion("2019.2.1f1c5").should.deepEqual({ major: 2019, minor: 2, @@ -394,64 +393,64 @@ describe("cmd-core.ts", function() { build: 1, loc: "c", locValue: 1, - locBuild: 5 + locBuild: 5, }); }); - it("test invalid version", function() { + it("test invalid version", function () { (parseEditorVersion("2019") === null).should.be.ok(); }); }); - describe("compareEditorVersion", function() { - it("test 2019.1 == 2019.1", function() { + describe("compareEditorVersion", function () { + it("test 2019.1 == 2019.1", function () { compareEditorVersion("2019.1", "2019.1").should.equal(0); }); - it("test 2019.1.1 == 2019.1.1", function() { + it("test 2019.1.1 == 2019.1.1", function () { compareEditorVersion("2019.1.1", "2019.1.1").should.equal(0); }); - it("test 2019.1.1f1 == 2019.1.1f1", function() { + it("test 2019.1.1f1 == 2019.1.1f1", function () { compareEditorVersion("2019.1.1f1", "2019.1.1f1").should.equal(0); }); - it("test 2019.1.1f1c1 == 2019.1.1f1c1", function() { + it("test 2019.1.1f1c1 == 2019.1.1f1c1", function () { compareEditorVersion("2019.1.1f1c1", "2019.1.1f1c1").should.equal(0); }); - it("test 2019.2 > 2019.1", function() { + it("test 2019.2 > 2019.1", function () { compareEditorVersion("2019.2", "2019.1").should.equal(1); }); - it("test 2020.2 > 2019.1", function() { + it("test 2020.2 > 2019.1", function () { compareEditorVersion("2020.1", "2019.1").should.equal(1); }); - it("test 2019.1 < 2019.2", function() { + it("test 2019.1 < 2019.2", function () { compareEditorVersion("2019.1", "2019.2").should.equal(-1); }); - it("test 2019.1 < 2020.1", function() { + it("test 2019.1 < 2020.1", function () { compareEditorVersion("2019.1", "2020.1").should.equal(-1); }); - it("test 2019.1 < 2019.1.1", function() { + it("test 2019.1 < 2019.1.1", function () { compareEditorVersion("2019.1", "2019.1.1").should.equal(-1); }); - it("test 2019.1.1 < 2019.1.1f1", function() { + it("test 2019.1.1 < 2019.1.1f1", function () { compareEditorVersion("2019.1.1", "2019.1.1f1").should.equal(-1); }); - it("test 2019.1.1a1 < 2020.1.1b1", function() { + it("test 2019.1.1a1 < 2020.1.1b1", function () { compareEditorVersion("2019.1.1a1", "2020.1.1b1").should.equal(-1); }); - it("test 2019.1.1b1 < 2020.1.1f1", function() { + it("test 2019.1.1b1 < 2020.1.1f1", function () { compareEditorVersion("2019.1.1b1", "2020.1.1f1").should.equal(-1); }); - it("test 2019.1.1f1 < 2020.1.1f1c1", function() { + it("test 2019.1.1f1 < 2020.1.1f1c1", function () { compareEditorVersion("2019.1.1f1", "2020.1.1f1c1").should.equal(-1); }); }); - describe("isInternalPackage", function() { - it("test com.otherorg.software", function() { + describe("isInternalPackage", function () { + it("test com.otherorg.software", function () { isInternalPackage("com.otherorg.software").should.not.be.ok(); }); - it("test com.unity.ugui", function() { + it("test com.unity.ugui", function () { isInternalPackage("com.unity.ugui").should.be.ok(); }); - it("test com.unity.modules.tilemap", function() { + it("test com.unity.modules.tilemap", function () { isInternalPackage("com.unity.modules.tilemap").should.be.ok(); }); }); diff --git a/test/test-pkg-name.js b/test/test-pkg-name.ts similarity index 84% rename from test/test-pkg-name.js rename to test/test-pkg-name.ts index 6904d9f5..c7b08b47 100644 --- a/test/test-pkg-name.js +++ b/test/test-pkg-name.ts @@ -1,11 +1,12 @@ /* eslint-disable no-unused-vars */ /* eslint-disable no-undef */ -const assert = require("assert"); -const fs = require("fs"); -const nock = require("nock"); -const path = require("path"); -const should = require("should"); -const { splitPkgName } = require("../build/lib/utils/pkg-name"); +import assert from "assert"; +import fs from "fs"; +import nock from "nock"; +import path from "path"; +import should from "should"; +import { splitPkgName } from "../lib/utils/pkg-name"; + describe("pkg-name.ts", function () { describe("splitPkgName", function () { it("pkg@version", function () { diff --git a/test/utils.js b/test/utils.ts similarity index 65% rename from test/utils.js rename to test/utils.ts index 9950f707..0a8f854b 100644 --- a/test/utils.js +++ b/test/utils.ts @@ -1,15 +1,15 @@ -const _ = require("lodash"); -const fse = require("fs-extra"); -const nock = require("nock"); -const path = require("path"); -const os = require("os"); -const testConsole = require("test-console"); - -const getWorkDir = function(pathToTmp) { +import _ from "lodash"; +import fse from "fs-extra"; +import nock from "nock"; +import path from "path"; +import os from "os"; +import testConsole from "test-console"; + +export const getWorkDir = function (pathToTmp) { return path.join(os.tmpdir(), pathToTmp); }; -const createWorkDir = function(pathToTmp, { manifest, editorVersion }) { +export const createWorkDir = function (pathToTmp, { manifest, editorVersion }) { const workDir = getWorkDir(pathToTmp); fse.mkdirpSync(workDir); if (manifest) { @@ -30,39 +30,29 @@ const createWorkDir = function(pathToTmp, { manifest, editorVersion }) { } }; -const removeWorkDir = function(pathToTmp) { +export const removeWorkDir = function (pathToTmp) { const cwd = getWorkDir(pathToTmp); fse.removeSync(cwd); }; -const nockUp = function() { +export const nockUp = function () { if (!nock.isActive()) nock.activate(); }; -const nockDown = function() { +export const nockDown = function () { nock.restore(); nock.cleanAll(); }; -const getOutputs = function(stdouInspect, stderrInsepct) { +export const getOutputs = function (stdouInspect, stderrInsepct) { const results = [stdouInspect.output.join(""), stderrInsepct.output.join("")]; stdouInspect.restore(); stderrInsepct.restore(); return results; }; -const getInspects = function() { +export const getInspects = function () { const stdoutInspect = testConsole.stdout.inspect(); const stderrInspect = testConsole.stderr.inspect(); return [stdoutInspect, stderrInspect]; }; - -module.exports = { - getWorkDir, - createWorkDir, - removeWorkDir, - nockUp, - nockDown, - getInspects, - getOutputs -}; From 22464a0e0fea714a34164f9976e4b3d0902e7908 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 11:35:10 +0200 Subject: [PATCH 081/201] refactor: optimize test imports --- test/test-cmd-add.ts | 8 +++----- test/test-cmd-deps.ts | 7 ++----- test/test-cmd-login.ts | 6 ++---- test/test-cmd-remove.ts | 8 +++----- test/test-cmd-search.ts | 6 ++---- test/test-cmd-view.ts | 7 ++----- test/test-core.ts | 6 ++---- test/test-pkg-name.ts | 9 ++------- 8 files changed, 18 insertions(+), 39 deletions(-) diff --git a/test/test-cmd-add.ts b/test/test-cmd-add.ts index 2bc0e01d..5a14cd58 100644 --- a/test/test-cmd-add.ts +++ b/test/test-cmd-add.ts @@ -1,9 +1,7 @@ -/* eslint-disable no-unused-vars */ -/* eslint-disable no-undef */ -import assert from "assert"; +import "assert"; import nock from "nock"; -import should from "should"; -import { loadManifest, parseEnv } from "../lib/core"; +import "should"; +import { loadManifest } from "../lib/core"; import { add } from "../lib/cmd-add"; diff --git a/test/test-cmd-deps.ts b/test/test-cmd-deps.ts index 62333e14..a535b674 100644 --- a/test/test-cmd-deps.ts +++ b/test/test-cmd-deps.ts @@ -1,9 +1,6 @@ -/* eslint-disable no-unused-vars */ -/* eslint-disable no-undef */ -import assert from "assert"; +import "assert"; import nock from "nock"; -import should from "should"; -import { loadManifest, parseEnv } from "../lib/core"; +import "should"; import { deps } from "../lib/cmd-deps"; diff --git a/test/test-cmd-login.ts b/test/test-cmd-login.ts index 94a52374..71cc89a7 100644 --- a/test/test-cmd-login.ts +++ b/test/test-cmd-login.ts @@ -1,7 +1,5 @@ -/* eslint-disable no-unused-vars */ -/* eslint-disable no-undef */ -import assert from "assert"; -import nock from "nock"; +import "assert"; +import "nock"; import should from "should"; import { generateNpmrcLines, diff --git a/test/test-cmd-remove.ts b/test/test-cmd-remove.ts index 32f109f9..c6ff1ed8 100644 --- a/test/test-cmd-remove.ts +++ b/test/test-cmd-remove.ts @@ -1,8 +1,6 @@ -/* eslint-disable no-unused-vars */ -/* eslint-disable no-undef */ -import assert from "assert"; -import should from "should"; -import { loadManifest, parseEnv } from "../lib/core"; +import "assert"; +import "should"; +import { loadManifest } from "../lib/core"; import { remove } from "../lib/cmd-remove"; diff --git a/test/test-cmd-search.ts b/test/test-cmd-search.ts index c3f512de..612184aa 100644 --- a/test/test-cmd-search.ts +++ b/test/test-cmd-search.ts @@ -1,8 +1,6 @@ -/* eslint-disable no-unused-vars */ -/* eslint-disable no-undef */ -import assert from "assert"; +import "assert"; import nock from "nock"; -import should from "should"; +import "should"; import { search } from "../lib/cmd-search"; import { diff --git a/test/test-cmd-view.ts b/test/test-cmd-view.ts index 47913a8a..3d0eb90a 100644 --- a/test/test-cmd-view.ts +++ b/test/test-cmd-view.ts @@ -1,9 +1,6 @@ -/* eslint-disable no-unused-vars */ -/* eslint-disable no-undef */ -import assert from "assert"; +import "assert"; import nock from "nock"; -import should from "should"; -import { loadManifest, parseEnv } from "../lib/core"; +import "should"; import { view } from "../lib/cmd-view"; diff --git a/test/test-core.ts b/test/test-core.ts index 0a746c3b..8a128679 100644 --- a/test/test-core.ts +++ b/test/test-core.ts @@ -1,10 +1,8 @@ -/* eslint-disable no-unused-vars */ -/* eslint-disable no-undef */ -import assert from "assert"; +import "assert"; import fs from "fs"; import nock from "nock"; import path from "path"; -import should from "should"; +import "should"; import { compareEditorVersion, env, diff --git a/test/test-pkg-name.ts b/test/test-pkg-name.ts index c7b08b47..77f9f233 100644 --- a/test/test-pkg-name.ts +++ b/test/test-pkg-name.ts @@ -1,10 +1,5 @@ -/* eslint-disable no-unused-vars */ -/* eslint-disable no-undef */ -import assert from "assert"; -import fs from "fs"; -import nock from "nock"; -import path from "path"; -import should from "should"; +import "assert"; +import "should"; import { splitPkgName } from "../lib/utils/pkg-name"; describe("pkg-name.ts", function () { From 2bedd374605d88763f2b9f6155136035fd7f571d Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 11:42:36 +0200 Subject: [PATCH 082/201] refactor: convert type declarations to exports Seems to cause less TS problems that way --- lib/client.ts | 1 + lib/cmd-add.ts | 1 + lib/cmd-deps.ts | 1 + lib/cmd-login.ts | 1 + lib/cmd-remove.ts | 1 + lib/cmd-search.ts | 7 +++ lib/cmd-view.ts | 1 + lib/core.ts | 13 +++++ lib/types/global.d.ts | 117 --------------------------------------- lib/types/global.ts | 115 ++++++++++++++++++++++++++++++++++++++ lib/utils/pkg-name.ts | 2 + lib/utils/pkg-version.ts | 2 + 12 files changed, 145 insertions(+), 117 deletions(-) delete mode 100644 lib/types/global.d.ts create mode 100644 lib/types/global.ts diff --git a/lib/client.ts b/lib/client.ts index 5d16f17f..a6a80784 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -8,6 +8,7 @@ import RegClient, { import log from "./logger"; import request from "request"; import { AssertionError } from "assert"; +import {PkgInfo} from "./types/global"; export type NpmClient = { rawClient: RegClient; diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index aa12b3bb..f48259ab 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -13,6 +13,7 @@ import { } from "./core"; import { isUrlVersion } from "./utils/pkg-version"; import { splitPkgName } from "./utils/pkg-name"; +import {GlobalOptions, PkgName, ScopedRegistry} from "./types/global"; export type AddOptions = { test: boolean; diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index 2cdaa758..a96d68e7 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -1,6 +1,7 @@ import log from "./logger"; import { fetchPackageDependencies, parseEnv } from "./core"; import { splitPkgName } from "./utils/pkg-name"; +import { GlobalOptions, PkgName, PkgVersion } from "./types/global"; export type DepsOptions = { deep: boolean; diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index 2a88f340..1c34304d 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -12,6 +12,7 @@ import { parseEnv, saveUpmConfig, } from "./core"; +import { GlobalOptions, Registry } from "./types/global"; export type LoginOptions = { username?: string; diff --git a/lib/cmd-remove.ts b/lib/cmd-remove.ts index 025ec8ea..32f7832a 100644 --- a/lib/cmd-remove.ts +++ b/lib/cmd-remove.ts @@ -1,6 +1,7 @@ import log from "./logger"; import { env, loadManifest, parseEnv, saveManifest } from "./core"; import { splitPkgName } from "./utils/pkg-name"; +import { GlobalOptions, PkgName, ScopedRegistry } from "./types/global"; export type RemoveOptions = { _global: GlobalOptions; diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index c0a4a757..01264e21 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -6,6 +6,13 @@ import { env, getLatestVersion, getNpmFetchOptions, parseEnv } from "./core"; import { is404Error, isHttpError } from "./utils/error-type-guards"; import * as os from "os"; import assert from "assert"; +import { + GlobalOptions, + PkgInfo, + PkgName, + PkgVersion, + Registry, +} from "./types/global"; type DateString = string; diff --git a/lib/cmd-view.ts b/lib/cmd-view.ts index 1a7fc537..0b760c39 100644 --- a/lib/cmd-view.ts +++ b/lib/cmd-view.ts @@ -3,6 +3,7 @@ import log from "./logger"; import { env, fetchPackageInfo, getLatestVersion, parseEnv } from "./core"; import assert from "assert"; import { splitPkgName } from "./utils/pkg-name"; +import { GlobalOptions, PkgInfo, PkgName } from "./types/global"; export type ViewOptions = { _global: GlobalOptions; diff --git a/lib/core.ts b/lib/core.ts index 6c28f0d5..cf7ac3d1 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -14,6 +14,19 @@ import log from "./logger"; import { assertIsError } from "./utils/error-type-guards"; import search from "libnpmsearch"; import assert from "assert"; +import { + Dependency, + Env, + GlobalOptions, + NameVersionPair, + PkgInfo, + PkgManifest, + PkgName, + PkgVersion, + Registry, + SemanticVersion, + UPMConfig, +} from "./types/global"; export const env: Env = { auth: {}, diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts deleted file mode 100644 index 65265d93..00000000 --- a/lib/types/global.d.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { NpmAuth } from "another-npm-registry-client"; - -declare global { - type PkgVersion = string; - - type ReverseDomainName = string; - - type PkgName = ReverseDomainName | `${ReverseDomainName}@${PkgVersion}`; - - type Region = "us" | "cn"; - - type Registry = string; - - type SemanticVersion = { - major: number; - minor: number; - patch?: number; - flag?: "a" | "b" | "f" | "c"; - flagValue?: 0 | 1 | 2; - build?: number; - loc?: string; - locValue?: number; - locBuild?: number; - }; - - type Env = { - cwd: string; - color: boolean; - systemUser: boolean; - wsl: boolean; - npmAuth?: Record; - auth: Record; - upstream: boolean; - upstreamRegistry: string; - registry: string; - namespace: string; - editorVersion: string | null; - region: Region; - manifestPath: string; - }; - - type Dist = { - tarball: string; - shasum: string; - integrity: string; - }; - - type PkgVersionInfo = { - unity?: string; - unityRelease: string; - dependencies: Record; - license?: string; - displayName: string; - description?: string; - keywords?: string[]; - homepage: string; - dist?: Dist; - }; - - type PkgInfo = { - name: PkgName; - versions: Record; - "dist-tags": { latest?: PkgVersion }; - version?: PkgVersion; - description?: string; - keywords?: string[]; - time: Record<"created" | "modified" | PkgVersion, string>; - date?: Date; - }; - - type NameVersionPair = { - name: PkgName; - version: PkgVersion | undefined; - }; - - type Dependency = { - name: PkgName; - version: PkgVersion | undefined; - upstream: boolean; - self: boolean; - internal: boolean; - reason: string | null; - resolved?: boolean; - }; - - type ScopedRegistry = { - name: string; - url: string; - scopes: PkgName[]; - }; - - type PkgManifest = { - dependencies: Record; - scopedRegistries: ScopedRegistry[]; - testables: string[]; - }; - - type GlobalOptions = { - registry?: Registry; - verbose: boolean; - color?: boolean; - upstream?: boolean; - cn?: boolean; - systemUser: boolean; - wsl: boolean; - chdir: string; - }; - - type UpmAuth = { - email: string; - alwaysAuth: boolean; - } & ({ token: string } | { _auth: string }); - - type UPMConfig = { - npmAuth?: Record; - }; -} diff --git a/lib/types/global.ts b/lib/types/global.ts new file mode 100644 index 00000000..e04ca6cf --- /dev/null +++ b/lib/types/global.ts @@ -0,0 +1,115 @@ +import { NpmAuth } from "another-npm-registry-client"; + +export type PkgVersion = string; + +export type ReverseDomainName = string; + +export type PkgName = ReverseDomainName | `${ReverseDomainName}@${PkgVersion}`; + +export type Region = "us" | "cn"; + +export type Registry = string; + +export type SemanticVersion = { + major: number; + minor: number; + patch?: number; + flag?: "a" | "b" | "f" | "c"; + flagValue?: 0 | 1 | 2; + build?: number; + loc?: string; + locValue?: number; + locBuild?: number; +}; + +export type Env = { + cwd: string; + color: boolean; + systemUser: boolean; + wsl: boolean; + npmAuth?: Record; + auth: Record; + upstream: boolean; + upstreamRegistry: string; + registry: string; + namespace: string; + editorVersion: string | null; + region: Region; + manifestPath: string; +}; + +export type Dist = { + tarball: string; + shasum: string; + integrity: string; +}; + +export type PkgVersionInfo = { + unity?: string; + unityRelease: string; + dependencies: Record; + license?: string; + displayName: string; + description?: string; + keywords?: string[]; + homepage: string; + dist?: Dist; +}; + +export type PkgInfo = { + name: PkgName; + versions: Record; + "dist-tags": { latest?: PkgVersion }; + version?: PkgVersion; + description?: string; + keywords?: string[]; + time: Record<"created" | "modified" | PkgVersion, string>; + date?: Date; +}; + +export type NameVersionPair = { + name: PkgName; + version: PkgVersion | undefined; +}; + +export type Dependency = { + name: PkgName; + version: PkgVersion | undefined; + upstream: boolean; + self: boolean; + internal: boolean; + reason: string | null; + resolved?: boolean; +}; + +export type ScopedRegistry = { + name: string; + url: string; + scopes: PkgName[]; +}; + +export type PkgManifest = { + dependencies: Record; + scopedRegistries: ScopedRegistry[]; + testables: string[]; +}; + +export type GlobalOptions = { + registry?: Registry; + verbose: boolean; + color?: boolean; + upstream?: boolean; + cn?: boolean; + systemUser: boolean; + wsl: boolean; + chdir: string; +}; + +export type UpmAuth = { + email: string; + alwaysAuth: boolean; +} & ({ token: string } | { _auth: string }); + +export type UPMConfig = { + npmAuth?: Record; +}; diff --git a/lib/utils/pkg-name.ts b/lib/utils/pkg-name.ts index dcbbc0d2..146ea161 100644 --- a/lib/utils/pkg-name.ts +++ b/lib/utils/pkg-name.ts @@ -1,3 +1,5 @@ +import { PkgName, PkgVersion, ReverseDomainName } from "../types/global"; + /** * Split package-name, which may include a version into the actual name of the * package and the version if it exists diff --git a/lib/utils/pkg-version.ts b/lib/utils/pkg-version.ts index 459ae800..fac76da6 100644 --- a/lib/utils/pkg-version.ts +++ b/lib/utils/pkg-version.ts @@ -1,3 +1,5 @@ +import { PkgVersion } from "../types/global"; + const isGit = (version: PkgVersion): boolean => version.startsWith("git"); const isHttp = (version: PkgVersion): boolean => version.startsWith("http"); From 5971aeaac722519279c2df4fe84cb126f6f1d046 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 11:45:08 +0200 Subject: [PATCH 083/201] refactor: make properties optional According to usage in tests, these properties should be optional --- lib/types/global.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/types/global.ts b/lib/types/global.ts index e04ca6cf..0cb82ca6 100644 --- a/lib/types/global.ts +++ b/lib/types/global.ts @@ -90,8 +90,8 @@ export type ScopedRegistry = { export type PkgManifest = { dependencies: Record; - scopedRegistries: ScopedRegistry[]; - testables: string[]; + scopedRegistries?: ScopedRegistry[]; + testables?: string[]; }; export type GlobalOptions = { From fe0bfd8ef1819e3ad5ee7042526b3860e03b29b8 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 11:45:41 +0200 Subject: [PATCH 084/201] fix: type errors in test utils Add return and param types for all functions --- test/utils.ts | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/test/utils.ts b/test/utils.ts index 0a8f854b..d50493cb 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -1,15 +1,24 @@ -import _ from "lodash"; import fse from "fs-extra"; import nock from "nock"; import path from "path"; import os from "os"; import testConsole from "test-console"; +import { PkgManifest } from "../lib/types/global"; +import _ from "lodash"; + +export type ManifestCreationOptions = { + manifest: boolean | PkgManifest; + editorVersion?: string; +}; -export const getWorkDir = function (pathToTmp) { +export const getWorkDir = function (pathToTmp: string): string { return path.join(os.tmpdir(), pathToTmp); }; -export const createWorkDir = function (pathToTmp, { manifest, editorVersion }) { +export const createWorkDir = function ( + pathToTmp: string, + { manifest, editorVersion }: ManifestCreationOptions +) { const workDir = getWorkDir(pathToTmp); fse.mkdirpSync(workDir); if (manifest) { @@ -30,7 +39,7 @@ export const createWorkDir = function (pathToTmp, { manifest, editorVersion }) { } }; -export const removeWorkDir = function (pathToTmp) { +export const removeWorkDir = function (pathToTmp: string) { const cwd = getWorkDir(pathToTmp); fse.removeSync(cwd); }; @@ -44,14 +53,23 @@ export const nockDown = function () { nock.cleanAll(); }; -export const getOutputs = function (stdouInspect, stderrInsepct) { - const results = [stdouInspect.output.join(""), stderrInsepct.output.join("")]; +export const getOutputs = function ( + stdouInspect: testConsole.Inspector, + stderrInsepct: testConsole.Inspector +): [string, string] { + const results: [string, string] = [ + stdouInspect.output.join(""), + stderrInsepct.output.join(""), + ]; stdouInspect.restore(); stderrInsepct.restore(); return results; }; -export const getInspects = function () { +export const getInspects = function (): [ + testConsole.Inspector, + testConsole.Inspector +] { const stdoutInspect = testConsole.stdout.inspect(); const stderrInspect = testConsole.stderr.inspect(); return [stdoutInspect, stderrInspect]; From d0226b6c81176ff9908deb925583f32c69f04677 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 11:57:10 +0200 Subject: [PATCH 085/201] misc: reformat files --- lib/client.ts | 2 +- lib/cmd-add.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/client.ts b/lib/client.ts index a6a80784..f8395b13 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -8,7 +8,7 @@ import RegClient, { import log from "./logger"; import request from "request"; import { AssertionError } from "assert"; -import {PkgInfo} from "./types/global"; +import { PkgInfo } from "./types/global"; export type NpmClient = { rawClient: RegClient; diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index f48259ab..c72a08ca 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -13,7 +13,7 @@ import { } from "./core"; import { isUrlVersion } from "./utils/pkg-version"; import { splitPkgName } from "./utils/pkg-name"; -import {GlobalOptions, PkgName, ScopedRegistry} from "./types/global"; +import { GlobalOptions, PkgName, ScopedRegistry } from "./types/global"; export type AddOptions = { test: boolean; From af5f9a089d41f1f10b4a666e8f8358af6df5e5ce Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 11:59:04 +0200 Subject: [PATCH 086/201] refactor: make properties optional According to usage in tests --- lib/cmd-add.ts | 8 ++++---- lib/types/global.ts | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index c72a08ca..4b9934f1 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -16,8 +16,8 @@ import { splitPkgName } from "./utils/pkg-name"; import { GlobalOptions, PkgName, ScopedRegistry } from "./types/global"; export type AddOptions = { - test: boolean; - force: boolean; + test?: boolean; + force?: boolean; _global: GlobalOptions; }; @@ -51,8 +51,8 @@ const _add = async function ({ force, }: { pkg: PkgName; - testables: boolean; - force: boolean; + testables?: boolean; + force?: boolean; }) { // dirty flag let dirty = false; diff --git a/lib/types/global.ts b/lib/types/global.ts index 0cb82ca6..3af06329 100644 --- a/lib/types/global.ts +++ b/lib/types/global.ts @@ -96,13 +96,13 @@ export type PkgManifest = { export type GlobalOptions = { registry?: Registry; - verbose: boolean; + verbose?: boolean; color?: boolean; upstream?: boolean; cn?: boolean; - systemUser: boolean; - wsl: boolean; - chdir: string; + systemUser?: boolean; + wsl?: boolean; + chdir?: string; }; export type UpmAuth = { From 550666bc4ff735d4e5d598dbd748c3f655fc1383 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 12:02:44 +0200 Subject: [PATCH 087/201] fix: inspector type errors in tests Type inspect variables. We force the null because it is guaranteed that inspectors will be set before a test is run --- test/test-cmd-add.ts | 5 +++-- test/test-cmd-deps.ts | 6 ++++-- test/test-cmd-remove.ts | 5 +++-- test/test-cmd-search.ts | 6 ++++-- test/test-cmd-view.ts | 6 ++++-- test/test-core.ts | 9 +++++---- 6 files changed, 23 insertions(+), 14 deletions(-) diff --git a/test/test-cmd-add.ts b/test/test-cmd-add.ts index 5a14cd58..ef24c38c 100644 --- a/test/test-cmd-add.ts +++ b/test/test-cmd-add.ts @@ -14,6 +14,7 @@ import { nockUp, removeWorkDir, } from "./utils"; +import testConsole from "test-console"; describe("cmd-add.ts", function () { const options = { @@ -47,8 +48,8 @@ describe("cmd-add.ts", function () { force: true, }; describe("add", function () { - let stdoutInspect = null; - let stderrInspect = null; + let stdoutInspect: testConsole.Inspector = null!; + let stderrInspect: testConsole.Inspector = null!; const remotePkgInfoA = { name: "com.base.package-a", versions: { diff --git a/test/test-cmd-deps.ts b/test/test-cmd-deps.ts index a535b674..077e67b1 100644 --- a/test/test-cmd-deps.ts +++ b/test/test-cmd-deps.ts @@ -13,6 +13,7 @@ import { nockUp, removeWorkDir, } from "./utils"; +import testConsole from "test-console"; describe("cmd-deps.ts", function () { const options = { @@ -22,8 +23,9 @@ describe("cmd-deps.ts", function () { }, }; describe("deps", function () { - let stdoutInspect = null; - let stderrInspect = null; + let stdoutInspect: testConsole.Inspector = null!; + let stderrInspect: testConsole.Inspector = null!; + const remotePkgInfoA = { name: "com.example.package-a", versions: { diff --git a/test/test-cmd-remove.ts b/test/test-cmd-remove.ts index c6ff1ed8..560b429c 100644 --- a/test/test-cmd-remove.ts +++ b/test/test-cmd-remove.ts @@ -11,11 +11,12 @@ import { getWorkDir, removeWorkDir, } from "./utils"; +import testConsole from "test-console"; describe("cmd-remove.ts", function () { describe("remove", function () { - let stdoutInspect = null; - let stderrInspect = null; + let stdoutInspect: testConsole.Inspector = null!; + let stderrInspect: testConsole.Inspector = null!; const defaultManifest = { dependencies: { "com.example.package-a": "1.0.0", diff --git a/test/test-cmd-search.ts b/test/test-cmd-search.ts index 612184aa..9b4161f2 100644 --- a/test/test-cmd-search.ts +++ b/test/test-cmd-search.ts @@ -12,10 +12,12 @@ import { nockUp, removeWorkDir, } from "./utils"; +import testConsole from "test-console"; describe("cmd-search.ts", function () { - let stdoutInspect = null; - let stderrInspect = null; + let stdoutInspect: testConsole.Inspector = null!; + let stderrInspect: testConsole.Inspector = null!; + const options = { _global: { registry: "http://example.com", diff --git a/test/test-cmd-view.ts b/test/test-cmd-view.ts index 3d0eb90a..f93bc674 100644 --- a/test/test-cmd-view.ts +++ b/test/test-cmd-view.ts @@ -13,6 +13,7 @@ import { nockUp, removeWorkDir, } from "./utils"; +import testConsole from "test-console"; describe("cmd-view.ts", function () { const options = { @@ -29,8 +30,9 @@ describe("cmd-view.ts", function () { }, }; describe("view", function () { - let stdoutInspect = null; - let stderrInspect = null; + let stdoutInspect: testConsole.Inspector = null!; + let stderrInspect: testConsole.Inspector = null!; + const remotePkgInfoA = { name: "com.example.package-a", versions: { diff --git a/test/test-core.ts b/test/test-core.ts index 8a128679..5853560a 100644 --- a/test/test-core.ts +++ b/test/test-core.ts @@ -24,11 +24,12 @@ import { nockUp, removeWorkDir, } from "./utils"; +import testConsole from "test-console"; describe("cmd-core.ts", function () { describe("parseEnv", function () { - let stdoutInspect = null; - let stderrInspect = null; + let stdoutInspect: testConsole.Inspector = null!; + let stderrInspect: testConsole.Inspector = null!; before(function () { removeWorkDir("test-openupm-cli"); removeWorkDir("test-openupm-cli-no-manifest"); @@ -214,8 +215,8 @@ describe("cmd-core.ts", function () { }); describe("loadManifest/SaveManifest", function () { - let stdoutInspect = null; - let stderrInspect = null; + let stdoutInspect: testConsole.Inspector = null!; + let stderrInspect: testConsole.Inspector = null!; beforeEach(function () { removeWorkDir("test-openupm-cli"); createWorkDir("test-openupm-cli", { manifest: true }); From b19628cbd90cbb666041b5c1254114d9fc960adc Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 12:05:34 +0200 Subject: [PATCH 088/201] refactor: remove unused constants --- test/test-cmd-add.ts | 40 ++++++++++++++++++++-------------------- test/test-cmd-deps.ts | 13 ++++++------- test/test-cmd-remove.ts | 8 ++++---- test/test-cmd-search.ts | 15 +++++---------- test/test-cmd-view.ts | 10 +++++----- test/test-core.ts | 25 +++++-------------------- 6 files changed, 45 insertions(+), 66 deletions(-) diff --git a/test/test-cmd-add.ts b/test/test-cmd-add.ts index ef24c38c..21775cb6 100644 --- a/test/test-cmd-add.ts +++ b/test/test-cmd-add.ts @@ -292,7 +292,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(0); const manifest = await loadManifest(); manifest.should.be.deepEqual(expectedManifestA); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -301,7 +301,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(0); const manifest = await loadManifest(); manifest.should.be.deepEqual(expectedManifestA); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -310,7 +310,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(0); const manifest = await loadManifest(); manifest.should.be.deepEqual(expectedManifestA); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -321,7 +321,7 @@ describe("cmd-add.ts", function () { retCode2.should.equal(0); const manifest = await loadManifest(); manifest.should.be.deepEqual(expectedManifestA); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("modified ").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -332,7 +332,7 @@ describe("cmd-add.ts", function () { retCode2.should.equal(0); const manifest = await loadManifest(); manifest.should.be.deepEqual(expectedManifestA); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("existed ").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -341,7 +341,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(1); const manifest = await loadManifest(); manifest.should.be.deepEqual(defaultManifest); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("version 2.0.0 is not a valid choice").should.be.ok(); stdout.includes("1.0.0").should.be.ok(); }); @@ -351,7 +351,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(0); const manifest = await loadManifest(); manifest.dependencies["com.base.package-a"].should.be.equal(gitUrl); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -361,7 +361,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(0); const manifest = await loadManifest(); manifest.dependencies["com.base.package-a"].should.be.equal(gitUrl); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -371,7 +371,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(0); const manifest = await loadManifest(); manifest.dependencies["com.base.package-a"].should.be.equal(fileUrl); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -380,7 +380,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(1); const manifest = await loadManifest(); manifest.should.deepEqual(defaultManifest); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); }); it("add more than one pkgs", async function () { @@ -391,7 +391,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(0); const manifest = await loadManifest(); manifest.should.be.deepEqual(expectedManifestAB); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added com.base.package-a").should.be.ok(); stdout.includes("added com.base.package-b").should.be.ok(); stdout.includes("open Unity").should.be.ok(); @@ -401,7 +401,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(0); const manifest = await loadManifest(); manifest.should.be.deepEqual(expectedManifestUpstream); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added com.upstream.package-up").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -410,7 +410,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(1); const manifest = await loadManifest(); manifest.should.deepEqual(defaultManifest); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); }); it("add pkg with nested dependencies", async function () { @@ -418,7 +418,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(0); const manifest = await loadManifest(); manifest.should.be.deepEqual(expectedManifestC); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -427,7 +427,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(0); const manifest = await loadManifest(); manifest.should.be.deepEqual(expectedManifestTestable); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -437,7 +437,7 @@ describe("cmd-add.ts", function () { testableOptions ); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -447,7 +447,7 @@ describe("cmd-add.ts", function () { testableOptions ); retCode.should.equal(1); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("requires 2020.2 but found 2019.2.13f1").should.be.ok(); }); it("force add pkg with higher editor version", async function () { @@ -456,7 +456,7 @@ describe("cmd-add.ts", function () { forceOptions ); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("requires 2020.2 but found 2019.2.13f1").should.be.ok(); }); it("add pkg with wrong editor version", async function () { @@ -465,7 +465,7 @@ describe("cmd-add.ts", function () { testableOptions ); retCode.should.equal(1); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("2020 is not valid").should.be.ok(); console.log(stdout); }); @@ -475,7 +475,7 @@ describe("cmd-add.ts", function () { forceOptions ); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("2020 is not valid").should.be.ok(); console.log(stdout); }); diff --git a/test/test-cmd-deps.ts b/test/test-cmd-deps.ts index 077e67b1..f21e5f6f 100644 --- a/test/test-cmd-deps.ts +++ b/test/test-cmd-deps.ts @@ -98,7 +98,7 @@ describe("cmd-deps.ts", function () { it("deps pkg", async function () { const retCode = await deps("com.example.package-a", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-b").should.be.ok(); }); it("deps pkg --deep", async function () { @@ -107,38 +107,37 @@ describe("cmd-deps.ts", function () { deep: true, }); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-b").should.be.ok(); stdout.includes("com.example.package-up").should.be.ok(); }); it("deps pkg@latest", async function () { const retCode = await deps("com.example.package-a@latest", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-b").should.be.ok(); }); it("deps pkg@1.0.0", async function () { const retCode = await deps("com.example.package-a@1.0.0", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-b").should.be.ok(); }); it("deps pkg@not-exist-version", async function () { const retCode = await deps("com.example.package-a@2.0.0", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("is not a valid choice").should.be.ok(); }); it("deps pkg-not-exist", async function () { const retCode = await deps("pkg-not-exist", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("not found").should.be.ok(); }); it("deps pkg upstream", async function () { const retCode = await deps("com.example.package-up", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); }); }); diff --git a/test/test-cmd-remove.ts b/test/test-cmd-remove.ts index 560b429c..feccce00 100644 --- a/test/test-cmd-remove.ts +++ b/test/test-cmd-remove.ts @@ -63,7 +63,7 @@ describe("cmd-remove.ts", function () { "com.example", "com.example.package-b", ]); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("removed ").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -78,7 +78,7 @@ describe("cmd-remove.ts", function () { retCode.should.equal(1); const manifest = await loadManifest(); manifest.should.be.deepEqual(defaultManifest); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("please replace").should.be.ok(); }); it("remove pkg-not-exist", async function () { @@ -92,7 +92,7 @@ describe("cmd-remove.ts", function () { retCode.should.equal(1); const manifest = await loadManifest(); manifest.should.be.deepEqual(defaultManifest); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); }); it("remove more than one pkgs", async function () { @@ -115,7 +115,7 @@ describe("cmd-remove.ts", function () { manifest.dependencies["com.example.package-b"] == undefined ).should.be.ok(); manifest.scopedRegistries[0].scopes.should.be.deepEqual(["com.example"]); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("removed com.example.package-a").should.be.ok(); stdout.includes("removed com.example.package-b").should.be.ok(); stdout.includes("open Unity").should.be.ok(); diff --git a/test/test-cmd-search.ts b/test/test-cmd-search.ts index 9b4161f2..fad3dcf1 100644 --- a/test/test-cmd-search.ts +++ b/test/test-cmd-search.ts @@ -25,12 +25,7 @@ describe("cmd-search.ts", function () { chdir: getWorkDir("test-openupm-cli"), }, }; - const upstreamOptions = { - _global: { - registry: "http://example.com", - chdir: getWorkDir("test-openupm-cli"), - }, - }; + getWorkDir("test-openupm-cli"); beforeEach(function () { removeWorkDir("test-openupm-cli"); createWorkDir("test-openupm-cli", { manifest: true }); @@ -102,7 +97,7 @@ describe("cmd-search.ts", function () { it("simple", async function () { const retCode = await search("package-a", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package-a").should.be.ok(); stdout.includes("1.0.0").should.be.ok(); stdout.includes("2019-10-02").should.be.ok(); @@ -110,7 +105,7 @@ describe("cmd-search.ts", function () { it("pkg not exist", async function () { const retCode = await search("pkg-not-exist", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("No matches found").should.be.ok(); }); }); @@ -154,7 +149,7 @@ describe("cmd-search.ts", function () { }); const retCode = await search("package-a", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("fast search endpoint is not available").should.be.ok(); stdout.includes("package-a").should.be.ok(); stdout.includes("1.0.0").should.be.ok(); @@ -166,7 +161,7 @@ describe("cmd-search.ts", function () { }); const retCode = await search("pkg-not-exist", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("No matches found").should.be.ok(); }); }); diff --git a/test/test-cmd-view.ts b/test/test-cmd-view.ts index f93bc674..c448f8e1 100644 --- a/test/test-cmd-view.ts +++ b/test/test-cmd-view.ts @@ -151,31 +151,31 @@ describe("cmd-view.ts", function () { it("view pkg", async function () { const retCode = await view("com.example.package-a", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-a@1.0.0").should.be.ok(); }); it("view pkg@1.0.0", async function () { const retCode = await view("com.example.package-a@1.0.0", options); retCode.should.equal(1); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("please replace").should.be.ok(); }); it("view pkg-not-exist", async function () { const retCode = await view("pkg-not-exist", options); retCode.should.equal(1); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); }); it("view pkg from upstream", async function () { const retCode = await view("com.example.package-up", upstreamOptions); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-up@1.0.0").should.be.ok(); }); it("view pkg-not-exist from upstream", async function () { const retCode = await view("pkg-not-exist", upstreamOptions); retCode.should.equal(1); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); }); }); diff --git a/test/test-core.ts b/test/test-core.ts index 5853560a..02be0bd2 100644 --- a/test/test-core.ts +++ b/test/test-core.ts @@ -62,7 +62,6 @@ describe("cmd-core.ts", function () { env.cwd.should.equal(""); env.manifestPath.should.equal(""); (env.editorVersion === null).should.be.ok(); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("check path", async function () { ( @@ -75,7 +74,6 @@ describe("cmd-core.ts", function () { env.manifestPath.should.be.equal( path.join(getWorkDir("test-openupm-cli"), "Packages/manifest.json") ); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("can not resolve path", async function () { ( @@ -84,7 +82,7 @@ describe("cmd-core.ts", function () { { checkPath: true } ) ).should.not.be.ok(); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("can not resolve path").should.be.ok(); }); it("can not locate manifest.json", async function () { @@ -94,7 +92,7 @@ describe("cmd-core.ts", function () { { checkPath: true } ) ).should.not.be.ok(); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("can not locate manifest.json").should.be.ok(); }); it("custom registry", async function () { @@ -106,7 +104,6 @@ describe("cmd-core.ts", function () { ).should.be.ok(); env.registry.should.be.equal("https://registry.npmjs.org"); env.namespace.should.be.equal("org.npmjs"); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("custom registry with splash", async function () { ( @@ -117,7 +114,6 @@ describe("cmd-core.ts", function () { ).should.be.ok(); env.registry.should.be.equal("https://registry.npmjs.org"); env.namespace.should.be.equal("org.npmjs"); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("custom registry with extra path", async function () { ( @@ -128,7 +124,6 @@ describe("cmd-core.ts", function () { ).should.be.ok(); env.registry.should.be.equal("https://registry.npmjs.org/some"); env.namespace.should.be.equal("org.npmjs"); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("custom registry with extra path and splash", async function () { ( @@ -139,7 +134,6 @@ describe("cmd-core.ts", function () { ).should.be.ok(); env.registry.should.be.equal("https://registry.npmjs.org/some"); env.namespace.should.be.equal("org.npmjs"); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("custom registry without http", async function () { ( @@ -150,7 +144,6 @@ describe("cmd-core.ts", function () { ).should.be.ok(); env.registry.should.be.equal("http://registry.npmjs.org"); env.namespace.should.be.equal("org.npmjs"); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("custom registry with ipv4+port", async function () { ( @@ -161,7 +154,6 @@ describe("cmd-core.ts", function () { ).should.be.ok(); env.registry.should.be.equal("http://127.0.0.1:4873"); env.namespace.should.be.equal("127.0.0.1"); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("custom registry with ipv6+port", async function () { ( @@ -172,14 +164,12 @@ describe("cmd-core.ts", function () { ).should.be.ok(); env.registry.should.be.equal("http://[1:2:3:4:5:6:7:8]:4873"); env.namespace.should.be.equal("1:2:3:4:5:6:7:8"); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("upstream", async function () { ( await parseEnv({ _global: { upstream: false } }, { checkPath: false }) ).should.be.ok(); env.upstream.should.not.be.ok(); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("editorVersion", async function () { ( @@ -189,7 +179,6 @@ describe("cmd-core.ts", function () { ) ).should.be.ok(); env.editorVersion.should.be.equal("2019.2.13f1"); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("region cn", async function () { ( @@ -198,7 +187,6 @@ describe("cmd-core.ts", function () { env.registry.should.be.equal("https://package.openupm.cn"); env.upstreamRegistry.should.be.equal("https://packages.unity.cn"); env.region.should.be.equal("cn"); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("region cn with a custom registry", async function () { ( @@ -210,7 +198,6 @@ describe("cmd-core.ts", function () { env.registry.should.be.equal("https://reg.custom-package.com"); env.upstreamRegistry.should.be.equal("https://packages.unity.cn"); env.region.should.be.equal("cn"); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); }); @@ -247,7 +234,6 @@ describe("cmd-core.ts", function () { ).should.be.ok(); const manifest = loadManifest(); manifest.should.be.deepEqual({ dependencies: {} }); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("no manifest file", async function () { ( @@ -258,7 +244,7 @@ describe("cmd-core.ts", function () { ).should.be.ok(); const manifest = loadManifest(); (manifest === null).should.be.ok(); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("does not exist").should.be.ok(); }); it("wrong json content", async function () { @@ -270,7 +256,7 @@ describe("cmd-core.ts", function () { ).should.be.ok(); const manifest = loadManifest(); (manifest === null).should.be.ok(); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("failed to parse").should.be.ok(); }); it("saveManifest", async function () { @@ -286,7 +272,6 @@ describe("cmd-core.ts", function () { saveManifest(manifest).should.be.ok(); const manifest2 = loadManifest(); manifest2.should.be.deepEqual(manifest); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); }); @@ -318,7 +303,7 @@ describe("cmd-core.ts", function () { { checkPath: false } ) ).should.be.ok(); - const pkgInfoRemote = { name: "com.littlebigfun.addressable-importer" }; + nock("http://example.com").get("/package-a").reply(404); const info = await fetchPackageInfo("package-a"); (info === undefined).should.be.ok(); From 01ee62a2601046587562029a67029717333a5c9f Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 12:06:46 +0200 Subject: [PATCH 089/201] refactor: remove unnecessary await a --- test/test-cmd-add.ts | 30 +++++++++++++++--------------- test/test-cmd-remove.ts | 8 +++++--- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/test/test-cmd-add.ts b/test/test-cmd-add.ts index 21775cb6..632517ae 100644 --- a/test/test-cmd-add.ts +++ b/test/test-cmd-add.ts @@ -290,7 +290,7 @@ describe("cmd-add.ts", function () { it("add pkg", async function () { const retCode = await add("com.base.package-a", options); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(expectedManifestA); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -299,7 +299,7 @@ describe("cmd-add.ts", function () { it("add pkg@1.0.0", async function () { const retCode = await add("com.base.package-a@1.0.0", options); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(expectedManifestA); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -308,7 +308,7 @@ describe("cmd-add.ts", function () { it("add pkg@latest", async function () { const retCode = await add("com.base.package-a@latest", options); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(expectedManifestA); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -319,7 +319,7 @@ describe("cmd-add.ts", function () { retCode1.should.equal(0); const retCode2 = await add("com.base.package-a@1.0.0", options); retCode2.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(expectedManifestA); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("modified ").should.be.ok(); @@ -330,7 +330,7 @@ describe("cmd-add.ts", function () { retCode1.should.equal(0); const retCode2 = await add("com.base.package-a@1.0.0", options); retCode2.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(expectedManifestA); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("existed ").should.be.ok(); @@ -339,7 +339,7 @@ describe("cmd-add.ts", function () { it("add pkg@not-exist-version", async function () { const retCode = await add("com.base.package-a@2.0.0", options); retCode.should.equal(1); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(defaultManifest); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("version 2.0.0 is not a valid choice").should.be.ok(); @@ -349,7 +349,7 @@ describe("cmd-add.ts", function () { const gitUrl = "https://github.com/yo/com.base.package-a"; const retCode = await add("com.base.package-a@" + gitUrl, options); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.dependencies["com.base.package-a"].should.be.equal(gitUrl); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -359,7 +359,7 @@ describe("cmd-add.ts", function () { const gitUrl = "git@github.com:yo/com.base.package-a"; const retCode = await add("com.base.package-a@" + gitUrl, options); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.dependencies["com.base.package-a"].should.be.equal(gitUrl); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -369,7 +369,7 @@ describe("cmd-add.ts", function () { const fileUrl = "file../yo/com.base.package-a"; const retCode = await add("com.base.package-a@" + fileUrl, options); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.dependencies["com.base.package-a"].should.be.equal(fileUrl); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -378,7 +378,7 @@ describe("cmd-add.ts", function () { it("add pkg-not-exist", async function () { const retCode = await add("pkg-not-exist", options); retCode.should.equal(1); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.deepEqual(defaultManifest); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); @@ -389,7 +389,7 @@ describe("cmd-add.ts", function () { options ); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(expectedManifestAB); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added com.base.package-a").should.be.ok(); @@ -399,7 +399,7 @@ describe("cmd-add.ts", function () { it("add pkg from upstream", async function () { const retCode = await add("com.upstream.package-up", upstreamOptions); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(expectedManifestUpstream); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added com.upstream.package-up").should.be.ok(); @@ -408,7 +408,7 @@ describe("cmd-add.ts", function () { it("add pkg-not-exist from upstream", async function () { const retCode = await add("pkg-not-exist", upstreamOptions); retCode.should.equal(1); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.deepEqual(defaultManifest); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); @@ -416,7 +416,7 @@ describe("cmd-add.ts", function () { it("add pkg with nested dependencies", async function () { const retCode = await add("com.base.package-c@latest", upstreamOptions); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(expectedManifestC); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -425,7 +425,7 @@ describe("cmd-add.ts", function () { it("add pkg with tests", async function () { const retCode = await add("com.base.package-a", testableOptions); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(expectedManifestTestable); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); diff --git a/test/test-cmd-remove.ts b/test/test-cmd-remove.ts index feccce00..e4d7248e 100644 --- a/test/test-cmd-remove.ts +++ b/test/test-cmd-remove.ts @@ -12,6 +12,7 @@ import { removeWorkDir, } from "./utils"; import testConsole from "test-console"; +import assert from "assert"; describe("cmd-remove.ts", function () { describe("remove", function () { @@ -55,7 +56,7 @@ describe("cmd-remove.ts", function () { }; const retCode = await remove("com.example.package-a", options); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); ( manifest.dependencies["com.example.package-a"] == undefined ).should.be.ok(); @@ -76,7 +77,7 @@ describe("cmd-remove.ts", function () { }; const retCode = await remove("com.example.package-a@1.0.0", options); retCode.should.equal(1); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(defaultManifest); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("please replace").should.be.ok(); @@ -90,7 +91,8 @@ describe("cmd-remove.ts", function () { }; const retCode = await remove("pkg-not-exist", options); retCode.should.equal(1); - const manifest = await loadManifest(); + const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(defaultManifest); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); From a94c4681f2816a827cfa5f2888a04529eab80864 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 12:16:22 +0200 Subject: [PATCH 090/201] refactor: make properties optional According to usage in tests --- lib/cmd-deps.ts | 4 ++-- lib/core.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index a96d68e7..f5672ac2 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -4,7 +4,7 @@ import { splitPkgName } from "./utils/pkg-name"; import { GlobalOptions, PkgName, PkgVersion } from "./types/global"; export type DepsOptions = { - deep: boolean; + deep?: boolean; _global: GlobalOptions; }; @@ -26,7 +26,7 @@ const _deps = async function ({ }: { name: PkgName; version: PkgVersion | undefined; - deep: boolean; + deep?: boolean; }) { // eslint-disable-next-line no-unused-vars const [depsValid, depsInvalid] = await fetchPackageDependencies({ diff --git a/lib/core.ts b/lib/core.ts index cf7ac3d1..27c8ccd8 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -213,7 +213,7 @@ export const fetchPackageDependencies = async function ({ }: { name: PkgName; version: PkgVersion | undefined; - deep: boolean; + deep?: boolean; }): Promise<[Dependency[], Dependency[]]> { log.verbose("dependency", `fetch: ${name}@${version} deep=${deep}`); // a list of pending dependency {name, version} From edb8b518a8fd3f7321e79d7d963e6c70f58287a6 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 12:13:15 +0200 Subject: [PATCH 091/201] refactor: fix null and undefined warnings in test Assert not-null or not-undefined where applicable --- test/test-cmd-add.ts | 16 ++++++++++++++++ test/test-cmd-remove.ts | 7 +++++++ test/test-core.ts | 36 +++++++++++++++++++++++++++--------- 3 files changed, 50 insertions(+), 9 deletions(-) diff --git a/test/test-cmd-add.ts b/test/test-cmd-add.ts index 632517ae..425e8fee 100644 --- a/test/test-cmd-add.ts +++ b/test/test-cmd-add.ts @@ -15,6 +15,7 @@ import { removeWorkDir, } from "./utils"; import testConsole from "test-console"; +import assert from "assert"; describe("cmd-add.ts", function () { const options = { @@ -291,6 +292,7 @@ describe("cmd-add.ts", function () { const retCode = await add("com.base.package-a", options); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(expectedManifestA); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -300,6 +302,7 @@ describe("cmd-add.ts", function () { const retCode = await add("com.base.package-a@1.0.0", options); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(expectedManifestA); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -309,6 +312,7 @@ describe("cmd-add.ts", function () { const retCode = await add("com.base.package-a@latest", options); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(expectedManifestA); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -320,6 +324,7 @@ describe("cmd-add.ts", function () { const retCode2 = await add("com.base.package-a@1.0.0", options); retCode2.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(expectedManifestA); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("modified ").should.be.ok(); @@ -331,6 +336,7 @@ describe("cmd-add.ts", function () { const retCode2 = await add("com.base.package-a@1.0.0", options); retCode2.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(expectedManifestA); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("existed ").should.be.ok(); @@ -340,6 +346,7 @@ describe("cmd-add.ts", function () { const retCode = await add("com.base.package-a@2.0.0", options); retCode.should.equal(1); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(defaultManifest); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("version 2.0.0 is not a valid choice").should.be.ok(); @@ -350,6 +357,7 @@ describe("cmd-add.ts", function () { const retCode = await add("com.base.package-a@" + gitUrl, options); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.dependencies["com.base.package-a"].should.be.equal(gitUrl); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -360,6 +368,7 @@ describe("cmd-add.ts", function () { const retCode = await add("com.base.package-a@" + gitUrl, options); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.dependencies["com.base.package-a"].should.be.equal(gitUrl); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -370,6 +379,7 @@ describe("cmd-add.ts", function () { const retCode = await add("com.base.package-a@" + fileUrl, options); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.dependencies["com.base.package-a"].should.be.equal(fileUrl); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -379,6 +389,7 @@ describe("cmd-add.ts", function () { const retCode = await add("pkg-not-exist", options); retCode.should.equal(1); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.deepEqual(defaultManifest); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); @@ -390,6 +401,7 @@ describe("cmd-add.ts", function () { ); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(expectedManifestAB); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added com.base.package-a").should.be.ok(); @@ -400,6 +412,7 @@ describe("cmd-add.ts", function () { const retCode = await add("com.upstream.package-up", upstreamOptions); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(expectedManifestUpstream); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added com.upstream.package-up").should.be.ok(); @@ -409,6 +422,7 @@ describe("cmd-add.ts", function () { const retCode = await add("pkg-not-exist", upstreamOptions); retCode.should.equal(1); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.deepEqual(defaultManifest); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); @@ -417,6 +431,7 @@ describe("cmd-add.ts", function () { const retCode = await add("com.base.package-c@latest", upstreamOptions); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(expectedManifestC); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -426,6 +441,7 @@ describe("cmd-add.ts", function () { const retCode = await add("com.base.package-a", testableOptions); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(expectedManifestTestable); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); diff --git a/test/test-cmd-remove.ts b/test/test-cmd-remove.ts index e4d7248e..5a8e8ab8 100644 --- a/test/test-cmd-remove.ts +++ b/test/test-cmd-remove.ts @@ -57,9 +57,12 @@ describe("cmd-remove.ts", function () { const retCode = await remove("com.example.package-a", options); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); ( manifest.dependencies["com.example.package-a"] == undefined ).should.be.ok(); + assert(manifest.scopedRegistries !== undefined); + assert(manifest.scopedRegistries[0] !== undefined); manifest.scopedRegistries[0].scopes.should.be.deepEqual([ "com.example", "com.example.package-b", @@ -78,6 +81,7 @@ describe("cmd-remove.ts", function () { const retCode = await remove("com.example.package-a@1.0.0", options); retCode.should.equal(1); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(defaultManifest); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("please replace").should.be.ok(); @@ -110,12 +114,15 @@ describe("cmd-remove.ts", function () { ); retCode.should.equal(0); const manifest = await loadManifest(); + assert(manifest !== null); ( manifest.dependencies["com.example.package-a"] == undefined ).should.be.ok(); ( manifest.dependencies["com.example.package-b"] == undefined ).should.be.ok(); + assert(manifest.scopedRegistries !== undefined); + assert(manifest.scopedRegistries[0] !== undefined); manifest.scopedRegistries[0].scopes.should.be.deepEqual(["com.example"]); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("removed com.example.package-a").should.be.ok(); diff --git a/test/test-core.ts b/test/test-core.ts index 02be0bd2..e85d26ee 100644 --- a/test/test-core.ts +++ b/test/test-core.ts @@ -25,6 +25,7 @@ import { removeWorkDir, } from "./utils"; import testConsole from "test-console"; +import assert from "assert"; describe("cmd-core.ts", function () { describe("parseEnv", function () { @@ -178,6 +179,7 @@ describe("cmd-core.ts", function () { { checkPath: true } ) ).should.be.ok(); + assert(env.editorVersion !== null); env.editorVersion.should.be.equal("2019.2.13f1"); }); it("region cn", async function () { @@ -233,6 +235,7 @@ describe("cmd-core.ts", function () { ) ).should.be.ok(); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual({ dependencies: {} }); }); it("no manifest file", async function () { @@ -267,10 +270,12 @@ describe("cmd-core.ts", function () { ) ).should.be.ok(); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual({ dependencies: {} }); manifest.dependencies["some-pack"] = "1.0.0"; saveManifest(manifest).should.be.ok(); const manifest2 = loadManifest(); + assert(manifest2 !== null); manifest2.should.be.deepEqual(manifest); }); }); @@ -294,6 +299,7 @@ describe("cmd-core.ts", function () { .get("/package-a") .reply(200, pkgInfoRemote, { "Content-Type": "application/json" }); const info = await fetchPackageInfo("package-a"); + assert(info !== undefined); info.should.deepEqual(pkgInfoRemote); }); it("404", async function () { @@ -312,9 +318,9 @@ describe("cmd-core.ts", function () { describe("getLatestVersion", function () { it("from dist-tags", async function () { - getLatestVersion({ "dist-tags": { latest: "1.0.0" } }).should.equal( - "1.0.0" - ); + const version = getLatestVersion({ "dist-tags": { latest: "1.0.0" } }); + assert(version !== undefined); + version.should.equal("1.0.0"); }); it("not found", async function () { ( @@ -328,17 +334,23 @@ describe("cmd-core.ts", function () { (parseEditorVersion(null) === null).should.be.ok(); }); it("test x.y", function () { - parseEditorVersion("2019.2").should.deepEqual({ major: 2019, minor: 2 }); + const version = parseEditorVersion("2019.2"); + assert(version !== null); + version.should.deepEqual({ major: 2019, minor: 2 }); }); it("test x.y.z", function () { - parseEditorVersion("2019.2.1").should.deepEqual({ + const version = parseEditorVersion("2019.2.1"); + assert(version !== null); + version.should.deepEqual({ major: 2019, minor: 2, patch: 1, }); }); it("test x.y.zan", function () { - parseEditorVersion("2019.2.1a5").should.deepEqual({ + const version = parseEditorVersion("2019.2.1a5"); + assert(version !== null); + version.should.deepEqual({ major: 2019, minor: 2, patch: 1, @@ -348,7 +360,9 @@ describe("cmd-core.ts", function () { }); }); it("test x.y.zbn", function () { - parseEditorVersion("2019.2.1b5").should.deepEqual({ + const version = parseEditorVersion("2019.2.1b5"); + assert(version !== null); + version.should.deepEqual({ major: 2019, minor: 2, patch: 1, @@ -358,7 +372,9 @@ describe("cmd-core.ts", function () { }); }); it("test x.y.zfn", function () { - parseEditorVersion("2019.2.1f5").should.deepEqual({ + const version = parseEditorVersion("2019.2.1f5"); + assert(version !== null); + version.should.deepEqual({ major: 2019, minor: 2, patch: 1, @@ -368,7 +384,9 @@ describe("cmd-core.ts", function () { }); }); it("test x.y.zcn", function () { - parseEditorVersion("2019.2.1f1c5").should.deepEqual({ + const version = parseEditorVersion("2019.2.1f1c5"); + assert(version !== null); + version.should.deepEqual({ major: 2019, minor: 2, patch: 1, From b87bea4f6fea1dfec011b0e22f080b6a87346e8c Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 15:10:33 +0200 Subject: [PATCH 092/201] misc: drop outdated test --- test/test-core.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/test/test-core.ts b/test/test-core.ts index e85d26ee..dd692489 100644 --- a/test/test-core.ts +++ b/test/test-core.ts @@ -322,12 +322,6 @@ describe("cmd-core.ts", function () { assert(version !== undefined); version.should.equal("1.0.0"); }); - it("not found", async function () { - ( - getLatestVersion({ versions: { "1.0.0": "patch" } }) === undefined - ).should.be.ok(); - (getLatestVersion({}) === undefined).should.be.ok(); - }); }); describe("parseEditorVersion", function () { it("test null", function () { From 0f0e15eeefbbfa13b0393c46efead21ac7a3ba48 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 15:23:07 +0200 Subject: [PATCH 093/201] feat: fix type error Allow partial pkg-infos in order to satisfy test setups --- lib/core.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/core.ts b/lib/core.ts index 27c8ccd8..c80f3c8b 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -325,7 +325,7 @@ export const fetchPackageDependencies = async function ({ // Get latest version from package info export const getLatestVersion = function ( - pkgInfo: PkgInfo + pkgInfo: Partial ): PkgVersion | undefined { if (pkgInfo["dist-tags"]?.["latest"] !== undefined) return pkgInfo["dist-tags"]["latest"]; From 33a26741aa7d3a7e6d65fb8e657a281d2319eec0 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 15:23:36 +0200 Subject: [PATCH 094/201] fix: null error Allow null as seen in tests --- lib/core.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/core.ts b/lib/core.ts index c80f3c8b..b43ba6b0 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -472,7 +472,7 @@ export const compareEditorVersion = function (a: string, b: string) { * locBuild: 4 */ export const parseEditorVersion = function ( - version: string + version: string | null ): SemanticVersion | null { type RegexMatchGroups = { major: `${number}`; From d55c9ce14601a1fc84a335c48b51b73bd4eb40a0 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Thu, 26 Oct 2023 13:24:10 +0200 Subject: [PATCH 095/201] conf: simplify test script ts-mocha already compiles TS --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 465ddef5..04dd72ea 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,7 @@ }, "main": "index.js", "scripts": { - "build": "tsc", - "test": "tsc && cross-env NODE_ENV=test ts-mocha test/**/*.ts", + "test": "cross-env NODE_ENV=test ts-mocha test/**/*.ts", "semantic-release": "semantic-release" }, "bin": { From f88bc8b1edef5e6b2add9ac140d190eb65aa568a Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Thu, 26 Oct 2023 13:53:34 +0200 Subject: [PATCH 096/201] misc: change bin structure Instead of building the package using tsc and then running the js file, we can run using ts-node. That way we only need ts files in the project. For this to work a few changes needed to be done: - Removed the initial empty index file - Moved bin-files into lib - Converted bin files to ts and renamed them to index/index-cn - Changed the shebang in the index files to use ts-node. This also requires ts-node is a dependency of the package - Adjust tsconfig in order to work with ts-node Seems like the package still works as intended. It might take a little bit longer to run because of the additional compile step --- .gitattributes | 4 +- bin/openupm | 3 - index.js | 0 bin/openupm-cn => lib/index-cn.ts | 4 +- lib/index.ts | 3 + package-lock.json | 330 ++++++++++++++++++++++++------ package.json | 12 +- tsconfig.json | 4 +- 8 files changed, 282 insertions(+), 78 deletions(-) delete mode 100755 bin/openupm delete mode 100644 index.js rename bin/openupm-cn => lib/index-cn.ts (51%) mode change 100755 => 100644 create mode 100644 lib/index.ts diff --git a/.gitattributes b/.gitattributes index f658caa4..67fb21db 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,3 @@ * text=auto -bin/openupm text eol=lf -bin/openupm-cn text eol=lf +lib/index.ts text eol=lf +lib/index.ts-cn text eol=lf diff --git a/bin/openupm b/bin/openupm deleted file mode 100755 index 148b0b2a..00000000 --- a/bin/openupm +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node - -require("../build/lib/cli"); diff --git a/index.js b/index.js deleted file mode 100644 index e69de29b..00000000 diff --git a/bin/openupm-cn b/lib/index-cn.ts old mode 100755 new mode 100644 similarity index 51% rename from bin/openupm-cn rename to lib/index-cn.ts index a8f5aef5..8cb50d30 --- a/bin/openupm-cn +++ b/lib/index-cn.ts @@ -1,4 +1,4 @@ -#!/usr/bin/env node +#!/usr/bin/env -S node -r "ts-node/register" if (!process.argv.includes("--cn")) process.argv.push("--cn"); -require("../build/lib/cli"); +import "./cli"; diff --git a/lib/index.ts b/lib/index.ts new file mode 100644 index 00000000..3b301e03 --- /dev/null +++ b/lib/index.ts @@ -0,0 +1,3 @@ +#!/usr/bin/env -S node -r "ts-node/register" + +import "./cli"; diff --git a/package-lock.json b/package-lock.json index 74f87b58..66f88095 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,13 +23,14 @@ "npmlog": "^6.0.2", "pkginfo": "^0.4.1", "promptly": "^3.2.0", + "ts-node": "^10.9.1", "update-notifier": "^5.1.0", "yaml": "^2.0.1" }, "bin": { - "openupm": "bin/openupm", - "openupm-cli": "bin/openupm", - "openupm-cn": "bin/openupm-cn" + "openupm": "lib/index.ts", + "openupm-cli": "lib/index.ts", + "openupm-cn": "lib/index-cn.ts" }, "devDependencies": { "@babel/core": "^7.17.10", @@ -62,8 +63,7 @@ "semantic-release": "^19.0.3", "should": "^13.2.3", "test-console": "^2.0.0", - "ts-mocha": "^10.0.0", - "typescript": "^5.2.2" + "ts-mocha": "^10.0.0" }, "engines": { "node": ">=14.18" @@ -482,6 +482,26 @@ "node": ">=0.1.90" } }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -637,7 +657,6 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -654,8 +673,7 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.13", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", - "dev": true + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.13", @@ -1120,6 +1138,26 @@ "node": ">= 10" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" + }, "node_modules/@types/caseless": { "version": "0.12.4", "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.4.tgz", @@ -1201,8 +1239,7 @@ "node_modules/@types/node": { "version": "14.18.63", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", - "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", - "dev": true + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==" }, "node_modules/@types/node-fetch": { "version": "2.6.6", @@ -1818,7 +1855,6 @@ "version": "8.10.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -1835,6 +1871,14 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -2126,6 +2170,11 @@ "node": ">= 6" } }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -2912,6 +2961,11 @@ "node": ">= 6" } }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, "node_modules/cross-env": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", @@ -5009,8 +5063,7 @@ "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" }, "node_modules/make-fetch-happen": { "version": "10.1.6", @@ -10032,7 +10085,28 @@ "mocha": "^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X" } }, - "node_modules/ts-node": { + "node_modules/ts-mocha/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, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/ts-mocha/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ts-mocha/node_modules/ts-node": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", @@ -10054,25 +10128,63 @@ "node": ">=4.2.0" } }, - "node_modules/ts-node/node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "node_modules/ts-mocha/node_modules/yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", "dev": true, "engines": { - "node": ">=0.3.1" + "node": ">=4" } }, - "node_modules/ts-node/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" }, "bin": { - "mkdirp": "bin/cmd.js" + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "engines": { + "node": ">=0.3.1" } }, "node_modules/tsconfig-paths": { @@ -10158,7 +10270,7 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", - "dev": true, + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -10312,6 +10424,11 @@ "uuid": "bin/uuid" } }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -10638,12 +10755,11 @@ } }, "node_modules/yn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", - "dev": true, + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/yocto-queue": { @@ -10973,6 +11089,25 @@ "dev": true, "optional": true }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, "@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -11082,8 +11217,7 @@ "@jridgewell/resolve-uri": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", - "dev": true + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==" }, "@jridgewell/set-array": { "version": "1.1.1", @@ -11094,8 +11228,7 @@ "@jridgewell/sourcemap-codec": { "version": "1.4.13", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", - "dev": true + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" }, "@jridgewell/trace-mapping": { "version": "0.3.13", @@ -11472,6 +11605,26 @@ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" + }, + "@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" + }, "@types/caseless": { "version": "0.12.4", "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.4.tgz", @@ -11553,8 +11706,7 @@ "@types/node": { "version": "14.18.63", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", - "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", - "dev": true + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==" }, "@types/node-fetch": { "version": "2.6.6", @@ -11988,8 +12140,7 @@ "acorn": { "version": "8.10.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" }, "acorn-jsx": { "version": "5.3.2", @@ -11998,6 +12149,11 @@ "dev": true, "requires": {} }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" + }, "agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -12230,6 +12386,11 @@ } } }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -12824,6 +12985,11 @@ } } }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, "cross-env": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", @@ -14376,8 +14542,7 @@ "make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" }, "make-fetch-happen": { "version": "10.1.6", @@ -18006,22 +18171,6 @@ "requires": { "ts-node": "7.0.1", "tsconfig-paths": "^3.5.0" - } - }, - "ts-node": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", - "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", - "dev": true, - "requires": { - "arrify": "^1.0.0", - "buffer-from": "^1.1.0", - "diff": "^3.1.0", - "make-error": "^1.1.1", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "source-map-support": "^0.5.6", - "yn": "^2.0.0" }, "dependencies": { "diff": { @@ -18038,6 +18187,55 @@ "requires": { "minimist": "^1.2.6" } + }, + "ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + } + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", + "dev": true + } + } + }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" } } }, @@ -18111,7 +18309,7 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", - "dev": true + "peer": true }, "uglify-js": { "version": "3.15.5", @@ -18226,6 +18424,11 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -18477,10 +18680,9 @@ } }, "yn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", - "dev": true + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" }, "yocto-queue": { "version": "0.1.0", diff --git a/package.json b/package.json index 04dd72ea..ed8b8e71 100644 --- a/package.json +++ b/package.json @@ -6,15 +6,15 @@ "engines": { "node": ">=14.18" }, - "main": "index.js", + "main": "lib/index.ts", "scripts": { "test": "cross-env NODE_ENV=test ts-mocha test/**/*.ts", "semantic-release": "semantic-release" }, "bin": { - "openupm": "bin/openupm", - "openupm-cli": "bin/openupm", - "openupm-cn": "bin/openupm-cn" + "openupm": "lib/index.ts", + "openupm-cli": "lib/index.ts", + "openupm-cn": "lib/index-cn.ts" }, "repository": { "type": "git", @@ -61,8 +61,7 @@ "semantic-release": "^19.0.3", "should": "^13.2.3", "test-console": "^2.0.0", - "ts-mocha": "^10.0.0", - "typescript": "^5.2.2" + "ts-mocha": "^10.0.0" }, "dependencies": { "@iarna/toml": "^2.2.5", @@ -79,6 +78,7 @@ "npmlog": "^6.0.2", "pkginfo": "^0.4.1", "promptly": "^3.2.0", + "ts-node": "^10.9.1", "update-notifier": "^5.1.0", "yaml": "^2.0.1" } diff --git a/tsconfig.json b/tsconfig.json index 15adc119..cc34a409 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -32,7 +32,9 @@ // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + "typeRoots": [ /* Specify multiple folders that act like './node_modules/@types'. */ + "lib/types", "node_modules/@types" + ], // "types": [], /* Specify type package names to be included without being referenced in a source file. */ // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ From 633c0517cd7429ecc76d154f7a65dc3b45f61a41 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Thu, 26 Oct 2023 13:54:47 +0200 Subject: [PATCH 097/201] misc: add missing typescript dependency Seems like mocha requires it --- package-lock.json | 7 +++---- package.json | 3 ++- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 66f88095..435f5149 100644 --- a/package-lock.json +++ b/package-lock.json @@ -63,7 +63,8 @@ "semantic-release": "^19.0.3", "should": "^13.2.3", "test-console": "^2.0.0", - "ts-mocha": "^10.0.0" + "ts-mocha": "^10.0.0", + "typescript": "^5.2.2" }, "engines": { "node": ">=14.18" @@ -10270,7 +10271,6 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -18308,8 +18308,7 @@ "typescript": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", - "peer": true + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==" }, "uglify-js": { "version": "3.15.5", diff --git a/package.json b/package.json index ed8b8e71..051d2f89 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,8 @@ "semantic-release": "^19.0.3", "should": "^13.2.3", "test-console": "^2.0.0", - "ts-mocha": "^10.0.0" + "ts-mocha": "^10.0.0", + "typescript": "^5.2.2" }, "dependencies": { "@iarna/toml": "^2.2.5", From 14f8ba5cee753cadba4246b0fd3d7c6426ee2380 Mon Sep 17 00:00:00 2001 From: Ramon Brullo Date: Sun, 29 Oct 2023 16:48:40 +0100 Subject: [PATCH 098/201] chore: fix eslint-prettier error (#50) When attempting to fix eslint rules in file, the following error appeared ```Error: "prettier/vue" has been merged into "prettier" in eslint-config-prettier 8.0.0. See: https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md#version-800-2021-02-21``` Reading the linked changelog, it seemed the fix was to simply only use the prettier/recommended extension. Simplified eslintrc to reflect this. --- .eslintrc.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index fe83a0f9..be58536d 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -5,8 +5,6 @@ module.exports = { }, extends: [ "eslint:recommended", - "plugin:vue/recommended", - "prettier/vue", "plugin:prettier/recommended" ], rules: { From 3e758befc32f2a9479074fd813973184a6b3f85b Mon Sep 17 00:00:00 2001 From: Ramon Brullo Date: Mon, 16 Oct 2023 15:43:58 +0200 Subject: [PATCH 099/201] deps: install typescript --- package-lock.json | 53 ++++++++++++++++++++- package.json | 4 +- tsconfig.json | 118 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 173 insertions(+), 2 deletions(-) create mode 100644 tsconfig.json diff --git a/package-lock.json b/package-lock.json index 6ba5e9ed..8e0a9d41 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,6 +36,7 @@ "@babel/eslint-parser": "^7.17.0", "@semantic-release/changelog": "^6.0.1", "@semantic-release/git": "^10.0.1", + "@types/node": "^20.8.6", "cross-env": "^7.0.3", "eslint": "^8.15.0", "eslint-config-prettier": "^8.5.0", @@ -46,7 +47,8 @@ "prettier": "^2.6.2", "semantic-release": "^19.0.2", "should": "^13.2.3", - "test-console": "^2.0.0" + "test-console": "^2.0.0", + "typescript": "^5.2.2" }, "engines": { "node": ">=14.18" @@ -1028,6 +1030,15 @@ "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, + "node_modules/@types/node": { + "version": "20.8.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.6.tgz", + "integrity": "sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.25.1" + } + }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", @@ -9241,6 +9252,19 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/uglify-js": { "version": "3.15.5", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.5.tgz", @@ -9254,6 +9278,12 @@ "node": ">=0.8.0" } }, + "node_modules/undici-types": { + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", + "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", + "dev": true + }, "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -10510,6 +10540,15 @@ "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, + "@types/node": { + "version": "20.8.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.6.tgz", + "integrity": "sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==", + "dev": true, + "requires": { + "undici-types": "~5.25.1" + } + }, "@types/normalize-package-data": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", @@ -16551,6 +16590,12 @@ "is-typedarray": "^1.0.0" } }, + "typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true + }, "uglify-js": { "version": "3.15.5", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.5.tgz", @@ -16558,6 +16603,12 @@ "dev": true, "optional": true }, + "undici-types": { + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", + "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", + "dev": true + }, "unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", diff --git a/package.json b/package.json index 3e97c7dd..4399afa0 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "@babel/eslint-parser": "^7.17.0", "@semantic-release/changelog": "^6.0.1", "@semantic-release/git": "^10.0.1", + "@types/node": "^20.8.6", "cross-env": "^7.0.3", "eslint": "^8.15.0", "eslint-config-prettier": "^8.5.0", @@ -45,7 +46,8 @@ "prettier": "^2.6.2", "semantic-release": "^19.0.3", "should": "^13.2.3", - "test-console": "^2.0.0" + "test-console": "^2.0.0", + "typescript": "^5.2.2" }, "dependencies": { "@iarna/toml": "^2.2.5", diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..17b19bf6 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,118 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", + /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", + /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + "outDir": "./build", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, + /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, + /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, + /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true + /* Skip type checking all .d.ts files. */ + }, + "include": [ + "./lib/**/*" + ] +} From 007411fe54524890b71611989af22089e21bdabc Mon Sep 17 00:00:00 2001 From: Ramon Brullo Date: Mon, 16 Oct 2023 17:35:55 +0200 Subject: [PATCH 100/201] misc: ignore builds --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index c94b3753..eff3a566 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,7 @@ typings/ # next.js build output .next .vscode/settings.json + +# builds + +/build \ No newline at end of file From 9c27c929a3159457c7cf7cf5f60eaeafa6365bb2 Mon Sep 17 00:00:00 2001 From: Ramon Brullo Date: Mon, 16 Oct 2023 17:36:12 +0200 Subject: [PATCH 101/201] feat: convert to typescript --- bin/openupm | 2 +- bin/openupm-cn | 2 +- lib/{cli.js => cli.ts} | 51 +-- lib/{client.js => client.ts} | 14 +- lib/{cmd-add.js => cmd-add.ts} | 67 ++-- lib/{cmd-deps.js => cmd-deps.ts} | 34 +- lib/{cmd-login.js => cmd-login.ts} | 119 +++++-- lib/{cmd-remove.js => cmd-remove.ts} | 30 +- lib/{cmd-search.js => cmd-search.ts} | 83 +++-- lib/{cmd-view.js => cmd-view.ts} | 25 +- lib/{core.js => core.ts} | 241 ++++++++----- lib/error-handler.js | 13 - lib/error-handler.ts | 15 + lib/logger.js | 8 - lib/logger.ts | 8 + lib/types.ts | 129 +++++++ lib/utils/process.js | 35 -- lib/utils/process.ts | 34 ++ package-lock.json | 512 ++++++++++++++++++++++++++- package.json | 9 +- test/test-cmd-add.js | 193 +++++----- test/test-cmd-deps.js | 76 ++-- test/test-cmd-login.js | 4 +- test/test-cmd-remove.js | 52 +-- test/test-cmd-search.js | 84 +++-- test/test-cmd-view.js | 78 ++-- test/test-core.js | 4 +- tsconfig.json | 2 +- 28 files changed, 1366 insertions(+), 558 deletions(-) rename lib/{cli.js => cli.ts} (76%) rename lib/{client.js => client.ts} (59%) rename lib/{cmd-add.js => cmd-add.ts} (83%) rename lib/{cmd-deps.js => cmd-deps.ts} (51%) rename lib/{cmd-login.js => cmd-login.ts} (70%) rename lib/{cmd-remove.js => cmd-remove.ts} (78%) rename lib/{cmd-search.js => cmd-search.ts} (54%) rename lib/{cmd-view.js => cmd-view.ts} (83%) rename lib/{core.js => core.ts} (71%) delete mode 100644 lib/error-handler.js create mode 100644 lib/error-handler.ts delete mode 100644 lib/logger.js create mode 100644 lib/logger.ts create mode 100644 lib/types.ts delete mode 100644 lib/utils/process.js create mode 100644 lib/utils/process.ts diff --git a/bin/openupm b/bin/openupm index b465f9fa..148b0b2a 100755 --- a/bin/openupm +++ b/bin/openupm @@ -1,3 +1,3 @@ #!/usr/bin/env node -require("../lib/cli"); +require("../build/lib/cli"); diff --git a/bin/openupm-cn b/bin/openupm-cn index 9d08b384..a8f5aef5 100755 --- a/bin/openupm-cn +++ b/bin/openupm-cn @@ -1,4 +1,4 @@ #!/usr/bin/env node if (!process.argv.includes("--cn")) process.argv.push("--cn"); -require("../lib/cli"); +require("../build/lib/cli"); diff --git a/lib/cli.js b/lib/cli.ts similarity index 76% rename from lib/cli.js rename to lib/cli.ts index ab3d0886..87f5db70 100644 --- a/lib/cli.js +++ b/lib/cli.ts @@ -1,16 +1,20 @@ -const program = require("commander"); -const add = require("./cmd-add"); -const remove = require("./cmd-remove"); -const search = require("./cmd-search"); -const view = require("./cmd-view"); -const deps = require("./cmd-deps"); -const { login } = require("./cmd-login"); -const { log } = require("./logger"); -require("pkginfo")(module); +import { program } from "commander"; +import pkginfo from "pkginfo"; +import updateNotifier from "update-notifier"; +import { add } from "./cmd-add"; +import { remove } from "./cmd-remove"; +import { search } from "./cmd-search"; +import { view } from "./cmd-view"; +import { deps } from "./cmd-deps"; +import { login } from "./cmd-login"; + +import log from "./logger"; // update-notifier -const updateNotifier = require("update-notifier"); -const pkg = require("../package.json"); + +import pkg from "../package.json"; + +pkginfo(module); const notifier = updateNotifier({ pkg }); notifier.notify(); @@ -39,7 +43,7 @@ openupm add [otherPkgs...] openupm add @ [otherPkgs...]` ) .action(async function (pkg, otherPkgs, options) { - options._global = program.opts() + options._global = program.opts(); const pkgs = [pkg].concat(otherPkgs); const retCode = await add(pkgs, options); if (retCode) process.exit(retCode); @@ -49,8 +53,8 @@ program .command("remove [otherPkgs...]") .aliases(["rm", "uninstall"]) .description("remove package from manifest json") - .action(async function(pkg, otherPkgs, options) { - options._global = program.opts() + .action(async function (pkg, otherPkgs, options) { + options._global = program.opts(); const pkgs = [pkg].concat(otherPkgs); const retCode = await remove(pkgs, options); if (retCode) process.exit(retCode); @@ -60,8 +64,8 @@ program .command("search ") .aliases(["s", "se", "find"]) .description("Search package by keyword") - .action(async function(keyword, options) { - options._global = program.opts() + .action(async function (keyword, options) { + options._global = program.opts(); const retCode = await search(keyword, options); if (retCode) process.exit(retCode); }); @@ -70,8 +74,8 @@ program .command("view ") .aliases(["v", "info", "show"]) .description("view package information") - .action(async function(pkg, options) { - options._global = program.opts() + .action(async function (pkg, options) { + options._global = program.opts(); const retCode = await view(pkg, options); if (retCode) process.exit(retCode); }); @@ -85,8 +89,8 @@ program openupm deps openupm deps @` ) - .action(async function(pkg, options) { - options._global = program.opts() + .action(async function (pkg, options) { + options._global = program.opts(); const retCode = await deps(pkg, options); if (retCode) process.exit(retCode); }); @@ -104,19 +108,20 @@ program "always auth for tarball hosted on a different domain" ) .description("authenticate with a scoped registry") - .action(async function(options) { - options._global = program.opts() + .action(async function (options) { + options._global = program.opts(); try { const retCode = await login(options); if (retCode) process.exit(retCode); } catch (err) { + // @ts-ignore log.error("", err.message); process.exit(1); } }); // prompt for invalid command -program.on("command:*", function() { +program.on("command:*", function () { log.warn("", `unknown command: ${program.args.join(" ")}`); log.warn("", "see --help for a list of available commands"); process.exit(1); diff --git a/lib/client.js b/lib/client.ts similarity index 59% rename from lib/client.js rename to lib/client.ts index 61bcda47..55a356ea 100644 --- a/lib/client.js +++ b/lib/client.ts @@ -1,12 +1,14 @@ -const { promisify } = require("util"); -const RegClient = require("another-npm-registry-client"); +import {promisify} from "util"; + +// @ts-ignore +import RegClient from "another-npm-registry-client"; +import log from "./logger"; -const { log } = require("./logger"); /** * Return npm client */ -const getNpmClient = function() { +export const getNpmClient = function() { // create client const client = new RegClient({ log }); return { @@ -17,7 +19,3 @@ const getNpmClient = function() { adduser: promisify(client.adduser.bind(client)) }; }; - -module.exports = { - getNpmClient -}; diff --git a/lib/cmd-add.js b/lib/cmd-add.ts similarity index 83% rename from lib/cmd-add.js rename to lib/cmd-add.ts index 272e1ff2..94ab4283 100644 --- a/lib/cmd-add.js +++ b/lib/cmd-add.ts @@ -1,6 +1,6 @@ -const { log } = require("./logger"); -const url = require("url"); -const { +import log from "./logger"; +import url from "url"; +import { compareEditorVersion, env, fetchPackageDependencies, @@ -10,10 +10,20 @@ const { parseEditorVersion, parseEnv, parseName, - saveManifest -} = require("./core"); + saveManifest, +} from "./core"; +import { GlobalOptions, Pkg, PkgName, ScopedRegistry } from "./types"; -const add = async function(pkgs, options) { +export type AddOptions = { + test: boolean; + force: boolean; + _global: GlobalOptions; +}; + +export const add = async function ( + pkgs: Pkg | Pkg[], + options: AddOptions +): Promise { if (!Array.isArray(pkgs)) pkgs = [pkgs]; // parse env const envOk = await parseEnv(options, { checkPath: true }); @@ -25,8 +35,8 @@ const add = async function(pkgs, options) { await _add({ pkg, testables: options.test, force: options.force }) ); const result = { - code: results.filter(x => x.code != 0).length > 0 ? 1 : 0, - dirty: results.filter(x => x.dirty).length > 0 + code: results.filter((x) => x.code != 0).length > 0 ? 1 : 0, + dirty: results.filter((x) => x.dirty).length > 0, }; // print manifest notice if (result.dirty) @@ -34,7 +44,15 @@ const add = async function(pkgs, options) { return result.code; }; -const _add = async function({ pkg, testables, force }) { +const _add = async function ({ + pkg, + testables, + force, +}: { + pkg: Pkg; + testables: boolean; + force: boolean; +}) { // dirty flag let dirty = false; // is upstream package flag @@ -49,7 +67,7 @@ const _add = async function({ pkg, testables, force }) { manifest.dependencies = {}; } // packages that added to scope registry - const pkgsInScope = []; + const pkgsInScope: PkgName[] = []; const isGitOrLocal = version && (version.startsWith("git") || @@ -70,7 +88,7 @@ const _add = async function({ pkg, testables, force }) { const versions = Object.keys(pkgInfo.versions); // eslint-disable-next-line require-atomic-updates if (!version || version == "latest") version = getLatestVersion(pkgInfo); - if (versions.filter(x => x == version).length <= 0) { + if (versions.filter((x) => x == version).length <= 0) { log.warn( "404", `version ${version} is not a valid choice of: ${versions @@ -79,6 +97,7 @@ const _add = async function({ pkg, testables, force }) { ); return { code: 1, dirty }; } + const versionInfo = pkgInfo.versions[version]; // verify editor version if (versionInfo.unity) { @@ -130,16 +149,18 @@ const _add = async function({ pkg, testables, force }) { const [depsValid, depsInvalid] = await fetchPackageDependencies({ name, version, - deep: true + deep: true, }); // add depsValid to pkgsInScope. depsValid - .filter(x => !x.upstream && !x.internal) - .map(x => x.name) - .forEach(name => pkgsInScope.push(name)); + .filter((x) => !x.upstream && !x.internal) + .map((x) => x.name) + .forEach((name) => pkgsInScope.push(name)); // print suggestion for depsInvalid - depsInvalid.forEach(depObj => { + depsInvalid.forEach((depObj) => { if (depObj.reason == "package404" || depObj.reason == "version404") { + // TODO: Do null check on manifest + // @ts-ignore const resolvedVersion = manifest.dependencies[depObj.name]; depObj.resolved = Boolean(resolvedVersion); if (!depObj.resolved) @@ -149,7 +170,7 @@ const _add = async function({ pkg, testables, force }) { ); } }); - if (depsInvalid.filter(x => !x.resolved).length > 0) { + if (depsInvalid.filter((x) => !x.resolved).length > 0) { if (!force) { log.error( "missing dependencies", @@ -162,6 +183,8 @@ const _add = async function({ pkg, testables, force }) { } // add to dependencies const oldVersion = manifest.dependencies[name]; + // TODO: Do undefined check on version + // @ts-ignore manifest.dependencies[name] = version; if (!oldVersion) { // Log the added package @@ -181,16 +204,18 @@ const _add = async function({ pkg, testables, force }) { manifest.scopedRegistries = []; dirty = true; } - const filterEntry = x => { + const filterEntry = (x: ScopedRegistry): boolean => { let addr = x.url || ""; if (addr.endsWith("/")) addr = addr.slice(0, -1); return addr == env.registry; }; if (manifest.scopedRegistries.filter(filterEntry).length <= 0) { manifest.scopedRegistries.push({ + // TODO: Handle null name + // @ts-ignore name: url.parse(env.registry).hostname, url: env.registry, - scopes: [] + scopes: [], }); dirty = true; } @@ -198,7 +223,7 @@ const _add = async function({ pkg, testables, force }) { // apply pkgsInScope let scopesSet = new Set(entry.scopes || []); pkgsInScope.push(env.namespace); - pkgsInScope.forEach(name => { + pkgsInScope.forEach((name) => { if (!scopesSet.has(name)) { scopesSet.add(name); dirty = true; @@ -220,5 +245,3 @@ const _add = async function({ pkg, testables, force }) { } return { code: 0, dirty }; }; - -module.exports = add; diff --git a/lib/cmd-deps.js b/lib/cmd-deps.ts similarity index 51% rename from lib/cmd-deps.js rename to lib/cmd-deps.ts index ff1f4e58..47f39aba 100644 --- a/lib/cmd-deps.js +++ b/lib/cmd-deps.ts @@ -1,7 +1,13 @@ -const { log } = require("./logger"); -const { fetchPackageDependencies, parseEnv, parseName } = require("./core"); +import log from "./logger"; +import { fetchPackageDependencies, parseEnv, parseName } from "./core"; +import { GlobalOptions, Pkg, PkgName, PkgVersionName } from "./types"; -const deps = async function(pkg, options) { +export type DepsOptions = { + deep: boolean; + _global: GlobalOptions; +}; + +export const deps = async function (pkg: Pkg, options: DepsOptions) { // parse env const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; @@ -12,24 +18,30 @@ const deps = async function(pkg, options) { return 0; }; -const _deps = async function({ name, version, deep }) { +const _deps = async function ({ + name, + version, + deep, +}: { + name: PkgName; + version: PkgVersionName; + deep: boolean; +}) { // eslint-disable-next-line no-unused-vars const [depsValid, depsInvalid] = await fetchPackageDependencies({ name, version, - deep + deep, }); depsValid - .filter(x => !x.self) - .forEach(x => log.notice("dependency", `${x.name}@${x.version}`)); + .filter((x) => !x.self) + .forEach((x) => log.notice("dependency", `${x.name}@${x.version}`)); depsInvalid - .filter(x => !x.self) - .forEach(x => { + .filter((x) => !x.self) + .forEach((x) => { let reason = "unknown"; if (x.reason == "package404") reason = "missing dependency"; else if (x.reason == "version404") reason = "missing dependency version"; log.warn(reason, `${x.name}@${x.version}`); }); }; - -module.exports = deps; diff --git a/lib/cmd-login.js b/lib/cmd-login.ts similarity index 70% rename from lib/cmd-login.js rename to lib/cmd-login.ts index 6b839c32..bdc55db2 100644 --- a/lib/cmd-login.js +++ b/lib/cmd-login.ts @@ -1,19 +1,29 @@ -const fs = require("fs"); -const path = require("path"); +import fs from "fs"; +import path from "path"; +import _ from "lodash"; +import promptly from "promptly"; +import { getNpmClient } from "./client"; -const _ = require("lodash"); -const promptly = require("promptly"); +import log from "./logger"; -const { getNpmClient } = require("./client"); -const { log } = require("./logger"); -const { +import { getUpmConfigDir, loadUpmConfig, + parseEnv, saveUpmConfig, - parseEnv -} = require("./core"); +} from "./core"; +import { GlobalOptions, Registry } from "./types"; -const login = async function(options) { +export type LoginOptions = { + username?: string; + password?: string; + email?: string; + basicAuth?: boolean; + alwaysAuth?: boolean; + _global: GlobalOptions; +}; + +export const login = async function (options: LoginOptions) { // parse env const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; @@ -24,7 +34,7 @@ const login = async function(options) { if (!options.email) options.email = await promptly.prompt("Email: "); if (!options._global.registry) options._global.registry = await promptly.prompt("Registry: ", { - validator: [validateRegistry] + validator: [validateRegistry], }); let token = null; let _auth = null; @@ -38,7 +48,7 @@ const login = async function(options) { username: options.username, password: options.password, email: options.email, - registry: options._global.registry + registry: options._global.registry, }); if (result.code == 1) return result.code; if (!result.token) { @@ -49,7 +59,7 @@ const login = async function(options) { // write npm token await writeNpmToken({ registry: options._global.registry, - token: result.token + token: result.token, }); } // write unity token @@ -59,7 +69,7 @@ const login = async function(options) { basicAuth: options.basicAuth || false, email: options.email, registry: options._global.registry, - token + token, }); }; @@ -67,15 +77,25 @@ const login = async function(options) { * Return npm login token * @param {*} param0 */ -const npmLogin = async function({ username, password, email, registry }) { +const npmLogin = async function ({ + username, + password, + email, + registry, +}: { + username: string; + password: string; + email: string; + registry: Registry; +}) { const client = getNpmClient(); try { const data = await client.adduser(registry, { auth: { username, password, - email - } + email, + }, }); if (_.isString(data.ok)) log.notice("auth", data.ok); else if (data.ok) @@ -83,10 +103,13 @@ const npmLogin = async function({ username, password, email, registry }) { const token = data.token; return { code: 0, token }; } catch (err) { + // TODO: Type-check error + // @ts-ignore if (err.statusCode == 401 || err.code == "EAUTHUNKNOWN") { log.warn("401", "Incorrect username or password"); return { code: 1 }; } else { + // @ts-ignore log.error(err.statusCode ? err.statusCode.toString() : "", err.message); return { code: 1 }; } @@ -97,7 +120,13 @@ const npmLogin = async function({ username, password, email, registry }) { * Write npm token to .npmrc * @param {*} param0 */ -const writeNpmToken = async function({ registry, token }) { +const writeNpmToken = async function ({ + registry, + token, +}: { + registry: Registry; + token: string; +}) { const configPath = getNpmrcPath(); // read config let content = ""; @@ -114,10 +143,12 @@ const writeNpmToken = async function({ registry, token }) { /** * Return .npmrc config file path */ -const getNpmrcPath = function() { +export const getNpmrcPath = function () { const dirPath = process.env.USERPROFILE ? process.env.USERPROFILE : process.env.HOME; + // TODO: Handle undefined + // @ts-ignore const configPath = path.join(dirPath, ".npmrc"); return configPath; }; @@ -128,29 +159,38 @@ const getNpmrcPath = function() { * @param {*} registry * @param {*} token */ -const generateNpmrcLines = function(content, registry, token) { +export const generateNpmrcLines = function ( + content: string, + registry: Registry, + token: string +) { let lines = content ? content.split("\n") : []; const quotes = /(\?|=)/.test(token) ? '"' : ""; // get the registry url without http protocal + // TODO: Investigate extra quotes + // @ts-ignore let registryUrl = registry.slice(registry.search(/:\/\//, "") + 1); // add trailing slash if (!registryUrl.endsWith("/")) registryUrl = registryUrl + "/"; - const index = _.findIndex(lines, function(element, index, array) { + const index = _.findIndex(lines, function (element, index, array) { if (element.indexOf(registryUrl + ":_authToken=") !== -1) { // If an entry for the auth token is found, replace it + // TODO: Investigate error + // @ts-ignore array[index] = element.replace( /authToken=.*/, "authToken=" + quotes + token + quotes ); return true; } + return false; }); // If no entry for the auth token is found, add one if (index === -1) { lines.push(registryUrl + ":_authToken=" + quotes + token + quotes); } // Remove empty lines - lines = lines.filter(l => l); + lines = lines.filter((l) => l); return lines; }; @@ -158,7 +198,7 @@ const generateNpmrcLines = function(content, registry, token) { * http protocal validator * @param {*} value */ -const validateRegistry = function(value) { +export const validateRegistry = function (value: Registry): Registry { if (!/http(s?):\/\//.test(value)) throw new Error("The registry address should starts with http(s)://"); return value; @@ -168,13 +208,20 @@ const validateRegistry = function(value) { * Write npm token to Unity * @param {*} param0 */ -const writeUnityToken = async function({ +const writeUnityToken = async function ({ _auth, alwaysAuth, basicAuth, email, registry, - token + token, +}: { + _auth: unknown; + alwaysAuth: boolean; + basicAuth: boolean; + email: string; + registry: Registry; + token: string; }) { // Create config dir if necessary const configDir = await getUpmConfigDir(); @@ -183,21 +230,21 @@ const writeUnityToken = async function({ if (!config.npmAuth) config.npmAuth = {}; // Remove ending slash of registry if (registry.endsWith("/")) registry = registry.replace(/\/$/, ""); + + // TODO: Investigate ts warnings // Update config file + // @ts-ignore config["npmAuth"][registry] = { email, - alwaysAuth + alwaysAuth, }; - if (basicAuth) config["npmAuth"][registry]._auth = _auth; - else config["npmAuth"][registry].token = token; + if (basicAuth) { + // @ts-ignore + config["npmAuth"][registry]._auth = _auth; + } else { + // @ts-ignore + config["npmAuth"][registry].token = token; + } // Write config file await saveUpmConfig(config, configDir); }; - -module.exports = { - generateNpmrcLines, - getNpmrcPath, - login, - npmLogin, - validateRegistry -}; diff --git a/lib/cmd-remove.js b/lib/cmd-remove.ts similarity index 78% rename from lib/cmd-remove.js rename to lib/cmd-remove.ts index 451bbebf..ac1372bb 100644 --- a/lib/cmd-remove.js +++ b/lib/cmd-remove.ts @@ -1,13 +1,15 @@ -const { log } = require("./logger"); -const { - env, - loadManifest, - parseEnv, - parseName, - saveManifest -} = require("./core"); +import log from "./logger"; +import { env, loadManifest, parseEnv, parseName, saveManifest } from "./core"; +import { GlobalOptions, Pkg, ScopedRegistry } from "./types"; -const remove = async function(pkgs, options) { +export type RemoveOptions = { + _global: GlobalOptions; +}; + +export const remove = async function ( + pkgs: Pkg[] | Pkg, + options: RemoveOptions +) { if (!Array.isArray(pkgs)) pkgs = [pkgs]; // parse env const envOk = await parseEnv(options, { checkPath: true }); @@ -16,8 +18,8 @@ const remove = async function(pkgs, options) { const results = []; for (const pkg of pkgs) results.push(await _remove(pkg)); const result = { - code: results.filter(x => x.code != 0).length > 0 ? 1 : 0, - dirty: results.filter(x => x.dirty).length > 0 + code: results.filter((x) => x.code != 0).length > 0 ? 1 : 0, + dirty: results.filter((x) => x.dirty).length > 0, }; // print manifest notice if (result.dirty) @@ -25,7 +27,7 @@ const remove = async function(pkgs, options) { return result.code; }; -const _remove = async function(pkg) { +const _remove = async function (pkg: Pkg) { // dirty flag let dirty = false; // parse name @@ -50,7 +52,7 @@ const _remove = async function(pkg) { } // remove from scopedRegistries if (manifest.scopedRegistries) { - const filterEntry = x => { + const filterEntry = (x: ScopedRegistry) => { let url = x.url || ""; if (url.endsWith("/")) url = url.slice(0, -1); return url == env.registry; @@ -78,5 +80,3 @@ const _remove = async function(pkg) { } return { code: 0, dirty }; }; - -module.exports = remove; diff --git a/lib/cmd-search.js b/lib/cmd-search.ts similarity index 54% rename from lib/cmd-search.js rename to lib/cmd-search.ts index 6dde44a9..ec3a09ad 100644 --- a/lib/cmd-search.js +++ b/lib/cmd-search.ts @@ -1,34 +1,58 @@ -const npmSearch = require("libnpmsearch"); -const npmFetch = require("npm-registry-fetch"); -const Table = require("cli-table"); +import npmSearch from "libnpmsearch"; +import npmFetch from "npm-registry-fetch"; +import Table from "cli-table"; +import log from "./logger"; -const { log } = require("./logger"); -const { - env, - getLatestVersion, - getNpmFetchOptions, - parseEnv -} = require("./core"); -const { isConnectionError, is404Error } = require("./error-handler"); +import { env, getLatestVersion, getNpmFetchOptions, parseEnv } from "./core"; -const searchEndpoint = async function (keyword, registry) { +import { is404Error } from "./error-handler"; +import { + GlobalOptions, + PkgInfo, + PkgName, + PkgVersionName, + Registry, +} from "./types"; + +type TableRow = [PkgName, PkgVersionName, string, ""]; + +export type SearchOptions = { + _global: GlobalOptions; +}; + +const searchEndpoint = async function ( + keyword: string, + registry?: Registry +): Promise { if (!registry) registry = env.registry; try { const results = await npmSearch(keyword, getNpmFetchOptions()); + // TODO: This should be converted to a string + // @ts-ignore log.verbose("npmsearch", results); + // TODO: Fix type error + // @ts-ignore return results.map(getTableRow); } catch (err) { - if (!is404Error(err)) log.error("", err.message); + if (!is404Error(err)) { + // TODO: Type check error + // @ts-ignore + log.error("", err.message); + } log.warn("", "fast search endpoint is not available, using old search."); } }; -const searchOld = async function (keyword) { +const searchOld = async function ( + keyword: string +): Promise { // all endpoint try { const results = await npmFetch.json("/-/all", getNpmFetchOptions()); + // TODO: This should be converted to a string + // @ts-ignore log.verbose("endpoint.all", results); - let objects = []; + let objects: PkgInfo[] = []; if (results) { if (Array.isArray(results)) { // results is an array of objects @@ -36,20 +60,26 @@ const searchOld = async function (keyword) { } else { // results is an object if ("_updated" in results) delete results["_updated"]; + // TODO: Do better type checking + // @ts-ignore objects = Object.values(results); } } // prepare rows - const rows = objects.map(pkg => { + const rows = objects.map((pkg) => { return getTableRow(pkg); }); // filter keyword const klc = keyword.toLowerCase(); return rows.filter( - row => row.filter(x => x.toLowerCase().includes(klc)).length > 0 + (row) => row.filter((x) => x.toLowerCase().includes(klc)).length > 0 ); } catch (err) { - if (!is404Error(err)) log.error("", err.message); + if (!is404Error(err)) { + // TODO: Type-check error + // @ts-ignore + log.error("", err.message); + } log.warn("", "/-/all endpoint is not available"); } }; @@ -57,24 +87,23 @@ const searchOld = async function (keyword) { const getTable = function () { var table = new Table({ head: ["Name", "Version", "Date"], - colWidths: [42, 20, 12] + colWidths: [42, 20, 12], }); return table; }; -const getTableRow = function (pkg) { +const getTableRow = function (pkg: PkgInfo): TableRow { const name = pkg.name; const version = getLatestVersion(pkg); let date = ""; if (pkg.time && pkg.time.modified) date = pkg.time.modified.split("T")[0]; if (pkg.date) { - date = pkg.date.toISOString().slice(0, 10) + date = pkg.date.toISOString().slice(0, 10); } - const row = [name, version, date, ""]; - return row -} + return [name, version, date, ""]; +}; -module.exports = async function (keyword, options) { +export async function search(keyword: string, options: SearchOptions) { // parse env const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; @@ -92,8 +121,8 @@ module.exports = async function (keyword, options) { // results.push(...upstreamResults); // } if (results && results.length) { - results.forEach(x => table.push(x.slice(0, -1))); + results.forEach((x) => table.push(x.slice(0, -1))); console.log(table.toString()); } else log.notice("", `No matches found for "${keyword}"`); return 0; -}; +} diff --git a/lib/cmd-view.js b/lib/cmd-view.ts similarity index 83% rename from lib/cmd-view.js rename to lib/cmd-view.ts index bb0a191b..80c98ef7 100644 --- a/lib/cmd-view.js +++ b/lib/cmd-view.ts @@ -1,15 +1,20 @@ -const chalk = require("chalk"); +import chalk from "chalk"; +import log from "./logger"; -const { log } = require("./logger"); -const { +import { env, fetchPackageInfo, getLatestVersion, parseEnv, - parseName -} = require("./core"); + parseName, +} from "./core"; +import { GlobalOptions, Pkg, PkgInfo } from "./types"; -const view = async function(pkg, options) { +export type ViewOptions = { + _global: GlobalOptions; +}; + +export const view = async function (pkg: Pkg, options: ViewOptions) { // parse env const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; @@ -32,7 +37,7 @@ const view = async function(pkg, options) { return 0; }; -const printInfo = function(pkg) { +const printInfo = function (pkg: PkgInfo) { const versionCount = Object.keys(pkg.versions).length; const ver = getLatestVersion(pkg); const verInfo = pkg.versions[ver]; @@ -45,7 +50,7 @@ const printInfo = function(pkg) { const dependencies = verInfo.dependencies; const latest = pkg["dist-tags"].latest; let time = pkg.time.modified; - if (!time && latest in pkg.time) time = pkg.time[latest]; + if (!time && latest && latest in pkg.time) time = pkg.time[latest]; console.log(); console.log( @@ -78,7 +83,7 @@ const printInfo = function(pkg) { console.log("dependencies"); Object.keys(dependencies) .sort() - .forEach(n => console.log(chalk.yellow(n) + ` ${dependencies[n]}`)); + .forEach((n) => console.log(chalk.yellow(n) + ` ${dependencies[n]}`)); } console.log(); @@ -93,5 +98,3 @@ const printInfo = function(pkg) { console.log(" " + chalk.greenBright(version)); } }; - -module.exports = view; diff --git a/lib/core.js b/lib/core.ts similarity index 71% rename from lib/core.js rename to lib/core.ts index 71861077..79159fbc 100644 --- a/lib/core.js +++ b/lib/core.ts @@ -1,24 +1,41 @@ -const fs = require("fs"); -const os = require("os"); -const path = require("path"); -const url = require("url"); +import fs from "fs"; +import path from "path"; +import url from "url"; +import _ from "lodash"; +import chalk from "chalk"; +// @ts-ignore +import mkdirp from "mkdirp"; +import net from "node:net"; +import isWsl from "is-wsl"; +import TOML from "@iarna/toml"; +import yaml from "yaml"; +import execute from "./utils/process"; +import { getNpmClient } from "./client"; +import log from "./logger"; +import { + Dependency, + Env, + GlobalOptions, + NameVersionPair, + NpmFetchOptions, + Pkg, + PkgInfo, + PkgManifest, + PkgName, + PkgVersionName, + Registry, + SemanticVersion, + UPMConfig, +} from "./types"; -const _ = require("lodash"); -const chalk = require("chalk"); -const mkdirp = require("mkdirp"); -const net = require('node:net'); -const isWsl = require("is-wsl"); -const TOML = require("@iarna/toml"); -const yaml = require("yaml"); - -const { execute } = require("./utils/process"); -const { getNpmClient } = require("./client"); -const { log } = require("./logger"); - -const env = {}; +// @ts-ignore +export const env: Env = {}; // Parse env -const parseEnv = async function(options, { checkPath }) { +export const parseEnv = async function ( + options: { _global: GlobalOptions } & Record, + { checkPath }: { checkPath: unknown } +) { // set defaults env.registry = "https://package.openupm.com"; env.namespace = "com.openupm"; @@ -60,14 +77,10 @@ const parseEnv = async function(options, { checkPath }) { registry = "http://" + registry; if (registry.endsWith("/")) registry = registry.slice(0, -1); env.registry = registry; - const hostname = url.parse(registry).hostname; + // TODO: Check hostname for null + const hostname = url.parse(registry).hostname as string; if (net.isIP(hostname)) env.namespace = hostname; - else - env.namespace = hostname - .split(".") - .reverse() - .slice(0, 2) - .join("."); + else env.namespace = hostname.split(".").reverse().slice(0, 2).join("."); } // auth if (options._global.systemUser) env.systemUser = true; @@ -78,12 +91,14 @@ const parseEnv = async function(options, { checkPath }) { if (env.npmAuth) { for (const reg in env.npmAuth) { const regAuth = env.npmAuth[reg]; - if (regAuth.token) { + if ("token" in regAuth) { env.auth[reg] = { token: regAuth.token, - alwaysAuth: regAuth.alwaysAuth || false + alwaysAuth: regAuth.alwaysAuth || false, }; - } else if (regAuth._auth) { + } else if ("_auth" in regAuth) { + // NOTE: We can rule out undefined because of the if + // @ts-ignore const buf = Buffer.from(regAuth._auth, "base64"); const text = buf.toString("utf-8"); const [username, password] = text.split(":", 2); @@ -91,13 +106,15 @@ const parseEnv = async function(options, { checkPath }) { username, password: Buffer.from(password).toString("base64"), email: regAuth.email, - alwaysAuth: regAuth.alwaysAuth || false + alwaysAuth: regAuth.alwaysAuth || false, }; } else { log.warn( "env.auth", `failed to parse auth info for ${reg} in .upmconfig.toml: missing token or _auth fields` ); + // TODO: Convert to string + // @ts-ignore log.warn("env.auth", regAuth); } } @@ -145,19 +162,24 @@ const parseEnv = async function(options, { checkPath }) { }; // Parse name to {name, version} -const parseName = function(pkg) { +export const parseName = function (pkg: Pkg): { + name: PkgName; + version: PkgVersionName; +} { const segs = pkg.split("@"); const name = segs[0]; const version = segs.length > 1 ? segs.slice(1, segs.length).join("@") : undefined; + // TODO: Handle version undefined + // @ts-ignore return { name, version }; }; // Get npm fetch options -const getNpmFetchOptions = function() { - const opts = { +export const getNpmFetchOptions = function (): NpmFetchOptions { + const opts: NpmFetchOptions = { log, - registry: env.registry + registry: env.registry, }; const auth = env.auth[env.registry]; if (auth) { @@ -171,7 +193,10 @@ const getNpmFetchOptions = function() { }; // Fetch package info json from registry -const fetchPackageInfo = async function(name, registry) { +export const fetchPackageInfo = async function ( + name: PkgName, + registry?: Registry +): Promise { if (!registry) registry = env.registry; const pkgPath = `${registry}/${name}`; const client = getNpmClient(); @@ -193,10 +218,18 @@ const fetchPackageInfo = async function(name, registry) { }, ... ] */ -const fetchPackageDependencies = async function({ name, version, deep }) { +export const fetchPackageDependencies = async function ({ + name, + version, + deep, +}: { + name: PkgName; + version: PkgVersionName; + deep: boolean; +}): Promise<[Dependency[], Dependency[]]> { log.verbose("dependency", `fetch: ${name}@${version} deep=${deep}`); // a list of pending dependency {name, version} - const pendingList = [{ name, version }]; + const pendingList: NameVersionPair[] = [{ name, version }]; // a list of processed dependency {name, version} const processedList = []; // a list of dependency entry exists on the registry @@ -204,32 +237,36 @@ const fetchPackageDependencies = async function({ name, version, deep }) { // a list of dependency entry doesn't exist on the registry const depsInvalid = []; // cached dict: {pkg-name: pkgInfo} - const cachedPacakgeInfoDict = {}; + const cachedPacakgeInfoDict: Record< + PkgVersionName, + { pkgInfo: PkgInfo; upstream: boolean } + > = {}; while (pendingList.length > 0) { - const entry = pendingList.shift(); - if (processedList.find(x => _.isEqual(x, entry)) === undefined) { + // NOTE: Guaranteed defined because of while loop logic + const entry = pendingList.shift() as NameVersionPair; + if (processedList.find((x) => _.isEqual(x, entry)) === undefined) { // add entry to processed list processedList.push(entry); // create valid depedenency structure - const depObj = { + const depObj: Dependency = { ...entry, internal: isInternalPackage(entry.name), upstream: false, self: entry.name == name, - reason: null + reason: null, }; if (!depObj.internal) { // try fetching package info from cache let { pkgInfo, upstream } = _.get(cachedPacakgeInfoDict, entry.name, { pkgInfo: null, - upstream: false + upstream: false, }); - if (pkgInfo) { + if (pkgInfo !== null) { depObj.upstream = upstream; } // try fetching package info from the default registry - if (!pkgInfo) { - pkgInfo = await fetchPackageInfo(entry.name); + if (pkgInfo === null) { + pkgInfo = (await fetchPackageInfo(entry.name)) ?? null; if (pkgInfo) { depObj.upstream = false; cachedPacakgeInfoDict[entry.name] = { pkgInfo, upstream: false }; @@ -237,7 +274,8 @@ const fetchPackageDependencies = async function({ name, version, deep }) { } // try fetching package info from the upstream registry if (!pkgInfo) { - pkgInfo = await fetchPackageInfo(entry.name, env.upstreamRegistry); + pkgInfo = + (await fetchPackageInfo(entry.name, env.upstreamRegistry)) ?? null; if (pkgInfo) { depObj.upstream = true; cachedPacakgeInfoDict[entry.name] = { pkgInfo, upstream: true }; @@ -257,7 +295,7 @@ const fetchPackageDependencies = async function({ name, version, deep }) { depObj.version = entry.version = getLatestVersion(pkgInfo); } // handle version not exist - if (!versions.find(x => x == entry.version)) { + if (!versions.find((x) => x == entry.version)) { log.warn( "404", `package ${entry.name}@${ @@ -273,12 +311,12 @@ const fetchPackageDependencies = async function({ name, version, deep }) { } // add dependencies to pending list if (depObj.self || deep) { - const deps = _.toPairs( + const deps: NameVersionPair[] = _.toPairs( pkgInfo.versions[entry.version]["dependencies"] - ).map(x => { + ).map((x: [PkgName, PkgVersionName]): NameVersionPair => { return { name: x[0], version: x[1] }; }); - deps.forEach(x => pendingList.push(x)); + deps.forEach((x) => pendingList.push(x)); } } depsValid.push(depObj); @@ -294,23 +332,30 @@ const fetchPackageDependencies = async function({ name, version, deep }) { }; // Get latest version from package info -const getLatestVersion = function(pkgInfo) { +// @ts-ignore +export const getLatestVersion = function (pkgInfo: PkgInfo): PkgVersionName { if (pkgInfo["dist-tags"] && pkgInfo["dist-tags"]["latest"]) return pkgInfo["dist-tags"]["latest"]; - else if (pkgInfo.versions) + else if (pkgInfo.versions) { + // @ts-ignore + // TODO: Handle undefined return Object.keys(pkgInfo.versions).find( - key => pkgInfo.versions[key] == "latest" + // TODO: Something is wrong here + // @ts-ignore + (key) => pkgInfo.versions[key] == "latest" ); - else if (pkgInfo.version) - return pkgInfo.version + } else if (pkgInfo.version) return pkgInfo.version; + // TODO: Not handling undefined case }; // Load manifest json file -const loadManifest = function() { +export const loadManifest = function (): PkgManifest | null { try { let text = fs.readFileSync(env.manifestPath, { encoding: "utf8" }); return JSON.parse(text); } catch (err) { + // TODO: Type error + // @ts-ignore if (err.code == "ENOENT") log.error("manifest", "file Packages/manifest.json does not exist"); else { @@ -318,6 +363,7 @@ const loadManifest = function() { "manifest", `failed to parse Packages/manifest.json at ${env.manifestPath}` ); + // @ts-ignore log.error("manifest", err.message); } return null; @@ -325,20 +371,22 @@ const loadManifest = function() { }; // Save manifest json file -const saveManifest = function(data) { +export const saveManifest = function (data: PkgManifest) { let json = JSON.stringify(data, null, 2); try { fs.writeFileSync(env.manifestPath, json); return true; } catch (err) { log.error("manifest", "can not write manifest json file"); + // @ts-ignore + // TODO: Type-check error log.error("manifest", err.message); return false; } }; // Get .upmconfig.toml directory -const getUpmConfigDir = async function() { +export const getUpmConfigDir = async function (): Promise { let dirPath = ""; const systemUserSubPath = "Unity/config/ServiceAccounts"; if (env.wsl) { @@ -353,10 +401,12 @@ const getUpmConfigDir = async function() { dirPath = path.join(allUserProfilePath, systemUserSubPath); } else { dirPath = await execute('wslpath "$(wslvar USERPROFILE)"', { - trim: true + trim: true, }); } } else { + // TODO: Handle undefined + // @ts-ignore dirPath = process.env.USERPROFILE ? process.env.USERPROFILE : process.env.HOME; @@ -371,18 +421,25 @@ const getUpmConfigDir = async function() { }; // Load .upmconfig.toml -const loadUpmConfig = async function(configDir) { +export const loadUpmConfig = async function ( + configDir?: string +): Promise { if (configDir === undefined) configDir = await getUpmConfigDir(); const configPath = path.join(configDir, ".upmconfig.toml"); if (fs.existsSync(configPath)) { const content = fs.readFileSync(configPath, "utf8"); const config = TOML.parse(content); - return config; + + // NOTE: We assume correct format + return config as UPMConfig; } }; // Save .upmconfig.toml -const saveUpmConfig = async function(config, configDir) { +export const saveUpmConfig = async function ( + config: UPMConfig, + configDir: string +) { if (configDir === undefined) configDir = await getUpmConfigDir(); mkdirp.sync(configDir); const configPath = path.join(configDir, ".upmconfig.toml"); @@ -392,19 +449,22 @@ const saveUpmConfig = async function(config, configDir) { }; // Compare unity editor version and return -1, 0, or 1. -const compareEditorVersion = function(a, b) { +export const compareEditorVersion = function (a: string, b: string) { const verA = parseEditorVersion(a); const verB = parseEditorVersion(b); - const editorVersionToArray = ver => [ + const editorVersionToArray = (ver: SemanticVersion) => [ ver.major, ver.minor, ver.patch || 0, ver.flagValue || 0, ver.build || 0, ver.locValue || 0, - ver.locBuild || 0 + ver.locBuild || 0, ]; + // TODO: Handle null + // @ts-ignore const arrA = editorVersionToArray(verA); + // @ts-ignore const arrB = editorVersionToArray(verB); for (let i = 0; i < arrA.length; i++) { const valA = arrA[i]; @@ -429,58 +489,61 @@ const compareEditorVersion = function(a, b) { * locValue: 1 * locBuild: 4 */ -const parseEditorVersion = function(version) { +export const parseEditorVersion = function ( + version: string +): SemanticVersion | null { if (!version) return null; - const regex = /^(?\d+)\.(?\d+)(\.(?\d+)((?a|b|f|c)(?\d+)((?c)(?\d+))?)?)?/; + const regex = + /^(?\d+)\.(?\d+)(\.(?\d+)((?a|b|f|c)(?\d+)((?c)(?\d+))?)?)?/; const match = regex.exec(version); if (!match) return null; const groups = match.groups; - const result = { + const result: SemanticVersion = { + // TODO: Check undefined + // @ts-ignore major: parseInt(groups.major), - minor: parseInt(groups.minor) + // @ts-ignore + minor: parseInt(groups.minor), }; + // TODO: Check undefined + // @ts-ignore if (groups.patch) result.patch = parseInt(groups.patch); + // TODO: Check undefined + // @ts-ignore if (groups.flag) { + // TODO: Do type checking + // @ts-ignore result.flag = groups.flag.toLowerCase(); if (result.flag == "a") result.flagValue = 0; if (result.flag == "b") result.flagValue = 1; if (result.flag == "f") result.flagValue = 2; + // TODO: Handle undefined + // @ts-ignore if (groups.build) result.build = parseInt(groups.build); } + + // TODO: Handle undefined + // @ts-ignore if (groups.loc) { + // TODO: Handle undefined + // @ts-ignore result.loc = groups.loc.toLowerCase(); if (result.loc == "c") result.locValue = 1; + // TODO: Handle undefined + // @ts-ignore if (groups.locBuild) result.locBuild = parseInt(groups.locBuild); } return result; }; // Detect if the given package name is an internal package -const isInternalPackage = function(name) { +export const isInternalPackage = function (name: PkgName): boolean { const internals = [ "com.unity.ugui", "com.unity.2d.sprite", "com.unity.2d.tilemap", "com.unity.package-manager-ui", - "com.unity.ugui" + "com.unity.ugui", ]; return /com.unity.modules/i.test(name) || internals.includes(name); }; - -module.exports = { - compareEditorVersion, - env, - fetchPackageDependencies, - fetchPackageInfo, - getLatestVersion, - getNpmFetchOptions, - getUpmConfigDir, - isInternalPackage, - loadManifest, - loadUpmConfig, - parseEnv, - parseName, - parseEditorVersion, - saveManifest, - saveUpmConfig -}; diff --git a/lib/error-handler.js b/lib/error-handler.js deleted file mode 100644 index ae24c716..00000000 --- a/lib/error-handler.js +++ /dev/null @@ -1,13 +0,0 @@ -const isConnectionError = function(err) { - return err.code == "ENOTFOUND"; -}; - -const is404Error = function(err) { - return (err.response && err.response.notFound) || err.message.includes("404"); -}; - -const is503Error = function(err) { - return err.response && err.status == 503; -}; - -module.exports = { isConnectionError, is404Error, is503Error }; diff --git a/lib/error-handler.ts b/lib/error-handler.ts new file mode 100644 index 00000000..e1476d02 --- /dev/null +++ b/lib/error-handler.ts @@ -0,0 +1,15 @@ +// TODO: Use better error types + +export const isConnectionError = function(err: any) { + return err.code == "ENOTFOUND"; +}; + +export const is404Error = function(err: any) { + return (err.response && err.response.notFound) || err.message.includes("404"); +}; + +const is503Error = function(err: any) { + return err.response && err.status == 503; +}; + +export default { isConnectionError, is404Error, is503Error }; diff --git a/lib/logger.js b/lib/logger.js deleted file mode 100644 index 1309641b..00000000 --- a/lib/logger.js +++ /dev/null @@ -1,8 +0,0 @@ -const npmlog = require("npmlog"); - -if (process.env.NODE_ENV == "test") { - npmlog.stream = process.stdout; - npmlog.disableColor(); -} - -module.exports = { log: npmlog }; diff --git a/lib/logger.ts b/lib/logger.ts new file mode 100644 index 00000000..92a13e8e --- /dev/null +++ b/lib/logger.ts @@ -0,0 +1,8 @@ +import npmlog from "npmlog"; + +if (process.env.NODE_ENV == "test") { + npmlog.stream = process.stdout; + npmlog.disableColor(); +} + +export default npmlog; diff --git a/lib/types.ts b/lib/types.ts new file mode 100644 index 00000000..c7624acf --- /dev/null +++ b/lib/types.ts @@ -0,0 +1,129 @@ +import { Logger } from "npmlog"; + +export type PkgName = string; + +export type PkgVersionName = string; + +export type Pkg = `${PkgName}@${PkgVersionName}`; + +export type Region = "us" | "cn"; + +export type Registry = string; + +export type SemanticVersion = { + major: number; + minor: number; + patch?: number; + flag?: "a" | "b" | "f"; + flagValue?: 0 | 1 | 2; + build?: number; + loc?: string; + locValue?: number; + locBuild?: number; +}; + +export type Auth = { + alwaysAuth?: boolean; + _auth?: string; + username?: string; + password?: string; + email?: string; + token?: string; +}; + +export type Env = { + cwd: string; + color: boolean; + systemUser: boolean; + wsl: boolean; + npmAuth?: Record; + auth: Record; + upstream: boolean; + upstreamRegistry: string; + registry: string; + namespace: string; + editorVersion: string | null; + region: Region; + manifestPath: string; +}; + +export type Dist = { + tarball: string; + shasum: string; + integrity: string; +}; + +export type PkgVersion = { + unity: string; + unityRelease: string; + dependencies: Record; + license?: string; + displayName: string; + description?: string; + keywords?: string[]; + homepage: string; + dist?: Dist; +}; + +export type PkgInfo = { + name: PkgName; + versions: Record; + "dist-tags": { latest?: PkgVersionName }; + version?: PkgVersionName; + description?: string; + keywords?: string[]; + time: Record<"created" | "modified" | PkgVersionName, string>; + date?: Date; +}; + +export type NameVersionPair = { + name: PkgName; + version: PkgVersionName; +}; + +export type Dependency = { + name: PkgName; + version: PkgVersionName; + upstream: boolean; + self: boolean; + internal: boolean; + reason: string | null; + resolved?: boolean; +}; + +export type ScopedRegistry = { + name: string; + url: string; + scopes: PkgName[]; +}; + +export type PkgManifest = { + dependencies: Record; + scopedRegistries: ScopedRegistry[]; + testables: string[]; +}; + +export type GlobalOptions = { + registry?: Registry; + verbose: boolean; + color: boolean; + upstream: boolean; + cn: boolean; + systemUser: boolean; + wsl: boolean; + chdir: string; +}; + +export type UPMConfig = { + npmAuth?: Record; +}; + +export type NpmFetchOptions = { + log: Logger; + registry: Registry; + alwaysAuth?: boolean; + email?: string; + password?: string; + token?: string; + username?: string; +}; diff --git a/lib/utils/process.js b/lib/utils/process.js deleted file mode 100644 index f1e91c1c..00000000 --- a/lib/utils/process.js +++ /dev/null @@ -1,35 +0,0 @@ -const childProcess = require("child_process"); - -/** - * @param {string} command A shell command to execute - * @return {Promise} A promise that resolve to the output of the shell command, or an error - * @example const output = await execute("ls -alh"); - */ -function execute(command, { trim }) { - /** - * @param {Function} resolve A function that resolves the promise - * @param {Function} reject A function that fails the promise - * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise - */ - return new Promise(function(resolve, reject) { - /** - * @param {Error} error An error triggered during the execution of the childProcess.exec command - * @param {string|Buffer} stdout The result of the shell command execution - * @param {string|Buffer} stderr The error resulting of the shell command execution - * @see https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback - */ - childProcess.exec(command, function(error, stdout, stderr) { - if (error) { - reject(); - return; - } - if (stderr) { - reject(stderr); - return; - } - resolve(trim ? stdout.trim() : stdout); - }); - }); -} - -module.exports = { execute }; diff --git a/lib/utils/process.ts b/lib/utils/process.ts new file mode 100644 index 00000000..c6212f07 --- /dev/null +++ b/lib/utils/process.ts @@ -0,0 +1,34 @@ +import childProcess from "child_process"; + +/** + * @param command A shell command to execute + * @return A promise that resolve to the output of the shell command, or an error + * @example const output = await execute("ls -alh"); + */ +export default function execute(command: string, {trim}: { trim: boolean }): Promise { + /** + * @param {Function} resolve A function that resolves the promise + * @param {Function} reject A function that fails the promise + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise + */ + return new Promise(function (resolve, reject) { + /** + * @param {Error} error An error triggered during the execution of the childProcess.exec command + * @param {string|Buffer} stdout The result of the shell command execution + * @param {string|Buffer} stderr The error resulting of the shell command execution + * @see https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback + */ + childProcess.exec(command, function (error, stdout, stderr) { + if (error) { + reject(); + return; + } + if (stderr) { + reject(stderr); + return; + } + resolve(trim ? stdout.trim() : stdout); + }); + }); +} + diff --git a/package-lock.json b/package-lock.json index 8e0a9d41..73052625 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,7 +36,14 @@ "@babel/eslint-parser": "^7.17.0", "@semantic-release/changelog": "^6.0.1", "@semantic-release/git": "^10.0.1", + "@types/cli-table": "^0.3.2", + "@types/libnpmsearch": "^2.0.4", + "@types/lodash": "^4.14.199", "@types/node": "^20.8.6", + "@types/npmlog": "^4.1.4", + "@types/pkginfo": "^0.4.1", + "@types/promptly": "^3.0.3", + "@types/update-notifier": "^6.0.5", "cross-env": "^7.0.3", "eslint": "^8.15.0", "eslint-config-prettier": "^8.5.0", @@ -45,7 +52,7 @@ "mocha": "^10.0.0", "nock": "^13.2.4", "prettier": "^2.6.2", - "semantic-release": "^19.0.2", + "semantic-release": "^19.0.3", "should": "^13.2.3", "test-console": "^2.0.0", "typescript": "^5.2.2" @@ -1024,6 +1031,34 @@ "node": ">= 10" } }, + "node_modules/@types/cli-table": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@types/cli-table/-/cli-table-0.3.2.tgz", + "integrity": "sha512-yEwKAYmZsgb59xHtNRXaQAloxrm5xr8CQcrYerYlPK+3nwhPk1VC3QFwuiCd/jVWFu2hm4uFiiWDCJQSKhkROQ==", + "dev": true + }, + "node_modules/@types/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@types/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-GUvNiia85zTDDIx0iPrtF3pI8dwrQkfuokEqxqPDE55qxH0U5SZz4awVZjiJLWN2ZZRkXCUqgsMUbygXY+kytA==", + "dev": true + }, + "node_modules/@types/libnpmsearch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/libnpmsearch/-/libnpmsearch-2.0.4.tgz", + "integrity": "sha512-2qlwrkVckDG+0AcMxr41hURNNZCJUhJ74/hkMjaW4/z5eT2zRYlTaSdUIjPnQYH2YTM0SSa1qKTcpO9g+zzlgw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/npm-registry-fetch": "*" + } + }, + "node_modules/@types/lodash": { + "version": "4.14.199", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz", + "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==", + "dev": true + }, "node_modules/@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -1039,24 +1074,274 @@ "undici-types": "~5.25.1" } }, + "node_modules/@types/node-fetch": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/node-fetch/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "dev": true }, + "node_modules/@types/npm-package-arg": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@types/npm-package-arg/-/npm-package-arg-6.1.2.tgz", + "integrity": "sha512-K7TdZq7dTZKKgxaFGLR6VPAeNMDM7GwTELlVNyzQ0KKc6Du3+SYYRXFNEDrsCptpEpMjMNKVlb/5/ZNS/MeHjw==", + "dev": true + }, + "node_modules/@types/npm-registry-fetch": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/@types/npm-registry-fetch/-/npm-registry-fetch-8.0.5.tgz", + "integrity": "sha512-mAyQmKTF/4dhXTeSicltEtMO+Vj/LEUoBkMgDn9tS2fGp8IsrZPkYv2GH0KKBcbFLXUq67wuzYwl0DCZGeRcpw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/node-fetch": "*", + "@types/npm-package-arg": "*", + "@types/npmlog": "*", + "@types/ssri": "*" + } + }, + "node_modules/@types/npmlog": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.4.tgz", + "integrity": "sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==", + "dev": true + }, "node_modules/@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "node_modules/@types/pkginfo": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/pkginfo/-/pkginfo-0.4.1.tgz", + "integrity": "sha512-zdrklc4j/o5Nlp/O2JMn2t2lzVaPHeDUV4XD27PAJFqOnEP9dhWGEbsOucp9i4W02p4OtrzL7Up5fZ+ZzyKuKg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/promptly": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/promptly/-/promptly-3.0.3.tgz", + "integrity": "sha512-eM4RvsPy0cT37wJHTcOWvemIyPzBoSKEATp2OO4ptKeSrcNjMwGpDsUSBuBHuleC/datJW7A6NUlBAZsZGJmpA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "node_modules/@types/ssri": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@types/ssri/-/ssri-7.1.2.tgz", + "integrity": "sha512-Mbo/NaBiZlXNlOFTLK+PXeVEzKFxi+ZVELuzmk4VxdRz6aqKpmP9bhcNqsIB2c/s78355WBHwUCGYhQDydcfEg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/update-notifier": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/@types/update-notifier/-/update-notifier-6.0.5.tgz", + "integrity": "sha512-uUOhxsJ3edPHu06r3k4I2yJ4eoyqBt+53ra9+caXEx0ruoPwqNHTlkq75CUvI4yWsrCA5+31tih+opunLCYnXw==", + "dev": true, + "dependencies": { + "@types/configstore": "*", + "boxen": "^7.0.0" + } + }, + "node_modules/@types/update-notifier/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@types/update-notifier/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/update-notifier/node_modules/boxen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "dev": true, + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@types/update-notifier/node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@types/update-notifier/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@types/update-notifier/node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@types/update-notifier/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@types/update-notifier/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@types/update-notifier/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@types/update-notifier/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@types/update-notifier/node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dev": true, + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@types/update-notifier/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@ungap/promise-all-settled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", @@ -2406,6 +2691,12 @@ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", "integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==" }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -10534,6 +10825,34 @@ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" }, + "@types/cli-table": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@types/cli-table/-/cli-table-0.3.2.tgz", + "integrity": "sha512-yEwKAYmZsgb59xHtNRXaQAloxrm5xr8CQcrYerYlPK+3nwhPk1VC3QFwuiCd/jVWFu2hm4uFiiWDCJQSKhkROQ==", + "dev": true + }, + "@types/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@types/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-GUvNiia85zTDDIx0iPrtF3pI8dwrQkfuokEqxqPDE55qxH0U5SZz4awVZjiJLWN2ZZRkXCUqgsMUbygXY+kytA==", + "dev": true + }, + "@types/libnpmsearch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/libnpmsearch/-/libnpmsearch-2.0.4.tgz", + "integrity": "sha512-2qlwrkVckDG+0AcMxr41hURNNZCJUhJ74/hkMjaW4/z5eT2zRYlTaSdUIjPnQYH2YTM0SSa1qKTcpO9g+zzlgw==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/npm-registry-fetch": "*" + } + }, + "@types/lodash": { + "version": "4.14.199", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz", + "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==", + "dev": true + }, "@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -10549,24 +10868,209 @@ "undici-types": "~5.25.1" } }, + "@types/node-fetch": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw==", + "dev": true, + "requires": { + "@types/node": "*", + "form-data": "^4.0.0" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, "@types/normalize-package-data": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "dev": true }, + "@types/npm-package-arg": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@types/npm-package-arg/-/npm-package-arg-6.1.2.tgz", + "integrity": "sha512-K7TdZq7dTZKKgxaFGLR6VPAeNMDM7GwTELlVNyzQ0KKc6Du3+SYYRXFNEDrsCptpEpMjMNKVlb/5/ZNS/MeHjw==", + "dev": true + }, + "@types/npm-registry-fetch": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/@types/npm-registry-fetch/-/npm-registry-fetch-8.0.5.tgz", + "integrity": "sha512-mAyQmKTF/4dhXTeSicltEtMO+Vj/LEUoBkMgDn9tS2fGp8IsrZPkYv2GH0KKBcbFLXUq67wuzYwl0DCZGeRcpw==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/node-fetch": "*", + "@types/npm-package-arg": "*", + "@types/npmlog": "*", + "@types/ssri": "*" + } + }, + "@types/npmlog": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.4.tgz", + "integrity": "sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==", + "dev": true + }, "@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "@types/pkginfo": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/pkginfo/-/pkginfo-0.4.1.tgz", + "integrity": "sha512-zdrklc4j/o5Nlp/O2JMn2t2lzVaPHeDUV4XD27PAJFqOnEP9dhWGEbsOucp9i4W02p4OtrzL7Up5fZ+ZzyKuKg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/promptly": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/promptly/-/promptly-3.0.3.tgz", + "integrity": "sha512-eM4RvsPy0cT37wJHTcOWvemIyPzBoSKEATp2OO4ptKeSrcNjMwGpDsUSBuBHuleC/datJW7A6NUlBAZsZGJmpA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "@types/ssri": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@types/ssri/-/ssri-7.1.2.tgz", + "integrity": "sha512-Mbo/NaBiZlXNlOFTLK+PXeVEzKFxi+ZVELuzmk4VxdRz6aqKpmP9bhcNqsIB2c/s78355WBHwUCGYhQDydcfEg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/update-notifier": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/@types/update-notifier/-/update-notifier-6.0.5.tgz", + "integrity": "sha512-uUOhxsJ3edPHu06r3k4I2yJ4eoyqBt+53ra9+caXEx0ruoPwqNHTlkq75CUvI4yWsrCA5+31tih+opunLCYnXw==", + "dev": true, + "requires": { + "@types/configstore": "*", + "boxen": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "boxen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "dev": true, + "requires": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" + } + }, + "camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "dev": true + }, + "chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true + }, + "cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true + }, + "widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dev": true, + "requires": { + "string-width": "^5.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, "@ungap/promise-all-settled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", @@ -11591,6 +12095,12 @@ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", "integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==" }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", diff --git a/package.json b/package.json index 4399afa0..83471633 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ }, "main": "index.js", "scripts": { - "test": "cross-env NODE_ENV=test mocha", + "test": "tsc && cross-env NODE_ENV=test mocha", "semantic-release": "semantic-release" }, "bin": { @@ -35,7 +35,14 @@ "@babel/eslint-parser": "^7.17.0", "@semantic-release/changelog": "^6.0.1", "@semantic-release/git": "^10.0.1", + "@types/cli-table": "^0.3.2", + "@types/libnpmsearch": "^2.0.4", + "@types/lodash": "^4.14.199", "@types/node": "^20.8.6", + "@types/npmlog": "^4.1.4", + "@types/pkginfo": "^0.4.1", + "@types/promptly": "^3.0.3", + "@types/update-notifier": "^6.0.5", "cross-env": "^7.0.3", "eslint": "^8.15.0", "eslint-config-prettier": "^8.5.0", diff --git a/test/test-cmd-add.js b/test/test-cmd-add.js index b0f14844..1f2e0267 100644 --- a/test/test-cmd-add.js +++ b/test/test-cmd-add.js @@ -4,8 +4,8 @@ const assert = require("assert"); const nock = require("nock"); const should = require("should"); -const { parseEnv, loadManifest } = require("../lib/core"); -const add = require("../lib/cmd-add"); +const { parseEnv, loadManifest } = require("../build/lib/core"); +const { add } = require("../build/lib/cmd-add"); const { getWorkDir, createWorkDir, @@ -13,41 +13,41 @@ const { getInspects, getOutputs, nockUp, - nockDown + nockDown, } = require("./utils"); -describe("cmd-add.js", function() { +describe("cmd-add.ts", function () { const options = { _global: { registry: "http://example.com", upstream: false, - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; const upstreamOptions = { _global: { registry: "http://example.com", upstream: true, - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; const testableOptions = { _global: { registry: "http://example.com", upstream: false, - chdir: getWorkDir("test-openupm-cli") + chdir: getWorkDir("test-openupm-cli"), }, - test: true + test: true, }; const forceOptions = { _global: { registry: "http://example.com", upstream: false, - chdir: getWorkDir("test-openupm-cli") + chdir: getWorkDir("test-openupm-cli"), }, - force: true + force: true, }; - describe("add", function() { + describe("add", function () { let stdoutInspect = null; let stderrInspect = null; const remotePkgInfoA = { @@ -56,17 +56,17 @@ describe("cmd-add.js", function() { "0.1.0": { name: "com.base.package-a", version: "0.1.0", - dependencies: {} + dependencies: {}, }, "1.0.0": { name: "com.base.package-a", version: "1.0.0", - dependencies: {} - } + dependencies: {}, + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; const remotePkgInfoB = { name: "com.base.package-b", @@ -74,12 +74,12 @@ describe("cmd-add.js", function() { "1.0.0": { name: "com.base.package-b", version: "1.0.0", - dependencies: {} - } + dependencies: {}, + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; const remotePkgInfoC = { name: "com.base.package-c", @@ -89,13 +89,13 @@ describe("cmd-add.js", function() { version: "1.0.0", dependencies: { "com.base.package-d": "1.0.0", - "com.unity.modules.x": "1.0.0" - } - } + "com.unity.modules.x": "1.0.0", + }, + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; const remotePkgInfoD = { name: "com.base.package-d", @@ -104,13 +104,13 @@ describe("cmd-add.js", function() { name: "com.base.package-d", version: "1.0.0", dependencies: { - "com.upstream.package-up": "1.0.0" - } - } + "com.upstream.package-up": "1.0.0", + }, + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; const remotePkgInfoWithLowerEditorVersion = { name: "com.base.package-with-lower-editor-version", @@ -119,12 +119,12 @@ describe("cmd-add.js", function() { name: "com.base.package-with-lower-editor-version", version: "1.0.0", unity: "2019.1", - unityRelease: "0b1" - } + unityRelease: "0b1", + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; const remotePkgInfoWithHigherEditorVersion = { name: "com.base.package-with-higher-editor-version", @@ -132,12 +132,12 @@ describe("cmd-add.js", function() { "1.0.0": { name: "com.base.package-with-higher-editor-version", version: "1.0.0", - unity: "2020.2" - } + unity: "2020.2", + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; const remotePkgInfoWithWrongEditorVersion = { name: "com.base.package-with-wrong-editor-version", @@ -145,12 +145,12 @@ describe("cmd-add.js", function() { "1.0.0": { name: "com.base.package-with-wrong-editor-version", version: "1.0.0", - unity: "2020" - } + unity: "2020", + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; const remotePkgInfoUp = { name: "com.upstream.package-up", @@ -158,76 +158,76 @@ describe("cmd-add.js", function() { "1.0.0": { name: "com.upstream.package-up", version: "1.0.0", - dependencies: {} - } + dependencies: {}, + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; const defaultManifest = { - dependencies: {} + dependencies: {}, }; const expectedManifestA = { dependencies: { - "com.base.package-a": "1.0.0" + "com.base.package-a": "1.0.0", }, scopedRegistries: [ { name: "example.com", scopes: ["com.base.package-a", "com.example"], - url: "http://example.com" - } - ] + url: "http://example.com", + }, + ], }; const expectedManifestAB = { dependencies: { "com.base.package-a": "1.0.0", - "com.base.package-b": "1.0.0" + "com.base.package-b": "1.0.0", }, scopedRegistries: [ { name: "example.com", scopes: ["com.base.package-a", "com.base.package-b", "com.example"], - url: "http://example.com" - } - ] + url: "http://example.com", + }, + ], }; const expectedManifestC = { dependencies: { - "com.base.package-c": "1.0.0" + "com.base.package-c": "1.0.0", }, scopedRegistries: [ { name: "example.com", scopes: ["com.base.package-c", "com.base.package-d", "com.example"], - url: "http://example.com" - } - ] + url: "http://example.com", + }, + ], }; const expectedManifestUpstream = { dependencies: { - "com.upstream.package-up": "1.0.0" - } + "com.upstream.package-up": "1.0.0", + }, }; const expectedManifestTestable = { dependencies: { - "com.base.package-a": "1.0.0" + "com.base.package-a": "1.0.0", }, scopedRegistries: [ { name: "example.com", scopes: ["com.base.package-a", "com.example"], - url: "http://example.com" - } + url: "http://example.com", + }, ], - testables: ["com.base.package-a"] + testables: ["com.base.package-a"], }; - beforeEach(function() { + beforeEach(function () { removeWorkDir("test-openupm-cli"); createWorkDir("test-openupm-cli", { manifest: true, - editorVersion: "2019.2.13f1" + editorVersion: "2019.2.13f1", }); nockUp(); nock("http://example.com") @@ -250,24 +250,21 @@ describe("cmd-add.js", function() { .persist() .get("/com.base.package-with-lower-editor-version") .reply(200, remotePkgInfoWithLowerEditorVersion, { - "Content-Type": "application/json" + "Content-Type": "application/json", }); nock("http://example.com") .persist() .get("/com.base.package-with-higher-editor-version") .reply(200, remotePkgInfoWithHigherEditorVersion, { - "Content-Type": "application/json" + "Content-Type": "application/json", }); nock("http://example.com") .persist() .get("/com.base.package-with-wrong-editor-version") .reply(200, remotePkgInfoWithWrongEditorVersion, { - "Content-Type": "application/json" + "Content-Type": "application/json", }); - nock("http://example.com") - .persist() - .get("/pkg-not-exist") - .reply(404); + nock("http://example.com").persist().get("/pkg-not-exist").reply(404); nock("http://example.com") .persist() .get("/com.upstream.package-up") @@ -276,7 +273,7 @@ describe("cmd-add.js", function() { .persist() .get("/com.upstream.package-up") .reply(200, remotePkgInfoUp, { - "Content-Type": "application/json" + "Content-Type": "application/json", }); nock("https://packages.unity.com") .persist() @@ -284,13 +281,13 @@ describe("cmd-add.js", function() { .reply(404); [stdoutInspect, stderrInspect] = getInspects(); }); - afterEach(function() { + afterEach(function () { removeWorkDir("test-openupm-cli"); nockDown(); stdoutInspect.restore(); stderrInspect.restore(); }); - it("add pkg", async function() { + it("add pkg", async function () { const retCode = await add("com.base.package-a", options); retCode.should.equal(0); const manifest = await loadManifest(); @@ -299,7 +296,7 @@ describe("cmd-add.js", function() { stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg@1.0.0", async function() { + it("add pkg@1.0.0", async function () { const retCode = await add("com.base.package-a@1.0.0", options); retCode.should.equal(0); const manifest = await loadManifest(); @@ -308,7 +305,7 @@ describe("cmd-add.js", function() { stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg@latest", async function() { + it("add pkg@latest", async function () { const retCode = await add("com.base.package-a@latest", options); retCode.should.equal(0); const manifest = await loadManifest(); @@ -317,7 +314,7 @@ describe("cmd-add.js", function() { stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg@0.1.0 then pkg@1.0.0", async function() { + it("add pkg@0.1.0 then pkg@1.0.0", async function () { const retCode1 = await add("com.base.package-a@0.1.0", options); retCode1.should.equal(0); const retCode2 = await add("com.base.package-a@1.0.0", options); @@ -328,7 +325,7 @@ describe("cmd-add.js", function() { stdout.includes("modified ").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add exited pkg version", async function() { + it("add exited pkg version", async function () { const retCode1 = await add("com.base.package-a@1.0.0", options); retCode1.should.equal(0); const retCode2 = await add("com.base.package-a@1.0.0", options); @@ -339,7 +336,7 @@ describe("cmd-add.js", function() { stdout.includes("existed ").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg@not-exist-version", async function() { + it("add pkg@not-exist-version", async function () { const retCode = await add("com.base.package-a@2.0.0", options); retCode.should.equal(1); const manifest = await loadManifest(); @@ -348,7 +345,7 @@ describe("cmd-add.js", function() { stdout.includes("version 2.0.0 is not a valid choice").should.be.ok(); stdout.includes("1.0.0").should.be.ok(); }); - it("add pkg@http", async function() { + it("add pkg@http", async function () { const gitUrl = "https://github.com/yo/com.base.package-a"; const retCode = await add("com.base.package-a@" + gitUrl, options); retCode.should.equal(0); @@ -358,7 +355,7 @@ describe("cmd-add.js", function() { stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg@git", async function() { + it("add pkg@git", async function () { const gitUrl = "git@github.com:yo/com.base.package-a"; const retCode = await add("com.base.package-a@" + gitUrl, options); retCode.should.equal(0); @@ -368,7 +365,7 @@ describe("cmd-add.js", function() { stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg@file", async function() { + it("add pkg@file", async function () { const fileUrl = "file../yo/com.base.package-a"; const retCode = await add("com.base.package-a@" + fileUrl, options); retCode.should.equal(0); @@ -378,7 +375,7 @@ describe("cmd-add.js", function() { stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg-not-exist", async function() { + it("add pkg-not-exist", async function () { const retCode = await add("pkg-not-exist", options); retCode.should.equal(1); const manifest = await loadManifest(); @@ -386,7 +383,7 @@ describe("cmd-add.js", function() { const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); }); - it("add more than one pkgs", async function() { + it("add more than one pkgs", async function () { const retCode = await add( ["com.base.package-a", "com.base.package-b"], options @@ -399,7 +396,7 @@ describe("cmd-add.js", function() { stdout.includes("added com.base.package-b").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg from upstream", async function() { + it("add pkg from upstream", async function () { const retCode = await add("com.upstream.package-up", upstreamOptions); retCode.should.equal(0); const manifest = await loadManifest(); @@ -408,7 +405,7 @@ describe("cmd-add.js", function() { stdout.includes("added com.upstream.package-up").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg-not-exist from upstream", async function() { + it("add pkg-not-exist from upstream", async function () { const retCode = await add("pkg-not-exist", upstreamOptions); retCode.should.equal(1); const manifest = await loadManifest(); @@ -416,7 +413,7 @@ describe("cmd-add.js", function() { const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); }); - it("add pkg with nested dependencies", async function() { + it("add pkg with nested dependencies", async function () { const retCode = await add("com.base.package-c@latest", upstreamOptions); retCode.should.equal(0); const manifest = await loadManifest(); @@ -425,7 +422,7 @@ describe("cmd-add.js", function() { stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg with tests", async function() { + it("add pkg with tests", async function () { const retCode = await add("com.base.package-a", testableOptions); retCode.should.equal(0); const manifest = await loadManifest(); @@ -434,7 +431,7 @@ describe("cmd-add.js", function() { stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg with lower editor version", async function() { + it("add pkg with lower editor version", async function () { const retCode = await add( "com.base.package-with-lower-editor-version", testableOptions @@ -444,7 +441,7 @@ describe("cmd-add.js", function() { stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("add pkg with higher editor version", async function() { + it("add pkg with higher editor version", async function () { const retCode = await add( "com.base.package-with-higher-editor-version", testableOptions @@ -453,7 +450,7 @@ describe("cmd-add.js", function() { const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("requires 2020.2 but found 2019.2.13f1").should.be.ok(); }); - it("force add pkg with higher editor version", async function() { + it("force add pkg with higher editor version", async function () { const retCode = await add( "com.base.package-with-higher-editor-version", forceOptions @@ -462,7 +459,7 @@ describe("cmd-add.js", function() { const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("requires 2020.2 but found 2019.2.13f1").should.be.ok(); }); - it("add pkg with wrong editor version", async function() { + it("add pkg with wrong editor version", async function () { const retCode = await add( "com.base.package-with-wrong-editor-version", testableOptions @@ -472,7 +469,7 @@ describe("cmd-add.js", function() { stdout.includes("2020 is not valid").should.be.ok(); console.log(stdout); }); - it("force add pkg with wrong editor version", async function() { + it("force add pkg with wrong editor version", async function () { const retCode = await add( "com.base.package-with-wrong-editor-version", forceOptions diff --git a/test/test-cmd-deps.js b/test/test-cmd-deps.js index 95dd3566..68d1cd0f 100644 --- a/test/test-cmd-deps.js +++ b/test/test-cmd-deps.js @@ -4,8 +4,8 @@ const assert = require("assert"); const nock = require("nock"); const should = require("should"); -const { parseEnv, loadManifest } = require("../lib/core"); -const deps = require("../lib/cmd-deps"); +const { parseEnv, loadManifest } = require("../build/lib/core"); +const { deps } = require("../build/lib/cmd-deps"); const { getWorkDir, createWorkDir, @@ -13,17 +13,17 @@ const { getInspects, getOutputs, nockUp, - nockDown + nockDown, } = require("./utils"); -describe("cmd-deps.js", function() { +describe("cmd-deps.ts", function () { const options = { _global: { registry: "http://example.com", - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; - describe("deps", function() { + describe("deps", function () { let stdoutInspect = null; let stderrInspect = null; const remotePkgInfoA = { @@ -33,13 +33,13 @@ describe("cmd-deps.js", function() { name: "com.example.package-a", version: "1.0.0", dependencies: { - "com.example.package-b": "1.0.0" - } - } + "com.example.package-b": "1.0.0", + }, + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; const remotePkgInfoB = { name: "com.example.package-b", @@ -48,13 +48,13 @@ describe("cmd-deps.js", function() { name: "com.example.package-b", version: "1.0.0", dependencies: { - "com.example.package-up": "1.0.0" - } - } + "com.example.package-up": "1.0.0", + }, + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; const remotePkgInfoUp = { name: "com.example.package-up", @@ -62,14 +62,14 @@ describe("cmd-deps.js", function() { "1.0.0": { name: "com.example.package-up", version: "1.0.0", - dependencies: {} - } + dependencies: {}, + }, }, "dist-tags": { - latest: "1.0.0" - } + latest: "1.0.0", + }, }; - beforeEach(function() { + beforeEach(function () { removeWorkDir("test-openupm-cli"); createWorkDir("test-openupm-cli", { manifest: true }); nockUp(); @@ -79,69 +79,63 @@ describe("cmd-deps.js", function() { nock("http://example.com") .get("/com.example.package-b") .reply(200, remotePkgInfoB, { "Content-Type": "application/json" }); - nock("http://example.com") - .get("/pkg-not-exist") - .reply(404); - nock("http://example.com") - .get("/com.example.package-up") - .reply(404); + nock("http://example.com").get("/pkg-not-exist").reply(404); + nock("http://example.com").get("/com.example.package-up").reply(404); nock("https://packages.unity.com") .get("/com.example.package-up") .reply(200, remotePkgInfoUp, { - "Content-Type": "application/json" + "Content-Type": "application/json", }); - nock("https://packages.unity.com") - .get("/pkg-not-exist") - .reply(404); + nock("https://packages.unity.com").get("/pkg-not-exist").reply(404); [stdoutInspect, stderrInspect] = getInspects(); }); - afterEach(function() { + afterEach(function () { removeWorkDir("test-openupm-cli"); nockDown(); stdoutInspect.restore(); stderrInspect.restore(); }); - it("deps pkg", async function() { + it("deps pkg", async function () { const retCode = await deps("com.example.package-a", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-b").should.be.ok(); }); - it("deps pkg --deep", async function() { + it("deps pkg --deep", async function () { const retCode = await deps("com.example.package-a", { ...options, - deep: true + deep: true, }); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-b").should.be.ok(); stdout.includes("com.example.package-up").should.be.ok(); }); - it("deps pkg@latest", async function() { + it("deps pkg@latest", async function () { const retCode = await deps("com.example.package-a@latest", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-b").should.be.ok(); }); - it("deps pkg@1.0.0", async function() { + it("deps pkg@1.0.0", async function () { const retCode = await deps("com.example.package-a@1.0.0", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-b").should.be.ok(); }); - it("deps pkg@not-exist-version", async function() { + it("deps pkg@not-exist-version", async function () { const retCode = await deps("com.example.package-a@2.0.0", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("is not a valid choice").should.be.ok(); }); - it("deps pkg-not-exist", async function() { + it("deps pkg-not-exist", async function () { const retCode = await deps("pkg-not-exist", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("not found").should.be.ok(); }); - it("deps pkg upstream", async function() { + it("deps pkg upstream", async function () { const retCode = await deps("com.example.package-up", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); diff --git a/test/test-cmd-login.js b/test/test-cmd-login.js index b5edab71..bf0d55ac 100644 --- a/test/test-cmd-login.js +++ b/test/test-cmd-login.js @@ -7,9 +7,9 @@ const { validateRegistry, generateNpmrcLines, getNpmrcPath -} = require("../lib/cmd-login"); +} = require("../build/lib/cmd-login"); -describe("cmd-login.js", function() { +describe("cmd-login.ts", function() { describe("validateRegistry", function() { it("should validate http", async function() { validateRegistry("http://registry.npmjs.org/").should.be.ok(); diff --git a/test/test-cmd-remove.js b/test/test-cmd-remove.js index 398b42ec..9f66e7d6 100644 --- a/test/test-cmd-remove.js +++ b/test/test-cmd-remove.js @@ -3,24 +3,24 @@ const assert = require("assert"); const should = require("should"); -const { parseEnv, loadManifest } = require("../lib/core"); -const remove = require("../lib/cmd-remove"); +const { parseEnv, loadManifest } = require("../build/lib/core"); +const { remove } = require("../build/lib/cmd-remove"); const { getInspects, getOutputs, getWorkDir, createWorkDir, - removeWorkDir + removeWorkDir, } = require("./utils"); -describe("cmd-remove.js", function() { - describe("remove", function() { +describe("cmd-remove.ts", function () { + describe("remove", function () { let stdoutInspect = null; let stderrInspect = null; const defaultManifest = { dependencies: { "com.example.package-a": "1.0.0", - "com.example.package-b": "1.0.0" + "com.example.package-b": "1.0.0", }, scopedRegistries: [ { @@ -28,30 +28,30 @@ describe("cmd-remove.js", function() { scopes: [ "com.example", "com.example.package-a", - "com.example.package-b" + "com.example.package-b", ], - url: "http://example.com" - } - ] + url: "http://example.com", + }, + ], }; - beforeEach(function() { + beforeEach(function () { removeWorkDir("test-openupm-cli"); createWorkDir("test-openupm-cli", { - manifest: defaultManifest + manifest: defaultManifest, }); [stdoutInspect, stderrInspect] = getInspects(); }); - afterEach(function() { + afterEach(function () { removeWorkDir("test-openupm-cli"); stdoutInspect.restore(); stderrInspect.restore(); }); - it("remove pkg", async function() { + it("remove pkg", async function () { const options = { _global: { registry: "http://example.com", - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; const retCode = await remove("com.example.package-a", options); retCode.should.equal(0); @@ -61,18 +61,18 @@ describe("cmd-remove.js", function() { ).should.be.ok(); manifest.scopedRegistries[0].scopes.should.be.deepEqual([ "com.example", - "com.example.package-b" + "com.example.package-b", ]); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("removed ").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); - it("remove pkg@1.0.0", async function() { + it("remove pkg@1.0.0", async function () { const options = { _global: { registry: "http://example.com", - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; const retCode = await remove("com.example.package-a@1.0.0", options); retCode.should.equal(1); @@ -81,12 +81,12 @@ describe("cmd-remove.js", function() { const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("please replace").should.be.ok(); }); - it("remove pkg-not-exist", async function() { + it("remove pkg-not-exist", async function () { const options = { _global: { registry: "http://example.com", - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; const retCode = await remove("pkg-not-exist", options); retCode.should.equal(1); @@ -95,12 +95,12 @@ describe("cmd-remove.js", function() { const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); }); - it("remove more than one pkgs", async function() { + it("remove more than one pkgs", async function () { const options = { _global: { registry: "http://example.com", - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; const retCode = await remove( ["com.example.package-a", "com.example.package-b"], diff --git a/test/test-cmd-search.js b/test/test-cmd-search.js index dc7622e0..d9060ded 100644 --- a/test/test-cmd-search.js +++ b/test/test-cmd-search.js @@ -4,7 +4,7 @@ const assert = require("assert"); const nock = require("nock"); const should = require("should"); -const search = require("../lib/cmd-search"); +const { search } = require("../build/lib/cmd-search"); const { getWorkDir, createWorkDir, @@ -12,38 +12,38 @@ const { getInspects, getOutputs, nockUp, - nockDown + nockDown, } = require("./utils"); -describe("cmd-search.js", function() { +describe("cmd-search.ts", function () { let stdoutInspect = null; let stderrInspect = null; const options = { _global: { registry: "http://example.com", upstream: false, - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; const upstreamOptions = { _global: { registry: "http://example.com", - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; - beforeEach(function() { + beforeEach(function () { removeWorkDir("test-openupm-cli"); createWorkDir("test-openupm-cli", { manifest: true }); removeWorkDir("test-openupm-cli"); createWorkDir("test-openupm-cli", { manifest: true }); [stdoutInspect, stderrInspect] = getInspects(); }); - afterEach(function() { + afterEach(function () { removeWorkDir("test-openupm-cli"); stdoutInspect.restore(); stderrInspect.restore(); }); - describe("search endpoint", function() { + describe("search endpoint", function () { const searchEndpointResult = { objects: [ { @@ -52,16 +52,16 @@ describe("cmd-search.js", function() { scope: "unscoped", "dist-tags": { latest: "1.0.0" }, versions: { - "1.0.0": "latest" + "1.0.0": "latest", }, description: "A demo package", time: { - modified: "2019-10-02T04:02:38.335Z" + modified: "2019-10-02T04:02:38.335Z", }, links: {}, author: { name: "yo", url: "https://github.com/yo" }, publisher: { username: "yo", email: "yo@example.com" }, - maintainers: [{ username: "yo", email: "yo@example.com" }] + maintainers: [{ username: "yo", email: "yo@example.com" }], }, flags: { unstable: true }, score: { @@ -69,37 +69,37 @@ describe("cmd-search.js", function() { detail: { quality: 0.64303646684878, popularity: 0.0034858628087645178, - maintenance: 0.3329285640997383 - } + maintenance: 0.3329285640997383, + }, }, - searchScore: 0.000005798558 - } + searchScore: 0.000005798558, + }, ], total: 1, - time: "Sat Dec 07 2019 04:57:11 GMT+0000 (UTC)" + time: "Sat Dec 07 2019 04:57:11 GMT+0000 (UTC)", }; const searchEndpointEmptyResult = { objects: [], total: 0, - time: "Sat Dec 07 2019 05:07:42 GMT+0000 (UTC)" + time: "Sat Dec 07 2019 05:07:42 GMT+0000 (UTC)", }; - beforeEach(function() { + beforeEach(function () { nockUp(); nock("http://example.com") .get(/-\/v1\/search\?text=package-a/) .reply(200, searchEndpointResult, { - "Content-Type": "application/json" + "Content-Type": "application/json", }); nock("http://example.com") .get(/-\/v1\/search\?text=pkg-not-exist/) .reply(200, searchEndpointEmptyResult, { - "Content-Type": "application/json" + "Content-Type": "application/json", }); }); - afterEach(function() { + afterEach(function () { nockDown(); }); - it("simple", async function() { + it("simple", async function () { const retCode = await search("package-a", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); @@ -107,7 +107,7 @@ describe("cmd-search.js", function() { stdout.includes("1.0.0").should.be.ok(); stdout.includes("2019-10-02").should.be.ok(); }); - it("pkg not exist", async function() { + it("pkg not exist", async function () { const retCode = await search("pkg-not-exist", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); @@ -115,7 +115,7 @@ describe("cmd-search.js", function() { }); }); - describe("old search", function() { + describe("old search", function () { const allResult = { _updated: 99999, "com.example.package-a": { @@ -126,34 +126,32 @@ describe("cmd-search.js", function() { author: { name: "yo", url: "https://github.com/yo" }, repository: { type: "git", - url: "git+https://github.com/yo/com.example.package-a.git" + url: "git+https://github.com/yo/com.example.package-a.git", }, readmeFilename: "README.md", homepage: "https://github.com/yo/com.example.package-a#readme", bugs: { - url: "https://github.com/yo/com.example.package-a/issues" + url: "https://github.com/yo/com.example.package-a/issues", }, license: "MIT", time: { modified: "2019-10-02T18:22:51.000Z" }, - versions: { "1.0.0": "latest" } - } + versions: { "1.0.0": "latest" }, + }, }; - beforeEach(function() { + beforeEach(function () { nockUp(); nock("http://example.com") .persist() .get(/-\/v1\/search\?text=/) .reply(404); }); - afterEach(function() { + afterEach(function () { nockDown(); }); - it("from remote", async function() { - nock("http://example.com") - .get("/-/all") - .reply(200, allResult, { - "Content-Type": "application/json" - }); + it("from remote", async function () { + nock("http://example.com").get("/-/all").reply(200, allResult, { + "Content-Type": "application/json", + }); const retCode = await search("package-a", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); @@ -162,12 +160,10 @@ describe("cmd-search.js", function() { stdout.includes("1.0.0").should.be.ok(); stdout.includes("2019-10-02").should.be.ok(); }); - it("pkg not exist", async function() { - nock("http://example.com") - .get("/-/all") - .reply(200, allResult, { - "Content-Type": "application/json" - }); + it("pkg not exist", async function () { + nock("http://example.com").get("/-/all").reply(200, allResult, { + "Content-Type": "application/json", + }); const retCode = await search("pkg-not-exist", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); diff --git a/test/test-cmd-view.js b/test/test-cmd-view.js index 94a463ba..c2bda8e3 100644 --- a/test/test-cmd-view.js +++ b/test/test-cmd-view.js @@ -3,8 +3,8 @@ const assert = require("assert"); const nock = require("nock"); const should = require("should"); -const { parseEnv, loadManifest } = require("../lib/core"); -const view = require("../lib/cmd-view"); +const { parseEnv, loadManifest } = require("../build/lib/core"); +const { view } = require("../build/lib/cmd-view"); const { getWorkDir, createWorkDir, @@ -12,24 +12,24 @@ const { getInspects, getOutputs, nockUp, - nockDown + nockDown, } = require("./utils"); -describe("cmd-view.js", function() { +describe("cmd-view.ts", function () { const options = { _global: { registry: "http://example.com", upstream: false, - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; const upstreamOptions = { _global: { registry: "http://example.com", - chdir: getWorkDir("test-openupm-cli") - } + chdir: getWorkDir("test-openupm-cli"), + }, }; - describe("view", function() { + describe("view", function () { let stdoutInspect = null; let stderrInspect = null; const remotePkgInfoA = { @@ -39,7 +39,7 @@ describe("cmd-view.js", function() { name: "com.example.package-a", displayName: "Package A", author: { - name: "batman" + name: "batman", }, version: "1.0.0", unity: "2018.4", @@ -47,7 +47,7 @@ describe("cmd-view.js", function() { keywords: [""], category: "Unity", dependencies: { - "com.example.package-a": "^1.0.0" + "com.example.package-a": "^1.0.0", }, gitHead: "5c141ecfac59c389090a07540f44c8ac5d07a729", readmeFilename: "README.md", @@ -59,24 +59,24 @@ describe("cmd-view.js", function() { "sha512-MAh44bur7HGyfbCXH9WKfaUNS67aRMfO0VAbLkr+jwseb1hJue/I1pKsC7PKksuBYh4oqoo9Jov1cBcvjVgjmA==", shasum: "516957cac4249f95cafab0290335def7d9703db7", tarball: - "https://cdn.example.com/com.example.package-a/com.example.package-a-1.0.0.tgz" + "https://cdn.example.com/com.example.package-a/com.example.package-a-1.0.0.tgz", }, - contributors: [] - } + contributors: [], + }, }, time: { modified: "2019-11-28T18:51:58.123Z", created: "2019-11-28T18:51:58.123Z", - "1.0.0": "2019-11-28T18:51:58.123Z" + "1.0.0": "2019-11-28T18:51:58.123Z", }, users: {}, "dist-tags": { - latest: "1.0.0" + latest: "1.0.0", }, _rev: "3-418f950115c32bd0", _id: "com.example.package-a", readme: "A demo package", - _attachments: {} + _attachments: {}, }; const remotePkgInfoUp = { name: "com.example.package-up", @@ -85,7 +85,7 @@ describe("cmd-view.js", function() { name: "com.example.package-up", displayName: "Package A", author: { - name: "batman" + name: "batman", }, version: "1.0.0", unity: "2018.4", @@ -93,7 +93,7 @@ describe("cmd-view.js", function() { keywords: [""], category: "Unity", dependencies: { - "com.example.package-up": "^1.0.0" + "com.example.package-up": "^1.0.0", }, gitHead: "5c141ecfac59c389090a07540f44c8ac5d07a729", readmeFilename: "README.md", @@ -105,79 +105,73 @@ describe("cmd-view.js", function() { "sha512-MAh44bur7HGyfbCXH9WKfaUNS67aRMfO0VAbLkr+jwseb1hJue/I1pKsC7PKksuBYh4oqoo9Jov1cBcvjVgjmA==", shasum: "516957cac4249f95cafab0290335def7d9703db7", tarball: - "https://cdn.example.com/com.example.package-up/com.example.package-up-1.0.0.tgz" + "https://cdn.example.com/com.example.package-up/com.example.package-up-1.0.0.tgz", }, - contributors: [] - } + contributors: [], + }, }, time: { modified: "2019-11-28T18:51:58.123Z", created: "2019-11-28T18:51:58.123Z", - "1.0.0": "2019-11-28T18:51:58.123Z" + "1.0.0": "2019-11-28T18:51:58.123Z", }, users: {}, "dist-tags": { - latest: "1.0.0" + latest: "1.0.0", }, _rev: "3-418f950115c32bd0", _id: "com.example.package-up", readme: "A demo package", - _attachments: {} + _attachments: {}, }; - beforeEach(function() { + beforeEach(function () { removeWorkDir("test-openupm-cli"); createWorkDir("test-openupm-cli", { manifest: true }); nockUp(); nock("http://example.com") .get("/com.example.package-a") .reply(200, remotePkgInfoA, { "Content-Type": "application/json" }); - nock("http://example.com") - .get("/pkg-not-exist") - .reply(404); - nock("http://example.com") - .get("/com.example.package-up") - .reply(404); + nock("http://example.com").get("/pkg-not-exist").reply(404); + nock("http://example.com").get("/com.example.package-up").reply(404); nock("https://packages.unity.com") .get("/com.example.package-up") .reply(200, remotePkgInfoUp, { - "Content-Type": "application/json" + "Content-Type": "application/json", }); - nock("https://packages.unity.com") - .get("/pkg-not-exist") - .reply(404); + nock("https://packages.unity.com").get("/pkg-not-exist").reply(404); [stdoutInspect, stderrInspect] = getInspects(); }); - afterEach(function() { + afterEach(function () { removeWorkDir("test-openupm-cli"); nockDown(); stdoutInspect.restore(); stderrInspect.restore(); }); - it("view pkg", async function() { + it("view pkg", async function () { const retCode = await view("com.example.package-a", options); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-a@1.0.0").should.be.ok(); }); - it("view pkg@1.0.0", async function() { + it("view pkg@1.0.0", async function () { const retCode = await view("com.example.package-a@1.0.0", options); retCode.should.equal(1); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("please replace").should.be.ok(); }); - it("view pkg-not-exist", async function() { + it("view pkg-not-exist", async function () { const retCode = await view("pkg-not-exist", options); retCode.should.equal(1); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); }); - it("view pkg from upstream", async function() { + it("view pkg from upstream", async function () { const retCode = await view("com.example.package-up", upstreamOptions); retCode.should.equal(0); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-up@1.0.0").should.be.ok(); }); - it("view pkg-not-exist from upstream", async function() { + it("view pkg-not-exist from upstream", async function () { const retCode = await view("pkg-not-exist", upstreamOptions); retCode.should.equal(1); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); diff --git a/test/test-core.js b/test/test-core.js index 0a07393c..bc1fe13b 100644 --- a/test/test-core.js +++ b/test/test-core.js @@ -16,7 +16,7 @@ const { parseName, saveManifest, isInternalPackage -} = require("../lib/core"); +} = require("../build/lib/core"); const { getWorkDir, createWorkDir, @@ -27,7 +27,7 @@ const { nockDown } = require("./utils"); -describe("cmd-core.js", function() { +describe("cmd-core.ts", function() { describe("parseName", function() { it("pkg@version", function() { parseName("pkg@1.0.0").should.deepEqual({ diff --git a/tsconfig.json b/tsconfig.json index 17b19bf6..4f54999c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -41,7 +41,7 @@ // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ + "resolveJsonModule": true, /* Enable importing .json files. */ // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ From d57b4c4cdfd694f4d02d91d27c5e29c1be3a554a Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 18 Oct 2023 18:59:25 +0200 Subject: [PATCH 102/201] fix: eslint errors in typescript-files Eslint was complaining about various keywords being reserved and was unerlining them. Fixed by installing `typescript-eslint` according to [this guide](https://typescript-eslint.io/getting-started) --- .eslintrc.js | 13 +- package-lock.json | 953 +++++++++++++++++++++++++++++++++++++--------- package.json | 4 +- 3 files changed, 776 insertions(+), 194 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index be58536d..1705e73b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,14 +1,17 @@ module.exports = { root: true, env: { - node: true + node: true, }, extends: [ "eslint:recommended", - "plugin:prettier/recommended" + "plugin:prettier/recommended", + "plugin:@typescript-eslint/recommended", ], rules: { "no-console": process.env.NODE_ENV === "production" ? "error" : "off", - "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off" - } -} + "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off", + }, + parser: "@typescript-eslint/parser", + plugins: ["@typescript-eslint"], +}; diff --git a/package-lock.json b/package-lock.json index 73052625..b7d77ab5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,8 +44,10 @@ "@types/pkginfo": "^0.4.1", "@types/promptly": "^3.0.3", "@types/update-notifier": "^6.0.5", + "@typescript-eslint/eslint-plugin": "^6.8.0", + "@typescript-eslint/parser": "^6.8.0", "cross-env": "^7.0.3", - "eslint": "^8.15.0", + "eslint": "^8.51.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.0.0", "eslint-plugin-vue": "^8.7.1", @@ -61,6 +63,15 @@ "node": ">=14.18" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", @@ -465,16 +476,52 @@ "node": ">=0.1.90" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.0", + "espree": "^9.6.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -483,12 +530,15 @@ }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -512,25 +562,47 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/js": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", + "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" }, "node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", @@ -1043,6 +1115,12 @@ "integrity": "sha512-GUvNiia85zTDDIx0iPrtF3pI8dwrQkfuokEqxqPDE55qxH0U5SZz4awVZjiJLWN2ZZRkXCUqgsMUbygXY+kytA==", "dev": true }, + "node_modules/@types/json-schema": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", + "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", + "dev": true + }, "node_modules/@types/libnpmsearch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/libnpmsearch/-/libnpmsearch-2.0.4.tgz", @@ -1159,6 +1237,12 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "node_modules/@types/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", + "dev": true + }, "node_modules/@types/ssri": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/@types/ssri/-/ssri-7.1.2.tgz", @@ -1342,6 +1426,288 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz", + "integrity": "sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/type-utils": "6.8.0", + "@typescript-eslint/utils": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.8.0.tgz", + "integrity": "sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/typescript-estree": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz", + "integrity": "sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz", + "integrity": "sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.8.0", + "@typescript-eslint/utils": "6.8.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.8.0.tgz", + "integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz", + "integrity": "sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.8.0.tgz", + "integrity": "sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/typescript-estree": "6.8.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz", + "integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.8.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@ungap/promise-all-settled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", @@ -1349,9 +1715,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2792,46 +3158,48 @@ } }, "node_modules/eslint": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", - "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", + "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.51.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" @@ -2964,9 +3332,9 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -2974,15 +3342,21 @@ }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/estraverse": { @@ -2995,9 +3369,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -3022,26 +3396,32 @@ } }, "node_modules/espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^8.7.1", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { @@ -3058,9 +3438,9 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -3418,12 +3798,6 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, "node_modules/gauge": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", @@ -3632,6 +4006,12 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "node_modules/handlebars": { "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", @@ -3812,9 +4192,9 @@ } }, "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, "engines": { "node": ">= 4" @@ -7776,17 +8156,17 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -8535,18 +8915,6 @@ "esprima": "~4.0.0" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/registry-auth-token": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", @@ -9490,6 +9858,18 @@ "node": ">=8" } }, + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -9707,12 +10087,6 @@ "uuid": "bin/uuid" } }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -9880,15 +10254,6 @@ "node": ">=8" } }, - "node_modules/word-wrap": { - "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, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -10061,6 +10426,12 @@ } }, "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, "@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", @@ -10368,16 +10739,39 @@ "dev": true, "optional": true }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + } + } + }, + "@eslint-community/regexpp": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", + "dev": true + }, "@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.0", + "espree": "^9.6.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -10386,9 +10780,9 @@ }, "dependencies": { "globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -10402,22 +10796,34 @@ } } }, + "@eslint/js": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", + "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", + "dev": true + }, "@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" }, "@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" } }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, "@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", @@ -10837,6 +11243,12 @@ "integrity": "sha512-GUvNiia85zTDDIx0iPrtF3pI8dwrQkfuokEqxqPDE55qxH0U5SZz4awVZjiJLWN2ZZRkXCUqgsMUbygXY+kytA==", "dev": true }, + "@types/json-schema": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", + "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", + "dev": true + }, "@types/libnpmsearch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/libnpmsearch/-/libnpmsearch-2.0.4.tgz", @@ -10952,6 +11364,12 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "@types/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", + "dev": true + }, "@types/ssri": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/@types/ssri/-/ssri-7.1.2.tgz", @@ -11071,6 +11489,174 @@ } } }, + "@typescript-eslint/eslint-plugin": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz", + "integrity": "sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/type-utils": "6.8.0", + "@typescript-eslint/utils": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.8.0.tgz", + "integrity": "sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/typescript-estree": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz", + "integrity": "sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz", + "integrity": "sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "6.8.0", + "@typescript-eslint/utils": "6.8.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + } + }, + "@typescript-eslint/types": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.8.0.tgz", + "integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz", + "integrity": "sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.8.0.tgz", + "integrity": "sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/typescript-estree": "6.8.0", + "semver": "^7.5.4" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz", + "integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.8.0", + "eslint-visitor-keys": "^3.4.1" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + } + } + }, "@ungap/promise-all-settled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", @@ -11078,9 +11664,9 @@ "dev": true }, "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true }, "acorn-jsx": { @@ -12181,52 +12767,54 @@ "dev": true }, "eslint": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", - "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", + "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.51.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "dependencies": { "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -12234,9 +12822,9 @@ } }, "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true }, "estraverse": { @@ -12246,9 +12834,9 @@ "dev": true }, "globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -12338,20 +12926,20 @@ "dev": true }, "espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "requires": { - "acorn": "^8.7.1", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.1" }, "dependencies": { "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true } } @@ -12363,9 +12951,9 @@ "dev": true }, "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -12632,12 +13220,6 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, "gauge": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", @@ -12804,6 +13386,12 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "handlebars": { "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", @@ -12935,9 +13523,9 @@ } }, "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true }, "import-fresh": { @@ -15776,17 +16364,17 @@ } }, "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" } }, "os-homedir": { @@ -16330,12 +16918,6 @@ "esprima": "~4.0.0" } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, "registry-auth-token": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", @@ -17059,6 +17641,13 @@ "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true }, + "ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "requires": {} + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -17225,12 +17814,6 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -17363,12 +17946,6 @@ "string-width": "^4.0.0" } }, - "word-wrap": { - "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 - }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", diff --git a/package.json b/package.json index 83471633..937e1be6 100644 --- a/package.json +++ b/package.json @@ -43,8 +43,10 @@ "@types/pkginfo": "^0.4.1", "@types/promptly": "^3.0.3", "@types/update-notifier": "^6.0.5", + "@typescript-eslint/eslint-plugin": "^6.8.0", + "@typescript-eslint/parser": "^6.8.0", "cross-env": "^7.0.3", - "eslint": "^8.15.0", + "eslint": "^8.51.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.0.0", "eslint-plugin-vue": "^8.7.1", From bceda11dcd1a16a32e8d59bbac8d397060a4e99a Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 18 Oct 2023 19:01:21 +0200 Subject: [PATCH 103/201] misc: apply eslint rules reformat and clean-up using new eslint config --- lib/client.ts | 7 +++---- lib/cmd-add.ts | 6 +++--- lib/cmd-deps.ts | 2 +- lib/cmd-login.ts | 2 +- lib/cmd-remove.ts | 10 ++++----- lib/cmd-search.ts | 4 ++-- lib/cmd-view.ts | 2 +- lib/core.ts | 4 ++-- lib/error-handler.ts | 6 +++--- lib/logger.ts | 4 ++-- lib/utils/process.ts | 48 +++++++++++++++++++++++--------------------- 11 files changed, 48 insertions(+), 47 deletions(-) diff --git a/lib/client.ts b/lib/client.ts index 55a356ea..a050635c 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -1,14 +1,13 @@ -import {promisify} from "util"; +import { promisify } from "util"; // @ts-ignore import RegClient from "another-npm-registry-client"; import log from "./logger"; - /** * Return npm client */ -export const getNpmClient = function() { +export const getNpmClient = function () { // create client const client = new RegClient({ log }); return { @@ -16,6 +15,6 @@ export const getNpmClient = function() { rawClient: client, // Promisified methods get: promisify(client.get.bind(client)), - adduser: promisify(client.adduser.bind(client)) + adduser: promisify(client.adduser.bind(client)), }; }; diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index 94ab4283..9a6fab25 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -60,7 +60,7 @@ const _add = async function ({ // parse name let { name, version } = parseName(pkg); // load manifest - let manifest = loadManifest(); + const manifest = loadManifest(); if (manifest === null) return { code: 1, dirty }; // ensure manifest.dependencies if (!manifest.dependencies) { @@ -219,9 +219,9 @@ const _add = async function ({ }); dirty = true; } - let entry = manifest.scopedRegistries.filter(filterEntry)[0]; + const entry = manifest.scopedRegistries.filter(filterEntry)[0]; // apply pkgsInScope - let scopesSet = new Set(entry.scopes || []); + const scopesSet = new Set(entry.scopes || []); pkgsInScope.push(env.namespace); pkgsInScope.forEach((name) => { if (!scopesSet.has(name)) { diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index 47f39aba..91601318 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -12,7 +12,7 @@ export const deps = async function (pkg: Pkg, options: DepsOptions) { const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; // parse name - let { name, version } = parseName(pkg); + const { name, version } = parseName(pkg); // deps await _deps({ name, version, deep: options.deep }); return 0; diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index bdc55db2..6391153b 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -44,7 +44,7 @@ export const login = async function (options: LoginOptions) { _auth = Buffer.from(userPass).toString("base64"); } else { // npm login - let result = await npmLogin({ + const result = await npmLogin({ username: options.username, password: options.password, email: options.email, diff --git a/lib/cmd-remove.ts b/lib/cmd-remove.ts index ac1372bb..19121798 100644 --- a/lib/cmd-remove.ts +++ b/lib/cmd-remove.ts @@ -37,10 +37,10 @@ const _remove = async function (pkg: Pkg) { return { code: 1, dirty }; } // load manifest - let manifest = loadManifest(); + const manifest = loadManifest(); if (manifest === null) return { code: 1, dirty }; // not found array - let pkgsNotFound = []; + const pkgsNotFound = []; // remove from dependencies if (manifest.dependencies) { version = manifest.dependencies[name]; @@ -57,13 +57,13 @@ const _remove = async function (pkg: Pkg) { if (url.endsWith("/")) url = url.slice(0, -1); return url == env.registry; }; - let entires = manifest.scopedRegistries.filter(filterEntry); + const entires = manifest.scopedRegistries.filter(filterEntry); if (entires.length > 0) { - let entry = entires[0]; + const entry = entires[0]; const index = entry.scopes.indexOf(name); if (index > -1) { entry.scopes.splice(index, 1); - let scopesSet = new Set(entry.scopes); + const scopesSet = new Set(entry.scopes); scopesSet.add(env.namespace); entry.scopes = Array.from(scopesSet).sort(); dirty = true; diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index ec3a09ad..3e3c79fc 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -85,7 +85,7 @@ const searchOld = async function ( }; const getTable = function () { - var table = new Table({ + const table = new Table({ head: ["Name", "Version", "Date"], colWidths: [42, 20, 12], }); @@ -107,7 +107,7 @@ export async function search(keyword: string, options: SearchOptions) { // parse env const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; - let table = getTable(); + const table = getTable(); // search endpoint let results = await searchEndpoint(keyword); // search old search diff --git a/lib/cmd-view.ts b/lib/cmd-view.ts index 80c98ef7..109088bf 100644 --- a/lib/cmd-view.ts +++ b/lib/cmd-view.ts @@ -19,7 +19,7 @@ export const view = async function (pkg: Pkg, options: ViewOptions) { const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; // parse name - let { name, version } = parseName(pkg); + const { name, version } = parseName(pkg); if (version) { log.warn("", `please replace '${name}@${version}' with '${name}'`); return 1; diff --git a/lib/core.ts b/lib/core.ts index 79159fbc..4a5967fe 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -351,7 +351,7 @@ export const getLatestVersion = function (pkgInfo: PkgInfo): PkgVersionName { // Load manifest json file export const loadManifest = function (): PkgManifest | null { try { - let text = fs.readFileSync(env.manifestPath, { encoding: "utf8" }); + const text = fs.readFileSync(env.manifestPath, { encoding: "utf8" }); return JSON.parse(text); } catch (err) { // TODO: Type error @@ -372,7 +372,7 @@ export const loadManifest = function (): PkgManifest | null { // Save manifest json file export const saveManifest = function (data: PkgManifest) { - let json = JSON.stringify(data, null, 2); + const json = JSON.stringify(data, null, 2); try { fs.writeFileSync(env.manifestPath, json); return true; diff --git a/lib/error-handler.ts b/lib/error-handler.ts index e1476d02..32c06335 100644 --- a/lib/error-handler.ts +++ b/lib/error-handler.ts @@ -1,14 +1,14 @@ // TODO: Use better error types -export const isConnectionError = function(err: any) { +export const isConnectionError = function (err: any) { return err.code == "ENOTFOUND"; }; -export const is404Error = function(err: any) { +export const is404Error = function (err: any) { return (err.response && err.response.notFound) || err.message.includes("404"); }; -const is503Error = function(err: any) { +const is503Error = function (err: any) { return err.response && err.status == 503; }; diff --git a/lib/logger.ts b/lib/logger.ts index 92a13e8e..41115c54 100644 --- a/lib/logger.ts +++ b/lib/logger.ts @@ -1,8 +1,8 @@ import npmlog from "npmlog"; if (process.env.NODE_ENV == "test") { - npmlog.stream = process.stdout; - npmlog.disableColor(); + npmlog.stream = process.stdout; + npmlog.disableColor(); } export default npmlog; diff --git a/lib/utils/process.ts b/lib/utils/process.ts index c6212f07..20ad13b3 100644 --- a/lib/utils/process.ts +++ b/lib/utils/process.ts @@ -5,30 +5,32 @@ import childProcess from "child_process"; * @return A promise that resolve to the output of the shell command, or an error * @example const output = await execute("ls -alh"); */ -export default function execute(command: string, {trim}: { trim: boolean }): Promise { +export default function execute( + command: string, + { trim }: { trim: boolean } +): Promise { + /** + * @param {Function} resolve A function that resolves the promise + * @param {Function} reject A function that fails the promise + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise + */ + return new Promise(function (resolve, reject) { /** - * @param {Function} resolve A function that resolves the promise - * @param {Function} reject A function that fails the promise - * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise + * @param {Error} error An error triggered during the execution of the childProcess.exec command + * @param {string|Buffer} stdout The result of the shell command execution + * @param {string|Buffer} stderr The error resulting of the shell command execution + * @see https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback */ - return new Promise(function (resolve, reject) { - /** - * @param {Error} error An error triggered during the execution of the childProcess.exec command - * @param {string|Buffer} stdout The result of the shell command execution - * @param {string|Buffer} stderr The error resulting of the shell command execution - * @see https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback - */ - childProcess.exec(command, function (error, stdout, stderr) { - if (error) { - reject(); - return; - } - if (stderr) { - reject(stderr); - return; - } - resolve(trim ? stdout.trim() : stdout); - }); + childProcess.exec(command, function (error, stdout, stderr) { + if (error) { + reject(); + return; + } + if (stderr) { + reject(stderr); + return; + } + resolve(trim ? stdout.trim() : stdout); }); + }); } - From a656fe375a5d2192c2f0fd4c49de943ec915bc48 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 18 Oct 2023 19:13:11 +0200 Subject: [PATCH 104/201] chore(deps): bump mkdirp Bumped because >=2 includes typings and seemingly no other breaking changes --- package-lock.json | 71 +++++++++++++++++++++++++++++++++++++++++------ package.json | 2 +- 2 files changed, 64 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index b7d77ab5..90330c00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "is-wsl": "^2.2.0", "libnpmsearch": "^5.0.3", "lodash": "^4.17.21", - "mkdirp": "^1.0.4", + "mkdirp": "^3.0.1", "npm-registry-fetch": "^13.1.1", "npmlog": "^6.0.2", "pkginfo": "^0.4.1", @@ -745,6 +745,17 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@octokit/auth-token": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", @@ -2319,6 +2330,17 @@ "node": ">=10" } }, + "node_modules/cacache/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/cacache/node_modules/ssri": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", @@ -5287,14 +5309,17 @@ } }, "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", "bin": { - "mkdirp": "bin/cmd.js" + "mkdirp": "dist/cjs/src/bin.js" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/mocha": { @@ -9706,6 +9731,17 @@ "node": ">= 10" } }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/temp-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", @@ -10933,6 +10969,13 @@ "requires": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } } }, "@octokit/auth-token": { @@ -12136,6 +12179,11 @@ "brace-expansion": "^2.0.1" } }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, "ssri": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", @@ -14331,9 +14379,9 @@ } }, "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==" }, "mocha": { "version": "10.0.0", @@ -17519,6 +17567,13 @@ "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } } }, "temp-dir": { diff --git a/package.json b/package.json index 937e1be6..1e5e1904 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "is-wsl": "^2.2.0", "libnpmsearch": "^5.0.3", "lodash": "^4.17.21", - "mkdirp": "^1.0.4", + "mkdirp": "^3.0.1", "npm-registry-fetch": "^13.1.1", "npmlog": "^6.0.2", "pkginfo": "^0.4.1", From 309a8e0e4a4e61ef595a4f725f88280a4fa255e5 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 18 Oct 2023 19:18:06 +0200 Subject: [PATCH 105/201] chore: fix eslint end-of-line error On my Windows machine eslint was constantly complaining about line endings. Fixed using this answer https://stackoverflow.com/a/53769213 --- .eslintrc.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.eslintrc.js b/.eslintrc.js index 1705e73b..f4110fbd 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -11,6 +11,12 @@ module.exports = { rules: { "no-console": process.env.NODE_ENV === "production" ? "error" : "off", "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off", + "prettier/prettier": [ + "error", + { + endOfLine: "auto", + }, + ], }, parser: "@typescript-eslint/parser", plugins: ["@typescript-eslint"], From 36ffc7de82c5f0141169909efb64ca66cfb9ab20 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 18 Oct 2023 20:01:24 +0200 Subject: [PATCH 106/201] feat: ambient typings for js module Add ambient typings for another-npm-registry-client --- lib/client.ts | 2 -- lib/types/another-npm-registry-client.d.ts | 8 ++++++++ 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 lib/types/another-npm-registry-client.d.ts diff --git a/lib/client.ts b/lib/client.ts index a050635c..3a41ba0c 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -1,6 +1,4 @@ import { promisify } from "util"; - -// @ts-ignore import RegClient from "another-npm-registry-client"; import log from "./logger"; diff --git a/lib/types/another-npm-registry-client.d.ts b/lib/types/another-npm-registry-client.d.ts new file mode 100644 index 00000000..b366fb98 --- /dev/null +++ b/lib/types/another-npm-registry-client.d.ts @@ -0,0 +1,8 @@ +declare module "another-npm-registry-client" { + class RegClient { + constructor(...args: unknown[]); + get(...args: unknown[]): unknown; + adduser(...args: unknown[]): unknown; + } + export = RegClient; +} From e51bd54ed1e31fcc26b061b219f63db988bb914d Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Thu, 19 Oct 2023 17:35:42 +0200 Subject: [PATCH 107/201] refactor: move file Move types file into types folder --- lib/cmd-add.ts | 2 +- lib/cmd-deps.ts | 2 +- lib/cmd-login.ts | 2 +- lib/cmd-remove.ts | 2 +- lib/cmd-search.ts | 2 +- lib/cmd-view.ts | 2 +- lib/core.ts | 2 +- lib/{ => types}/types.ts | 0 8 files changed, 7 insertions(+), 7 deletions(-) rename lib/{ => types}/types.ts (100%) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index 9a6fab25..7ada82cc 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -12,7 +12,7 @@ import { parseName, saveManifest, } from "./core"; -import { GlobalOptions, Pkg, PkgName, ScopedRegistry } from "./types"; +import { GlobalOptions, Pkg, PkgName, ScopedRegistry } from "./types/types"; export type AddOptions = { test: boolean; diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index 91601318..adacb180 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -1,6 +1,6 @@ import log from "./logger"; import { fetchPackageDependencies, parseEnv, parseName } from "./core"; -import { GlobalOptions, Pkg, PkgName, PkgVersionName } from "./types"; +import { GlobalOptions, Pkg, PkgName, PkgVersionName } from "./types/types"; export type DepsOptions = { deep: boolean; diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index 6391153b..9da61bf1 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -12,7 +12,7 @@ import { parseEnv, saveUpmConfig, } from "./core"; -import { GlobalOptions, Registry } from "./types"; +import { GlobalOptions, Registry } from "./types/types"; export type LoginOptions = { username?: string; diff --git a/lib/cmd-remove.ts b/lib/cmd-remove.ts index 19121798..18740240 100644 --- a/lib/cmd-remove.ts +++ b/lib/cmd-remove.ts @@ -1,6 +1,6 @@ import log from "./logger"; import { env, loadManifest, parseEnv, parseName, saveManifest } from "./core"; -import { GlobalOptions, Pkg, ScopedRegistry } from "./types"; +import { GlobalOptions, Pkg, ScopedRegistry } from "./types/types"; export type RemoveOptions = { _global: GlobalOptions; diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index 3e3c79fc..01634490 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -12,7 +12,7 @@ import { PkgName, PkgVersionName, Registry, -} from "./types"; +} from "./types/types"; type TableRow = [PkgName, PkgVersionName, string, ""]; diff --git a/lib/cmd-view.ts b/lib/cmd-view.ts index 109088bf..05d89b8c 100644 --- a/lib/cmd-view.ts +++ b/lib/cmd-view.ts @@ -8,7 +8,7 @@ import { parseEnv, parseName, } from "./core"; -import { GlobalOptions, Pkg, PkgInfo } from "./types"; +import { GlobalOptions, Pkg, PkgInfo } from "./types/types"; export type ViewOptions = { _global: GlobalOptions; diff --git a/lib/core.ts b/lib/core.ts index 4a5967fe..8610c771 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -26,7 +26,7 @@ import { Registry, SemanticVersion, UPMConfig, -} from "./types"; +} from "./types/types"; // @ts-ignore export const env: Env = {}; diff --git a/lib/types.ts b/lib/types/types.ts similarity index 100% rename from lib/types.ts rename to lib/types/types.ts From f0b51136fd7af23ac0e1cd1f4f3319f688350679 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Thu, 19 Oct 2023 17:48:17 +0200 Subject: [PATCH 108/201] refactor: add basic type for NpmClient Based on usage. Could use some cleanup --- lib/client.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/client.ts b/lib/client.ts index 3a41ba0c..3a32c691 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -1,11 +1,21 @@ import { promisify } from "util"; import RegClient from "another-npm-registry-client"; import log from "./logger"; +import { Auth, PkgInfo, Registry } from "./types/types"; + +export type NpmClient = { + rawClient: RegClient; + get(path: string, options: { auth: Auth }): Promise; + adduser( + registry: Registry, + options: { auth: Auth } + ): Promise<{ ok: boolean | string; token: string }>; +}; /** * Return npm client */ -export const getNpmClient = function () { +export const getNpmClient = (): NpmClient => { // create client const client = new RegClient({ log }); return { From 1241259a98c64b1dfa3750f052acc208a21bf672 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Thu, 19 Oct 2023 17:51:34 +0200 Subject: [PATCH 109/201] refactor: declare global types Declare types instead of exporting them for easier use --- lib/client.ts | 1 - lib/cmd-add.ts | 1 - lib/cmd-deps.ts | 1 - lib/cmd-login.ts | 1 - lib/cmd-remove.ts | 1 - lib/cmd-search.ts | 9 --- lib/cmd-view.ts | 2 - lib/core.ts | 15 ----- lib/types/global.d.ts | 131 ++++++++++++++++++++++++++++++++++++++++++ lib/types/types.ts | 129 ----------------------------------------- 10 files changed, 131 insertions(+), 160 deletions(-) create mode 100644 lib/types/global.d.ts delete mode 100644 lib/types/types.ts diff --git a/lib/client.ts b/lib/client.ts index 3a32c691..c8e2224d 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -1,7 +1,6 @@ import { promisify } from "util"; import RegClient from "another-npm-registry-client"; import log from "./logger"; -import { Auth, PkgInfo, Registry } from "./types/types"; export type NpmClient = { rawClient: RegClient; diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index 7ada82cc..acdc8750 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -12,7 +12,6 @@ import { parseName, saveManifest, } from "./core"; -import { GlobalOptions, Pkg, PkgName, ScopedRegistry } from "./types/types"; export type AddOptions = { test: boolean; diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index adacb180..af6859fb 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -1,6 +1,5 @@ import log from "./logger"; import { fetchPackageDependencies, parseEnv, parseName } from "./core"; -import { GlobalOptions, Pkg, PkgName, PkgVersionName } from "./types/types"; export type DepsOptions = { deep: boolean; diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index 9da61bf1..24d9b89c 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -12,7 +12,6 @@ import { parseEnv, saveUpmConfig, } from "./core"; -import { GlobalOptions, Registry } from "./types/types"; export type LoginOptions = { username?: string; diff --git a/lib/cmd-remove.ts b/lib/cmd-remove.ts index 18740240..9109b5a4 100644 --- a/lib/cmd-remove.ts +++ b/lib/cmd-remove.ts @@ -1,6 +1,5 @@ import log from "./logger"; import { env, loadManifest, parseEnv, parseName, saveManifest } from "./core"; -import { GlobalOptions, Pkg, ScopedRegistry } from "./types/types"; export type RemoveOptions = { _global: GlobalOptions; diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index 01634490..f2c75e19 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -2,17 +2,8 @@ import npmSearch from "libnpmsearch"; import npmFetch from "npm-registry-fetch"; import Table from "cli-table"; import log from "./logger"; - import { env, getLatestVersion, getNpmFetchOptions, parseEnv } from "./core"; - import { is404Error } from "./error-handler"; -import { - GlobalOptions, - PkgInfo, - PkgName, - PkgVersionName, - Registry, -} from "./types/types"; type TableRow = [PkgName, PkgVersionName, string, ""]; diff --git a/lib/cmd-view.ts b/lib/cmd-view.ts index 05d89b8c..c446eee1 100644 --- a/lib/cmd-view.ts +++ b/lib/cmd-view.ts @@ -1,6 +1,5 @@ import chalk from "chalk"; import log from "./logger"; - import { env, fetchPackageInfo, @@ -8,7 +7,6 @@ import { parseEnv, parseName, } from "./core"; -import { GlobalOptions, Pkg, PkgInfo } from "./types/types"; export type ViewOptions = { _global: GlobalOptions; diff --git a/lib/core.ts b/lib/core.ts index 8610c771..68809cf0 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -12,21 +12,6 @@ import yaml from "yaml"; import execute from "./utils/process"; import { getNpmClient } from "./client"; import log from "./logger"; -import { - Dependency, - Env, - GlobalOptions, - NameVersionPair, - NpmFetchOptions, - Pkg, - PkgInfo, - PkgManifest, - PkgName, - PkgVersionName, - Registry, - SemanticVersion, - UPMConfig, -} from "./types/types"; // @ts-ignore export const env: Env = {}; diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts new file mode 100644 index 00000000..88a11479 --- /dev/null +++ b/lib/types/global.d.ts @@ -0,0 +1,131 @@ +import { Logger } from "npmlog"; + +declare global { + type PkgName = string; + + type PkgVersionName = string; + + type Pkg = `${PkgName}@${PkgVersionName}`; + + type Region = "us" | "cn"; + + type Registry = string; + + type SemanticVersion = { + major: number; + minor: number; + patch?: number; + flag?: "a" | "b" | "f"; + flagValue?: 0 | 1 | 2; + build?: number; + loc?: string; + locValue?: number; + locBuild?: number; + }; + + type Auth = { + alwaysAuth?: boolean; + _auth?: string; + username?: string; + password?: string; + email?: string; + token?: string; + }; + + type Env = { + cwd: string; + color: boolean; + systemUser: boolean; + wsl: boolean; + npmAuth?: Record; + auth: Record; + upstream: boolean; + upstreamRegistry: string; + registry: string; + namespace: string; + editorVersion: string | null; + region: Region; + manifestPath: string; + }; + + type Dist = { + tarball: string; + shasum: string; + integrity: string; + }; + + type PkgVersion = { + unity: string; + unityRelease: string; + dependencies: Record; + license?: string; + displayName: string; + description?: string; + keywords?: string[]; + homepage: string; + dist?: Dist; + }; + + type PkgInfo = { + name: PkgName; + versions: Record; + "dist-tags": { latest?: PkgVersionName }; + version?: PkgVersionName; + description?: string; + keywords?: string[]; + time: Record<"created" | "modified" | PkgVersionName, string>; + date?: Date; + }; + + type NameVersionPair = { + name: PkgName; + version: PkgVersionName; + }; + + type Dependency = { + name: PkgName; + version: PkgVersionName; + upstream: boolean; + self: boolean; + internal: boolean; + reason: string | null; + resolved?: boolean; + }; + + type ScopedRegistry = { + name: string; + url: string; + scopes: PkgName[]; + }; + + type PkgManifest = { + dependencies: Record; + scopedRegistries: ScopedRegistry[]; + testables: string[]; + }; + + type GlobalOptions = { + registry?: Registry; + verbose: boolean; + color: boolean; + upstream: boolean; + cn: boolean; + systemUser: boolean; + wsl: boolean; + chdir: string; + }; + + type UPMConfig = { + npmAuth?: Record; + }; + + type NpmFetchOptions = { + log: Logger; + registry: Registry; + alwaysAuth?: boolean; + email?: string; + password?: string; + token?: string; + username?: string; + }; +} diff --git a/lib/types/types.ts b/lib/types/types.ts deleted file mode 100644 index c7624acf..00000000 --- a/lib/types/types.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { Logger } from "npmlog"; - -export type PkgName = string; - -export type PkgVersionName = string; - -export type Pkg = `${PkgName}@${PkgVersionName}`; - -export type Region = "us" | "cn"; - -export type Registry = string; - -export type SemanticVersion = { - major: number; - minor: number; - patch?: number; - flag?: "a" | "b" | "f"; - flagValue?: 0 | 1 | 2; - build?: number; - loc?: string; - locValue?: number; - locBuild?: number; -}; - -export type Auth = { - alwaysAuth?: boolean; - _auth?: string; - username?: string; - password?: string; - email?: string; - token?: string; -}; - -export type Env = { - cwd: string; - color: boolean; - systemUser: boolean; - wsl: boolean; - npmAuth?: Record; - auth: Record; - upstream: boolean; - upstreamRegistry: string; - registry: string; - namespace: string; - editorVersion: string | null; - region: Region; - manifestPath: string; -}; - -export type Dist = { - tarball: string; - shasum: string; - integrity: string; -}; - -export type PkgVersion = { - unity: string; - unityRelease: string; - dependencies: Record; - license?: string; - displayName: string; - description?: string; - keywords?: string[]; - homepage: string; - dist?: Dist; -}; - -export type PkgInfo = { - name: PkgName; - versions: Record; - "dist-tags": { latest?: PkgVersionName }; - version?: PkgVersionName; - description?: string; - keywords?: string[]; - time: Record<"created" | "modified" | PkgVersionName, string>; - date?: Date; -}; - -export type NameVersionPair = { - name: PkgName; - version: PkgVersionName; -}; - -export type Dependency = { - name: PkgName; - version: PkgVersionName; - upstream: boolean; - self: boolean; - internal: boolean; - reason: string | null; - resolved?: boolean; -}; - -export type ScopedRegistry = { - name: string; - url: string; - scopes: PkgName[]; -}; - -export type PkgManifest = { - dependencies: Record; - scopedRegistries: ScopedRegistry[]; - testables: string[]; -}; - -export type GlobalOptions = { - registry?: Registry; - verbose: boolean; - color: boolean; - upstream: boolean; - cn: boolean; - systemUser: boolean; - wsl: boolean; - chdir: string; -}; - -export type UPMConfig = { - npmAuth?: Record; -}; - -export type NpmFetchOptions = { - log: Logger; - registry: Registry; - alwaysAuth?: boolean; - email?: string; - password?: string; - token?: string; - username?: string; -}; From 272dbadbc473d38e4c4f9eee5f7df7b9cfa9152e Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 16:10:19 +0200 Subject: [PATCH 110/201] refactor: improve ambient type declarations Improve type declarations for another-npm-registry-client by reading it's docs --- lib/client.ts | 13 ++++---- lib/types/another-npm-registry-client.d.ts | 38 +++++++++++++++++++--- lib/types/global.d.ts | 16 +++------ 3 files changed, 45 insertions(+), 22 deletions(-) diff --git a/lib/client.ts b/lib/client.ts index c8e2224d..ba2d4380 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -1,14 +1,15 @@ import { promisify } from "util"; -import RegClient from "another-npm-registry-client"; +import RegClient, { + GetParams, + AddUserParams, + AddUserResponse, +} from "another-npm-registry-client"; import log from "./logger"; export type NpmClient = { rawClient: RegClient; - get(path: string, options: { auth: Auth }): Promise; - adduser( - registry: Registry, - options: { auth: Auth } - ): Promise<{ ok: boolean | string; token: string }>; + get(uri: string, options: GetParams): Promise; + adduser(uri: string, options: AddUserParams): Promise; }; /** diff --git a/lib/types/another-npm-registry-client.d.ts b/lib/types/another-npm-registry-client.d.ts index b366fb98..ad207a1b 100644 --- a/lib/types/another-npm-registry-client.d.ts +++ b/lib/types/another-npm-registry-client.d.ts @@ -1,8 +1,38 @@ declare module "another-npm-registry-client" { - class RegClient { + export type NpmAuth = + | { + username: string; + password: string; + email: string; + alwaysAuth?: boolean; + } + | { token: string; alwaysAuth?: boolean }; + export type AddUserParams = { auth: NpmAuth }; + + export type GetParams = { + timeout: number; + follow: boolean; + staleOk: boolean; + auth: NpmAuth; + fullMetadata: boolean; + }; + + export type AddUserResponse = { ok: true; token: string } | { ok: false }; + + type ClientCallback = ( + error: Error | null, + data: TData, + raw: string, + res: Response + ) => void; + + export default class RegClient { constructor(...args: unknown[]); - get(...args: unknown[]): unknown; - adduser(...args: unknown[]): unknown; + get(uri: string, params: GetParams, cb: ClientCallback): void; + adduser( + uri: string, + params: AddUserParams, + cb: ClientCallback + ): void; } - export = RegClient; } diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index 88a11479..5d7c186b 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -1,4 +1,5 @@ import { Logger } from "npmlog"; +import { NpmAuth } from "another-npm-registry-client"; declare global { type PkgName = string; @@ -23,22 +24,13 @@ declare global { locBuild?: number; }; - type Auth = { - alwaysAuth?: boolean; - _auth?: string; - username?: string; - password?: string; - email?: string; - token?: string; - }; - type Env = { cwd: string; color: boolean; systemUser: boolean; wsl: boolean; - npmAuth?: Record; - auth: Record; + npmAuth?: Record; + auth: Record; upstream: boolean; upstreamRegistry: string; registry: string; @@ -116,7 +108,7 @@ declare global { }; type UPMConfig = { - npmAuth?: Record; + npmAuth?: Record; }; type NpmFetchOptions = { From 4391cca08016a5a1c509144217934705b1bf35a5 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 17:17:50 +0200 Subject: [PATCH 111/201] conf: bump target es version Bump to ES2020 to match Node 14 after consulting https://github.com/microsoft/TypeScript/wiki/Node-Target-Mapping --- tsconfig.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index 4f54999c..27e1d3c9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,9 +11,9 @@ // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ /* Language and Environment */ - "target": "es2016", + "target": "ES2020", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + "lib": ["ES2020"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ // "jsx": "preserve", /* Specify what JSX code is generated. */ // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ From ec983a242cf79f939718e4d2a6d228fc1e2b945f Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 17:35:22 +0200 Subject: [PATCH 112/201] deps: downgrade node types Downgrade to match node version --- package-lock.json | 24 +++++++++--------------- package.json | 2 +- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 90330c00..cd955f44 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,7 +39,7 @@ "@types/cli-table": "^0.3.2", "@types/libnpmsearch": "^2.0.4", "@types/lodash": "^4.14.199", - "@types/node": "^20.8.6", + "@types/node": "^14.18.63", "@types/npmlog": "^4.1.4", "@types/pkginfo": "^0.4.1", "@types/promptly": "^3.0.3", @@ -1155,13 +1155,10 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.8.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.6.tgz", - "integrity": "sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==", - "dev": true, - "dependencies": { - "undici-types": "~5.25.1" - } + "version": "14.18.63", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", + "dev": true }, "node_modules/@types/node-fetch": { "version": "2.6.6", @@ -11315,13 +11312,10 @@ "dev": true }, "@types/node": { - "version": "20.8.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.6.tgz", - "integrity": "sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==", - "dev": true, - "requires": { - "undici-types": "~5.25.1" - } + "version": "14.18.63", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", + "dev": true }, "@types/node-fetch": { "version": "2.6.6", diff --git a/package.json b/package.json index 1e5e1904..842d1d47 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "@types/cli-table": "^0.3.2", "@types/libnpmsearch": "^2.0.4", "@types/lodash": "^4.14.199", - "@types/node": "^20.8.6", + "@types/node": "^14.18.63", "@types/npmlog": "^4.1.4", "@types/pkginfo": "^0.4.1", "@types/promptly": "^3.0.3", From 3fb5972b6d38a7029e9d93477d2e5cfed7103f24 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 17:37:57 +0200 Subject: [PATCH 113/201] refactor: add correct response type --- lib/types/another-npm-registry-client.d.ts | 5 +- package-lock.json | 88 +++++++++++++++++++--- package.json | 1 + 3 files changed, 80 insertions(+), 14 deletions(-) diff --git a/lib/types/another-npm-registry-client.d.ts b/lib/types/another-npm-registry-client.d.ts index ad207a1b..ab5a65d2 100644 --- a/lib/types/another-npm-registry-client.d.ts +++ b/lib/types/another-npm-registry-client.d.ts @@ -1,4 +1,5 @@ declare module "another-npm-registry-client" { + import request from "request"; export type NpmAuth = | { username: string; @@ -19,11 +20,11 @@ declare module "another-npm-registry-client" { export type AddUserResponse = { ok: true; token: string } | { ok: false }; - type ClientCallback = ( + export type ClientCallback = ( error: Error | null, data: TData, raw: string, - res: Response + res: request.Response ) => void; export default class RegClient { diff --git a/package-lock.json b/package-lock.json index cd955f44..96637dcc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,6 +43,7 @@ "@types/npmlog": "^4.1.4", "@types/pkginfo": "^0.4.1", "@types/promptly": "^3.0.3", + "@types/request": "^2.48.11", "@types/update-notifier": "^6.0.5", "@typescript-eslint/eslint-plugin": "^6.8.0", "@typescript-eslint/parser": "^6.8.0", @@ -1114,6 +1115,12 @@ "node": ">= 10" } }, + "node_modules/@types/caseless": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.4.tgz", + "integrity": "sha512-2in/lrHRNmDvHPgyormtEralhPcN3An1gLjJzj2Bw145VBxkQ75JEXW6CTdMAwShiHQcYsl2d10IjQSdJSJz4g==", + "dev": true + }, "node_modules/@types/cli-table": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@types/cli-table/-/cli-table-0.3.2.tgz", @@ -1239,6 +1246,32 @@ "@types/node": "*" } }, + "node_modules/@types/request": { + "version": "2.48.11", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.11.tgz", + "integrity": "sha512-HuihY1+Vss5RS9ZHzRyTGIzwPTdrJBkCm/mAeLRYrOQu/MGqyezKXWOK1VhCnR+SDbp9G2mRUP+OVEqCrzpcfA==", + "dev": true, + "dependencies": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + } + }, + "node_modules/@types/request/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, "node_modules/@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", @@ -1260,6 +1293,12 @@ "@types/node": "*" } }, + "node_modules/@types/tough-cookie": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.4.tgz", + "integrity": "sha512-95Sfz4nvMAb0Nl9DTxN3j64adfwfbBPEYq14VN7zT5J5O2M9V6iZMIIQU1U+pJyl9agHYHNCqhCXgyEtIRRa5A==", + "dev": true + }, "node_modules/@types/update-notifier": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/@types/update-notifier/-/update-notifier-6.0.5.tgz", @@ -9982,12 +10021,6 @@ "node": ">=0.8.0" } }, - "node_modules/undici-types": { - "version": "5.25.3", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", - "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", - "dev": true - }, "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -11271,6 +11304,12 @@ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" }, + "@types/caseless": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.4.tgz", + "integrity": "sha512-2in/lrHRNmDvHPgyormtEralhPcN3An1gLjJzj2Bw145VBxkQ75JEXW6CTdMAwShiHQcYsl2d10IjQSdJSJz4g==", + "dev": true + }, "@types/cli-table": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@types/cli-table/-/cli-table-0.3.2.tgz", @@ -11395,6 +11434,31 @@ "@types/node": "*" } }, + "@types/request": { + "version": "2.48.11", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.11.tgz", + "integrity": "sha512-HuihY1+Vss5RS9ZHzRyTGIzwPTdrJBkCm/mAeLRYrOQu/MGqyezKXWOK1VhCnR+SDbp9G2mRUP+OVEqCrzpcfA==", + "dev": true, + "requires": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + }, + "dependencies": { + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + } + } + }, "@types/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", @@ -11416,6 +11480,12 @@ "@types/node": "*" } }, + "@types/tough-cookie": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.4.tgz", + "integrity": "sha512-95Sfz4nvMAb0Nl9DTxN3j64adfwfbBPEYq14VN7zT5J5O2M9V6iZMIIQU1U+pJyl9agHYHNCqhCXgyEtIRRa5A==", + "dev": true + }, "@types/update-notifier": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/@types/update-notifier/-/update-notifier-6.0.5.tgz", @@ -17751,12 +17821,6 @@ "dev": true, "optional": true }, - "undici-types": { - "version": "5.25.3", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", - "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", - "dev": true - }, "unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", diff --git a/package.json b/package.json index 842d1d47..399cccc4 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "@types/npmlog": "^4.1.4", "@types/pkginfo": "^0.4.1", "@types/promptly": "^3.0.3", + "@types/request": "^2.48.11", "@types/update-notifier": "^6.0.5", "@typescript-eslint/eslint-plugin": "^6.8.0", "@typescript-eslint/parser": "^6.8.0", From f2d7fdedba40caff4104f3c7d8b577456e52509d Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 17:38:40 +0200 Subject: [PATCH 114/201] feat: typecheck errors Add some custom type assertions for expected errors --- lib/cli.ts | 3 +- lib/client.ts | 61 ++++++++++++++++++++++++++++++- lib/cmd-login.ts | 20 +++++----- lib/cmd-search.ts | 10 ++--- lib/core.ts | 8 ++-- lib/error-handler.ts | 15 -------- lib/types/npm-registry-fetch.d.ts | 6 +++ lib/utils/error-type-guards.ts | 24 ++++++++++++ 8 files changed, 107 insertions(+), 40 deletions(-) delete mode 100644 lib/error-handler.ts create mode 100644 lib/types/npm-registry-fetch.d.ts create mode 100644 lib/utils/error-type-guards.ts diff --git a/lib/cli.ts b/lib/cli.ts index 87f5db70..b1abf9e9 100644 --- a/lib/cli.ts +++ b/lib/cli.ts @@ -13,6 +13,7 @@ import log from "./logger"; // update-notifier import pkg from "../package.json"; +import { assertIsError } from "./utils/error-type-guards"; pkginfo(module); const notifier = updateNotifier({ pkg }); @@ -114,7 +115,7 @@ program const retCode = await login(options); if (retCode) process.exit(retCode); } catch (err) { - // @ts-ignore + assertIsError(err); log.error("", err.message); process.exit(1); } diff --git a/lib/client.ts b/lib/client.ts index ba2d4380..bb26db7a 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -3,15 +3,72 @@ import RegClient, { GetParams, AddUserParams, AddUserResponse, + ClientCallback, } from "another-npm-registry-client"; import log from "./logger"; +import request from "request"; +import { AssertionError } from "assert"; +import { assertIsError } from "./utils/error-type-guards"; export type NpmClient = { rawClient: RegClient; + /** + * @throws {NpmClientError} + */ get(uri: string, options: GetParams): Promise; + /** + * @throws {NpmClientError} + */ adduser(uri: string, options: AddUserParams): Promise; }; +export class NpmClientError extends Error { + cause: Error | null; + response: request.Response; + + constructor(cause: Error | null, response: request.Response) { + super( + cause?.message ?? + "An error occurred while interacting with an Npm registry" + ); + this.name = "NpmClientError"; + this.cause = cause; + this.response = response; + } +} + +export function assertIsNpmClientError( + x: unknown +): asserts x is NpmClientError { + if (!(x instanceof NpmClientError)) + throw new AssertionError({ + message: "Given object was not an NpmClientError", + actual: x, + }); +} + +/** + * Normalizes a RegClient function. Specifically it merges it's multiple + * callback arguments into a single NormalizedError object. This function + * also takes care of binding and promisifying. + */ +function normalizeClientFunction( + client: RegClient, + fn: (uri: string, params: TParam, cb: ClientCallback) => void +): (uri: string, params: TParam) => Promise { + const bound = fn.bind(client); + const withNormalizedError = ( + uri: string, + params: TParam, + cb: (error: NpmClientError, data: TData) => void + ) => { + return bound(uri, params, (error, data, raw, res) => { + cb(new NpmClientError(error, res), data); + }); + }; + return promisify(withNormalizedError); +} + /** * Return npm client */ @@ -22,7 +79,7 @@ export const getNpmClient = (): NpmClient => { // The instance of raw npm client rawClient: client, // Promisified methods - get: promisify(client.get.bind(client)), - adduser: promisify(client.adduser.bind(client)), + get: normalizeClientFunction(client, client.get), + adduser: normalizeClientFunction(client, client.adduser), }; }; diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index 24d9b89c..965cf09c 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -2,7 +2,7 @@ import fs from "fs"; import path from "path"; import _ from "lodash"; import promptly from "promptly"; -import { getNpmClient } from "./client"; +import { assertIsNpmClientError, getNpmClient } from "./client"; import log from "./logger"; @@ -74,7 +74,6 @@ export const login = async function (options: LoginOptions) { /** * Return npm login token - * @param {*} param0 */ const npmLogin = async function ({ username, @@ -97,19 +96,20 @@ const npmLogin = async function ({ }, }); if (_.isString(data.ok)) log.notice("auth", data.ok); - else if (data.ok) + else if (data.ok) { log.notice("auth", `you are authenticated as '${username}'`); - const token = data.token; - return { code: 0, token }; + const token = data.token; + return { code: 0, token }; + } + return { code: 1 }; } catch (err) { - // TODO: Type-check error - // @ts-ignore - if (err.statusCode == 401 || err.code == "EAUTHUNKNOWN") { + assertIsNpmClientError(err); + + if (err.response.statusCode == 401) { log.warn("401", "Incorrect username or password"); return { code: 1 }; } else { - // @ts-ignore - log.error(err.statusCode ? err.statusCode.toString() : "", err.message); + log.error(err.response.statusCode.toString(), err.message); return { code: 1 }; } } diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index f2c75e19..8a832943 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -3,7 +3,7 @@ import npmFetch from "npm-registry-fetch"; import Table from "cli-table"; import log from "./logger"; import { env, getLatestVersion, getNpmFetchOptions, parseEnv } from "./core"; -import { is404Error } from "./error-handler"; +import { is404Error, isHttpError } from "./utils/error-type-guards"; type TableRow = [PkgName, PkgVersionName, string, ""]; @@ -25,9 +25,7 @@ const searchEndpoint = async function ( // @ts-ignore return results.map(getTableRow); } catch (err) { - if (!is404Error(err)) { - // TODO: Type check error - // @ts-ignore + if (isHttpError(err) && !is404Error(err)) { log.error("", err.message); } log.warn("", "fast search endpoint is not available, using old search."); @@ -66,9 +64,7 @@ const searchOld = async function ( (row) => row.filter((x) => x.toLowerCase().includes(klc)).length > 0 ); } catch (err) { - if (!is404Error(err)) { - // TODO: Type-check error - // @ts-ignore + if (isHttpError(err) && !is404Error(err)) { log.error("", err.message); } log.warn("", "/-/all endpoint is not available"); diff --git a/lib/core.ts b/lib/core.ts index 68809cf0..2bee8d44 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -12,6 +12,7 @@ import yaml from "yaml"; import execute from "./utils/process"; import { getNpmClient } from "./client"; import log from "./logger"; +import { assertIsError } from "./utils/error-type-guards"; // @ts-ignore export const env: Env = {}; @@ -339,8 +340,7 @@ export const loadManifest = function (): PkgManifest | null { const text = fs.readFileSync(env.manifestPath, { encoding: "utf8" }); return JSON.parse(text); } catch (err) { - // TODO: Type error - // @ts-ignore + assertIsError(err); if (err.code == "ENOENT") log.error("manifest", "file Packages/manifest.json does not exist"); else { @@ -348,7 +348,6 @@ export const loadManifest = function (): PkgManifest | null { "manifest", `failed to parse Packages/manifest.json at ${env.manifestPath}` ); - // @ts-ignore log.error("manifest", err.message); } return null; @@ -362,9 +361,8 @@ export const saveManifest = function (data: PkgManifest) { fs.writeFileSync(env.manifestPath, json); return true; } catch (err) { + assertIsError(err); log.error("manifest", "can not write manifest json file"); - // @ts-ignore - // TODO: Type-check error log.error("manifest", err.message); return false; } diff --git a/lib/error-handler.ts b/lib/error-handler.ts deleted file mode 100644 index 32c06335..00000000 --- a/lib/error-handler.ts +++ /dev/null @@ -1,15 +0,0 @@ -// TODO: Use better error types - -export const isConnectionError = function (err: any) { - return err.code == "ENOTFOUND"; -}; - -export const is404Error = function (err: any) { - return (err.response && err.response.notFound) || err.message.includes("404"); -}; - -const is503Error = function (err: any) { - return err.response && err.status == 503; -}; - -export default { isConnectionError, is404Error, is503Error }; diff --git a/lib/types/npm-registry-fetch.d.ts b/lib/types/npm-registry-fetch.d.ts new file mode 100644 index 00000000..ff3fed57 --- /dev/null +++ b/lib/types/npm-registry-fetch.d.ts @@ -0,0 +1,6 @@ +declare module "npm-registry-fetch" { + declare class HttpErrorBase extends Error { + statusCode: Response["status"]; + code: `E${Response["status"]}}` | `E${string}`; + } +} diff --git a/lib/utils/error-type-guards.ts b/lib/utils/error-type-guards.ts new file mode 100644 index 00000000..701db6ef --- /dev/null +++ b/lib/utils/error-type-guards.ts @@ -0,0 +1,24 @@ +import { HttpErrorBase } from "npm-registry-fetch"; +import { AssertionError } from "assert"; +import ErrnoException = NodeJS.ErrnoException; + +export function assertIsError(x: unknown): asserts x is ErrnoException { + if (!(x instanceof Error)) + throw new AssertionError({ + message: "Argument was not an error!", + actual: x, + }); +} + +export const isHttpError = (x: unknown): x is HttpErrorBase => { + return x instanceof HttpErrorBase; +}; + +export const isConnectionError = (err: HttpErrorBase): boolean => + err.code === "ENOTFOUND"; + +export const is404Error = (err: HttpErrorBase): boolean => + err.statusCode === 404 || err.message.includes("404"); + +export const is503Error = (err: HttpErrorBase): boolean => + err.statusCode === 503; From 0d33f43b22505114b0acc5f4ddbd16c7392a8084 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 17:39:12 +0200 Subject: [PATCH 115/201] misc: add shared idea files --- .idea/.gitignore | 8 ++++++++ .idea/inspectionProfiles/Project_Default.xml | 6 ++++++ .idea/modules.xml | 8 ++++++++ .idea/openupm-cli.iml | 12 ++++++++++++ .idea/prettier.xml | 6 ++++++ .idea/vcs.xml | 6 ++++++ 6 files changed, 46 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/openupm-cli.iml create mode 100644 .idea/prettier.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..13566b81 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 00000000..03d9549e --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..04f9c757 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/openupm-cli.iml b/.idea/openupm-cli.iml new file mode 100644 index 00000000..24643cc3 --- /dev/null +++ b/.idea/openupm-cli.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/prettier.xml b/.idea/prettier.xml new file mode 100644 index 00000000..b0c1c68f --- /dev/null +++ b/.idea/prettier.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..35eb1ddf --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file From 971a81d6563d1b719fc433a1870627d61f4f9122 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 20:38:10 +0200 Subject: [PATCH 116/201] refactor: clean up imports --- lib/cli.ts | 1 - lib/client.ts | 3 +-- lib/core.ts | 4 ++-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/cli.ts b/lib/cli.ts index b1abf9e9..b45a572c 100644 --- a/lib/cli.ts +++ b/lib/cli.ts @@ -11,7 +11,6 @@ import { login } from "./cmd-login"; import log from "./logger"; // update-notifier - import pkg from "../package.json"; import { assertIsError } from "./utils/error-type-guards"; diff --git a/lib/client.ts b/lib/client.ts index bb26db7a..e430584c 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -1,14 +1,13 @@ import { promisify } from "util"; import RegClient, { - GetParams, AddUserParams, AddUserResponse, ClientCallback, + GetParams, } from "another-npm-registry-client"; import log from "./logger"; import request from "request"; import { AssertionError } from "assert"; -import { assertIsError } from "./utils/error-type-guards"; export type NpmClient = { rawClient: RegClient; diff --git a/lib/core.ts b/lib/core.ts index 2bee8d44..ea6484c5 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -10,9 +10,9 @@ import isWsl from "is-wsl"; import TOML from "@iarna/toml"; import yaml from "yaml"; import execute from "./utils/process"; -import { getNpmClient } from "./client"; +import {getNpmClient} from "./client"; import log from "./logger"; -import { assertIsError } from "./utils/error-type-guards"; +import {assertIsError} from "./utils/error-type-guards"; // @ts-ignore export const env: Env = {}; From 8706d1b278995f367ffe852c5844128c5f64bcb3 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 20:49:54 +0200 Subject: [PATCH 117/201] refactor: make variables constant Make variables constant where possible --- lib/cmd-add.ts | 5 ++++- lib/cmd-remove.ts | 4 +++- lib/core.ts | 8 +++++--- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index acdc8750..688a8425 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -57,7 +57,10 @@ const _add = async function ({ // is upstream package flag let isUpstreamPackage = false; // parse name - let { name, version } = parseName(pkg); + const parseResult = parseName(pkg); + const name = parseResult.name; + let version = parseResult.version; + // load manifest const manifest = loadManifest(); if (manifest === null) return { code: 1, dirty }; diff --git a/lib/cmd-remove.ts b/lib/cmd-remove.ts index 9109b5a4..aad8a7ac 100644 --- a/lib/cmd-remove.ts +++ b/lib/cmd-remove.ts @@ -30,7 +30,9 @@ const _remove = async function (pkg: Pkg) { // dirty flag let dirty = false; // parse name - let { name, version } = parseName(pkg); + const parseResult = parseName(pkg); + const name = parseResult.name; + let version = parseResult.version; if (version) { log.warn("", `please replace '${name}@${version}' with '${name}'`); return { code: 1, dirty }; diff --git a/lib/core.ts b/lib/core.ts index ea6484c5..a9c164f5 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -10,9 +10,9 @@ import isWsl from "is-wsl"; import TOML from "@iarna/toml"; import yaml from "yaml"; import execute from "./utils/process"; -import {getNpmClient} from "./client"; +import { getNpmClient } from "./client"; import log from "./logger"; -import {assertIsError} from "./utils/error-type-guards"; +import { assertIsError } from "./utils/error-type-guards"; // @ts-ignore export const env: Env = {}; @@ -243,10 +243,12 @@ export const fetchPackageDependencies = async function ({ }; if (!depObj.internal) { // try fetching package info from cache - let { pkgInfo, upstream } = _.get(cachedPacakgeInfoDict, entry.name, { + const getResult = _.get(cachedPacakgeInfoDict, entry.name, { pkgInfo: null, upstream: false, }); + let pkgInfo = getResult.pkgInfo; + const upstream = getResult.upstream; if (pkgInfo !== null) { depObj.upstream = upstream; } From de829926df117d3daec5f7a91e24453372ab9148 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 20:52:01 +0200 Subject: [PATCH 118/201] misc: remove outdated ts-ignores --- lib/cmd-add.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index 688a8425..3eb5a42a 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -161,8 +161,6 @@ const _add = async function ({ // print suggestion for depsInvalid depsInvalid.forEach((depObj) => { if (depObj.reason == "package404" || depObj.reason == "version404") { - // TODO: Do null check on manifest - // @ts-ignore const resolvedVersion = manifest.dependencies[depObj.name]; depObj.resolved = Boolean(resolvedVersion); if (!depObj.resolved) @@ -185,8 +183,6 @@ const _add = async function ({ } // add to dependencies const oldVersion = manifest.dependencies[name]; - // TODO: Do undefined check on version - // @ts-ignore manifest.dependencies[name] = version; if (!oldVersion) { // Log the added package From c511fd10b286ccdbaf3d2dbec5c4541d8fea28b4 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 20:52:14 +0200 Subject: [PATCH 119/201] refactor: handle potential null --- lib/cmd-add.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index 3eb5a42a..d3c4ede2 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -208,10 +208,10 @@ const _add = async function ({ return addr == env.registry; }; if (manifest.scopedRegistries.filter(filterEntry).length <= 0) { + const name = url.parse(env.registry).hostname; + if (name === null) throw new Error("Could not resolve registry name"); manifest.scopedRegistries.push({ - // TODO: Handle null name - // @ts-ignore - name: url.parse(env.registry).hostname, + name, url: env.registry, scopes: [], }); From 54019f105881033b61c434d14af6e501e3ac7ebc Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:20:57 +0200 Subject: [PATCH 120/201] fix: add better type for upm auth Previously mistakenly used the same auth type as for npm --- lib/types/global.d.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index 5d7c186b..72a5e7e5 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -107,8 +107,13 @@ declare global { chdir: string; }; + type UpmAuth = { + email: string; + alwaysAuth: boolean; + } & ({ token: string } | { _auth: string }); + type UPMConfig = { - npmAuth?: Record; + npmAuth?: Record; }; type NpmFetchOptions = { From ea10e4f9f9b09b48f5652955468f8663080888e5 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:22:57 +0200 Subject: [PATCH 121/201] refactor: fix type warning Instead of assigning different auth properties separately, assign all at once in the different if branches in order to avoid type warnings --- lib/cmd-login.ts | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index 965cf09c..8ef9678a 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -230,19 +230,18 @@ const writeUnityToken = async function ({ // Remove ending slash of registry if (registry.endsWith("/")) registry = registry.replace(/\/$/, ""); - // TODO: Investigate ts warnings - // Update config file - // @ts-ignore - config["npmAuth"][registry] = { - email, - alwaysAuth, - }; if (basicAuth) { - // @ts-ignore - config["npmAuth"][registry]._auth = _auth; + config["npmAuth"][registry] = { + email, + alwaysAuth, + _auth, + }; } else { - // @ts-ignore - config["npmAuth"][registry].token = token; + config["npmAuth"][registry] = { + email, + alwaysAuth, + token, + }; } // Write config file await saveUpmConfig(config, configDir); From 6e6a4610bba2963c5fc9de78349b982f8e89a2ae Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:23:17 +0200 Subject: [PATCH 122/201] fix: type parameter --- lib/cmd-login.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index 8ef9678a..9fa66e40 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -215,7 +215,7 @@ const writeUnityToken = async function ({ registry, token, }: { - _auth: unknown; + _auth: string; alwaysAuth: boolean; basicAuth: boolean; email: string; From a4f01eddf6ce73521462a712e092a31d59de1c7f Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:23:29 +0200 Subject: [PATCH 123/201] misc: delete outdates jsdoc comment --- lib/cmd-login.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index 9fa66e40..7d2148f1 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -205,7 +205,6 @@ export const validateRegistry = function (value: Registry): Registry { /** * Write npm token to Unity - * @param {*} param0 */ const writeUnityToken = async function ({ _auth, From 36f1a2eb029f3554752ea47fec268b5e9c7d3c32 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:27:42 +0200 Subject: [PATCH 124/201] fix: unhandled null values Check token and _auth for null before respective usage --- lib/cmd-login.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index 7d2148f1..98f662aa 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -35,8 +35,8 @@ export const login = async function (options: LoginOptions) { options._global.registry = await promptly.prompt("Registry: ", { validator: [validateRegistry], }); - let token = null; - let _auth = null; + let token: string | null = null; + let _auth: string | null = null; if (options.basicAuth) { // basic auth const userPass = `${options.username}:${options.password}`; @@ -61,6 +61,7 @@ export const login = async function (options: LoginOptions) { token: result.token, }); } + // write unity token await writeUnityToken({ _auth, @@ -214,12 +215,12 @@ const writeUnityToken = async function ({ registry, token, }: { - _auth: string; + _auth: string | null; alwaysAuth: boolean; basicAuth: boolean; email: string; registry: Registry; - token: string; + token: string | null; }) { // Create config dir if necessary const configDir = await getUpmConfigDir(); @@ -230,12 +231,14 @@ const writeUnityToken = async function ({ if (registry.endsWith("/")) registry = registry.replace(/\/$/, ""); if (basicAuth) { + if (_auth === null) throw new Error("Auth is null"); config["npmAuth"][registry] = { email, alwaysAuth, _auth, }; } else { + if (token === null) throw new Error("Token is null"); config["npmAuth"][registry] = { email, alwaysAuth, From a9e27e3a34c8919fa3b1b0bf56a0175614337bbb Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:32:02 +0200 Subject: [PATCH 125/201] fix: type error Convert results array to string before logging to avoid type error. I joined the results using line-breaks, don't know if this is intended. --- lib/cmd-search.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index 8a832943..3fd47d07 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -4,6 +4,7 @@ import Table from "cli-table"; import log from "./logger"; import { env, getLatestVersion, getNpmFetchOptions, parseEnv } from "./core"; import { is404Error, isHttpError } from "./utils/error-type-guards"; +import * as os from "os"; type TableRow = [PkgName, PkgVersionName, string, ""]; @@ -18,9 +19,7 @@ const searchEndpoint = async function ( if (!registry) registry = env.registry; try { const results = await npmSearch(keyword, getNpmFetchOptions()); - // TODO: This should be converted to a string - // @ts-ignore - log.verbose("npmsearch", results); + log.verbose("npmsearch", results.join(os.EOL)); // TODO: Fix type error // @ts-ignore return results.map(getTableRow); From 4254991b6c4a9a758d196540bd168ec4c6b53465 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:33:27 +0200 Subject: [PATCH 126/201] refactor: use existing type Previously added a custom type for npm search options even though such a type already exists --- lib/core.ts | 5 +++-- lib/types/global.d.ts | 10 ---------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index a9c164f5..968c111d 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -13,6 +13,7 @@ import execute from "./utils/process"; import { getNpmClient } from "./client"; import log from "./logger"; import { assertIsError } from "./utils/error-type-guards"; +import search from "libnpmsearch"; // @ts-ignore export const env: Env = {}; @@ -162,8 +163,8 @@ export const parseName = function (pkg: Pkg): { }; // Get npm fetch options -export const getNpmFetchOptions = function (): NpmFetchOptions { - const opts: NpmFetchOptions = { +export const getNpmFetchOptions = function (): search.Options { + const opts: search.Options = { log, registry: env.registry, }; diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index 72a5e7e5..abe770c4 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -115,14 +115,4 @@ declare global { type UPMConfig = { npmAuth?: Record; }; - - type NpmFetchOptions = { - log: Logger; - registry: Registry; - alwaysAuth?: boolean; - email?: string; - password?: string; - token?: string; - username?: string; - }; } From bcabfb78bacf0ff0c239ba08f7db1351d94448ea Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:44:35 +0200 Subject: [PATCH 127/201] fix: add missing import Response type was ambiguous without import --- lib/types/npm-registry-fetch.d.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/types/npm-registry-fetch.d.ts b/lib/types/npm-registry-fetch.d.ts index ff3fed57..e0920e18 100644 --- a/lib/types/npm-registry-fetch.d.ts +++ b/lib/types/npm-registry-fetch.d.ts @@ -1,3 +1,5 @@ +import { Response } from "request"; + declare module "npm-registry-fetch" { declare class HttpErrorBase extends Error { statusCode: Response["status"]; From 96de2d780ae8fd524b35580233eee341148f04aa Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:45:10 +0200 Subject: [PATCH 128/201] fix: remove extraneous declare It seems to cause problems and to be honest I don't know if we need it --- lib/types/npm-registry-fetch.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/types/npm-registry-fetch.d.ts b/lib/types/npm-registry-fetch.d.ts index e0920e18..3dedc984 100644 --- a/lib/types/npm-registry-fetch.d.ts +++ b/lib/types/npm-registry-fetch.d.ts @@ -1,7 +1,7 @@ import { Response } from "request"; declare module "npm-registry-fetch" { - declare class HttpErrorBase extends Error { + class HttpErrorBase extends Error { statusCode: Response["status"]; code: `E${Response["status"]}}` | `E${string}`; } From 316ac87589786bb3fcb6c11f4752251763b66e3d Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:49:36 +0200 Subject: [PATCH 129/201] fix: type error The result of the nmp-search function is search.Result but because we know the openupm server actually returns PkgInfo objects we can change the type --- lib/cmd-search.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index 3fd47d07..de215b64 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -18,10 +18,9 @@ const searchEndpoint = async function ( ): Promise { if (!registry) registry = env.registry; try { - const results = await npmSearch(keyword, getNpmFetchOptions()); + // NOTE: The results of the search will be PkgInfo objects so we can change the type + const results = await npmSearch(keyword, getNpmFetchOptions()); log.verbose("npmsearch", results.join(os.EOL)); - // TODO: Fix type error - // @ts-ignore return results.map(getTableRow); } catch (err) { if (isHttpError(err) && !is404Error(err)) { From 32b29d2012c776548434f450b34f015598b4b6c9 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:50:01 +0200 Subject: [PATCH 130/201] fix: remove extraneous ts-ignore --- lib/core.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/core.ts b/lib/core.ts index 968c111d..a1d1c00f 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -3,7 +3,6 @@ import path from "path"; import url from "url"; import _ from "lodash"; import chalk from "chalk"; -// @ts-ignore import mkdirp from "mkdirp"; import net from "node:net"; import isWsl from "is-wsl"; From 8e2c57d635a411d38b7270e38c2276ce08729c8f Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:56:06 +0200 Subject: [PATCH 131/201] fix: type error Instead of initializing env with empty object, populate with default members in order to avoid type error --- lib/core.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index a1d1c00f..bb02585f 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -14,8 +14,20 @@ import log from "./logger"; import { assertIsError } from "./utils/error-type-guards"; import search from "libnpmsearch"; -// @ts-ignore -export const env: Env = {}; +export const env: Env = { + auth: {}, + color: false, + cwd: "", + editorVersion: null, + manifestPath: "", + namespace: "", + region: "us", + registry: "", + systemUser: false, + upstream: false, + upstreamRegistry: "", + wsl: false, +}; // Parse env export const parseEnv = async function ( From 69407832e3edb225b5511d796dd5da8e52303f8c Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 21:59:00 +0200 Subject: [PATCH 132/201] fix: type error Type was declared incorrectly --- lib/types/global.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index abe770c4..a5dbe8a8 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -29,7 +29,7 @@ declare global { color: boolean; systemUser: boolean; wsl: boolean; - npmAuth?: Record; + npmAuth?: Record; auth: Record; upstream: boolean; upstreamRegistry: string; From a5d135e2543a267a5b09029908855d55f1f642bf Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 22:01:19 +0200 Subject: [PATCH 133/201] misc: remove extraneous ts-ignores --- lib/core.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index bb02585f..395f0b02 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -95,8 +95,6 @@ export const parseEnv = async function ( alwaysAuth: regAuth.alwaysAuth || false, }; } else if ("_auth" in regAuth) { - // NOTE: We can rule out undefined because of the if - // @ts-ignore const buf = Buffer.from(regAuth._auth, "base64"); const text = buf.toString("utf-8"); const [username, password] = text.split(":", 2); @@ -111,8 +109,6 @@ export const parseEnv = async function ( "env.auth", `failed to parse auth info for ${reg} in .upmconfig.toml: missing token or _auth fields` ); - // TODO: Convert to string - // @ts-ignore log.warn("env.auth", regAuth); } } From e0e975cea3803cf94d8dfec0c25e7392bed7ffe8 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 22:02:28 +0200 Subject: [PATCH 134/201] fix: type error Based on line 166 we can assume that undefined is actually a valid value for the version. Adjusted signature accordingly --- lib/core.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index 395f0b02..7f92f34d 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -158,14 +158,12 @@ export const parseEnv = async function ( // Parse name to {name, version} export const parseName = function (pkg: Pkg): { name: PkgName; - version: PkgVersionName; + version: PkgVersionName | undefined; } { const segs = pkg.split("@"); const name = segs[0]; const version = segs.length > 1 ? segs.slice(1, segs.length).join("@") : undefined; - // TODO: Handle version undefined - // @ts-ignore return { name, version }; }; From 6b510c31d03195290f9774edb0439f3c78a268cc Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 22:03:58 +0200 Subject: [PATCH 135/201] refactor: prevent value conversion Explicitly check for undefined instead using auto-conversion to avoid "isGitOrLocal" becoming equal to some string --- lib/cmd-add.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index d3c4ede2..65d0f7bc 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -71,7 +71,7 @@ const _add = async function ({ // packages that added to scope registry const pkgsInScope: PkgName[] = []; const isGitOrLocal = - version && + version !== undefined && (version.startsWith("git") || version.startsWith("file") || version.startsWith("http")); From 4b195b89246d36e41c0949a525e3a4819853837e Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 22:08:17 +0200 Subject: [PATCH 136/201] misc: handle undefined Probably unrecoverable, so we just throw --- lib/cmd-add.ts | 1 + lib/cmd-deps.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index 65d0f7bc..60af54d6 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -182,6 +182,7 @@ const _add = async function ({ } else pkgsInScope.push(name); } // add to dependencies + if (version === undefined) throw new Error("Version is undefined"); const oldVersion = manifest.dependencies[name]; manifest.dependencies[name] = version; if (!oldVersion) { diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index af6859fb..b836d738 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -13,6 +13,7 @@ export const deps = async function (pkg: Pkg, options: DepsOptions) { // parse name const { name, version } = parseName(pkg); // deps + if (version === undefined) throw new Error("Version undefined"); await _deps({ name, version, deep: options.deep }); return 0; }; From 1a86f870cf76bc99e54ffa4588b0eb2f3d965414 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 22:10:27 +0200 Subject: [PATCH 137/201] refactor: shorten and fix type error Use Object.assign instead of copying all properties manually. This also avoids an error for unchecked property access --- lib/core.ts | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index 7f92f34d..da740c72 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -174,13 +174,7 @@ export const getNpmFetchOptions = function (): search.Options { registry: env.registry, }; const auth = env.auth[env.registry]; - if (auth) { - opts.alwaysAuth = auth.alwaysAuth; - opts.email = auth.email; - opts.password = auth.password; - opts.token = auth.token; - opts.username = auth.username; - } + if (auth) Object.assign(opts, auth); return opts; }; From abc12c8feb9eae582eb342a07e794c68223bd232 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 22:11:55 +0200 Subject: [PATCH 138/201] fix: type error Make properties of options optional --- lib/types/another-npm-registry-client.d.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/types/another-npm-registry-client.d.ts b/lib/types/another-npm-registry-client.d.ts index ab5a65d2..1cdce144 100644 --- a/lib/types/another-npm-registry-client.d.ts +++ b/lib/types/another-npm-registry-client.d.ts @@ -11,11 +11,11 @@ declare module "another-npm-registry-client" { export type AddUserParams = { auth: NpmAuth }; export type GetParams = { - timeout: number; - follow: boolean; - staleOk: boolean; - auth: NpmAuth; - fullMetadata: boolean; + timeout?: number; + follow?: boolean; + staleOk?: boolean; + auth?: NpmAuth; + fullMetadata?: boolean; }; export type AddUserResponse = { ok: true; token: string } | { ok: false }; From 18c00ca3add1240b8a614a433cd3556f7fd0c4b1 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 22:13:00 +0200 Subject: [PATCH 139/201] fix: potential undefined error --- lib/cmd-login.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index 98f662aa..fb44e495 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -147,10 +147,8 @@ export const getNpmrcPath = function () { const dirPath = process.env.USERPROFILE ? process.env.USERPROFILE : process.env.HOME; - // TODO: Handle undefined - // @ts-ignore - const configPath = path.join(dirPath, ".npmrc"); - return configPath; + if (dirPath === undefined) throw new Error("Could not determine home path"); + return path.join(dirPath, ".npmrc"); }; /** From cbcbb1465c9d8428e2a253fbeb28fe48a6b633da Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 22:13:40 +0200 Subject: [PATCH 140/201] fix: extraneous parameter According to the signature of search it expects only one parameter. Removed the second empty string parameter --- lib/cmd-login.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index fb44e495..c6ab488d 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -165,9 +165,7 @@ export const generateNpmrcLines = function ( let lines = content ? content.split("\n") : []; const quotes = /(\?|=)/.test(token) ? '"' : ""; // get the registry url without http protocal - // TODO: Investigate extra quotes - // @ts-ignore - let registryUrl = registry.slice(registry.search(/:\/\//, "") + 1); + let registryUrl = registry.slice(registry.search(/:\/\//) + 1); // add trailing slash if (!registryUrl.endsWith("/")) registryUrl = registryUrl + "/"; const index = _.findIndex(lines, function (element, index, array) { From 0fc0ac5d0219ed06694d8387b423a99c94bb1755 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Mon, 23 Oct 2023 22:14:47 +0200 Subject: [PATCH 141/201] fix: editing readonly list The array given to findIndex seems to be readonly so instead we modify the original lines array --- lib/cmd-login.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index c6ab488d..2a88f340 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -168,12 +168,10 @@ export const generateNpmrcLines = function ( let registryUrl = registry.slice(registry.search(/:\/\//) + 1); // add trailing slash if (!registryUrl.endsWith("/")) registryUrl = registryUrl + "/"; - const index = _.findIndex(lines, function (element, index, array) { + const index = _.findIndex(lines, function (element, index) { if (element.indexOf(registryUrl + ":_authToken=") !== -1) { // If an entry for the auth token is found, replace it - // TODO: Investigate error - // @ts-ignore - array[index] = element.replace( + lines[index] = element.replace( /authToken=.*/, "authToken=" + quotes + token + quotes ); From db97f155290ce3e9e6efad81f9af377a1c75d683 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 10:14:27 +0200 Subject: [PATCH 142/201] fix: type errors First we type-assert the result of npmFetch.json to match its usage. We can assume that it is either an array or record of packages. We also move the log until later in the code and log the objects variable instead of results, since that is guarantied to be an array. We also convert the array to a string using join for better logging --- lib/cmd-search.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index de215b64..fd7644c4 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -35,10 +35,9 @@ const searchOld = async function ( ): Promise { // all endpoint try { - const results = await npmFetch.json("/-/all", getNpmFetchOptions()); - // TODO: This should be converted to a string - // @ts-ignore - log.verbose("endpoint.all", results); + const results = | PkgInfo[]>( + await npmFetch.json("/-/all", getNpmFetchOptions()) + ); let objects: PkgInfo[] = []; if (results) { if (Array.isArray(results)) { @@ -47,11 +46,10 @@ const searchOld = async function ( } else { // results is an object if ("_updated" in results) delete results["_updated"]; - // TODO: Do better type checking - // @ts-ignore objects = Object.values(results); } } + log.verbose("endpoint.all", objects.join(os.EOL)); // prepare rows const rows = objects.map((pkg) => { return getTableRow(pkg); From 543ac4f97d9fc3634dfc16204cfc4e66ca73239b Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 10:30:16 +0200 Subject: [PATCH 143/201] refactor: simplify property access --- lib/core.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/core.ts b/lib/core.ts index da740c72..1a1a7cee 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -322,7 +322,7 @@ export const fetchPackageDependencies = async function ({ // Get latest version from package info // @ts-ignore export const getLatestVersion = function (pkgInfo: PkgInfo): PkgVersionName { - if (pkgInfo["dist-tags"] && pkgInfo["dist-tags"]["latest"]) + if (pkgInfo["dist-tags"]?.["latest"] !== undefined) return pkgInfo["dist-tags"]["latest"]; else if (pkgInfo.versions) { // @ts-ignore From 812e87683066723e86d67544eba6e452a4aa63e4 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 10:30:33 +0200 Subject: [PATCH 144/201] fix: handle undefined Throw if no latest version could be found --- lib/core.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index 1a1a7cee..25297faf 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -320,20 +320,17 @@ export const fetchPackageDependencies = async function ({ }; // Get latest version from package info -// @ts-ignore export const getLatestVersion = function (pkgInfo: PkgInfo): PkgVersionName { if (pkgInfo["dist-tags"]?.["latest"] !== undefined) return pkgInfo["dist-tags"]["latest"]; else if (pkgInfo.versions) { - // @ts-ignore - // TODO: Handle undefined return Object.keys(pkgInfo.versions).find( // TODO: Something is wrong here // @ts-ignore (key) => pkgInfo.versions[key] == "latest" ); } else if (pkgInfo.version) return pkgInfo.version; - // TODO: Not handling undefined case + throw new Error("Could not get latest version from package"); }; // Load manifest json file From 901b1c3613e03a8acb5aa0da6b5e269e818a2604 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 10:33:56 +0200 Subject: [PATCH 145/201] fix: handle undefined Throw if upm-config dir-path could not be resolved --- lib/core.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index 25297faf..100563b2 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -369,7 +369,7 @@ export const saveManifest = function (data: PkgManifest) { // Get .upmconfig.toml directory export const getUpmConfigDir = async function (): Promise { - let dirPath = ""; + let dirPath: string | undefined = ""; const systemUserSubPath = "Unity/config/ServiceAccounts"; if (env.wsl) { if (!isWsl) { @@ -387,8 +387,6 @@ export const getUpmConfigDir = async function (): Promise { }); } } else { - // TODO: Handle undefined - // @ts-ignore dirPath = process.env.USERPROFILE ? process.env.USERPROFILE : process.env.HOME; @@ -399,6 +397,8 @@ export const getUpmConfigDir = async function (): Promise { dirPath = path.join(process.env.ALLUSERSPROFILE, systemUserSubPath); } } + if (dirPath === undefined) + throw new Error("Could not resolve upm-config dir-path"); return dirPath; }; From 96c66dcebf3a9cf6c454380b87025d551a3ee0f0 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 10:35:33 +0200 Subject: [PATCH 146/201] fix: handle null Throw if editor-version could not be parsed --- lib/core.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index 100563b2..30246215 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -434,6 +434,10 @@ export const saveUpmConfig = async function ( export const compareEditorVersion = function (a: string, b: string) { const verA = parseEditorVersion(a); const verB = parseEditorVersion(b); + + if (verA === null || verB === null) + throw new Error("An editor version could not be parsed"); + const editorVersionToArray = (ver: SemanticVersion) => [ ver.major, ver.minor, @@ -443,10 +447,7 @@ export const compareEditorVersion = function (a: string, b: string) { ver.locValue || 0, ver.locBuild || 0, ]; - // TODO: Handle null - // @ts-ignore const arrA = editorVersionToArray(verA); - // @ts-ignore const arrB = editorVersionToArray(verB); for (let i = 0; i < arrA.length; i++) { const valA = arrA[i]; From d7206e12091a312c57ea74f6d02e921cbbb5e789 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 10:47:59 +0200 Subject: [PATCH 147/201] fix: type errors Add type for editor-version regex matches in order to prevent type errors. Also on line 501 I removed the toLowerCase() because it does not seem to be necessary looking at the regex --- lib/core.ts | 32 +++++++++++++------------------- lib/types/global.d.ts | 2 +- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index 30246215..fb98b50b 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -13,6 +13,7 @@ import { getNpmClient } from "./client"; import log from "./logger"; import { assertIsError } from "./utils/error-type-guards"; import search from "libnpmsearch"; +import { type } from "os"; export const env: Env = { auth: {}, @@ -475,45 +476,38 @@ export const compareEditorVersion = function (a: string, b: string) { export const parseEditorVersion = function ( version: string ): SemanticVersion | null { + type RegexMatchGroups = { + major: `${number}`; + minor: `${number}`; + patch?: string; + flag?: "a" | "b" | "f" | "c"; + build?: `${number}`; + loc?: "c"; + locBuild?: `${number}`; + }; + if (!version) return null; const regex = /^(?\d+)\.(?\d+)(\.(?\d+)((?a|b|f|c)(?\d+)((?c)(?\d+))?)?)?/; const match = regex.exec(version); if (!match) return null; - const groups = match.groups; + const groups = match.groups; const result: SemanticVersion = { - // TODO: Check undefined - // @ts-ignore major: parseInt(groups.major), - // @ts-ignore minor: parseInt(groups.minor), }; - // TODO: Check undefined - // @ts-ignore if (groups.patch) result.patch = parseInt(groups.patch); - // TODO: Check undefined - // @ts-ignore if (groups.flag) { - // TODO: Do type checking - // @ts-ignore - result.flag = groups.flag.toLowerCase(); + result.flag = groups.flag; if (result.flag == "a") result.flagValue = 0; if (result.flag == "b") result.flagValue = 1; if (result.flag == "f") result.flagValue = 2; - // TODO: Handle undefined - // @ts-ignore if (groups.build) result.build = parseInt(groups.build); } - // TODO: Handle undefined - // @ts-ignore if (groups.loc) { - // TODO: Handle undefined - // @ts-ignore result.loc = groups.loc.toLowerCase(); if (result.loc == "c") result.locValue = 1; - // TODO: Handle undefined - // @ts-ignore if (groups.locBuild) result.locBuild = parseInt(groups.locBuild); } return result; diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index a5dbe8a8..8cb7e7ae 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -16,7 +16,7 @@ declare global { major: number; minor: number; patch?: number; - flag?: "a" | "b" | "f"; + flag?: "a" | "b" | "f" | "c"; flagValue?: 0 | 1 | 2; build?: number; loc?: string; From a87c231241c0cdc6c5fd0f25d3ebd61289fb6164 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 10:50:48 +0200 Subject: [PATCH 148/201] fix: getLatestVersion should return undefined By reading the tests I saw that this function should return undefined if the version could not be determined. Changed signature --- lib/core.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index fb98b50b..a3daeb6c 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -321,7 +321,9 @@ export const fetchPackageDependencies = async function ({ }; // Get latest version from package info -export const getLatestVersion = function (pkgInfo: PkgInfo): PkgVersionName { +export const getLatestVersion = function ( + pkgInfo: PkgInfo +): PkgVersionName | undefined { if (pkgInfo["dist-tags"]?.["latest"] !== undefined) return pkgInfo["dist-tags"]["latest"]; else if (pkgInfo.versions) { @@ -331,7 +333,6 @@ export const getLatestVersion = function (pkgInfo: PkgInfo): PkgVersionName { (key) => pkgInfo.versions[key] == "latest" ); } else if (pkgInfo.version) return pkgInfo.version; - throw new Error("Could not get latest version from package"); }; // Load manifest json file From c88ebb12918415c417d5d05680f1f4d3d704c10e Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 10:51:12 +0200 Subject: [PATCH 149/201] refactor: remove outdated logic See https://github.com/openupm/openupm-cli/pull/52#issuecomment-1776779428 --- lib/core.ts | 8 +------- test/test-core.js | 5 ----- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index a3daeb6c..3539d032 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -326,13 +326,7 @@ export const getLatestVersion = function ( ): PkgVersionName | undefined { if (pkgInfo["dist-tags"]?.["latest"] !== undefined) return pkgInfo["dist-tags"]["latest"]; - else if (pkgInfo.versions) { - return Object.keys(pkgInfo.versions).find( - // TODO: Something is wrong here - // @ts-ignore - (key) => pkgInfo.versions[key] == "latest" - ); - } else if (pkgInfo.version) return pkgInfo.version; + else if (pkgInfo.version) return pkgInfo.version; }; // Load manifest json file diff --git a/test/test-core.js b/test/test-core.js index bc1fe13b..cb8e3edc 100644 --- a/test/test-core.js +++ b/test/test-core.js @@ -373,11 +373,6 @@ describe("cmd-core.ts", function() { "1.0.0" ); }); - it("from versions", async function() { - getLatestVersion({ versions: { "1.0.0": "latest" } }).should.equal( - "1.0.0" - ); - }); it("not found", async function() { ( getLatestVersion({ versions: { "1.0.0": "patch" } }) === undefined From f59a1178220c8af01fffb9b69b9b77cf5178f69f Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 14:32:37 +0200 Subject: [PATCH 150/201] fix: handle undefined Throw if version of package to add could not be determined --- lib/cmd-add.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index 60af54d6..2566ba27 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -100,6 +100,8 @@ const _add = async function ({ return { code: 1, dirty }; } + if (version === undefined) + throw new Error("Could not determine package version to add"); const versionInfo = pkgInfo.versions[version]; // verify editor version if (versionInfo.unity) { From 0ecec415bdb52ca768b7de4ab48ecbfbed151814 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 14:35:46 +0200 Subject: [PATCH 151/201] fix: fix type error Allow undefined as possible value for version in table-row --- lib/cmd-search.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index fd7644c4..a7af3e0e 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -6,7 +6,7 @@ import { env, getLatestVersion, getNpmFetchOptions, parseEnv } from "./core"; import { is404Error, isHttpError } from "./utils/error-type-guards"; import * as os from "os"; -type TableRow = [PkgName, PkgVersionName, string, ""]; +type TableRow = [PkgName, PkgVersionName | undefined, string, ""]; export type SearchOptions = { _global: GlobalOptions; From 58bb9bd016b3d08b3a8cc247ac1c996794b6fc1a Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 14:36:41 +0200 Subject: [PATCH 152/201] refactor: assert undefined Version is required in order to print package info --- lib/cmd-view.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/cmd-view.ts b/lib/cmd-view.ts index c446eee1..4e5cad1f 100644 --- a/lib/cmd-view.ts +++ b/lib/cmd-view.ts @@ -7,6 +7,7 @@ import { parseEnv, parseName, } from "./core"; +import assert from "assert"; export type ViewOptions = { _global: GlobalOptions; @@ -38,6 +39,7 @@ export const view = async function (pkg: Pkg, options: ViewOptions) { const printInfo = function (pkg: PkgInfo) { const versionCount = Object.keys(pkg.versions).length; const ver = getLatestVersion(pkg); + assert(ver !== undefined); const verInfo = pkg.versions[ver]; const license = verInfo.license || "proprietary or unlicensed"; const displayName = verInfo.displayName; From d23f7b48be1c3e125dd5de36a2833e11b33cc560 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 14:40:32 +0200 Subject: [PATCH 153/201] refactor: remove unused imports --- lib/core.ts | 1 - lib/types/global.d.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index 3539d032..31065aa7 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -13,7 +13,6 @@ import { getNpmClient } from "./client"; import log from "./logger"; import { assertIsError } from "./utils/error-type-guards"; import search from "libnpmsearch"; -import { type } from "os"; export const env: Env = { auth: {}, diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index 8cb7e7ae..62f05c14 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -1,4 +1,3 @@ -import { Logger } from "npmlog"; import { NpmAuth } from "another-npm-registry-client"; declare global { From 76d8dc53fc92a007fc8f2ecf5080ccce991437fd Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 14:43:43 +0200 Subject: [PATCH 154/201] fix: unhandled undefined Latest version is required --- lib/core.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/core.ts b/lib/core.ts index 31065aa7..065fcde6 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -13,6 +13,7 @@ import { getNpmClient } from "./client"; import log from "./logger"; import { assertIsError } from "./utils/error-type-guards"; import search from "libnpmsearch"; +import assert from "assert"; export const env: Env = { auth: {}, @@ -279,8 +280,10 @@ export const fetchPackageDependencies = async function ({ // verify version const versions = Object.keys(pkgInfo.versions); if (!entry.version || entry.version == "latest") { + const latestVersion = getLatestVersion(pkgInfo); + assert(latestVersion !== undefined); // eslint-disable-next-line require-atomic-updates - depObj.version = entry.version = getLatestVersion(pkgInfo); + depObj.version = entry.version = latestVersion; } // handle version not exist if (!versions.find((x) => x == entry.version)) { From 7edf934a4d9337ac51b26afcc7b4975f3b4e8f18 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 14:46:01 +0200 Subject: [PATCH 155/201] fix: handle undefined Require latest version --- lib/cmd-search.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index a7af3e0e..b4ea8e3f 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -5,8 +5,11 @@ import log from "./logger"; import { env, getLatestVersion, getNpmFetchOptions, parseEnv } from "./core"; import { is404Error, isHttpError } from "./utils/error-type-guards"; import * as os from "os"; +import assert from "assert"; -type TableRow = [PkgName, PkgVersionName | undefined, string, ""]; +type DateString = string; + +type TableRow = [PkgName, PkgVersionName, DateString, ""]; export type SearchOptions = { _global: GlobalOptions; @@ -83,6 +86,7 @@ const getTableRow = function (pkg: PkgInfo): TableRow { if (pkg.date) { date = pkg.date.toISOString().slice(0, 10); } + assert(version !== undefined); return [name, version, date, ""]; }; From 88e6e03ce70c43556561be72be18b0a5d46449e7 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 14:49:29 +0200 Subject: [PATCH 156/201] refactor: simplify ifs Remove unnecessary boolean comparisons --- lib/core.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index 065fcde6..4c758bd8 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -54,16 +54,16 @@ export const parseEnv = async function ( // log level log.level = options._global.verbose ? "verbose" : "notice"; // color - if (options._global.color === false) env.color = false; + if (!options._global.color) env.color = false; if (process.env.NODE_ENV == "test") env.color = false; if (!env.color) { chalk.level = 0; log.disableColor(); } // upstream - if (options._global.upstream === false) env.upstream = false; + if (!options._global.upstream) env.upstream = false; // region cn - if (options._global.cn === true) { + if (options._global.cn) { env.registry = "https://package.openupm.cn"; env.upstreamRegistry = "https://packages.unity.cn"; env.region = "cn"; From 6981ba5d839869e10646cfe030f99c5265f42cdd Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 14:49:47 +0200 Subject: [PATCH 157/201] refactor: inline return --- lib/cmd-search.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index b4ea8e3f..b65ae3f0 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -71,11 +71,10 @@ const searchOld = async function ( }; const getTable = function () { - const table = new Table({ + return new Table({ head: ["Name", "Version", "Date"], colWidths: [42, 20, 12], }); - return table; }; const getTableRow = function (pkg: PkgInfo): TableRow { From 652e8e72d9417717021864a77c0f9ac2e77273b5 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 15:41:14 +0200 Subject: [PATCH 158/201] fix: incorrectly registering errors The callbacks used by the registry client incorrectly always registered an error. Added a null-check to only create an error when something actually went wrong --- lib/client.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/client.ts b/lib/client.ts index e430584c..5d16f17f 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -22,10 +22,10 @@ export type NpmClient = { }; export class NpmClientError extends Error { - cause: Error | null; + cause: Error; response: request.Response; - constructor(cause: Error | null, response: request.Response) { + constructor(cause: Error, response: request.Response) { super( cause?.message ?? "An error occurred while interacting with an Npm registry" @@ -59,10 +59,10 @@ function normalizeClientFunction( const withNormalizedError = ( uri: string, params: TParam, - cb: (error: NpmClientError, data: TData) => void + cb: (error: NpmClientError | null, data: TData) => void ) => { return bound(uri, params, (error, data, raw, res) => { - cb(new NpmClientError(error, res), data); + cb(error !== null ? new NpmClientError(error, res) : null, data); }); }; return promisify(withNormalizedError); From 1db7a898851686458acd3376ef813ccab73fe465 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 15:49:48 +0200 Subject: [PATCH 159/201] misc: add build npm script Just runs tsc --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 399cccc4..a68ae0a4 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ }, "main": "index.js", "scripts": { + "build": "tsc", "test": "tsc && cross-env NODE_ENV=test mocha", "semantic-release": "semantic-release" }, From ee1bfcf7c0e3a9bfbee6af4982a0dbab57570002 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 15:49:58 +0200 Subject: [PATCH 160/201] misc: reformat file --- tsconfig.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index 27e1d3c9..e5605e29 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,8 +11,7 @@ // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ /* Language and Environment */ - "target": "ES2020", - /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + "target": "ES2020", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ "lib": ["ES2020"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ // "jsx": "preserve", /* Specify what JSX code is generated. */ // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ From 7446e8ba727b7282ab54ca64adfada1028436c0f Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 15:51:47 +0200 Subject: [PATCH 161/201] fix: undefined error Some tests where failing because there was a throw if a package with unknown version was added. Undefined was an acceptable value, so the throw was removed and the types changed accordingly --- lib/cmd-deps.ts | 3 +-- lib/core.ts | 2 +- lib/types/global.d.ts | 4 ++-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index b836d738..908ff4ba 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -13,7 +13,6 @@ export const deps = async function (pkg: Pkg, options: DepsOptions) { // parse name const { name, version } = parseName(pkg); // deps - if (version === undefined) throw new Error("Version undefined"); await _deps({ name, version, deep: options.deep }); return 0; }; @@ -24,7 +23,7 @@ const _deps = async function ({ deep, }: { name: PkgName; - version: PkgVersionName; + version: PkgVersionName | undefined; deep: boolean; }) { // eslint-disable-next-line no-unused-vars diff --git a/lib/core.ts b/lib/core.ts index 4c758bd8..0f8392c6 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -211,7 +211,7 @@ export const fetchPackageDependencies = async function ({ deep, }: { name: PkgName; - version: PkgVersionName; + version: PkgVersionName | undefined; deep: boolean; }): Promise<[Dependency[], Dependency[]]> { log.verbose("dependency", `fetch: ${name}@${version} deep=${deep}`); diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index 62f05c14..4704df32 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -70,12 +70,12 @@ declare global { type NameVersionPair = { name: PkgName; - version: PkgVersionName; + version: PkgVersionName | undefined; }; type Dependency = { name: PkgName; - version: PkgVersionName; + version: PkgVersionName | undefined; upstream: boolean; self: boolean; internal: boolean; From df535539f676be636e7cf75adcfb0d05422731b0 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 16:19:28 +0200 Subject: [PATCH 162/201] conf: generate sourcemaps To enable debugging --- tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index e5605e29..15adc119 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -53,7 +53,7 @@ // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ // "declarationMap": true, /* Create sourcemaps for d.ts files. */ // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + "sourceMap": true, /* Create source map files for emitted JavaScript files. */ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ "outDir": "./build", /* Specify an output folder for all emitted files. */ From 4d2c06a9f80f2faf72e42c37e31025cd626fa07e Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 16:19:37 +0200 Subject: [PATCH 163/201] Revert "refactor: simplify ifs" This reverts commit f9ae663df71b1cd38fcddcf0ee442835bd32958b. --- lib/core.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/core.ts b/lib/core.ts index 0f8392c6..8dec82d8 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -54,16 +54,16 @@ export const parseEnv = async function ( // log level log.level = options._global.verbose ? "verbose" : "notice"; // color - if (!options._global.color) env.color = false; + if (options._global.color === false) env.color = false; if (process.env.NODE_ENV == "test") env.color = false; if (!env.color) { chalk.level = 0; log.disableColor(); } // upstream - if (!options._global.upstream) env.upstream = false; + if (options._global.upstream === false) env.upstream = false; // region cn - if (options._global.cn) { + if (options._global.cn === true) { env.registry = "https://package.openupm.cn"; env.upstreamRegistry = "https://packages.unity.cn"; env.region = "cn"; From 59d5ef83470f36308fc0b464560df3712d37cdee Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 16:20:29 +0200 Subject: [PATCH 164/201] fix: incorrect type for env properties --- lib/types/global.d.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index 4704df32..6ac3906a 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -98,9 +98,9 @@ declare global { type GlobalOptions = { registry?: Registry; verbose: boolean; - color: boolean; - upstream: boolean; - cn: boolean; + color?: boolean; + upstream?: boolean; + cn?: boolean; systemUser: boolean; wsl: boolean; chdir: string; From b32e2e6fe2751a97b543a3573939b29e81faa8bb Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 16:22:23 +0200 Subject: [PATCH 165/201] fix: invalid type assertion --- lib/utils/error-type-guards.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/utils/error-type-guards.ts b/lib/utils/error-type-guards.ts index 701db6ef..95745343 100644 --- a/lib/utils/error-type-guards.ts +++ b/lib/utils/error-type-guards.ts @@ -11,7 +11,7 @@ export function assertIsError(x: unknown): asserts x is ErrnoException { } export const isHttpError = (x: unknown): x is HttpErrorBase => { - return x instanceof HttpErrorBase; + return x instanceof Error && "statusCode" in x; }; export const isConnectionError = (err: HttpErrorBase): boolean => From 12e3a89f9106db4e603e0e1875633c8d4f00ad0a Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 21:27:49 +0200 Subject: [PATCH 166/201] refactor: change type Expand type for package names with attached version to allow all strings for the version. The reason is that the string after the @ may not only include versions such as "1.0.0" but also tags such as "beta" --- lib/types/global.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index 6ac3906a..daf23c04 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -5,7 +5,7 @@ declare global { type PkgVersionName = string; - type Pkg = `${PkgName}@${PkgVersionName}`; + type Pkg = `${PkgName}@${string}`; type Region = "us" | "cn"; From f54fa14cf769217aad81e47a2fb0a9ce0af9c09f Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 21:29:46 +0200 Subject: [PATCH 167/201] refactor: rename type Rename PkgVersion to PkgVersionInfo in order to be more in line with PkgInfo type name --- lib/types/global.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index daf23c04..03d19c5b 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -45,7 +45,7 @@ declare global { integrity: string; }; - type PkgVersion = { + type PkgVersionInfo = { unity: string; unityRelease: string; dependencies: Record; @@ -59,7 +59,7 @@ declare global { type PkgInfo = { name: PkgName; - versions: Record; + versions: Record; "dist-tags": { latest?: PkgVersionName }; version?: PkgVersionName; description?: string; From 00506891a900990ae72ecaf818fb3ff22bf87db8 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 21:31:27 +0200 Subject: [PATCH 168/201] refactor: rename type Extend type name to be clearer --- lib/cmd-add.ts | 4 ++-- lib/cmd-deps.ts | 2 +- lib/cmd-remove.ts | 4 ++-- lib/cmd-view.ts | 2 +- lib/core.ts | 2 +- lib/types/global.d.ts | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index 2566ba27..f5b1072b 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -20,7 +20,7 @@ export type AddOptions = { }; export const add = async function ( - pkgs: Pkg | Pkg[], + pkgs: PkgNameWithVersion | PkgNameWithVersion[], options: AddOptions ): Promise { if (!Array.isArray(pkgs)) pkgs = [pkgs]; @@ -48,7 +48,7 @@ const _add = async function ({ testables, force, }: { - pkg: Pkg; + pkg: PkgNameWithVersion; testables: boolean; force: boolean; }) { diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index 908ff4ba..1a863d34 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -6,7 +6,7 @@ export type DepsOptions = { _global: GlobalOptions; }; -export const deps = async function (pkg: Pkg, options: DepsOptions) { +export const deps = async function (pkg: PkgNameWithVersion, options: DepsOptions) { // parse env const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; diff --git a/lib/cmd-remove.ts b/lib/cmd-remove.ts index aad8a7ac..38c4b4b3 100644 --- a/lib/cmd-remove.ts +++ b/lib/cmd-remove.ts @@ -6,7 +6,7 @@ export type RemoveOptions = { }; export const remove = async function ( - pkgs: Pkg[] | Pkg, + pkgs: PkgNameWithVersion[] | PkgNameWithVersion, options: RemoveOptions ) { if (!Array.isArray(pkgs)) pkgs = [pkgs]; @@ -26,7 +26,7 @@ export const remove = async function ( return result.code; }; -const _remove = async function (pkg: Pkg) { +const _remove = async function (pkg: PkgNameWithVersion) { // dirty flag let dirty = false; // parse name diff --git a/lib/cmd-view.ts b/lib/cmd-view.ts index 4e5cad1f..6d1186f9 100644 --- a/lib/cmd-view.ts +++ b/lib/cmd-view.ts @@ -13,7 +13,7 @@ export type ViewOptions = { _global: GlobalOptions; }; -export const view = async function (pkg: Pkg, options: ViewOptions) { +export const view = async function (pkg: PkgNameWithVersion, options: ViewOptions) { // parse env const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; diff --git a/lib/core.ts b/lib/core.ts index 8dec82d8..682168c5 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -157,7 +157,7 @@ export const parseEnv = async function ( }; // Parse name to {name, version} -export const parseName = function (pkg: Pkg): { +export const parseName = function (pkg: PkgNameWithVersion): { name: PkgName; version: PkgVersionName | undefined; } { diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index 03d19c5b..fe1f599d 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -5,7 +5,7 @@ declare global { type PkgVersionName = string; - type Pkg = `${PkgName}@${string}`; + type PkgNameWithVersion = `${PkgName}@${string}`; type Region = "us" | "cn"; From 09950416c7a4baa19c4dffae292ff9305c9512e8 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 21:43:05 +0200 Subject: [PATCH 169/201] refactor: simplify package name type A package-name can now include a version or not --- lib/cmd-add.ts | 4 ++-- lib/cmd-deps.ts | 2 +- lib/cmd-remove.ts | 4 ++-- lib/cmd-view.ts | 2 +- lib/core.ts | 4 ++-- lib/types/global.d.ts | 6 +++--- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index f5b1072b..b07054e4 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -20,7 +20,7 @@ export type AddOptions = { }; export const add = async function ( - pkgs: PkgNameWithVersion | PkgNameWithVersion[], + pkgs: PkgName | PkgName[], options: AddOptions ): Promise { if (!Array.isArray(pkgs)) pkgs = [pkgs]; @@ -48,7 +48,7 @@ const _add = async function ({ testables, force, }: { - pkg: PkgNameWithVersion; + pkg: PkgName; testables: boolean; force: boolean; }) { diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index 1a863d34..650a6725 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -6,7 +6,7 @@ export type DepsOptions = { _global: GlobalOptions; }; -export const deps = async function (pkg: PkgNameWithVersion, options: DepsOptions) { +export const deps = async function (pkg: PkgName, options: DepsOptions) { // parse env const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; diff --git a/lib/cmd-remove.ts b/lib/cmd-remove.ts index 38c4b4b3..61017151 100644 --- a/lib/cmd-remove.ts +++ b/lib/cmd-remove.ts @@ -6,7 +6,7 @@ export type RemoveOptions = { }; export const remove = async function ( - pkgs: PkgNameWithVersion[] | PkgNameWithVersion, + pkgs: PkgName[] | PkgName, options: RemoveOptions ) { if (!Array.isArray(pkgs)) pkgs = [pkgs]; @@ -26,7 +26,7 @@ export const remove = async function ( return result.code; }; -const _remove = async function (pkg: PkgNameWithVersion) { +const _remove = async function (pkg: PkgName) { // dirty flag let dirty = false; // parse name diff --git a/lib/cmd-view.ts b/lib/cmd-view.ts index 6d1186f9..c62e03b7 100644 --- a/lib/cmd-view.ts +++ b/lib/cmd-view.ts @@ -13,7 +13,7 @@ export type ViewOptions = { _global: GlobalOptions; }; -export const view = async function (pkg: PkgNameWithVersion, options: ViewOptions) { +export const view = async function (pkg: PkgName, options: ViewOptions) { // parse env const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; diff --git a/lib/core.ts b/lib/core.ts index 682168c5..7d6388bc 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -157,8 +157,8 @@ export const parseEnv = async function ( }; // Parse name to {name, version} -export const parseName = function (pkg: PkgNameWithVersion): { - name: PkgName; +export const parseName = function (pkg: PkgName): { + name: ReverseDomainName; version: PkgVersionName | undefined; } { const segs = pkg.split("@"); diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index fe1f599d..99845653 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -1,11 +1,11 @@ import { NpmAuth } from "another-npm-registry-client"; declare global { - type PkgName = string; - type PkgVersionName = string; - type PkgNameWithVersion = `${PkgName}@${string}`; + type ReverseDomainName = string; + + type PkgName = ReverseDomainName | `${ReverseDomainName}@${PkgVersionName}`; type Region = "us" | "cn"; From b838371c7009077a288299deadc4a64b8b79a0cf Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 22:02:50 +0200 Subject: [PATCH 170/201] refactor: make property optional As indicated by usage --- lib/types/global.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index 99845653..f2b4a584 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -46,7 +46,7 @@ declare global { }; type PkgVersionInfo = { - unity: string; + unity?: string; unityRelease: string; dependencies: Record; license?: string; From cf4b9c6458d6805498274f10632ce794604c67d5 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 24 Oct 2023 22:13:46 +0200 Subject: [PATCH 171/201] refactor: extract utility function Extract function that checks if the version-name of a package is a url version, such as a git-url. For now we do this as before by just checking if it starts with one of the common protocols --- lib/cmd-add.ts | 8 ++------ lib/utils/version-name.ts | 10 ++++++++++ 2 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 lib/utils/version-name.ts diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index b07054e4..bfac7051 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -12,6 +12,7 @@ import { parseName, saveManifest, } from "./core"; +import { isUrlVersion } from "./utils/version-name"; export type AddOptions = { test: boolean; @@ -70,12 +71,7 @@ const _add = async function ({ } // packages that added to scope registry const pkgsInScope: PkgName[] = []; - const isGitOrLocal = - version !== undefined && - (version.startsWith("git") || - version.startsWith("file") || - version.startsWith("http")); - if (!isGitOrLocal) { + if (version === undefined || !isUrlVersion(version)) { // verify name let pkgInfo = await fetchPackageInfo(name); if (!pkgInfo && env.upstream) { diff --git a/lib/utils/version-name.ts b/lib/utils/version-name.ts new file mode 100644 index 00000000..1ca778cc --- /dev/null +++ b/lib/utils/version-name.ts @@ -0,0 +1,10 @@ +const isGit = (versionName: PkgVersionName): boolean => + versionName.startsWith("git"); +const isHttp = (versionName: PkgVersionName): boolean => + versionName.startsWith("http"); + +const isLocal = (versionName: PkgVersionName): boolean => + versionName.startsWith("file"); + +export const isUrlVersion = (versionName: PkgVersionName): boolean => + isGit(versionName) || isHttp(versionName) || isLocal(versionName); From d96f6d763ab6fc9c1892e841dd0930b548b63c9f Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 10:59:45 +0200 Subject: [PATCH 172/201] refactor: rename type Shorten version-name type name to just version, since it no longer conflicts with version-info --- lib/cmd-add.ts | 2 +- lib/cmd-deps.ts | 2 +- lib/cmd-search.ts | 2 +- lib/core.ts | 10 +++++----- lib/types/global.d.ts | 20 ++++++++++---------- lib/utils/version-name.ts | 10 ---------- lib/utils/version.ts | 7 +++++++ 7 files changed, 25 insertions(+), 28 deletions(-) delete mode 100644 lib/utils/version-name.ts create mode 100644 lib/utils/version.ts diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index bfac7051..604ec8c6 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -12,7 +12,7 @@ import { parseName, saveManifest, } from "./core"; -import { isUrlVersion } from "./utils/version-name"; +import { isUrlVersion } from "./utils/version"; export type AddOptions = { test: boolean; diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index 650a6725..6da80762 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -23,7 +23,7 @@ const _deps = async function ({ deep, }: { name: PkgName; - version: PkgVersionName | undefined; + version: PkgVersion | undefined; deep: boolean; }) { // eslint-disable-next-line no-unused-vars diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index b65ae3f0..c0a4a757 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -9,7 +9,7 @@ import assert from "assert"; type DateString = string; -type TableRow = [PkgName, PkgVersionName, DateString, ""]; +type TableRow = [PkgName, PkgVersion, DateString, ""]; export type SearchOptions = { _global: GlobalOptions; diff --git a/lib/core.ts b/lib/core.ts index 7d6388bc..8da107ba 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -159,7 +159,7 @@ export const parseEnv = async function ( // Parse name to {name, version} export const parseName = function (pkg: PkgName): { name: ReverseDomainName; - version: PkgVersionName | undefined; + version: PkgVersion | undefined; } { const segs = pkg.split("@"); const name = segs[0]; @@ -211,7 +211,7 @@ export const fetchPackageDependencies = async function ({ deep, }: { name: PkgName; - version: PkgVersionName | undefined; + version: PkgVersion | undefined; deep: boolean; }): Promise<[Dependency[], Dependency[]]> { log.verbose("dependency", `fetch: ${name}@${version} deep=${deep}`); @@ -225,7 +225,7 @@ export const fetchPackageDependencies = async function ({ const depsInvalid = []; // cached dict: {pkg-name: pkgInfo} const cachedPacakgeInfoDict: Record< - PkgVersionName, + PkgVersion, { pkgInfo: PkgInfo; upstream: boolean } > = {}; while (pendingList.length > 0) { @@ -304,7 +304,7 @@ export const fetchPackageDependencies = async function ({ if (depObj.self || deep) { const deps: NameVersionPair[] = _.toPairs( pkgInfo.versions[entry.version]["dependencies"] - ).map((x: [PkgName, PkgVersionName]): NameVersionPair => { + ).map((x: [PkgName, PkgVersion]): NameVersionPair => { return { name: x[0], version: x[1] }; }); deps.forEach((x) => pendingList.push(x)); @@ -325,7 +325,7 @@ export const fetchPackageDependencies = async function ({ // Get latest version from package info export const getLatestVersion = function ( pkgInfo: PkgInfo -): PkgVersionName | undefined { +): PkgVersion | undefined { if (pkgInfo["dist-tags"]?.["latest"] !== undefined) return pkgInfo["dist-tags"]["latest"]; else if (pkgInfo.version) return pkgInfo.version; diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts index f2b4a584..65265d93 100644 --- a/lib/types/global.d.ts +++ b/lib/types/global.d.ts @@ -1,11 +1,11 @@ import { NpmAuth } from "another-npm-registry-client"; declare global { - type PkgVersionName = string; + type PkgVersion = string; type ReverseDomainName = string; - type PkgName = ReverseDomainName | `${ReverseDomainName}@${PkgVersionName}`; + type PkgName = ReverseDomainName | `${ReverseDomainName}@${PkgVersion}`; type Region = "us" | "cn"; @@ -48,7 +48,7 @@ declare global { type PkgVersionInfo = { unity?: string; unityRelease: string; - dependencies: Record; + dependencies: Record; license?: string; displayName: string; description?: string; @@ -59,23 +59,23 @@ declare global { type PkgInfo = { name: PkgName; - versions: Record; - "dist-tags": { latest?: PkgVersionName }; - version?: PkgVersionName; + versions: Record; + "dist-tags": { latest?: PkgVersion }; + version?: PkgVersion; description?: string; keywords?: string[]; - time: Record<"created" | "modified" | PkgVersionName, string>; + time: Record<"created" | "modified" | PkgVersion, string>; date?: Date; }; type NameVersionPair = { name: PkgName; - version: PkgVersionName | undefined; + version: PkgVersion | undefined; }; type Dependency = { name: PkgName; - version: PkgVersionName | undefined; + version: PkgVersion | undefined; upstream: boolean; self: boolean; internal: boolean; @@ -90,7 +90,7 @@ declare global { }; type PkgManifest = { - dependencies: Record; + dependencies: Record; scopedRegistries: ScopedRegistry[]; testables: string[]; }; diff --git a/lib/utils/version-name.ts b/lib/utils/version-name.ts deleted file mode 100644 index 1ca778cc..00000000 --- a/lib/utils/version-name.ts +++ /dev/null @@ -1,10 +0,0 @@ -const isGit = (versionName: PkgVersionName): boolean => - versionName.startsWith("git"); -const isHttp = (versionName: PkgVersionName): boolean => - versionName.startsWith("http"); - -const isLocal = (versionName: PkgVersionName): boolean => - versionName.startsWith("file"); - -export const isUrlVersion = (versionName: PkgVersionName): boolean => - isGit(versionName) || isHttp(versionName) || isLocal(versionName); diff --git a/lib/utils/version.ts b/lib/utils/version.ts new file mode 100644 index 00000000..459ae800 --- /dev/null +++ b/lib/utils/version.ts @@ -0,0 +1,7 @@ +const isGit = (version: PkgVersion): boolean => version.startsWith("git"); +const isHttp = (version: PkgVersion): boolean => version.startsWith("http"); + +const isLocal = (version: PkgVersion): boolean => version.startsWith("file"); + +export const isUrlVersion = (version: PkgVersion): boolean => + isGit(version) || isHttp(version) || isLocal(version); From 39c783a83bd8e132bb1296a11e5e625f2378f223 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 11:00:50 +0200 Subject: [PATCH 173/201] refactor: remove extraneous if IDE tells me that this if is always false --- lib/cmd-add.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index 604ec8c6..0b9fccfd 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -180,7 +180,6 @@ const _add = async function ({ } else pkgsInScope.push(name); } // add to dependencies - if (version === undefined) throw new Error("Version is undefined"); const oldVersion = manifest.dependencies[name]; manifest.dependencies[name] = version; if (!oldVersion) { From dfa36df925a09ed521dce51d672e843cf1d403b0 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 11:03:55 +0200 Subject: [PATCH 174/201] refactor: rename module To match type --- lib/cmd-add.ts | 2 +- lib/utils/{version.ts => pkg-version.ts} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename lib/utils/{version.ts => pkg-version.ts} (100%) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index 0b9fccfd..bfdc12b2 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -12,7 +12,7 @@ import { parseName, saveManifest, } from "./core"; -import { isUrlVersion } from "./utils/version"; +import { isUrlVersion } from "./utils/pkg-version"; export type AddOptions = { test: boolean; diff --git a/lib/utils/version.ts b/lib/utils/pkg-version.ts similarity index 100% rename from lib/utils/version.ts rename to lib/utils/pkg-version.ts From 49fafd096c69f34c7dc16b17029e0ff1525c3c51 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 11:08:10 +0200 Subject: [PATCH 175/201] refactor: extract and rename function Rename the parseName function to splitPackageName to better reflect it's purpose. Also moved to separate module --- lib/cmd-add.ts | 8 ++++---- lib/cmd-deps.ts | 5 +++-- lib/cmd-remove.ts | 9 ++++---- lib/cmd-view.ts | 11 +++------- lib/core.ts | 12 ----------- lib/utils/pkg-name.ts | 16 +++++++++++++++ test/test-core.js | 40 ------------------------------------ test/test-pkg-name.js | 48 +++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 79 insertions(+), 70 deletions(-) create mode 100644 lib/utils/pkg-name.ts create mode 100644 test/test-pkg-name.js diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index bfdc12b2..aa12b3bb 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -9,10 +9,10 @@ import { loadManifest, parseEditorVersion, parseEnv, - parseName, saveManifest, } from "./core"; import { isUrlVersion } from "./utils/pkg-version"; +import { splitPkgName } from "./utils/pkg-name"; export type AddOptions = { test: boolean; @@ -58,9 +58,9 @@ const _add = async function ({ // is upstream package flag let isUpstreamPackage = false; // parse name - const parseResult = parseName(pkg); - const name = parseResult.name; - let version = parseResult.version; + const split = splitPkgName(pkg); + const name = split.name; + let version = split.version; // load manifest const manifest = loadManifest(); diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index 6da80762..2cdaa758 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -1,5 +1,6 @@ import log from "./logger"; -import { fetchPackageDependencies, parseEnv, parseName } from "./core"; +import { fetchPackageDependencies, parseEnv } from "./core"; +import { splitPkgName } from "./utils/pkg-name"; export type DepsOptions = { deep: boolean; @@ -11,7 +12,7 @@ export const deps = async function (pkg: PkgName, options: DepsOptions) { const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; // parse name - const { name, version } = parseName(pkg); + const { name, version } = splitPkgName(pkg); // deps await _deps({ name, version, deep: options.deep }); return 0; diff --git a/lib/cmd-remove.ts b/lib/cmd-remove.ts index 61017151..025ec8ea 100644 --- a/lib/cmd-remove.ts +++ b/lib/cmd-remove.ts @@ -1,5 +1,6 @@ import log from "./logger"; -import { env, loadManifest, parseEnv, parseName, saveManifest } from "./core"; +import { env, loadManifest, parseEnv, saveManifest } from "./core"; +import { splitPkgName } from "./utils/pkg-name"; export type RemoveOptions = { _global: GlobalOptions; @@ -30,9 +31,9 @@ const _remove = async function (pkg: PkgName) { // dirty flag let dirty = false; // parse name - const parseResult = parseName(pkg); - const name = parseResult.name; - let version = parseResult.version; + const split = splitPkgName(pkg); + const name = split.name; + let version = split.version; if (version) { log.warn("", `please replace '${name}@${version}' with '${name}'`); return { code: 1, dirty }; diff --git a/lib/cmd-view.ts b/lib/cmd-view.ts index c62e03b7..1a7fc537 100644 --- a/lib/cmd-view.ts +++ b/lib/cmd-view.ts @@ -1,13 +1,8 @@ import chalk from "chalk"; import log from "./logger"; -import { - env, - fetchPackageInfo, - getLatestVersion, - parseEnv, - parseName, -} from "./core"; +import { env, fetchPackageInfo, getLatestVersion, parseEnv } from "./core"; import assert from "assert"; +import { splitPkgName } from "./utils/pkg-name"; export type ViewOptions = { _global: GlobalOptions; @@ -18,7 +13,7 @@ export const view = async function (pkg: PkgName, options: ViewOptions) { const envOk = await parseEnv(options, { checkPath: false }); if (!envOk) return 1; // parse name - const { name, version } = parseName(pkg); + const { name, version } = splitPkgName(pkg); if (version) { log.warn("", `please replace '${name}@${version}' with '${name}'`); return 1; diff --git a/lib/core.ts b/lib/core.ts index 8da107ba..6c28f0d5 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -156,18 +156,6 @@ export const parseEnv = async function ( return true; }; -// Parse name to {name, version} -export const parseName = function (pkg: PkgName): { - name: ReverseDomainName; - version: PkgVersion | undefined; -} { - const segs = pkg.split("@"); - const name = segs[0]; - const version = - segs.length > 1 ? segs.slice(1, segs.length).join("@") : undefined; - return { name, version }; -}; - // Get npm fetch options export const getNpmFetchOptions = function (): search.Options { const opts: search.Options = { diff --git a/lib/utils/pkg-name.ts b/lib/utils/pkg-name.ts new file mode 100644 index 00000000..dcbbc0d2 --- /dev/null +++ b/lib/utils/pkg-name.ts @@ -0,0 +1,16 @@ +/** + * Split package-name, which may include a version into the actual name of the + * package and the version if it exists + */ +export const splitPkgName = function (pkgName: PkgName): { + name: ReverseDomainName; + version: PkgVersion | undefined; +} { + const segments = pkgName.split("@"); + const name = segments[0]; + const version = + segments.length > 1 + ? segments.slice(1, segments.length).join("@") + : undefined; + return { name, version }; +}; diff --git a/test/test-core.js b/test/test-core.js index cb8e3edc..72e93b0a 100644 --- a/test/test-core.js +++ b/test/test-core.js @@ -13,7 +13,6 @@ const { loadManifest, parseEditorVersion, parseEnv, - parseName, saveManifest, isInternalPackage } = require("../build/lib/core"); @@ -28,45 +27,6 @@ const { } = require("./utils"); describe("cmd-core.ts", function() { - describe("parseName", function() { - it("pkg@version", function() { - parseName("pkg@1.0.0").should.deepEqual({ - name: "pkg", - version: "1.0.0" - }); - }); - it("pkg@latest", function() { - parseName("pkg@latest").should.deepEqual({ - name: "pkg", - version: "latest" - }); - }); - it("pkg", function() { - parseName("pkg").should.deepEqual({ - name: "pkg", - version: undefined - }); - }); - it("pkg@file", function() { - parseName("pkg@file:../pkg").should.deepEqual({ - name: "pkg", - version: "file:../pkg" - }); - }); - it("pkg@http", function() { - parseName("pkg@https://github.com/owner/pkg").should.deepEqual({ - name: "pkg", - version: "https://github.com/owner/pkg" - }); - }); - it("pkg@git", function() { - parseName("pkg@git@github.com:owner/pkg.git").should.deepEqual({ - name: "pkg", - version: "git@github.com:owner/pkg.git" - }); - }); - }); - describe("parseEnv", function() { let stdoutInspect = null; let stderrInspect = null; diff --git a/test/test-pkg-name.js b/test/test-pkg-name.js new file mode 100644 index 00000000..6904d9f5 --- /dev/null +++ b/test/test-pkg-name.js @@ -0,0 +1,48 @@ +/* eslint-disable no-unused-vars */ +/* eslint-disable no-undef */ +const assert = require("assert"); +const fs = require("fs"); +const nock = require("nock"); +const path = require("path"); +const should = require("should"); +const { splitPkgName } = require("../build/lib/utils/pkg-name"); +describe("pkg-name.ts", function () { + describe("splitPkgName", function () { + it("pkg@version", function () { + splitPkgName("pkg@1.0.0").should.deepEqual({ + name: "pkg", + version: "1.0.0", + }); + }); + it("pkg@latest", function () { + splitPkgName("pkg@latest").should.deepEqual({ + name: "pkg", + version: "latest", + }); + }); + it("pkg", function () { + splitPkgName("pkg").should.deepEqual({ + name: "pkg", + version: undefined, + }); + }); + it("pkg@file", function () { + splitPkgName("pkg@file:../pkg").should.deepEqual({ + name: "pkg", + version: "file:../pkg", + }); + }); + it("pkg@http", function () { + splitPkgName("pkg@https://github.com/owner/pkg").should.deepEqual({ + name: "pkg", + version: "https://github.com/owner/pkg", + }); + }); + it("pkg@git", function () { + splitPkgName("pkg@git@github.com:owner/pkg.git").should.deepEqual({ + name: "pkg", + version: "git@github.com:owner/pkg.git", + }); + }); + }); +}); From a8c88ac781f6f987a6ce640cac30e71eedbfb68c Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 11:30:05 +0200 Subject: [PATCH 176/201] misc: convert tests to typescript Whole bunch of TS errors still, but the tests all pass --- package-lock.json | 305 ++++++++++++++++++ package.json | 7 +- test/{test-cmd-add.js => test-cmd-add.ts} | 21 +- test/{test-cmd-deps.js => test-cmd-deps.ts} | 21 +- test/{test-cmd-login.js => test-cmd-login.ts} | 50 ++- ...{test-cmd-remove.js => test-cmd-remove.ts} | 15 +- ...{test-cmd-search.js => test-cmd-search.ts} | 18 +- test/{test-cmd-view.js => test-cmd-view.ts} | 22 +- test/{test-core.js => test-core.ts} | 177 +++++----- test/{test-pkg-name.js => test-pkg-name.ts} | 13 +- test/{utils.js => utils.ts} | 38 +-- 11 files changed, 495 insertions(+), 192 deletions(-) rename test/{test-cmd-add.js => test-cmd-add.ts} (98%) rename test/{test-cmd-deps.js => test-cmd-deps.ts} (94%) rename test/{test-cmd-login.js => test-cmd-login.ts} (64%) rename test/{test-cmd-remove.js => test-cmd-remove.ts} (94%) rename test/{test-cmd-search.js => test-cmd-search.ts} (96%) rename test/{test-cmd-view.js => test-cmd-view.ts} (96%) rename test/{test-core.js => test-core.ts} (77%) rename test/{test-pkg-name.js => test-pkg-name.ts} (84%) rename test/{utils.js => utils.ts} (65%) diff --git a/package-lock.json b/package-lock.json index 96637dcc..74f87b58 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,13 +37,17 @@ "@semantic-release/changelog": "^6.0.1", "@semantic-release/git": "^10.0.1", "@types/cli-table": "^0.3.2", + "@types/fs-extra": "^11.0.3", "@types/libnpmsearch": "^2.0.4", "@types/lodash": "^4.14.199", + "@types/mocha": "^10.0.3", "@types/node": "^14.18.63", "@types/npmlog": "^4.1.4", "@types/pkginfo": "^0.4.1", "@types/promptly": "^3.0.3", "@types/request": "^2.48.11", + "@types/should": "^13.0.0", + "@types/test-console": "^2.0.1", "@types/update-notifier": "^6.0.5", "@typescript-eslint/eslint-plugin": "^6.8.0", "@typescript-eslint/parser": "^6.8.0", @@ -58,6 +62,7 @@ "semantic-release": "^19.0.3", "should": "^13.2.3", "test-console": "^2.0.0", + "ts-mocha": "^10.0.0", "typescript": "^5.2.2" }, "engines": { @@ -1133,12 +1138,38 @@ "integrity": "sha512-GUvNiia85zTDDIx0iPrtF3pI8dwrQkfuokEqxqPDE55qxH0U5SZz4awVZjiJLWN2ZZRkXCUqgsMUbygXY+kytA==", "dev": true }, + "node_modules/@types/fs-extra": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.3.tgz", + "integrity": "sha512-sF59BlXtUdzEAL1u0MSvuzWd7PdZvZEtnaVkzX5mjpdWTJ8brG0jUqve3jPCzSzvAKKMHTG8F8o/WMQLtleZdQ==", + "dev": true, + "dependencies": { + "@types/jsonfile": "*", + "@types/node": "*" + } + }, "node_modules/@types/json-schema": { "version": "7.0.14", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", "dev": true }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "optional": true + }, + "node_modules/@types/jsonfile": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.3.tgz", + "integrity": "sha512-/yqTk2SZ1wIezK0hiRZD7RuSf4B3whFxFamB1kGStv+8zlWScTMcHanzfc0XKWs5vA1TkHeckBlOyM8jxU8nHA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/libnpmsearch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/libnpmsearch/-/libnpmsearch-2.0.4.tgz", @@ -1161,6 +1192,12 @@ "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, + "node_modules/@types/mocha": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.3.tgz", + "integrity": "sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ==", + "dev": true + }, "node_modules/@types/node": { "version": "14.18.63", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", @@ -1284,6 +1321,16 @@ "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", "dev": true }, + "node_modules/@types/should": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@types/should/-/should-13.0.0.tgz", + "integrity": "sha512-Mi6YZ2ABnnGGFMuiBDP0a8s1ZDCDNHqP97UH8TyDmCWuGGavpsFMfJnAMYaaqmDlSCOCNbVLHBrSDEOpx/oLhw==", + "deprecated": "This is a stub types definition for should.js (https://github.com/shouldjs/should.js). should.js provides its own type definitions, so you don't need @types/should installed!", + "dev": true, + "dependencies": { + "should": "*" + } + }, "node_modules/@types/ssri": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/@types/ssri/-/ssri-7.1.2.tgz", @@ -1293,6 +1340,12 @@ "@types/node": "*" } }, + "node_modules/@types/test-console": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/test-console/-/test-console-2.0.1.tgz", + "integrity": "sha512-oHttegDDXlGWAiVT3812HLnY6fcwXkbbgFy+5O6/LnqI6qXiUjCxQj7Yvdr8aiuW1iem1SFDM3kJniwkeoLN3w==", + "dev": true + }, "node_modules/@types/tough-cookie": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.4.tgz", @@ -4953,6 +5006,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "node_modules/make-fetch-happen": { "version": "10.1.6", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.6.tgz", @@ -9523,6 +9582,16 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/spawn-error-forwarder": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", @@ -9942,6 +10011,96 @@ "typescript": ">=4.2.0" } }, + "node_modules/ts-mocha": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.0.0.tgz", + "integrity": "sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==", + "dev": true, + "dependencies": { + "ts-node": "7.0.1" + }, + "bin": { + "ts-mocha": "bin/ts-mocha" + }, + "engines": { + "node": ">= 6.X.X" + }, + "optionalDependencies": { + "tsconfig-paths": "^3.5.0" + }, + "peerDependencies": { + "mocha": "^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X" + } + }, + "node_modules/ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "dependencies": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + }, + "bin": { + "ts-node": "dist/bin.js" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ts-node/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, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/ts-node/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "optional": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "optional": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -10478,6 +10637,15 @@ "node": ">=8" } }, + "node_modules/yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -11322,12 +11490,38 @@ "integrity": "sha512-GUvNiia85zTDDIx0iPrtF3pI8dwrQkfuokEqxqPDE55qxH0U5SZz4awVZjiJLWN2ZZRkXCUqgsMUbygXY+kytA==", "dev": true }, + "@types/fs-extra": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.3.tgz", + "integrity": "sha512-sF59BlXtUdzEAL1u0MSvuzWd7PdZvZEtnaVkzX5mjpdWTJ8brG0jUqve3jPCzSzvAKKMHTG8F8o/WMQLtleZdQ==", + "dev": true, + "requires": { + "@types/jsonfile": "*", + "@types/node": "*" + } + }, "@types/json-schema": { "version": "7.0.14", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", "dev": true }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "optional": true + }, + "@types/jsonfile": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.3.tgz", + "integrity": "sha512-/yqTk2SZ1wIezK0hiRZD7RuSf4B3whFxFamB1kGStv+8zlWScTMcHanzfc0XKWs5vA1TkHeckBlOyM8jxU8nHA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/libnpmsearch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/libnpmsearch/-/libnpmsearch-2.0.4.tgz", @@ -11350,6 +11544,12 @@ "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, + "@types/mocha": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.3.tgz", + "integrity": "sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ==", + "dev": true + }, "@types/node": { "version": "14.18.63", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", @@ -11471,6 +11671,15 @@ "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", "dev": true }, + "@types/should": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@types/should/-/should-13.0.0.tgz", + "integrity": "sha512-Mi6YZ2ABnnGGFMuiBDP0a8s1ZDCDNHqP97UH8TyDmCWuGGavpsFMfJnAMYaaqmDlSCOCNbVLHBrSDEOpx/oLhw==", + "dev": true, + "requires": { + "should": "*" + } + }, "@types/ssri": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/@types/ssri/-/ssri-7.1.2.tgz", @@ -11480,6 +11689,12 @@ "@types/node": "*" } }, + "@types/test-console": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/test-console/-/test-console-2.0.1.tgz", + "integrity": "sha512-oHttegDDXlGWAiVT3812HLnY6fcwXkbbgFy+5O6/LnqI6qXiUjCxQj7Yvdr8aiuW1iem1SFDM3kJniwkeoLN3w==", + "dev": true + }, "@types/tough-cookie": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.4.tgz", @@ -14158,6 +14373,12 @@ "semver": "^6.0.0" } }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "make-fetch-happen": { "version": "10.1.6", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.6.tgz", @@ -17438,6 +17659,16 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "spawn-error-forwarder": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", @@ -17767,6 +17998,74 @@ "dev": true, "requires": {} }, + "ts-mocha": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.0.0.tgz", + "integrity": "sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==", + "dev": true, + "requires": { + "ts-node": "7.0.1", + "tsconfig-paths": "^3.5.0" + } + }, + "ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + }, + "dependencies": { + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + } + } + }, + "tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "optional": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "optional": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -18177,6 +18476,12 @@ } } }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", + "dev": true + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index a68ae0a4..465ddef5 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "main": "index.js", "scripts": { "build": "tsc", - "test": "tsc && cross-env NODE_ENV=test mocha", + "test": "tsc && cross-env NODE_ENV=test ts-mocha test/**/*.ts", "semantic-release": "semantic-release" }, "bin": { @@ -37,13 +37,17 @@ "@semantic-release/changelog": "^6.0.1", "@semantic-release/git": "^10.0.1", "@types/cli-table": "^0.3.2", + "@types/fs-extra": "^11.0.3", "@types/libnpmsearch": "^2.0.4", "@types/lodash": "^4.14.199", + "@types/mocha": "^10.0.3", "@types/node": "^14.18.63", "@types/npmlog": "^4.1.4", "@types/pkginfo": "^0.4.1", "@types/promptly": "^3.0.3", "@types/request": "^2.48.11", + "@types/should": "^13.0.0", + "@types/test-console": "^2.0.1", "@types/update-notifier": "^6.0.5", "@typescript-eslint/eslint-plugin": "^6.8.0", "@typescript-eslint/parser": "^6.8.0", @@ -58,6 +62,7 @@ "semantic-release": "^19.0.3", "should": "^13.2.3", "test-console": "^2.0.0", + "ts-mocha": "^10.0.0", "typescript": "^5.2.2" }, "dependencies": { diff --git a/test/test-cmd-add.js b/test/test-cmd-add.ts similarity index 98% rename from test/test-cmd-add.js rename to test/test-cmd-add.ts index 1f2e0267..2bc0e01d 100644 --- a/test/test-cmd-add.js +++ b/test/test-cmd-add.ts @@ -1,20 +1,21 @@ /* eslint-disable no-unused-vars */ /* eslint-disable no-undef */ -const assert = require("assert"); -const nock = require("nock"); -const should = require("should"); +import assert from "assert"; +import nock from "nock"; +import should from "should"; +import { loadManifest, parseEnv } from "../lib/core"; -const { parseEnv, loadManifest } = require("../build/lib/core"); -const { add } = require("../build/lib/cmd-add"); -const { - getWorkDir, +import { add } from "../lib/cmd-add"; + +import { createWorkDir, - removeWorkDir, getInspects, getOutputs, - nockUp, + getWorkDir, nockDown, -} = require("./utils"); + nockUp, + removeWorkDir, +} from "./utils"; describe("cmd-add.ts", function () { const options = { diff --git a/test/test-cmd-deps.js b/test/test-cmd-deps.ts similarity index 94% rename from test/test-cmd-deps.js rename to test/test-cmd-deps.ts index 68d1cd0f..62333e14 100644 --- a/test/test-cmd-deps.js +++ b/test/test-cmd-deps.ts @@ -1,20 +1,21 @@ /* eslint-disable no-unused-vars */ /* eslint-disable no-undef */ -const assert = require("assert"); -const nock = require("nock"); -const should = require("should"); +import assert from "assert"; +import nock from "nock"; +import should from "should"; +import { loadManifest, parseEnv } from "../lib/core"; -const { parseEnv, loadManifest } = require("../build/lib/core"); -const { deps } = require("../build/lib/cmd-deps"); -const { - getWorkDir, +import { deps } from "../lib/cmd-deps"; + +import { createWorkDir, - removeWorkDir, getInspects, getOutputs, - nockUp, + getWorkDir, nockDown, -} = require("./utils"); + nockUp, + removeWorkDir, +} from "./utils"; describe("cmd-deps.ts", function () { const options = { diff --git a/test/test-cmd-login.js b/test/test-cmd-login.ts similarity index 64% rename from test/test-cmd-login.js rename to test/test-cmd-login.ts index bf0d55ac..94a52374 100644 --- a/test/test-cmd-login.js +++ b/test/test-cmd-login.ts @@ -1,48 +1,48 @@ /* eslint-disable no-unused-vars */ /* eslint-disable no-undef */ -const assert = require("assert"); -const nock = require("nock"); -const should = require("should"); -const { - validateRegistry, +import assert from "assert"; +import nock from "nock"; +import should from "should"; +import { generateNpmrcLines, - getNpmrcPath -} = require("../build/lib/cmd-login"); + getNpmrcPath, + validateRegistry, +} from "../lib/cmd-login"; -describe("cmd-login.ts", function() { - describe("validateRegistry", function() { - it("should validate http", async function() { +describe("cmd-login.ts", function () { + describe("validateRegistry", function () { + it("should validate http", async function () { validateRegistry("http://registry.npmjs.org/").should.be.ok(); }); - it("should validate https", async function() { + it("should validate https", async function () { validateRegistry("https://registry.npmjs.org/").should.be.ok(); }); - it("should reject without http protocal", async function() { - should(function() { + it("should reject without http protocal", async function () { + should(function () { validateRegistry("registry.npmjs.org/"); }).throw("The registry address should starts with http(s)://"); }); }); - describe("generateNpmrcLines", function() { - it("should append token to empty content", async function() { + describe("generateNpmrcLines", function () { + it("should append token to empty content", async function () { generateNpmrcLines( "", "http://registry.npmjs.org/", "123-456-789" ).should.deepEqual(["//registry.npmjs.org/:_authToken=123-456-789"]); }); - it("should append token to exist contents", async function() { + it("should append token to exist contents", async function () { generateNpmrcLines( "registry=https://registry.npmjs.org/", "http://registry.npmjs.org/", "123-456-789" ).should.deepEqual([ "registry=https://registry.npmjs.org/", - "//registry.npmjs.org/:_authToken=123-456-789" + "//registry.npmjs.org/:_authToken=123-456-789", ]); }); - it("should replace token to exist contents", async function() { + it("should replace token to exist contents", async function () { generateNpmrcLines( "registry=https://registry.npmjs.org/\n//127.0.0.1:4873/:_authToken=blar-blar-blar\n//registry.npmjs.org/:_authToken=blar-blar-blar", "http://registry.npmjs.org/", @@ -50,17 +50,17 @@ describe("cmd-login.ts", function() { ).should.deepEqual([ "registry=https://registry.npmjs.org/", "//127.0.0.1:4873/:_authToken=blar-blar-blar", - "//registry.npmjs.org/:_authToken=123-456-789" + "//registry.npmjs.org/:_authToken=123-456-789", ]); }); - it("should handle registry without trailing slash", async function() { + it("should handle registry without trailing slash", async function () { generateNpmrcLines( "", "http://registry.npmjs.org", "123-456-789" ).should.deepEqual(["//registry.npmjs.org/:_authToken=123-456-789"]); }); - it("should quote token if necessary", async function() { + it("should quote token if necessary", async function () { generateNpmrcLines( "", "http://registry.npmjs.org/", @@ -74,11 +74,9 @@ describe("cmd-login.ts", function() { }); }); - describe("getNpmrcPath", function() { - it("should includes .npmrc", async function() { - getNpmrcPath() - .includes(".npmrc") - .should.be.ok(); + describe("getNpmrcPath", function () { + it("should includes .npmrc", async function () { + getNpmrcPath().includes(".npmrc").should.be.ok(); }); }); }); diff --git a/test/test-cmd-remove.js b/test/test-cmd-remove.ts similarity index 94% rename from test/test-cmd-remove.js rename to test/test-cmd-remove.ts index 9f66e7d6..32f109f9 100644 --- a/test/test-cmd-remove.js +++ b/test/test-cmd-remove.ts @@ -1,17 +1,18 @@ /* eslint-disable no-unused-vars */ /* eslint-disable no-undef */ -const assert = require("assert"); -const should = require("should"); +import assert from "assert"; +import should from "should"; +import { loadManifest, parseEnv } from "../lib/core"; -const { parseEnv, loadManifest } = require("../build/lib/core"); -const { remove } = require("../build/lib/cmd-remove"); -const { +import { remove } from "../lib/cmd-remove"; + +import { + createWorkDir, getInspects, getOutputs, getWorkDir, - createWorkDir, removeWorkDir, -} = require("./utils"); +} from "./utils"; describe("cmd-remove.ts", function () { describe("remove", function () { diff --git a/test/test-cmd-search.js b/test/test-cmd-search.ts similarity index 96% rename from test/test-cmd-search.js rename to test/test-cmd-search.ts index d9060ded..c3f512de 100644 --- a/test/test-cmd-search.js +++ b/test/test-cmd-search.ts @@ -1,19 +1,19 @@ /* eslint-disable no-unused-vars */ /* eslint-disable no-undef */ -const assert = require("assert"); -const nock = require("nock"); -const should = require("should"); +import assert from "assert"; +import nock from "nock"; +import should from "should"; +import { search } from "../lib/cmd-search"; -const { search } = require("../build/lib/cmd-search"); -const { - getWorkDir, +import { createWorkDir, - removeWorkDir, getInspects, getOutputs, - nockUp, + getWorkDir, nockDown, -} = require("./utils"); + nockUp, + removeWorkDir, +} from "./utils"; describe("cmd-search.ts", function () { let stdoutInspect = null; diff --git a/test/test-cmd-view.js b/test/test-cmd-view.ts similarity index 96% rename from test/test-cmd-view.js rename to test/test-cmd-view.ts index c2bda8e3..47913a8a 100644 --- a/test/test-cmd-view.js +++ b/test/test-cmd-view.ts @@ -1,19 +1,21 @@ /* eslint-disable no-unused-vars */ /* eslint-disable no-undef */ -const assert = require("assert"); -const nock = require("nock"); -const should = require("should"); -const { parseEnv, loadManifest } = require("../build/lib/core"); -const { view } = require("../build/lib/cmd-view"); -const { - getWorkDir, +import assert from "assert"; +import nock from "nock"; +import should from "should"; +import { loadManifest, parseEnv } from "../lib/core"; + +import { view } from "../lib/cmd-view"; + +import { createWorkDir, - removeWorkDir, getInspects, getOutputs, - nockUp, + getWorkDir, nockDown, -} = require("./utils"); + nockUp, + removeWorkDir, +} from "./utils"; describe("cmd-view.ts", function () { const options = { diff --git a/test/test-core.js b/test/test-core.ts similarity index 77% rename from test/test-core.js rename to test/test-core.ts index 72e93b0a..0a746c3b 100644 --- a/test/test-core.js +++ b/test/test-core.ts @@ -1,59 +1,60 @@ /* eslint-disable no-unused-vars */ /* eslint-disable no-undef */ -const assert = require("assert"); -const fs = require("fs"); -const nock = require("nock"); -const path = require("path"); -const should = require("should"); -const { +import assert from "assert"; +import fs from "fs"; +import nock from "nock"; +import path from "path"; +import should from "should"; +import { compareEditorVersion, env, fetchPackageInfo, getLatestVersion, + isInternalPackage, loadManifest, parseEditorVersion, parseEnv, saveManifest, - isInternalPackage -} = require("../build/lib/core"); -const { - getWorkDir, +} from "../lib/core"; + +import { createWorkDir, - removeWorkDir, getInspects, getOutputs, + getWorkDir, + nockDown, nockUp, - nockDown -} = require("./utils"); + removeWorkDir, +} from "./utils"; -describe("cmd-core.ts", function() { - describe("parseEnv", function() { +describe("cmd-core.ts", function () { + describe("parseEnv", function () { let stdoutInspect = null; let stderrInspect = null; - before(function() { + before(function () { removeWorkDir("test-openupm-cli"); removeWorkDir("test-openupm-cli-no-manifest"); createWorkDir("test-openupm-cli", { manifest: true, - editorVersion: " 2019.2.13f1" + editorVersion: " 2019.2.13f1", }); createWorkDir("test-openupm-cli-no-manifest", { manifest: false, - editorVersion: " 2019.2.13f1" + editorVersion: " 2019.2.13f1", }); }); - after(function() { + after(function () { removeWorkDir("test-openupm-cli"); removeWorkDir("test-openupm-cli-no-manifest"); }); - beforeEach(function() { + beforeEach(function () { [stdoutInspect, stderrInspect] = getInspects(); }); - afterEach(function() { + afterEach(function () { stdoutInspect.restore(); stderrInspect.restore(); }); - it("defaults", async function() { + it("defaults", async function () { (await parseEnv({ _global: {} }, { checkPath: false })).should.be.ok(); env.registry.should.equal("https://package.openupm.com"); env.upstream.should.be.ok(); @@ -64,7 +65,7 @@ describe("cmd-core.ts", function() { (env.editorVersion === null).should.be.ok(); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("check path", async function() { + it("check path", async function () { ( await parseEnv( { _global: { chdir: getWorkDir("test-openupm-cli") } }, @@ -77,7 +78,7 @@ describe("cmd-core.ts", function() { ); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("can not resolve path", async function() { + it("can not resolve path", async function () { ( await parseEnv( { _global: { chdir: getWorkDir("path-not-exist") } }, @@ -87,7 +88,7 @@ describe("cmd-core.ts", function() { const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("can not resolve path").should.be.ok(); }); - it("can not locate manifest.json", async function() { + it("can not locate manifest.json", async function () { ( await parseEnv( { _global: { chdir: getWorkDir("test-openupm-cli-no-manifest") } }, @@ -97,7 +98,7 @@ describe("cmd-core.ts", function() { const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("can not locate manifest.json").should.be.ok(); }); - it("custom registry", async function() { + it("custom registry", async function () { ( await parseEnv( { _global: { registry: "https://registry.npmjs.org" } }, @@ -108,7 +109,7 @@ describe("cmd-core.ts", function() { env.namespace.should.be.equal("org.npmjs"); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("custom registry with splash", async function() { + it("custom registry with splash", async function () { ( await parseEnv( { _global: { registry: "https://registry.npmjs.org/" } }, @@ -119,7 +120,7 @@ describe("cmd-core.ts", function() { env.namespace.should.be.equal("org.npmjs"); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("custom registry with extra path", async function() { + it("custom registry with extra path", async function () { ( await parseEnv( { _global: { registry: "https://registry.npmjs.org/some" } }, @@ -130,7 +131,7 @@ describe("cmd-core.ts", function() { env.namespace.should.be.equal("org.npmjs"); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("custom registry with extra path and splash", async function() { + it("custom registry with extra path and splash", async function () { ( await parseEnv( { _global: { registry: "https://registry.npmjs.org/some/" } }, @@ -141,7 +142,7 @@ describe("cmd-core.ts", function() { env.namespace.should.be.equal("org.npmjs"); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("custom registry without http", async function() { + it("custom registry without http", async function () { ( await parseEnv( { _global: { registry: "registry.npmjs.org" } }, @@ -152,7 +153,7 @@ describe("cmd-core.ts", function() { env.namespace.should.be.equal("org.npmjs"); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("custom registry with ipv4+port", async function() { + it("custom registry with ipv4+port", async function () { ( await parseEnv( { _global: { registry: "http://127.0.0.1:4873" } }, @@ -163,7 +164,7 @@ describe("cmd-core.ts", function() { env.namespace.should.be.equal("127.0.0.1"); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("custom registry with ipv6+port", async function() { + it("custom registry with ipv6+port", async function () { ( await parseEnv( { _global: { registry: "http://[1:2:3:4:5:6:7:8]:4873" } }, @@ -174,14 +175,14 @@ describe("cmd-core.ts", function() { env.namespace.should.be.equal("1:2:3:4:5:6:7:8"); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("upstream", async function() { + it("upstream", async function () { ( await parseEnv({ _global: { upstream: false } }, { checkPath: false }) ).should.be.ok(); env.upstream.should.not.be.ok(); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("editorVersion", async function() { + it("editorVersion", async function () { ( await parseEnv( { _global: { chdir: getWorkDir("test-openupm-cli") } }, @@ -191,7 +192,7 @@ describe("cmd-core.ts", function() { env.editorVersion.should.be.equal("2019.2.13f1"); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("region cn", async function() { + it("region cn", async function () { ( await parseEnv({ _global: { cn: true } }, { checkPath: false }) ).should.be.ok(); @@ -200,7 +201,7 @@ describe("cmd-core.ts", function() { env.region.should.be.equal("cn"); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("region cn with a custom registry", async function() { + it("region cn with a custom registry", async function () { ( await parseEnv( { _global: { cn: true, registry: "https://reg.custom-package.com" } }, @@ -214,14 +215,14 @@ describe("cmd-core.ts", function() { }); }); - describe("loadManifest/SaveManifest", function() { + describe("loadManifest/SaveManifest", function () { let stdoutInspect = null; let stderrInspect = null; - beforeEach(function() { + beforeEach(function () { removeWorkDir("test-openupm-cli"); createWorkDir("test-openupm-cli", { manifest: true }); createWorkDir("test-openupm-cli-wrong-json", { - manifest: true + manifest: true, }); fs.writeFileSync( path.join( @@ -232,13 +233,13 @@ describe("cmd-core.ts", function() { ); [stdoutInspect, stderrInspect] = getInspects(); }); - afterEach(function() { + afterEach(function () { removeWorkDir("test-openupm-cli"); removeWorkDir("test-openupm-cli-wrong-json"); stdoutInspect.restore(); stderrInspect.restore(); }); - it("loadManifest", async function() { + it("loadManifest", async function () { ( await parseEnv( { _global: { chdir: getWorkDir("test-openupm-cli") } }, @@ -249,7 +250,7 @@ describe("cmd-core.ts", function() { manifest.should.be.deepEqual({ dependencies: {} }); const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); - it("no manifest file", async function() { + it("no manifest file", async function () { ( await parseEnv( { _global: { chdir: getWorkDir("path-not-exist") } }, @@ -261,7 +262,7 @@ describe("cmd-core.ts", function() { const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("does not exist").should.be.ok(); }); - it("wrong json content", async function() { + it("wrong json content", async function () { ( await parseEnv( { _global: { chdir: getWorkDir("test-openupm-cli-wrong-json") } }, @@ -273,7 +274,7 @@ describe("cmd-core.ts", function() { const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("failed to parse").should.be.ok(); }); - it("saveManifest", async function() { + it("saveManifest", async function () { ( await parseEnv( { _global: { chdir: getWorkDir("test-openupm-cli") } }, @@ -290,101 +291,99 @@ describe("cmd-core.ts", function() { }); }); - describe("fetchPackageInfo", function() { - beforeEach(function() { + describe("fetchPackageInfo", function () { + beforeEach(function () { nockUp(); }); - afterEach(function() { + afterEach(function () { nockDown(); }); - it("simple", async function() { + it("simple", async function () { ( await parseEnv( { _global: { registry: "http://example.com" } }, { checkPath: false } ) ).should.be.ok(); - let pkgInfoRemote = { name: "com.littlebigfun.addressable-importer" }; + const pkgInfoRemote = { name: "com.littlebigfun.addressable-importer" }; nock("http://example.com") .get("/package-a") .reply(200, pkgInfoRemote, { "Content-Type": "application/json" }); const info = await fetchPackageInfo("package-a"); info.should.deepEqual(pkgInfoRemote); }); - it("404", async function() { + it("404", async function () { ( await parseEnv( { _global: { registry: "http://example.com" } }, { checkPath: false } ) ).should.be.ok(); - let pkgInfoRemote = { name: "com.littlebigfun.addressable-importer" }; - nock("http://example.com") - .get("/package-a") - .reply(404); + const pkgInfoRemote = { name: "com.littlebigfun.addressable-importer" }; + nock("http://example.com").get("/package-a").reply(404); const info = await fetchPackageInfo("package-a"); (info === undefined).should.be.ok(); }); }); - describe("getLatestVersion", function() { - it("from dist-tags", async function() { + describe("getLatestVersion", function () { + it("from dist-tags", async function () { getLatestVersion({ "dist-tags": { latest: "1.0.0" } }).should.equal( "1.0.0" ); }); - it("not found", async function() { + it("not found", async function () { ( getLatestVersion({ versions: { "1.0.0": "patch" } }) === undefined ).should.be.ok(); (getLatestVersion({}) === undefined).should.be.ok(); }); }); - describe("parseEditorVersion", function() { - it("test null", function() { + describe("parseEditorVersion", function () { + it("test null", function () { (parseEditorVersion(null) === null).should.be.ok(); }); - it("test x.y", function() { + it("test x.y", function () { parseEditorVersion("2019.2").should.deepEqual({ major: 2019, minor: 2 }); }); - it("test x.y.z", function() { + it("test x.y.z", function () { parseEditorVersion("2019.2.1").should.deepEqual({ major: 2019, minor: 2, - patch: 1 + patch: 1, }); }); - it("test x.y.zan", function() { + it("test x.y.zan", function () { parseEditorVersion("2019.2.1a5").should.deepEqual({ major: 2019, minor: 2, patch: 1, flag: "a", flagValue: 0, - build: 5 + build: 5, }); }); - it("test x.y.zbn", function() { + it("test x.y.zbn", function () { parseEditorVersion("2019.2.1b5").should.deepEqual({ major: 2019, minor: 2, patch: 1, flag: "b", flagValue: 1, - build: 5 + build: 5, }); }); - it("test x.y.zfn", function() { + it("test x.y.zfn", function () { parseEditorVersion("2019.2.1f5").should.deepEqual({ major: 2019, minor: 2, patch: 1, flag: "f", flagValue: 2, - build: 5 + build: 5, }); }); - it("test x.y.zcn", function() { + it("test x.y.zcn", function () { parseEditorVersion("2019.2.1f1c5").should.deepEqual({ major: 2019, minor: 2, @@ -394,64 +393,64 @@ describe("cmd-core.ts", function() { build: 1, loc: "c", locValue: 1, - locBuild: 5 + locBuild: 5, }); }); - it("test invalid version", function() { + it("test invalid version", function () { (parseEditorVersion("2019") === null).should.be.ok(); }); }); - describe("compareEditorVersion", function() { - it("test 2019.1 == 2019.1", function() { + describe("compareEditorVersion", function () { + it("test 2019.1 == 2019.1", function () { compareEditorVersion("2019.1", "2019.1").should.equal(0); }); - it("test 2019.1.1 == 2019.1.1", function() { + it("test 2019.1.1 == 2019.1.1", function () { compareEditorVersion("2019.1.1", "2019.1.1").should.equal(0); }); - it("test 2019.1.1f1 == 2019.1.1f1", function() { + it("test 2019.1.1f1 == 2019.1.1f1", function () { compareEditorVersion("2019.1.1f1", "2019.1.1f1").should.equal(0); }); - it("test 2019.1.1f1c1 == 2019.1.1f1c1", function() { + it("test 2019.1.1f1c1 == 2019.1.1f1c1", function () { compareEditorVersion("2019.1.1f1c1", "2019.1.1f1c1").should.equal(0); }); - it("test 2019.2 > 2019.1", function() { + it("test 2019.2 > 2019.1", function () { compareEditorVersion("2019.2", "2019.1").should.equal(1); }); - it("test 2020.2 > 2019.1", function() { + it("test 2020.2 > 2019.1", function () { compareEditorVersion("2020.1", "2019.1").should.equal(1); }); - it("test 2019.1 < 2019.2", function() { + it("test 2019.1 < 2019.2", function () { compareEditorVersion("2019.1", "2019.2").should.equal(-1); }); - it("test 2019.1 < 2020.1", function() { + it("test 2019.1 < 2020.1", function () { compareEditorVersion("2019.1", "2020.1").should.equal(-1); }); - it("test 2019.1 < 2019.1.1", function() { + it("test 2019.1 < 2019.1.1", function () { compareEditorVersion("2019.1", "2019.1.1").should.equal(-1); }); - it("test 2019.1.1 < 2019.1.1f1", function() { + it("test 2019.1.1 < 2019.1.1f1", function () { compareEditorVersion("2019.1.1", "2019.1.1f1").should.equal(-1); }); - it("test 2019.1.1a1 < 2020.1.1b1", function() { + it("test 2019.1.1a1 < 2020.1.1b1", function () { compareEditorVersion("2019.1.1a1", "2020.1.1b1").should.equal(-1); }); - it("test 2019.1.1b1 < 2020.1.1f1", function() { + it("test 2019.1.1b1 < 2020.1.1f1", function () { compareEditorVersion("2019.1.1b1", "2020.1.1f1").should.equal(-1); }); - it("test 2019.1.1f1 < 2020.1.1f1c1", function() { + it("test 2019.1.1f1 < 2020.1.1f1c1", function () { compareEditorVersion("2019.1.1f1", "2020.1.1f1c1").should.equal(-1); }); }); - describe("isInternalPackage", function() { - it("test com.otherorg.software", function() { + describe("isInternalPackage", function () { + it("test com.otherorg.software", function () { isInternalPackage("com.otherorg.software").should.not.be.ok(); }); - it("test com.unity.ugui", function() { + it("test com.unity.ugui", function () { isInternalPackage("com.unity.ugui").should.be.ok(); }); - it("test com.unity.modules.tilemap", function() { + it("test com.unity.modules.tilemap", function () { isInternalPackage("com.unity.modules.tilemap").should.be.ok(); }); }); diff --git a/test/test-pkg-name.js b/test/test-pkg-name.ts similarity index 84% rename from test/test-pkg-name.js rename to test/test-pkg-name.ts index 6904d9f5..c7b08b47 100644 --- a/test/test-pkg-name.js +++ b/test/test-pkg-name.ts @@ -1,11 +1,12 @@ /* eslint-disable no-unused-vars */ /* eslint-disable no-undef */ -const assert = require("assert"); -const fs = require("fs"); -const nock = require("nock"); -const path = require("path"); -const should = require("should"); -const { splitPkgName } = require("../build/lib/utils/pkg-name"); +import assert from "assert"; +import fs from "fs"; +import nock from "nock"; +import path from "path"; +import should from "should"; +import { splitPkgName } from "../lib/utils/pkg-name"; + describe("pkg-name.ts", function () { describe("splitPkgName", function () { it("pkg@version", function () { diff --git a/test/utils.js b/test/utils.ts similarity index 65% rename from test/utils.js rename to test/utils.ts index 9950f707..0a8f854b 100644 --- a/test/utils.js +++ b/test/utils.ts @@ -1,15 +1,15 @@ -const _ = require("lodash"); -const fse = require("fs-extra"); -const nock = require("nock"); -const path = require("path"); -const os = require("os"); -const testConsole = require("test-console"); - -const getWorkDir = function(pathToTmp) { +import _ from "lodash"; +import fse from "fs-extra"; +import nock from "nock"; +import path from "path"; +import os from "os"; +import testConsole from "test-console"; + +export const getWorkDir = function (pathToTmp) { return path.join(os.tmpdir(), pathToTmp); }; -const createWorkDir = function(pathToTmp, { manifest, editorVersion }) { +export const createWorkDir = function (pathToTmp, { manifest, editorVersion }) { const workDir = getWorkDir(pathToTmp); fse.mkdirpSync(workDir); if (manifest) { @@ -30,39 +30,29 @@ const createWorkDir = function(pathToTmp, { manifest, editorVersion }) { } }; -const removeWorkDir = function(pathToTmp) { +export const removeWorkDir = function (pathToTmp) { const cwd = getWorkDir(pathToTmp); fse.removeSync(cwd); }; -const nockUp = function() { +export const nockUp = function () { if (!nock.isActive()) nock.activate(); }; -const nockDown = function() { +export const nockDown = function () { nock.restore(); nock.cleanAll(); }; -const getOutputs = function(stdouInspect, stderrInsepct) { +export const getOutputs = function (stdouInspect, stderrInsepct) { const results = [stdouInspect.output.join(""), stderrInsepct.output.join("")]; stdouInspect.restore(); stderrInsepct.restore(); return results; }; -const getInspects = function() { +export const getInspects = function () { const stdoutInspect = testConsole.stdout.inspect(); const stderrInspect = testConsole.stderr.inspect(); return [stdoutInspect, stderrInspect]; }; - -module.exports = { - getWorkDir, - createWorkDir, - removeWorkDir, - nockUp, - nockDown, - getInspects, - getOutputs -}; From 3be98ac3c3d4b3e4cea47046348d5066fd061be2 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 11:35:10 +0200 Subject: [PATCH 177/201] refactor: optimize test imports --- test/test-cmd-add.ts | 8 +++----- test/test-cmd-deps.ts | 7 ++----- test/test-cmd-login.ts | 6 ++---- test/test-cmd-remove.ts | 8 +++----- test/test-cmd-search.ts | 6 ++---- test/test-cmd-view.ts | 7 ++----- test/test-core.ts | 6 ++---- test/test-pkg-name.ts | 9 ++------- 8 files changed, 18 insertions(+), 39 deletions(-) diff --git a/test/test-cmd-add.ts b/test/test-cmd-add.ts index 2bc0e01d..5a14cd58 100644 --- a/test/test-cmd-add.ts +++ b/test/test-cmd-add.ts @@ -1,9 +1,7 @@ -/* eslint-disable no-unused-vars */ -/* eslint-disable no-undef */ -import assert from "assert"; +import "assert"; import nock from "nock"; -import should from "should"; -import { loadManifest, parseEnv } from "../lib/core"; +import "should"; +import { loadManifest } from "../lib/core"; import { add } from "../lib/cmd-add"; diff --git a/test/test-cmd-deps.ts b/test/test-cmd-deps.ts index 62333e14..a535b674 100644 --- a/test/test-cmd-deps.ts +++ b/test/test-cmd-deps.ts @@ -1,9 +1,6 @@ -/* eslint-disable no-unused-vars */ -/* eslint-disable no-undef */ -import assert from "assert"; +import "assert"; import nock from "nock"; -import should from "should"; -import { loadManifest, parseEnv } from "../lib/core"; +import "should"; import { deps } from "../lib/cmd-deps"; diff --git a/test/test-cmd-login.ts b/test/test-cmd-login.ts index 94a52374..71cc89a7 100644 --- a/test/test-cmd-login.ts +++ b/test/test-cmd-login.ts @@ -1,7 +1,5 @@ -/* eslint-disable no-unused-vars */ -/* eslint-disable no-undef */ -import assert from "assert"; -import nock from "nock"; +import "assert"; +import "nock"; import should from "should"; import { generateNpmrcLines, diff --git a/test/test-cmd-remove.ts b/test/test-cmd-remove.ts index 32f109f9..c6ff1ed8 100644 --- a/test/test-cmd-remove.ts +++ b/test/test-cmd-remove.ts @@ -1,8 +1,6 @@ -/* eslint-disable no-unused-vars */ -/* eslint-disable no-undef */ -import assert from "assert"; -import should from "should"; -import { loadManifest, parseEnv } from "../lib/core"; +import "assert"; +import "should"; +import { loadManifest } from "../lib/core"; import { remove } from "../lib/cmd-remove"; diff --git a/test/test-cmd-search.ts b/test/test-cmd-search.ts index c3f512de..612184aa 100644 --- a/test/test-cmd-search.ts +++ b/test/test-cmd-search.ts @@ -1,8 +1,6 @@ -/* eslint-disable no-unused-vars */ -/* eslint-disable no-undef */ -import assert from "assert"; +import "assert"; import nock from "nock"; -import should from "should"; +import "should"; import { search } from "../lib/cmd-search"; import { diff --git a/test/test-cmd-view.ts b/test/test-cmd-view.ts index 47913a8a..3d0eb90a 100644 --- a/test/test-cmd-view.ts +++ b/test/test-cmd-view.ts @@ -1,9 +1,6 @@ -/* eslint-disable no-unused-vars */ -/* eslint-disable no-undef */ -import assert from "assert"; +import "assert"; import nock from "nock"; -import should from "should"; -import { loadManifest, parseEnv } from "../lib/core"; +import "should"; import { view } from "../lib/cmd-view"; diff --git a/test/test-core.ts b/test/test-core.ts index 0a746c3b..8a128679 100644 --- a/test/test-core.ts +++ b/test/test-core.ts @@ -1,10 +1,8 @@ -/* eslint-disable no-unused-vars */ -/* eslint-disable no-undef */ -import assert from "assert"; +import "assert"; import fs from "fs"; import nock from "nock"; import path from "path"; -import should from "should"; +import "should"; import { compareEditorVersion, env, diff --git a/test/test-pkg-name.ts b/test/test-pkg-name.ts index c7b08b47..77f9f233 100644 --- a/test/test-pkg-name.ts +++ b/test/test-pkg-name.ts @@ -1,10 +1,5 @@ -/* eslint-disable no-unused-vars */ -/* eslint-disable no-undef */ -import assert from "assert"; -import fs from "fs"; -import nock from "nock"; -import path from "path"; -import should from "should"; +import "assert"; +import "should"; import { splitPkgName } from "../lib/utils/pkg-name"; describe("pkg-name.ts", function () { From 694be3a101cfb45c1f8b667e8e40c4e6d3073e31 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 11:42:36 +0200 Subject: [PATCH 178/201] refactor: convert type declarations to exports Seems to cause less TS problems that way --- lib/client.ts | 1 + lib/cmd-add.ts | 1 + lib/cmd-deps.ts | 1 + lib/cmd-login.ts | 1 + lib/cmd-remove.ts | 1 + lib/cmd-search.ts | 7 +++ lib/cmd-view.ts | 1 + lib/core.ts | 13 +++++ lib/types/global.d.ts | 117 --------------------------------------- lib/types/global.ts | 115 ++++++++++++++++++++++++++++++++++++++ lib/utils/pkg-name.ts | 2 + lib/utils/pkg-version.ts | 2 + 12 files changed, 145 insertions(+), 117 deletions(-) delete mode 100644 lib/types/global.d.ts create mode 100644 lib/types/global.ts diff --git a/lib/client.ts b/lib/client.ts index 5d16f17f..a6a80784 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -8,6 +8,7 @@ import RegClient, { import log from "./logger"; import request from "request"; import { AssertionError } from "assert"; +import {PkgInfo} from "./types/global"; export type NpmClient = { rawClient: RegClient; diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index aa12b3bb..f48259ab 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -13,6 +13,7 @@ import { } from "./core"; import { isUrlVersion } from "./utils/pkg-version"; import { splitPkgName } from "./utils/pkg-name"; +import {GlobalOptions, PkgName, ScopedRegistry} from "./types/global"; export type AddOptions = { test: boolean; diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index 2cdaa758..a96d68e7 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -1,6 +1,7 @@ import log from "./logger"; import { fetchPackageDependencies, parseEnv } from "./core"; import { splitPkgName } from "./utils/pkg-name"; +import { GlobalOptions, PkgName, PkgVersion } from "./types/global"; export type DepsOptions = { deep: boolean; diff --git a/lib/cmd-login.ts b/lib/cmd-login.ts index 2a88f340..1c34304d 100644 --- a/lib/cmd-login.ts +++ b/lib/cmd-login.ts @@ -12,6 +12,7 @@ import { parseEnv, saveUpmConfig, } from "./core"; +import { GlobalOptions, Registry } from "./types/global"; export type LoginOptions = { username?: string; diff --git a/lib/cmd-remove.ts b/lib/cmd-remove.ts index 025ec8ea..32f7832a 100644 --- a/lib/cmd-remove.ts +++ b/lib/cmd-remove.ts @@ -1,6 +1,7 @@ import log from "./logger"; import { env, loadManifest, parseEnv, saveManifest } from "./core"; import { splitPkgName } from "./utils/pkg-name"; +import { GlobalOptions, PkgName, ScopedRegistry } from "./types/global"; export type RemoveOptions = { _global: GlobalOptions; diff --git a/lib/cmd-search.ts b/lib/cmd-search.ts index c0a4a757..01264e21 100644 --- a/lib/cmd-search.ts +++ b/lib/cmd-search.ts @@ -6,6 +6,13 @@ import { env, getLatestVersion, getNpmFetchOptions, parseEnv } from "./core"; import { is404Error, isHttpError } from "./utils/error-type-guards"; import * as os from "os"; import assert from "assert"; +import { + GlobalOptions, + PkgInfo, + PkgName, + PkgVersion, + Registry, +} from "./types/global"; type DateString = string; diff --git a/lib/cmd-view.ts b/lib/cmd-view.ts index 1a7fc537..0b760c39 100644 --- a/lib/cmd-view.ts +++ b/lib/cmd-view.ts @@ -3,6 +3,7 @@ import log from "./logger"; import { env, fetchPackageInfo, getLatestVersion, parseEnv } from "./core"; import assert from "assert"; import { splitPkgName } from "./utils/pkg-name"; +import { GlobalOptions, PkgInfo, PkgName } from "./types/global"; export type ViewOptions = { _global: GlobalOptions; diff --git a/lib/core.ts b/lib/core.ts index 6c28f0d5..cf7ac3d1 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -14,6 +14,19 @@ import log from "./logger"; import { assertIsError } from "./utils/error-type-guards"; import search from "libnpmsearch"; import assert from "assert"; +import { + Dependency, + Env, + GlobalOptions, + NameVersionPair, + PkgInfo, + PkgManifest, + PkgName, + PkgVersion, + Registry, + SemanticVersion, + UPMConfig, +} from "./types/global"; export const env: Env = { auth: {}, diff --git a/lib/types/global.d.ts b/lib/types/global.d.ts deleted file mode 100644 index 65265d93..00000000 --- a/lib/types/global.d.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { NpmAuth } from "another-npm-registry-client"; - -declare global { - type PkgVersion = string; - - type ReverseDomainName = string; - - type PkgName = ReverseDomainName | `${ReverseDomainName}@${PkgVersion}`; - - type Region = "us" | "cn"; - - type Registry = string; - - type SemanticVersion = { - major: number; - minor: number; - patch?: number; - flag?: "a" | "b" | "f" | "c"; - flagValue?: 0 | 1 | 2; - build?: number; - loc?: string; - locValue?: number; - locBuild?: number; - }; - - type Env = { - cwd: string; - color: boolean; - systemUser: boolean; - wsl: boolean; - npmAuth?: Record; - auth: Record; - upstream: boolean; - upstreamRegistry: string; - registry: string; - namespace: string; - editorVersion: string | null; - region: Region; - manifestPath: string; - }; - - type Dist = { - tarball: string; - shasum: string; - integrity: string; - }; - - type PkgVersionInfo = { - unity?: string; - unityRelease: string; - dependencies: Record; - license?: string; - displayName: string; - description?: string; - keywords?: string[]; - homepage: string; - dist?: Dist; - }; - - type PkgInfo = { - name: PkgName; - versions: Record; - "dist-tags": { latest?: PkgVersion }; - version?: PkgVersion; - description?: string; - keywords?: string[]; - time: Record<"created" | "modified" | PkgVersion, string>; - date?: Date; - }; - - type NameVersionPair = { - name: PkgName; - version: PkgVersion | undefined; - }; - - type Dependency = { - name: PkgName; - version: PkgVersion | undefined; - upstream: boolean; - self: boolean; - internal: boolean; - reason: string | null; - resolved?: boolean; - }; - - type ScopedRegistry = { - name: string; - url: string; - scopes: PkgName[]; - }; - - type PkgManifest = { - dependencies: Record; - scopedRegistries: ScopedRegistry[]; - testables: string[]; - }; - - type GlobalOptions = { - registry?: Registry; - verbose: boolean; - color?: boolean; - upstream?: boolean; - cn?: boolean; - systemUser: boolean; - wsl: boolean; - chdir: string; - }; - - type UpmAuth = { - email: string; - alwaysAuth: boolean; - } & ({ token: string } | { _auth: string }); - - type UPMConfig = { - npmAuth?: Record; - }; -} diff --git a/lib/types/global.ts b/lib/types/global.ts new file mode 100644 index 00000000..e04ca6cf --- /dev/null +++ b/lib/types/global.ts @@ -0,0 +1,115 @@ +import { NpmAuth } from "another-npm-registry-client"; + +export type PkgVersion = string; + +export type ReverseDomainName = string; + +export type PkgName = ReverseDomainName | `${ReverseDomainName}@${PkgVersion}`; + +export type Region = "us" | "cn"; + +export type Registry = string; + +export type SemanticVersion = { + major: number; + minor: number; + patch?: number; + flag?: "a" | "b" | "f" | "c"; + flagValue?: 0 | 1 | 2; + build?: number; + loc?: string; + locValue?: number; + locBuild?: number; +}; + +export type Env = { + cwd: string; + color: boolean; + systemUser: boolean; + wsl: boolean; + npmAuth?: Record; + auth: Record; + upstream: boolean; + upstreamRegistry: string; + registry: string; + namespace: string; + editorVersion: string | null; + region: Region; + manifestPath: string; +}; + +export type Dist = { + tarball: string; + shasum: string; + integrity: string; +}; + +export type PkgVersionInfo = { + unity?: string; + unityRelease: string; + dependencies: Record; + license?: string; + displayName: string; + description?: string; + keywords?: string[]; + homepage: string; + dist?: Dist; +}; + +export type PkgInfo = { + name: PkgName; + versions: Record; + "dist-tags": { latest?: PkgVersion }; + version?: PkgVersion; + description?: string; + keywords?: string[]; + time: Record<"created" | "modified" | PkgVersion, string>; + date?: Date; +}; + +export type NameVersionPair = { + name: PkgName; + version: PkgVersion | undefined; +}; + +export type Dependency = { + name: PkgName; + version: PkgVersion | undefined; + upstream: boolean; + self: boolean; + internal: boolean; + reason: string | null; + resolved?: boolean; +}; + +export type ScopedRegistry = { + name: string; + url: string; + scopes: PkgName[]; +}; + +export type PkgManifest = { + dependencies: Record; + scopedRegistries: ScopedRegistry[]; + testables: string[]; +}; + +export type GlobalOptions = { + registry?: Registry; + verbose: boolean; + color?: boolean; + upstream?: boolean; + cn?: boolean; + systemUser: boolean; + wsl: boolean; + chdir: string; +}; + +export type UpmAuth = { + email: string; + alwaysAuth: boolean; +} & ({ token: string } | { _auth: string }); + +export type UPMConfig = { + npmAuth?: Record; +}; diff --git a/lib/utils/pkg-name.ts b/lib/utils/pkg-name.ts index dcbbc0d2..146ea161 100644 --- a/lib/utils/pkg-name.ts +++ b/lib/utils/pkg-name.ts @@ -1,3 +1,5 @@ +import { PkgName, PkgVersion, ReverseDomainName } from "../types/global"; + /** * Split package-name, which may include a version into the actual name of the * package and the version if it exists diff --git a/lib/utils/pkg-version.ts b/lib/utils/pkg-version.ts index 459ae800..fac76da6 100644 --- a/lib/utils/pkg-version.ts +++ b/lib/utils/pkg-version.ts @@ -1,3 +1,5 @@ +import { PkgVersion } from "../types/global"; + const isGit = (version: PkgVersion): boolean => version.startsWith("git"); const isHttp = (version: PkgVersion): boolean => version.startsWith("http"); From 4b90ae1930064a4a44207980b39ffcfba51c84f7 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 11:45:08 +0200 Subject: [PATCH 179/201] refactor: make properties optional According to usage in tests, these properties should be optional --- lib/types/global.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/types/global.ts b/lib/types/global.ts index e04ca6cf..0cb82ca6 100644 --- a/lib/types/global.ts +++ b/lib/types/global.ts @@ -90,8 +90,8 @@ export type ScopedRegistry = { export type PkgManifest = { dependencies: Record; - scopedRegistries: ScopedRegistry[]; - testables: string[]; + scopedRegistries?: ScopedRegistry[]; + testables?: string[]; }; export type GlobalOptions = { From 725e90869414eefb89af5d51624db4b6ba37a3f9 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 11:45:41 +0200 Subject: [PATCH 180/201] fix: type errors in test utils Add return and param types for all functions --- test/utils.ts | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/test/utils.ts b/test/utils.ts index 0a8f854b..d50493cb 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -1,15 +1,24 @@ -import _ from "lodash"; import fse from "fs-extra"; import nock from "nock"; import path from "path"; import os from "os"; import testConsole from "test-console"; +import { PkgManifest } from "../lib/types/global"; +import _ from "lodash"; + +export type ManifestCreationOptions = { + manifest: boolean | PkgManifest; + editorVersion?: string; +}; -export const getWorkDir = function (pathToTmp) { +export const getWorkDir = function (pathToTmp: string): string { return path.join(os.tmpdir(), pathToTmp); }; -export const createWorkDir = function (pathToTmp, { manifest, editorVersion }) { +export const createWorkDir = function ( + pathToTmp: string, + { manifest, editorVersion }: ManifestCreationOptions +) { const workDir = getWorkDir(pathToTmp); fse.mkdirpSync(workDir); if (manifest) { @@ -30,7 +39,7 @@ export const createWorkDir = function (pathToTmp, { manifest, editorVersion }) { } }; -export const removeWorkDir = function (pathToTmp) { +export const removeWorkDir = function (pathToTmp: string) { const cwd = getWorkDir(pathToTmp); fse.removeSync(cwd); }; @@ -44,14 +53,23 @@ export const nockDown = function () { nock.cleanAll(); }; -export const getOutputs = function (stdouInspect, stderrInsepct) { - const results = [stdouInspect.output.join(""), stderrInsepct.output.join("")]; +export const getOutputs = function ( + stdouInspect: testConsole.Inspector, + stderrInsepct: testConsole.Inspector +): [string, string] { + const results: [string, string] = [ + stdouInspect.output.join(""), + stderrInsepct.output.join(""), + ]; stdouInspect.restore(); stderrInsepct.restore(); return results; }; -export const getInspects = function () { +export const getInspects = function (): [ + testConsole.Inspector, + testConsole.Inspector +] { const stdoutInspect = testConsole.stdout.inspect(); const stderrInspect = testConsole.stderr.inspect(); return [stdoutInspect, stderrInspect]; From 1527d964cb0ac482cee12bea15582a62731066fc Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 11:57:10 +0200 Subject: [PATCH 181/201] misc: reformat files --- lib/client.ts | 2 +- lib/cmd-add.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/client.ts b/lib/client.ts index a6a80784..f8395b13 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -8,7 +8,7 @@ import RegClient, { import log from "./logger"; import request from "request"; import { AssertionError } from "assert"; -import {PkgInfo} from "./types/global"; +import { PkgInfo } from "./types/global"; export type NpmClient = { rawClient: RegClient; diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index f48259ab..c72a08ca 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -13,7 +13,7 @@ import { } from "./core"; import { isUrlVersion } from "./utils/pkg-version"; import { splitPkgName } from "./utils/pkg-name"; -import {GlobalOptions, PkgName, ScopedRegistry} from "./types/global"; +import { GlobalOptions, PkgName, ScopedRegistry } from "./types/global"; export type AddOptions = { test: boolean; From e39ad4867258da8e05ca2b033b7d43777268b949 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 11:59:04 +0200 Subject: [PATCH 182/201] refactor: make properties optional According to usage in tests --- lib/cmd-add.ts | 8 ++++---- lib/types/global.ts | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/cmd-add.ts b/lib/cmd-add.ts index c72a08ca..4b9934f1 100644 --- a/lib/cmd-add.ts +++ b/lib/cmd-add.ts @@ -16,8 +16,8 @@ import { splitPkgName } from "./utils/pkg-name"; import { GlobalOptions, PkgName, ScopedRegistry } from "./types/global"; export type AddOptions = { - test: boolean; - force: boolean; + test?: boolean; + force?: boolean; _global: GlobalOptions; }; @@ -51,8 +51,8 @@ const _add = async function ({ force, }: { pkg: PkgName; - testables: boolean; - force: boolean; + testables?: boolean; + force?: boolean; }) { // dirty flag let dirty = false; diff --git a/lib/types/global.ts b/lib/types/global.ts index 0cb82ca6..3af06329 100644 --- a/lib/types/global.ts +++ b/lib/types/global.ts @@ -96,13 +96,13 @@ export type PkgManifest = { export type GlobalOptions = { registry?: Registry; - verbose: boolean; + verbose?: boolean; color?: boolean; upstream?: boolean; cn?: boolean; - systemUser: boolean; - wsl: boolean; - chdir: string; + systemUser?: boolean; + wsl?: boolean; + chdir?: string; }; export type UpmAuth = { From 6bb385d178d6b022b56846d9341dc5dcfafafb07 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 12:02:44 +0200 Subject: [PATCH 183/201] fix: inspector type errors in tests Type inspect variables. We force the null because it is guaranteed that inspectors will be set before a test is run --- test/test-cmd-add.ts | 5 +++-- test/test-cmd-deps.ts | 6 ++++-- test/test-cmd-remove.ts | 5 +++-- test/test-cmd-search.ts | 6 ++++-- test/test-cmd-view.ts | 6 ++++-- test/test-core.ts | 9 +++++---- 6 files changed, 23 insertions(+), 14 deletions(-) diff --git a/test/test-cmd-add.ts b/test/test-cmd-add.ts index 5a14cd58..ef24c38c 100644 --- a/test/test-cmd-add.ts +++ b/test/test-cmd-add.ts @@ -14,6 +14,7 @@ import { nockUp, removeWorkDir, } from "./utils"; +import testConsole from "test-console"; describe("cmd-add.ts", function () { const options = { @@ -47,8 +48,8 @@ describe("cmd-add.ts", function () { force: true, }; describe("add", function () { - let stdoutInspect = null; - let stderrInspect = null; + let stdoutInspect: testConsole.Inspector = null!; + let stderrInspect: testConsole.Inspector = null!; const remotePkgInfoA = { name: "com.base.package-a", versions: { diff --git a/test/test-cmd-deps.ts b/test/test-cmd-deps.ts index a535b674..077e67b1 100644 --- a/test/test-cmd-deps.ts +++ b/test/test-cmd-deps.ts @@ -13,6 +13,7 @@ import { nockUp, removeWorkDir, } from "./utils"; +import testConsole from "test-console"; describe("cmd-deps.ts", function () { const options = { @@ -22,8 +23,9 @@ describe("cmd-deps.ts", function () { }, }; describe("deps", function () { - let stdoutInspect = null; - let stderrInspect = null; + let stdoutInspect: testConsole.Inspector = null!; + let stderrInspect: testConsole.Inspector = null!; + const remotePkgInfoA = { name: "com.example.package-a", versions: { diff --git a/test/test-cmd-remove.ts b/test/test-cmd-remove.ts index c6ff1ed8..560b429c 100644 --- a/test/test-cmd-remove.ts +++ b/test/test-cmd-remove.ts @@ -11,11 +11,12 @@ import { getWorkDir, removeWorkDir, } from "./utils"; +import testConsole from "test-console"; describe("cmd-remove.ts", function () { describe("remove", function () { - let stdoutInspect = null; - let stderrInspect = null; + let stdoutInspect: testConsole.Inspector = null!; + let stderrInspect: testConsole.Inspector = null!; const defaultManifest = { dependencies: { "com.example.package-a": "1.0.0", diff --git a/test/test-cmd-search.ts b/test/test-cmd-search.ts index 612184aa..9b4161f2 100644 --- a/test/test-cmd-search.ts +++ b/test/test-cmd-search.ts @@ -12,10 +12,12 @@ import { nockUp, removeWorkDir, } from "./utils"; +import testConsole from "test-console"; describe("cmd-search.ts", function () { - let stdoutInspect = null; - let stderrInspect = null; + let stdoutInspect: testConsole.Inspector = null!; + let stderrInspect: testConsole.Inspector = null!; + const options = { _global: { registry: "http://example.com", diff --git a/test/test-cmd-view.ts b/test/test-cmd-view.ts index 3d0eb90a..f93bc674 100644 --- a/test/test-cmd-view.ts +++ b/test/test-cmd-view.ts @@ -13,6 +13,7 @@ import { nockUp, removeWorkDir, } from "./utils"; +import testConsole from "test-console"; describe("cmd-view.ts", function () { const options = { @@ -29,8 +30,9 @@ describe("cmd-view.ts", function () { }, }; describe("view", function () { - let stdoutInspect = null; - let stderrInspect = null; + let stdoutInspect: testConsole.Inspector = null!; + let stderrInspect: testConsole.Inspector = null!; + const remotePkgInfoA = { name: "com.example.package-a", versions: { diff --git a/test/test-core.ts b/test/test-core.ts index 8a128679..5853560a 100644 --- a/test/test-core.ts +++ b/test/test-core.ts @@ -24,11 +24,12 @@ import { nockUp, removeWorkDir, } from "./utils"; +import testConsole from "test-console"; describe("cmd-core.ts", function () { describe("parseEnv", function () { - let stdoutInspect = null; - let stderrInspect = null; + let stdoutInspect: testConsole.Inspector = null!; + let stderrInspect: testConsole.Inspector = null!; before(function () { removeWorkDir("test-openupm-cli"); removeWorkDir("test-openupm-cli-no-manifest"); @@ -214,8 +215,8 @@ describe("cmd-core.ts", function () { }); describe("loadManifest/SaveManifest", function () { - let stdoutInspect = null; - let stderrInspect = null; + let stdoutInspect: testConsole.Inspector = null!; + let stderrInspect: testConsole.Inspector = null!; beforeEach(function () { removeWorkDir("test-openupm-cli"); createWorkDir("test-openupm-cli", { manifest: true }); From f04b78bf0491580650efe617d8baabcb8402119b Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 12:05:34 +0200 Subject: [PATCH 184/201] refactor: remove unused constants --- test/test-cmd-add.ts | 40 ++++++++++++++++++++-------------------- test/test-cmd-deps.ts | 13 ++++++------- test/test-cmd-remove.ts | 8 ++++---- test/test-cmd-search.ts | 15 +++++---------- test/test-cmd-view.ts | 10 +++++----- test/test-core.ts | 25 +++++-------------------- 6 files changed, 45 insertions(+), 66 deletions(-) diff --git a/test/test-cmd-add.ts b/test/test-cmd-add.ts index ef24c38c..21775cb6 100644 --- a/test/test-cmd-add.ts +++ b/test/test-cmd-add.ts @@ -292,7 +292,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(0); const manifest = await loadManifest(); manifest.should.be.deepEqual(expectedManifestA); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -301,7 +301,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(0); const manifest = await loadManifest(); manifest.should.be.deepEqual(expectedManifestA); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -310,7 +310,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(0); const manifest = await loadManifest(); manifest.should.be.deepEqual(expectedManifestA); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -321,7 +321,7 @@ describe("cmd-add.ts", function () { retCode2.should.equal(0); const manifest = await loadManifest(); manifest.should.be.deepEqual(expectedManifestA); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("modified ").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -332,7 +332,7 @@ describe("cmd-add.ts", function () { retCode2.should.equal(0); const manifest = await loadManifest(); manifest.should.be.deepEqual(expectedManifestA); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("existed ").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -341,7 +341,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(1); const manifest = await loadManifest(); manifest.should.be.deepEqual(defaultManifest); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("version 2.0.0 is not a valid choice").should.be.ok(); stdout.includes("1.0.0").should.be.ok(); }); @@ -351,7 +351,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(0); const manifest = await loadManifest(); manifest.dependencies["com.base.package-a"].should.be.equal(gitUrl); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -361,7 +361,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(0); const manifest = await loadManifest(); manifest.dependencies["com.base.package-a"].should.be.equal(gitUrl); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -371,7 +371,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(0); const manifest = await loadManifest(); manifest.dependencies["com.base.package-a"].should.be.equal(fileUrl); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -380,7 +380,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(1); const manifest = await loadManifest(); manifest.should.deepEqual(defaultManifest); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); }); it("add more than one pkgs", async function () { @@ -391,7 +391,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(0); const manifest = await loadManifest(); manifest.should.be.deepEqual(expectedManifestAB); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added com.base.package-a").should.be.ok(); stdout.includes("added com.base.package-b").should.be.ok(); stdout.includes("open Unity").should.be.ok(); @@ -401,7 +401,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(0); const manifest = await loadManifest(); manifest.should.be.deepEqual(expectedManifestUpstream); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added com.upstream.package-up").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -410,7 +410,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(1); const manifest = await loadManifest(); manifest.should.deepEqual(defaultManifest); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); }); it("add pkg with nested dependencies", async function () { @@ -418,7 +418,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(0); const manifest = await loadManifest(); manifest.should.be.deepEqual(expectedManifestC); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -427,7 +427,7 @@ describe("cmd-add.ts", function () { retCode.should.equal(0); const manifest = await loadManifest(); manifest.should.be.deepEqual(expectedManifestTestable); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -437,7 +437,7 @@ describe("cmd-add.ts", function () { testableOptions ); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -447,7 +447,7 @@ describe("cmd-add.ts", function () { testableOptions ); retCode.should.equal(1); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("requires 2020.2 but found 2019.2.13f1").should.be.ok(); }); it("force add pkg with higher editor version", async function () { @@ -456,7 +456,7 @@ describe("cmd-add.ts", function () { forceOptions ); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("requires 2020.2 but found 2019.2.13f1").should.be.ok(); }); it("add pkg with wrong editor version", async function () { @@ -465,7 +465,7 @@ describe("cmd-add.ts", function () { testableOptions ); retCode.should.equal(1); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("2020 is not valid").should.be.ok(); console.log(stdout); }); @@ -475,7 +475,7 @@ describe("cmd-add.ts", function () { forceOptions ); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("2020 is not valid").should.be.ok(); console.log(stdout); }); diff --git a/test/test-cmd-deps.ts b/test/test-cmd-deps.ts index 077e67b1..f21e5f6f 100644 --- a/test/test-cmd-deps.ts +++ b/test/test-cmd-deps.ts @@ -98,7 +98,7 @@ describe("cmd-deps.ts", function () { it("deps pkg", async function () { const retCode = await deps("com.example.package-a", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-b").should.be.ok(); }); it("deps pkg --deep", async function () { @@ -107,38 +107,37 @@ describe("cmd-deps.ts", function () { deep: true, }); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-b").should.be.ok(); stdout.includes("com.example.package-up").should.be.ok(); }); it("deps pkg@latest", async function () { const retCode = await deps("com.example.package-a@latest", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-b").should.be.ok(); }); it("deps pkg@1.0.0", async function () { const retCode = await deps("com.example.package-a@1.0.0", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-b").should.be.ok(); }); it("deps pkg@not-exist-version", async function () { const retCode = await deps("com.example.package-a@2.0.0", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("is not a valid choice").should.be.ok(); }); it("deps pkg-not-exist", async function () { const retCode = await deps("pkg-not-exist", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("not found").should.be.ok(); }); it("deps pkg upstream", async function () { const retCode = await deps("com.example.package-up", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); }); }); diff --git a/test/test-cmd-remove.ts b/test/test-cmd-remove.ts index 560b429c..feccce00 100644 --- a/test/test-cmd-remove.ts +++ b/test/test-cmd-remove.ts @@ -63,7 +63,7 @@ describe("cmd-remove.ts", function () { "com.example", "com.example.package-b", ]); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("removed ").should.be.ok(); stdout.includes("open Unity").should.be.ok(); }); @@ -78,7 +78,7 @@ describe("cmd-remove.ts", function () { retCode.should.equal(1); const manifest = await loadManifest(); manifest.should.be.deepEqual(defaultManifest); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("please replace").should.be.ok(); }); it("remove pkg-not-exist", async function () { @@ -92,7 +92,7 @@ describe("cmd-remove.ts", function () { retCode.should.equal(1); const manifest = await loadManifest(); manifest.should.be.deepEqual(defaultManifest); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); }); it("remove more than one pkgs", async function () { @@ -115,7 +115,7 @@ describe("cmd-remove.ts", function () { manifest.dependencies["com.example.package-b"] == undefined ).should.be.ok(); manifest.scopedRegistries[0].scopes.should.be.deepEqual(["com.example"]); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("removed com.example.package-a").should.be.ok(); stdout.includes("removed com.example.package-b").should.be.ok(); stdout.includes("open Unity").should.be.ok(); diff --git a/test/test-cmd-search.ts b/test/test-cmd-search.ts index 9b4161f2..fad3dcf1 100644 --- a/test/test-cmd-search.ts +++ b/test/test-cmd-search.ts @@ -25,12 +25,7 @@ describe("cmd-search.ts", function () { chdir: getWorkDir("test-openupm-cli"), }, }; - const upstreamOptions = { - _global: { - registry: "http://example.com", - chdir: getWorkDir("test-openupm-cli"), - }, - }; + getWorkDir("test-openupm-cli"); beforeEach(function () { removeWorkDir("test-openupm-cli"); createWorkDir("test-openupm-cli", { manifest: true }); @@ -102,7 +97,7 @@ describe("cmd-search.ts", function () { it("simple", async function () { const retCode = await search("package-a", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package-a").should.be.ok(); stdout.includes("1.0.0").should.be.ok(); stdout.includes("2019-10-02").should.be.ok(); @@ -110,7 +105,7 @@ describe("cmd-search.ts", function () { it("pkg not exist", async function () { const retCode = await search("pkg-not-exist", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("No matches found").should.be.ok(); }); }); @@ -154,7 +149,7 @@ describe("cmd-search.ts", function () { }); const retCode = await search("package-a", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("fast search endpoint is not available").should.be.ok(); stdout.includes("package-a").should.be.ok(); stdout.includes("1.0.0").should.be.ok(); @@ -166,7 +161,7 @@ describe("cmd-search.ts", function () { }); const retCode = await search("pkg-not-exist", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("No matches found").should.be.ok(); }); }); diff --git a/test/test-cmd-view.ts b/test/test-cmd-view.ts index f93bc674..c448f8e1 100644 --- a/test/test-cmd-view.ts +++ b/test/test-cmd-view.ts @@ -151,31 +151,31 @@ describe("cmd-view.ts", function () { it("view pkg", async function () { const retCode = await view("com.example.package-a", options); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-a@1.0.0").should.be.ok(); }); it("view pkg@1.0.0", async function () { const retCode = await view("com.example.package-a@1.0.0", options); retCode.should.equal(1); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("please replace").should.be.ok(); }); it("view pkg-not-exist", async function () { const retCode = await view("pkg-not-exist", options); retCode.should.equal(1); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); }); it("view pkg from upstream", async function () { const retCode = await view("com.example.package-up", upstreamOptions); retCode.should.equal(0); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("com.example.package-up@1.0.0").should.be.ok(); }); it("view pkg-not-exist from upstream", async function () { const retCode = await view("pkg-not-exist", upstreamOptions); retCode.should.equal(1); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); }); }); diff --git a/test/test-core.ts b/test/test-core.ts index 5853560a..02be0bd2 100644 --- a/test/test-core.ts +++ b/test/test-core.ts @@ -62,7 +62,6 @@ describe("cmd-core.ts", function () { env.cwd.should.equal(""); env.manifestPath.should.equal(""); (env.editorVersion === null).should.be.ok(); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("check path", async function () { ( @@ -75,7 +74,6 @@ describe("cmd-core.ts", function () { env.manifestPath.should.be.equal( path.join(getWorkDir("test-openupm-cli"), "Packages/manifest.json") ); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("can not resolve path", async function () { ( @@ -84,7 +82,7 @@ describe("cmd-core.ts", function () { { checkPath: true } ) ).should.not.be.ok(); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("can not resolve path").should.be.ok(); }); it("can not locate manifest.json", async function () { @@ -94,7 +92,7 @@ describe("cmd-core.ts", function () { { checkPath: true } ) ).should.not.be.ok(); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("can not locate manifest.json").should.be.ok(); }); it("custom registry", async function () { @@ -106,7 +104,6 @@ describe("cmd-core.ts", function () { ).should.be.ok(); env.registry.should.be.equal("https://registry.npmjs.org"); env.namespace.should.be.equal("org.npmjs"); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("custom registry with splash", async function () { ( @@ -117,7 +114,6 @@ describe("cmd-core.ts", function () { ).should.be.ok(); env.registry.should.be.equal("https://registry.npmjs.org"); env.namespace.should.be.equal("org.npmjs"); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("custom registry with extra path", async function () { ( @@ -128,7 +124,6 @@ describe("cmd-core.ts", function () { ).should.be.ok(); env.registry.should.be.equal("https://registry.npmjs.org/some"); env.namespace.should.be.equal("org.npmjs"); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("custom registry with extra path and splash", async function () { ( @@ -139,7 +134,6 @@ describe("cmd-core.ts", function () { ).should.be.ok(); env.registry.should.be.equal("https://registry.npmjs.org/some"); env.namespace.should.be.equal("org.npmjs"); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("custom registry without http", async function () { ( @@ -150,7 +144,6 @@ describe("cmd-core.ts", function () { ).should.be.ok(); env.registry.should.be.equal("http://registry.npmjs.org"); env.namespace.should.be.equal("org.npmjs"); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("custom registry with ipv4+port", async function () { ( @@ -161,7 +154,6 @@ describe("cmd-core.ts", function () { ).should.be.ok(); env.registry.should.be.equal("http://127.0.0.1:4873"); env.namespace.should.be.equal("127.0.0.1"); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("custom registry with ipv6+port", async function () { ( @@ -172,14 +164,12 @@ describe("cmd-core.ts", function () { ).should.be.ok(); env.registry.should.be.equal("http://[1:2:3:4:5:6:7:8]:4873"); env.namespace.should.be.equal("1:2:3:4:5:6:7:8"); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("upstream", async function () { ( await parseEnv({ _global: { upstream: false } }, { checkPath: false }) ).should.be.ok(); env.upstream.should.not.be.ok(); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("editorVersion", async function () { ( @@ -189,7 +179,6 @@ describe("cmd-core.ts", function () { ) ).should.be.ok(); env.editorVersion.should.be.equal("2019.2.13f1"); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("region cn", async function () { ( @@ -198,7 +187,6 @@ describe("cmd-core.ts", function () { env.registry.should.be.equal("https://package.openupm.cn"); env.upstreamRegistry.should.be.equal("https://packages.unity.cn"); env.region.should.be.equal("cn"); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("region cn with a custom registry", async function () { ( @@ -210,7 +198,6 @@ describe("cmd-core.ts", function () { env.registry.should.be.equal("https://reg.custom-package.com"); env.upstreamRegistry.should.be.equal("https://packages.unity.cn"); env.region.should.be.equal("cn"); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); }); @@ -247,7 +234,6 @@ describe("cmd-core.ts", function () { ).should.be.ok(); const manifest = loadManifest(); manifest.should.be.deepEqual({ dependencies: {} }); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); it("no manifest file", async function () { ( @@ -258,7 +244,7 @@ describe("cmd-core.ts", function () { ).should.be.ok(); const manifest = loadManifest(); (manifest === null).should.be.ok(); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("does not exist").should.be.ok(); }); it("wrong json content", async function () { @@ -270,7 +256,7 @@ describe("cmd-core.ts", function () { ).should.be.ok(); const manifest = loadManifest(); (manifest === null).should.be.ok(); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); + const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("failed to parse").should.be.ok(); }); it("saveManifest", async function () { @@ -286,7 +272,6 @@ describe("cmd-core.ts", function () { saveManifest(manifest).should.be.ok(); const manifest2 = loadManifest(); manifest2.should.be.deepEqual(manifest); - const [stdout, stderr] = getOutputs(stdoutInspect, stderrInspect); }); }); @@ -318,7 +303,7 @@ describe("cmd-core.ts", function () { { checkPath: false } ) ).should.be.ok(); - const pkgInfoRemote = { name: "com.littlebigfun.addressable-importer" }; + nock("http://example.com").get("/package-a").reply(404); const info = await fetchPackageInfo("package-a"); (info === undefined).should.be.ok(); From 477cec9bd6f0e096babcd5c6965831cc09d6b0b2 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 12:06:46 +0200 Subject: [PATCH 185/201] refactor: remove unnecessary await a --- test/test-cmd-add.ts | 30 +++++++++++++++--------------- test/test-cmd-remove.ts | 8 +++++--- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/test/test-cmd-add.ts b/test/test-cmd-add.ts index 21775cb6..632517ae 100644 --- a/test/test-cmd-add.ts +++ b/test/test-cmd-add.ts @@ -290,7 +290,7 @@ describe("cmd-add.ts", function () { it("add pkg", async function () { const retCode = await add("com.base.package-a", options); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(expectedManifestA); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -299,7 +299,7 @@ describe("cmd-add.ts", function () { it("add pkg@1.0.0", async function () { const retCode = await add("com.base.package-a@1.0.0", options); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(expectedManifestA); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -308,7 +308,7 @@ describe("cmd-add.ts", function () { it("add pkg@latest", async function () { const retCode = await add("com.base.package-a@latest", options); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(expectedManifestA); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -319,7 +319,7 @@ describe("cmd-add.ts", function () { retCode1.should.equal(0); const retCode2 = await add("com.base.package-a@1.0.0", options); retCode2.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(expectedManifestA); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("modified ").should.be.ok(); @@ -330,7 +330,7 @@ describe("cmd-add.ts", function () { retCode1.should.equal(0); const retCode2 = await add("com.base.package-a@1.0.0", options); retCode2.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(expectedManifestA); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("existed ").should.be.ok(); @@ -339,7 +339,7 @@ describe("cmd-add.ts", function () { it("add pkg@not-exist-version", async function () { const retCode = await add("com.base.package-a@2.0.0", options); retCode.should.equal(1); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(defaultManifest); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("version 2.0.0 is not a valid choice").should.be.ok(); @@ -349,7 +349,7 @@ describe("cmd-add.ts", function () { const gitUrl = "https://github.com/yo/com.base.package-a"; const retCode = await add("com.base.package-a@" + gitUrl, options); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.dependencies["com.base.package-a"].should.be.equal(gitUrl); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -359,7 +359,7 @@ describe("cmd-add.ts", function () { const gitUrl = "git@github.com:yo/com.base.package-a"; const retCode = await add("com.base.package-a@" + gitUrl, options); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.dependencies["com.base.package-a"].should.be.equal(gitUrl); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -369,7 +369,7 @@ describe("cmd-add.ts", function () { const fileUrl = "file../yo/com.base.package-a"; const retCode = await add("com.base.package-a@" + fileUrl, options); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.dependencies["com.base.package-a"].should.be.equal(fileUrl); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -378,7 +378,7 @@ describe("cmd-add.ts", function () { it("add pkg-not-exist", async function () { const retCode = await add("pkg-not-exist", options); retCode.should.equal(1); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.deepEqual(defaultManifest); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); @@ -389,7 +389,7 @@ describe("cmd-add.ts", function () { options ); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(expectedManifestAB); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added com.base.package-a").should.be.ok(); @@ -399,7 +399,7 @@ describe("cmd-add.ts", function () { it("add pkg from upstream", async function () { const retCode = await add("com.upstream.package-up", upstreamOptions); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(expectedManifestUpstream); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added com.upstream.package-up").should.be.ok(); @@ -408,7 +408,7 @@ describe("cmd-add.ts", function () { it("add pkg-not-exist from upstream", async function () { const retCode = await add("pkg-not-exist", upstreamOptions); retCode.should.equal(1); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.deepEqual(defaultManifest); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); @@ -416,7 +416,7 @@ describe("cmd-add.ts", function () { it("add pkg with nested dependencies", async function () { const retCode = await add("com.base.package-c@latest", upstreamOptions); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(expectedManifestC); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -425,7 +425,7 @@ describe("cmd-add.ts", function () { it("add pkg with tests", async function () { const retCode = await add("com.base.package-a", testableOptions); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(expectedManifestTestable); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); diff --git a/test/test-cmd-remove.ts b/test/test-cmd-remove.ts index feccce00..e4d7248e 100644 --- a/test/test-cmd-remove.ts +++ b/test/test-cmd-remove.ts @@ -12,6 +12,7 @@ import { removeWorkDir, } from "./utils"; import testConsole from "test-console"; +import assert from "assert"; describe("cmd-remove.ts", function () { describe("remove", function () { @@ -55,7 +56,7 @@ describe("cmd-remove.ts", function () { }; const retCode = await remove("com.example.package-a", options); retCode.should.equal(0); - const manifest = await loadManifest(); + const manifest = loadManifest(); ( manifest.dependencies["com.example.package-a"] == undefined ).should.be.ok(); @@ -76,7 +77,7 @@ describe("cmd-remove.ts", function () { }; const retCode = await remove("com.example.package-a@1.0.0", options); retCode.should.equal(1); - const manifest = await loadManifest(); + const manifest = loadManifest(); manifest.should.be.deepEqual(defaultManifest); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("please replace").should.be.ok(); @@ -90,7 +91,8 @@ describe("cmd-remove.ts", function () { }; const retCode = await remove("pkg-not-exist", options); retCode.should.equal(1); - const manifest = await loadManifest(); + const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(defaultManifest); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); From 39b8295b16e31d3cc92a7ac01433273252216088 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 12:16:22 +0200 Subject: [PATCH 186/201] refactor: make properties optional According to usage in tests --- lib/cmd-deps.ts | 4 ++-- lib/core.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/cmd-deps.ts b/lib/cmd-deps.ts index a96d68e7..f5672ac2 100644 --- a/lib/cmd-deps.ts +++ b/lib/cmd-deps.ts @@ -4,7 +4,7 @@ import { splitPkgName } from "./utils/pkg-name"; import { GlobalOptions, PkgName, PkgVersion } from "./types/global"; export type DepsOptions = { - deep: boolean; + deep?: boolean; _global: GlobalOptions; }; @@ -26,7 +26,7 @@ const _deps = async function ({ }: { name: PkgName; version: PkgVersion | undefined; - deep: boolean; + deep?: boolean; }) { // eslint-disable-next-line no-unused-vars const [depsValid, depsInvalid] = await fetchPackageDependencies({ diff --git a/lib/core.ts b/lib/core.ts index cf7ac3d1..27c8ccd8 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -213,7 +213,7 @@ export const fetchPackageDependencies = async function ({ }: { name: PkgName; version: PkgVersion | undefined; - deep: boolean; + deep?: boolean; }): Promise<[Dependency[], Dependency[]]> { log.verbose("dependency", `fetch: ${name}@${version} deep=${deep}`); // a list of pending dependency {name, version} From 53d30345cc5b6d951e933eb0812bed46a433a7a4 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 12:13:15 +0200 Subject: [PATCH 187/201] refactor: fix null and undefined warnings in test Assert not-null or not-undefined where applicable --- test/test-cmd-add.ts | 16 ++++++++++++++++ test/test-cmd-remove.ts | 7 +++++++ test/test-core.ts | 36 +++++++++++++++++++++++++++--------- 3 files changed, 50 insertions(+), 9 deletions(-) diff --git a/test/test-cmd-add.ts b/test/test-cmd-add.ts index 632517ae..425e8fee 100644 --- a/test/test-cmd-add.ts +++ b/test/test-cmd-add.ts @@ -15,6 +15,7 @@ import { removeWorkDir, } from "./utils"; import testConsole from "test-console"; +import assert from "assert"; describe("cmd-add.ts", function () { const options = { @@ -291,6 +292,7 @@ describe("cmd-add.ts", function () { const retCode = await add("com.base.package-a", options); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(expectedManifestA); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -300,6 +302,7 @@ describe("cmd-add.ts", function () { const retCode = await add("com.base.package-a@1.0.0", options); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(expectedManifestA); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -309,6 +312,7 @@ describe("cmd-add.ts", function () { const retCode = await add("com.base.package-a@latest", options); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(expectedManifestA); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -320,6 +324,7 @@ describe("cmd-add.ts", function () { const retCode2 = await add("com.base.package-a@1.0.0", options); retCode2.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(expectedManifestA); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("modified ").should.be.ok(); @@ -331,6 +336,7 @@ describe("cmd-add.ts", function () { const retCode2 = await add("com.base.package-a@1.0.0", options); retCode2.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(expectedManifestA); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("existed ").should.be.ok(); @@ -340,6 +346,7 @@ describe("cmd-add.ts", function () { const retCode = await add("com.base.package-a@2.0.0", options); retCode.should.equal(1); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(defaultManifest); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("version 2.0.0 is not a valid choice").should.be.ok(); @@ -350,6 +357,7 @@ describe("cmd-add.ts", function () { const retCode = await add("com.base.package-a@" + gitUrl, options); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.dependencies["com.base.package-a"].should.be.equal(gitUrl); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -360,6 +368,7 @@ describe("cmd-add.ts", function () { const retCode = await add("com.base.package-a@" + gitUrl, options); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.dependencies["com.base.package-a"].should.be.equal(gitUrl); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -370,6 +379,7 @@ describe("cmd-add.ts", function () { const retCode = await add("com.base.package-a@" + fileUrl, options); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.dependencies["com.base.package-a"].should.be.equal(fileUrl); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -379,6 +389,7 @@ describe("cmd-add.ts", function () { const retCode = await add("pkg-not-exist", options); retCode.should.equal(1); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.deepEqual(defaultManifest); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); @@ -390,6 +401,7 @@ describe("cmd-add.ts", function () { ); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(expectedManifestAB); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added com.base.package-a").should.be.ok(); @@ -400,6 +412,7 @@ describe("cmd-add.ts", function () { const retCode = await add("com.upstream.package-up", upstreamOptions); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(expectedManifestUpstream); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added com.upstream.package-up").should.be.ok(); @@ -409,6 +422,7 @@ describe("cmd-add.ts", function () { const retCode = await add("pkg-not-exist", upstreamOptions); retCode.should.equal(1); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.deepEqual(defaultManifest); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("package not found").should.be.ok(); @@ -417,6 +431,7 @@ describe("cmd-add.ts", function () { const retCode = await add("com.base.package-c@latest", upstreamOptions); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(expectedManifestC); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); @@ -426,6 +441,7 @@ describe("cmd-add.ts", function () { const retCode = await add("com.base.package-a", testableOptions); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(expectedManifestTestable); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("added").should.be.ok(); diff --git a/test/test-cmd-remove.ts b/test/test-cmd-remove.ts index e4d7248e..5a8e8ab8 100644 --- a/test/test-cmd-remove.ts +++ b/test/test-cmd-remove.ts @@ -57,9 +57,12 @@ describe("cmd-remove.ts", function () { const retCode = await remove("com.example.package-a", options); retCode.should.equal(0); const manifest = loadManifest(); + assert(manifest !== null); ( manifest.dependencies["com.example.package-a"] == undefined ).should.be.ok(); + assert(manifest.scopedRegistries !== undefined); + assert(manifest.scopedRegistries[0] !== undefined); manifest.scopedRegistries[0].scopes.should.be.deepEqual([ "com.example", "com.example.package-b", @@ -78,6 +81,7 @@ describe("cmd-remove.ts", function () { const retCode = await remove("com.example.package-a@1.0.0", options); retCode.should.equal(1); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual(defaultManifest); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("please replace").should.be.ok(); @@ -110,12 +114,15 @@ describe("cmd-remove.ts", function () { ); retCode.should.equal(0); const manifest = await loadManifest(); + assert(manifest !== null); ( manifest.dependencies["com.example.package-a"] == undefined ).should.be.ok(); ( manifest.dependencies["com.example.package-b"] == undefined ).should.be.ok(); + assert(manifest.scopedRegistries !== undefined); + assert(manifest.scopedRegistries[0] !== undefined); manifest.scopedRegistries[0].scopes.should.be.deepEqual(["com.example"]); const [stdout] = getOutputs(stdoutInspect, stderrInspect); stdout.includes("removed com.example.package-a").should.be.ok(); diff --git a/test/test-core.ts b/test/test-core.ts index 02be0bd2..e85d26ee 100644 --- a/test/test-core.ts +++ b/test/test-core.ts @@ -25,6 +25,7 @@ import { removeWorkDir, } from "./utils"; import testConsole from "test-console"; +import assert from "assert"; describe("cmd-core.ts", function () { describe("parseEnv", function () { @@ -178,6 +179,7 @@ describe("cmd-core.ts", function () { { checkPath: true } ) ).should.be.ok(); + assert(env.editorVersion !== null); env.editorVersion.should.be.equal("2019.2.13f1"); }); it("region cn", async function () { @@ -233,6 +235,7 @@ describe("cmd-core.ts", function () { ) ).should.be.ok(); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual({ dependencies: {} }); }); it("no manifest file", async function () { @@ -267,10 +270,12 @@ describe("cmd-core.ts", function () { ) ).should.be.ok(); const manifest = loadManifest(); + assert(manifest !== null); manifest.should.be.deepEqual({ dependencies: {} }); manifest.dependencies["some-pack"] = "1.0.0"; saveManifest(manifest).should.be.ok(); const manifest2 = loadManifest(); + assert(manifest2 !== null); manifest2.should.be.deepEqual(manifest); }); }); @@ -294,6 +299,7 @@ describe("cmd-core.ts", function () { .get("/package-a") .reply(200, pkgInfoRemote, { "Content-Type": "application/json" }); const info = await fetchPackageInfo("package-a"); + assert(info !== undefined); info.should.deepEqual(pkgInfoRemote); }); it("404", async function () { @@ -312,9 +318,9 @@ describe("cmd-core.ts", function () { describe("getLatestVersion", function () { it("from dist-tags", async function () { - getLatestVersion({ "dist-tags": { latest: "1.0.0" } }).should.equal( - "1.0.0" - ); + const version = getLatestVersion({ "dist-tags": { latest: "1.0.0" } }); + assert(version !== undefined); + version.should.equal("1.0.0"); }); it("not found", async function () { ( @@ -328,17 +334,23 @@ describe("cmd-core.ts", function () { (parseEditorVersion(null) === null).should.be.ok(); }); it("test x.y", function () { - parseEditorVersion("2019.2").should.deepEqual({ major: 2019, minor: 2 }); + const version = parseEditorVersion("2019.2"); + assert(version !== null); + version.should.deepEqual({ major: 2019, minor: 2 }); }); it("test x.y.z", function () { - parseEditorVersion("2019.2.1").should.deepEqual({ + const version = parseEditorVersion("2019.2.1"); + assert(version !== null); + version.should.deepEqual({ major: 2019, minor: 2, patch: 1, }); }); it("test x.y.zan", function () { - parseEditorVersion("2019.2.1a5").should.deepEqual({ + const version = parseEditorVersion("2019.2.1a5"); + assert(version !== null); + version.should.deepEqual({ major: 2019, minor: 2, patch: 1, @@ -348,7 +360,9 @@ describe("cmd-core.ts", function () { }); }); it("test x.y.zbn", function () { - parseEditorVersion("2019.2.1b5").should.deepEqual({ + const version = parseEditorVersion("2019.2.1b5"); + assert(version !== null); + version.should.deepEqual({ major: 2019, minor: 2, patch: 1, @@ -358,7 +372,9 @@ describe("cmd-core.ts", function () { }); }); it("test x.y.zfn", function () { - parseEditorVersion("2019.2.1f5").should.deepEqual({ + const version = parseEditorVersion("2019.2.1f5"); + assert(version !== null); + version.should.deepEqual({ major: 2019, minor: 2, patch: 1, @@ -368,7 +384,9 @@ describe("cmd-core.ts", function () { }); }); it("test x.y.zcn", function () { - parseEditorVersion("2019.2.1f1c5").should.deepEqual({ + const version = parseEditorVersion("2019.2.1f1c5"); + assert(version !== null); + version.should.deepEqual({ major: 2019, minor: 2, patch: 1, From 34d6abcd5d26dae868151898fce22533eb7a795f Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 15:10:33 +0200 Subject: [PATCH 188/201] misc: drop outdated test --- test/test-core.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/test/test-core.ts b/test/test-core.ts index e85d26ee..dd692489 100644 --- a/test/test-core.ts +++ b/test/test-core.ts @@ -322,12 +322,6 @@ describe("cmd-core.ts", function () { assert(version !== undefined); version.should.equal("1.0.0"); }); - it("not found", async function () { - ( - getLatestVersion({ versions: { "1.0.0": "patch" } }) === undefined - ).should.be.ok(); - (getLatestVersion({}) === undefined).should.be.ok(); - }); }); describe("parseEditorVersion", function () { it("test null", function () { From 243231908576a476a8204ab07ea25ad14dd757af Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 15:23:07 +0200 Subject: [PATCH 189/201] feat: fix type error Allow partial pkg-infos in order to satisfy test setups --- lib/core.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/core.ts b/lib/core.ts index 27c8ccd8..c80f3c8b 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -325,7 +325,7 @@ export const fetchPackageDependencies = async function ({ // Get latest version from package info export const getLatestVersion = function ( - pkgInfo: PkgInfo + pkgInfo: Partial ): PkgVersion | undefined { if (pkgInfo["dist-tags"]?.["latest"] !== undefined) return pkgInfo["dist-tags"]["latest"]; From 8e4b8ee224037ffd6ac7a0484d08a32d65c0df73 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Wed, 25 Oct 2023 15:23:36 +0200 Subject: [PATCH 190/201] fix: null error Allow null as seen in tests --- lib/core.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/core.ts b/lib/core.ts index c80f3c8b..b43ba6b0 100644 --- a/lib/core.ts +++ b/lib/core.ts @@ -472,7 +472,7 @@ export const compareEditorVersion = function (a: string, b: string) { * locBuild: 4 */ export const parseEditorVersion = function ( - version: string + version: string | null ): SemanticVersion | null { type RegexMatchGroups = { major: `${number}`; From 0e46162c672921627e39ee806633b3d0ffa22a60 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Thu, 26 Oct 2023 13:24:10 +0200 Subject: [PATCH 191/201] conf: simplify test script ts-mocha already compiles TS --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 465ddef5..04dd72ea 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,7 @@ }, "main": "index.js", "scripts": { - "build": "tsc", - "test": "tsc && cross-env NODE_ENV=test ts-mocha test/**/*.ts", + "test": "cross-env NODE_ENV=test ts-mocha test/**/*.ts", "semantic-release": "semantic-release" }, "bin": { From 1c04b52b12b33444f0d5f8c889b6a407d1856d25 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Thu, 26 Oct 2023 13:53:34 +0200 Subject: [PATCH 192/201] misc: change bin structure Instead of building the package using tsc and then running the js file, we can run using ts-node. That way we only need ts files in the project. For this to work a few changes needed to be done: - Removed the initial empty index file - Moved bin-files into lib - Converted bin files to ts and renamed them to index/index-cn - Changed the shebang in the index files to use ts-node. This also requires ts-node is a dependency of the package - Adjust tsconfig in order to work with ts-node Seems like the package still works as intended. It might take a little bit longer to run because of the additional compile step --- .gitattributes | 4 +- bin/openupm | 3 - index.js | 0 bin/openupm-cn => lib/index-cn.ts | 4 +- lib/index.ts | 3 + package-lock.json | 330 ++++++++++++++++++++++++------ package.json | 12 +- tsconfig.json | 4 +- 8 files changed, 282 insertions(+), 78 deletions(-) delete mode 100755 bin/openupm delete mode 100644 index.js rename bin/openupm-cn => lib/index-cn.ts (51%) mode change 100755 => 100644 create mode 100644 lib/index.ts diff --git a/.gitattributes b/.gitattributes index f658caa4..67fb21db 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,3 @@ * text=auto -bin/openupm text eol=lf -bin/openupm-cn text eol=lf +lib/index.ts text eol=lf +lib/index.ts-cn text eol=lf diff --git a/bin/openupm b/bin/openupm deleted file mode 100755 index 148b0b2a..00000000 --- a/bin/openupm +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node - -require("../build/lib/cli"); diff --git a/index.js b/index.js deleted file mode 100644 index e69de29b..00000000 diff --git a/bin/openupm-cn b/lib/index-cn.ts old mode 100755 new mode 100644 similarity index 51% rename from bin/openupm-cn rename to lib/index-cn.ts index a8f5aef5..8cb50d30 --- a/bin/openupm-cn +++ b/lib/index-cn.ts @@ -1,4 +1,4 @@ -#!/usr/bin/env node +#!/usr/bin/env -S node -r "ts-node/register" if (!process.argv.includes("--cn")) process.argv.push("--cn"); -require("../build/lib/cli"); +import "./cli"; diff --git a/lib/index.ts b/lib/index.ts new file mode 100644 index 00000000..3b301e03 --- /dev/null +++ b/lib/index.ts @@ -0,0 +1,3 @@ +#!/usr/bin/env -S node -r "ts-node/register" + +import "./cli"; diff --git a/package-lock.json b/package-lock.json index 74f87b58..66f88095 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,13 +23,14 @@ "npmlog": "^6.0.2", "pkginfo": "^0.4.1", "promptly": "^3.2.0", + "ts-node": "^10.9.1", "update-notifier": "^5.1.0", "yaml": "^2.0.1" }, "bin": { - "openupm": "bin/openupm", - "openupm-cli": "bin/openupm", - "openupm-cn": "bin/openupm-cn" + "openupm": "lib/index.ts", + "openupm-cli": "lib/index.ts", + "openupm-cn": "lib/index-cn.ts" }, "devDependencies": { "@babel/core": "^7.17.10", @@ -62,8 +63,7 @@ "semantic-release": "^19.0.3", "should": "^13.2.3", "test-console": "^2.0.0", - "ts-mocha": "^10.0.0", - "typescript": "^5.2.2" + "ts-mocha": "^10.0.0" }, "engines": { "node": ">=14.18" @@ -482,6 +482,26 @@ "node": ">=0.1.90" } }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -637,7 +657,6 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -654,8 +673,7 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.13", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", - "dev": true + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.13", @@ -1120,6 +1138,26 @@ "node": ">= 10" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" + }, "node_modules/@types/caseless": { "version": "0.12.4", "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.4.tgz", @@ -1201,8 +1239,7 @@ "node_modules/@types/node": { "version": "14.18.63", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", - "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", - "dev": true + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==" }, "node_modules/@types/node-fetch": { "version": "2.6.6", @@ -1818,7 +1855,6 @@ "version": "8.10.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -1835,6 +1871,14 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -2126,6 +2170,11 @@ "node": ">= 6" } }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -2912,6 +2961,11 @@ "node": ">= 6" } }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, "node_modules/cross-env": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", @@ -5009,8 +5063,7 @@ "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" }, "node_modules/make-fetch-happen": { "version": "10.1.6", @@ -10032,7 +10085,28 @@ "mocha": "^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X" } }, - "node_modules/ts-node": { + "node_modules/ts-mocha/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, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/ts-mocha/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ts-mocha/node_modules/ts-node": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", @@ -10054,25 +10128,63 @@ "node": ">=4.2.0" } }, - "node_modules/ts-node/node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "node_modules/ts-mocha/node_modules/yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", "dev": true, "engines": { - "node": ">=0.3.1" + "node": ">=4" } }, - "node_modules/ts-node/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" }, "bin": { - "mkdirp": "bin/cmd.js" + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "engines": { + "node": ">=0.3.1" } }, "node_modules/tsconfig-paths": { @@ -10158,7 +10270,7 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", - "dev": true, + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -10312,6 +10424,11 @@ "uuid": "bin/uuid" } }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -10638,12 +10755,11 @@ } }, "node_modules/yn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", - "dev": true, + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/yocto-queue": { @@ -10973,6 +11089,25 @@ "dev": true, "optional": true }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, "@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -11082,8 +11217,7 @@ "@jridgewell/resolve-uri": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", - "dev": true + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==" }, "@jridgewell/set-array": { "version": "1.1.1", @@ -11094,8 +11228,7 @@ "@jridgewell/sourcemap-codec": { "version": "1.4.13", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", - "dev": true + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" }, "@jridgewell/trace-mapping": { "version": "0.3.13", @@ -11472,6 +11605,26 @@ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" + }, + "@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" + }, "@types/caseless": { "version": "0.12.4", "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.4.tgz", @@ -11553,8 +11706,7 @@ "@types/node": { "version": "14.18.63", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", - "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", - "dev": true + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==" }, "@types/node-fetch": { "version": "2.6.6", @@ -11988,8 +12140,7 @@ "acorn": { "version": "8.10.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" }, "acorn-jsx": { "version": "5.3.2", @@ -11998,6 +12149,11 @@ "dev": true, "requires": {} }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" + }, "agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -12230,6 +12386,11 @@ } } }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -12824,6 +12985,11 @@ } } }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, "cross-env": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", @@ -14376,8 +14542,7 @@ "make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" }, "make-fetch-happen": { "version": "10.1.6", @@ -18006,22 +18171,6 @@ "requires": { "ts-node": "7.0.1", "tsconfig-paths": "^3.5.0" - } - }, - "ts-node": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", - "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", - "dev": true, - "requires": { - "arrify": "^1.0.0", - "buffer-from": "^1.1.0", - "diff": "^3.1.0", - "make-error": "^1.1.1", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "source-map-support": "^0.5.6", - "yn": "^2.0.0" }, "dependencies": { "diff": { @@ -18038,6 +18187,55 @@ "requires": { "minimist": "^1.2.6" } + }, + "ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + } + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", + "dev": true + } + } + }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" } } }, @@ -18111,7 +18309,7 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", - "dev": true + "peer": true }, "uglify-js": { "version": "3.15.5", @@ -18226,6 +18424,11 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -18477,10 +18680,9 @@ } }, "yn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", - "dev": true + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" }, "yocto-queue": { "version": "0.1.0", diff --git a/package.json b/package.json index 04dd72ea..ed8b8e71 100644 --- a/package.json +++ b/package.json @@ -6,15 +6,15 @@ "engines": { "node": ">=14.18" }, - "main": "index.js", + "main": "lib/index.ts", "scripts": { "test": "cross-env NODE_ENV=test ts-mocha test/**/*.ts", "semantic-release": "semantic-release" }, "bin": { - "openupm": "bin/openupm", - "openupm-cli": "bin/openupm", - "openupm-cn": "bin/openupm-cn" + "openupm": "lib/index.ts", + "openupm-cli": "lib/index.ts", + "openupm-cn": "lib/index-cn.ts" }, "repository": { "type": "git", @@ -61,8 +61,7 @@ "semantic-release": "^19.0.3", "should": "^13.2.3", "test-console": "^2.0.0", - "ts-mocha": "^10.0.0", - "typescript": "^5.2.2" + "ts-mocha": "^10.0.0" }, "dependencies": { "@iarna/toml": "^2.2.5", @@ -79,6 +78,7 @@ "npmlog": "^6.0.2", "pkginfo": "^0.4.1", "promptly": "^3.2.0", + "ts-node": "^10.9.1", "update-notifier": "^5.1.0", "yaml": "^2.0.1" } diff --git a/tsconfig.json b/tsconfig.json index 15adc119..cc34a409 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -32,7 +32,9 @@ // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + "typeRoots": [ /* Specify multiple folders that act like './node_modules/@types'. */ + "lib/types", "node_modules/@types" + ], // "types": [], /* Specify type package names to be included without being referenced in a source file. */ // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ From a0039c3db4aa3a0365394416d6fe20d2e5aa8383 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Thu, 26 Oct 2023 13:54:47 +0200 Subject: [PATCH 193/201] misc: add missing typescript dependency Seems like mocha requires it --- package-lock.json | 7 +++---- package.json | 3 ++- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 66f88095..435f5149 100644 --- a/package-lock.json +++ b/package-lock.json @@ -63,7 +63,8 @@ "semantic-release": "^19.0.3", "should": "^13.2.3", "test-console": "^2.0.0", - "ts-mocha": "^10.0.0" + "ts-mocha": "^10.0.0", + "typescript": "^5.2.2" }, "engines": { "node": ">=14.18" @@ -10270,7 +10271,6 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -18308,8 +18308,7 @@ "typescript": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", - "peer": true + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==" }, "uglify-js": { "version": "3.15.5", diff --git a/package.json b/package.json index ed8b8e71..051d2f89 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,8 @@ "semantic-release": "^19.0.3", "should": "^13.2.3", "test-console": "^2.0.0", - "ts-mocha": "^10.0.0" + "ts-mocha": "^10.0.0", + "typescript": "^5.2.2" }, "dependencies": { "@iarna/toml": "^2.2.5", From d53b70b9b7791cda87b4b8c9260e23176a59fbce Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 31 Oct 2023 18:39:00 +0100 Subject: [PATCH 194/201] Bump node version Bump from 14 to 16. See https://github.com/openupm/openupm-cli/pull/52#discussion_r1375481622 --- .github/workflows/ci.yml | 2 +- .nvmrc | 2 +- README.md | 4 ++-- README.zh-cn.md | 4 ++-- package.json | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 085f78bd..8eba3ac0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [14.x] + node-version: [16.x] name: CI - node ${{ matrix.node-version }} steps: - uses: actions/checkout@v3 diff --git a/.nvmrc b/.nvmrc index 958b5a36..6f7f377b 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v14 +v16 diff --git a/README.md b/README.md index bb27084e..9418cf1e 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ The command-line tool installs the 3rd-party registry as a scoped registry and m ## Installation -- Requires [nodejs 14.18 or above](https://nodejs.org/en/download/). +- Requires [nodejs 16 or above](https://nodejs.org/en/download/). - Install via npm: ``` @@ -74,7 +74,7 @@ internal/modules/cjs/loader.js:818 Error: Cannot find module 'node:net' ``` -Please install [nodejs 14.18 or above](https://nodejs.org/en/download/). +Please install [nodejs 16 or above](https://nodejs.org/en/download/). ## China region diff --git a/README.zh-cn.md b/README.zh-cn.md index 26fe85d3..d2e0d595 100644 --- a/README.zh-cn.md +++ b/README.zh-cn.md @@ -39,7 +39,7 @@ openupm-cli基于Unity对带作用域的软件仓库(scoped registry)的支 ## 安装 -- 请先自行安装[nodejs 14.18或以上版本](https://nodejs.org/en/download/). +- 请先自行安装[nodejs 16或以上版本](https://nodejs.org/en/download/). - 通过npm安装: ``` @@ -74,7 +74,7 @@ internal/modules/cjs/loader.js:818 Error: Cannot find module 'node:net' ``` -请安装[nodejs 14.18或以上版本](https://nodejs.org/en/download/)。 +请安装[nodejs 16或以上版本](https://nodejs.org/en/download/)。 ## 中国区 diff --git a/package.json b/package.json index 051d2f89..ba67d017 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "preferGlobal": true, "description": "openupm command line interface", "engines": { - "node": ">=14.18" + "node": ">=16" }, "main": "lib/index.ts", "scripts": { From 3c32160e5a7738f82b4a550bf4d391b70402d094 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 31 Oct 2023 18:54:42 +0100 Subject: [PATCH 195/201] misc: better build structure See https://github.com/openupm/openupm-cli/pull/52#discussion_r1378008074 --- .gitignore | 2 +- .npmignore | 4 +++- lib/index.ts | 3 --- package.json | 9 +++++---- {lib => src}/cli.ts | 0 {lib => src}/client.ts | 0 {lib => src}/cmd-add.ts | 0 {lib => src}/cmd-deps.ts | 0 {lib => src}/cmd-login.ts | 0 {lib => src}/cmd-remove.ts | 0 {lib => src}/cmd-search.ts | 0 {lib => src}/cmd-view.ts | 0 {lib => src}/core.ts | 0 {lib => src}/index-cn.ts | 2 +- src/index.ts | 3 +++ {lib => src}/logger.ts | 0 src/types/allow-importing-package-json.d.ts | 2 ++ {lib => src}/types/another-npm-registry-client.d.ts | 0 {lib => src}/types/global.ts | 0 {lib => src}/types/npm-registry-fetch.d.ts | 0 {lib => src}/utils/error-type-guards.ts | 0 {lib => src}/utils/pkg-name.ts | 0 {lib => src}/utils/pkg-version.ts | 0 {lib => src}/utils/process.ts | 0 test/test-cmd-add.ts | 4 ++-- test/test-cmd-deps.ts | 2 +- test/test-cmd-login.ts | 2 +- test/test-cmd-remove.ts | 4 ++-- test/test-cmd-search.ts | 2 +- test/test-cmd-view.ts | 2 +- test/test-core.ts | 2 +- test/test-pkg-name.ts | 2 +- test/utils.ts | 2 +- tsconfig.json | 6 +++--- 34 files changed, 29 insertions(+), 24 deletions(-) delete mode 100644 lib/index.ts rename {lib => src}/cli.ts (100%) rename {lib => src}/client.ts (100%) rename {lib => src}/cmd-add.ts (100%) rename {lib => src}/cmd-deps.ts (100%) rename {lib => src}/cmd-login.ts (100%) rename {lib => src}/cmd-remove.ts (100%) rename {lib => src}/cmd-search.ts (100%) rename {lib => src}/cmd-view.ts (100%) rename {lib => src}/core.ts (100%) rename {lib => src}/index-cn.ts (64%) create mode 100644 src/index.ts rename {lib => src}/logger.ts (100%) create mode 100644 src/types/allow-importing-package-json.d.ts rename {lib => src}/types/another-npm-registry-client.d.ts (100%) rename {lib => src}/types/global.ts (100%) rename {lib => src}/types/npm-registry-fetch.d.ts (100%) rename {lib => src}/utils/error-type-guards.ts (100%) rename {lib => src}/utils/pkg-name.ts (100%) rename {lib => src}/utils/pkg-version.ts (100%) rename {lib => src}/utils/process.ts (100%) diff --git a/.gitignore b/.gitignore index eff3a566..e674d8db 100644 --- a/.gitignore +++ b/.gitignore @@ -63,4 +63,4 @@ typings/ # builds -/build \ No newline at end of file +/lib \ No newline at end of file diff --git a/.npmignore b/.npmignore index fb38c7fe..1bd26fb4 100644 --- a/.npmignore +++ b/.npmignore @@ -2,4 +2,6 @@ .gitattributes .eslintrc.js test/ -.vscode/ \ No newline at end of file +.vscode/ +src/ +!lib/ \ No newline at end of file diff --git a/lib/index.ts b/lib/index.ts deleted file mode 100644 index 3b301e03..00000000 --- a/lib/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env -S node -r "ts-node/register" - -import "./cli"; diff --git a/package.json b/package.json index ba67d017..8d8a47e6 100644 --- a/package.json +++ b/package.json @@ -6,15 +6,16 @@ "engines": { "node": ">=16" }, - "main": "lib/index.ts", "scripts": { "test": "cross-env NODE_ENV=test ts-mocha test/**/*.ts", + "build": "tsc -p tsconfig.json", + "build:watch": "tsc -w -p tsconfig.json", "semantic-release": "semantic-release" }, "bin": { - "openupm": "lib/index.ts", - "openupm-cli": "lib/index.ts", - "openupm-cn": "lib/index-cn.ts" + "openupm": "lib/index.js", + "openupm-cli": "lib/index.js", + "openupm-cn": "lib/index-cn.js" }, "repository": { "type": "git", diff --git a/lib/cli.ts b/src/cli.ts similarity index 100% rename from lib/cli.ts rename to src/cli.ts diff --git a/lib/client.ts b/src/client.ts similarity index 100% rename from lib/client.ts rename to src/client.ts diff --git a/lib/cmd-add.ts b/src/cmd-add.ts similarity index 100% rename from lib/cmd-add.ts rename to src/cmd-add.ts diff --git a/lib/cmd-deps.ts b/src/cmd-deps.ts similarity index 100% rename from lib/cmd-deps.ts rename to src/cmd-deps.ts diff --git a/lib/cmd-login.ts b/src/cmd-login.ts similarity index 100% rename from lib/cmd-login.ts rename to src/cmd-login.ts diff --git a/lib/cmd-remove.ts b/src/cmd-remove.ts similarity index 100% rename from lib/cmd-remove.ts rename to src/cmd-remove.ts diff --git a/lib/cmd-search.ts b/src/cmd-search.ts similarity index 100% rename from lib/cmd-search.ts rename to src/cmd-search.ts diff --git a/lib/cmd-view.ts b/src/cmd-view.ts similarity index 100% rename from lib/cmd-view.ts rename to src/cmd-view.ts diff --git a/lib/core.ts b/src/core.ts similarity index 100% rename from lib/core.ts rename to src/core.ts diff --git a/lib/index-cn.ts b/src/index-cn.ts similarity index 64% rename from lib/index-cn.ts rename to src/index-cn.ts index 8cb50d30..1d1a5791 100644 --- a/lib/index-cn.ts +++ b/src/index-cn.ts @@ -1,4 +1,4 @@ -#!/usr/bin/env -S node -r "ts-node/register" +#!/usr/bin/env node if (!process.argv.includes("--cn")) process.argv.push("--cn"); import "./cli"; diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 00000000..bd16bc1e --- /dev/null +++ b/src/index.ts @@ -0,0 +1,3 @@ +#!/usr/bin/env node + +import "./cli"; diff --git a/lib/logger.ts b/src/logger.ts similarity index 100% rename from lib/logger.ts rename to src/logger.ts diff --git a/src/types/allow-importing-package-json.d.ts b/src/types/allow-importing-package-json.d.ts new file mode 100644 index 00000000..a3ef71ad --- /dev/null +++ b/src/types/allow-importing-package-json.d.ts @@ -0,0 +1,2 @@ +// https://stackoverflow.com/a/61426303 +declare module "*.json"; diff --git a/lib/types/another-npm-registry-client.d.ts b/src/types/another-npm-registry-client.d.ts similarity index 100% rename from lib/types/another-npm-registry-client.d.ts rename to src/types/another-npm-registry-client.d.ts diff --git a/lib/types/global.ts b/src/types/global.ts similarity index 100% rename from lib/types/global.ts rename to src/types/global.ts diff --git a/lib/types/npm-registry-fetch.d.ts b/src/types/npm-registry-fetch.d.ts similarity index 100% rename from lib/types/npm-registry-fetch.d.ts rename to src/types/npm-registry-fetch.d.ts diff --git a/lib/utils/error-type-guards.ts b/src/utils/error-type-guards.ts similarity index 100% rename from lib/utils/error-type-guards.ts rename to src/utils/error-type-guards.ts diff --git a/lib/utils/pkg-name.ts b/src/utils/pkg-name.ts similarity index 100% rename from lib/utils/pkg-name.ts rename to src/utils/pkg-name.ts diff --git a/lib/utils/pkg-version.ts b/src/utils/pkg-version.ts similarity index 100% rename from lib/utils/pkg-version.ts rename to src/utils/pkg-version.ts diff --git a/lib/utils/process.ts b/src/utils/process.ts similarity index 100% rename from lib/utils/process.ts rename to src/utils/process.ts diff --git a/test/test-cmd-add.ts b/test/test-cmd-add.ts index 425e8fee..86b1c14d 100644 --- a/test/test-cmd-add.ts +++ b/test/test-cmd-add.ts @@ -1,9 +1,9 @@ import "assert"; import nock from "nock"; import "should"; -import { loadManifest } from "../lib/core"; +import { loadManifest } from "../src/core"; -import { add } from "../lib/cmd-add"; +import { add } from "../src/cmd-add"; import { createWorkDir, diff --git a/test/test-cmd-deps.ts b/test/test-cmd-deps.ts index f21e5f6f..c38d1138 100644 --- a/test/test-cmd-deps.ts +++ b/test/test-cmd-deps.ts @@ -2,7 +2,7 @@ import "assert"; import nock from "nock"; import "should"; -import { deps } from "../lib/cmd-deps"; +import { deps } from "../src/cmd-deps"; import { createWorkDir, diff --git a/test/test-cmd-login.ts b/test/test-cmd-login.ts index 71cc89a7..98333918 100644 --- a/test/test-cmd-login.ts +++ b/test/test-cmd-login.ts @@ -5,7 +5,7 @@ import { generateNpmrcLines, getNpmrcPath, validateRegistry, -} from "../lib/cmd-login"; +} from "../src/cmd-login"; describe("cmd-login.ts", function () { describe("validateRegistry", function () { diff --git a/test/test-cmd-remove.ts b/test/test-cmd-remove.ts index 5a8e8ab8..abad6df7 100644 --- a/test/test-cmd-remove.ts +++ b/test/test-cmd-remove.ts @@ -1,8 +1,8 @@ import "assert"; import "should"; -import { loadManifest } from "../lib/core"; +import { loadManifest } from "../src/core"; -import { remove } from "../lib/cmd-remove"; +import { remove } from "../src/cmd-remove"; import { createWorkDir, diff --git a/test/test-cmd-search.ts b/test/test-cmd-search.ts index fad3dcf1..5fec3cde 100644 --- a/test/test-cmd-search.ts +++ b/test/test-cmd-search.ts @@ -1,7 +1,7 @@ import "assert"; import nock from "nock"; import "should"; -import { search } from "../lib/cmd-search"; +import { search } from "../src/cmd-search"; import { createWorkDir, diff --git a/test/test-cmd-view.ts b/test/test-cmd-view.ts index c448f8e1..12913785 100644 --- a/test/test-cmd-view.ts +++ b/test/test-cmd-view.ts @@ -2,7 +2,7 @@ import "assert"; import nock from "nock"; import "should"; -import { view } from "../lib/cmd-view"; +import { view } from "../src/cmd-view"; import { createWorkDir, diff --git a/test/test-core.ts b/test/test-core.ts index dd692489..04f3682c 100644 --- a/test/test-core.ts +++ b/test/test-core.ts @@ -13,7 +13,7 @@ import { parseEditorVersion, parseEnv, saveManifest, -} from "../lib/core"; +} from "../src/core"; import { createWorkDir, diff --git a/test/test-pkg-name.ts b/test/test-pkg-name.ts index 77f9f233..3adb7006 100644 --- a/test/test-pkg-name.ts +++ b/test/test-pkg-name.ts @@ -1,6 +1,6 @@ import "assert"; import "should"; -import { splitPkgName } from "../lib/utils/pkg-name"; +import { splitPkgName } from "../src/utils/pkg-name"; describe("pkg-name.ts", function () { describe("splitPkgName", function () { diff --git a/test/utils.ts b/test/utils.ts index d50493cb..02574d1b 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -3,7 +3,7 @@ import nock from "nock"; import path from "path"; import os from "os"; import testConsole from "test-console"; -import { PkgManifest } from "../lib/types/global"; +import { PkgManifest } from "../src/types/global"; import _ from "lodash"; export type ManifestCreationOptions = { diff --git a/tsconfig.json b/tsconfig.json index cc34a409..9293beee 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -42,7 +42,7 @@ // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - "resolveJsonModule": true, /* Enable importing .json files. */ + "resolveJsonModule": false, /* Enable importing .json files. */ // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ @@ -58,7 +58,7 @@ "sourceMap": true, /* Create source map files for emitted JavaScript files. */ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - "outDir": "./build", /* Specify an output folder for all emitted files. */ + "outDir": "./lib", /* Specify an output folder for all emitted files. */ // "removeComments": true, /* Disable emitting comments. */ // "noEmit": true, /* Disable emitting files from a compilation. */ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ @@ -114,6 +114,6 @@ /* Skip type checking all .d.ts files. */ }, "include": [ - "./lib/**/*" + "./src/**/*" ] } From 5903497600fd3f0c07ff1e7a1851b3aeee22502f Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 31 Oct 2023 18:59:20 +0100 Subject: [PATCH 196/201] misc: add CI TS build step --- .github/workflows/ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8eba3ac0..5c774d5a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,13 +19,15 @@ jobs: run: npm ci - name: npm run test run: npm run test - + release: runs-on: ubuntu-latest needs: test if: github.ref == 'refs/heads/master' steps: - uses: actions/checkout@v3 + - name: Build + run: npm run build - name: Release uses: cycjimmy/semantic-release-action@v3 with: From 1fae8e1bb22263aff2e59ff0e39ff5ea4668d0e9 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 31 Oct 2023 19:18:27 +0100 Subject: [PATCH 197/201] misc: remove unused dependencies --- package-lock.json | 251 +++++----------------------------------------- package.json | 1 - 2 files changed, 25 insertions(+), 227 deletions(-) diff --git a/package-lock.json b/package-lock.json index 435f5149..b4ece2fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,14 +23,13 @@ "npmlog": "^6.0.2", "pkginfo": "^0.4.1", "promptly": "^3.2.0", - "ts-node": "^10.9.1", "update-notifier": "^5.1.0", "yaml": "^2.0.1" }, "bin": { - "openupm": "lib/index.ts", - "openupm-cli": "lib/index.ts", - "openupm-cn": "lib/index-cn.ts" + "openupm": "lib/index.js", + "openupm-cli": "lib/index.js", + "openupm-cn": "lib/index-cn.js" }, "devDependencies": { "@babel/core": "^7.17.10", @@ -67,7 +66,7 @@ "typescript": "^5.2.2" }, "engines": { - "node": ">=14.18" + "node": ">=16" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -483,26 +482,6 @@ "node": ">=0.1.90" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -658,6 +637,7 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "dev": true, "engines": { "node": ">=6.0.0" } @@ -674,7 +654,8 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.13", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "dev": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.13", @@ -1139,26 +1120,6 @@ "node": ">= 10" } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" - }, "node_modules/@types/caseless": { "version": "0.12.4", "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.4.tgz", @@ -1240,7 +1201,8 @@ "node_modules/@types/node": { "version": "14.18.63", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", - "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==" + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", + "dev": true }, "node_modules/@types/node-fetch": { "version": "2.6.6", @@ -1856,6 +1818,7 @@ "version": "8.10.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -1872,14 +1835,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -2171,11 +2126,6 @@ "node": ">= 6" } }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -2962,11 +2912,6 @@ "node": ">= 6" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - }, "node_modules/cross-env": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", @@ -5064,7 +5009,8 @@ "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true }, "node_modules/make-fetch-happen": { "version": "10.1.6", @@ -10138,56 +10084,6 @@ "node": ">=4" } }, - "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/tsconfig-paths": { "version": "3.14.2", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", @@ -10271,6 +10167,7 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -10424,11 +10321,6 @@ "uuid": "bin/uuid" } }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -10754,14 +10646,6 @@ "node": ">=8" } }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "engines": { - "node": ">=6" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -11089,25 +10973,6 @@ "dev": true, "optional": true }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "dependencies": { - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - } - } - }, "@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -11217,7 +11082,8 @@ "@jridgewell/resolve-uri": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==" + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "dev": true }, "@jridgewell/set-array": { "version": "1.1.1", @@ -11228,7 +11094,8 @@ "@jridgewell/sourcemap-codec": { "version": "1.4.13", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "dev": true }, "@jridgewell/trace-mapping": { "version": "0.3.13", @@ -11605,26 +11472,6 @@ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" }, - "@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" - }, - "@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" - }, - "@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" - }, - "@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" - }, "@types/caseless": { "version": "0.12.4", "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.4.tgz", @@ -11706,7 +11553,8 @@ "@types/node": { "version": "14.18.63", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", - "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==" + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", + "dev": true }, "@types/node-fetch": { "version": "2.6.6", @@ -12140,7 +11988,8 @@ "acorn": { "version": "8.10.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true }, "acorn-jsx": { "version": "5.3.2", @@ -12149,11 +11998,6 @@ "dev": true, "requires": {} }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" - }, "agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -12386,11 +12230,6 @@ } } }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -12985,11 +12824,6 @@ } } }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - }, "cross-env": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", @@ -14542,7 +14376,8 @@ "make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true }, "make-fetch-happen": { "version": "10.1.6", @@ -18212,33 +18047,6 @@ } } }, - "ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "dependencies": { - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" - } - } - }, "tsconfig-paths": { "version": "3.14.2", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", @@ -18308,7 +18116,8 @@ "typescript": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==" + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true }, "uglify-js": { "version": "3.15.5", @@ -18423,11 +18232,6 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" - }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -18678,11 +18482,6 @@ } } }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" - }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 8d8a47e6..5afc5836 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,6 @@ "npmlog": "^6.0.2", "pkginfo": "^0.4.1", "promptly": "^3.2.0", - "ts-node": "^10.9.1", "update-notifier": "^5.1.0", "yaml": "^2.0.1" } From a62fb6148a91b735e075e638ef5f3d41ade008e8 Mon Sep 17 00:00:00 2001 From: ComradeVanti Date: Tue, 31 Oct 2023 19:19:05 +0100 Subject: [PATCH 198/201] misc: regenerate package lock --- package-lock.json | 10231 ++++---------------------------------------- 1 file changed, 825 insertions(+), 9406 deletions(-) diff --git a/package-lock.json b/package-lock.json index b4ece2fc..a0bd7284 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7 +1,7 @@ { "name": "openupm-cli", "version": "1.15.5", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -71,18 +71,16 @@ }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/@ampproject/remapping": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.1.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -93,9 +91,8 @@ }, "node_modules/@babel/code-frame": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/highlight": "^7.16.7" }, @@ -105,18 +102,16 @@ }, "node_modules/@babel/compat-data": { "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", - "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", - "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", @@ -144,9 +139,8 @@ }, "node_modules/@babel/eslint-parser": { "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.18.2.tgz", - "integrity": "sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==", "dev": true, + "license": "MIT", "dependencies": { "eslint-scope": "^5.1.1", "eslint-visitor-keys": "^2.1.0", @@ -162,9 +156,8 @@ }, "node_modules/@babel/generator": { "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", - "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.18.2", "@jridgewell/gen-mapping": "^0.3.0", @@ -176,9 +169,8 @@ }, "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", - "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.0", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -190,9 +182,8 @@ }, "node_modules/@babel/helper-compilation-targets": { "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", - "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.17.10", "@babel/helper-validator-option": "^7.16.7", @@ -208,18 +199,16 @@ }, "node_modules/@babel/helper-environment-visitor": { "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", - "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.16.7", "@babel/types": "^7.17.0" @@ -230,9 +219,8 @@ }, "node_modules/@babel/helper-hoist-variables": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.16.7" }, @@ -242,9 +230,8 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.16.7" }, @@ -254,9 +241,8 @@ }, "node_modules/@babel/helper-module-transforms": { "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", - "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", @@ -273,9 +259,8 @@ }, "node_modules/@babel/helper-simple-access": { "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", - "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.18.2" }, @@ -285,9 +270,8 @@ }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.16.7" }, @@ -297,27 +281,24 @@ }, "node_modules/@babel/helper-validator-identifier": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", - "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.16.7", "@babel/traverse": "^7.18.2", @@ -329,9 +310,8 @@ }, "node_modules/@babel/highlight": { "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", - "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", @@ -343,9 +323,8 @@ }, "node_modules/@babel/highlight/node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -355,9 +334,8 @@ }, "node_modules/@babel/highlight/node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -369,42 +347,37 @@ }, "node_modules/@babel/highlight/node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@babel/highlight/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, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -414,9 +387,8 @@ }, "node_modules/@babel/parser": { "version": "7.18.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.3.tgz", - "integrity": "sha512-rL50YcEuHbbauAFAysNsJA4/f89fGTOBRNs9P81sniKnKAr4xULe5AecolcsKbi88xu0ByWYDj/S1AJ3FSFuSQ==", "dev": true, + "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -426,9 +398,8 @@ }, "node_modules/@babel/template": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/parser": "^7.16.7", @@ -440,9 +411,8 @@ }, "node_modules/@babel/traverse": { "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", - "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.7", "@babel/generator": "^7.18.2", @@ -461,9 +431,8 @@ }, "node_modules/@babel/types": { "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.2.tgz", - "integrity": "sha512-0On6B8A4/+mFUto5WERt3EEuG1NznDirvwca1O8UwXQHVY8g3R7OzYgxXdOfMwLO08UrpUD/2+3Bclyq+/C94Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" @@ -474,9 +443,8 @@ }, "node_modules/@colors/colors": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=0.1.90" @@ -484,9 +452,8 @@ }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.3.0" }, @@ -499,9 +466,8 @@ }, "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -511,18 +477,16 @@ }, "node_modules/@eslint-community/regexpp": { "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", - "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -543,9 +507,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -558,9 +521,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -570,23 +532,20 @@ }, "node_modules/@eslint/js": { "version": "8.51.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", - "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@gar/promisify": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" + "license": "MIT" }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", @@ -598,9 +557,8 @@ }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -611,20 +569,17 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@iarna/toml": { "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", - "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==" + "license": "ISC" }, "node_modules/@jridgewell/gen-mapping": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.0.0", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -635,33 +590,29 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", - "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", - "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -669,9 +620,8 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -682,18 +632,16 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -704,8 +652,7 @@ }, "node_modules/@npmcli/fs": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz", - "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==", + "license": "ISC", "dependencies": { "@gar/promisify": "^1.1.3", "semver": "^7.3.5" @@ -716,8 +663,7 @@ }, "node_modules/@npmcli/fs/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -727,8 +673,7 @@ }, "node_modules/@npmcli/fs/node_modules/semver": { "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -741,8 +686,7 @@ }, "node_modules/@npmcli/move-file": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", - "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", + "license": "MIT", "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -753,8 +697,7 @@ }, "node_modules/@npmcli/move-file/node_modules/mkdirp": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -764,18 +707,16 @@ }, "node_modules/@octokit/auth-token": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^6.0.3" } }, "node_modules/@octokit/core": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/auth-token": "^2.4.4", "@octokit/graphql": "^4.5.8", @@ -788,9 +729,8 @@ }, "node_modules/@octokit/endpoint": { "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^6.0.3", "is-plain-object": "^5.0.0", @@ -799,9 +739,8 @@ }, "node_modules/@octokit/graphql": { "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/request": "^5.6.0", "@octokit/types": "^6.0.3", @@ -810,15 +749,13 @@ }, "node_modules/@octokit/openapi-types": { "version": "11.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", - "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { "version": "2.17.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", - "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^6.34.0" }, @@ -828,18 +765,16 @@ }, "node_modules/@octokit/plugin-request-log": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", "dev": true, + "license": "MIT", "peerDependencies": { "@octokit/core": ">=3" } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", - "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^6.34.0", "deprecation": "^2.3.1" @@ -850,9 +785,8 @@ }, "node_modules/@octokit/request": { "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/endpoint": "^6.0.1", "@octokit/request-error": "^2.1.0", @@ -864,9 +798,8 @@ }, "node_modules/@octokit/request-error": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^6.0.3", "deprecation": "^2.0.0", @@ -875,9 +808,8 @@ }, "node_modules/@octokit/rest": { "version": "18.12.0", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", - "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/core": "^3.5.1", "@octokit/plugin-paginate-rest": "^2.16.8", @@ -887,18 +819,16 @@ }, "node_modules/@octokit/types": { "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", - "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/openapi-types": "^11.2.0" } }, "node_modules/@semantic-release/changelog": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.1.tgz", - "integrity": "sha512-FT+tAGdWHr0RCM3EpWegWnvXJ05LQtBkQUaQRIExONoXjVjLuOILNm4DEKNaV+GAQyJjbLRVs57ti//GypH6PA==", "dev": true, + "license": "MIT", "dependencies": { "@semantic-release/error": "^3.0.0", "aggregate-error": "^3.0.0", @@ -914,9 +844,8 @@ }, "node_modules/@semantic-release/changelog/node_modules/fs-extra": { "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, + "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -929,9 +858,8 @@ }, "node_modules/@semantic-release/commit-analyzer": { "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-9.0.2.tgz", - "integrity": "sha512-E+dr6L+xIHZkX4zNMe6Rnwg4YQrWNXK+rNsvwOPpdFppvZO1olE2fIgWhv89TkQErygevbjsZFSIxp+u6w2e5g==", "dev": true, + "license": "MIT", "dependencies": { "conventional-changelog-angular": "^5.0.0", "conventional-commits-filter": "^2.0.0", @@ -950,18 +878,16 @@ }, "node_modules/@semantic-release/error": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", - "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.17" } }, "node_modules/@semantic-release/git": { "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", - "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", "dev": true, + "license": "MIT", "dependencies": { "@semantic-release/error": "^3.0.0", "aggregate-error": "^3.0.0", @@ -981,9 +907,8 @@ }, "node_modules/@semantic-release/github": { "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-8.0.4.tgz", - "integrity": "sha512-But4e8oqqP3anZI5tjzZssZc2J6eoUdeeE0s7LVKKwyiAXJiQDWNNvtPOpgG2DsIz4+Exuse7cEQgjGMxwtLmg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/rest": "^18.0.0", "@semantic-release/error": "^2.2.0", @@ -1011,15 +936,13 @@ }, "node_modules/@semantic-release/github/node_modules/@semantic-release/error": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-2.2.0.tgz", - "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@semantic-release/npm": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-9.0.1.tgz", - "integrity": "sha512-I5nVZklxBzfMFwemhRNbSrkiN/dsH3c7K9+KSk6jUnq0rdLFUuJt7EBsysq4Ir3moajQgFkfEryEHPqiKJj20g==", "dev": true, + "license": "MIT", "dependencies": { "@semantic-release/error": "^3.0.0", "aggregate-error": "^3.0.0", @@ -1044,9 +967,8 @@ }, "node_modules/@semantic-release/npm/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -1056,9 +978,8 @@ }, "node_modules/@semantic-release/npm/node_modules/semver": { "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -1071,9 +992,8 @@ }, "node_modules/@semantic-release/release-notes-generator": { "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-10.0.3.tgz", - "integrity": "sha512-k4x4VhIKneOWoBGHkx0qZogNjCldLPRiAjnIpMnlUh6PtaWXp/T+C9U7/TaNDDtgDa5HMbHl4WlREdxHio6/3w==", "dev": true, + "license": "MIT", "dependencies": { "conventional-changelog-angular": "^5.0.0", "conventional-changelog-writer": "^5.0.0", @@ -1095,16 +1015,14 @@ }, "node_modules/@sindresorhus/is": { "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/@szmarczak/http-timer": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "license": "MIT", "dependencies": { "defer-to-connect": "^1.0.1" }, @@ -1114,35 +1032,30 @@ }, "node_modules/@tootallnate/once": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/@types/caseless": { "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.4.tgz", - "integrity": "sha512-2in/lrHRNmDvHPgyormtEralhPcN3An1gLjJzj2Bw145VBxkQ75JEXW6CTdMAwShiHQcYsl2d10IjQSdJSJz4g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/cli-table": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@types/cli-table/-/cli-table-0.3.2.tgz", - "integrity": "sha512-yEwKAYmZsgb59xHtNRXaQAloxrm5xr8CQcrYerYlPK+3nwhPk1VC3QFwuiCd/jVWFu2hm4uFiiWDCJQSKhkROQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/configstore": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@types/configstore/-/configstore-6.0.0.tgz", - "integrity": "sha512-GUvNiia85zTDDIx0iPrtF3pI8dwrQkfuokEqxqPDE55qxH0U5SZz4awVZjiJLWN2ZZRkXCUqgsMUbygXY+kytA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/fs-extra": { "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.3.tgz", - "integrity": "sha512-sF59BlXtUdzEAL1u0MSvuzWd7PdZvZEtnaVkzX5mjpdWTJ8brG0jUqve3jPCzSzvAKKMHTG8F8o/WMQLtleZdQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/jsonfile": "*", "@types/node": "*" @@ -1150,31 +1063,27 @@ }, "node_modules/@types/json-schema": { "version": "7.0.14", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", - "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/@types/jsonfile": { "version": "6.1.3", - "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.3.tgz", - "integrity": "sha512-/yqTk2SZ1wIezK0hiRZD7RuSf4B3whFxFamB1kGStv+8zlWScTMcHanzfc0XKWs5vA1TkHeckBlOyM8jxU8nHA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/libnpmsearch": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/libnpmsearch/-/libnpmsearch-2.0.4.tgz", - "integrity": "sha512-2qlwrkVckDG+0AcMxr41hURNNZCJUhJ74/hkMjaW4/z5eT2zRYlTaSdUIjPnQYH2YTM0SSa1qKTcpO9g+zzlgw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/npm-registry-fetch": "*" @@ -1182,33 +1091,28 @@ }, "node_modules/@types/lodash": { "version": "4.14.199", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz", - "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/minimist": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/mocha": { "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.3.tgz", - "integrity": "sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { "version": "14.18.63", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", - "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node-fetch": { "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.6.tgz", - "integrity": "sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "form-data": "^4.0.0" @@ -1216,9 +1120,8 @@ }, "node_modules/@types/node-fetch/node_modules/form-data": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -1230,21 +1133,18 @@ }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/npm-package-arg": { "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@types/npm-package-arg/-/npm-package-arg-6.1.2.tgz", - "integrity": "sha512-K7TdZq7dTZKKgxaFGLR6VPAeNMDM7GwTELlVNyzQ0KKc6Du3+SYYRXFNEDrsCptpEpMjMNKVlb/5/ZNS/MeHjw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/npm-registry-fetch": { "version": "8.0.5", - "resolved": "https://registry.npmjs.org/@types/npm-registry-fetch/-/npm-registry-fetch-8.0.5.tgz", - "integrity": "sha512-mAyQmKTF/4dhXTeSicltEtMO+Vj/LEUoBkMgDn9tS2fGp8IsrZPkYv2GH0KKBcbFLXUq67wuzYwl0DCZGeRcpw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/node-fetch": "*", @@ -1255,39 +1155,34 @@ }, "node_modules/@types/npmlog": { "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.4.tgz", - "integrity": "sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/parse-json": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/pkginfo": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/pkginfo/-/pkginfo-0.4.1.tgz", - "integrity": "sha512-zdrklc4j/o5Nlp/O2JMn2t2lzVaPHeDUV4XD27PAJFqOnEP9dhWGEbsOucp9i4W02p4OtrzL7Up5fZ+ZzyKuKg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/promptly": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/promptly/-/promptly-3.0.3.tgz", - "integrity": "sha512-eM4RvsPy0cT37wJHTcOWvemIyPzBoSKEATp2OO4ptKeSrcNjMwGpDsUSBuBHuleC/datJW7A6NUlBAZsZGJmpA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/request": { "version": "2.48.11", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.11.tgz", - "integrity": "sha512-HuihY1+Vss5RS9ZHzRyTGIzwPTdrJBkCm/mAeLRYrOQu/MGqyezKXWOK1VhCnR+SDbp9G2mRUP+OVEqCrzpcfA==", "dev": true, + "license": "MIT", "dependencies": { "@types/caseless": "*", "@types/node": "*", @@ -1297,9 +1192,8 @@ }, "node_modules/@types/request/node_modules/form-data": { "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -1311,52 +1205,44 @@ }, "node_modules/@types/retry": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/semver": { "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/should": { "version": "13.0.0", - "resolved": "https://registry.npmjs.org/@types/should/-/should-13.0.0.tgz", - "integrity": "sha512-Mi6YZ2ABnnGGFMuiBDP0a8s1ZDCDNHqP97UH8TyDmCWuGGavpsFMfJnAMYaaqmDlSCOCNbVLHBrSDEOpx/oLhw==", - "deprecated": "This is a stub types definition for should.js (https://github.com/shouldjs/should.js). should.js provides its own type definitions, so you don't need @types/should installed!", "dev": true, + "license": "MIT", "dependencies": { "should": "*" } }, "node_modules/@types/ssri": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@types/ssri/-/ssri-7.1.2.tgz", - "integrity": "sha512-Mbo/NaBiZlXNlOFTLK+PXeVEzKFxi+ZVELuzmk4VxdRz6aqKpmP9bhcNqsIB2c/s78355WBHwUCGYhQDydcfEg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/test-console": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/test-console/-/test-console-2.0.1.tgz", - "integrity": "sha512-oHttegDDXlGWAiVT3812HLnY6fcwXkbbgFy+5O6/LnqI6qXiUjCxQj7Yvdr8aiuW1iem1SFDM3kJniwkeoLN3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/tough-cookie": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.4.tgz", - "integrity": "sha512-95Sfz4nvMAb0Nl9DTxN3j64adfwfbBPEYq14VN7zT5J5O2M9V6iZMIIQU1U+pJyl9agHYHNCqhCXgyEtIRRa5A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/update-notifier": { "version": "6.0.5", - "resolved": "https://registry.npmjs.org/@types/update-notifier/-/update-notifier-6.0.5.tgz", - "integrity": "sha512-uUOhxsJ3edPHu06r3k4I2yJ4eoyqBt+53ra9+caXEx0ruoPwqNHTlkq75CUvI4yWsrCA5+31tih+opunLCYnXw==", "dev": true, + "license": "MIT", "dependencies": { "@types/configstore": "*", "boxen": "^7.0.0" @@ -1364,9 +1250,8 @@ }, "node_modules/@types/update-notifier/node_modules/ansi-regex": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1376,9 +1261,8 @@ }, "node_modules/@types/update-notifier/node_modules/ansi-styles": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1388,9 +1272,8 @@ }, "node_modules/@types/update-notifier/node_modules/boxen": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", - "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", "dev": true, + "license": "MIT", "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^7.0.1", @@ -1410,9 +1293,8 @@ }, "node_modules/@types/update-notifier/node_modules/camelcase": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", - "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -1422,9 +1304,8 @@ }, "node_modules/@types/update-notifier/node_modules/chalk": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -1434,9 +1315,8 @@ }, "node_modules/@types/update-notifier/node_modules/cli-boxes": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -1446,15 +1326,13 @@ }, "node_modules/@types/update-notifier/node_modules/emoji-regex": { "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/update-notifier/node_modules/string-width": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -1469,9 +1347,8 @@ }, "node_modules/@types/update-notifier/node_modules/strip-ansi": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -1484,9 +1361,8 @@ }, "node_modules/@types/update-notifier/node_modules/type-fest": { "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=12.20" }, @@ -1496,9 +1372,8 @@ }, "node_modules/@types/update-notifier/node_modules/widest-line": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", - "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", "dev": true, + "license": "MIT", "dependencies": { "string-width": "^5.0.1" }, @@ -1511,9 +1386,8 @@ }, "node_modules/@types/update-notifier/node_modules/wrap-ansi": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -1528,9 +1402,8 @@ }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz", - "integrity": "sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.5.1", "@typescript-eslint/scope-manager": "6.8.0", @@ -1563,9 +1436,8 @@ }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -1575,9 +1447,8 @@ }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -1590,9 +1461,8 @@ }, "node_modules/@typescript-eslint/parser": { "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.8.0.tgz", - "integrity": "sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "6.8.0", "@typescript-eslint/types": "6.8.0", @@ -1618,9 +1488,8 @@ }, "node_modules/@typescript-eslint/scope-manager": { "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz", - "integrity": "sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "6.8.0", "@typescript-eslint/visitor-keys": "6.8.0" @@ -1635,9 +1504,8 @@ }, "node_modules/@typescript-eslint/type-utils": { "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz", - "integrity": "sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "6.8.0", "@typescript-eslint/utils": "6.8.0", @@ -1662,9 +1530,8 @@ }, "node_modules/@typescript-eslint/types": { "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.8.0.tgz", - "integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==", "dev": true, + "license": "MIT", "engines": { "node": "^16.0.0 || >=18.0.0" }, @@ -1675,9 +1542,8 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz", - "integrity": "sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "6.8.0", "@typescript-eslint/visitor-keys": "6.8.0", @@ -1702,9 +1568,8 @@ }, "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -1714,9 +1579,8 @@ }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -1729,9 +1593,8 @@ }, "node_modules/@typescript-eslint/utils": { "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.8.0.tgz", - "integrity": "sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", @@ -1754,9 +1617,8 @@ }, "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -1766,9 +1628,8 @@ }, "node_modules/@typescript-eslint/utils/node_modules/semver": { "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -1781,9 +1642,8 @@ }, "node_modules/@typescript-eslint/visitor-keys": { "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz", - "integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "6.8.0", "eslint-visitor-keys": "^3.4.1" @@ -1798,9 +1658,8 @@ }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -1810,15 +1669,13 @@ }, "node_modules/@ungap/promise-all-settled": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/acorn": { "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -1828,17 +1685,15 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/agent-base": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", "dependencies": { "debug": "4" }, @@ -1848,8 +1703,7 @@ }, "node_modules/agentkeepalive": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "license": "MIT", "dependencies": { "debug": "^4.1.0", "depd": "^1.1.2", @@ -1861,8 +1715,7 @@ }, "node_modules/aggregate-error": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -1873,8 +1726,7 @@ }, "node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1888,8 +1740,7 @@ }, "node_modules/another-npm-registry-client": { "version": "8.7.0", - "resolved": "https://registry.npmjs.org/another-npm-registry-client/-/another-npm-registry-client-8.7.0.tgz", - "integrity": "sha512-1fqojpPsaqfCFvUw65yFOpU6HuREVG21VPJPJ92eYYHAmV6gAgQUHQHXNCHP/vwn7O+TfmYrZX5EtGjyo755Eg==", + "license": "ISC", "dependencies": { "concat-stream": "^1.5.2", "graceful-fs": "^4.1.6", @@ -1909,8 +1760,7 @@ }, "node_modules/another-npm-registry-client/node_modules/ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "license": "MIT", "optional": true, "engines": { "node": ">=0.10.0" @@ -1918,14 +1768,12 @@ }, "node_modules/another-npm-registry-client/node_modules/aproba": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "license": "ISC", "optional": true }, "node_modules/another-npm-registry-client/node_modules/are-we-there-yet": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "license": "ISC", "optional": true, "dependencies": { "delegates": "^1.0.0", @@ -1934,8 +1782,7 @@ }, "node_modules/another-npm-registry-client/node_modules/gauge": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "license": "ISC", "optional": true, "dependencies": { "aproba": "^1.0.3", @@ -1950,8 +1797,7 @@ }, "node_modules/another-npm-registry-client/node_modules/is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "license": "MIT", "optional": true, "dependencies": { "number-is-nan": "^1.0.0" @@ -1962,8 +1808,7 @@ }, "node_modules/another-npm-registry-client/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -1973,8 +1818,7 @@ }, "node_modules/another-npm-registry-client/node_modules/npmlog": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "license": "ISC", "optional": true, "dependencies": { "are-we-there-yet": "~1.1.2", @@ -1985,8 +1829,7 @@ }, "node_modules/another-npm-registry-client/node_modules/semver": { "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -1999,8 +1842,7 @@ }, "node_modules/another-npm-registry-client/node_modules/string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "license": "MIT", "optional": true, "dependencies": { "code-point-at": "^1.0.0", @@ -2013,8 +1855,7 @@ }, "node_modules/another-npm-registry-client/node_modules/strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "license": "MIT", "optional": true, "dependencies": { "ansi-regex": "^2.0.0" @@ -2025,26 +1866,23 @@ }, "node_modules/ansi-align": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "license": "ISC", "dependencies": { "string-width": "^4.1.0" } }, "node_modules/ansi-colors": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-escapes": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", - "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^1.0.2" }, @@ -2057,16 +1895,14 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -2079,15 +1915,13 @@ }, "node_modules/ansicolors": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/anymatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -2098,13 +1932,11 @@ }, "node_modules/aproba": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + "license": "ISC" }, "node_modules/are-we-there-yet": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "license": "ISC", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -2115,8 +1947,7 @@ }, "node_modules/are-we-there-yet/node_modules/readable-stream": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -2128,127 +1959,109 @@ }, "node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/argv-formatter": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", - "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/array-ify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/array-union": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/asn1": { "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "license": "MIT", "dependencies": { "safer-buffer": "~2.1.0" } }, "node_modules/assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "license": "MIT" }, "node_modules/at-least-node": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 4.0.0" } }, "node_modules/aws-sign2": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/aws4": { "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + "license": "MIT" }, "node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "license": "MIT" }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "license": "BSD-3-Clause", "dependencies": { "tweetnacl": "^0.14.3" } }, "node_modules/before-after-hook": { "version": "2.2.2", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", - "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/binary-extensions": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/boolbase": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/bottleneck": { "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/boxen": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "license": "MIT", "dependencies": { "ansi-align": "^3.0.0", "camelcase": "^6.2.0", @@ -2268,8 +2081,7 @@ }, "node_modules/boxen/node_modules/camelcase": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -2279,8 +2091,7 @@ }, "node_modules/boxen/node_modules/type-fest": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -2290,8 +2101,7 @@ }, "node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2299,9 +2109,8 @@ }, "node_modules/braces": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.0.1" }, @@ -2311,14 +2120,11 @@ }, "node_modules/browser-stdout": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/browserslist": { "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", "dev": true, "funding": [ { @@ -2330,6 +2136,7 @@ "url": "https://tidelift.com/funding/github/npm/browserslist" } ], + "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001332", "electron-to-chromium": "^1.4.118", @@ -2346,18 +2153,15 @@ }, "node_modules/buffer-from": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "license": "MIT" }, "node_modules/builtins": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==" + "license": "MIT" }, "node_modules/cacache": { "version": "16.1.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.0.tgz", - "integrity": "sha512-Pk4aQkwCW82A4jGKFvcGkQFqZcMspfP9YWq9Pr87/ldDvlWf718zeI6KWCdKt/jeihu6BytHRUicJPB1K2k8EQ==", + "license": "ISC", "dependencies": { "@npmcli/fs": "^2.1.0", "@npmcli/move-file": "^2.0.0", @@ -2384,16 +2188,14 @@ }, "node_modules/cacache/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/cacache/node_modules/glob": { "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2410,8 +2212,7 @@ }, "node_modules/cacache/node_modules/minimatch": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -2421,8 +2222,7 @@ }, "node_modules/cacache/node_modules/mkdirp": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -2432,8 +2232,7 @@ }, "node_modules/cacache/node_modules/ssri": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "license": "ISC", "dependencies": { "minipass": "^3.1.1" }, @@ -2443,8 +2242,7 @@ }, "node_modules/cacheable-request": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "license": "MIT", "dependencies": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", @@ -2460,8 +2258,7 @@ }, "node_modules/cacheable-request/node_modules/get-stream": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -2474,43 +2271,38 @@ }, "node_modules/cacheable-request/node_modules/lowercase-keys": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cacheable-request/node_modules/normalize-url": { "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/callsites": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/camelcase": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/camelcase-keys": { "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, + "license": "MIT", "dependencies": { "camelcase": "^5.3.1", "map-obj": "^4.0.0", @@ -2525,8 +2317,6 @@ }, "node_modules/caniuse-lite": { "version": "1.0.30001344", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001344.tgz", - "integrity": "sha512-0ZFjnlCaXNOAYcV7i+TtdKBp0L/3XEU2MF/x6Du1lrh+SRX4IfzIVL4HNJg5pB2PmFb8rszIGyOvsZnqqRoc2g==", "dev": true, "funding": [ { @@ -2537,13 +2327,13 @@ "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/cardinal": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", - "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", "dev": true, + "license": "MIT", "dependencies": { "ansicolors": "~0.3.2", "redeyed": "~2.1.0" @@ -2554,13 +2344,11 @@ }, "node_modules/caseless": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + "license": "Apache-2.0" }, "node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2574,8 +2362,6 @@ }, "node_modules/chokidar": { "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "funding": [ { @@ -2583,6 +2369,7 @@ "url": "https://paulmillr.com/funding/" } ], + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -2601,9 +2388,8 @@ }, "node_modules/chokidar/node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -2613,29 +2399,25 @@ }, "node_modules/chownr": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/ci-info": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + "license": "MIT" }, "node_modules/clean-stack": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cli-boxes": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "license": "MIT", "engines": { "node": ">=6" }, @@ -2645,8 +2427,6 @@ }, "node_modules/cli-table": { "version": "0.3.11", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", - "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", "dependencies": { "colors": "1.0.3" }, @@ -2656,9 +2436,8 @@ }, "node_modules/cli-table3": { "version": "0.6.2", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz", - "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==", "dev": true, + "license": "MIT", "dependencies": { "string-width": "^4.2.0" }, @@ -2671,9 +2450,8 @@ }, "node_modules/cliui": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -2682,16 +2460,14 @@ }, "node_modules/clone-response": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", + "license": "MIT", "dependencies": { "mimic-response": "^1.0.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": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "license": "MIT", "optional": true, "engines": { "node": ">=0.10.0" @@ -2699,8 +2475,7 @@ }, "node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -2710,29 +2485,25 @@ }, "node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "license": "MIT" }, "node_modules/color-support": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "license": "ISC", "bin": { "color-support": "bin.js" } }, "node_modules/colors": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "license": "MIT", "engines": { "node": ">=0.1.90" } }, "node_modules/combined-stream": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -2742,17 +2513,15 @@ }, "node_modules/commander": { "version": "9.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", - "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==", + "license": "MIT", "engines": { "node": "^12.20.0 || >=14" } }, "node_modules/compare-func": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, + "license": "MIT", "dependencies": { "array-ify": "^1.0.0", "dot-prop": "^5.1.0" @@ -2760,16 +2529,14 @@ }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "license": "MIT" }, "node_modules/concat-stream": { "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "engines": [ "node >= 0.8" ], + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -2779,8 +2546,7 @@ }, "node_modules/configstore": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "license": "BSD-2-Clause", "dependencies": { "dot-prop": "^5.2.0", "graceful-fs": "^4.1.2", @@ -2795,14 +2561,12 @@ }, "node_modules/console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + "license": "ISC" }, "node_modules/conventional-changelog-angular": { "version": "5.0.13", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", - "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", "dev": true, + "license": "ISC", "dependencies": { "compare-func": "^2.0.0", "q": "^1.5.1" @@ -2813,9 +2577,8 @@ }, "node_modules/conventional-changelog-writer": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", - "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", "dev": true, + "license": "MIT", "dependencies": { "conventional-commits-filter": "^2.0.7", "dateformat": "^3.0.0", @@ -2836,9 +2599,8 @@ }, "node_modules/conventional-commits-filter": { "version": "2.0.7", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", - "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", "dev": true, + "license": "MIT", "dependencies": { "lodash.ismatch": "^4.4.0", "modify-values": "^1.0.0" @@ -2849,9 +2611,8 @@ }, "node_modules/conventional-commits-parser": { "version": "3.2.4", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", - "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", "dev": true, + "license": "MIT", "dependencies": { "is-text-path": "^1.0.1", "JSONStream": "^1.0.4", @@ -2869,29 +2630,25 @@ }, "node_modules/convert-source-map": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.1" } }, "node_modules/convert-source-map/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/core-util-is": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "license": "MIT" }, "node_modules/cosmiconfig": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -2905,18 +2662,16 @@ }, "node_modules/cosmiconfig/node_modules/yaml": { "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 6" } }, "node_modules/cross-env": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.1" }, @@ -2932,9 +2687,8 @@ }, "node_modules/cross-spawn": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2946,17 +2700,15 @@ }, "node_modules/crypto-random-string": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cssesc": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -2966,8 +2718,7 @@ }, "node_modules/dashdash": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" }, @@ -2977,17 +2728,15 @@ }, "node_modules/dateformat": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -3002,18 +2751,16 @@ }, "node_modules/decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/decamelize-keys": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==", "dev": true, + "license": "MIT", "dependencies": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" @@ -3024,17 +2771,15 @@ }, "node_modules/decamelize-keys/node_modules/map-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/decompress-response": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "license": "MIT", "dependencies": { "mimic-response": "^1.0.0" }, @@ -3044,28 +2789,24 @@ }, "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==", + "license": "MIT", "engines": { "node": ">=4.0.0" } }, "node_modules/deep-is": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/defer-to-connect": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + "license": "MIT" }, "node_modules/del": { "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", "dev": true, + "license": "MIT", "dependencies": { "globby": "^11.0.1", "graceful-fs": "^4.2.4", @@ -3085,45 +2826,39 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + "license": "MIT" }, "node_modules/depd": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/deprecation": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/diff": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/dir-glob": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -3133,9 +2868,8 @@ }, "node_modules/doctrine": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -3145,8 +2879,7 @@ }, "node_modules/dot-prop": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "license": "MIT", "dependencies": { "is-obj": "^2.0.0" }, @@ -3156,28 +2889,24 @@ }, "node_modules/duplexer2": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "readable-stream": "^2.0.2" } }, "node_modules/duplexer3": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==" + "license": "BSD-3-Clause" }, "node_modules/eastasianwidth": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ecc-jsbn": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "license": "MIT", "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -3185,19 +2914,16 @@ }, "node_modules/electron-to-chromium": { "version": "1.4.141", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.141.tgz", - "integrity": "sha512-mfBcbqc0qc6RlxrsIgLG2wCqkiPAjEezHxGTu7p3dHHFOurH4EjS9rFZndX5axC8264rI1Pcbw8uQP39oZckeA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "license": "MIT" }, "node_modules/encoding": { "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "license": "MIT", "optional": true, "dependencies": { "iconv-lite": "^0.6.2" @@ -3205,17 +2931,15 @@ }, "node_modules/end-of-stream": { "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", "dependencies": { "once": "^1.4.0" } }, "node_modules/env-ci": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-5.5.0.tgz", - "integrity": "sha512-o0JdWIbOLP+WJKIUt36hz1ImQQFuN92nhsfTkHHap+J8CiI8WgGpH/a9jEGHh4/TU5BUUGjlnKXNoDb57+ne+A==", "dev": true, + "license": "MIT", "dependencies": { "execa": "^5.0.0", "fromentries": "^1.3.2", @@ -3227,40 +2951,35 @@ }, "node_modules/err-code": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + "license": "MIT" }, "node_modules/error-ex": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/escalade": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-goat": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -3270,9 +2989,8 @@ }, "node_modules/eslint": { "version": "8.51.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", - "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -3324,9 +3042,8 @@ }, "node_modules/eslint-config-prettier": { "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", "dev": true, + "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -3336,9 +3053,8 @@ }, "node_modules/eslint-plugin-prettier": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", - "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", "dev": true, + "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0" }, @@ -3357,9 +3073,8 @@ }, "node_modules/eslint-plugin-vue": { "version": "8.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz", - "integrity": "sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==", "dev": true, + "license": "MIT", "dependencies": { "eslint-utils": "^3.0.0", "natural-compare": "^1.4.0", @@ -3377,9 +3092,8 @@ }, "node_modules/eslint-plugin-vue/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -3389,9 +3103,8 @@ }, "node_modules/eslint-plugin-vue/node_modules/semver": { "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -3404,9 +3117,8 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -3417,9 +3129,8 @@ }, "node_modules/eslint-utils": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^2.0.0" }, @@ -3435,18 +3146,16 @@ }, "node_modules/eslint-visitor-keys": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10" } }, "node_modules/eslint/node_modules/eslint-scope": { "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -3460,9 +3169,8 @@ }, "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -3472,18 +3180,16 @@ }, "node_modules/eslint/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/eslint/node_modules/globals": { "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -3496,9 +3202,8 @@ }, "node_modules/eslint/node_modules/type-fest": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -3508,9 +3213,8 @@ }, "node_modules/espree": { "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -3525,9 +3229,8 @@ }, "node_modules/espree/node_modules/eslint-visitor-keys": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -3537,9 +3240,8 @@ }, "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, + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -3550,9 +3252,8 @@ }, "node_modules/esquery": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -3562,18 +3263,16 @@ }, "node_modules/esquery/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/esrecurse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -3583,36 +3282,32 @@ }, "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "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, + "license": "BSD-2-Clause", "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==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/execa": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -3633,33 +3328,28 @@ }, "node_modules/extend": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "license": "MIT" }, "node_modules/extsprintf": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "engines": [ "node >=0.6.0" - ] + ], + "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "license": "MIT" }, "node_modules/fast-diff": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/fast-glob": { "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -3673,9 +3363,8 @@ }, "node_modules/fast-glob/node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -3685,29 +3374,25 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fastq": { "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/figures": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -3720,18 +3405,16 @@ }, "node_modules/figures/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/file-entry-cache": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -3741,9 +3424,8 @@ }, "node_modules/fill-range": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -3753,9 +3435,8 @@ }, "node_modules/find-up": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -3769,9 +3450,8 @@ }, "node_modules/find-versions": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", - "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", "dev": true, + "license": "MIT", "dependencies": { "semver-regex": "^3.1.2" }, @@ -3784,18 +3464,16 @@ }, "node_modules/flat": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, + "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } }, "node_modules/flat-cache": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -3806,22 +3484,19 @@ }, "node_modules/flatted": { "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/forever-agent": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/form-data": { "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -3833,9 +3508,8 @@ }, "node_modules/from2": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" @@ -3843,8 +3517,6 @@ }, "node_modules/fromentries": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", "dev": true, "funding": [ { @@ -3859,12 +3531,12 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -3876,8 +3548,7 @@ }, "node_modules/fs-minipass": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -3887,32 +3558,15 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } + "license": "ISC" }, "node_modules/function-bind": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "license": "MIT" }, "node_modules/gauge": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "license": "ISC", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.3", @@ -3929,27 +3583,24 @@ }, "node_modules/gensync": { "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-stream": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -3959,17 +3610,15 @@ }, "node_modules/getpass": { "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" } }, "node_modules/git-log-parser": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", - "integrity": "sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==", "dev": true, + "license": "MIT", "dependencies": { "argv-formatter": "~1.0.0", "spawn-error-forwarder": "~1.0.0", @@ -3981,18 +3630,16 @@ }, "node_modules/git-log-parser/node_modules/split2": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", - "integrity": "sha1-UuLiIdiMdfmnP5BVbiY/+WdysxQ=", "dev": true, + "license": "ISC", "dependencies": { "through2": "~2.0.0" } }, "node_modules/git-log-parser/node_modules/through2": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, + "license": "MIT", "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -4000,8 +3647,7 @@ }, "node_modules/glob": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4019,9 +3665,8 @@ }, "node_modules/glob-parent": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -4031,8 +3676,7 @@ }, "node_modules/global-dirs": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "license": "MIT", "dependencies": { "ini": "2.0.0" }, @@ -4045,26 +3689,23 @@ }, "node_modules/global-dirs/node_modules/ini": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "license": "ISC", "engines": { "node": ">=10" } }, "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, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/globby": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -4082,8 +3723,7 @@ }, "node_modules/got": { "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "license": "MIT", "dependencies": { "@sindresorhus/is": "^0.14.0", "@szmarczak/http-timer": "^1.1.2", @@ -4103,8 +3743,7 @@ }, "node_modules/got/node_modules/get-stream": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -4114,20 +3753,17 @@ }, "node_modules/graceful-fs": { "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/handlebars": { "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.0", @@ -4146,17 +3782,14 @@ }, "node_modules/har-schema": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "license": "ISC", "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", + "license": "MIT", "dependencies": { "ajv": "^6.12.3", "har-schema": "^2.0.0" @@ -4167,17 +3800,15 @@ }, "node_modules/hard-rejection": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/has": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.1" }, @@ -4187,57 +3818,49 @@ }, "node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + "license": "ISC" }, "node_modules/has-yarn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/he": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, + "license": "MIT", "bin": { "he": "bin/he" } }, "node_modules/hook-std": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-2.0.0.tgz", - "integrity": "sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/hosted-git-info": { "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + "license": "ISC" }, "node_modules/http-cache-semantics": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + "license": "BSD-2-Clause" }, "node_modules/http-proxy-agent": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "license": "MIT", "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -4249,8 +3872,7 @@ }, "node_modules/http-signature": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -4263,8 +3885,7 @@ }, "node_modules/https-proxy-agent": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -4275,25 +3896,22 @@ }, "node_modules/human-signals": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } }, "node_modules/humanize-ms": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "license": "MIT", "dependencies": { "ms": "^2.0.0" } }, "node_modules/iconv-lite": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -4304,18 +3922,16 @@ }, "node_modules/ignore": { "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/import-fresh": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -4329,9 +3945,8 @@ }, "node_modules/import-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", - "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.2" }, @@ -4341,37 +3956,32 @@ }, "node_modules/import-lazy": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "license": "MIT", "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=", + "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/infer-owner": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + "license": "ISC" }, "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -4379,19 +3989,16 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "license": "ISC" }, "node_modules/into-stream": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz", - "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", "dev": true, + "license": "MIT", "dependencies": { "from2": "^2.3.0", "p-is-promise": "^3.0.0" @@ -4405,20 +4012,17 @@ }, "node_modules/ip": { "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + "license": "MIT" }, "node_modules/is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-binary-path": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -4428,8 +4032,7 @@ }, "node_modules/is-ci": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "license": "MIT", "dependencies": { "ci-info": "^2.0.0" }, @@ -4439,8 +4042,7 @@ }, "node_modules/is-core-module": { "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "license": "MIT", "dependencies": { "has": "^1.0.3" }, @@ -4450,8 +4052,7 @@ }, "node_modules/is-docker": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -4464,26 +4065,23 @@ }, "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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -4493,8 +4091,7 @@ }, "node_modules/is-installed-globally": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "license": "MIT", "dependencies": { "global-dirs": "^3.0.0", "is-path-inside": "^3.0.2" @@ -4508,13 +4105,11 @@ }, "node_modules/is-lambda": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=" + "license": "MIT" }, "node_modules/is-npm": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -4524,61 +4119,54 @@ }, "node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-obj": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-path-cwd": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/is-path-inside": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-plain-obj": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-plain-object": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-stream": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -4588,9 +4176,8 @@ }, "node_modules/is-text-path": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", "dev": true, + "license": "MIT", "dependencies": { "text-extensions": "^1.0.0" }, @@ -4600,14 +4187,12 @@ }, "node_modules/is-typedarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "license": "MIT" }, "node_modules/is-unicode-supported": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4617,8 +4202,7 @@ }, "node_modules/is-wsl": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -4628,30 +4212,25 @@ }, "node_modules/is-yarn-global": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + "license": "MIT" }, "node_modules/isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/isstream": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "license": "MIT" }, "node_modules/issue-parser": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", - "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", "dev": true, + "license": "MIT", "dependencies": { "lodash.capitalize": "^4.2.1", "lodash.escaperegexp": "^4.1.2", @@ -4665,24 +4244,21 @@ }, "node_modules/java-properties": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", - "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6.0" } }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -4692,14 +4268,12 @@ }, "node_modules/jsbn": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "license": "MIT" }, "node_modules/jsesc": { "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -4709,47 +4283,39 @@ }, "node_modules/json-buffer": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + "license": "MIT" }, "node_modules/json-parse-better-errors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + "license": "(AFL-2.1 OR BSD-3-Clause)" }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stringify-safe": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "license": "ISC" }, "node_modules/json5": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -4759,8 +4325,7 @@ }, "node_modules/jsonfile": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -4770,17 +4335,15 @@ }, "node_modules/jsonparse": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "engines": [ "node >= 0.2.0" - ] + ], + "license": "MIT" }, "node_modules/JSONStream": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, + "license": "(MIT OR Apache-2.0)", "dependencies": { "jsonparse": "^1.2.0", "through": ">=2.2.7 <3" @@ -4794,8 +4357,7 @@ }, "node_modules/jsprim": { "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "license": "MIT", "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -4808,25 +4370,22 @@ }, "node_modules/keyv": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "license": "MIT", "dependencies": { "json-buffer": "3.0.0" } }, "node_modules/kind-of": { "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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/latest-version": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "license": "MIT", "dependencies": { "package-json": "^6.3.0" }, @@ -4836,9 +4395,8 @@ }, "node_modules/levn": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -4849,8 +4407,7 @@ }, "node_modules/libnpmsearch": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/libnpmsearch/-/libnpmsearch-5.0.3.tgz", - "integrity": "sha512-Ofq76qKAPhxbiyzPf/5LPjJln26VTKwU9hIU0ACxQ6tNtBJ1CHmI7iITrdp7vNezhZc0FlkXwrIpqXjhBJZgLQ==", + "license": "ISC", "dependencies": { "npm-registry-fetch": "^13.0.0" }, @@ -4860,15 +4417,13 @@ }, "node_modules/lines-and-columns": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/load-json-file": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "parse-json": "^4.0.0", @@ -4881,9 +4436,8 @@ }, "node_modules/load-json-file/node_modules/parse-json": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, + "license": "MIT", "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -4894,9 +4448,8 @@ }, "node_modules/locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -4909,62 +4462,52 @@ }, "node_modules/lodash": { "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "license": "MIT" }, "node_modules/lodash.capitalize": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", - "integrity": "sha1-+CbJtOKoUR2E46yinbBeGk87cqk=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.escaperegexp": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.ismatch": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.isstring": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.set": { "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.uniqby": { "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", - "integrity": "sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -4978,24 +4521,21 @@ }, "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==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/lru-cache": { "version": "7.10.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", - "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/make-dir": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -5008,14 +4548,12 @@ }, "node_modules/make-error": { "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/make-fetch-happen": { "version": "10.1.6", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.6.tgz", - "integrity": "sha512-/iKDlRQF0fkxyB/w/duW2yRYrGwBcbJjC37ijgi0CmOZ32bzMc86BCSSAHWvuyRFCB408iBPziTSzazBSrKo3w==", + "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^16.1.0", @@ -5040,8 +4578,7 @@ }, "node_modules/make-fetch-happen/node_modules/ssri": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "license": "ISC", "dependencies": { "minipass": "^3.1.1" }, @@ -5051,9 +4588,8 @@ }, "node_modules/map-obj": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -5063,9 +4599,8 @@ }, "node_modules/marked": { "version": "4.0.16", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.16.tgz", - "integrity": "sha512-wahonIQ5Jnyatt2fn8KqF/nIqZM8mh3oRu2+l5EANGMhu6RFjiSG52QNE2eWzFMI94HqYSgN184NurgNG6CztA==", "dev": true, + "license": "MIT", "bin": { "marked": "bin/marked.js" }, @@ -5075,9 +4610,8 @@ }, "node_modules/marked-terminal": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-5.1.1.tgz", - "integrity": "sha512-+cKTOx9P4l7HwINYhzbrBSyzgxO2HaHKGZGuB1orZsMIgXYaJyfidT81VXRdpelW/PcHEWxywscePVgI/oUF6g==", "dev": true, + "license": "MIT", "dependencies": { "ansi-escapes": "^5.0.0", "cardinal": "^2.1.1", @@ -5095,9 +4629,8 @@ }, "node_modules/marked-terminal/node_modules/chalk": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", - "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -5107,9 +4640,8 @@ }, "node_modules/meow": { "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, + "license": "MIT", "dependencies": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", @@ -5132,9 +4664,8 @@ }, "node_modules/meow/node_modules/hosted-git-info": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -5144,9 +4675,8 @@ }, "node_modules/meow/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -5156,9 +4686,8 @@ }, "node_modules/meow/node_modules/normalize-package-data": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -5171,9 +4700,8 @@ }, "node_modules/meow/node_modules/semver": { "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -5186,9 +4714,8 @@ }, "node_modules/meow/node_modules/type-fest": { "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -5198,24 +4725,21 @@ }, "node_modules/merge-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/micromatch": { "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -5226,9 +4750,8 @@ }, "node_modules/mime": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", "dev": true, + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -5238,16 +4761,14 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -5257,34 +4778,30 @@ }, "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, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/mimic-response": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/min-indent": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -5294,14 +4811,12 @@ }, "node_modules/minimist": { "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "license": "MIT" }, "node_modules/minimist-options": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, + "license": "MIT", "dependencies": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", @@ -5313,8 +4828,7 @@ }, "node_modules/minipass": { "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -5324,8 +4838,7 @@ }, "node_modules/minipass-collect": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -5335,8 +4848,7 @@ }, "node_modules/minipass-fetch": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", - "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", + "license": "MIT", "dependencies": { "minipass": "^3.1.6", "minipass-sized": "^1.0.3", @@ -5351,8 +4863,7 @@ }, "node_modules/minipass-flush": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -5362,8 +4873,7 @@ }, "node_modules/minipass-json-stream": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "license": "MIT", "dependencies": { "jsonparse": "^1.3.1", "minipass": "^3.0.0" @@ -5371,8 +4881,7 @@ }, "node_modules/minipass-pipeline": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -5382,8 +4891,7 @@ }, "node_modules/minipass-sized": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -5393,8 +4901,7 @@ }, "node_modules/minizlib": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -5405,8 +4912,7 @@ }, "node_modules/mkdirp": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "license": "MIT", "bin": { "mkdirp": "dist/cjs/src/bin.js" }, @@ -5419,9 +4925,8 @@ }, "node_modules/mocha": { "version": "10.0.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz", - "integrity": "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==", "dev": true, + "license": "MIT", "dependencies": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", @@ -5460,18 +4965,16 @@ }, "node_modules/mocha/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/mocha/node_modules/minimatch": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -5481,15 +4984,13 @@ }, "node_modules/mocha/node_modules/ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -5502,28 +5003,24 @@ }, "node_modules/modify-values": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "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==" + "license": "MIT" }, "node_modules/mute-stream": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + "license": "ISC" }, "node_modules/nanoid": { "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true, + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -5533,35 +5030,30 @@ }, "node_modules/natural-compare": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/negotiator": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/neo-async": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nerf-dart": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", - "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nock": { "version": "13.2.4", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.4.tgz", - "integrity": "sha512-8GPznwxcPNCH/h8B+XZcKjYPXnUV5clOKCjAqyjsiqA++MpNx9E9+t8YPp0MbThO+KauRo7aZJ1WuIZmOrT2Ug==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.0", "json-stringify-safe": "^5.0.1", @@ -5574,18 +5066,16 @@ }, "node_modules/node-emoji": { "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.17.21" } }, "node_modules/node-fetch": { "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -5603,14 +5093,12 @@ }, "node_modules/node-releases": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/normalize-package-data": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -5620,26 +5108,23 @@ }, "node_modules/normalize-package-data/node_modules/semver": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "license": "ISC", "bin": { "semver": "bin/semver" } }, "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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/normalize-url": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -5649,8 +5134,6 @@ }, "node_modules/npm": { "version": "8.11.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-8.11.0.tgz", - "integrity": "sha512-4qmtwHa28J4SPmwCNoQI07KIF/ljmBhhuqG+xNXsIIRpwdKB5OXkMIGfH6KlThR6kzusxlkgR7t1haFDB88dcQ==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -5724,6 +5207,12 @@ "write-file-atomic" ], "dev": true, + "license": "Artistic-2.0", + "workspaces": [ + "docs", + "smoke-tests", + "workspaces/*" + ], "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", "@npmcli/arborist": "^5.0.4", @@ -5806,8 +5295,7 @@ }, "node_modules/npm-package-arg": { "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", - "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "license": "ISC", "dependencies": { "hosted-git-info": "^2.7.1", "osenv": "^0.1.5", @@ -5817,16 +5305,14 @@ }, "node_modules/npm-package-arg/node_modules/semver": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/npm-registry-fetch": { "version": "13.1.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.1.tgz", - "integrity": "sha512-5p8rwe6wQPLJ8dMqeTnA57Dp9Ox6GH9H60xkyJup07FmVlu3Mk7pf/kIIpl9gaN5bM8NM+UUx3emUWvDNTt39w==", + "license": "ISC", "dependencies": { "make-fetch-happen": "^10.0.6", "minipass": "^3.1.6", @@ -5842,16 +5328,14 @@ }, "node_modules/npm-registry-fetch/node_modules/builtins": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "license": "MIT", "dependencies": { "semver": "^7.0.0" } }, "node_modules/npm-registry-fetch/node_modules/hosted-git-info": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", + "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -5861,8 +5345,7 @@ }, "node_modules/npm-registry-fetch/node_modules/npm-package-arg": { "version": "9.0.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.2.tgz", - "integrity": "sha512-v/miORuX8cndiOheW8p2moNuPJ7QhcFh9WGlTorruG8hXSA23vMTEp5hTCmDxic0nD8KHhj/NQgFuySD3GYY3g==", + "license": "ISC", "dependencies": { "hosted-git-info": "^5.0.0", "semver": "^7.3.5", @@ -5874,8 +5357,7 @@ }, "node_modules/npm-registry-fetch/node_modules/semver": { "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -5888,8 +5370,7 @@ }, "node_modules/npm-registry-fetch/node_modules/semver/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -5899,8 +5380,7 @@ }, "node_modules/npm-registry-fetch/node_modules/validate-npm-package-name": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", - "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", + "license": "ISC", "dependencies": { "builtins": "^5.0.0" }, @@ -5910,9 +5390,8 @@ }, "node_modules/npm-run-path": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -8202,8 +7681,7 @@ }, "node_modules/npmlog": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "license": "ISC", "dependencies": { "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", @@ -8216,9 +7694,8 @@ }, "node_modules/nth-check": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -8228,8 +7705,7 @@ }, "node_modules/number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "license": "MIT", "optional": true, "engines": { "node": ">=0.10.0" @@ -8237,16 +7713,14 @@ }, "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==", + "license": "Apache-2.0", "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=", + "license": "MIT", "optional": true, "engines": { "node": ">=0.10.0" @@ -8254,17 +7728,15 @@ }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/onetime": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -8277,9 +7749,8 @@ }, "node_modules/optionator": { "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, + "license": "MIT", "dependencies": { "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", @@ -8294,24 +7765,21 @@ }, "node_modules/os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "license": "MIT", "engines": { "node": ">=0.10.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=", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/osenv": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "license": "ISC", "dependencies": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -8319,17 +7787,15 @@ }, "node_modules/p-cancelable": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/p-each-series": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", - "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -8339,9 +7805,8 @@ }, "node_modules/p-filter": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", - "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", "dev": true, + "license": "MIT", "dependencies": { "p-map": "^2.0.0" }, @@ -8351,27 +7816,24 @@ }, "node_modules/p-filter/node_modules/p-map": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/p-is-promise": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", - "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -8384,9 +7846,8 @@ }, "node_modules/p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -8399,8 +7860,7 @@ }, "node_modules/p-map": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -8413,18 +7873,16 @@ }, "node_modules/p-reduce": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", - "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/p-retry": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/retry": "0.12.0", "retry": "^0.13.1" @@ -8435,17 +7893,15 @@ }, "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, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/package-json": { "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "license": "MIT", "dependencies": { "got": "^9.6.0", "registry-auth-token": "^4.0.0", @@ -8458,9 +7914,8 @@ }, "node_modules/parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -8470,9 +7925,8 @@ }, "node_modules/parse-json": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -8488,60 +7942,52 @@ }, "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "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=", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/performance-now": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "license": "MIT" }, "node_modules/picocolors": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -8551,18 +7997,16 @@ }, "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, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/pkg-conf": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", - "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^2.0.0", "load-json-file": "^4.0.0" @@ -8573,9 +8017,8 @@ }, "node_modules/pkg-conf/node_modules/find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^2.0.0" }, @@ -8585,9 +8028,8 @@ }, "node_modules/pkg-conf/node_modules/locate-path": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -8598,9 +8040,8 @@ }, "node_modules/pkg-conf/node_modules/p-limit": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^1.0.0" }, @@ -8610,9 +8051,8 @@ }, "node_modules/pkg-conf/node_modules/p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^1.1.0" }, @@ -8622,26 +8062,23 @@ }, "node_modules/pkg-conf/node_modules/path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/pkginfo": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", - "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=", + "license": "MIT", "engines": { "node": ">= 0.4.0" } }, "node_modules/postcss-selector-parser": { "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -8652,26 +8089,23 @@ }, "node_modules/prelude-ls": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/prepend-http": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/prettier": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", - "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin-prettier.js" }, @@ -8684,9 +8118,8 @@ }, "node_modules/prettier-linter-helpers": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, + "license": "MIT", "dependencies": { "fast-diff": "^1.1.2" }, @@ -8696,26 +8129,22 @@ }, "node_modules/proc-log": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", - "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", + "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/process-nextick-args": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "license": "MIT" }, "node_modules/promise-inflight": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" + "license": "ISC" }, "node_modules/promise-retry": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "license": "MIT", "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -8726,38 +8155,33 @@ }, "node_modules/promise-retry/node_modules/retry": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/promptly": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/promptly/-/promptly-3.2.0.tgz", - "integrity": "sha512-WnR9obtgW+rG4oUV3hSnNGl1pHm3V1H/qD9iJBumGSmVsSC5HpZOLuu8qdMb6yCItGfT7dcRszejr/5P3i9Pug==", + "license": "MIT", "dependencies": { "read": "^1.0.4" } }, "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, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/psl": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + "license": "MIT" }, "node_modules/pump": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -8765,16 +8189,14 @@ }, "node_modules/punycode": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/pupa": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "license": "MIT", "dependencies": { "escape-goat": "^2.0.0" }, @@ -8784,9 +8206,8 @@ }, "node_modules/q": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6.0", "teleport": ">=0.2.0" @@ -8794,16 +8215,13 @@ }, "node_modules/qs": { "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.6" } }, "node_modules/queue-microtask": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -8818,30 +8236,28 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/quick-lru": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/rc": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -8854,16 +8270,14 @@ }, "node_modules/rc/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=", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/read": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "license": "ISC", "dependencies": { "mute-stream": "~0.0.4" }, @@ -8873,9 +8287,8 @@ }, "node_modules/read-pkg": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, + "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -8888,9 +8301,8 @@ }, "node_modules/read-pkg-up": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -8905,9 +8317,8 @@ }, "node_modules/read-pkg-up/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -8918,9 +8329,8 @@ }, "node_modules/read-pkg-up/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -8930,9 +8340,8 @@ }, "node_modules/read-pkg-up/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -8945,9 +8354,8 @@ }, "node_modules/read-pkg-up/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -8957,35 +8365,31 @@ }, "node_modules/read-pkg-up/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, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/read-pkg-up/node_modules/type-fest": { "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/read-pkg/node_modules/type-fest": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/readable-stream": { "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -8998,14 +8402,12 @@ }, "node_modules/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "license": "MIT" }, "node_modules/readdirp": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -9015,9 +8417,8 @@ }, "node_modules/redent": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, + "license": "MIT", "dependencies": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" @@ -9028,17 +8429,15 @@ }, "node_modules/redeyed": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", - "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=", "dev": true, + "license": "MIT", "dependencies": { "esprima": "~4.0.0" } }, "node_modules/registry-auth-token": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "license": "MIT", "dependencies": { "rc": "^1.2.8" }, @@ -9048,8 +8447,7 @@ }, "node_modules/registry-url": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "license": "MIT", "dependencies": { "rc": "^1.2.8" }, @@ -9059,9 +8457,7 @@ }, "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", + "license": "Apache-2.0", "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -9090,17 +8486,15 @@ }, "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, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/resolve": { "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "license": "MIT", "dependencies": { "is-core-module": "^2.8.1", "path-parse": "^1.0.7", @@ -9115,34 +8509,30 @@ }, "node_modules/resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/responselike": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "license": "MIT", "dependencies": { "lowercase-keys": "^1.0.0" } }, "node_modules/retry": { "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/reusify": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -9150,8 +8540,7 @@ }, "node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -9164,8 +8553,6 @@ }, "node_modules/run-parallel": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -9181,14 +8568,13 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "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==", "funding": [ { "type": "github", @@ -9202,18 +8588,17 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "license": "MIT" }, "node_modules/semantic-release": { "version": "19.0.3", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-19.0.3.tgz", - "integrity": "sha512-HaFbydST1cDKZHuFZxB8DTrBLJVK/AnDExpK0s3EqLIAAUAHUgnd+VSJCUtTYQKkAkauL8G9CucODrVCc7BuAA==", "dev": true, + "license": "MIT", "dependencies": { "@semantic-release/commit-analyzer": "^9.0.2", "@semantic-release/error": "^3.0.0", @@ -9253,9 +8638,8 @@ }, "node_modules/semantic-release/node_modules/hosted-git-info": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -9265,9 +8649,8 @@ }, "node_modules/semantic-release/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -9277,18 +8660,16 @@ }, "node_modules/semantic-release/node_modules/resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/semantic-release/node_modules/semver": { "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -9301,16 +8682,14 @@ }, "node_modules/semver": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/semver-diff": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "license": "MIT", "dependencies": { "semver": "^6.3.0" }, @@ -9320,9 +8699,8 @@ }, "node_modules/semver-regex": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz", - "integrity": "sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -9332,23 +8710,20 @@ }, "node_modules/serialize-javascript": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "license": "ISC" }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -9358,18 +8733,16 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/should": { "version": "13.2.3", - "resolved": "https://registry.npmjs.org/should/-/should-13.2.3.tgz", - "integrity": "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==", "dev": true, + "license": "MIT", "dependencies": { "should-equal": "^2.0.0", "should-format": "^3.0.3", @@ -9380,18 +8753,16 @@ }, "node_modules/should-equal": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz", - "integrity": "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==", "dev": true, + "license": "MIT", "dependencies": { "should-type": "^1.4.0" } }, "node_modules/should-format": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz", - "integrity": "sha1-m/yPdPo5IFxT04w01xcwPidxJPE=", "dev": true, + "license": "MIT", "dependencies": { "should-type": "^1.3.0", "should-type-adaptors": "^1.0.1" @@ -9399,15 +8770,13 @@ }, "node_modules/should-type": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", - "integrity": "sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/should-type-adaptors": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz", - "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==", "dev": true, + "license": "MIT", "dependencies": { "should-type": "^1.3.0", "should-util": "^1.0.0" @@ -9415,20 +8784,17 @@ }, "node_modules/should-util": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz", - "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "license": "ISC" }, "node_modules/signale": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", - "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^2.3.2", "figures": "^2.0.0", @@ -9440,9 +8806,8 @@ }, "node_modules/signale/node_modules/ansi-styles": { "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -9452,9 +8817,8 @@ }, "node_modules/signale/node_modules/chalk": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -9466,33 +8830,29 @@ }, "node_modules/signale/node_modules/color-convert": { "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/signale/node_modules/color-name": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/signale/node_modules/escape-string-regexp": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/signale/node_modules/figures": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -9502,18 +8862,16 @@ }, "node_modules/signale/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, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/signale/node_modules/supports-color": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -9523,25 +8881,22 @@ }, "node_modules/slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/slide": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "license": "ISC", "engines": { "node": "*" } }, "node_modules/smart-buffer": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -9549,8 +8904,7 @@ }, "node_modules/socks": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", + "license": "MIT", "dependencies": { "ip": "^1.1.5", "smart-buffer": "^4.2.0" @@ -9562,8 +8916,7 @@ }, "node_modules/socks-proxy-agent": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", - "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", + "license": "MIT", "dependencies": { "agent-base": "^6.0.2", "debug": "^4.3.3", @@ -9575,18 +8928,16 @@ }, "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, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -9594,14 +8945,12 @@ }, "node_modules/spawn-error-forwarder": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", - "integrity": "sha1-Gv2Uc46ZmwNG17n8NzvlXgdXcCk=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/spdx-correct": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -9609,13 +8958,11 @@ }, "node_modules/spdx-exceptions": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -9623,14 +8970,12 @@ }, "node_modules/spdx-license-ids": { "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==" + "license": "CC0-1.0" }, "node_modules/split": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "dev": true, + "license": "MIT", "dependencies": { "through": "2" }, @@ -9640,18 +8985,16 @@ }, "node_modules/split2": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", "dev": true, + "license": "ISC", "dependencies": { "readable-stream": "^3.0.0" } }, "node_modules/split2/node_modules/readable-stream": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -9663,8 +9006,7 @@ }, "node_modules/sshpk": { "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "license": "MIT", "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -9687,8 +9029,7 @@ }, "node_modules/ssri": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "license": "ISC", "dependencies": { "minipass": "^3.1.1" }, @@ -9698,9 +9039,8 @@ }, "node_modules/stream-combiner2": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", "dev": true, + "license": "MIT", "dependencies": { "duplexer2": "~0.1.0", "readable-stream": "^2.0.2" @@ -9708,21 +9048,18 @@ }, "node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/string_decoder/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "license": "MIT" }, "node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -9734,8 +9071,7 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -9745,27 +9081,24 @@ }, "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, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/strip-final-newline": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/strip-indent": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, + "license": "MIT", "dependencies": { "min-indent": "^1.0.0" }, @@ -9775,9 +9108,8 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -9787,8 +9119,7 @@ }, "node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -9798,9 +9129,8 @@ }, "node_modules/supports-hyperlinks": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" @@ -9811,8 +9141,7 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9822,8 +9151,7 @@ }, "node_modules/tar": { "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -9838,8 +9166,7 @@ }, "node_modules/tar/node_modules/mkdirp": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -9849,18 +9176,16 @@ }, "node_modules/temp-dir": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/tempy": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", - "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", "dev": true, + "license": "MIT", "dependencies": { "del": "^6.0.0", "is-stream": "^2.0.0", @@ -9877,9 +9202,8 @@ }, "node_modules/tempy/node_modules/type-fest": { "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -9889,45 +9213,39 @@ }, "node_modules/test-console": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/test-console/-/test-console-2.0.0.tgz", - "integrity": "sha512-ciILzfCQCny8zy1+HEw2yBLKus7LNMsAHymsp2fhvGTVh5pWE5v2EB7V+5ag3WM9aO2ULtgsXVQePWYE+fb7pA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/text-extensions": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/text-table": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/through2": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dev": true, + "license": "MIT", "dependencies": { "readable-stream": "3" } }, "node_modules/through2/node_modules/readable-stream": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -9939,26 +9257,23 @@ }, "node_modules/to-fast-properties": { "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, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/to-readable-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -9968,8 +9283,7 @@ }, "node_modules/tough-cookie": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -9980,30 +9294,26 @@ }, "node_modules/tr46": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/traverse": { "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/trim-newlines": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ts-api-utils": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", "dev": true, + "license": "MIT", "engines": { "node": ">=16.13.0" }, @@ -10013,9 +9323,8 @@ }, "node_modules/ts-mocha": { "version": "10.0.0", - "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.0.0.tgz", - "integrity": "sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==", "dev": true, + "license": "MIT", "dependencies": { "ts-node": "7.0.1" }, @@ -10034,18 +9343,16 @@ }, "node_modules/ts-mocha/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, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/ts-mocha/node_modules/mkdirp": { "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -10055,9 +9362,8 @@ }, "node_modules/ts-mocha/node_modules/ts-node": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", - "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", "dev": true, + "license": "MIT", "dependencies": { "arrify": "^1.0.0", "buffer-from": "^1.1.0", @@ -10077,18 +9383,16 @@ }, "node_modules/ts-mocha/node_modules/yn": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/tsconfig-paths": { "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@types/json5": "^0.0.29", @@ -10099,9 +9403,8 @@ }, "node_modules/tsconfig-paths/node_modules/json5": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "minimist": "^1.2.0" @@ -10112,8 +9415,7 @@ }, "node_modules/tunnel-agent": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" }, @@ -10123,14 +9425,12 @@ }, "node_modules/tweetnacl": { "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "license": "Unlicense" }, "node_modules/type-check": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -10140,9 +9440,8 @@ }, "node_modules/type-fest": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -10152,22 +9451,19 @@ }, "node_modules/typedarray": { "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + "license": "MIT" }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/typescript": { "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -10178,9 +9474,8 @@ }, "node_modules/uglify-js": { "version": "3.15.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.5.tgz", - "integrity": "sha512-hNM5q5GbBRB5xB+PMqVRcgYe4c8jbyZ1pzZhS6jbq54/4F2gFK869ZheiE5A8/t+W5jtTNpWef/5Q9zk639FNQ==", "dev": true, + "license": "BSD-2-Clause", "optional": true, "bin": { "uglifyjs": "bin/uglifyjs" @@ -10191,24 +9486,21 @@ }, "node_modules/unique-filename": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "license": "ISC", "dependencies": { "unique-slug": "^2.0.0" } }, "node_modules/unique-slug": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" } }, "node_modules/unique-string": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "license": "MIT", "dependencies": { "crypto-random-string": "^2.0.0" }, @@ -10218,22 +9510,19 @@ }, "node_modules/universal-user-agent": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/universalify": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/update-notifier": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "license": "BSD-2-Clause", "dependencies": { "boxen": "^5.0.0", "chalk": "^4.1.0", @@ -10259,8 +9548,7 @@ }, "node_modules/update-notifier/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -10270,8 +9558,7 @@ }, "node_modules/update-notifier/node_modules/semver": { "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -10284,22 +9571,19 @@ }, "node_modules/uri-js": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/url-join": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/url-parse-lax": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "license": "MIT", "dependencies": { "prepend-http": "^2.0.0" }, @@ -10309,22 +9593,18 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "license": "MIT" }, "node_modules/uuid": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "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.", + "license": "MIT", "bin": { "uuid": "bin/uuid" } }, "node_modules/validate-npm-package-license": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -10332,19 +9612,17 @@ }, "node_modules/validate-npm-package-name": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "license": "ISC", "dependencies": { "builtins": "^1.0.3" } }, "node_modules/verror": { "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "engines": [ "node >=0.6.0" ], + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -10353,14 +9631,12 @@ }, "node_modules/verror/node_modules/core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + "license": "MIT" }, "node_modules/vue-eslint-parser": { "version": "8.3.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", - "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.2", "eslint-scope": "^7.0.0", @@ -10382,9 +9658,8 @@ }, "node_modules/vue-eslint-parser/node_modules/eslint-scope": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -10395,27 +9670,24 @@ }, "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/vue-eslint-parser/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/vue-eslint-parser/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -10425,9 +9697,8 @@ }, "node_modules/vue-eslint-parser/node_modules/semver": { "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -10440,15 +9711,13 @@ }, "node_modules/webidl-conversions": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/whatwg-url": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", "dev": true, + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -10456,9 +9725,8 @@ }, "node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -10471,16 +9739,14 @@ }, "node_modules/wide-align": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "license": "ISC", "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } }, "node_modules/widest-line": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "license": "MIT", "dependencies": { "string-width": "^4.0.0" }, @@ -10490,20 +9756,17 @@ }, "node_modules/wordwrap": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/workerpool": { "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -10518,13 +9781,11 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "license": "ISC" }, "node_modules/write-file-atomic": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -10534,48 +9795,42 @@ }, "node_modules/xdg-basedir": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "license": "MIT", "engines": { "node": ">=8" } }, "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, + "license": "MIT", "engines": { "node": ">=0.4" } }, "node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "license": "ISC" }, "node_modules/yaml": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.1.0.tgz", - "integrity": "sha512-OuAINfTsoJrY5H7CBWnKZhX6nZciXBydrMtTHr1dC4nP40X5jyTIVlogZHxSlVZM8zSgXRfgZGsaHF4+pV+JRw==", + "license": "ISC", "engines": { "node": ">= 14" } }, "node_modules/yargs": { "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -10591,18 +9846,16 @@ }, "node_modules/yargs-parser": { "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yargs-unparser": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, + "license": "MIT", "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", @@ -10615,9 +9868,8 @@ }, "node_modules/yargs-unparser/node_modules/camelcase": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -10627,9 +9879,8 @@ }, "node_modules/yargs-unparser/node_modules/decamelize": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -10639,18 +9890,16 @@ }, "node_modules/yargs-unparser/node_modules/is-plain-obj": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -10658,7835 +9907,5 @@ "url": "https://github.com/sponsors/sindresorhus" } } - }, - "dependencies": { - "@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true - }, - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.16.7" - } - }, - "@babel/compat-data": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", - "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", - "dev": true - }, - "@babel/core": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", - "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.18.2", - "@babel/helper-compilation-targets": "^7.18.2", - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helpers": "^7.18.2", - "@babel/parser": "^7.18.0", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - } - }, - "@babel/eslint-parser": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.18.2.tgz", - "integrity": "sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==", - "dev": true, - "requires": { - "eslint-scope": "^5.1.1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" - } - }, - "@babel/generator": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", - "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", - "dev": true, - "requires": { - "@babel/types": "^7.18.2", - "@jridgewell/gen-mapping": "^0.3.0", - "jsesc": "^2.5.1" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", - "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@babel/helper-compilation-targets": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", - "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", - "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", - "dev": true, - "requires": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-module-transforms": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", - "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.0", - "@babel/types": "^7.18.0" - } - }, - "@babel/helper-simple-access": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", - "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", - "dev": true, - "requires": { - "@babel/types": "^7.18.2" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", - "dev": true - }, - "@babel/helpers": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", - "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", - "dev": true, - "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2" - } - }, - "@babel/highlight": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", - "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.3.tgz", - "integrity": "sha512-rL50YcEuHbbauAFAysNsJA4/f89fGTOBRNs9P81sniKnKAr4xULe5AecolcsKbi88xu0ByWYDj/S1AJ3FSFuSQ==", - "dev": true - }, - "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/traverse": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", - "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.18.2", - "@babel/helper-environment-visitor": "^7.18.2", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.18.0", - "@babel/types": "^7.18.2", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.2.tgz", - "integrity": "sha512-0On6B8A4/+mFUto5WERt3EEuG1NznDirvwca1O8UwXQHVY8g3R7OzYgxXdOfMwLO08UrpUD/2+3Bclyq+/C94Q==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "optional": true - }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^3.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true - } - } - }, - "@eslint-community/regexpp": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", - "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "@eslint/js": { - "version": "8.51.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", - "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", - "dev": true - }, - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" - }, - "@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@iarna/toml": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", - "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==" - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", - "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", - "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@npmcli/fs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz", - "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==", - "requires": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@npmcli/move-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", - "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - } - } - }, - "@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", - "dev": true, - "requires": { - "@octokit/types": "^6.0.3" - } - }, - "@octokit/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", - "dev": true, - "requires": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", - "dev": true, - "requires": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", - "dev": true, - "requires": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/openapi-types": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", - "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", - "dev": true - }, - "@octokit/plugin-paginate-rest": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", - "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", - "dev": true, - "requires": { - "@octokit/types": "^6.34.0" - } - }, - "@octokit/plugin-request-log": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", - "dev": true, - "requires": {} - }, - "@octokit/plugin-rest-endpoint-methods": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", - "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", - "dev": true, - "requires": { - "@octokit/types": "^6.34.0", - "deprecation": "^2.3.1" - } - }, - "@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", - "dev": true, - "requires": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - } - }, - "@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "dev": true, - "requires": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "@octokit/rest": { - "version": "18.12.0", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", - "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", - "dev": true, - "requires": { - "@octokit/core": "^3.5.1", - "@octokit/plugin-paginate-rest": "^2.16.8", - "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-rest-endpoint-methods": "^5.12.0" - } - }, - "@octokit/types": { - "version": "6.34.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", - "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", - "dev": true, - "requires": { - "@octokit/openapi-types": "^11.2.0" - } - }, - "@semantic-release/changelog": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.1.tgz", - "integrity": "sha512-FT+tAGdWHr0RCM3EpWegWnvXJ05LQtBkQUaQRIExONoXjVjLuOILNm4DEKNaV+GAQyJjbLRVs57ti//GypH6PA==", - "dev": true, - "requires": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "fs-extra": "^9.0.0", - "lodash": "^4.17.4" - }, - "dependencies": { - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - } - } - }, - "@semantic-release/commit-analyzer": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-9.0.2.tgz", - "integrity": "sha512-E+dr6L+xIHZkX4zNMe6Rnwg4YQrWNXK+rNsvwOPpdFppvZO1olE2fIgWhv89TkQErygevbjsZFSIxp+u6w2e5g==", - "dev": true, - "requires": { - "conventional-changelog-angular": "^5.0.0", - "conventional-commits-filter": "^2.0.0", - "conventional-commits-parser": "^3.2.3", - "debug": "^4.0.0", - "import-from": "^4.0.0", - "lodash": "^4.17.4", - "micromatch": "^4.0.2" - } - }, - "@semantic-release/error": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", - "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", - "dev": true - }, - "@semantic-release/git": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", - "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", - "dev": true, - "requires": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "debug": "^4.0.0", - "dir-glob": "^3.0.0", - "execa": "^5.0.0", - "lodash": "^4.17.4", - "micromatch": "^4.0.0", - "p-reduce": "^2.0.0" - } - }, - "@semantic-release/github": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-8.0.4.tgz", - "integrity": "sha512-But4e8oqqP3anZI5tjzZssZc2J6eoUdeeE0s7LVKKwyiAXJiQDWNNvtPOpgG2DsIz4+Exuse7cEQgjGMxwtLmg==", - "dev": true, - "requires": { - "@octokit/rest": "^18.0.0", - "@semantic-release/error": "^2.2.0", - "aggregate-error": "^3.0.0", - "bottleneck": "^2.18.1", - "debug": "^4.0.0", - "dir-glob": "^3.0.0", - "fs-extra": "^10.0.0", - "globby": "^11.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "issue-parser": "^6.0.0", - "lodash": "^4.17.4", - "mime": "^3.0.0", - "p-filter": "^2.0.0", - "p-retry": "^4.0.0", - "url-join": "^4.0.0" - }, - "dependencies": { - "@semantic-release/error": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-2.2.0.tgz", - "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==", - "dev": true - } - } - }, - "@semantic-release/npm": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-9.0.1.tgz", - "integrity": "sha512-I5nVZklxBzfMFwemhRNbSrkiN/dsH3c7K9+KSk6jUnq0rdLFUuJt7EBsysq4Ir3moajQgFkfEryEHPqiKJj20g==", - "dev": true, - "requires": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "execa": "^5.0.0", - "fs-extra": "^10.0.0", - "lodash": "^4.17.15", - "nerf-dart": "^1.0.0", - "normalize-url": "^6.0.0", - "npm": "^8.3.0", - "rc": "^1.2.8", - "read-pkg": "^5.0.0", - "registry-auth-token": "^4.0.0", - "semver": "^7.1.2", - "tempy": "^1.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@semantic-release/release-notes-generator": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-10.0.3.tgz", - "integrity": "sha512-k4x4VhIKneOWoBGHkx0qZogNjCldLPRiAjnIpMnlUh6PtaWXp/T+C9U7/TaNDDtgDa5HMbHl4WlREdxHio6/3w==", - "dev": true, - "requires": { - "conventional-changelog-angular": "^5.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-filter": "^2.0.0", - "conventional-commits-parser": "^3.2.3", - "debug": "^4.0.0", - "get-stream": "^6.0.0", - "import-from": "^4.0.0", - "into-stream": "^6.0.0", - "lodash": "^4.17.4", - "read-pkg-up": "^7.0.0" - } - }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" - }, - "@types/caseless": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.4.tgz", - "integrity": "sha512-2in/lrHRNmDvHPgyormtEralhPcN3An1gLjJzj2Bw145VBxkQ75JEXW6CTdMAwShiHQcYsl2d10IjQSdJSJz4g==", - "dev": true - }, - "@types/cli-table": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@types/cli-table/-/cli-table-0.3.2.tgz", - "integrity": "sha512-yEwKAYmZsgb59xHtNRXaQAloxrm5xr8CQcrYerYlPK+3nwhPk1VC3QFwuiCd/jVWFu2hm4uFiiWDCJQSKhkROQ==", - "dev": true - }, - "@types/configstore": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@types/configstore/-/configstore-6.0.0.tgz", - "integrity": "sha512-GUvNiia85zTDDIx0iPrtF3pI8dwrQkfuokEqxqPDE55qxH0U5SZz4awVZjiJLWN2ZZRkXCUqgsMUbygXY+kytA==", - "dev": true - }, - "@types/fs-extra": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.3.tgz", - "integrity": "sha512-sF59BlXtUdzEAL1u0MSvuzWd7PdZvZEtnaVkzX5mjpdWTJ8brG0jUqve3jPCzSzvAKKMHTG8F8o/WMQLtleZdQ==", - "dev": true, - "requires": { - "@types/jsonfile": "*", - "@types/node": "*" - } - }, - "@types/json-schema": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", - "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", - "dev": true - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "optional": true - }, - "@types/jsonfile": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.3.tgz", - "integrity": "sha512-/yqTk2SZ1wIezK0hiRZD7RuSf4B3whFxFamB1kGStv+8zlWScTMcHanzfc0XKWs5vA1TkHeckBlOyM8jxU8nHA==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/libnpmsearch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/libnpmsearch/-/libnpmsearch-2.0.4.tgz", - "integrity": "sha512-2qlwrkVckDG+0AcMxr41hURNNZCJUhJ74/hkMjaW4/z5eT2zRYlTaSdUIjPnQYH2YTM0SSa1qKTcpO9g+zzlgw==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/npm-registry-fetch": "*" - } - }, - "@types/lodash": { - "version": "4.14.199", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz", - "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==", - "dev": true - }, - "@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "@types/mocha": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.3.tgz", - "integrity": "sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ==", - "dev": true - }, - "@types/node": { - "version": "14.18.63", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", - "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", - "dev": true - }, - "@types/node-fetch": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.6.tgz", - "integrity": "sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw==", - "dev": true, - "requires": { - "@types/node": "*", - "form-data": "^4.0.0" - }, - "dependencies": { - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - } - } - }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "@types/npm-package-arg": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@types/npm-package-arg/-/npm-package-arg-6.1.2.tgz", - "integrity": "sha512-K7TdZq7dTZKKgxaFGLR6VPAeNMDM7GwTELlVNyzQ0KKc6Du3+SYYRXFNEDrsCptpEpMjMNKVlb/5/ZNS/MeHjw==", - "dev": true - }, - "@types/npm-registry-fetch": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/@types/npm-registry-fetch/-/npm-registry-fetch-8.0.5.tgz", - "integrity": "sha512-mAyQmKTF/4dhXTeSicltEtMO+Vj/LEUoBkMgDn9tS2fGp8IsrZPkYv2GH0KKBcbFLXUq67wuzYwl0DCZGeRcpw==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/node-fetch": "*", - "@types/npm-package-arg": "*", - "@types/npmlog": "*", - "@types/ssri": "*" - } - }, - "@types/npmlog": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.4.tgz", - "integrity": "sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/pkginfo": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/pkginfo/-/pkginfo-0.4.1.tgz", - "integrity": "sha512-zdrklc4j/o5Nlp/O2JMn2t2lzVaPHeDUV4XD27PAJFqOnEP9dhWGEbsOucp9i4W02p4OtrzL7Up5fZ+ZzyKuKg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/promptly": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/promptly/-/promptly-3.0.3.tgz", - "integrity": "sha512-eM4RvsPy0cT37wJHTcOWvemIyPzBoSKEATp2OO4ptKeSrcNjMwGpDsUSBuBHuleC/datJW7A6NUlBAZsZGJmpA==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/request": { - "version": "2.48.11", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.11.tgz", - "integrity": "sha512-HuihY1+Vss5RS9ZHzRyTGIzwPTdrJBkCm/mAeLRYrOQu/MGqyezKXWOK1VhCnR+SDbp9G2mRUP+OVEqCrzpcfA==", - "dev": true, - "requires": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - }, - "dependencies": { - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - } - } - }, - "@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true - }, - "@types/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", - "dev": true - }, - "@types/should": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/@types/should/-/should-13.0.0.tgz", - "integrity": "sha512-Mi6YZ2ABnnGGFMuiBDP0a8s1ZDCDNHqP97UH8TyDmCWuGGavpsFMfJnAMYaaqmDlSCOCNbVLHBrSDEOpx/oLhw==", - "dev": true, - "requires": { - "should": "*" - } - }, - "@types/ssri": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@types/ssri/-/ssri-7.1.2.tgz", - "integrity": "sha512-Mbo/NaBiZlXNlOFTLK+PXeVEzKFxi+ZVELuzmk4VxdRz6aqKpmP9bhcNqsIB2c/s78355WBHwUCGYhQDydcfEg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/test-console": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/test-console/-/test-console-2.0.1.tgz", - "integrity": "sha512-oHttegDDXlGWAiVT3812HLnY6fcwXkbbgFy+5O6/LnqI6qXiUjCxQj7Yvdr8aiuW1iem1SFDM3kJniwkeoLN3w==", - "dev": true - }, - "@types/tough-cookie": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.4.tgz", - "integrity": "sha512-95Sfz4nvMAb0Nl9DTxN3j64adfwfbBPEYq14VN7zT5J5O2M9V6iZMIIQU1U+pJyl9agHYHNCqhCXgyEtIRRa5A==", - "dev": true - }, - "@types/update-notifier": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/@types/update-notifier/-/update-notifier-6.0.5.tgz", - "integrity": "sha512-uUOhxsJ3edPHu06r3k4I2yJ4eoyqBt+53ra9+caXEx0ruoPwqNHTlkq75CUvI4yWsrCA5+31tih+opunLCYnXw==", - "dev": true, - "requires": { - "@types/configstore": "*", - "boxen": "^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - }, - "boxen": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", - "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", - "dev": true, - "requires": { - "ansi-align": "^3.0.1", - "camelcase": "^7.0.1", - "chalk": "^5.2.0", - "cli-boxes": "^3.0.0", - "string-width": "^5.1.2", - "type-fest": "^2.13.0", - "widest-line": "^4.0.1", - "wrap-ansi": "^8.1.0" - } - }, - "camelcase": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", - "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", - "dev": true - }, - "chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true - }, - "cli-boxes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true - }, - "widest-line": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", - "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", - "dev": true, - "requires": { - "string-width": "^5.0.1" - } - }, - "wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } - } - } - }, - "@typescript-eslint/eslint-plugin": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz", - "integrity": "sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==", - "dev": true, - "requires": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.8.0", - "@typescript-eslint/type-utils": "6.8.0", - "@typescript-eslint/utils": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@typescript-eslint/parser": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.8.0.tgz", - "integrity": "sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "6.8.0", - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/typescript-estree": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz", - "integrity": "sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==", - "dev": true, - "requires": { - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz", - "integrity": "sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "6.8.0", - "@typescript-eslint/utils": "6.8.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - } - }, - "@typescript-eslint/types": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.8.0.tgz", - "integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz", - "integrity": "sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@typescript-eslint/utils": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.8.0.tgz", - "integrity": "sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.8.0", - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/typescript-estree": "6.8.0", - "semver": "^7.5.4" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@typescript-eslint/visitor-keys": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz", - "integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "6.8.0", - "eslint-visitor-keys": "^3.4.1" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true - } - } - }, - "@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - } - }, - "agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "another-npm-registry-client": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/another-npm-registry-client/-/another-npm-registry-client-8.7.0.tgz", - "integrity": "sha512-1fqojpPsaqfCFvUw65yFOpU6HuREVG21VPJPJ92eYYHAmV6gAgQUHQHXNCHP/vwn7O+TfmYrZX5EtGjyo755Eg==", - "requires": { - "concat-stream": "^1.5.2", - "graceful-fs": "^4.1.6", - "normalize-package-data": "~1.0.1 || ^2.0.0", - "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", - "npmlog": "2 || ^3.1.0 || ^4.0.0", - "once": "^1.3.3", - "request": "^2.74.0", - "retry": "^0.13.1", - "safe-buffer": "^5.1.1", - "semver": "^7.3.5", - "slide": "^1.1.3", - "ssri": "^8.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "optional": true - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "requires": { - "string-width": "^4.1.0" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-escapes": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", - "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", - "dev": true, - "requires": { - "type-fest": "^1.0.2" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", - "dev": true - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" - }, - "are-we-there-yet": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "argv-formatter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", - "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==", - "dev": true - }, - "array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", - "dev": true - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true - }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "before-after-hook": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", - "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "bottleneck": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", - "dev": true - }, - "boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", - "escalade": "^3.1.1", - "node-releases": "^2.0.3", - "picocolors": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==" - }, - "cacache": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.0.tgz", - "integrity": "sha512-Pk4aQkwCW82A4jGKFvcGkQFqZcMspfP9YWq9Pr87/ldDvlWf718zeI6KWCdKt/jeihu6BytHRUicJPB1K2k8EQ==", - "requires": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^1.1.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "requires": { - "minipass": "^3.1.1" - } - } - } - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" - } - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - } - }, - "caniuse-lite": { - "version": "1.0.30001344", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001344.tgz", - "integrity": "sha512-0ZFjnlCaXNOAYcV7i+TtdKBp0L/3XEU2MF/x6Du1lrh+SRX4IfzIVL4HNJg5pB2PmFb8rszIGyOvsZnqqRoc2g==", - "dev": true - }, - "cardinal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", - "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", - "dev": true, - "requires": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - }, - "cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" - }, - "cli-table": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", - "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", - "requires": { - "colors": "1.0.3" - } - }, - "cli-table3": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz", - "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==", - "dev": true, - "requires": { - "@colors/colors": "1.5.0", - "string-width": "^4.2.0" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "optional": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" - }, - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.3.0.tgz", - "integrity": "sha512-hv95iU5uXPbK83mjrJKuZyFM/LBAoCV/XhVGkS5Je6tl7sxr6A0ITMw5WoRV46/UaJ46Nllm3Xt7IaJhXTIkzw==" - }, - "compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dev": true, - "requires": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - } - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" - }, - "conventional-changelog-angular": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", - "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", - "dev": true, - "requires": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - } - }, - "conventional-changelog-writer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", - "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", - "dev": true, - "requires": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" - } - }, - "conventional-commits-filter": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", - "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", - "dev": true, - "requires": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" - } - }, - "conventional-commits-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", - "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", - "dev": true, - "requires": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - } - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "dependencies": { - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - } - } - }, - "cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.1" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true - }, - "decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==", - "dev": true, - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - } - } - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "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==" - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - }, - "del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "dev": true, - "requires": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" - }, - "deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true - }, - "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "requires": { - "is-obj": "^2.0.0" - } - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==" - }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "electron-to-chromium": { - "version": "1.4.141", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.141.tgz", - "integrity": "sha512-mfBcbqc0qc6RlxrsIgLG2wCqkiPAjEezHxGTu7p3dHHFOurH4EjS9rFZndX5axC8264rI1Pcbw8uQP39oZckeA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, - "requires": { - "iconv-lite": "^0.6.2" - } - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "env-ci": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-5.5.0.tgz", - "integrity": "sha512-o0JdWIbOLP+WJKIUt36hz1ImQQFuN92nhsfTkHHap+J8CiI8WgGpH/a9jEGHh4/TU5BUUGjlnKXNoDb57+ne+A==", - "dev": true, - "requires": { - "execa": "^5.0.0", - "fromentries": "^1.3.2", - "java-properties": "^1.0.0" - } - }, - "err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "8.51.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", - "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.51.0", - "@humanwhocodes/config-array": "^0.11.11", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "dependencies": { - "eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, - "requires": {} - }, - "eslint-plugin-prettier": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", - "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-plugin-vue": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz", - "integrity": "sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==", - "dev": true, - "requires": { - "eslint-utils": "^3.0.0", - "natural-compare": "^1.4.0", - "nth-check": "^2.0.1", - "postcss-selector-parser": "^6.0.9", - "semver": "^7.3.5", - "vue-eslint-parser": "^8.0.1" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "requires": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true - } - } - }, - "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 - }, - "esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - } - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "find-versions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", - "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", - "dev": true, - "requires": { - "semver-regex": "^3.1.2" - } - }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", - "dev": true - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "requires": { - "minipass": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - } - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "git-log-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", - "integrity": "sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==", - "dev": true, - "requires": { - "argv-formatter": "~1.0.0", - "spawn-error-forwarder": "~1.0.0", - "split2": "~1.0.0", - "stream-combiner2": "~1.1.1", - "through2": "~2.0.0", - "traverse": "~0.6.6" - }, - "dependencies": { - "split2": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", - "integrity": "sha1-UuLiIdiMdfmnP5BVbiY/+WdysxQ=", - "dev": true, - "requires": { - "through2": "~2.0.0" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "requires": { - "ini": "2.0.0" - }, - "dependencies": { - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" - } - } - }, - "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 - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "dependencies": { - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - } - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, - "has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "hook-std": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-2.0.0.tgz", - "integrity": "sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==", - "dev": true - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - }, - "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", - "requires": { - "ms": "^2.0.0" - } - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", - "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", - "dev": true - }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "into-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz", - "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", - "dev": true, - "requires": { - "from2": "^2.3.0", - "p-is-promise": "^3.0.0" - } - }, - "ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "requires": { - "has": "^1.0.3" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" - }, - "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 - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "requires": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - } - }, - "is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=" - }, - "is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==" - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", - "dev": true, - "requires": { - "text-extensions": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "requires": { - "is-docker": "^2.0.0" - } - }, - "is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "issue-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", - "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", - "dev": true, - "requires": { - "lodash.capitalize": "^4.2.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.uniqby": "^4.7.0" - } - }, - "java-properties": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", - "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" - }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "requires": { - "json-buffer": "3.0.0" - } - }, - "kind-of": { - "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 - }, - "latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "requires": { - "package-json": "^6.3.0" - } - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "libnpmsearch": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/libnpmsearch/-/libnpmsearch-5.0.3.tgz", - "integrity": "sha512-Ofq76qKAPhxbiyzPf/5LPjJln26VTKwU9hIU0ACxQ6tNtBJ1CHmI7iITrdp7vNezhZc0FlkXwrIpqXjhBJZgLQ==", - "requires": { - "npm-registry-fetch": "^13.0.0" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - } - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.capitalize": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", - "integrity": "sha1-+CbJtOKoUR2E46yinbBeGk87cqk=", - "dev": true - }, - "lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=", - "dev": true - }, - "lodash.ismatch": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", - "dev": true - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", - "dev": true - }, - "lodash.uniqby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", - "integrity": "sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=", - "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, - "lru-cache": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", - "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==" - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "requires": { - "semver": "^6.0.0" - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "make-fetch-happen": { - "version": "10.1.6", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.6.tgz", - "integrity": "sha512-/iKDlRQF0fkxyB/w/duW2yRYrGwBcbJjC37ijgi0CmOZ32bzMc86BCSSAHWvuyRFCB408iBPziTSzazBSrKo3w==", - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.1.1", - "ssri": "^9.0.0" - }, - "dependencies": { - "ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "requires": { - "minipass": "^3.1.1" - } - } - } - }, - "map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true - }, - "marked": { - "version": "4.0.16", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.16.tgz", - "integrity": "sha512-wahonIQ5Jnyatt2fn8KqF/nIqZM8mh3oRu2+l5EANGMhu6RFjiSG52QNE2eWzFMI94HqYSgN184NurgNG6CztA==", - "dev": true - }, - "marked-terminal": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-5.1.1.tgz", - "integrity": "sha512-+cKTOx9P4l7HwINYhzbrBSyzgxO2HaHKGZGuB1orZsMIgXYaJyfidT81VXRdpelW/PcHEWxywscePVgI/oUF6g==", - "dev": true, - "requires": { - "ansi-escapes": "^5.0.0", - "cardinal": "^2.1.1", - "chalk": "^5.0.0", - "cli-table3": "^0.6.1", - "node-emoji": "^1.11.0", - "supports-hyperlinks": "^2.2.0" - }, - "dependencies": { - "chalk": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", - "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", - "dev": true - } - } - }, - "meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", - "dev": true, - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "dependencies": { - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true - } - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "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 - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, - "min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - } - }, - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-fetch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", - "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, - "minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", - "requires": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "requires": { - "minipass": "^3.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==" - }, - "mocha": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz", - "integrity": "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==", - "dev": true, - "requires": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "modify-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "nerf-dart": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", - "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=", - "dev": true - }, - "nock": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.2.4.tgz", - "integrity": "sha512-8GPznwxcPNCH/h8B+XZcKjYPXnUV5clOKCjAqyjsiqA++MpNx9E9+t8YPp0MbThO+KauRo7aZJ1WuIZmOrT2Ug==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "json-stringify-safe": "^5.0.1", - "lodash.set": "^4.3.2", - "propagate": "^2.0.0" - } - }, - "node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "dev": true, - "requires": { - "lodash": "^4.17.21" - } - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-releases": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "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 - }, - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true - }, - "npm": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-8.11.0.tgz", - "integrity": "sha512-4qmtwHa28J4SPmwCNoQI07KIF/ljmBhhuqG+xNXsIIRpwdKB5OXkMIGfH6KlThR6kzusxlkgR7t1haFDB88dcQ==", - "dev": true, - "requires": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^5.0.4", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/config": "^4.1.0", - "@npmcli/fs": "^2.1.0", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/package-json": "^2.0.0", - "@npmcli/run-script": "^3.0.1", - "abbrev": "~1.1.1", - "archy": "~1.0.0", - "cacache": "^16.1.0", - "chalk": "^4.1.2", - "chownr": "^2.0.0", - "cli-columns": "^4.0.0", - "cli-table3": "^0.6.2", - "columnify": "^1.6.0", - "fastest-levenshtein": "^1.0.12", - "glob": "^8.0.1", - "graceful-fs": "^4.2.10", - "hosted-git-info": "^5.0.0", - "ini": "^3.0.0", - "init-package-json": "^3.0.2", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^2.3.1", - "libnpmaccess": "^6.0.2", - "libnpmdiff": "^4.0.2", - "libnpmexec": "^4.0.2", - "libnpmfund": "^3.0.1", - "libnpmhook": "^8.0.2", - "libnpmorg": "^4.0.2", - "libnpmpack": "^4.0.2", - "libnpmpublish": "^6.0.2", - "libnpmsearch": "^5.0.2", - "libnpmteam": "^4.0.2", - "libnpmversion": "^3.0.1", - "make-fetch-happen": "^10.1.5", - "minipass": "^3.1.6", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "ms": "^2.1.2", - "node-gyp": "^9.0.0", - "nopt": "^5.0.0", - "npm-audit-report": "^3.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.0.2", - "npm-pick-manifest": "^7.0.1", - "npm-profile": "^6.0.3", - "npm-registry-fetch": "^13.1.1", - "npm-user-validate": "^1.0.1", - "npmlog": "^6.0.2", - "opener": "^1.5.2", - "pacote": "^13.4.1", - "parse-conflict-json": "^2.0.2", - "proc-log": "^2.0.1", - "qrcode-terminal": "^0.12.0", - "read": "~1.0.7", - "read-package-json": "^5.0.1", - "read-package-json-fast": "^2.0.3", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^9.0.1", - "tar": "^6.1.11", - "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", - "treeverse": "^2.0.0", - "validate-npm-package-name": "^4.0.0", - "which": "^2.0.2", - "write-file-atomic": "^4.0.1" - }, - "dependencies": { - "@colors/colors": { - "version": "1.5.0", - "bundled": true, - "dev": true, - "optional": true - }, - "@gar/promisify": { - "version": "1.1.3", - "bundled": true, - "dev": true - }, - "@isaacs/string-locale-compare": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "@npmcli/arborist": { - "version": "5.2.0", - "bundled": true, - "dev": true, - "requires": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/metavuln-calculator": "^3.0.1", - "@npmcli/move-file": "^2.0.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/package-json": "^2.0.0", - "@npmcli/run-script": "^3.0.0", - "bin-links": "^3.0.0", - "cacache": "^16.0.6", - "common-ancestor-path": "^1.0.1", - "json-parse-even-better-errors": "^2.3.1", - "json-stringify-nice": "^1.1.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^5.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.0.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.0", - "npmlog": "^6.0.2", - "pacote": "^13.0.5", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^9.0.0", - "treeverse": "^2.0.0", - "walk-up-path": "^1.0.0" - } - }, - "@npmcli/ci-detect": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "@npmcli/config": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/map-workspaces": "^2.0.2", - "ini": "^3.0.0", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^5.0.0", - "proc-log": "^2.0.0", - "read-package-json-fast": "^2.0.3", - "semver": "^7.3.5", - "walk-up-path": "^1.0.0" - } - }, - "@npmcli/disparity-colors": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^4.3.0" - } - }, - "@npmcli/fs": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - } - }, - "@npmcli/git": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/promise-spawn": "^3.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - } - }, - "@npmcli/installed-package-contents": { - "version": "1.0.7", - "bundled": true, - "dev": true, - "requires": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "@npmcli/map-workspaces": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^8.0.1", - "minimatch": "^5.0.1", - "read-package-json-fast": "^2.0.3" - } - }, - "@npmcli/metavuln-calculator": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "cacache": "^16.0.0", - "json-parse-even-better-errors": "^2.3.1", - "pacote": "^13.0.3", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@npmcli/name-from-folder": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "@npmcli/node-gyp": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "@npmcli/package-json": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.1" - } - }, - "@npmcli/promise-spawn": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "infer-owner": "^1.0.4" - } - }, - "@npmcli/run-script": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3" - } - }, - "@tootallnate/once": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "bundled": true, - "dev": true, - "requires": { - "debug": "4" - } - }, - "agentkeepalive": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - } - }, - "aggregate-error": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ansi-regex": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "bundled": true, - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "aproba": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "archy": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "are-we-there-yet": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "asap": { - "version": "2.0.6", - "bundled": true, - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "bin-links": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "cmd-shim": "^5.0.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^1.0.0", - "read-cmd-shim": "^3.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^4.0.0" - } - }, - "binary-extensions": { - "version": "2.2.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "builtins": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "requires": { - "semver": "^7.0.0" - } - }, - "cacache": { - "version": "16.1.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^1.1.1" - } - }, - "chalk": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chownr": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "cidr-regex": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "requires": { - "ip-regex": "^4.1.0" - } - }, - "clean-stack": { - "version": "2.2.0", - "bundled": true, - "dev": true - }, - "cli-columns": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - } - }, - "cli-table3": { - "version": "0.6.2", - "bundled": true, - "dev": true, - "requires": { - "@colors/colors": "1.5.0", - "string-width": "^4.2.0" - } - }, - "clone": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "cmd-shim": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "mkdirp-infer-owner": "^2.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "bundled": true, - "dev": true - }, - "color-support": { - "version": "1.1.3", - "bundled": true, - "dev": true - }, - "columnify": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "requires": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - } - }, - "common-ancestor-path": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "debug": { - "version": "4.3.4", - "bundled": true, - "dev": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "bundled": true, - "dev": true - } - } - }, - "debuglog": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "defaults": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "depd": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, - "dezalgo": { - "version": "1.0.4", - "bundled": true, - "dev": true, - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "diff": { - "version": "5.0.0", - "bundled": true, - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "bundled": true, - "dev": true - }, - "encoding": { - "version": "0.1.13", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "iconv-lite": "^0.6.2" - } - }, - "env-paths": { - "version": "2.2.1", - "bundled": true, - "dev": true - }, - "err-code": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "fastest-levenshtein": { - "version": "1.0.12", - "bundled": true, - "dev": true - }, - "fs-minipass": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, - "gauge": { - "version": "4.0.4", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - } - }, - "glob": { - "version": "8.0.1", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "bundled": true, - "dev": true - }, - "has": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "hosted-git-info": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - }, - "http-cache-semantics": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "http-proxy-agent": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "humanize-ms": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "requires": { - "ms": "^2.0.0" - } - }, - "iconv-lite": { - "version": "0.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "ignore-walk": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "requires": { - "minimatch": "^5.0.1" - } - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true, - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "dev": true - }, - "ini": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "init-package-json": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "npm-package-arg": "^9.0.1", - "promzard": "^0.3.0", - "read": "^1.0.7", - "read-package-json": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^4.0.0" - } - }, - "ip": { - "version": "1.1.8", - "bundled": true, - "dev": true - }, - "ip-regex": { - "version": "4.3.0", - "bundled": true, - "dev": true - }, - "is-cidr": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "cidr-regex": "^3.1.1" - } - }, - "is-core-module": { - "version": "2.9.0", - "bundled": true, - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "is-lambda": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "bundled": true, - "dev": true - }, - "json-stringify-nice": { - "version": "1.1.4", - "bundled": true, - "dev": true - }, - "jsonparse": { - "version": "1.3.1", - "bundled": true, - "dev": true - }, - "just-diff": { - "version": "5.0.2", - "bundled": true, - "dev": true - }, - "just-diff-apply": { - "version": "5.2.0", - "bundled": true, - "dev": true - }, - "libnpmaccess": { - "version": "6.0.3", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmdiff": { - "version": "4.0.3", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/disparity-colors": "^2.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "binary-extensions": "^2.2.0", - "diff": "^5.0.0", - "minimatch": "^5.0.1", - "npm-package-arg": "^9.0.1", - "pacote": "^13.0.5", - "tar": "^6.1.0" - } - }, - "libnpmexec": { - "version": "4.0.5", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/arborist": "^5.0.0", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/run-script": "^3.0.0", - "chalk": "^4.1.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-package-arg": "^9.0.1", - "npmlog": "^6.0.2", - "pacote": "^13.0.5", - "proc-log": "^2.0.0", - "read": "^1.0.7", - "read-package-json-fast": "^2.0.2", - "walk-up-path": "^1.0.0" - } - }, - "libnpmfund": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/arborist": "^5.0.0" - } - }, - "libnpmhook": { - "version": "8.0.3", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmorg": { - "version": "4.0.3", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmpack": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/run-script": "^3.0.0", - "npm-package-arg": "^9.0.1", - "pacote": "^13.5.0" - } - }, - "libnpmpublish": { - "version": "6.0.4", - "bundled": true, - "dev": true, - "requires": { - "normalize-package-data": "^4.0.0", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0", - "semver": "^7.3.7", - "ssri": "^9.0.0" - } - }, - "libnpmsearch": { - "version": "5.0.3", - "bundled": true, - "dev": true, - "requires": { - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmteam": { - "version": "4.0.3", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - } - }, - "libnpmversion": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/run-script": "^3.0.0", - "json-parse-even-better-errors": "^2.3.1", - "proc-log": "^2.0.0", - "semver": "^7.3.7" - } - }, - "lru-cache": { - "version": "7.9.0", - "bundled": true, - "dev": true - }, - "make-fetch-happen": { - "version": "10.1.5", - "bundled": true, - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.1.1", - "ssri": "^9.0.0" - } - }, - "minimatch": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "3.1.6", - "bundled": true, - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-fetch": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, - "minipass-flush": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-json-stream": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-sized": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "mkdirp-infer-owner": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" - } - }, - "ms": { - "version": "2.1.3", - "bundled": true, - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "bundled": true, - "dev": true - }, - "node-gyp": { - "version": "9.0.0", - "bundled": true, - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.0", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "nopt": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - } - }, - "npm-audit-report": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "chalk": "^4.0.0" - } - }, - "npm-bundled": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-install-checks": { - "version": "5.0.0", - "bundled": true, - "dev": true, - "requires": { - "semver": "^7.1.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "npm-package-arg": { - "version": "9.0.2", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" - } - }, - "npm-packlist": { - "version": "5.1.0", - "bundled": true, - "dev": true, - "requires": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^1.1.2", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-pick-manifest": { - "version": "7.0.1", - "bundled": true, - "dev": true, - "requires": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" - } - }, - "npm-profile": { - "version": "6.0.3", - "bundled": true, - "dev": true, - "requires": { - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0" - } - }, - "npm-registry-fetch": { - "version": "13.1.1", - "bundled": true, - "dev": true, - "requires": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" - } - }, - "npm-user-validate": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "npmlog": { - "version": "6.0.2", - "bundled": true, - "dev": true, - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - } - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "opener": { - "version": "1.5.2", - "bundled": true, - "dev": true - }, - "p-map": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "pacote": { - "version": "13.5.0", - "bundled": true, - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^3.0.1", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11" - } - }, - "parse-conflict-json": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.1", - "just-diff": "^5.0.1", - "just-diff-apply": "^5.2.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "proc-log": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "promise-all-reject-late": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "promise-call-limit": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "promise-retry": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - } - }, - "promzard": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "read": "1" - } - }, - "qrcode-terminal": { - "version": "0.12.0", - "bundled": true, - "dev": true - }, - "read": { - "version": "1.0.7", - "bundled": true, - "dev": true, - "requires": { - "mute-stream": "~0.0.4" - } - }, - "read-cmd-shim": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "read-package-json": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "requires": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "read-package-json-fast": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "readable-stream": { - "version": "3.6.0", - "bundled": true, - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdir-scoped-modules": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, - "retry": { - "version": "0.12.0", - "bundled": true, - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.0", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "safe-buffer": { - "version": "5.2.1", - "bundled": true, - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "7.3.7", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "bundled": true, - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.7", - "bundled": true, - "dev": true - }, - "smart-buffer": { - "version": "4.2.0", - "bundled": true, - "dev": true - }, - "socks": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "requires": { - "ip": "^1.1.5", - "smart-buffer": "^4.2.0" - } - }, - "socks-proxy-agent": { - "version": "6.2.0", - "bundled": true, - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - } - }, - "spdx-correct": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.11", - "bundled": true, - "dev": true - }, - "ssri": { - "version": "9.0.1", - "bundled": true, - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "string_decoder": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-width": { - "version": "4.2.3", - "bundled": true, - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "tar": { - "version": "6.1.11", - "bundled": true, - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "text-table": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, - "tiny-relative-date": { - "version": "1.3.0", - "bundled": true, - "dev": true - }, - "treeverse": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "unique-filename": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "validate-npm-package-name": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtins": "^5.0.0" - } - }, - "walk-up-path": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "wcwidth": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "which": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wide-align": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "write-file-atomic": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - } - }, - "yallist": { - "version": "4.0.0", - "bundled": true, - "dev": true - } - } - }, - "npm-package-arg": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", - "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", - "requires": { - "hosted-git-info": "^2.7.1", - "osenv": "^0.1.5", - "semver": "^5.6.0", - "validate-npm-package-name": "^3.0.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "npm-registry-fetch": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.1.tgz", - "integrity": "sha512-5p8rwe6wQPLJ8dMqeTnA57Dp9Ox6GH9H60xkyJup07FmVlu3Mk7pf/kIIpl9gaN5bM8NM+UUx3emUWvDNTt39w==", - "requires": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" - }, - "dependencies": { - "builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "requires": { - "semver": "^7.0.0" - } - }, - "hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", - "requires": { - "lru-cache": "^7.5.1" - } - }, - "npm-package-arg": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.2.tgz", - "integrity": "sha512-v/miORuX8cndiOheW8p2moNuPJ7QhcFh9WGlTorruG8hXSA23vMTEp5hTCmDxic0nD8KHhj/NQgFuySD3GYY3g==", - "requires": { - "hosted-git-info": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "validate-npm-package-name": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", - "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", - "requires": { - "builtins": "^5.0.0" - } - } - } - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - } - }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "optional": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "optional": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "requires": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, - "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=" - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, - "p-each-series": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", - "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", - "dev": true - }, - "p-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", - "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", - "dev": true, - "requires": { - "p-map": "^2.0.0" - }, - "dependencies": { - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - } - } - }, - "p-is-promise": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", - "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", - "dev": true - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-reduce": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", - "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", - "dev": true - }, - "p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "dev": true, - "requires": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - } - }, - "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 - }, - "package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "requires": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "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=" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "pkg-conf": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", - "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "load-json-file": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } - } - }, - "pkginfo": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", - "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=" - }, - "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, - "prettier": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", - "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", - "dev": true - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, - "proc-log": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", - "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" - }, - "promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "dependencies": { - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" - } - } - }, - "promptly": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/promptly/-/promptly-3.2.0.tgz", - "integrity": "sha512-WnR9obtgW+rG4oUV3hSnNGl1pHm3V1H/qD9iJBumGSmVsSC5HpZOLuu8qdMb6yCItGfT7dcRszejr/5P3i9Pug==", - "requires": { - "read": "^1.0.4" - } - }, - "propagate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", - "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", - "dev": true - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "requires": { - "escape-goat": "^2.0.0" - } - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "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=" - } - } - }, - "read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", - "requires": { - "mute-stream": "~0.0.4" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "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 - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - } - }, - "redeyed": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", - "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=", - "dev": true, - "requires": { - "esprima": "~4.0.0" - } - }, - "registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "requires": { - "rc": "^1.2.8" - } - }, - "registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "requires": { - "rc": "^1.2.8" - } - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "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 - }, - "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "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==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "semantic-release": { - "version": "19.0.3", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-19.0.3.tgz", - "integrity": "sha512-HaFbydST1cDKZHuFZxB8DTrBLJVK/AnDExpK0s3EqLIAAUAHUgnd+VSJCUtTYQKkAkauL8G9CucODrVCc7BuAA==", - "dev": true, - "requires": { - "@semantic-release/commit-analyzer": "^9.0.2", - "@semantic-release/error": "^3.0.0", - "@semantic-release/github": "^8.0.0", - "@semantic-release/npm": "^9.0.0", - "@semantic-release/release-notes-generator": "^10.0.0", - "aggregate-error": "^3.0.0", - "cosmiconfig": "^7.0.0", - "debug": "^4.0.0", - "env-ci": "^5.0.0", - "execa": "^5.0.0", - "figures": "^3.0.0", - "find-versions": "^4.0.0", - "get-stream": "^6.0.0", - "git-log-parser": "^1.2.0", - "hook-std": "^2.0.0", - "hosted-git-info": "^4.0.0", - "lodash": "^4.17.21", - "marked": "^4.0.10", - "marked-terminal": "^5.0.0", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "p-reduce": "^2.0.0", - "read-pkg-up": "^7.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.3.2", - "semver-diff": "^3.1.1", - "signale": "^1.2.1", - "yargs": "^16.2.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "requires": { - "semver": "^6.3.0" - } - }, - "semver-regex": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz", - "integrity": "sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==", - "dev": true - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "should": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/should/-/should-13.2.3.tgz", - "integrity": "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==", - "dev": true, - "requires": { - "should-equal": "^2.0.0", - "should-format": "^3.0.3", - "should-type": "^1.4.0", - "should-type-adaptors": "^1.0.1", - "should-util": "^1.0.0" - } - }, - "should-equal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz", - "integrity": "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==", - "dev": true, - "requires": { - "should-type": "^1.4.0" - } - }, - "should-format": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz", - "integrity": "sha1-m/yPdPo5IFxT04w01xcwPidxJPE=", - "dev": true, - "requires": { - "should-type": "^1.3.0", - "should-type-adaptors": "^1.0.1" - } - }, - "should-type": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", - "integrity": "sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM=", - "dev": true - }, - "should-type-adaptors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz", - "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==", - "dev": true, - "requires": { - "should-type": "^1.3.0", - "should-util": "^1.0.0" - } - }, - "should-util": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz", - "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==", - "dev": true - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "signale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", - "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", - "dev": true, - "requires": { - "chalk": "^2.3.2", - "figures": "^2.0.0", - "pkg-conf": "^2.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" - }, - "smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" - }, - "socks": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", - "requires": { - "ip": "^1.1.5", - "smart-buffer": "^4.2.0" - } - }, - "socks-proxy-agent": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", - "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - } - }, - "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 - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "spawn-error-forwarder": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", - "integrity": "sha1-Gv2Uc46ZmwNG17n8NzvlXgdXcCk=", - "dev": true - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==" - }, - "split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dev": true, - "requires": { - "through": "2" - } - }, - "split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dev": true, - "requires": { - "readable-stream": "^3.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "requires": { - "minipass": "^3.1.1" - } - }, - "stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", - "dev": true, - "requires": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "requires": { - "min-indent": "^1.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", - "dev": true, - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - } - } - }, - "temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "dev": true - }, - "tempy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", - "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", - "dev": true, - "requires": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "dependencies": { - "type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "dev": true - } - } - }, - "test-console": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/test-console/-/test-console-2.0.0.tgz", - "integrity": "sha512-ciILzfCQCny8zy1+HEw2yBLKus7LNMsAHymsp2fhvGTVh5pWE5v2EB7V+5ag3WM9aO2ULtgsXVQePWYE+fb7pA==", - "dev": true - }, - "text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "requires": { - "readable-stream": "3" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "to-fast-properties": { - "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 - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true - }, - "traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", - "dev": true - }, - "trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true - }, - "ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", - "dev": true, - "requires": {} - }, - "ts-mocha": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-10.0.0.tgz", - "integrity": "sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==", - "dev": true, - "requires": { - "ts-node": "7.0.1", - "tsconfig-paths": "^3.5.0" - }, - "dependencies": { - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "ts-node": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", - "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", - "dev": true, - "requires": { - "arrify": "^1.0.0", - "buffer-from": "^1.1.0", - "diff": "^3.1.0", - "make-error": "^1.1.1", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "source-map-support": "^0.5.6", - "yn": "^2.0.0" - } - }, - "yn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", - "dev": true - } - } - }, - "tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", - "dev": true, - "optional": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "optional": true, - "requires": { - "minimist": "^1.2.0" - } - } - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", - "dev": true - }, - "uglify-js": { - "version": "3.15.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.5.tgz", - "integrity": "sha512-hNM5q5GbBRB5xB+PMqVRcgYe4c8jbyZ1pzZhS6jbq54/4F2gFK869ZheiE5A8/t+W5jtTNpWef/5Q9zk639FNQ==", - "dev": true, - "optional": true - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "requires": { - "crypto-random-string": "^2.0.0" - } - }, - "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - }, - "update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", - "requires": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", - "dev": true - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", - "requires": { - "builtins": "^1.0.3" - } - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - } - } - }, - "vue-eslint-parser": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", - "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", - "dev": true, - "requires": { - "debug": "^4.3.2", - "eslint-scope": "^7.0.0", - "eslint-visitor-keys": "^3.1.0", - "espree": "^9.0.0", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.5" - }, - "dependencies": { - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "requires": { - "string-width": "^4.0.0" - } - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yaml": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.1.0.tgz", - "integrity": "sha512-OuAINfTsoJrY5H7CBWnKZhX6nZciXBydrMtTHr1dC4nP40X5jyTIVlogZHxSlVZM8zSgXRfgZGsaHF4+pV+JRw==" - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true - }, - "yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - } - } - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - } } } From 1a360dcf1c4bf7505862258f8487a0b69c300b07 Mon Sep 17 00:00:00 2001 From: Favo Yang Date: Wed, 1 Nov 2023 11:33:57 +0800 Subject: [PATCH 199/201] chore: update .node-version to 16 --- .node-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.node-version b/.node-version index da2d3988..b6a7d89c 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -14 \ No newline at end of file +16 From baa87eb1be643f193d063d8600560377d7d21ef1 Mon Sep 17 00:00:00 2001 From: Favo Yang Date: Wed, 1 Nov 2023 11:41:25 +0800 Subject: [PATCH 200/201] chore: update .npmignore --- .npmignore | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.npmignore b/.npmignore index 1bd26fb4..2d6248b4 100644 --- a/.npmignore +++ b/.npmignore @@ -4,4 +4,12 @@ test/ .vscode/ src/ -!lib/ \ No newline at end of file +!lib/ +.github/ +.idea/ +.nvmrc +.node-version +.releaserc.json +tsconfig.json +*.tgz +*.tar.gz From 4415adae7932ea0fe0fa0d5afe38f7a75d7a9b01 Mon Sep 17 00:00:00 2001 From: Favo Yang Date: Wed, 1 Nov 2023 11:57:18 +0800 Subject: [PATCH 201/201] fix: add the npm clean script to run before build --- package-lock.json | 398 +++++++++++++++++++++++++++++++++++++++++++++- package.json | 6 +- 2 files changed, 398 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index a0bd7284..86dff750 100644 --- a/package-lock.json +++ b/package-lock.json @@ -59,6 +59,7 @@ "mocha": "^10.0.0", "nock": "^13.2.4", "prettier": "^2.6.2", + "rimraf": "^5.0.5", "semantic-release": "^19.0.3", "should": "^13.2.3", "test-console": "^2.0.0", @@ -576,6 +577,102 @@ "version": "2.2.5", "license": "ISC" }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.1.1", "dev": true, @@ -705,6 +802,20 @@ "node": ">=10" } }, + "node_modules/@npmcli/move-file/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@octokit/auth-token": { "version": "2.5.0", "dev": true, @@ -825,6 +936,16 @@ "@octokit/openapi-types": "^11.2.0" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@semantic-release/changelog": { "version": "6.0.1", "dev": true, @@ -2230,6 +2351,59 @@ "node": ">=10" } }, + "node_modules/cacache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/cacache/node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/cacache/node_modules/ssri": { "version": "9.0.1", "license": "ISC", @@ -2824,6 +2998,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/del/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "license": "MIT", @@ -3482,11 +3671,54 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/flatted": { "version": "3.2.5", "dev": true, "license": "ISC" }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/forever-agent": { "version": "0.6.1", "license": "Apache-2.0", @@ -4242,6 +4474,24 @@ "node": ">=10.13" } }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/java-properties": { "version": "1.0.2", "dev": true, @@ -7967,6 +8217,40 @@ "version": "1.0.7", "license": "MIT" }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/path-type": { "version": "4.0.0", "dev": true, @@ -8539,18 +8823,78 @@ } }, "node_modules/rimraf": { - "version": "3.0.2", - "license": "ISC", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "dev": true, "dependencies": { - "glob": "^7.1.3" + "glob": "^10.3.7" }, "bin": { - "rimraf": "bin.js" + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "dev": true, @@ -9069,6 +9413,21 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "license": "MIT", @@ -9079,6 +9438,19 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "3.0.0", "dev": true, @@ -9779,6 +10151,24 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "license": "ISC" diff --git a/package.json b/package.json index 5afc5836..d83098f5 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,8 @@ }, "scripts": { "test": "cross-env NODE_ENV=test ts-mocha test/**/*.ts", - "build": "tsc -p tsconfig.json", + "clean": "rimraf lib", + "build": "npm run clean && tsc -p tsconfig.json", "build:watch": "tsc -w -p tsconfig.json", "semantic-release": "semantic-release" }, @@ -59,6 +60,7 @@ "mocha": "^10.0.0", "nock": "^13.2.4", "prettier": "^2.6.2", + "rimraf": "^5.0.5", "semantic-release": "^19.0.3", "should": "^13.2.3", "test-console": "^2.0.0", @@ -83,4 +85,4 @@ "update-notifier": "^5.1.0", "yaml": "^2.0.1" } -} +} \ No newline at end of file