diff --git a/.eslintrc.json b/.eslintrc.json
index 0510104..87dc3a1 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -1,28 +1,28 @@
{
- "root": true,
- "extends": [
- "eslint:recommended",
- "plugin:editorconfig/all"
- ],
- "parserOptions": {
- "ecmaVersion": 2022,
- "sourceType": "module"
- },
- "env": {
- "node": true,
- "mocha": true,
- "es6": true
- },
- "plugins": [
- "editorconfig"
- ],
- "rules": {
- "curly": "warn",
- "eqeqeq": "warn",
- "no-throw-literal": "warn",
- "sort-imports":"warn"
- },
- "ignorePatterns": [
- "integration"
- ]
-}
+ "root": true,
+ "extends": [
+ "eslint:recommended",
+ "plugin:editorconfig/all"
+ ],
+ "parserOptions": {
+ "ecmaVersion": 2022,
+ "sourceType": "module"
+ },
+ "env": {
+ "node": true,
+ "mocha": true,
+ "es6": true
+ },
+ "plugins": [
+ "editorconfig"
+ ],
+ "rules": {
+ "curly": "warn",
+ "eqeqeq": "warn",
+ "no-throw-literal": "warn",
+ "sort-imports": "warn"
+ },
+ "ignorePatterns": [
+ "integration"
+ ]
+}
\ No newline at end of file
diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
index ebfd3de..7539e69 100644
--- a/.github/workflows/pr.yml
+++ b/.github/workflows/pr.yml
@@ -51,6 +51,9 @@ jobs:
with:
go-version: '1.20.1'
+ - name: Install pnpm
+ run: npm install -g pnpm
+
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
diff --git a/README.md b/README.md
index ad57718..ca357e4 100644
--- a/README.md
+++ b/README.md
@@ -152,6 +152,7 @@ $ exhort-javascript-api component /path/to/pom.xml
- Java - Maven
- JavaScript - Npm
+- JavaScript - pnpm
- Golang - Go Modules
- Python - pip Installer
- Gradle (Groovy and Kotlin DSL) - Gradle Installation
@@ -298,6 +299,7 @@ import fs from 'node:fs'
let options = {
'EXHORT_MVN_PATH': '/path/to/my/mvn',
'EXHORT_NPM_PATH': '/path/to/npm',
+ 'EXHORT_PNPM_PATH': '/path/to/pnpm',
'EXHORT_GO_PATH': '/path/to/go',
//python - python3, pip3 take precedence if python version > 3 installed
'EXHORT_PYTHON3_PATH' : '/path/to/python3',
@@ -343,6 +345,11 @@ following keys for setting custom paths for the said executables.
EXHORT_NPM_PATH |
+PNPM |
+pnpm |
+EXHORT_PNPM_PATH |
+
+
Go Modules |
go |
EXHORT_GO_PATH |
diff --git a/src/provider.js b/src/provider.js
index f14b1e6..fdcbeca 100644
--- a/src/provider.js
+++ b/src/provider.js
@@ -1,19 +1,21 @@
+import path from 'node:path'
+
import golangGomodulesProvider from './providers/golang_gomodules.js'
import Java_gradle_groovy from "./providers/java_gradle_groovy.js";
import Java_gradle_kotlin from "./providers/java_gradle_kotlin.js";
import Java_maven from "./providers/java_maven.js";
-import javascriptNpmProvider from './providers/javascript_npm.js'
-import path from 'node:path'
import pythonPipProvider from './providers/python_pip.js'
+import Javascript_npm from './providers/javascript_npm.js';
+import Javascript_pnpm from './providers/javascript_pnpm.js';
/** @typedef {{ecosystem: string, contentType: string, content: string}} Provided */
-/** @typedef {{isSupported: function(string): boolean, validateLockFile: function(): void, provideComponent: function(string, {}): Provided, provideStack: function(string, {}): Provided}} Provider */
+/** @typedef {{isSupported: function(string): boolean, validateLockFile: function(string): void, provideComponent: function(string, {}): Provided, provideStack: function(string, {}): Provided}} Provider */
/**
* MUST include all providers here.
* @type {[Provider]}
*/
-export const availableProviders = [new Java_maven(), new Java_gradle_groovy(), new Java_gradle_kotlin(), javascriptNpmProvider, golangGomodulesProvider, pythonPipProvider]
+export const availableProviders = [new Java_maven(), new Java_gradle_groovy(), new Java_gradle_kotlin(), new Javascript_npm(), new Javascript_pnpm(), golangGomodulesProvider, pythonPipProvider]
/**
* Match a provider from a list or providers based on file type.
@@ -26,15 +28,14 @@ export const availableProviders = [new Java_maven(), new Java_gradle_groovy(), n
* @throws {Error} when the manifest is not supported and no provider was matched
*/
export function match(manifest, providers) {
- let manifestPath = path.parse(manifest)
- let provider = providers.find(prov => prov.isSupported(manifestPath.base))
- if (!provider) {
+ const manifestPath = path.parse(manifest)
+ const supported = providers.filter(prov => prov.isSupported(manifestPath.base))
+ if (supported.length === 0) {
throw new Error(`${manifestPath.base} is not supported`)
}
-
- if (provider) {
- provider.validateLockFile(manifestPath.dir);
+ const provider = supported.find(prov => prov.validateLockFile(manifestPath.dir))
+ if(!provider) {
+ throw new Error(`${manifestPath.base} requires a lock file. Use your preferred package manager to generate the lock file.`);
}
-
return provider
}
diff --git a/src/providers/base_java.js b/src/providers/base_java.js
index f4fc6c7..51aca71 100644
--- a/src/providers/base_java.js
+++ b/src/providers/base_java.js
@@ -1,4 +1,5 @@
import { PackageURL } from 'packageurl-js'
+
import { invokeCommand } from "../tools.js"
@@ -44,7 +45,7 @@ export default class Base_Java {
let matchedScope = target.match(/:compile|:provided|:runtime|:test|:system|:import/g)
let matchedScopeSrc = src.match(/:compile|:provided|:runtime|:test|:system|:import/g)
// only add dependency to sbom if it's not with test scope or if it's root
- if ((matchedScope && matchedScope[0] !== ":test" && (matchedScopeSrc && matchedScopeSrc[0] !== ":test")) || (srcDepth == 0 && matchedScope && matchedScope[0] !== ":test")) {
+ if ((matchedScope && matchedScope[0] !== ":test" && (matchedScopeSrc && matchedScopeSrc[0] !== ":test")) || (srcDepth === 0 && matchedScope && matchedScope[0] !== ":test")) {
sbom.addDependency(sbom.purlToComponent(from), to)
}
} else {
diff --git a/src/providers/base_javascript.js b/src/providers/base_javascript.js
new file mode 100644
index 0000000..8cc81e4
--- /dev/null
+++ b/src/providers/base_javascript.js
@@ -0,0 +1,212 @@
+import fs from 'node:fs'
+import os from "node:os";
+import path from 'node:path'
+import { PackageURL } from 'packageurl-js'
+
+import { getCustomPath, invokeCommand } from "../tools.js";
+import Sbom from '../sbom.js'
+
+/** @typedef {import('../provider.js').Provider} */
+
+/** @typedef {import('../provider.js').Provided} Provided */
+
+const ecosystem = 'npm'
+const defaultVersion = 'v0.0.0'
+
+export default class Base_javascript {
+
+ // Resolved cmd to use
+ #cmd;
+
+ /**
+ * @returns {string} the name of the lock file name for the specific implementation
+ */
+ _lockFileName() {
+ throw new TypeError("_lockFileName must be implemented");
+ }
+
+ /**
+ * @returns {string} the command name to use for the specific JS package manager
+ */
+ _cmdName() {
+ throw new TypeError("_cmdName must be implemented");
+ }
+
+ /**
+ * @returns {Array}
+ */
+ _listCmdArgs() {
+ throw new TypeError("_listCmdArgs must be implemented");
+ }
+
+ /**
+ * @returns {Array}
+ */
+ _updateLockFileCmdArgs() {
+ throw new TypeError("_updateLockFileCmdArgs must be implemented");
+ }
+
+ /**
+ * @param {string} manifestName - the subject manifest name-type
+ * @returns {boolean} - return true if `pom.xml` is the manifest name-type
+ */
+ isSupported(manifestName) {
+ return 'package.json' === manifestName;
+ }
+
+ /**
+ * Checks if a required lock file exists in the same path as the manifest
+ *
+ * @param {string} manifestDir - The base directory where the manifest is located
+ * @returns {boolean} - True if the lock file exists
+ */
+ validateLockFile(manifestDir) {
+ const lock = path.join(manifestDir, this._lockFileName());
+ return fs.existsSync(lock);
+ }
+
+ /**
+ * Provide content and content type for maven-maven stack analysis.
+ * @param {string} manifest - the manifest path or name
+ * @param {{}} [opts={}] - optional various options to pass along the application
+ * @returns {Provided}
+ */
+ provideStack(manifest, opts = {}) {
+ return {
+ ecosystem,
+ content: this.#getSBOM(manifest, opts, true),
+ contentType: 'application/vnd.cyclonedx+json'
+ }
+ }
+
+ /**
+ * Provide content and content type for maven-maven component analysis.
+ * @param {string} manifest - path to pom.xml for component report
+ * @param {{}} [opts={}] - optional various options to pass along the application
+ * @returns {Provided}
+ */
+ provideComponent(manifest, opts = {}) {
+ return {
+ ecosystem,
+ content: this.#getSBOM(manifest, opts, false),
+ contentType: 'application/vnd.cyclonedx+json'
+ }
+ }
+
+ /**
+ * Utility function for creating Purl String
+ * @param name the name of the artifact, can include a namespace(group) or not - namespace/artifactName.
+ * @param version the version of the artifact
+ * @returns {PackageURL|null} PackageUrl Object ready to be used in SBOM
+ */
+ #toPurl(name, version) {
+ let parts = name.split("/");
+ var purlNs, purlName;
+ if (parts.length === 2) {
+ purlNs = parts[0];
+ purlName = parts[1];
+ } else {
+ purlName = parts[0];
+ }
+ return new PackageURL('npm', purlNs, purlName, version, undefined, undefined);
+ }
+
+ _buildDependencyTree(includeTransitive, manifest) {
+ this.#version();
+ let manifestDir = path.dirname(manifest)
+ this.#createLockFile(manifestDir);
+
+ let npmOutput = this.#executeListCmd(includeTransitive, manifestDir);
+ return JSON.parse(npmOutput);
+ }
+
+ /**
+ * Create SBOM json string for npm Package.
+ * @param {string} manifest - path for package.json
+ * @param {{}} [opts={}] - optional various options to pass along the application
+ * @returns {string} the SBOM json content
+ * @private
+ */
+ #getSBOM(manifest, opts = {}, includeTransitive) {
+ this.#cmd = getCustomPath(this._cmdName(), opts);
+ const depsObject = this._buildDependencyTree(includeTransitive, manifest, opts);
+ let rootName = depsObject["name"]
+ let rootVersion = depsObject["version"]
+ if (!rootVersion) {
+ rootVersion = defaultVersion
+ }
+ let mainComponent = this.#toPurl(rootName, rootVersion);
+
+ let sbom = new Sbom();
+ sbom.addRoot(mainComponent)
+
+ let dependencies = depsObject["dependencies"] || {};
+ this.#addAllDependencies(sbom, sbom.getRoot(), dependencies)
+ let packageJson = fs.readFileSync(manifest).toString()
+ let packageJsonObject = JSON.parse(packageJson);
+ if (packageJsonObject.exhortignore !== undefined) {
+ let ignoredDeps = Array.from(packageJsonObject.exhortignore);
+ sbom.filterIgnoredDeps(ignoredDeps)
+ }
+ return sbom.getAsJsonString(opts)
+ }
+
+ /**
+ * This function recursively build the Sbom from the JSON that npm listing returns
+ * @param sbom this is the sbom object
+ * @param from this is the current component in bom (Should start with root/main component of SBOM) for which we want to add all its dependencies.
+ * @param dependencies the current dependency list (initially it's the list of the root component)
+ * @private
+ */
+ #addAllDependencies(sbom, from, dependencies) {
+ Object.entries(dependencies)
+ .filter(entry => entry[1].version !== undefined)
+ .forEach(entry => {
+ let [name, artifact] = entry;
+ let purl = this.#toPurl(name, artifact.version);
+ sbom.addDependency(from, purl)
+ let transitiveDeps = artifact.dependencies
+ if (transitiveDeps !== undefined) {
+ this.#addAllDependencies(sbom, sbom.purlToComponent(purl), transitiveDeps)
+ }
+ });
+ }
+
+ #executeListCmd(includeTransitive, manifestDir) {
+ const listArgs = this._listCmdArgs(includeTransitive, manifestDir);
+ return this.#invokeCommand(listArgs);
+ }
+
+ #version() {
+ this.#invokeCommand(['--version'], { stdio: 'ignore' });
+ }
+
+ #createLockFile(manifestDir) {
+ // in windows os, --prefix flag doesn't work, it behaves really weird , instead of installing the package.json fromm the prefix folder,
+ // it's installing package.json (placed in current working directory of process) into prefix directory, so
+ let originalDir = process.cwd()
+ if (os.platform() === 'win32') {
+ process.chdir(manifestDir)
+ }
+ const args = this._updateLockFileCmdArgs(manifestDir);
+ try {
+ this.#invokeCommand(args);
+ } finally {
+ if (os.platform() === 'win32') {
+ process.chdir(originalDir)
+ }
+ }
+ }
+
+ #invokeCommand(args, opts = {}) {
+ try {
+ return invokeCommand(this.#cmd, args, opts);
+ } catch (error) {
+ if (error.code === 'ENOENT') {
+ throw new Error(`${this.#cmd} is not accessible`);
+ }
+ throw new Error(`failed to execute ${this.#cmd} ${args}`, { cause: error })
+ }
+ }
+}
+
diff --git a/src/providers/golang_gomodules.js b/src/providers/golang_gomodules.js
index 011a425..570ed70 100644
--- a/src/providers/golang_gomodules.js
+++ b/src/providers/golang_gomodules.js
@@ -32,7 +32,7 @@ function isSupported(manifestName) {
/**
* @param {string} manifestDir - the directory where the manifest lies
*/
-function validateLockFile() {}
+function validateLockFile() { return true; }
/**
* Provide content and content type for maven-maven stack analysis.
diff --git a/src/providers/java_gradle.js b/src/providers/java_gradle.js
index 085e095..5b8e4a6 100644
--- a/src/providers/java_gradle.js
+++ b/src/providers/java_gradle.js
@@ -113,7 +113,7 @@ export default class Java_gradle extends Base_java {
/**
* @param {string} manifestDir - the directory where the manifest lies
*/
- validateLockFile() {}
+ validateLockFile() { return true; }
/**
* Provide content and content type for stack analysis.
@@ -131,10 +131,6 @@ export default class Java_gradle extends Base_java {
}
}
- testMeNow() {
- return {hello: "there"}
- }
-
/**
* Provide content and content type for maven-maven component analysis.
* @param {string} manifest - path to pom.xml for component report
diff --git a/src/providers/java_maven.js b/src/providers/java_maven.js
index 9998d0f..88e6a83 100644
--- a/src/providers/java_maven.js
+++ b/src/providers/java_maven.js
@@ -30,7 +30,7 @@ export default class Java_maven extends Base_java {
/**
* @param {string} manifestDir - the directory where the manifest lies
*/
- validateLockFile() {}
+ validateLockFile() { return true; }
/**
* Provide content and content type for maven-maven stack analysis.
diff --git a/src/providers/javascript_npm.js b/src/providers/javascript_npm.js
index b85fa43..758bf1d 100644
--- a/src/providers/javascript_npm.js
+++ b/src/providers/javascript_npm.js
@@ -1,201 +1,28 @@
-import { execSync } from "node:child_process"
-import fs from 'node:fs'
-import os from "node:os";
-import { getCustomPath, handleSpacesInPath } from "../tools.js";
-import path from 'node:path'
-import Sbom from '../sbom.js'
-import { PackageURL } from 'packageurl-js'
+import Base_javascript from './base_javascript.js';
-export var npmInteractions = {
- listing: function runNpmListing(npmListing) {
- let npmOutput = execSync(npmListing, err => {
- if (err) {
- throw new Error('failed to get npmOutput json from npm')
- }
- });
- return npmOutput;
- },
- version: function checkNpmVersion(npm) {
- execSync(`${handleSpacesInPath(npm)} --version`, err => {
- if (err) {
- throw new Error('npm is not accessible')
- }
- })
- },
- createPackageLock: function createPackageLock(npm, manifestDir) {
- // in windows os, --prefix flag doesn't work, it behaves really weird , instead of installing the package.json fromm the prefix folder,
- // it's installing package.json (placed in current working directory of process) into prefix directory, so
- let originalDir = process.cwd()
- if(os.platform() === 'win32') {
- process.chdir(manifestDir)
- }
- execSync(`${handleSpacesInPath(npm)} i --package-lock-only --prefix ${handleSpacesInPath(manifestDir)}`, err => {
- if (err) {
- throw new Error('failed to create npmOutput list')
- }
- })
- if(os.platform() === 'win32') {
- process.chdir(originalDir)
- }
- }
-}
-export default { isSupported, validateLockFile, provideComponent, provideStack, npmInteractions }
-
-/** @typedef {import('../provider').Provider} */
-
-/** @typedef {import('../provider').Provided} Provided */
-
-/** @typedef {{name: string, version: string}} Package */
-
-/** @typedef {{groupId: string, artifactId: string, version: string, scope: string, ignore: boolean}} Dependency */
-
-/**
- * @type {string} ecosystem for npm-npm is 'maven'
- * @private
- */
-const ecosystem = 'npm'
-const defaultVersion = 'v0.0.0'
-
-/**
- * @param {string} manifestName - the subject manifest name-type
- * @returns {boolean} - return true if `pom.xml` is the manifest name-type
- */
-function isSupported(manifestName) {
- return 'package.json' === manifestName;
-}
-
-/**
- * @param {string} manifestDir - the directory where the manifest lies
- */
-function validateLockFile(manifestDir) {
- const lockFileName = ["package-lock.json"].find(expectedLockFileName => {
- const lock = path.join(manifestDir, expectedLockFileName);
- return fs.existsSync(lock);
- });
- if (!lockFileName) {
- throw new Error("Lock file does not exists or is not supported. Execute ' install' to generate it")
- }
-}
+export default class Javascript_npm extends Base_javascript {
-/**
- * Provide content and content type for maven-maven stack analysis.
- * @param {string} manifest - the manifest path or name
- * @param {{}} [opts={}] - optional various options to pass along the application
- * @returns {Provided}
- */
-function provideStack(manifest, opts = {}) {
- return {
- ecosystem,
- content: getSBOM(manifest, opts, true),
- contentType: 'application/vnd.cyclonedx+json'
+ _lockFileName() {
+ return "package-lock.json";
}
-}
-/**
- * Provide content and content type for maven-maven component analysis.
- * @param {string} manifest - path to pom.xml for component report
- * @param {{}} [opts={}] - optional various options to pass along the application
- * @returns {Provided}
- */
-function provideComponent(manifest, opts = {}) {
- return {
- ecosystem,
- content: getSBOM(manifest, opts,false),
- contentType: 'application/vnd.cyclonedx+json'
+ _cmdName() {
+ return "npm";
}
-}
-
-/**
- *
- * @param {string} npm the npm binary path
- * @param {string }allFilter can be "-all" ( for stack analysis) or empty string ( for component analysis).
- * @param {string} manifestDir path to manifest' directory.
- * @return {string} returns a string containing the result output.
- */
-function getNpmListing(npm, allFilter, manifestDir) {
- return `${handleSpacesInPath(npm)} ls${allFilter} --omit=dev --package-lock-only --json --prefix ${manifestDir}`;
-}
-
-/**
- * Create SBOM json string for npm Package.
- * @param {string} manifest - path for package.json
- * @param {{}} [opts={}] - optional various options to pass along the application
- * @returns {string} the SBOM json content
- * @private
- */
-function getSBOM(manifest, opts = {}, includeTransitive) {
- // get custom npm path
- let npm = getCustomPath('npm', opts)
- // verify npm is accessible
- npmInteractions.version(npm);
- let manifestDir = path.dirname(manifest)
- npmInteractions.createPackageLock(npm, manifestDir);
- let allFilter = includeTransitive? " --all" : ""
- let npmListing = getNpmListing(npm, allFilter, handleSpacesInPath(manifestDir))
- let npmOutput = npmInteractions.listing(npmListing);
- let depsObject = JSON.parse(npmOutput);
- let rootName = depsObject["name"]
- let rootVersion = depsObject["version"]
- if(!rootVersion) {
- rootVersion = defaultVersion
- }
- let mainComponent = toPurl(rootName,rootVersion);
-
- let sbom = new Sbom();
- sbom.addRoot(mainComponent)
- let dependencies = depsObject["dependencies"] || {};
- addAllDependencies(sbom,sbom.getRoot(),dependencies)
- let packageJson = fs.readFileSync(manifest).toString()
- let packageJsonObject = JSON.parse(packageJson);
- if(packageJsonObject.exhortignore !== undefined) {
- let ignoredDeps = Array.from(packageJsonObject.exhortignore);
- sbom.filterIgnoredDeps(ignoredDeps)
+ _listCmdArgs(includeTransitive, manifestDir) {
+ const args = ['ls', includeTransitive ? '--all' : '--depth=0', '--package-lock-only', '--omit=dev', '--json']
+ if (manifestDir) {
+ args.push('--prefix', manifestDir)
+ }
+ return args
}
- return sbom.getAsJsonString(opts)
-}
-/**
- * Utility function for creating Purl String
-
- * @param name the name of the artifact, can include a namespace(group) or not - namespace/artifactName.
- * @param version the version of the artifact
- * @private
- * @returns {PackageURL|null} PackageUrl Object ready to be used in SBOM
- */
-function toPurl(name, version) {
- let parts = name.split("/");
- var pkg
- if(parts.length === 2 )
- {
- pkg = new PackageURL('npm',parts[0],parts[1],version,undefined,undefined);
- }
- else
- {
- pkg = new PackageURL('npm',undefined,parts[0],version,undefined,undefined);
+ _updateLockFileCmdArgs(manifestDir) {
+ const args = ['install', '--package-lock-only']
+ if (manifestDir) {
+ args.push('--dir', manifestDir)
+ }
+ return args;
}
- return pkg
-}
-
-/**
- * This function recursively build the Sbom from the JSON that npm listing returns
- * @param sbom this is the sbom object
- * @param from this is the current component in bom (Should start with root/main component of SBOM) for which we want to add all its dependencies.
- * @param dependencies the current dependency list (initially it's the list of the root component)
- * @private
- */
-function addAllDependencies(sbom, from, dependencies) {
- Object.entries(dependencies)
- .filter(entry => entry[1].version !== undefined)
- .forEach(entry => {
- let name, artifact ;
- [name, artifact] = entry;
- let purl = toPurl(name,artifact.version);
- sbom.addDependency(from,purl)
- let transitiveDeps = artifact.dependencies
- if(transitiveDeps !== undefined)
- {
- addAllDependencies(sbom,sbom.purlToComponent(purl),transitiveDeps)
- }
- });
}
diff --git a/src/providers/javascript_pnpm.js b/src/providers/javascript_pnpm.js
new file mode 100644
index 0000000..ff3c625
--- /dev/null
+++ b/src/providers/javascript_pnpm.js
@@ -0,0 +1,38 @@
+import Base_javascript from './base_javascript.js';
+
+export default class Javascript_pnpm extends Base_javascript {
+
+ _lockFileName() {
+ return "pnpm-lock.yaml";
+ }
+
+ _cmdName() {
+ return "pnpm";
+ }
+
+ _listCmdArgs(includeTransitive, manifestDir) {
+ const args = ['ls', includeTransitive ? '--depth=Infinity' : '--depth=0', '--prod', '--json'];
+ if (manifestDir) {
+ args.push('--dir', manifestDir);
+ }
+ return args;
+ }
+
+ _updateLockFileCmdArgs(manifestDir) {
+ const args = ['install', '--frozen-lockfile'];
+ if (manifestDir) {
+ args.push('--dir', manifestDir)
+ }
+ args.push(...[])
+ return args;
+ }
+
+ _buildDependencyTree(includeTransitive, manifest) {
+ const tree = super._buildDependencyTree(includeTransitive, manifest);
+ if (Array.isArray(tree) && tree.length > 0) {
+ return tree[0];
+ }
+ return {};
+ }
+
+}
diff --git a/src/providers/python_pip.js b/src/providers/python_pip.js
index 8c8d5f0..bf210f1 100644
--- a/src/providers/python_pip.js
+++ b/src/providers/python_pip.js
@@ -35,7 +35,7 @@ function isSupported(manifestName) {
/**
* @param {string} manifestDir - the directory where the manifest lies
*/
-function validateLockFile() {}
+function validateLockFile() { return true; }
/**
* Provide content and content type for python-pip stack analysis.
diff --git a/test/it/end-to-end.js b/test/it/end-to-end.js
index b27685a..0625fbd 100644
--- a/test/it/end-to-end.js
+++ b/test/it/end-to-end.js
@@ -1,12 +1,11 @@
-// import {AnalysisReport} from '../../generated/backend/AnalysisReport.js'
import index from "../../src/index.js"
import { expect } from 'chai'
-// import fs from 'node:fs'
const packageManagersDict =
{
"maven" : "pom.xml",
"npm" : "package.json",
+ "pnpm": "package.json",
"go" : "go.mod",
"pip" : "requirements.txt",
"gradle-groovy" : "build.gradle",
@@ -28,26 +27,17 @@ function extractTotalsGeneralOrFromProvider(providedDataForStack, provider) {
}
suite('Integration Tests', () => {
- // let opts = {
- // EXHORT_DEV_MODE: "true",
- //
- // }
[
"gradle-groovy",
"gradle-kotlin",
"maven",
"npm",
+ "pnpm",
"go",
"pip"
].forEach(packageManager => {
test(`Stack Analysis json for ${packageManager}`, async () => {
- // process.env["EXHORT_DEBUG"]= "true"
- // process.env["EXHORT_DEV_MODE"]= "false"
- // process.env["EXHORT_GO_PATH"]= "/home/zgrinber/test-go/go/bin/go"
- // process.env["RHDA_TOKEN"] = "34JKLDS-4234809-66666666666"
- // process.env["RHDA_SOURCE"] = "Zvika Client"
- // let result = await index.stackAnalysis("/tmp/rajan-0410/go.mod", false, opts);
if(packageManager === "pip") {
process.env["EXHORT_PYTHON_VIRTUAL_ENV"] = "true"
} else {
@@ -60,7 +50,7 @@ suite('Integration Tests', () => {
console.log(JSON.stringify(providedDataForStack,null , 4))
let providers = ["osv"]
providers.forEach(provider => expect(extractTotalsGeneralOrFromProvider(providedDataForStack, provider)).greaterThan(0))
- //TO DO - if sources doesn't exists, add "scanned" instead
+ // TODO: if sources doesn't exist, add "scanned" instead
// python transitive count for stack analysis is awaiting fix in exhort backend
if(packageManager !== "pip") {
expect(providedDataForStack.scanned.transitive).greaterThan(0)
@@ -115,43 +105,3 @@ suite('Integration Tests', () => {
});
}).beforeAll(() => process.env["EXHORT_DEV_MODE"] = "true");
-
-// suite('Integration Tests - Developer Test End to End', () => {
-// let opts = {
-// EXHORT_DEV_MODE: "true",
-//
-// }
-//
-// test(`Stack Analysis json`, async () => {
-// process.env["EXHORT_DEBUG"]= "true"
-// process.env["EXHORT_DEV_MODE"]= "true"
-// // process.env["EXHORT_GO_PATH"]= "/home/zgrinber/test-go/go/bin/go"
-// // process.env["RHDA_TOKEN"] = "34JKLDS-4234809-66666666666"
-// // process.env["RHDA_SOURCE"] = "Zvika Client"
-// // let result = await index.stackAnalysis("/tmp/rajan-0410/go.mod", false, opts);
-// let opts = {
-// MATCH_MANIFEST_VERSIONS: 'false',
-// EXHORT_DEV_MODE: 'true',
-// // EXHORT_OSS_INDEX_TOKEN: '2bb579b7894f13f180f0ebb591be7c8febbcf699',
-// EXHORT_OSS_INDEX_USER: 'zgrinber@redhat.com',
-// EXHORT_GO_MVS_LOGIC_ENABLED: 'true'
-// }
-// process.env["EXHORT_PYTHON_VIRTUAL_ENV"] = "true"
-// process.env["EXHORT_PYTHON_INSTALL_BEST_EFFORTS"] = "true"
-// process.env["MATCH_MANIFEST_VERSIONS"] = "false"
-// // let pomPath = `/tmp/070324/package.json`
-// let pomPath = `/tmp/170324/requirements.txt`
-// // let pomPath = `/home/zgrinber/git/tracing-demos-and-examples/tracing-parent/pom.xml`
-// let providedDataForStack;
-// // providedDataForStack = await index.componentAnalysis("requirements.txt", fs.readFileSync(pomPath).toString(),{},pomPath);
-// providedDataForStack = await index.stackAnalysis(pomPath);
-// // console.log(JSON.stringify(providedDataForStack,null , 4))
-// // fs.writeFileSync(`/tmp/301123/report.html`,providedDataForStack)
-//
-// // expect(providedDataForStack.summary.dependencies.scanned).greaterThan(0)
-// }).timeout(15000);
-//
-//
-//
-//
-// });
diff --git a/test/it/test_manifests/pnpm/package.json b/test/it/test_manifests/pnpm/package.json
new file mode 100644
index 0000000..7e26367
--- /dev/null
+++ b/test/it/test_manifests/pnpm/package.json
@@ -0,0 +1,16 @@
+{
+ "name": "test-app",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "start": "node app.js",
+ "server": "nodemon server.js"
+ },
+ "keywords": [],
+ "license": "ISC",
+ "dependencies": {
+ "@hapi/joi": "^17.1.1",
+ "axios": "^0.19.0"
+ }
+}
diff --git a/test/it/test_manifests/pnpm/pnpm-lock.yaml b/test/it/test_manifests/pnpm/pnpm-lock.yaml
new file mode 100644
index 0000000..a7ac6af
--- /dev/null
+++ b/test/it/test_manifests/pnpm/pnpm-lock.yaml
@@ -0,0 +1,100 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ '@hapi/joi':
+ specifier: ^17.1.1
+ version: 17.1.1
+ axios:
+ specifier: ^0.19.0
+ version: 0.19.2
+
+packages:
+
+ '@hapi/address@4.1.0':
+ resolution: {integrity: sha512-SkszZf13HVgGmChdHo/PxchnSaCJ6cetVqLzyciudzZRT0jcOouIF/Q93mgjw8cce+D+4F4C1Z/WrfFN+O3VHQ==}
+ deprecated: Moved to 'npm install @sideway/address'
+
+ '@hapi/formula@2.0.0':
+ resolution: {integrity: sha512-V87P8fv7PI0LH7LiVi8Lkf3x+KCO7pQozXRssAHNXXL9L1K+uyu4XypLXwxqVDKgyQai6qj3/KteNlrqDx4W5A==}
+ deprecated: Moved to 'npm install @sideway/formula'
+
+ '@hapi/hoek@9.3.0':
+ resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==}
+
+ '@hapi/joi@17.1.1':
+ resolution: {integrity: sha512-p4DKeZAoeZW4g3u7ZeRo+vCDuSDgSvtsB/NpfjXEHTUjSeINAi/RrVOWiVQ1isaoLzMvFEhe8n5065mQq1AdQg==}
+ deprecated: Switch to 'npm install joi'
+
+ '@hapi/pinpoint@2.0.1':
+ resolution: {integrity: sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==}
+
+ '@hapi/topo@5.1.0':
+ resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==}
+
+ axios@0.19.2:
+ resolution: {integrity: sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==}
+ deprecated: Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410
+
+ debug@3.1.0:
+ resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ follow-redirects@1.5.10:
+ resolution: {integrity: sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==}
+ engines: {node: '>=4.0'}
+
+ ms@2.0.0:
+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
+
+snapshots:
+
+ '@hapi/address@4.1.0':
+ dependencies:
+ '@hapi/hoek': 9.3.0
+
+ '@hapi/formula@2.0.0': {}
+
+ '@hapi/hoek@9.3.0': {}
+
+ '@hapi/joi@17.1.1':
+ dependencies:
+ '@hapi/address': 4.1.0
+ '@hapi/formula': 2.0.0
+ '@hapi/hoek': 9.3.0
+ '@hapi/pinpoint': 2.0.1
+ '@hapi/topo': 5.1.0
+
+ '@hapi/pinpoint@2.0.1': {}
+
+ '@hapi/topo@5.1.0':
+ dependencies:
+ '@hapi/hoek': 9.3.0
+
+ axios@0.19.2:
+ dependencies:
+ follow-redirects: 1.5.10
+ transitivePeerDependencies:
+ - supports-color
+
+ debug@3.1.0:
+ dependencies:
+ ms: 2.0.0
+
+ follow-redirects@1.5.10:
+ dependencies:
+ debug: 3.1.0
+ transitivePeerDependencies:
+ - supports-color
+
+ ms@2.0.0: {}
diff --git a/test/provider.test.js b/test/provider.test.js
index 878405a..2f3aac8 100644
--- a/test/provider.test.js
+++ b/test/provider.test.js
@@ -5,7 +5,7 @@ suite('testing the provider utility function', () => {
// create a dummy provider for 'dummy_file.typ'
let dummyProvider = {
isSupported: nameType => 'dummy_file.typ' === nameType,
- validateLockFile: () => {}, // not required for this test
+ validateLockFile: () => {return true;},
provideComponent: () => {}, // not required for this test
provideStack: () => {} // not required for this test
}
diff --git a/test/providers/javascript.test.js b/test/providers/javascript.test.js
new file mode 100644
index 0000000..2561e10
--- /dev/null
+++ b/test/providers/javascript.test.js
@@ -0,0 +1,102 @@
+import { expect } from 'chai'
+import fs from 'fs'
+import sinon from "sinon";
+import { availableProviders, match } from '../../src/provider.js';
+import esmock from 'esmock';
+import { fail } from 'assert';
+
+let clock
+
+async function mockProvider(providerName, listingOutput) {
+
+ const mockInvokeCommand = (_cmd, args) => {
+ if (args.includes('--version')) {return '';}
+ return listingOutput;
+ };
+
+ return esmock(`../../src/providers/javascript_${providerName}.js`, {
+ '../../src/providers/base_javascript.js': await esmock('../../src/providers/base_javascript.js', {
+ '../../src/tools.js': {
+ invokeCommand: mockInvokeCommand
+ }
+ })
+ });
+}
+
+async function createMockProvider(providerName, listingOutput) {
+ switch (providerName) {
+ case 'npm': {
+ const Javascript_npm = await mockProvider(providerName, listingOutput);
+ return new Javascript_npm();
+ }
+ case 'pnpm': {
+ const Javascript_pnpm = await mockProvider(providerName, listingOutput);
+ return new Javascript_pnpm();
+ }
+ default: { fail('Not implemented'); }
+ }
+}
+
+suite('testing the javascript-npm data provider', async () => {
+ [
+ { name: 'npm/with_lock_file', validation: true },
+ { name: 'npm/without_lock_file', validation: false },
+ { name: 'pnpm/with_lock_file', validation: true },
+ { name: 'pnpm/without_lock_file', validation: false },
+ // Once Yarn is supported the expected values can change
+ { name: 'yarn/with_lock_file', validation: false },
+ { name: 'yarn/without_lock_file', validation: false }
+ ].forEach(testCase => {
+ test(`verify isSupported returns ${testCase.expected} for ${testCase.name}`, () => {
+ let manifest = `test/providers/provider_manifests/${testCase.name}/package.json`;
+ try {
+ const provider = match(manifest, availableProviders);
+ expect(provider).not.to.be.null;
+ expect(testCase.validation).to.be.true;
+ } catch (e) {
+ expect(testCase.validation).to.be.false;
+ }
+ })
+ });
+ ['npm', 'pnpm'].flatMap(providerName => [
+ "package_json_deps_without_exhortignore_object",
+ "package_json_deps_with_exhortignore_object"
+ ].map(testCase => ({ providerName, testCase }))).forEach(({ providerName, testCase }) => {
+ let scenario = testCase.replace('package_json_deps_', '').replaceAll('_', ' ')
+ test(`verify package.json data provided for ${providerName} - stack analysis - ${scenario}`, async () => {
+ // load the expected graph for the scenario
+ let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/${providerName}/${testCase}/stack_expected_sbom.json`,).toString();
+ let npmListing = fs.readFileSync(`test/providers/tst_manifests/${providerName}/${testCase}/listing_stack.json`,).toString();
+
+ expectedSbom = JSON.stringify(JSON.parse(expectedSbom))
+ const provider = await createMockProvider(providerName, npmListing);
+ let providedDataForStack = provider.provideStack(`test/providers/tst_manifests/${providerName}/${testCase}/package.json`)
+
+ expect(providedDataForStack).to.deep.equal({
+ ecosystem: 'npm',
+ contentType: 'application/vnd.cyclonedx+json',
+ content: expectedSbom
+ })
+
+ }).timeout(process.env.GITHUB_ACTIONS ? 30000 : 10000);
+ test(`verify package.json data provided for ${providerName} - component analysis - ${scenario}`, async () => {
+ // load the expected list for the scenario
+ let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/${providerName}/${testCase}/component_expected_sbom.json`,).toString().trim()
+ expectedSbom = JSON.stringify(JSON.parse(expectedSbom))
+ let npmListing = fs.readFileSync(`test/providers/tst_manifests/${providerName}/${testCase}/listing_component.json`,).toString()
+
+ // verify returned data matches expectation
+ const provider = await createMockProvider(providerName, npmListing);
+ let providedDataForComponent = provider.provideComponent(`test/providers/tst_manifests/${providerName}/${testCase}/package.json`)
+
+ expect(providedDataForComponent).to.deep.equal({
+ ecosystem: 'npm',
+ contentType: 'application/vnd.cyclonedx+json',
+ content: expectedSbom
+ })
+ }).timeout(process.env.GITHUB_ACTIONS ? 15000 : 10000)
+
+ })
+
+
+}).beforeAll(() => clock = sinon.useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore());
diff --git a/test/providers/javascript_npm.test.js b/test/providers/javascript_npm.test.js
deleted file mode 100644
index 73b9d6d..0000000
--- a/test/providers/javascript_npm.test.js
+++ /dev/null
@@ -1,118 +0,0 @@
-import { expect } from 'chai'
-import fs from 'fs'
-import path from "node:path";
-import sinon from "sinon";
-// import babelCore from 'babel-core'
-import javascriptNpmProvider from "../../src/providers/javascript_npm.js"
-import {rewireProvider} from "./test-utils.js";
-
-let javascriptNpmProviderRewire = await rewireProvider("src/providers/javascript_npm")
-
-let clock
-
-
-// async function rewireProvider()
-// {
-// let jsNpmProvider = fs.readFileSync("src/providers/javascript_npm.js")
-// let javascriptNpmProviderSource = babelCore.transform(jsNpmProvider, {plugins: ["babel-plugin-rewire"]}).code;
-// fs.writeFileSync("src/providers/javascript_npm_rewire.js",javascriptNpmProviderSource)
-// javascriptNpmProviderRewire = await import("../../src/providers/javascript_npm_rewire.js")
-// }
-
-suite('testing the javascript-npm data provider', async() => {
- [
- {name: 'npm/with_lock_file', isSupported: true, lockValidationPass: true},
- {name: 'npm/without_lock_file', isSupported: true, lockValidationPass: false},
- // Once Yarn is supported the expected values can change
- {name: 'yarn/with_lock_file', isSupported: true, lockValidationPass: false},
- {name: 'yarn/without_lock_file', isSupported: true, lockValidationPass: false}
- ].forEach(testCase => {
- test(`verify isSupported returns ${testCase.expected} for ${testCase.name}`, () => {
- let manifestPath = path.parse(`test/providers/provider_manifests/${testCase.name}/package.json`)
- expect(javascriptNpmProvider.isSupported(manifestPath.base)).to.equal(testCase.isSupported)
-
- let validationPassed;
- try {
- javascriptNpmProvider.validateLockFile(manifestPath.dir);
- validationPassed = true;
- } catch (e) {
- validationPassed = false;
- }
- expect(validationPassed).to.equal(testCase.lockValidationPass);
- })
- });
- [
- "package_json_deps_without_exhortignore_object",
- "package_json_deps_with_exhortignore_object"
- ].forEach(testCase => {
- let scenario = testCase.replace('package_json_deps_', '').replaceAll('_', ' ')
- test(`verify package.json data provided for stack analysis with scenario ${scenario}`, async () => {
- // javascriptNpmProviderRewire = await rewireProvider("src/providers/javascript_npm")
- // load the expected graph for the scenario
- let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/npm/${testCase}/stack_expected_sbom.json`,).toString()
- let npmListing = fs.readFileSync(`test/providers/tst_manifests/npm/${testCase}/npm_listing_stack.json`,).toString()
- expectedSbom = JSON.stringify(JSON.parse(expectedSbom))
- let mpmMockedInteractions = {
- listing: () => npmListing,
- version: () => void (0),
- createPackageLock: () => void (0)
- }
- javascriptNpmProviderRewire.__set__('npmInteractions', mpmMockedInteractions)
- // invoke sut stack analysis for scenario manifest
- let providedDataForStack = javascriptNpmProviderRewire.__get__("provideStack")(`test/providers/tst_manifests/npm/${testCase}/package.json`)
- // new(year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): Date
-
- // providedDataForStack.content = providedDataForStack.content.replaceAll("\"timestamp\":\"[a-zA-Z0-9\\-\\:]+\"","")
- // verify returned data matches expectation
- expect(providedDataForStack).to.deep.equal({
- ecosystem: 'npm',
- contentType: 'application/vnd.cyclonedx+json',
- content: expectedSbom
- })
- javascriptNpmProviderRewire.__ResetDependency__()
- // javascriptNpmProviderSource.runNpmListing.restore()
- // these test cases takes ~2500-2700 ms each pr >10000 in CI (for the first test-case)
- }).timeout(process.env.GITHUB_ACTIONS ? 30000 : 10000);
- test(`verify package.json data provided for component analysis with scenario ${scenario}`, async () => {
- // javascriptNpmProviderRewire = await rewireProvider("src/providers/javascript_npm")
- // load the expected list for the scenario
- let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/npm/${testCase}/component_expected_sbom.json`,).toString().trim()
- expectedSbom = JSON.stringify(JSON.parse(expectedSbom))
- let npmListing = fs.readFileSync(`test/providers/tst_manifests/npm/${testCase}/npm_listing_component.json`,).toString()
- // sinon.stub(javascriptNpmProviderSource,'runNpmListing').callsFake(() => npmListing)
- let mpmMockedInteractions = {
- listing: () => npmListing,
- version: () => void (0),
- createPackageLock: () => void (0)
- }
- javascriptNpmProviderRewire.__set__('npmInteractions', mpmMockedInteractions)
- // invoke sut stack analysis for scenario manifest
- let providedDataForStack = await javascriptNpmProviderRewire.__get__("provideComponent")(`test/providers/tst_manifests/npm/${testCase}/package.json`)
- // verify returned data matches expectation
- expect(providedDataForStack).to.deep.equal({
- ecosystem: 'npm',
- contentType: 'application/vnd.cyclonedx+json',
- content: expectedSbom
- })
- javascriptNpmProviderRewire.__ResetDependency__()
- // javascriptNpmProviderSource.runNpmListing.restore()
- // these test cases takes ~1400-2000 ms each pr >10000 in CI (for the first test-case)
- }).timeout(process.env.GITHUB_ACTIONS ? 15000 : 10000)
-
- // test(`check quick integration component analysis ${scenario}`, async () =>{
- // let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/npm/${testCase}/package.json`,).toString().trim()
- // let analysisReport = await exhort.componentAnalysis("package.json", expectedSbom);
- // console.log(analysisReport)
- //
- // }).timeout(process.env.GITHUB_ACTIONS ? 15000 : 5000)
- // test(`check quick integration stack analysis with ${scenario}`, async () =>{
- //
- // let analysisReportJson = await exhort.stackAnalysis(`test/providers/tst_manifests/npm/${testCase}/package.json`,false)
- // console.log(analysisReportJson)
- //
- // }).timeout(process.env.GITHUB_ACTIONS ? 15000 : 5000)
-
- })
-
-
-}).beforeAll(() => clock = sinon.useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(()=> clock.restore());
diff --git a/test/providers/provider_manifests/pnpm/with_lock_file/package.json b/test/providers/provider_manifests/pnpm/with_lock_file/package.json
new file mode 100644
index 0000000..f941d61
--- /dev/null
+++ b/test/providers/provider_manifests/pnpm/with_lock_file/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "test",
+ "version": "1.0.0",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "",
+ "license": "ISC",
+ "description": ""
+}
diff --git a/test/providers/provider_manifests/pnpm/with_lock_file/pnpm-lock.yaml b/test/providers/provider_manifests/pnpm/with_lock_file/pnpm-lock.yaml
new file mode 100644
index 0000000..9b60ae1
--- /dev/null
+++ b/test/providers/provider_manifests/pnpm/with_lock_file/pnpm-lock.yaml
@@ -0,0 +1,9 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .: {}
diff --git a/test/providers/provider_manifests/pnpm/without_lock_file/package.json b/test/providers/provider_manifests/pnpm/without_lock_file/package.json
new file mode 100644
index 0000000..f941d61
--- /dev/null
+++ b/test/providers/provider_manifests/pnpm/without_lock_file/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "test",
+ "version": "1.0.0",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "",
+ "license": "ISC",
+ "description": ""
+}
diff --git a/test/providers/tst_manifests/golang/go_mod_mvs_versions/go.sum b/test/providers/tst_manifests/golang/go_mod_mvs_versions/go.sum
new file mode 100644
index 0000000..cd6d9e6
--- /dev/null
+++ b/test/providers/tst_manifests/golang/go_mod_mvs_versions/go.sum
@@ -0,0 +1,438 @@
+cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
+cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
+cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
+cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
+cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
+cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
+cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
+cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
+cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
+cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
+cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
+cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
+cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
+cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
+cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
+cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
+cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
+cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
+cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
+cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
+cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
+cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
+cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
+cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
+cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
+cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
+cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
+cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
+cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
+cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
+dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
+github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
+github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
+github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
+github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
+github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
+github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
+github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU=
+github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
+github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
+github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
+github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
+github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
+github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo=
+github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
+github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
+github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
+github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
+github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
+github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
+github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
+github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ=
+github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
+github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
+github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
+github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
+github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
+github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
+github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
+github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
+github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
+github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
+github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
+github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
+github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
+github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
+github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
+github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
+go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
+go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
+golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
+golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
+golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
+golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
+golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
+golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
+golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
+golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
+golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
+golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
+golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
+golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
+golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
+golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
+golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
+golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
+golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
+golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
+golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
+golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
+golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
+google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
+google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
+google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
+google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
+google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
+google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
+google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
+google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
+google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
+google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
+google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
+google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
+google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
+google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
+google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
+google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
+google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
+google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
+google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
+google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
+google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
+honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
+honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
+k8s.io/api v0.26.1/go.mod h1:xd/GBNgR0f707+ATNyPmQ1oyKSgndzXij81FzWGsejg=
+k8s.io/apimachinery v0.26.1/go.mod h1:tnPmbONNJ7ByJNz9+n9kMjNP8ON+1qoAIIC70lztu74=
+k8s.io/client-go v0.26.1/go.mod h1:IWNSglg+rQ3OcvDkhY6+QLeasV4OYHDjdqeWkDQZwGE=
+k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
+k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4=
+k8s.io/utils v0.0.0-20221107191617-1a15be271d1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
+rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
+rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
+sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
+sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E=
+sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
diff --git a/test/providers/tst_manifests/npm/package_json_deps_with_exhortignore_object/npm_component_stack.json b/test/providers/tst_manifests/npm/package_json_deps_with_exhortignore_object/component_stack.json
similarity index 100%
rename from test/providers/tst_manifests/npm/package_json_deps_with_exhortignore_object/npm_component_stack.json
rename to test/providers/tst_manifests/npm/package_json_deps_with_exhortignore_object/component_stack.json
diff --git a/test/providers/tst_manifests/npm/package_json_deps_with_exhortignore_object/npm_listing_component.json b/test/providers/tst_manifests/npm/package_json_deps_with_exhortignore_object/listing_component.json
similarity index 100%
rename from test/providers/tst_manifests/npm/package_json_deps_with_exhortignore_object/npm_listing_component.json
rename to test/providers/tst_manifests/npm/package_json_deps_with_exhortignore_object/listing_component.json
diff --git a/test/providers/tst_manifests/npm/package_json_deps_with_exhortignore_object/npm_listing_stack.json b/test/providers/tst_manifests/npm/package_json_deps_with_exhortignore_object/listing_stack.json
similarity index 100%
rename from test/providers/tst_manifests/npm/package_json_deps_with_exhortignore_object/npm_listing_stack.json
rename to test/providers/tst_manifests/npm/package_json_deps_with_exhortignore_object/listing_stack.json
diff --git a/test/providers/tst_manifests/npm/package_json_deps_without_exhortignore_object/.idea/package_json_deps_without_exhortignore_object.iml b/test/providers/tst_manifests/npm/package_json_deps_without_exhortignore_object/.idea/package_json_deps_without_exhortignore_object.iml
deleted file mode 100644
index d6ebd48..0000000
--- a/test/providers/tst_manifests/npm/package_json_deps_without_exhortignore_object/.idea/package_json_deps_without_exhortignore_object.iml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/test/providers/tst_manifests/npm/package_json_deps_without_exhortignore_object/npm_listing_component.json b/test/providers/tst_manifests/npm/package_json_deps_without_exhortignore_object/listing_component.json
similarity index 100%
rename from test/providers/tst_manifests/npm/package_json_deps_without_exhortignore_object/npm_listing_component.json
rename to test/providers/tst_manifests/npm/package_json_deps_without_exhortignore_object/listing_component.json
diff --git a/test/providers/tst_manifests/npm/package_json_deps_without_exhortignore_object/npm_listing_stack.json b/test/providers/tst_manifests/npm/package_json_deps_without_exhortignore_object/listing_stack.json
similarity index 100%
rename from test/providers/tst_manifests/npm/package_json_deps_without_exhortignore_object/npm_listing_stack.json
rename to test/providers/tst_manifests/npm/package_json_deps_without_exhortignore_object/listing_stack.json
diff --git a/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/component_expected_sbom.json b/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/component_expected_sbom.json
new file mode 100644
index 0000000..640c87e
--- /dev/null
+++ b/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/component_expected_sbom.json
@@ -0,0 +1,140 @@
+{
+ "bomFormat": "CycloneDX",
+ "specVersion": "1.4",
+ "version": 1,
+ "metadata": {
+ "timestamp": "2023-08-07T00:00:00.000Z",
+ "component": {
+ "name": "backend",
+ "version": "1.0.0",
+ "purl": "pkg:npm/backend@1.0.0",
+ "type": "application",
+ "bom-ref": "pkg:npm/backend@1.0.0"
+ }
+ },
+ "components": [
+ {
+ "name": "backend",
+ "version": "1.0.0",
+ "purl": "pkg:npm/backend@1.0.0",
+ "type": "application",
+ "bom-ref": "pkg:npm/backend@1.0.0"
+ },
+ {
+ "group": "@hapi",
+ "name": "joi",
+ "version": "17.1.1",
+ "purl": "pkg:npm/%40hapi/joi@17.1.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/%40hapi/joi@17.1.1"
+ },
+ {
+ "name": "axios",
+ "version": "0.19.2",
+ "purl": "pkg:npm/axios@0.19.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/axios@0.19.2"
+ },
+ {
+ "name": "backend",
+ "version": "0.0.0",
+ "purl": "pkg:npm/backend@0.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/backend@0.0.0"
+ },
+ {
+ "name": "bcryptjs",
+ "version": "2.4.3",
+ "purl": "pkg:npm/bcryptjs@2.4.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/bcryptjs@2.4.3"
+ },
+ {
+ "name": "dotenv",
+ "version": "8.6.0",
+ "purl": "pkg:npm/dotenv@8.6.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/dotenv@8.6.0"
+ },
+ {
+ "name": "express",
+ "version": "4.18.2",
+ "purl": "pkg:npm/express@4.18.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/express@4.18.2"
+ },
+ {
+ "name": "jsdom",
+ "version": "19.0.0",
+ "purl": "pkg:npm/jsdom@19.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/jsdom@19.0.0"
+ },
+ {
+ "name": "mongoose",
+ "version": "5.13.20",
+ "purl": "pkg:npm/mongoose@5.13.20",
+ "type": "library",
+ "bom-ref": "pkg:npm/mongoose@5.13.20"
+ },
+ {
+ "name": "nodemon",
+ "version": "2.0.22",
+ "purl": "pkg:npm/nodemon@2.0.22",
+ "type": "library",
+ "bom-ref": "pkg:npm/nodemon@2.0.22"
+ }
+ ],
+ "dependencies": [
+ {
+ "ref": "pkg:npm/backend@1.0.0",
+ "dependsOn": [
+ "pkg:npm/%40hapi/joi@17.1.1",
+ "pkg:npm/axios@0.19.2",
+ "pkg:npm/backend@0.0.0",
+ "pkg:npm/bcryptjs@2.4.3",
+ "pkg:npm/dotenv@8.6.0",
+ "pkg:npm/express@4.18.2",
+ "pkg:npm/jsdom@19.0.0",
+ "pkg:npm/mongoose@5.13.20",
+ "pkg:npm/nodemon@2.0.22"
+ ]
+ },
+ {
+ "ref": "pkg:npm/%40hapi/joi@17.1.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/axios@0.19.2",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/backend@0.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/bcryptjs@2.4.3",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/dotenv@8.6.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/express@4.18.2",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/jsdom@19.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/mongoose@5.13.20",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/nodemon@2.0.22",
+ "dependsOn": []
+ }
+ ]
+}
diff --git a/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/component_stack.json b/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/component_stack.json
new file mode 100644
index 0000000..4586250
--- /dev/null
+++ b/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/component_stack.json
@@ -0,0 +1,56 @@
+{
+ "version": "1.0.0",
+ "name": "backend",
+ "dependencies": {
+ "@hapi/joi": {
+ "version": "17.1.1",
+ "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-17.1.1.tgz",
+ "overridden": false
+ },
+ "axios": {
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
+ "overridden": false
+ },
+ "backend": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/backend/-/backend-0.0.0.tgz",
+ "overridden": false
+ },
+ "bcryptjs": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
+ "overridden": false
+ },
+ "dotenv": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
+ "overridden": false
+ },
+ "express": {
+ "version": "4.18.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
+ "overridden": false
+ },
+ "jsdom": {
+ "version": "19.0.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz",
+ "overridden": false
+ },
+ "jsonwebtoken": {
+ "version": "8.5.1",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
+ "overridden": false
+ },
+ "mongoose": {
+ "version": "5.13.20",
+ "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.13.20.tgz",
+ "overridden": false
+ },
+ "nodemon": {
+ "version": "2.0.22",
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz",
+ "overridden": false
+ }
+ }
+}
diff --git a/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/listing_component.json b/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/listing_component.json
new file mode 100644
index 0000000..6937207
--- /dev/null
+++ b/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/listing_component.json
@@ -0,0 +1,58 @@
+[
+ {
+ "version": "1.0.0",
+ "name": "backend",
+ "dependencies": {
+ "@hapi/joi": {
+ "version": "17.1.1",
+ "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-17.1.1.tgz",
+ "overridden": false
+ },
+ "axios": {
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
+ "overridden": false
+ },
+ "backend": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/backend/-/backend-0.0.0.tgz",
+ "overridden": false
+ },
+ "bcryptjs": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
+ "overridden": false
+ },
+ "dotenv": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
+ "overridden": false
+ },
+ "express": {
+ "version": "4.18.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
+ "overridden": false
+ },
+ "jsdom": {
+ "version": "19.0.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz",
+ "overridden": false
+ },
+ "jsonwebtoken": {
+ "version": "8.5.1",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
+ "overridden": false
+ },
+ "mongoose": {
+ "version": "5.13.20",
+ "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.13.20.tgz",
+ "overridden": false
+ },
+ "nodemon": {
+ "version": "2.0.22",
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz",
+ "overridden": false
+ }
+ }
+ }
+]
\ No newline at end of file
diff --git a/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/listing_stack.json b/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/listing_stack.json
new file mode 100644
index 0000000..66cf3ee
--- /dev/null
+++ b/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/listing_stack.json
@@ -0,0 +1,1435 @@
+[
+ {
+ "version": "1.0.0",
+ "name": "backend",
+ "dependencies": {
+ "@hapi/joi": {
+ "version": "17.1.1",
+ "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-17.1.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "@hapi/address": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@hapi/address/-/address-4.1.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "@hapi/hoek": {
+ "version": "9.3.0"
+ }
+ }
+ },
+ "@hapi/formula": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-2.0.0.tgz",
+ "overridden": false
+ },
+ "@hapi/hoek": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
+ "overridden": false
+ },
+ "@hapi/pinpoint": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.1.tgz",
+ "overridden": false
+ },
+ "@hapi/topo": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "@hapi/hoek": {
+ "version": "9.3.0"
+ }
+ }
+ }
+ }
+ },
+ "axios": {
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
+ "overridden": false,
+ "dependencies": {
+ "follow-redirects": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
+ "overridden": false,
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "backend": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/backend/-/backend-0.0.0.tgz",
+ "overridden": false
+ },
+ "bcryptjs": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
+ "overridden": false
+ },
+ "dotenv": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
+ "overridden": false
+ },
+ "express": {
+ "version": "4.18.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
+ "overridden": false,
+ "dependencies": {
+ "accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "overridden": false,
+ "dependencies": {
+ "mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "overridden": false,
+ "dependencies": {
+ "mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "overridden": false
+ },
+ "body-parser": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "overridden": false
+ },
+ "content-type": {
+ "version": "1.0.5"
+ },
+ "debug": {
+ "version": "2.6.9"
+ },
+ "depd": {
+ "version": "2.0.0"
+ },
+ "destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "overridden": false
+ },
+ "http-errors": {
+ "version": "2.0.0"
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "overridden": false,
+ "dependencies": {
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "on-finished": {
+ "version": "2.4.1"
+ },
+ "qs": {
+ "version": "6.11.0"
+ },
+ "raw-body": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "bytes": {
+ "version": "3.1.2"
+ },
+ "http-errors": {
+ "version": "2.0.0"
+ },
+ "iconv-lite": {
+ "version": "0.4.24"
+ },
+ "unpipe": {
+ "version": "1.0.0"
+ }
+ }
+ },
+ "type-is": {
+ "version": "1.6.18"
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "overridden": false,
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.2.1"
+ }
+ }
+ },
+ "content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "overridden": false
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "overridden": false
+ },
+ "cookie": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "overridden": false
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "overridden": false,
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "overridden": false
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "overridden": false
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "overridden": false
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "overridden": false
+ },
+ "finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9"
+ },
+ "encodeurl": {
+ "version": "1.0.2"
+ },
+ "escape-html": {
+ "version": "1.0.3"
+ },
+ "on-finished": {
+ "version": "2.4.1"
+ },
+ "parseurl": {
+ "version": "1.3.3"
+ },
+ "statuses": {
+ "version": "2.0.1"
+ },
+ "unpipe": {
+ "version": "1.0.0"
+ }
+ }
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "overridden": false
+ },
+ "http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "depd": {
+ "version": "2.0.0"
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "overridden": false
+ },
+ "setprototypeof": {
+ "version": "1.2.0"
+ },
+ "statuses": {
+ "version": "2.0.1"
+ },
+ "toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "overridden": false
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "overridden": false
+ },
+ "on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "overridden": false
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "overridden": false
+ },
+ "proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "overridden": false,
+ "dependencies": {
+ "forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "overridden": false
+ },
+ "ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "overridden": false,
+ "dependencies": {
+ "call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "overridden": false,
+ "dependencies": {
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "overridden": false
+ },
+ "get-intrinsic": {
+ "version": "1.2.1"
+ }
+ }
+ },
+ "get-intrinsic": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "function-bind": {
+ "version": "1.1.1"
+ },
+ "has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "overridden": false
+ },
+ "has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "overridden": false
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "overridden": false,
+ "dependencies": {
+ "function-bind": {
+ "version": "1.1.1"
+ }
+ }
+ }
+ }
+ },
+ "object-inspect": {
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
+ "overridden": false
+ }
+ }
+ }
+ }
+ },
+ "range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "overridden": false
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "overridden": false
+ },
+ "send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9"
+ },
+ "depd": {
+ "version": "2.0.0"
+ },
+ "destroy": {
+ "version": "1.2.0"
+ },
+ "encodeurl": {
+ "version": "1.0.2"
+ },
+ "escape-html": {
+ "version": "1.0.3"
+ },
+ "etag": {
+ "version": "1.8.1"
+ },
+ "fresh": {
+ "version": "0.5.2"
+ },
+ "http-errors": {
+ "version": "2.0.0"
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "overridden": false
+ },
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "overridden": false
+ },
+ "on-finished": {
+ "version": "2.4.1"
+ },
+ "range-parser": {
+ "version": "1.2.1"
+ },
+ "statuses": {
+ "version": "2.0.1"
+ }
+ }
+ },
+ "serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "encodeurl": {
+ "version": "1.0.2"
+ },
+ "escape-html": {
+ "version": "1.0.3"
+ },
+ "parseurl": {
+ "version": "1.3.3"
+ },
+ "send": {
+ "version": "0.18.0"
+ }
+ }
+ },
+ "setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "overridden": false
+ },
+ "statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "overridden": false
+ },
+ "type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "overridden": false,
+ "dependencies": {
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "overridden": false
+ },
+ "mime-types": {
+ "version": "2.1.35"
+ }
+ }
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "overridden": false
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "jsdom": {
+ "version": "19.0.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "abab": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
+ "overridden": false
+ },
+ "acorn-globals": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "acorn-walk": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
+ "overridden": false
+ },
+ "acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "acorn": {
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
+ "overridden": false
+ },
+ "canvas": {},
+ "cssom": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz",
+ "overridden": false
+ },
+ "cssstyle": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "cssom": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "data-urls": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz",
+ "overridden": false,
+ "dependencies": {
+ "abab": {
+ "version": "2.0.6"
+ },
+ "whatwg-mimetype": {
+ "version": "3.0.0"
+ },
+ "whatwg-url": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "tr46": {
+ "version": "3.0.0"
+ },
+ "webidl-conversions": {
+ "version": "7.0.0"
+ }
+ }
+ }
+ }
+ },
+ "decimal.js": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
+ "overridden": false
+ },
+ "domexception": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "webidl-conversions": {
+ "version": "7.0.0"
+ }
+ }
+ },
+ "escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "overridden": false
+ },
+ "estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "overridden": false
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "overridden": false
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "overridden": false
+ },
+ "combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "overridden": false,
+ "dependencies": {
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "mime-types": {
+ "version": "2.1.35"
+ }
+ }
+ },
+ "html-encoding-sniffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "whatwg-encoding": {
+ "version": "2.0.0"
+ }
+ }
+ },
+ "http-proxy-agent": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "@tootallnate/once": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
+ "overridden": false
+ },
+ "agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "overridden": false,
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "overridden": false,
+ "dependencies": {
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "overridden": false
+ }
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "overridden": false,
+ "dependencies": {
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "overridden": false
+ }
+ }
+ }
+ }
+ },
+ "https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "agent-base": {
+ "version": "6.0.2"
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "overridden": false,
+ "dependencies": {
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "overridden": false
+ }
+ }
+ }
+ }
+ },
+ "is-potential-custom-element-name": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+ "overridden": false
+ },
+ "nwsapi": {
+ "version": "2.2.7",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz",
+ "overridden": false
+ },
+ "parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "overridden": false
+ },
+ "saxes": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "xmlchars": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "overridden": false
+ },
+ "tough-cookie": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
+ "overridden": false,
+ "dependencies": {
+ "psl": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
+ "overridden": false
+ },
+ "punycode": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+ "overridden": false
+ },
+ "universalify": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
+ "overridden": false
+ },
+ "url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+ "overridden": false,
+ "dependencies": {
+ "querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+ "overridden": false
+ },
+ "requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "overridden": false
+ }
+ }
+ }
+ }
+ },
+ "w3c-hr-time": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
+ "overridden": false,
+ "dependencies": {
+ "browser-process-hrtime": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "w3c-xmlserializer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "xml-name-validator": {
+ "version": "4.0.0"
+ }
+ }
+ },
+ "webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "overridden": false
+ },
+ "whatwg-encoding": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "overridden": false,
+ "dependencies": {
+ "safer-buffer": {
+ "version": "2.1.2"
+ }
+ }
+ }
+ }
+ },
+ "whatwg-mimetype": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
+ "overridden": false
+ },
+ "whatwg-url": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "tr46": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "punycode": {
+ "version": "2.3.0"
+ }
+ }
+ },
+ "webidl-conversions": {
+ "version": "7.0.0"
+ }
+ }
+ },
+ "ws": {
+ "version": "8.14.2",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz",
+ "overridden": false,
+ "dependencies": {
+ "bufferutil": {},
+ "utf-8-validate": {}
+ }
+ },
+ "xml-name-validator": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "jsonwebtoken": {
+ "version": "8.5.1",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "jws": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
+ "overridden": false,
+ "dependencies": {
+ "jwa": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "overridden": false
+ },
+ "ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "overridden": false,
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.2.1"
+ }
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1"
+ }
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1"
+ }
+ }
+ },
+ "lodash.includes": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
+ "overridden": false
+ },
+ "lodash.isboolean": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
+ "overridden": false
+ },
+ "lodash.isinteger": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
+ "overridden": false
+ },
+ "lodash.isnumber": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
+ "overridden": false
+ },
+ "lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "overridden": false
+ },
+ "lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "overridden": false
+ },
+ "lodash.once": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+ "overridden": false
+ },
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "overridden": false
+ },
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "mongoose": {
+ "version": "5.13.20",
+ "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.13.20.tgz",
+ "overridden": false,
+ "dependencies": {
+ "@types/bson": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.5.tgz",
+ "overridden": false,
+ "dependencies": {
+ "@types/node": {
+ "version": "20.4.8",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.8.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "@types/mongodb": {
+ "version": "3.6.20",
+ "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.20.tgz",
+ "overridden": false,
+ "dependencies": {
+ "@types/bson": {
+ "version": "4.0.5"
+ },
+ "@types/node": {
+ "version": "20.4.8"
+ }
+ }
+ },
+ "bson": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz",
+ "overridden": false
+ },
+ "kareem": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz",
+ "overridden": false
+ },
+ "mongodb": {
+ "version": "3.7.4",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.7.4.tgz",
+ "overridden": false,
+ "dependencies": {
+ "bl": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "overridden": false,
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "overridden": false
+ },
+ "inherits": {
+ "version": "2.0.4"
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "overridden": false
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "overridden": false
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "overridden": false
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1"
+ }
+ }
+ },
+ "bson": {
+ "version": "1.1.6"
+ },
+ "denque": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz",
+ "overridden": false
+ },
+ "optional-require": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.8.tgz",
+ "overridden": false,
+ "dependencies": {
+ "require-at": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1"
+ },
+ "saslprep": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
+ "overridden": false,
+ "dependencies": {
+ "sparse-bitfield": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
+ "overridden": false,
+ "dependencies": {
+ "memory-pager": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
+ "overridden": false
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "mongoose-legacy-pluralize": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz",
+ "overridden": false,
+ "dependencies": {
+ "mongoose": {
+ "version": "5.13.20"
+ }
+ }
+ },
+ "mpath": {
+ "version": "0.8.4",
+ "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.8.4.tgz",
+ "overridden": false
+ },
+ "mquery": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.5.tgz",
+ "overridden": false,
+ "dependencies": {
+ "bluebird": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
+ "overridden": false
+ },
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0"
+ }
+ }
+ },
+ "regexp-clone": {
+ "version": "1.0.0"
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "overridden": false
+ },
+ "sliced": {
+ "version": "1.0.1"
+ }
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "overridden": false
+ },
+ "optional-require": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.0.3.tgz",
+ "overridden": false
+ },
+ "regexp-clone": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz",
+ "overridden": false
+ },
+ "safe-buffer": {
+ "version": "5.2.1"
+ },
+ "sift": {
+ "version": "13.5.2",
+ "resolved": "https://registry.npmjs.org/sift/-/sift-13.5.2.tgz",
+ "overridden": false
+ },
+ "sliced": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "nodemon": {
+ "version": "2.0.22",
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz",
+ "overridden": false,
+ "dependencies": {
+ "chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "overridden": false,
+ "dependencies": {
+ "anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "overridden": false,
+ "dependencies": {
+ "normalize-path": {
+ "version": "3.0.0"
+ },
+ "picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "overridden": false,
+ "dependencies": {
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "overridden": false
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "overridden": false
+ },
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "overridden": false,
+ "dependencies": {
+ "is-glob": {
+ "version": "4.0.3"
+ }
+ }
+ },
+ "is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "overridden": false,
+ "dependencies": {
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "overridden": false
+ },
+ "readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "picomatch": {
+ "version": "2.3.1"
+ }
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "overridden": false,
+ "dependencies": {
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "ignore-by-default": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
+ "overridden": false
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "overridden": false,
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "overridden": false,
+ "dependencies": {
+ "balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "overridden": false
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "overridden": false
+ }
+ }
+ }
+ }
+ },
+ "pstree.remy": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
+ "overridden": false
+ },
+ "semver": {
+ "version": "5.7.2"
+ },
+ "simple-update-notifier": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "semver": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "touch": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "nopt": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+ "overridden": false,
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "overridden": false
+ }
+ }
+ }
+ }
+ },
+ "undefsafe": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
+ "overridden": false
+ }
+ }
+ }
+ }
+ }
+]
\ No newline at end of file
diff --git a/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/package.json b/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/package.json
new file mode 100644
index 0000000..7fabdf5
--- /dev/null
+++ b/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/package.json
@@ -0,0 +1,32 @@
+{
+ "name": "backend",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "start": "node app.js",
+ "server": "nodemon server.js",
+ "client-install": "npm install --prefix ../frontend",
+ "client": "npm start --prefix ../frontend",
+ "dev": "concurrently \"npm run server\" \"npm run client\"",
+ "heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix ../frontend && npm run build --prefix ../frontend"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "@hapi/joi": "^17.1.1",
+ "backend": "^0.0.0",
+ "bcryptjs": "^2.4.3",
+ "dotenv": "^8.2.0",
+ "express": "^4.17.1",
+ "jsonwebtoken": "^8.5.1",
+ "mongoose": "^5.9.18",
+ "nodemon": "^2.0.4",
+ "axios": "^0.19.0",
+ "jsdom": "^19.0.0"
+ },
+ "exhortignore": [
+ "jsonwebtoken"
+ ]
+}
diff --git a/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/pnpm-lock.yaml b/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/pnpm-lock.yaml
new file mode 100644
index 0000000..4a117e1
--- /dev/null
+++ b/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/pnpm-lock.yaml
@@ -0,0 +1,1715 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ '@hapi/joi':
+ specifier: ^17.1.1
+ version: 17.1.1
+ axios:
+ specifier: ^0.19.0
+ version: 0.19.2
+ backend:
+ specifier: ^0.0.0
+ version: 0.0.0
+ bcryptjs:
+ specifier: ^2.4.3
+ version: 2.4.3
+ dotenv:
+ specifier: ^8.2.0
+ version: 8.6.0
+ express:
+ specifier: ^4.17.1
+ version: 4.21.2
+ jsdom:
+ specifier: ^19.0.0
+ version: 19.0.0
+ jsonwebtoken:
+ specifier: ^8.5.1
+ version: 8.5.1
+ mongoose:
+ specifier: ^5.9.18
+ version: 5.13.23
+ nodemon:
+ specifier: ^2.0.4
+ version: 2.0.22
+
+packages:
+
+ '@hapi/address@4.1.0':
+ resolution: {integrity: sha512-SkszZf13HVgGmChdHo/PxchnSaCJ6cetVqLzyciudzZRT0jcOouIF/Q93mgjw8cce+D+4F4C1Z/WrfFN+O3VHQ==}
+ deprecated: Moved to 'npm install @sideway/address'
+
+ '@hapi/formula@2.0.0':
+ resolution: {integrity: sha512-V87P8fv7PI0LH7LiVi8Lkf3x+KCO7pQozXRssAHNXXL9L1K+uyu4XypLXwxqVDKgyQai6qj3/KteNlrqDx4W5A==}
+ deprecated: Moved to 'npm install @sideway/formula'
+
+ '@hapi/hoek@9.3.0':
+ resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==}
+
+ '@hapi/joi@17.1.1':
+ resolution: {integrity: sha512-p4DKeZAoeZW4g3u7ZeRo+vCDuSDgSvtsB/NpfjXEHTUjSeINAi/RrVOWiVQ1isaoLzMvFEhe8n5065mQq1AdQg==}
+ deprecated: Switch to 'npm install joi'
+
+ '@hapi/pinpoint@2.0.1':
+ resolution: {integrity: sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==}
+
+ '@hapi/topo@5.1.0':
+ resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==}
+
+ '@tootallnate/once@2.0.0':
+ resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
+ engines: {node: '>= 10'}
+
+ '@types/bson@4.0.5':
+ resolution: {integrity: sha512-vVLwMUqhYJSQ/WKcE60eFqcyuWse5fGH+NMAXHuKrUAPoryq3ATxk5o4bgYNtg5aOM4APVg7Hnb3ASqUYG0PKg==}
+
+ '@types/mongodb@3.6.20':
+ resolution: {integrity: sha512-WcdpPJCakFzcWWD9juKoZbRtQxKIMYF/JIAM4JrNHrMcnJL6/a2NWjXxW7fo9hxboxxkg+icff8d7+WIEvKgYQ==}
+
+ '@types/node@22.14.1':
+ resolution: {integrity: sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==}
+
+ abab@2.0.6:
+ resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
+ deprecated: Use your platform's native atob() and btoa() methods instead
+
+ accepts@1.3.8:
+ resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
+ engines: {node: '>= 0.6'}
+
+ acorn-globals@6.0.0:
+ resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==}
+
+ acorn-walk@7.2.0:
+ resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==}
+ engines: {node: '>=0.4.0'}
+
+ acorn@7.4.1:
+ resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ acorn@8.14.1:
+ resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ agent-base@6.0.2:
+ resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
+ engines: {node: '>= 6.0.0'}
+
+ anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+
+ array-flatten@1.1.1:
+ resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
+
+ asynckit@0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+
+ axios@0.19.2:
+ resolution: {integrity: sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==}
+ deprecated: Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410
+
+ backend@0.0.0:
+ resolution: {integrity: sha512-Fq2aG5+zmmsKv2Dhm3ijAU5spnKOb5ldJlnnC/Vhk6n8In6zaq9eCPBMRiz2j94P/r84QEaBmtwh9tjaDPiQqg==}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ bcryptjs@2.4.3:
+ resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==}
+
+ binary-extensions@2.3.0:
+ resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
+ engines: {node: '>=8'}
+
+ bl@2.2.1:
+ resolution: {integrity: sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==}
+
+ bluebird@3.5.1:
+ resolution: {integrity: sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==}
+
+ body-parser@1.20.3:
+ resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
+ brace-expansion@1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
+ browser-process-hrtime@1.0.0:
+ resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==}
+
+ bson@1.1.6:
+ resolution: {integrity: sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==}
+ engines: {node: '>=0.6.19'}
+
+ buffer-equal-constant-time@1.0.1:
+ resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==}
+
+ bytes@3.1.2:
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+ engines: {node: '>= 0.8'}
+
+ call-bind-apply-helpers@1.0.2:
+ resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+ engines: {node: '>= 0.4'}
+
+ call-bound@1.0.4:
+ resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
+ engines: {node: '>= 0.4'}
+
+ chokidar@3.6.0:
+ resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+ engines: {node: '>= 8.10.0'}
+
+ combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+
+ concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ content-disposition@0.5.4:
+ resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
+ engines: {node: '>= 0.6'}
+
+ content-type@1.0.5:
+ resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
+ engines: {node: '>= 0.6'}
+
+ cookie-signature@1.0.6:
+ resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
+
+ cookie@0.7.1:
+ resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==}
+ engines: {node: '>= 0.6'}
+
+ core-util-is@1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+
+ cssom@0.3.8:
+ resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==}
+
+ cssom@0.5.0:
+ resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==}
+
+ cssstyle@2.3.0:
+ resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==}
+ engines: {node: '>=8'}
+
+ data-urls@3.0.2:
+ resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==}
+ engines: {node: '>=12'}
+
+ debug@2.6.9:
+ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@3.1.0:
+ resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@3.2.7:
+ resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@4.4.0:
+ resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ decimal.js@10.5.0:
+ resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==}
+
+ delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+
+ denque@1.5.1:
+ resolution: {integrity: sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==}
+ engines: {node: '>=0.10'}
+
+ depd@2.0.0:
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
+
+ destroy@1.2.0:
+ resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
+ domexception@4.0.0:
+ resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==}
+ engines: {node: '>=12'}
+ deprecated: Use your platform's native DOMException instead
+
+ dotenv@8.6.0:
+ resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==}
+ engines: {node: '>=10'}
+
+ dunder-proto@1.0.1:
+ resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+ engines: {node: '>= 0.4'}
+
+ ecdsa-sig-formatter@1.0.11:
+ resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==}
+
+ ee-first@1.1.1:
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+
+ encodeurl@1.0.2:
+ resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
+ engines: {node: '>= 0.8'}
+
+ encodeurl@2.0.0:
+ resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
+ engines: {node: '>= 0.8'}
+
+ es-define-property@1.0.1:
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ es-object-atoms@1.1.1:
+ resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
+ engines: {node: '>= 0.4'}
+
+ es-set-tostringtag@2.1.0:
+ resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
+ engines: {node: '>= 0.4'}
+
+ escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+
+ escodegen@2.1.0:
+ resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==}
+ engines: {node: '>=6.0'}
+ hasBin: true
+
+ esprima@4.0.1:
+ resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ estraverse@5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+
+ esutils@2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+
+ etag@1.8.1:
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
+
+ express@4.21.2:
+ resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==}
+ engines: {node: '>= 0.10.0'}
+
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
+ finalhandler@1.3.1:
+ resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==}
+ engines: {node: '>= 0.8'}
+
+ follow-redirects@1.5.10:
+ resolution: {integrity: sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==}
+ engines: {node: '>=4.0'}
+
+ form-data@4.0.2:
+ resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==}
+ engines: {node: '>= 6'}
+
+ forwarded@0.2.0:
+ resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
+ engines: {node: '>= 0.6'}
+
+ fresh@0.5.2:
+ resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
+ engines: {node: '>= 0.6'}
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ get-intrinsic@1.3.0:
+ resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
+ engines: {node: '>= 0.4'}
+
+ get-proto@1.0.1:
+ resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+ engines: {node: '>= 0.4'}
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
+ gopd@1.2.0:
+ resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+ engines: {node: '>= 0.4'}
+
+ has-flag@3.0.0:
+ resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
+ engines: {node: '>=4'}
+
+ has-symbols@1.1.0:
+ resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
+ engines: {node: '>= 0.4'}
+
+ has-tostringtag@1.0.2:
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
+
+ hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+
+ html-encoding-sniffer@3.0.0:
+ resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==}
+ engines: {node: '>=12'}
+
+ http-errors@2.0.0:
+ resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
+ engines: {node: '>= 0.8'}
+
+ http-proxy-agent@5.0.0:
+ resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==}
+ engines: {node: '>= 6'}
+
+ https-proxy-agent@5.0.1:
+ resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
+ engines: {node: '>= 6'}
+
+ iconv-lite@0.4.24:
+ resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ engines: {node: '>=0.10.0'}
+
+ iconv-lite@0.6.3:
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
+
+ ignore-by-default@1.0.1:
+ resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==}
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ ipaddr.js@1.9.1:
+ resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
+ engines: {node: '>= 0.10'}
+
+ is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ is-potential-custom-element-name@1.0.1:
+ resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
+
+ isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+
+ jsdom@19.0.0:
+ resolution: {integrity: sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ canvas: ^2.5.0
+ peerDependenciesMeta:
+ canvas:
+ optional: true
+
+ jsonwebtoken@8.5.1:
+ resolution: {integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==}
+ engines: {node: '>=4', npm: '>=1.4.28'}
+
+ jwa@1.4.1:
+ resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==}
+
+ jws@3.2.2:
+ resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==}
+
+ kareem@2.3.2:
+ resolution: {integrity: sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==}
+
+ lodash.includes@4.3.0:
+ resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==}
+
+ lodash.isboolean@3.0.3:
+ resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==}
+
+ lodash.isinteger@4.0.4:
+ resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==}
+
+ lodash.isnumber@3.0.3:
+ resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==}
+
+ lodash.isplainobject@4.0.6:
+ resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
+
+ lodash.isstring@4.0.1:
+ resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==}
+
+ lodash.once@4.1.1:
+ resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==}
+
+ math-intrinsics@1.1.0:
+ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+ engines: {node: '>= 0.4'}
+
+ media-typer@0.3.0:
+ resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
+ engines: {node: '>= 0.6'}
+
+ memory-pager@1.5.0:
+ resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==}
+
+ merge-descriptors@1.0.3:
+ resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==}
+
+ methods@1.1.2:
+ resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
+ engines: {node: '>= 0.6'}
+
+ mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+
+ mime@1.6.0:
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+
+ mongodb@3.7.4:
+ resolution: {integrity: sha512-K5q8aBqEXMwWdVNh94UQTwZ6BejVbFhh1uB6c5FKtPE9eUMZPUO3sRZdgIEcHSrAWmxzpG/FeODDKL388sqRmw==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ aws4: '*'
+ bson-ext: '*'
+ kerberos: '*'
+ mongodb-client-encryption: '*'
+ mongodb-extjson: '*'
+ snappy: '*'
+ peerDependenciesMeta:
+ aws4:
+ optional: true
+ bson-ext:
+ optional: true
+ kerberos:
+ optional: true
+ mongodb-client-encryption:
+ optional: true
+ mongodb-extjson:
+ optional: true
+ snappy:
+ optional: true
+
+ mongoose-legacy-pluralize@1.0.2:
+ resolution: {integrity: sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==}
+ peerDependencies:
+ mongoose: '*'
+
+ mongoose@5.13.23:
+ resolution: {integrity: sha512-Q5bo1yYOcH2wbBPP4tGmcY5VKsFkQcjUDh66YjrbneAFB3vNKQwLvteRFLuLiU17rA5SDl3UMcMJLD9VS8ng2Q==}
+ engines: {node: '>=4.0.0'}
+
+ mpath@0.8.4:
+ resolution: {integrity: sha512-DTxNZomBcTWlrMW76jy1wvV37X/cNNxPW1y2Jzd4DZkAaC5ZGsm8bfGfNOthcDuRJujXLqiuS6o3Tpy0JEoh7g==}
+ engines: {node: '>=4.0.0'}
+
+ mquery@3.2.5:
+ resolution: {integrity: sha512-VjOKHHgU84wij7IUoZzFRU07IAxd5kWJaDmyUzQlbjHjyoeK5TNeeo8ZsFDtTYnSgpW6n/nMNIHvE3u8Lbrf4A==}
+ engines: {node: '>=4.0.0'}
+
+ ms@2.0.0:
+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
+
+ ms@2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ negotiator@0.6.3:
+ resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
+ engines: {node: '>= 0.6'}
+
+ nodemon@2.0.22:
+ resolution: {integrity: sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==}
+ engines: {node: '>=8.10.0'}
+ hasBin: true
+
+ normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+
+ nwsapi@2.2.20:
+ resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==}
+
+ object-inspect@1.13.4:
+ resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
+ engines: {node: '>= 0.4'}
+
+ on-finished@2.4.1:
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
+
+ optional-require@1.0.3:
+ resolution: {integrity: sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA==}
+ engines: {node: '>=4'}
+
+ optional-require@1.1.8:
+ resolution: {integrity: sha512-jq83qaUb0wNg9Krv1c5OQ+58EK+vHde6aBPzLvPPqJm89UQWsvSuFy9X/OSNJnFeSOKo7btE0n8Nl2+nE+z5nA==}
+ engines: {node: '>=4'}
+
+ parse5@6.0.1:
+ resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
+
+ parseurl@1.3.3:
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
+
+ path-to-regexp@0.1.12:
+ resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==}
+
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
+ proxy-addr@2.0.7:
+ resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
+ engines: {node: '>= 0.10'}
+
+ psl@1.15.0:
+ resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==}
+
+ pstree.remy@1.1.8:
+ resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==}
+
+ punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
+
+ qs@6.13.0:
+ resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==}
+ engines: {node: '>=0.6'}
+
+ querystringify@2.2.0:
+ resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
+
+ range-parser@1.2.1:
+ resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+ engines: {node: '>= 0.6'}
+
+ raw-body@2.5.2:
+ resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
+ engines: {node: '>= 0.8'}
+
+ readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+
+ readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+
+ regexp-clone@1.0.0:
+ resolution: {integrity: sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==}
+
+ require-at@1.0.6:
+ resolution: {integrity: sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==}
+ engines: {node: '>=4'}
+
+ requires-port@1.0.0:
+ resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
+
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
+ safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
+ safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+
+ saslprep@1.0.3:
+ resolution: {integrity: sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==}
+ engines: {node: '>=6'}
+
+ saxes@5.0.1:
+ resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==}
+ engines: {node: '>=10'}
+
+ semver@5.7.2:
+ resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
+ hasBin: true
+
+ semver@7.0.0:
+ resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==}
+ hasBin: true
+
+ send@0.19.0:
+ resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==}
+ engines: {node: '>= 0.8.0'}
+
+ serve-static@1.16.2:
+ resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==}
+ engines: {node: '>= 0.8.0'}
+
+ setprototypeof@1.2.0:
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+
+ side-channel-list@1.0.0:
+ resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-map@1.0.1:
+ resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-weakmap@1.0.2:
+ resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
+ engines: {node: '>= 0.4'}
+
+ side-channel@1.1.0:
+ resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
+ engines: {node: '>= 0.4'}
+
+ sift@13.5.2:
+ resolution: {integrity: sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==}
+
+ simple-update-notifier@1.1.0:
+ resolution: {integrity: sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==}
+ engines: {node: '>=8.10.0'}
+
+ sliced@1.0.1:
+ resolution: {integrity: sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==}
+
+ source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ sparse-bitfield@3.0.3:
+ resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==}
+
+ statuses@2.0.1:
+ resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
+ engines: {node: '>= 0.8'}
+
+ string_decoder@1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+
+ supports-color@5.5.0:
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
+
+ symbol-tree@3.2.4:
+ resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
+
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+
+ toidentifier@1.0.1:
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+ engines: {node: '>=0.6'}
+
+ touch@3.1.1:
+ resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==}
+ hasBin: true
+
+ tough-cookie@4.1.4:
+ resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==}
+ engines: {node: '>=6'}
+
+ tr46@3.0.0:
+ resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==}
+ engines: {node: '>=12'}
+
+ type-is@1.6.18:
+ resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
+ engines: {node: '>= 0.6'}
+
+ undefsafe@2.0.5:
+ resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==}
+
+ undici-types@6.21.0:
+ resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
+
+ universalify@0.2.0:
+ resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
+ engines: {node: '>= 4.0.0'}
+
+ unpipe@1.0.0:
+ resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+ engines: {node: '>= 0.8'}
+
+ url-parse@1.5.10:
+ resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ utils-merge@1.0.1:
+ resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
+ engines: {node: '>= 0.4.0'}
+
+ vary@1.1.2:
+ resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
+ engines: {node: '>= 0.8'}
+
+ w3c-hr-time@1.0.2:
+ resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==}
+ deprecated: Use your platform's native performance.now() and performance.timeOrigin.
+
+ w3c-xmlserializer@3.0.0:
+ resolution: {integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==}
+ engines: {node: '>=12'}
+
+ webidl-conversions@7.0.0:
+ resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
+ engines: {node: '>=12'}
+
+ whatwg-encoding@2.0.0:
+ resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==}
+ engines: {node: '>=12'}
+
+ whatwg-mimetype@3.0.0:
+ resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==}
+ engines: {node: '>=12'}
+
+ whatwg-url@10.0.0:
+ resolution: {integrity: sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==}
+ engines: {node: '>=12'}
+
+ whatwg-url@11.0.0:
+ resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==}
+ engines: {node: '>=12'}
+
+ ws@8.18.1:
+ resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
+ xml-name-validator@4.0.0:
+ resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
+ engines: {node: '>=12'}
+
+ xmlchars@2.2.0:
+ resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
+
+snapshots:
+
+ '@hapi/address@4.1.0':
+ dependencies:
+ '@hapi/hoek': 9.3.0
+
+ '@hapi/formula@2.0.0': {}
+
+ '@hapi/hoek@9.3.0': {}
+
+ '@hapi/joi@17.1.1':
+ dependencies:
+ '@hapi/address': 4.1.0
+ '@hapi/formula': 2.0.0
+ '@hapi/hoek': 9.3.0
+ '@hapi/pinpoint': 2.0.1
+ '@hapi/topo': 5.1.0
+
+ '@hapi/pinpoint@2.0.1': {}
+
+ '@hapi/topo@5.1.0':
+ dependencies:
+ '@hapi/hoek': 9.3.0
+
+ '@tootallnate/once@2.0.0': {}
+
+ '@types/bson@4.0.5':
+ dependencies:
+ '@types/node': 22.14.1
+
+ '@types/mongodb@3.6.20':
+ dependencies:
+ '@types/bson': 4.0.5
+ '@types/node': 22.14.1
+
+ '@types/node@22.14.1':
+ dependencies:
+ undici-types: 6.21.0
+
+ abab@2.0.6: {}
+
+ accepts@1.3.8:
+ dependencies:
+ mime-types: 2.1.35
+ negotiator: 0.6.3
+
+ acorn-globals@6.0.0:
+ dependencies:
+ acorn: 7.4.1
+ acorn-walk: 7.2.0
+
+ acorn-walk@7.2.0: {}
+
+ acorn@7.4.1: {}
+
+ acorn@8.14.1: {}
+
+ agent-base@6.0.2:
+ dependencies:
+ debug: 4.4.0
+ transitivePeerDependencies:
+ - supports-color
+
+ anymatch@3.1.3:
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+
+ array-flatten@1.1.1: {}
+
+ asynckit@0.4.0: {}
+
+ axios@0.19.2:
+ dependencies:
+ follow-redirects: 1.5.10
+ transitivePeerDependencies:
+ - supports-color
+
+ backend@0.0.0: {}
+
+ balanced-match@1.0.2: {}
+
+ bcryptjs@2.4.3: {}
+
+ binary-extensions@2.3.0: {}
+
+ bl@2.2.1:
+ dependencies:
+ readable-stream: 2.3.8
+ safe-buffer: 5.2.1
+
+ bluebird@3.5.1: {}
+
+ body-parser@1.20.3:
+ dependencies:
+ bytes: 3.1.2
+ content-type: 1.0.5
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ http-errors: 2.0.0
+ iconv-lite: 0.4.24
+ on-finished: 2.4.1
+ qs: 6.13.0
+ raw-body: 2.5.2
+ type-is: 1.6.18
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ brace-expansion@1.1.11:
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
+ browser-process-hrtime@1.0.0: {}
+
+ bson@1.1.6: {}
+
+ buffer-equal-constant-time@1.0.1: {}
+
+ bytes@3.1.2: {}
+
+ call-bind-apply-helpers@1.0.2:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+
+ call-bound@1.0.4:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
+
+ chokidar@3.6.0:
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.3
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ combined-stream@1.0.8:
+ dependencies:
+ delayed-stream: 1.0.0
+
+ concat-map@0.0.1: {}
+
+ content-disposition@0.5.4:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ content-type@1.0.5: {}
+
+ cookie-signature@1.0.6: {}
+
+ cookie@0.7.1: {}
+
+ core-util-is@1.0.3: {}
+
+ cssom@0.3.8: {}
+
+ cssom@0.5.0: {}
+
+ cssstyle@2.3.0:
+ dependencies:
+ cssom: 0.3.8
+
+ data-urls@3.0.2:
+ dependencies:
+ abab: 2.0.6
+ whatwg-mimetype: 3.0.0
+ whatwg-url: 11.0.0
+
+ debug@2.6.9:
+ dependencies:
+ ms: 2.0.0
+
+ debug@3.1.0:
+ dependencies:
+ ms: 2.0.0
+
+ debug@3.2.7(supports-color@5.5.0):
+ dependencies:
+ ms: 2.1.3
+ optionalDependencies:
+ supports-color: 5.5.0
+
+ debug@4.4.0:
+ dependencies:
+ ms: 2.1.3
+
+ decimal.js@10.5.0: {}
+
+ delayed-stream@1.0.0: {}
+
+ denque@1.5.1: {}
+
+ depd@2.0.0: {}
+
+ destroy@1.2.0: {}
+
+ domexception@4.0.0:
+ dependencies:
+ webidl-conversions: 7.0.0
+
+ dotenv@8.6.0: {}
+
+ dunder-proto@1.0.1:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ ecdsa-sig-formatter@1.0.11:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ ee-first@1.1.1: {}
+
+ encodeurl@1.0.2: {}
+
+ encodeurl@2.0.0: {}
+
+ es-define-property@1.0.1: {}
+
+ es-errors@1.3.0: {}
+
+ es-object-atoms@1.1.1:
+ dependencies:
+ es-errors: 1.3.0
+
+ es-set-tostringtag@2.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
+
+ escape-html@1.0.3: {}
+
+ escodegen@2.1.0:
+ dependencies:
+ esprima: 4.0.1
+ estraverse: 5.3.0
+ esutils: 2.0.3
+ optionalDependencies:
+ source-map: 0.6.1
+
+ esprima@4.0.1: {}
+
+ estraverse@5.3.0: {}
+
+ esutils@2.0.3: {}
+
+ etag@1.8.1: {}
+
+ express@4.21.2:
+ dependencies:
+ accepts: 1.3.8
+ array-flatten: 1.1.1
+ body-parser: 1.20.3
+ content-disposition: 0.5.4
+ content-type: 1.0.5
+ cookie: 0.7.1
+ cookie-signature: 1.0.6
+ debug: 2.6.9
+ depd: 2.0.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 1.3.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ merge-descriptors: 1.0.3
+ methods: 1.1.2
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ path-to-regexp: 0.1.12
+ proxy-addr: 2.0.7
+ qs: 6.13.0
+ range-parser: 1.2.1
+ safe-buffer: 5.2.1
+ send: 0.19.0
+ serve-static: 1.16.2
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ type-is: 1.6.18
+ utils-merge: 1.0.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ finalhandler@1.3.1:
+ dependencies:
+ debug: 2.6.9
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ statuses: 2.0.1
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ follow-redirects@1.5.10:
+ dependencies:
+ debug: 3.1.0
+ transitivePeerDependencies:
+ - supports-color
+
+ form-data@4.0.2:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ es-set-tostringtag: 2.1.0
+ mime-types: 2.1.35
+
+ forwarded@0.2.0: {}
+
+ fresh@0.5.2: {}
+
+ fsevents@2.3.3:
+ optional: true
+
+ function-bind@1.1.2: {}
+
+ get-intrinsic@1.3.0:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ math-intrinsics: 1.1.0
+
+ get-proto@1.0.1:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.1
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ gopd@1.2.0: {}
+
+ has-flag@3.0.0: {}
+
+ has-symbols@1.1.0: {}
+
+ has-tostringtag@1.0.2:
+ dependencies:
+ has-symbols: 1.1.0
+
+ hasown@2.0.2:
+ dependencies:
+ function-bind: 1.1.2
+
+ html-encoding-sniffer@3.0.0:
+ dependencies:
+ whatwg-encoding: 2.0.0
+
+ http-errors@2.0.0:
+ dependencies:
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ toidentifier: 1.0.1
+
+ http-proxy-agent@5.0.0:
+ dependencies:
+ '@tootallnate/once': 2.0.0
+ agent-base: 6.0.2
+ debug: 4.4.0
+ transitivePeerDependencies:
+ - supports-color
+
+ https-proxy-agent@5.0.1:
+ dependencies:
+ agent-base: 6.0.2
+ debug: 4.4.0
+ transitivePeerDependencies:
+ - supports-color
+
+ iconv-lite@0.4.24:
+ dependencies:
+ safer-buffer: 2.1.2
+
+ iconv-lite@0.6.3:
+ dependencies:
+ safer-buffer: 2.1.2
+
+ ignore-by-default@1.0.1: {}
+
+ inherits@2.0.4: {}
+
+ ipaddr.js@1.9.1: {}
+
+ is-binary-path@2.1.0:
+ dependencies:
+ binary-extensions: 2.3.0
+
+ is-extglob@2.1.1: {}
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-number@7.0.0: {}
+
+ is-potential-custom-element-name@1.0.1: {}
+
+ isarray@1.0.0: {}
+
+ jsdom@19.0.0:
+ dependencies:
+ abab: 2.0.6
+ acorn: 8.14.1
+ acorn-globals: 6.0.0
+ cssom: 0.5.0
+ cssstyle: 2.3.0
+ data-urls: 3.0.2
+ decimal.js: 10.5.0
+ domexception: 4.0.0
+ escodegen: 2.1.0
+ form-data: 4.0.2
+ html-encoding-sniffer: 3.0.0
+ http-proxy-agent: 5.0.0
+ https-proxy-agent: 5.0.1
+ is-potential-custom-element-name: 1.0.1
+ nwsapi: 2.2.20
+ parse5: 6.0.1
+ saxes: 5.0.1
+ symbol-tree: 3.2.4
+ tough-cookie: 4.1.4
+ w3c-hr-time: 1.0.2
+ w3c-xmlserializer: 3.0.0
+ webidl-conversions: 7.0.0
+ whatwg-encoding: 2.0.0
+ whatwg-mimetype: 3.0.0
+ whatwg-url: 10.0.0
+ ws: 8.18.1
+ xml-name-validator: 4.0.0
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
+ jsonwebtoken@8.5.1:
+ dependencies:
+ jws: 3.2.2
+ lodash.includes: 4.3.0
+ lodash.isboolean: 3.0.3
+ lodash.isinteger: 4.0.4
+ lodash.isnumber: 3.0.3
+ lodash.isplainobject: 4.0.6
+ lodash.isstring: 4.0.1
+ lodash.once: 4.1.1
+ ms: 2.1.3
+ semver: 5.7.2
+
+ jwa@1.4.1:
+ dependencies:
+ buffer-equal-constant-time: 1.0.1
+ ecdsa-sig-formatter: 1.0.11
+ safe-buffer: 5.2.1
+
+ jws@3.2.2:
+ dependencies:
+ jwa: 1.4.1
+ safe-buffer: 5.2.1
+
+ kareem@2.3.2: {}
+
+ lodash.includes@4.3.0: {}
+
+ lodash.isboolean@3.0.3: {}
+
+ lodash.isinteger@4.0.4: {}
+
+ lodash.isnumber@3.0.3: {}
+
+ lodash.isplainobject@4.0.6: {}
+
+ lodash.isstring@4.0.1: {}
+
+ lodash.once@4.1.1: {}
+
+ math-intrinsics@1.1.0: {}
+
+ media-typer@0.3.0: {}
+
+ memory-pager@1.5.0:
+ optional: true
+
+ merge-descriptors@1.0.3: {}
+
+ methods@1.1.2: {}
+
+ mime-db@1.52.0: {}
+
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
+
+ mime@1.6.0: {}
+
+ minimatch@3.1.2:
+ dependencies:
+ brace-expansion: 1.1.11
+
+ mongodb@3.7.4:
+ dependencies:
+ bl: 2.2.1
+ bson: 1.1.6
+ denque: 1.5.1
+ optional-require: 1.1.8
+ safe-buffer: 5.2.1
+ optionalDependencies:
+ saslprep: 1.0.3
+
+ mongoose-legacy-pluralize@1.0.2(mongoose@5.13.23):
+ dependencies:
+ mongoose: 5.13.23
+
+ mongoose@5.13.23:
+ dependencies:
+ '@types/bson': 4.0.5
+ '@types/mongodb': 3.6.20
+ bson: 1.1.6
+ kareem: 2.3.2
+ mongodb: 3.7.4
+ mongoose-legacy-pluralize: 1.0.2(mongoose@5.13.23)
+ mpath: 0.8.4
+ mquery: 3.2.5
+ ms: 2.1.2
+ optional-require: 1.0.3
+ regexp-clone: 1.0.0
+ safe-buffer: 5.2.1
+ sift: 13.5.2
+ sliced: 1.0.1
+ transitivePeerDependencies:
+ - aws4
+ - bson-ext
+ - kerberos
+ - mongodb-client-encryption
+ - mongodb-extjson
+ - snappy
+ - supports-color
+
+ mpath@0.8.4: {}
+
+ mquery@3.2.5:
+ dependencies:
+ bluebird: 3.5.1
+ debug: 3.1.0
+ regexp-clone: 1.0.0
+ safe-buffer: 5.1.2
+ sliced: 1.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ ms@2.0.0: {}
+
+ ms@2.1.2: {}
+
+ ms@2.1.3: {}
+
+ negotiator@0.6.3: {}
+
+ nodemon@2.0.22:
+ dependencies:
+ chokidar: 3.6.0
+ debug: 3.2.7(supports-color@5.5.0)
+ ignore-by-default: 1.0.1
+ minimatch: 3.1.2
+ pstree.remy: 1.1.8
+ semver: 5.7.2
+ simple-update-notifier: 1.1.0
+ supports-color: 5.5.0
+ touch: 3.1.1
+ undefsafe: 2.0.5
+
+ normalize-path@3.0.0: {}
+
+ nwsapi@2.2.20: {}
+
+ object-inspect@1.13.4: {}
+
+ on-finished@2.4.1:
+ dependencies:
+ ee-first: 1.1.1
+
+ optional-require@1.0.3: {}
+
+ optional-require@1.1.8:
+ dependencies:
+ require-at: 1.0.6
+
+ parse5@6.0.1: {}
+
+ parseurl@1.3.3: {}
+
+ path-to-regexp@0.1.12: {}
+
+ picomatch@2.3.1: {}
+
+ process-nextick-args@2.0.1: {}
+
+ proxy-addr@2.0.7:
+ dependencies:
+ forwarded: 0.2.0
+ ipaddr.js: 1.9.1
+
+ psl@1.15.0:
+ dependencies:
+ punycode: 2.3.1
+
+ pstree.remy@1.1.8: {}
+
+ punycode@2.3.1: {}
+
+ qs@6.13.0:
+ dependencies:
+ side-channel: 1.1.0
+
+ querystringify@2.2.0: {}
+
+ range-parser@1.2.1: {}
+
+ raw-body@2.5.2:
+ dependencies:
+ bytes: 3.1.2
+ http-errors: 2.0.0
+ iconv-lite: 0.4.24
+ unpipe: 1.0.0
+
+ readable-stream@2.3.8:
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+
+ readdirp@3.6.0:
+ dependencies:
+ picomatch: 2.3.1
+
+ regexp-clone@1.0.0: {}
+
+ require-at@1.0.6: {}
+
+ requires-port@1.0.0: {}
+
+ safe-buffer@5.1.2: {}
+
+ safe-buffer@5.2.1: {}
+
+ safer-buffer@2.1.2: {}
+
+ saslprep@1.0.3:
+ dependencies:
+ sparse-bitfield: 3.0.3
+ optional: true
+
+ saxes@5.0.1:
+ dependencies:
+ xmlchars: 2.2.0
+
+ semver@5.7.2: {}
+
+ semver@7.0.0: {}
+
+ send@0.19.0:
+ dependencies:
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ mime: 1.6.0
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ serve-static@1.16.2:
+ dependencies:
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 0.19.0
+ transitivePeerDependencies:
+ - supports-color
+
+ setprototypeof@1.2.0: {}
+
+ side-channel-list@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-map@1.0.1:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-weakmap@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-map: 1.0.1
+
+ side-channel@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-list: 1.0.0
+ side-channel-map: 1.0.1
+ side-channel-weakmap: 1.0.2
+
+ sift@13.5.2: {}
+
+ simple-update-notifier@1.1.0:
+ dependencies:
+ semver: 7.0.0
+
+ sliced@1.0.1: {}
+
+ source-map@0.6.1:
+ optional: true
+
+ sparse-bitfield@3.0.3:
+ dependencies:
+ memory-pager: 1.5.0
+ optional: true
+
+ statuses@2.0.1: {}
+
+ string_decoder@1.1.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
+ supports-color@5.5.0:
+ dependencies:
+ has-flag: 3.0.0
+
+ symbol-tree@3.2.4: {}
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ toidentifier@1.0.1: {}
+
+ touch@3.1.1: {}
+
+ tough-cookie@4.1.4:
+ dependencies:
+ psl: 1.15.0
+ punycode: 2.3.1
+ universalify: 0.2.0
+ url-parse: 1.5.10
+
+ tr46@3.0.0:
+ dependencies:
+ punycode: 2.3.1
+
+ type-is@1.6.18:
+ dependencies:
+ media-typer: 0.3.0
+ mime-types: 2.1.35
+
+ undefsafe@2.0.5: {}
+
+ undici-types@6.21.0: {}
+
+ universalify@0.2.0: {}
+
+ unpipe@1.0.0: {}
+
+ url-parse@1.5.10:
+ dependencies:
+ querystringify: 2.2.0
+ requires-port: 1.0.0
+
+ util-deprecate@1.0.2: {}
+
+ utils-merge@1.0.1: {}
+
+ vary@1.1.2: {}
+
+ w3c-hr-time@1.0.2:
+ dependencies:
+ browser-process-hrtime: 1.0.0
+
+ w3c-xmlserializer@3.0.0:
+ dependencies:
+ xml-name-validator: 4.0.0
+
+ webidl-conversions@7.0.0: {}
+
+ whatwg-encoding@2.0.0:
+ dependencies:
+ iconv-lite: 0.6.3
+
+ whatwg-mimetype@3.0.0: {}
+
+ whatwg-url@10.0.0:
+ dependencies:
+ tr46: 3.0.0
+ webidl-conversions: 7.0.0
+
+ whatwg-url@11.0.0:
+ dependencies:
+ tr46: 3.0.0
+ webidl-conversions: 7.0.0
+
+ ws@8.18.1: {}
+
+ xml-name-validator@4.0.0: {}
+
+ xmlchars@2.2.0: {}
diff --git a/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/stack_expected_sbom.json b/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/stack_expected_sbom.json
new file mode 100644
index 0000000..5cbb1ca
--- /dev/null
+++ b/test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/stack_expected_sbom.json
@@ -0,0 +1,2533 @@
+{
+ "bomFormat": "CycloneDX",
+ "specVersion": "1.4",
+ "version": 1,
+ "metadata": {
+ "timestamp": "2023-08-07T00:00:00.000Z",
+ "component": {
+ "name": "backend",
+ "version": "1.0.0",
+ "purl": "pkg:npm/backend@1.0.0",
+ "type": "application",
+ "bom-ref": "pkg:npm/backend@1.0.0"
+ }
+ },
+ "components": [
+ {
+ "name": "backend",
+ "version": "1.0.0",
+ "purl": "pkg:npm/backend@1.0.0",
+ "type": "application",
+ "bom-ref": "pkg:npm/backend@1.0.0"
+ },
+ {
+ "group": "@hapi",
+ "name": "joi",
+ "version": "17.1.1",
+ "purl": "pkg:npm/%40hapi/joi@17.1.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/%40hapi/joi@17.1.1"
+ },
+ {
+ "group": "@hapi",
+ "name": "address",
+ "version": "4.1.0",
+ "purl": "pkg:npm/%40hapi/address@4.1.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/%40hapi/address@4.1.0"
+ },
+ {
+ "group": "@hapi",
+ "name": "hoek",
+ "version": "9.3.0",
+ "purl": "pkg:npm/%40hapi/hoek@9.3.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/%40hapi/hoek@9.3.0"
+ },
+ {
+ "group": "@hapi",
+ "name": "formula",
+ "version": "2.0.0",
+ "purl": "pkg:npm/%40hapi/formula@2.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/%40hapi/formula@2.0.0"
+ },
+ {
+ "group": "@hapi",
+ "name": "pinpoint",
+ "version": "2.0.1",
+ "purl": "pkg:npm/%40hapi/pinpoint@2.0.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/%40hapi/pinpoint@2.0.1"
+ },
+ {
+ "group": "@hapi",
+ "name": "topo",
+ "version": "5.1.0",
+ "purl": "pkg:npm/%40hapi/topo@5.1.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/%40hapi/topo@5.1.0"
+ },
+ {
+ "name": "axios",
+ "version": "0.19.2",
+ "purl": "pkg:npm/axios@0.19.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/axios@0.19.2"
+ },
+ {
+ "name": "follow-redirects",
+ "version": "1.5.10",
+ "purl": "pkg:npm/follow-redirects@1.5.10",
+ "type": "library",
+ "bom-ref": "pkg:npm/follow-redirects@1.5.10"
+ },
+ {
+ "name": "debug",
+ "version": "3.1.0",
+ "purl": "pkg:npm/debug@3.1.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/debug@3.1.0"
+ },
+ {
+ "name": "ms",
+ "version": "2.0.0",
+ "purl": "pkg:npm/ms@2.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/ms@2.0.0"
+ },
+ {
+ "name": "backend",
+ "version": "0.0.0",
+ "purl": "pkg:npm/backend@0.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/backend@0.0.0"
+ },
+ {
+ "name": "bcryptjs",
+ "version": "2.4.3",
+ "purl": "pkg:npm/bcryptjs@2.4.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/bcryptjs@2.4.3"
+ },
+ {
+ "name": "dotenv",
+ "version": "8.6.0",
+ "purl": "pkg:npm/dotenv@8.6.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/dotenv@8.6.0"
+ },
+ {
+ "name": "express",
+ "version": "4.18.2",
+ "purl": "pkg:npm/express@4.18.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/express@4.18.2"
+ },
+ {
+ "name": "accepts",
+ "version": "1.3.8",
+ "purl": "pkg:npm/accepts@1.3.8",
+ "type": "library",
+ "bom-ref": "pkg:npm/accepts@1.3.8"
+ },
+ {
+ "name": "mime-types",
+ "version": "2.1.35",
+ "purl": "pkg:npm/mime-types@2.1.35",
+ "type": "library",
+ "bom-ref": "pkg:npm/mime-types@2.1.35"
+ },
+ {
+ "name": "mime-db",
+ "version": "1.52.0",
+ "purl": "pkg:npm/mime-db@1.52.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/mime-db@1.52.0"
+ },
+ {
+ "name": "negotiator",
+ "version": "0.6.3",
+ "purl": "pkg:npm/negotiator@0.6.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/negotiator@0.6.3"
+ },
+ {
+ "name": "array-flatten",
+ "version": "1.1.1",
+ "purl": "pkg:npm/array-flatten@1.1.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/array-flatten@1.1.1"
+ },
+ {
+ "name": "body-parser",
+ "version": "1.20.1",
+ "purl": "pkg:npm/body-parser@1.20.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/body-parser@1.20.1"
+ },
+ {
+ "name": "bytes",
+ "version": "3.1.2",
+ "purl": "pkg:npm/bytes@3.1.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/bytes@3.1.2"
+ },
+ {
+ "name": "content-type",
+ "version": "1.0.5",
+ "purl": "pkg:npm/content-type@1.0.5",
+ "type": "library",
+ "bom-ref": "pkg:npm/content-type@1.0.5"
+ },
+ {
+ "name": "debug",
+ "version": "2.6.9",
+ "purl": "pkg:npm/debug@2.6.9",
+ "type": "library",
+ "bom-ref": "pkg:npm/debug@2.6.9"
+ },
+ {
+ "name": "depd",
+ "version": "2.0.0",
+ "purl": "pkg:npm/depd@2.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/depd@2.0.0"
+ },
+ {
+ "name": "destroy",
+ "version": "1.2.0",
+ "purl": "pkg:npm/destroy@1.2.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/destroy@1.2.0"
+ },
+ {
+ "name": "http-errors",
+ "version": "2.0.0",
+ "purl": "pkg:npm/http-errors@2.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/http-errors@2.0.0"
+ },
+ {
+ "name": "iconv-lite",
+ "version": "0.4.24",
+ "purl": "pkg:npm/iconv-lite@0.4.24",
+ "type": "library",
+ "bom-ref": "pkg:npm/iconv-lite@0.4.24"
+ },
+ {
+ "name": "safer-buffer",
+ "version": "2.1.2",
+ "purl": "pkg:npm/safer-buffer@2.1.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/safer-buffer@2.1.2"
+ },
+ {
+ "name": "on-finished",
+ "version": "2.4.1",
+ "purl": "pkg:npm/on-finished@2.4.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/on-finished@2.4.1"
+ },
+ {
+ "name": "qs",
+ "version": "6.11.0",
+ "purl": "pkg:npm/qs@6.11.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/qs@6.11.0"
+ },
+ {
+ "name": "raw-body",
+ "version": "2.5.1",
+ "purl": "pkg:npm/raw-body@2.5.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/raw-body@2.5.1"
+ },
+ {
+ "name": "unpipe",
+ "version": "1.0.0",
+ "purl": "pkg:npm/unpipe@1.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/unpipe@1.0.0"
+ },
+ {
+ "name": "type-is",
+ "version": "1.6.18",
+ "purl": "pkg:npm/type-is@1.6.18",
+ "type": "library",
+ "bom-ref": "pkg:npm/type-is@1.6.18"
+ },
+ {
+ "name": "content-disposition",
+ "version": "0.5.4",
+ "purl": "pkg:npm/content-disposition@0.5.4",
+ "type": "library",
+ "bom-ref": "pkg:npm/content-disposition@0.5.4"
+ },
+ {
+ "name": "safe-buffer",
+ "version": "5.2.1",
+ "purl": "pkg:npm/safe-buffer@5.2.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/safe-buffer@5.2.1"
+ },
+ {
+ "name": "cookie-signature",
+ "version": "1.0.6",
+ "purl": "pkg:npm/cookie-signature@1.0.6",
+ "type": "library",
+ "bom-ref": "pkg:npm/cookie-signature@1.0.6"
+ },
+ {
+ "name": "cookie",
+ "version": "0.5.0",
+ "purl": "pkg:npm/cookie@0.5.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/cookie@0.5.0"
+ },
+ {
+ "name": "encodeurl",
+ "version": "1.0.2",
+ "purl": "pkg:npm/encodeurl@1.0.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/encodeurl@1.0.2"
+ },
+ {
+ "name": "escape-html",
+ "version": "1.0.3",
+ "purl": "pkg:npm/escape-html@1.0.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/escape-html@1.0.3"
+ },
+ {
+ "name": "etag",
+ "version": "1.8.1",
+ "purl": "pkg:npm/etag@1.8.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/etag@1.8.1"
+ },
+ {
+ "name": "finalhandler",
+ "version": "1.2.0",
+ "purl": "pkg:npm/finalhandler@1.2.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/finalhandler@1.2.0"
+ },
+ {
+ "name": "parseurl",
+ "version": "1.3.3",
+ "purl": "pkg:npm/parseurl@1.3.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/parseurl@1.3.3"
+ },
+ {
+ "name": "statuses",
+ "version": "2.0.1",
+ "purl": "pkg:npm/statuses@2.0.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/statuses@2.0.1"
+ },
+ {
+ "name": "fresh",
+ "version": "0.5.2",
+ "purl": "pkg:npm/fresh@0.5.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/fresh@0.5.2"
+ },
+ {
+ "name": "inherits",
+ "version": "2.0.4",
+ "purl": "pkg:npm/inherits@2.0.4",
+ "type": "library",
+ "bom-ref": "pkg:npm/inherits@2.0.4"
+ },
+ {
+ "name": "setprototypeof",
+ "version": "1.2.0",
+ "purl": "pkg:npm/setprototypeof@1.2.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/setprototypeof@1.2.0"
+ },
+ {
+ "name": "toidentifier",
+ "version": "1.0.1",
+ "purl": "pkg:npm/toidentifier@1.0.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/toidentifier@1.0.1"
+ },
+ {
+ "name": "merge-descriptors",
+ "version": "1.0.1",
+ "purl": "pkg:npm/merge-descriptors@1.0.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/merge-descriptors@1.0.1"
+ },
+ {
+ "name": "methods",
+ "version": "1.1.2",
+ "purl": "pkg:npm/methods@1.1.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/methods@1.1.2"
+ },
+ {
+ "name": "ee-first",
+ "version": "1.1.1",
+ "purl": "pkg:npm/ee-first@1.1.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/ee-first@1.1.1"
+ },
+ {
+ "name": "path-to-regexp",
+ "version": "0.1.7",
+ "purl": "pkg:npm/path-to-regexp@0.1.7",
+ "type": "library",
+ "bom-ref": "pkg:npm/path-to-regexp@0.1.7"
+ },
+ {
+ "name": "proxy-addr",
+ "version": "2.0.7",
+ "purl": "pkg:npm/proxy-addr@2.0.7",
+ "type": "library",
+ "bom-ref": "pkg:npm/proxy-addr@2.0.7"
+ },
+ {
+ "name": "forwarded",
+ "version": "0.2.0",
+ "purl": "pkg:npm/forwarded@0.2.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/forwarded@0.2.0"
+ },
+ {
+ "name": "ipaddr.js",
+ "version": "1.9.1",
+ "purl": "pkg:npm/ipaddr.js@1.9.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/ipaddr.js@1.9.1"
+ },
+ {
+ "name": "side-channel",
+ "version": "1.0.4",
+ "purl": "pkg:npm/side-channel@1.0.4",
+ "type": "library",
+ "bom-ref": "pkg:npm/side-channel@1.0.4"
+ },
+ {
+ "name": "call-bind",
+ "version": "1.0.2",
+ "purl": "pkg:npm/call-bind@1.0.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/call-bind@1.0.2"
+ },
+ {
+ "name": "function-bind",
+ "version": "1.1.1",
+ "purl": "pkg:npm/function-bind@1.1.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/function-bind@1.1.1"
+ },
+ {
+ "name": "get-intrinsic",
+ "version": "1.2.1",
+ "purl": "pkg:npm/get-intrinsic@1.2.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/get-intrinsic@1.2.1"
+ },
+ {
+ "name": "has-proto",
+ "version": "1.0.1",
+ "purl": "pkg:npm/has-proto@1.0.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/has-proto@1.0.1"
+ },
+ {
+ "name": "has-symbols",
+ "version": "1.0.3",
+ "purl": "pkg:npm/has-symbols@1.0.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/has-symbols@1.0.3"
+ },
+ {
+ "name": "has",
+ "version": "1.0.3",
+ "purl": "pkg:npm/has@1.0.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/has@1.0.3"
+ },
+ {
+ "name": "object-inspect",
+ "version": "1.12.3",
+ "purl": "pkg:npm/object-inspect@1.12.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/object-inspect@1.12.3"
+ },
+ {
+ "name": "range-parser",
+ "version": "1.2.1",
+ "purl": "pkg:npm/range-parser@1.2.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/range-parser@1.2.1"
+ },
+ {
+ "name": "send",
+ "version": "0.18.0",
+ "purl": "pkg:npm/send@0.18.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/send@0.18.0"
+ },
+ {
+ "name": "mime",
+ "version": "1.6.0",
+ "purl": "pkg:npm/mime@1.6.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/mime@1.6.0"
+ },
+ {
+ "name": "ms",
+ "version": "2.1.3",
+ "purl": "pkg:npm/ms@2.1.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/ms@2.1.3"
+ },
+ {
+ "name": "serve-static",
+ "version": "1.15.0",
+ "purl": "pkg:npm/serve-static@1.15.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/serve-static@1.15.0"
+ },
+ {
+ "name": "media-typer",
+ "version": "0.3.0",
+ "purl": "pkg:npm/media-typer@0.3.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/media-typer@0.3.0"
+ },
+ {
+ "name": "utils-merge",
+ "version": "1.0.1",
+ "purl": "pkg:npm/utils-merge@1.0.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/utils-merge@1.0.1"
+ },
+ {
+ "name": "vary",
+ "version": "1.1.2",
+ "purl": "pkg:npm/vary@1.1.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/vary@1.1.2"
+ },
+ {
+ "name": "jsdom",
+ "version": "19.0.0",
+ "purl": "pkg:npm/jsdom@19.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/jsdom@19.0.0"
+ },
+ {
+ "name": "abab",
+ "version": "2.0.6",
+ "purl": "pkg:npm/abab@2.0.6",
+ "type": "library",
+ "bom-ref": "pkg:npm/abab@2.0.6"
+ },
+ {
+ "name": "acorn-globals",
+ "version": "6.0.0",
+ "purl": "pkg:npm/acorn-globals@6.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/acorn-globals@6.0.0"
+ },
+ {
+ "name": "acorn-walk",
+ "version": "7.2.0",
+ "purl": "pkg:npm/acorn-walk@7.2.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/acorn-walk@7.2.0"
+ },
+ {
+ "name": "acorn",
+ "version": "7.4.1",
+ "purl": "pkg:npm/acorn@7.4.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/acorn@7.4.1"
+ },
+ {
+ "name": "acorn",
+ "version": "8.10.0",
+ "purl": "pkg:npm/acorn@8.10.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/acorn@8.10.0"
+ },
+ {
+ "name": "cssom",
+ "version": "0.5.0",
+ "purl": "pkg:npm/cssom@0.5.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/cssom@0.5.0"
+ },
+ {
+ "name": "cssstyle",
+ "version": "2.3.0",
+ "purl": "pkg:npm/cssstyle@2.3.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/cssstyle@2.3.0"
+ },
+ {
+ "name": "cssom",
+ "version": "0.3.8",
+ "purl": "pkg:npm/cssom@0.3.8",
+ "type": "library",
+ "bom-ref": "pkg:npm/cssom@0.3.8"
+ },
+ {
+ "name": "data-urls",
+ "version": "3.0.2",
+ "purl": "pkg:npm/data-urls@3.0.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/data-urls@3.0.2"
+ },
+ {
+ "name": "whatwg-mimetype",
+ "version": "3.0.0",
+ "purl": "pkg:npm/whatwg-mimetype@3.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/whatwg-mimetype@3.0.0"
+ },
+ {
+ "name": "whatwg-url",
+ "version": "11.0.0",
+ "purl": "pkg:npm/whatwg-url@11.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/whatwg-url@11.0.0"
+ },
+ {
+ "name": "tr46",
+ "version": "3.0.0",
+ "purl": "pkg:npm/tr46@3.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/tr46@3.0.0"
+ },
+ {
+ "name": "webidl-conversions",
+ "version": "7.0.0",
+ "purl": "pkg:npm/webidl-conversions@7.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/webidl-conversions@7.0.0"
+ },
+ {
+ "name": "decimal.js",
+ "version": "10.4.3",
+ "purl": "pkg:npm/decimal.js@10.4.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/decimal.js@10.4.3"
+ },
+ {
+ "name": "domexception",
+ "version": "4.0.0",
+ "purl": "pkg:npm/domexception@4.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/domexception@4.0.0"
+ },
+ {
+ "name": "escodegen",
+ "version": "2.1.0",
+ "purl": "pkg:npm/escodegen@2.1.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/escodegen@2.1.0"
+ },
+ {
+ "name": "esprima",
+ "version": "4.0.1",
+ "purl": "pkg:npm/esprima@4.0.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/esprima@4.0.1"
+ },
+ {
+ "name": "estraverse",
+ "version": "5.3.0",
+ "purl": "pkg:npm/estraverse@5.3.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/estraverse@5.3.0"
+ },
+ {
+ "name": "esutils",
+ "version": "2.0.3",
+ "purl": "pkg:npm/esutils@2.0.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/esutils@2.0.3"
+ },
+ {
+ "name": "source-map",
+ "version": "0.6.1",
+ "purl": "pkg:npm/source-map@0.6.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/source-map@0.6.1"
+ },
+ {
+ "name": "form-data",
+ "version": "4.0.0",
+ "purl": "pkg:npm/form-data@4.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/form-data@4.0.0"
+ },
+ {
+ "name": "asynckit",
+ "version": "0.4.0",
+ "purl": "pkg:npm/asynckit@0.4.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/asynckit@0.4.0"
+ },
+ {
+ "name": "combined-stream",
+ "version": "1.0.8",
+ "purl": "pkg:npm/combined-stream@1.0.8",
+ "type": "library",
+ "bom-ref": "pkg:npm/combined-stream@1.0.8"
+ },
+ {
+ "name": "delayed-stream",
+ "version": "1.0.0",
+ "purl": "pkg:npm/delayed-stream@1.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/delayed-stream@1.0.0"
+ },
+ {
+ "name": "html-encoding-sniffer",
+ "version": "3.0.0",
+ "purl": "pkg:npm/html-encoding-sniffer@3.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/html-encoding-sniffer@3.0.0"
+ },
+ {
+ "name": "whatwg-encoding",
+ "version": "2.0.0",
+ "purl": "pkg:npm/whatwg-encoding@2.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/whatwg-encoding@2.0.0"
+ },
+ {
+ "name": "http-proxy-agent",
+ "version": "5.0.0",
+ "purl": "pkg:npm/http-proxy-agent@5.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/http-proxy-agent@5.0.0"
+ },
+ {
+ "group": "@tootallnate",
+ "name": "once",
+ "version": "2.0.0",
+ "purl": "pkg:npm/%40tootallnate/once@2.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/%40tootallnate/once@2.0.0"
+ },
+ {
+ "name": "agent-base",
+ "version": "6.0.2",
+ "purl": "pkg:npm/agent-base@6.0.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/agent-base@6.0.2"
+ },
+ {
+ "name": "debug",
+ "version": "4.3.4",
+ "purl": "pkg:npm/debug@4.3.4",
+ "type": "library",
+ "bom-ref": "pkg:npm/debug@4.3.4"
+ },
+ {
+ "name": "ms",
+ "version": "2.1.2",
+ "purl": "pkg:npm/ms@2.1.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/ms@2.1.2"
+ },
+ {
+ "name": "https-proxy-agent",
+ "version": "5.0.1",
+ "purl": "pkg:npm/https-proxy-agent@5.0.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/https-proxy-agent@5.0.1"
+ },
+ {
+ "name": "is-potential-custom-element-name",
+ "version": "1.0.1",
+ "purl": "pkg:npm/is-potential-custom-element-name@1.0.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/is-potential-custom-element-name@1.0.1"
+ },
+ {
+ "name": "nwsapi",
+ "version": "2.2.7",
+ "purl": "pkg:npm/nwsapi@2.2.7",
+ "type": "library",
+ "bom-ref": "pkg:npm/nwsapi@2.2.7"
+ },
+ {
+ "name": "parse5",
+ "version": "6.0.1",
+ "purl": "pkg:npm/parse5@6.0.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/parse5@6.0.1"
+ },
+ {
+ "name": "saxes",
+ "version": "5.0.1",
+ "purl": "pkg:npm/saxes@5.0.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/saxes@5.0.1"
+ },
+ {
+ "name": "xmlchars",
+ "version": "2.2.0",
+ "purl": "pkg:npm/xmlchars@2.2.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/xmlchars@2.2.0"
+ },
+ {
+ "name": "symbol-tree",
+ "version": "3.2.4",
+ "purl": "pkg:npm/symbol-tree@3.2.4",
+ "type": "library",
+ "bom-ref": "pkg:npm/symbol-tree@3.2.4"
+ },
+ {
+ "name": "tough-cookie",
+ "version": "4.1.3",
+ "purl": "pkg:npm/tough-cookie@4.1.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/tough-cookie@4.1.3"
+ },
+ {
+ "name": "psl",
+ "version": "1.9.0",
+ "purl": "pkg:npm/psl@1.9.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/psl@1.9.0"
+ },
+ {
+ "name": "punycode",
+ "version": "2.3.0",
+ "purl": "pkg:npm/punycode@2.3.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/punycode@2.3.0"
+ },
+ {
+ "name": "universalify",
+ "version": "0.2.0",
+ "purl": "pkg:npm/universalify@0.2.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/universalify@0.2.0"
+ },
+ {
+ "name": "url-parse",
+ "version": "1.5.10",
+ "purl": "pkg:npm/url-parse@1.5.10",
+ "type": "library",
+ "bom-ref": "pkg:npm/url-parse@1.5.10"
+ },
+ {
+ "name": "querystringify",
+ "version": "2.2.0",
+ "purl": "pkg:npm/querystringify@2.2.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/querystringify@2.2.0"
+ },
+ {
+ "name": "requires-port",
+ "version": "1.0.0",
+ "purl": "pkg:npm/requires-port@1.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/requires-port@1.0.0"
+ },
+ {
+ "name": "w3c-hr-time",
+ "version": "1.0.2",
+ "purl": "pkg:npm/w3c-hr-time@1.0.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/w3c-hr-time@1.0.2"
+ },
+ {
+ "name": "browser-process-hrtime",
+ "version": "1.0.0",
+ "purl": "pkg:npm/browser-process-hrtime@1.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/browser-process-hrtime@1.0.0"
+ },
+ {
+ "name": "w3c-xmlserializer",
+ "version": "3.0.0",
+ "purl": "pkg:npm/w3c-xmlserializer@3.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/w3c-xmlserializer@3.0.0"
+ },
+ {
+ "name": "xml-name-validator",
+ "version": "4.0.0",
+ "purl": "pkg:npm/xml-name-validator@4.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/xml-name-validator@4.0.0"
+ },
+ {
+ "name": "iconv-lite",
+ "version": "0.6.3",
+ "purl": "pkg:npm/iconv-lite@0.6.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/iconv-lite@0.6.3"
+ },
+ {
+ "name": "whatwg-url",
+ "version": "10.0.0",
+ "purl": "pkg:npm/whatwg-url@10.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/whatwg-url@10.0.0"
+ },
+ {
+ "name": "ws",
+ "version": "8.14.2",
+ "purl": "pkg:npm/ws@8.14.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/ws@8.14.2"
+ },
+ {
+ "name": "jws",
+ "version": "3.2.2",
+ "purl": "pkg:npm/jws@3.2.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/jws@3.2.2"
+ },
+ {
+ "name": "jwa",
+ "version": "1.4.1",
+ "purl": "pkg:npm/jwa@1.4.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/jwa@1.4.1"
+ },
+ {
+ "name": "buffer-equal-constant-time",
+ "version": "1.0.1",
+ "purl": "pkg:npm/buffer-equal-constant-time@1.0.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/buffer-equal-constant-time@1.0.1"
+ },
+ {
+ "name": "ecdsa-sig-formatter",
+ "version": "1.0.11",
+ "purl": "pkg:npm/ecdsa-sig-formatter@1.0.11",
+ "type": "library",
+ "bom-ref": "pkg:npm/ecdsa-sig-formatter@1.0.11"
+ },
+ {
+ "name": "lodash.includes",
+ "version": "4.3.0",
+ "purl": "pkg:npm/lodash.includes@4.3.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/lodash.includes@4.3.0"
+ },
+ {
+ "name": "lodash.isboolean",
+ "version": "3.0.3",
+ "purl": "pkg:npm/lodash.isboolean@3.0.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/lodash.isboolean@3.0.3"
+ },
+ {
+ "name": "lodash.isinteger",
+ "version": "4.0.4",
+ "purl": "pkg:npm/lodash.isinteger@4.0.4",
+ "type": "library",
+ "bom-ref": "pkg:npm/lodash.isinteger@4.0.4"
+ },
+ {
+ "name": "lodash.isnumber",
+ "version": "3.0.3",
+ "purl": "pkg:npm/lodash.isnumber@3.0.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/lodash.isnumber@3.0.3"
+ },
+ {
+ "name": "lodash.isplainobject",
+ "version": "4.0.6",
+ "purl": "pkg:npm/lodash.isplainobject@4.0.6",
+ "type": "library",
+ "bom-ref": "pkg:npm/lodash.isplainobject@4.0.6"
+ },
+ {
+ "name": "lodash.isstring",
+ "version": "4.0.1",
+ "purl": "pkg:npm/lodash.isstring@4.0.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/lodash.isstring@4.0.1"
+ },
+ {
+ "name": "lodash.once",
+ "version": "4.1.1",
+ "purl": "pkg:npm/lodash.once@4.1.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/lodash.once@4.1.1"
+ },
+ {
+ "name": "semver",
+ "version": "5.7.2",
+ "purl": "pkg:npm/semver@5.7.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/semver@5.7.2"
+ },
+ {
+ "name": "mongoose",
+ "version": "5.13.20",
+ "purl": "pkg:npm/mongoose@5.13.20",
+ "type": "library",
+ "bom-ref": "pkg:npm/mongoose@5.13.20"
+ },
+ {
+ "group": "@types",
+ "name": "bson",
+ "version": "4.0.5",
+ "purl": "pkg:npm/%40types/bson@4.0.5",
+ "type": "library",
+ "bom-ref": "pkg:npm/%40types/bson@4.0.5"
+ },
+ {
+ "group": "@types",
+ "name": "node",
+ "version": "20.4.8",
+ "purl": "pkg:npm/%40types/node@20.4.8",
+ "type": "library",
+ "bom-ref": "pkg:npm/%40types/node@20.4.8"
+ },
+ {
+ "group": "@types",
+ "name": "mongodb",
+ "version": "3.6.20",
+ "purl": "pkg:npm/%40types/mongodb@3.6.20",
+ "type": "library",
+ "bom-ref": "pkg:npm/%40types/mongodb@3.6.20"
+ },
+ {
+ "name": "bson",
+ "version": "1.1.6",
+ "purl": "pkg:npm/bson@1.1.6",
+ "type": "library",
+ "bom-ref": "pkg:npm/bson@1.1.6"
+ },
+ {
+ "name": "kareem",
+ "version": "2.3.2",
+ "purl": "pkg:npm/kareem@2.3.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/kareem@2.3.2"
+ },
+ {
+ "name": "mongodb",
+ "version": "3.7.4",
+ "purl": "pkg:npm/mongodb@3.7.4",
+ "type": "library",
+ "bom-ref": "pkg:npm/mongodb@3.7.4"
+ },
+ {
+ "name": "bl",
+ "version": "2.2.1",
+ "purl": "pkg:npm/bl@2.2.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/bl@2.2.1"
+ },
+ {
+ "name": "readable-stream",
+ "version": "2.3.8",
+ "purl": "pkg:npm/readable-stream@2.3.8",
+ "type": "library",
+ "bom-ref": "pkg:npm/readable-stream@2.3.8"
+ },
+ {
+ "name": "core-util-is",
+ "version": "1.0.3",
+ "purl": "pkg:npm/core-util-is@1.0.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/core-util-is@1.0.3"
+ },
+ {
+ "name": "isarray",
+ "version": "1.0.0",
+ "purl": "pkg:npm/isarray@1.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/isarray@1.0.0"
+ },
+ {
+ "name": "process-nextick-args",
+ "version": "2.0.1",
+ "purl": "pkg:npm/process-nextick-args@2.0.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/process-nextick-args@2.0.1"
+ },
+ {
+ "name": "safe-buffer",
+ "version": "5.1.2",
+ "purl": "pkg:npm/safe-buffer@5.1.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/safe-buffer@5.1.2"
+ },
+ {
+ "name": "string_decoder",
+ "version": "1.1.1",
+ "purl": "pkg:npm/string_decoder@1.1.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/string_decoder@1.1.1"
+ },
+ {
+ "name": "util-deprecate",
+ "version": "1.0.2",
+ "purl": "pkg:npm/util-deprecate@1.0.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/util-deprecate@1.0.2"
+ },
+ {
+ "name": "denque",
+ "version": "1.5.1",
+ "purl": "pkg:npm/denque@1.5.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/denque@1.5.1"
+ },
+ {
+ "name": "optional-require",
+ "version": "1.1.8",
+ "purl": "pkg:npm/optional-require@1.1.8",
+ "type": "library",
+ "bom-ref": "pkg:npm/optional-require@1.1.8"
+ },
+ {
+ "name": "require-at",
+ "version": "1.0.6",
+ "purl": "pkg:npm/require-at@1.0.6",
+ "type": "library",
+ "bom-ref": "pkg:npm/require-at@1.0.6"
+ },
+ {
+ "name": "saslprep",
+ "version": "1.0.3",
+ "purl": "pkg:npm/saslprep@1.0.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/saslprep@1.0.3"
+ },
+ {
+ "name": "sparse-bitfield",
+ "version": "3.0.3",
+ "purl": "pkg:npm/sparse-bitfield@3.0.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/sparse-bitfield@3.0.3"
+ },
+ {
+ "name": "memory-pager",
+ "version": "1.5.0",
+ "purl": "pkg:npm/memory-pager@1.5.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/memory-pager@1.5.0"
+ },
+ {
+ "name": "mongoose-legacy-pluralize",
+ "version": "1.0.2",
+ "purl": "pkg:npm/mongoose-legacy-pluralize@1.0.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/mongoose-legacy-pluralize@1.0.2"
+ },
+ {
+ "name": "mpath",
+ "version": "0.8.4",
+ "purl": "pkg:npm/mpath@0.8.4",
+ "type": "library",
+ "bom-ref": "pkg:npm/mpath@0.8.4"
+ },
+ {
+ "name": "mquery",
+ "version": "3.2.5",
+ "purl": "pkg:npm/mquery@3.2.5",
+ "type": "library",
+ "bom-ref": "pkg:npm/mquery@3.2.5"
+ },
+ {
+ "name": "bluebird",
+ "version": "3.5.1",
+ "purl": "pkg:npm/bluebird@3.5.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/bluebird@3.5.1"
+ },
+ {
+ "name": "regexp-clone",
+ "version": "1.0.0",
+ "purl": "pkg:npm/regexp-clone@1.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/regexp-clone@1.0.0"
+ },
+ {
+ "name": "sliced",
+ "version": "1.0.1",
+ "purl": "pkg:npm/sliced@1.0.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/sliced@1.0.1"
+ },
+ {
+ "name": "optional-require",
+ "version": "1.0.3",
+ "purl": "pkg:npm/optional-require@1.0.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/optional-require@1.0.3"
+ },
+ {
+ "name": "sift",
+ "version": "13.5.2",
+ "purl": "pkg:npm/sift@13.5.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/sift@13.5.2"
+ },
+ {
+ "name": "nodemon",
+ "version": "2.0.22",
+ "purl": "pkg:npm/nodemon@2.0.22",
+ "type": "library",
+ "bom-ref": "pkg:npm/nodemon@2.0.22"
+ },
+ {
+ "name": "chokidar",
+ "version": "3.5.3",
+ "purl": "pkg:npm/chokidar@3.5.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/chokidar@3.5.3"
+ },
+ {
+ "name": "anymatch",
+ "version": "3.1.3",
+ "purl": "pkg:npm/anymatch@3.1.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/anymatch@3.1.3"
+ },
+ {
+ "name": "normalize-path",
+ "version": "3.0.0",
+ "purl": "pkg:npm/normalize-path@3.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/normalize-path@3.0.0"
+ },
+ {
+ "name": "picomatch",
+ "version": "2.3.1",
+ "purl": "pkg:npm/picomatch@2.3.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/picomatch@2.3.1"
+ },
+ {
+ "name": "braces",
+ "version": "3.0.2",
+ "purl": "pkg:npm/braces@3.0.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/braces@3.0.2"
+ },
+ {
+ "name": "fill-range",
+ "version": "7.0.1",
+ "purl": "pkg:npm/fill-range@7.0.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/fill-range@7.0.1"
+ },
+ {
+ "name": "to-regex-range",
+ "version": "5.0.1",
+ "purl": "pkg:npm/to-regex-range@5.0.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/to-regex-range@5.0.1"
+ },
+ {
+ "name": "is-number",
+ "version": "7.0.0",
+ "purl": "pkg:npm/is-number@7.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/is-number@7.0.0"
+ },
+ {
+ "name": "fsevents",
+ "version": "2.3.2",
+ "purl": "pkg:npm/fsevents@2.3.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/fsevents@2.3.2"
+ },
+ {
+ "name": "glob-parent",
+ "version": "5.1.2",
+ "purl": "pkg:npm/glob-parent@5.1.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/glob-parent@5.1.2"
+ },
+ {
+ "name": "is-glob",
+ "version": "4.0.3",
+ "purl": "pkg:npm/is-glob@4.0.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/is-glob@4.0.3"
+ },
+ {
+ "name": "is-binary-path",
+ "version": "2.1.0",
+ "purl": "pkg:npm/is-binary-path@2.1.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/is-binary-path@2.1.0"
+ },
+ {
+ "name": "binary-extensions",
+ "version": "2.2.0",
+ "purl": "pkg:npm/binary-extensions@2.2.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/binary-extensions@2.2.0"
+ },
+ {
+ "name": "is-extglob",
+ "version": "2.1.1",
+ "purl": "pkg:npm/is-extglob@2.1.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/is-extglob@2.1.1"
+ },
+ {
+ "name": "readdirp",
+ "version": "3.6.0",
+ "purl": "pkg:npm/readdirp@3.6.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/readdirp@3.6.0"
+ },
+ {
+ "name": "debug",
+ "version": "3.2.7",
+ "purl": "pkg:npm/debug@3.2.7",
+ "type": "library",
+ "bom-ref": "pkg:npm/debug@3.2.7"
+ },
+ {
+ "name": "ignore-by-default",
+ "version": "1.0.1",
+ "purl": "pkg:npm/ignore-by-default@1.0.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/ignore-by-default@1.0.1"
+ },
+ {
+ "name": "minimatch",
+ "version": "3.1.2",
+ "purl": "pkg:npm/minimatch@3.1.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/minimatch@3.1.2"
+ },
+ {
+ "name": "brace-expansion",
+ "version": "1.1.11",
+ "purl": "pkg:npm/brace-expansion@1.1.11",
+ "type": "library",
+ "bom-ref": "pkg:npm/brace-expansion@1.1.11"
+ },
+ {
+ "name": "balanced-match",
+ "version": "1.0.2",
+ "purl": "pkg:npm/balanced-match@1.0.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/balanced-match@1.0.2"
+ },
+ {
+ "name": "concat-map",
+ "version": "0.0.1",
+ "purl": "pkg:npm/concat-map@0.0.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/concat-map@0.0.1"
+ },
+ {
+ "name": "pstree.remy",
+ "version": "1.1.8",
+ "purl": "pkg:npm/pstree.remy@1.1.8",
+ "type": "library",
+ "bom-ref": "pkg:npm/pstree.remy@1.1.8"
+ },
+ {
+ "name": "simple-update-notifier",
+ "version": "1.1.0",
+ "purl": "pkg:npm/simple-update-notifier@1.1.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/simple-update-notifier@1.1.0"
+ },
+ {
+ "name": "semver",
+ "version": "7.0.0",
+ "purl": "pkg:npm/semver@7.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/semver@7.0.0"
+ },
+ {
+ "name": "supports-color",
+ "version": "5.5.0",
+ "purl": "pkg:npm/supports-color@5.5.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/supports-color@5.5.0"
+ },
+ {
+ "name": "has-flag",
+ "version": "3.0.0",
+ "purl": "pkg:npm/has-flag@3.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/has-flag@3.0.0"
+ },
+ {
+ "name": "touch",
+ "version": "3.1.0",
+ "purl": "pkg:npm/touch@3.1.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/touch@3.1.0"
+ },
+ {
+ "name": "nopt",
+ "version": "1.0.10",
+ "purl": "pkg:npm/nopt@1.0.10",
+ "type": "library",
+ "bom-ref": "pkg:npm/nopt@1.0.10"
+ },
+ {
+ "name": "abbrev",
+ "version": "1.1.1",
+ "purl": "pkg:npm/abbrev@1.1.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/abbrev@1.1.1"
+ },
+ {
+ "name": "undefsafe",
+ "version": "2.0.5",
+ "purl": "pkg:npm/undefsafe@2.0.5",
+ "type": "library",
+ "bom-ref": "pkg:npm/undefsafe@2.0.5"
+ }
+ ],
+ "dependencies": [
+ {
+ "ref": "pkg:npm/backend@1.0.0",
+ "dependsOn": [
+ "pkg:npm/%40hapi/joi@17.1.1",
+ "pkg:npm/axios@0.19.2",
+ "pkg:npm/backend@0.0.0",
+ "pkg:npm/bcryptjs@2.4.3",
+ "pkg:npm/dotenv@8.6.0",
+ "pkg:npm/express@4.18.2",
+ "pkg:npm/jsdom@19.0.0",
+ "pkg:npm/mongoose@5.13.20",
+ "pkg:npm/nodemon@2.0.22"
+ ]
+ },
+ {
+ "ref": "pkg:npm/%40hapi/joi@17.1.1",
+ "dependsOn": [
+ "pkg:npm/%40hapi/address@4.1.0",
+ "pkg:npm/%40hapi/formula@2.0.0",
+ "pkg:npm/%40hapi/hoek@9.3.0",
+ "pkg:npm/%40hapi/pinpoint@2.0.1",
+ "pkg:npm/%40hapi/topo@5.1.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/%40hapi/address@4.1.0",
+ "dependsOn": [
+ "pkg:npm/%40hapi/hoek@9.3.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/%40hapi/hoek@9.3.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/%40hapi/formula@2.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/%40hapi/pinpoint@2.0.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/%40hapi/topo@5.1.0",
+ "dependsOn": [
+ "pkg:npm/%40hapi/hoek@9.3.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/axios@0.19.2",
+ "dependsOn": [
+ "pkg:npm/follow-redirects@1.5.10"
+ ]
+ },
+ {
+ "ref": "pkg:npm/follow-redirects@1.5.10",
+ "dependsOn": [
+ "pkg:npm/debug@3.1.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/debug@3.1.0",
+ "dependsOn": [
+ "pkg:npm/ms@2.0.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/ms@2.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/backend@0.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/bcryptjs@2.4.3",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/dotenv@8.6.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/express@4.18.2",
+ "dependsOn": [
+ "pkg:npm/accepts@1.3.8",
+ "pkg:npm/array-flatten@1.1.1",
+ "pkg:npm/body-parser@1.20.1",
+ "pkg:npm/content-disposition@0.5.4",
+ "pkg:npm/content-type@1.0.5",
+ "pkg:npm/cookie-signature@1.0.6",
+ "pkg:npm/cookie@0.5.0",
+ "pkg:npm/debug@2.6.9",
+ "pkg:npm/depd@2.0.0",
+ "pkg:npm/encodeurl@1.0.2",
+ "pkg:npm/escape-html@1.0.3",
+ "pkg:npm/etag@1.8.1",
+ "pkg:npm/finalhandler@1.2.0",
+ "pkg:npm/fresh@0.5.2",
+ "pkg:npm/http-errors@2.0.0",
+ "pkg:npm/merge-descriptors@1.0.1",
+ "pkg:npm/methods@1.1.2",
+ "pkg:npm/on-finished@2.4.1",
+ "pkg:npm/parseurl@1.3.3",
+ "pkg:npm/path-to-regexp@0.1.7",
+ "pkg:npm/proxy-addr@2.0.7",
+ "pkg:npm/qs@6.11.0",
+ "pkg:npm/range-parser@1.2.1",
+ "pkg:npm/safe-buffer@5.2.1",
+ "pkg:npm/send@0.18.0",
+ "pkg:npm/serve-static@1.15.0",
+ "pkg:npm/setprototypeof@1.2.0",
+ "pkg:npm/statuses@2.0.1",
+ "pkg:npm/type-is@1.6.18",
+ "pkg:npm/utils-merge@1.0.1",
+ "pkg:npm/vary@1.1.2"
+ ]
+ },
+ {
+ "ref": "pkg:npm/accepts@1.3.8",
+ "dependsOn": [
+ "pkg:npm/mime-types@2.1.35",
+ "pkg:npm/negotiator@0.6.3"
+ ]
+ },
+ {
+ "ref": "pkg:npm/mime-types@2.1.35",
+ "dependsOn": [
+ "pkg:npm/mime-db@1.52.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/mime-db@1.52.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/negotiator@0.6.3",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/array-flatten@1.1.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/body-parser@1.20.1",
+ "dependsOn": [
+ "pkg:npm/bytes@3.1.2",
+ "pkg:npm/content-type@1.0.5",
+ "pkg:npm/debug@2.6.9",
+ "pkg:npm/depd@2.0.0",
+ "pkg:npm/destroy@1.2.0",
+ "pkg:npm/http-errors@2.0.0",
+ "pkg:npm/iconv-lite@0.4.24",
+ "pkg:npm/on-finished@2.4.1",
+ "pkg:npm/qs@6.11.0",
+ "pkg:npm/raw-body@2.5.1",
+ "pkg:npm/type-is@1.6.18",
+ "pkg:npm/unpipe@1.0.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/bytes@3.1.2",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/content-type@1.0.5",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/debug@2.6.9",
+ "dependsOn": [
+ "pkg:npm/ms@2.0.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/depd@2.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/destroy@1.2.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/http-errors@2.0.0",
+ "dependsOn": [
+ "pkg:npm/depd@2.0.0",
+ "pkg:npm/inherits@2.0.4",
+ "pkg:npm/setprototypeof@1.2.0",
+ "pkg:npm/statuses@2.0.1",
+ "pkg:npm/toidentifier@1.0.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/iconv-lite@0.4.24",
+ "dependsOn": [
+ "pkg:npm/safer-buffer@2.1.2"
+ ]
+ },
+ {
+ "ref": "pkg:npm/safer-buffer@2.1.2",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/on-finished@2.4.1",
+ "dependsOn": [
+ "pkg:npm/ee-first@1.1.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/qs@6.11.0",
+ "dependsOn": [
+ "pkg:npm/side-channel@1.0.4"
+ ]
+ },
+ {
+ "ref": "pkg:npm/raw-body@2.5.1",
+ "dependsOn": [
+ "pkg:npm/bytes@3.1.2",
+ "pkg:npm/http-errors@2.0.0",
+ "pkg:npm/iconv-lite@0.4.24",
+ "pkg:npm/unpipe@1.0.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/unpipe@1.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/type-is@1.6.18",
+ "dependsOn": [
+ "pkg:npm/media-typer@0.3.0",
+ "pkg:npm/mime-types@2.1.35"
+ ]
+ },
+ {
+ "ref": "pkg:npm/content-disposition@0.5.4",
+ "dependsOn": [
+ "pkg:npm/safe-buffer@5.2.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/safe-buffer@5.2.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/cookie-signature@1.0.6",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/cookie@0.5.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/encodeurl@1.0.2",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/escape-html@1.0.3",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/etag@1.8.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/finalhandler@1.2.0",
+ "dependsOn": [
+ "pkg:npm/debug@2.6.9",
+ "pkg:npm/encodeurl@1.0.2",
+ "pkg:npm/escape-html@1.0.3",
+ "pkg:npm/on-finished@2.4.1",
+ "pkg:npm/parseurl@1.3.3",
+ "pkg:npm/statuses@2.0.1",
+ "pkg:npm/unpipe@1.0.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/parseurl@1.3.3",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/statuses@2.0.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/fresh@0.5.2",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/inherits@2.0.4",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/setprototypeof@1.2.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/toidentifier@1.0.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/merge-descriptors@1.0.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/methods@1.1.2",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/ee-first@1.1.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/path-to-regexp@0.1.7",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/proxy-addr@2.0.7",
+ "dependsOn": [
+ "pkg:npm/forwarded@0.2.0",
+ "pkg:npm/ipaddr.js@1.9.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/forwarded@0.2.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/ipaddr.js@1.9.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/side-channel@1.0.4",
+ "dependsOn": [
+ "pkg:npm/call-bind@1.0.2",
+ "pkg:npm/get-intrinsic@1.2.1",
+ "pkg:npm/object-inspect@1.12.3"
+ ]
+ },
+ {
+ "ref": "pkg:npm/call-bind@1.0.2",
+ "dependsOn": [
+ "pkg:npm/function-bind@1.1.1",
+ "pkg:npm/get-intrinsic@1.2.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/function-bind@1.1.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/get-intrinsic@1.2.1",
+ "dependsOn": [
+ "pkg:npm/function-bind@1.1.1",
+ "pkg:npm/has-proto@1.0.1",
+ "pkg:npm/has-symbols@1.0.3",
+ "pkg:npm/has@1.0.3"
+ ]
+ },
+ {
+ "ref": "pkg:npm/has-proto@1.0.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/has-symbols@1.0.3",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/has@1.0.3",
+ "dependsOn": [
+ "pkg:npm/function-bind@1.1.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/object-inspect@1.12.3",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/range-parser@1.2.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/send@0.18.0",
+ "dependsOn": [
+ "pkg:npm/debug@2.6.9",
+ "pkg:npm/depd@2.0.0",
+ "pkg:npm/destroy@1.2.0",
+ "pkg:npm/encodeurl@1.0.2",
+ "pkg:npm/escape-html@1.0.3",
+ "pkg:npm/etag@1.8.1",
+ "pkg:npm/fresh@0.5.2",
+ "pkg:npm/http-errors@2.0.0",
+ "pkg:npm/mime@1.6.0",
+ "pkg:npm/ms@2.1.3",
+ "pkg:npm/on-finished@2.4.1",
+ "pkg:npm/range-parser@1.2.1",
+ "pkg:npm/statuses@2.0.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/mime@1.6.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/ms@2.1.3",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/serve-static@1.15.0",
+ "dependsOn": [
+ "pkg:npm/encodeurl@1.0.2",
+ "pkg:npm/escape-html@1.0.3",
+ "pkg:npm/parseurl@1.3.3",
+ "pkg:npm/send@0.18.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/media-typer@0.3.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/utils-merge@1.0.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/vary@1.1.2",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/jsdom@19.0.0",
+ "dependsOn": [
+ "pkg:npm/abab@2.0.6",
+ "pkg:npm/acorn-globals@6.0.0",
+ "pkg:npm/acorn@8.10.0",
+ "pkg:npm/cssom@0.5.0",
+ "pkg:npm/cssstyle@2.3.0",
+ "pkg:npm/data-urls@3.0.2",
+ "pkg:npm/decimal.js@10.4.3",
+ "pkg:npm/domexception@4.0.0",
+ "pkg:npm/escodegen@2.1.0",
+ "pkg:npm/form-data@4.0.0",
+ "pkg:npm/html-encoding-sniffer@3.0.0",
+ "pkg:npm/http-proxy-agent@5.0.0",
+ "pkg:npm/https-proxy-agent@5.0.1",
+ "pkg:npm/is-potential-custom-element-name@1.0.1",
+ "pkg:npm/nwsapi@2.2.7",
+ "pkg:npm/parse5@6.0.1",
+ "pkg:npm/saxes@5.0.1",
+ "pkg:npm/symbol-tree@3.2.4",
+ "pkg:npm/tough-cookie@4.1.3",
+ "pkg:npm/w3c-hr-time@1.0.2",
+ "pkg:npm/w3c-xmlserializer@3.0.0",
+ "pkg:npm/webidl-conversions@7.0.0",
+ "pkg:npm/whatwg-encoding@2.0.0",
+ "pkg:npm/whatwg-mimetype@3.0.0",
+ "pkg:npm/whatwg-url@10.0.0",
+ "pkg:npm/ws@8.14.2",
+ "pkg:npm/xml-name-validator@4.0.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/abab@2.0.6",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/acorn-globals@6.0.0",
+ "dependsOn": [
+ "pkg:npm/acorn-walk@7.2.0",
+ "pkg:npm/acorn@7.4.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/acorn-walk@7.2.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/acorn@7.4.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/acorn@8.10.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/cssom@0.5.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/cssstyle@2.3.0",
+ "dependsOn": [
+ "pkg:npm/cssom@0.3.8"
+ ]
+ },
+ {
+ "ref": "pkg:npm/cssom@0.3.8",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/data-urls@3.0.2",
+ "dependsOn": [
+ "pkg:npm/abab@2.0.6",
+ "pkg:npm/whatwg-mimetype@3.0.0",
+ "pkg:npm/whatwg-url@11.0.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/whatwg-mimetype@3.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/whatwg-url@11.0.0",
+ "dependsOn": [
+ "pkg:npm/tr46@3.0.0",
+ "pkg:npm/webidl-conversions@7.0.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/tr46@3.0.0",
+ "dependsOn": [
+ "pkg:npm/punycode@2.3.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/webidl-conversions@7.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/decimal.js@10.4.3",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/domexception@4.0.0",
+ "dependsOn": [
+ "pkg:npm/webidl-conversions@7.0.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/escodegen@2.1.0",
+ "dependsOn": [
+ "pkg:npm/esprima@4.0.1",
+ "pkg:npm/estraverse@5.3.0",
+ "pkg:npm/esutils@2.0.3",
+ "pkg:npm/source-map@0.6.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/esprima@4.0.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/estraverse@5.3.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/esutils@2.0.3",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/source-map@0.6.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/form-data@4.0.0",
+ "dependsOn": [
+ "pkg:npm/asynckit@0.4.0",
+ "pkg:npm/combined-stream@1.0.8",
+ "pkg:npm/mime-types@2.1.35"
+ ]
+ },
+ {
+ "ref": "pkg:npm/asynckit@0.4.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/combined-stream@1.0.8",
+ "dependsOn": [
+ "pkg:npm/delayed-stream@1.0.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/delayed-stream@1.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/html-encoding-sniffer@3.0.0",
+ "dependsOn": [
+ "pkg:npm/whatwg-encoding@2.0.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/whatwg-encoding@2.0.0",
+ "dependsOn": [
+ "pkg:npm/iconv-lite@0.6.3"
+ ]
+ },
+ {
+ "ref": "pkg:npm/http-proxy-agent@5.0.0",
+ "dependsOn": [
+ "pkg:npm/%40tootallnate/once@2.0.0",
+ "pkg:npm/agent-base@6.0.2",
+ "pkg:npm/debug@4.3.4"
+ ]
+ },
+ {
+ "ref": "pkg:npm/%40tootallnate/once@2.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/agent-base@6.0.2",
+ "dependsOn": [
+ "pkg:npm/debug@4.3.4"
+ ]
+ },
+ {
+ "ref": "pkg:npm/debug@4.3.4",
+ "dependsOn": [
+ "pkg:npm/ms@2.1.2"
+ ]
+ },
+ {
+ "ref": "pkg:npm/ms@2.1.2",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/https-proxy-agent@5.0.1",
+ "dependsOn": [
+ "pkg:npm/agent-base@6.0.2",
+ "pkg:npm/debug@4.3.4"
+ ]
+ },
+ {
+ "ref": "pkg:npm/is-potential-custom-element-name@1.0.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/nwsapi@2.2.7",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/parse5@6.0.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/saxes@5.0.1",
+ "dependsOn": [
+ "pkg:npm/xmlchars@2.2.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/xmlchars@2.2.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/symbol-tree@3.2.4",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/tough-cookie@4.1.3",
+ "dependsOn": [
+ "pkg:npm/psl@1.9.0",
+ "pkg:npm/punycode@2.3.0",
+ "pkg:npm/universalify@0.2.0",
+ "pkg:npm/url-parse@1.5.10"
+ ]
+ },
+ {
+ "ref": "pkg:npm/psl@1.9.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/punycode@2.3.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/universalify@0.2.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/url-parse@1.5.10",
+ "dependsOn": [
+ "pkg:npm/querystringify@2.2.0",
+ "pkg:npm/requires-port@1.0.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/querystringify@2.2.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/requires-port@1.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/w3c-hr-time@1.0.2",
+ "dependsOn": [
+ "pkg:npm/browser-process-hrtime@1.0.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/browser-process-hrtime@1.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/w3c-xmlserializer@3.0.0",
+ "dependsOn": [
+ "pkg:npm/xml-name-validator@4.0.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/xml-name-validator@4.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/iconv-lite@0.6.3",
+ "dependsOn": [
+ "pkg:npm/safer-buffer@2.1.2"
+ ]
+ },
+ {
+ "ref": "pkg:npm/whatwg-url@10.0.0",
+ "dependsOn": [
+ "pkg:npm/tr46@3.0.0",
+ "pkg:npm/webidl-conversions@7.0.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/ws@8.14.2",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/jws@3.2.2",
+ "dependsOn": [
+ "pkg:npm/jwa@1.4.1",
+ "pkg:npm/safe-buffer@5.2.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/jwa@1.4.1",
+ "dependsOn": [
+ "pkg:npm/buffer-equal-constant-time@1.0.1",
+ "pkg:npm/ecdsa-sig-formatter@1.0.11",
+ "pkg:npm/safe-buffer@5.2.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/buffer-equal-constant-time@1.0.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/ecdsa-sig-formatter@1.0.11",
+ "dependsOn": [
+ "pkg:npm/safe-buffer@5.2.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/lodash.includes@4.3.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/lodash.isboolean@3.0.3",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/lodash.isinteger@4.0.4",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/lodash.isnumber@3.0.3",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/lodash.isplainobject@4.0.6",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/lodash.isstring@4.0.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/lodash.once@4.1.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/semver@5.7.2",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/mongoose@5.13.20",
+ "dependsOn": [
+ "pkg:npm/%40types/bson@4.0.5",
+ "pkg:npm/%40types/mongodb@3.6.20",
+ "pkg:npm/bson@1.1.6",
+ "pkg:npm/kareem@2.3.2",
+ "pkg:npm/mongodb@3.7.4",
+ "pkg:npm/mongoose-legacy-pluralize@1.0.2",
+ "pkg:npm/mpath@0.8.4",
+ "pkg:npm/mquery@3.2.5",
+ "pkg:npm/ms@2.1.2",
+ "pkg:npm/optional-require@1.0.3",
+ "pkg:npm/regexp-clone@1.0.0",
+ "pkg:npm/safe-buffer@5.2.1",
+ "pkg:npm/sift@13.5.2",
+ "pkg:npm/sliced@1.0.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/%40types/bson@4.0.5",
+ "dependsOn": [
+ "pkg:npm/%40types/node@20.4.8"
+ ]
+ },
+ {
+ "ref": "pkg:npm/%40types/node@20.4.8",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/%40types/mongodb@3.6.20",
+ "dependsOn": [
+ "pkg:npm/%40types/bson@4.0.5",
+ "pkg:npm/%40types/node@20.4.8"
+ ]
+ },
+ {
+ "ref": "pkg:npm/bson@1.1.6",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/kareem@2.3.2",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/mongodb@3.7.4",
+ "dependsOn": [
+ "pkg:npm/bl@2.2.1",
+ "pkg:npm/bson@1.1.6",
+ "pkg:npm/denque@1.5.1",
+ "pkg:npm/optional-require@1.1.8",
+ "pkg:npm/safe-buffer@5.2.1",
+ "pkg:npm/saslprep@1.0.3"
+ ]
+ },
+ {
+ "ref": "pkg:npm/bl@2.2.1",
+ "dependsOn": [
+ "pkg:npm/readable-stream@2.3.8",
+ "pkg:npm/safe-buffer@5.2.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/readable-stream@2.3.8",
+ "dependsOn": [
+ "pkg:npm/core-util-is@1.0.3",
+ "pkg:npm/inherits@2.0.4",
+ "pkg:npm/isarray@1.0.0",
+ "pkg:npm/process-nextick-args@2.0.1",
+ "pkg:npm/safe-buffer@5.1.2",
+ "pkg:npm/string_decoder@1.1.1",
+ "pkg:npm/util-deprecate@1.0.2"
+ ]
+ },
+ {
+ "ref": "pkg:npm/core-util-is@1.0.3",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/isarray@1.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/process-nextick-args@2.0.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/safe-buffer@5.1.2",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/string_decoder@1.1.1",
+ "dependsOn": [
+ "pkg:npm/safe-buffer@5.1.2"
+ ]
+ },
+ {
+ "ref": "pkg:npm/util-deprecate@1.0.2",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/denque@1.5.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/optional-require@1.1.8",
+ "dependsOn": [
+ "pkg:npm/require-at@1.0.6"
+ ]
+ },
+ {
+ "ref": "pkg:npm/require-at@1.0.6",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/saslprep@1.0.3",
+ "dependsOn": [
+ "pkg:npm/sparse-bitfield@3.0.3"
+ ]
+ },
+ {
+ "ref": "pkg:npm/sparse-bitfield@3.0.3",
+ "dependsOn": [
+ "pkg:npm/memory-pager@1.5.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/memory-pager@1.5.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/mongoose-legacy-pluralize@1.0.2",
+ "dependsOn": [
+ "pkg:npm/mongoose@5.13.20"
+ ]
+ },
+ {
+ "ref": "pkg:npm/mpath@0.8.4",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/mquery@3.2.5",
+ "dependsOn": [
+ "pkg:npm/bluebird@3.5.1",
+ "pkg:npm/debug@3.1.0",
+ "pkg:npm/regexp-clone@1.0.0",
+ "pkg:npm/safe-buffer@5.1.2",
+ "pkg:npm/sliced@1.0.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/bluebird@3.5.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/regexp-clone@1.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/sliced@1.0.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/optional-require@1.0.3",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/sift@13.5.2",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/nodemon@2.0.22",
+ "dependsOn": [
+ "pkg:npm/chokidar@3.5.3",
+ "pkg:npm/debug@3.2.7",
+ "pkg:npm/ignore-by-default@1.0.1",
+ "pkg:npm/minimatch@3.1.2",
+ "pkg:npm/pstree.remy@1.1.8",
+ "pkg:npm/semver@5.7.2",
+ "pkg:npm/simple-update-notifier@1.1.0",
+ "pkg:npm/supports-color@5.5.0",
+ "pkg:npm/touch@3.1.0",
+ "pkg:npm/undefsafe@2.0.5"
+ ]
+ },
+ {
+ "ref": "pkg:npm/chokidar@3.5.3",
+ "dependsOn": [
+ "pkg:npm/anymatch@3.1.3",
+ "pkg:npm/braces@3.0.2",
+ "pkg:npm/fsevents@2.3.2",
+ "pkg:npm/glob-parent@5.1.2",
+ "pkg:npm/is-binary-path@2.1.0",
+ "pkg:npm/is-glob@4.0.3",
+ "pkg:npm/normalize-path@3.0.0",
+ "pkg:npm/readdirp@3.6.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/anymatch@3.1.3",
+ "dependsOn": [
+ "pkg:npm/normalize-path@3.0.0",
+ "pkg:npm/picomatch@2.3.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/normalize-path@3.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/picomatch@2.3.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/braces@3.0.2",
+ "dependsOn": [
+ "pkg:npm/fill-range@7.0.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/fill-range@7.0.1",
+ "dependsOn": [
+ "pkg:npm/to-regex-range@5.0.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/to-regex-range@5.0.1",
+ "dependsOn": [
+ "pkg:npm/is-number@7.0.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/is-number@7.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/fsevents@2.3.2",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/glob-parent@5.1.2",
+ "dependsOn": [
+ "pkg:npm/is-glob@4.0.3"
+ ]
+ },
+ {
+ "ref": "pkg:npm/is-glob@4.0.3",
+ "dependsOn": [
+ "pkg:npm/is-extglob@2.1.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/is-binary-path@2.1.0",
+ "dependsOn": [
+ "pkg:npm/binary-extensions@2.2.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/binary-extensions@2.2.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/is-extglob@2.1.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/readdirp@3.6.0",
+ "dependsOn": [
+ "pkg:npm/picomatch@2.3.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/debug@3.2.7",
+ "dependsOn": [
+ "pkg:npm/ms@2.1.3"
+ ]
+ },
+ {
+ "ref": "pkg:npm/ignore-by-default@1.0.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/minimatch@3.1.2",
+ "dependsOn": [
+ "pkg:npm/brace-expansion@1.1.11"
+ ]
+ },
+ {
+ "ref": "pkg:npm/brace-expansion@1.1.11",
+ "dependsOn": [
+ "pkg:npm/balanced-match@1.0.2",
+ "pkg:npm/concat-map@0.0.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/balanced-match@1.0.2",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/concat-map@0.0.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/pstree.remy@1.1.8",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/simple-update-notifier@1.1.0",
+ "dependsOn": [
+ "pkg:npm/semver@7.0.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/semver@7.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/supports-color@5.5.0",
+ "dependsOn": [
+ "pkg:npm/has-flag@3.0.0"
+ ]
+ },
+ {
+ "ref": "pkg:npm/has-flag@3.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/touch@3.1.0",
+ "dependsOn": [
+ "pkg:npm/nopt@1.0.10"
+ ]
+ },
+ {
+ "ref": "pkg:npm/nopt@1.0.10",
+ "dependsOn": [
+ "pkg:npm/abbrev@1.1.1"
+ ]
+ },
+ {
+ "ref": "pkg:npm/abbrev@1.1.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/undefsafe@2.0.5",
+ "dependsOn": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/providers/tst_manifests/pnpm/package_json_deps_without_exhortignore_object/component_expected_sbom.json b/test/providers/tst_manifests/pnpm/package_json_deps_without_exhortignore_object/component_expected_sbom.json
new file mode 100644
index 0000000..6d9dbc8
--- /dev/null
+++ b/test/providers/tst_manifests/pnpm/package_json_deps_without_exhortignore_object/component_expected_sbom.json
@@ -0,0 +1,140 @@
+{
+ "bomFormat": "CycloneDX",
+ "specVersion": "1.4",
+ "version": 1,
+ "metadata": {
+ "timestamp": "2023-08-07T00:00:00.000Z",
+ "component": {
+ "name": "backend",
+ "version": "1.0.0",
+ "purl": "pkg:npm/backend@1.0.0",
+ "type": "application",
+ "bom-ref": "pkg:npm/backend@1.0.0"
+ }
+ },
+ "components": [
+ {
+ "name": "backend",
+ "version": "1.0.0",
+ "purl": "pkg:npm/backend@1.0.0",
+ "type": "application",
+ "bom-ref": "pkg:npm/backend@1.0.0"
+ },
+ {
+ "group": "@hapi",
+ "name": "joi",
+ "version": "17.1.1",
+ "purl": "pkg:npm/%40hapi/joi@17.1.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/%40hapi/joi@17.1.1"
+ },
+ {
+ "name": "axios",
+ "version": "0.19.2",
+ "purl": "pkg:npm/axios@0.19.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/axios@0.19.2"
+ },
+ {
+ "name": "backend",
+ "version": "0.0.0",
+ "purl": "pkg:npm/backend@0.0.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/backend@0.0.0"
+ },
+ {
+ "name": "bcryptjs",
+ "version": "2.4.3",
+ "purl": "pkg:npm/bcryptjs@2.4.3",
+ "type": "library",
+ "bom-ref": "pkg:npm/bcryptjs@2.4.3"
+ },
+ {
+ "name": "dotenv",
+ "version": "8.6.0",
+ "purl": "pkg:npm/dotenv@8.6.0",
+ "type": "library",
+ "bom-ref": "pkg:npm/dotenv@8.6.0"
+ },
+ {
+ "name": "express",
+ "version": "4.18.2",
+ "purl": "pkg:npm/express@4.18.2",
+ "type": "library",
+ "bom-ref": "pkg:npm/express@4.18.2"
+ },
+ {
+ "name": "jsonwebtoken",
+ "version": "8.5.1",
+ "purl": "pkg:npm/jsonwebtoken@8.5.1",
+ "type": "library",
+ "bom-ref": "pkg:npm/jsonwebtoken@8.5.1"
+ },
+ {
+ "name": "mongoose",
+ "version": "5.13.20",
+ "purl": "pkg:npm/mongoose@5.13.20",
+ "type": "library",
+ "bom-ref": "pkg:npm/mongoose@5.13.20"
+ },
+ {
+ "name": "nodemon",
+ "version": "2.0.22",
+ "purl": "pkg:npm/nodemon@2.0.22",
+ "type": "library",
+ "bom-ref": "pkg:npm/nodemon@2.0.22"
+ }
+ ],
+ "dependencies": [
+ {
+ "ref": "pkg:npm/backend@1.0.0",
+ "dependsOn": [
+ "pkg:npm/%40hapi/joi@17.1.1",
+ "pkg:npm/axios@0.19.2",
+ "pkg:npm/backend@0.0.0",
+ "pkg:npm/bcryptjs@2.4.3",
+ "pkg:npm/dotenv@8.6.0",
+ "pkg:npm/express@4.18.2",
+ "pkg:npm/jsonwebtoken@8.5.1",
+ "pkg:npm/mongoose@5.13.20",
+ "pkg:npm/nodemon@2.0.22"
+ ]
+ },
+ {
+ "ref": "pkg:npm/%40hapi/joi@17.1.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/axios@0.19.2",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/backend@0.0.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/bcryptjs@2.4.3",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/dotenv@8.6.0",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/express@4.18.2",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/jsonwebtoken@8.5.1",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/mongoose@5.13.20",
+ "dependsOn": []
+ },
+ {
+ "ref": "pkg:npm/nodemon@2.0.22",
+ "dependsOn": []
+ }
+ ]
+}
diff --git a/test/providers/tst_manifests/pnpm/package_json_deps_without_exhortignore_object/listing_component.json b/test/providers/tst_manifests/pnpm/package_json_deps_without_exhortignore_object/listing_component.json
new file mode 100644
index 0000000..095a040
--- /dev/null
+++ b/test/providers/tst_manifests/pnpm/package_json_deps_without_exhortignore_object/listing_component.json
@@ -0,0 +1,53 @@
+[
+ {
+ "version": "1.0.0",
+ "name": "backend",
+ "dependencies": {
+ "@hapi/joi": {
+ "version": "17.1.1",
+ "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-17.1.1.tgz",
+ "overridden": false
+ },
+ "axios": {
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
+ "overridden": false
+ },
+ "backend": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/backend/-/backend-0.0.0.tgz",
+ "overridden": false
+ },
+ "bcryptjs": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
+ "overridden": false
+ },
+ "dotenv": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
+ "overridden": false
+ },
+ "express": {
+ "version": "4.18.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
+ "overridden": false
+ },
+ "jsonwebtoken": {
+ "version": "8.5.1",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
+ "overridden": false
+ },
+ "mongoose": {
+ "version": "5.13.20",
+ "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.13.20.tgz",
+ "overridden": false
+ },
+ "nodemon": {
+ "version": "2.0.22",
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz",
+ "overridden": false
+ }
+ }
+ }
+]
\ No newline at end of file
diff --git a/test/providers/tst_manifests/pnpm/package_json_deps_without_exhortignore_object/listing_stack.json b/test/providers/tst_manifests/pnpm/package_json_deps_without_exhortignore_object/listing_stack.json
new file mode 100644
index 0000000..7fb95c7
--- /dev/null
+++ b/test/providers/tst_manifests/pnpm/package_json_deps_without_exhortignore_object/listing_stack.json
@@ -0,0 +1,1059 @@
+[
+ {
+ "version": "1.0.0",
+ "name": "backend",
+ "dependencies": {
+ "@hapi/joi": {
+ "version": "17.1.1",
+ "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-17.1.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "@hapi/address": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@hapi/address/-/address-4.1.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "@hapi/hoek": {
+ "version": "9.3.0"
+ }
+ }
+ },
+ "@hapi/formula": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-2.0.0.tgz",
+ "overridden": false
+ },
+ "@hapi/hoek": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
+ "overridden": false
+ },
+ "@hapi/pinpoint": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.1.tgz",
+ "overridden": false
+ },
+ "@hapi/topo": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "@hapi/hoek": {
+ "version": "9.3.0"
+ }
+ }
+ }
+ }
+ },
+ "axios": {
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
+ "overridden": false,
+ "dependencies": {
+ "follow-redirects": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
+ "overridden": false,
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "backend": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/backend/-/backend-0.0.0.tgz",
+ "overridden": false
+ },
+ "bcryptjs": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
+ "overridden": false
+ },
+ "dotenv": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
+ "overridden": false
+ },
+ "express": {
+ "version": "4.18.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
+ "overridden": false,
+ "dependencies": {
+ "accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "overridden": false,
+ "dependencies": {
+ "mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "overridden": false,
+ "dependencies": {
+ "mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "overridden": false
+ },
+ "body-parser": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "overridden": false
+ },
+ "content-type": {
+ "version": "1.0.5"
+ },
+ "debug": {
+ "version": "2.6.9"
+ },
+ "depd": {
+ "version": "2.0.0"
+ },
+ "destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "overridden": false
+ },
+ "http-errors": {
+ "version": "2.0.0"
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "overridden": false,
+ "dependencies": {
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "on-finished": {
+ "version": "2.4.1"
+ },
+ "qs": {
+ "version": "6.11.0"
+ },
+ "raw-body": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "bytes": {
+ "version": "3.1.2"
+ },
+ "http-errors": {
+ "version": "2.0.0"
+ },
+ "iconv-lite": {
+ "version": "0.4.24"
+ },
+ "unpipe": {
+ "version": "1.0.0"
+ }
+ }
+ },
+ "type-is": {
+ "version": "1.6.18"
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "overridden": false,
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.2.1"
+ }
+ }
+ },
+ "content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "overridden": false
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "overridden": false
+ },
+ "cookie": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "overridden": false
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "overridden": false,
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "overridden": false
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "overridden": false
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "overridden": false
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "overridden": false
+ },
+ "finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9"
+ },
+ "encodeurl": {
+ "version": "1.0.2"
+ },
+ "escape-html": {
+ "version": "1.0.3"
+ },
+ "on-finished": {
+ "version": "2.4.1"
+ },
+ "parseurl": {
+ "version": "1.3.3"
+ },
+ "statuses": {
+ "version": "2.0.1"
+ },
+ "unpipe": {
+ "version": "1.0.0"
+ }
+ }
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "overridden": false
+ },
+ "http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "depd": {
+ "version": "2.0.0"
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "overridden": false
+ },
+ "setprototypeof": {
+ "version": "1.2.0"
+ },
+ "statuses": {
+ "version": "2.0.1"
+ },
+ "toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "overridden": false
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "overridden": false
+ },
+ "on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "overridden": false
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "overridden": false
+ },
+ "proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "overridden": false,
+ "dependencies": {
+ "forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "overridden": false
+ },
+ "ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "overridden": false,
+ "dependencies": {
+ "call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "overridden": false,
+ "dependencies": {
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "overridden": false
+ },
+ "get-intrinsic": {
+ "version": "1.2.1"
+ }
+ }
+ },
+ "get-intrinsic": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "function-bind": {
+ "version": "1.1.1"
+ },
+ "has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+ "overridden": false
+ },
+ "has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "overridden": false
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "overridden": false,
+ "dependencies": {
+ "function-bind": {
+ "version": "1.1.1"
+ }
+ }
+ }
+ }
+ },
+ "object-inspect": {
+ "version": "1.12.3",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
+ "overridden": false
+ }
+ }
+ }
+ }
+ },
+ "range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "overridden": false
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "overridden": false
+ },
+ "send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9"
+ },
+ "depd": {
+ "version": "2.0.0"
+ },
+ "destroy": {
+ "version": "1.2.0"
+ },
+ "encodeurl": {
+ "version": "1.0.2"
+ },
+ "escape-html": {
+ "version": "1.0.3"
+ },
+ "etag": {
+ "version": "1.8.1"
+ },
+ "fresh": {
+ "version": "0.5.2"
+ },
+ "http-errors": {
+ "version": "2.0.0"
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "overridden": false
+ },
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "overridden": false
+ },
+ "on-finished": {
+ "version": "2.4.1"
+ },
+ "range-parser": {
+ "version": "1.2.1"
+ },
+ "statuses": {
+ "version": "2.0.1"
+ }
+ }
+ },
+ "serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "encodeurl": {
+ "version": "1.0.2"
+ },
+ "escape-html": {
+ "version": "1.0.3"
+ },
+ "parseurl": {
+ "version": "1.3.3"
+ },
+ "send": {
+ "version": "0.18.0"
+ }
+ }
+ },
+ "setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "overridden": false
+ },
+ "statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "overridden": false
+ },
+ "type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "overridden": false,
+ "dependencies": {
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "overridden": false
+ },
+ "mime-types": {
+ "version": "2.1.35"
+ }
+ }
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "overridden": false
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "jsonwebtoken": {
+ "version": "8.5.1",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "jws": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
+ "overridden": false,
+ "dependencies": {
+ "jwa": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "overridden": false
+ },
+ "ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "overridden": false,
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.2.1"
+ }
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1"
+ }
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1"
+ }
+ }
+ },
+ "lodash.includes": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
+ "overridden": false
+ },
+ "lodash.isboolean": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
+ "overridden": false
+ },
+ "lodash.isinteger": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
+ "overridden": false
+ },
+ "lodash.isnumber": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
+ "overridden": false
+ },
+ "lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "overridden": false
+ },
+ "lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "overridden": false
+ },
+ "lodash.once": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+ "overridden": false
+ },
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "overridden": false
+ },
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "mongoose": {
+ "version": "5.13.20",
+ "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.13.20.tgz",
+ "overridden": false,
+ "dependencies": {
+ "@types/bson": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.5.tgz",
+ "overridden": false,
+ "dependencies": {
+ "@types/node": {
+ "version": "20.4.8",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.8.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "@types/mongodb": {
+ "version": "3.6.20",
+ "resolved": "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.20.tgz",
+ "overridden": false,
+ "dependencies": {
+ "@types/bson": {
+ "version": "4.0.5"
+ },
+ "@types/node": {
+ "version": "20.4.8"
+ }
+ }
+ },
+ "bson": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz",
+ "overridden": false
+ },
+ "kareem": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz",
+ "overridden": false
+ },
+ "mongodb": {
+ "version": "3.7.4",
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.7.4.tgz",
+ "overridden": false,
+ "dependencies": {
+ "bl": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "overridden": false,
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "overridden": false
+ },
+ "inherits": {
+ "version": "2.0.4"
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "overridden": false
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "overridden": false
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "overridden": false
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1"
+ }
+ }
+ },
+ "bson": {
+ "version": "1.1.6"
+ },
+ "denque": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz",
+ "overridden": false
+ },
+ "optional-require": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.1.8.tgz",
+ "overridden": false,
+ "dependencies": {
+ "require-at": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1"
+ },
+ "saslprep": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
+ "overridden": false,
+ "dependencies": {
+ "sparse-bitfield": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
+ "overridden": false,
+ "dependencies": {
+ "memory-pager": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
+ "overridden": false
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "mongoose-legacy-pluralize": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz",
+ "overridden": false,
+ "dependencies": {
+ "mongoose": {
+ "version": "5.13.20"
+ }
+ }
+ },
+ "mpath": {
+ "version": "0.8.4",
+ "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.8.4.tgz",
+ "overridden": false
+ },
+ "mquery": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.5.tgz",
+ "overridden": false,
+ "dependencies": {
+ "bluebird": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
+ "overridden": false
+ },
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0"
+ }
+ }
+ },
+ "regexp-clone": {
+ "version": "1.0.0"
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "overridden": false
+ },
+ "sliced": {
+ "version": "1.0.1"
+ }
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "overridden": false
+ },
+ "optional-require": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.0.3.tgz",
+ "overridden": false
+ },
+ "regexp-clone": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz",
+ "overridden": false
+ },
+ "safe-buffer": {
+ "version": "5.2.1"
+ },
+ "sift": {
+ "version": "13.5.2",
+ "resolved": "https://registry.npmjs.org/sift/-/sift-13.5.2.tgz",
+ "overridden": false
+ },
+ "sliced": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "nodemon": {
+ "version": "2.0.22",
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz",
+ "overridden": false,
+ "dependencies": {
+ "chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "overridden": false,
+ "dependencies": {
+ "anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "overridden": false,
+ "dependencies": {
+ "normalize-path": {
+ "version": "3.0.0"
+ },
+ "picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "overridden": false,
+ "dependencies": {
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "overridden": false,
+ "dependencies": {
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "overridden": false
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "overridden": false
+ },
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "overridden": false,
+ "dependencies": {
+ "is-glob": {
+ "version": "4.0.3"
+ }
+ }
+ },
+ "is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "overridden": false,
+ "dependencies": {
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "overridden": false
+ },
+ "readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "picomatch": {
+ "version": "2.3.1"
+ }
+ }
+ }
+ }
+ },
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "overridden": false,
+ "dependencies": {
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "ignore-by-default": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
+ "overridden": false
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "overridden": false,
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "overridden": false,
+ "dependencies": {
+ "balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "overridden": false
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "overridden": false
+ }
+ }
+ }
+ }
+ },
+ "pstree.remy": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
+ "overridden": false
+ },
+ "semver": {
+ "version": "5.7.2"
+ },
+ "simple-update-notifier": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "semver": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "overridden": false
+ }
+ }
+ },
+ "touch": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
+ "overridden": false,
+ "dependencies": {
+ "nopt": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+ "overridden": false,
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "overridden": false
+ }
+ }
+ }
+ }
+ },
+ "undefsafe": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
+ "overridden": false
+ }
+ }
+ }
+ }
+ }
+]
\ No newline at end of file
diff --git a/test/providers/tst_manifests/pnpm/package_json_deps_without_exhortignore_object/package.json b/test/providers/tst_manifests/pnpm/package_json_deps_without_exhortignore_object/package.json
new file mode 100644
index 0000000..0bd72e3
--- /dev/null
+++ b/test/providers/tst_manifests/pnpm/package_json_deps_without_exhortignore_object/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "backend",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "start": "node app.js",
+ "server": "nodemon server.js",
+ "client-install": "npm install --prefix ../frontend",
+ "client": "npm start --prefix ../frontend",
+ "dev": "concurrently \"npm run server\" \"npm run client\"",
+ "heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix ../frontend && npm run build --prefix ../frontend"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "@hapi/joi": "^17.1.1",
+ "backend": "^0.0.0",
+ "bcryptjs": "^2.4.3",
+ "dotenv": "^8.2.0",
+ "express": "^4.17.1",
+ "jsonwebtoken": "^8.5.1",
+ "mongoose": "^5.9.18",
+ "nodemon": "^2.0.4",
+ "axios": "^0.19.0"
+ }
+}
diff --git a/test/providers/tst_manifests/pnpm/package_json_deps_without_exhortignore_object/pnpm-lock.yaml b/test/providers/tst_manifests/pnpm/package_json_deps_without_exhortignore_object/pnpm-lock.yaml
new file mode 100644
index 0000000..3a42457
--- /dev/null
+++ b/test/providers/tst_manifests/pnpm/package_json_deps_without_exhortignore_object/pnpm-lock.yaml
@@ -0,0 +1,1269 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ '@hapi/joi':
+ specifier: ^17.1.1
+ version: 17.1.1
+ axios:
+ specifier: ^0.19.0
+ version: 0.19.2
+ backend:
+ specifier: ^0.0.0
+ version: 0.0.0
+ bcryptjs:
+ specifier: ^2.4.3
+ version: 2.4.3
+ dotenv:
+ specifier: ^8.2.0
+ version: 8.6.0
+ express:
+ specifier: ^4.17.1
+ version: 4.21.2
+ jsonwebtoken:
+ specifier: ^8.5.1
+ version: 8.5.1
+ mongoose:
+ specifier: ^5.9.18
+ version: 5.13.23
+ nodemon:
+ specifier: ^2.0.4
+ version: 2.0.22
+
+packages:
+
+ '@hapi/address@4.1.0':
+ resolution: {integrity: sha512-SkszZf13HVgGmChdHo/PxchnSaCJ6cetVqLzyciudzZRT0jcOouIF/Q93mgjw8cce+D+4F4C1Z/WrfFN+O3VHQ==}
+ deprecated: Moved to 'npm install @sideway/address'
+
+ '@hapi/formula@2.0.0':
+ resolution: {integrity: sha512-V87P8fv7PI0LH7LiVi8Lkf3x+KCO7pQozXRssAHNXXL9L1K+uyu4XypLXwxqVDKgyQai6qj3/KteNlrqDx4W5A==}
+ deprecated: Moved to 'npm install @sideway/formula'
+
+ '@hapi/hoek@9.3.0':
+ resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==}
+
+ '@hapi/joi@17.1.1':
+ resolution: {integrity: sha512-p4DKeZAoeZW4g3u7ZeRo+vCDuSDgSvtsB/NpfjXEHTUjSeINAi/RrVOWiVQ1isaoLzMvFEhe8n5065mQq1AdQg==}
+ deprecated: Switch to 'npm install joi'
+
+ '@hapi/pinpoint@2.0.1':
+ resolution: {integrity: sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==}
+
+ '@hapi/topo@5.1.0':
+ resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==}
+
+ '@types/bson@4.0.5':
+ resolution: {integrity: sha512-vVLwMUqhYJSQ/WKcE60eFqcyuWse5fGH+NMAXHuKrUAPoryq3ATxk5o4bgYNtg5aOM4APVg7Hnb3ASqUYG0PKg==}
+
+ '@types/mongodb@3.6.20':
+ resolution: {integrity: sha512-WcdpPJCakFzcWWD9juKoZbRtQxKIMYF/JIAM4JrNHrMcnJL6/a2NWjXxW7fo9hxboxxkg+icff8d7+WIEvKgYQ==}
+
+ '@types/node@22.14.1':
+ resolution: {integrity: sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==}
+
+ accepts@1.3.8:
+ resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
+ engines: {node: '>= 0.6'}
+
+ anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+
+ array-flatten@1.1.1:
+ resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
+
+ axios@0.19.2:
+ resolution: {integrity: sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==}
+ deprecated: Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410
+
+ backend@0.0.0:
+ resolution: {integrity: sha512-Fq2aG5+zmmsKv2Dhm3ijAU5spnKOb5ldJlnnC/Vhk6n8In6zaq9eCPBMRiz2j94P/r84QEaBmtwh9tjaDPiQqg==}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ bcryptjs@2.4.3:
+ resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==}
+
+ binary-extensions@2.3.0:
+ resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
+ engines: {node: '>=8'}
+
+ bl@2.2.1:
+ resolution: {integrity: sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==}
+
+ bluebird@3.5.1:
+ resolution: {integrity: sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==}
+
+ body-parser@1.20.3:
+ resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
+ brace-expansion@1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
+ bson@1.1.6:
+ resolution: {integrity: sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==}
+ engines: {node: '>=0.6.19'}
+
+ buffer-equal-constant-time@1.0.1:
+ resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==}
+
+ bytes@3.1.2:
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+ engines: {node: '>= 0.8'}
+
+ call-bind-apply-helpers@1.0.2:
+ resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+ engines: {node: '>= 0.4'}
+
+ call-bound@1.0.4:
+ resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
+ engines: {node: '>= 0.4'}
+
+ chokidar@3.6.0:
+ resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+ engines: {node: '>= 8.10.0'}
+
+ concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ content-disposition@0.5.4:
+ resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
+ engines: {node: '>= 0.6'}
+
+ content-type@1.0.5:
+ resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
+ engines: {node: '>= 0.6'}
+
+ cookie-signature@1.0.6:
+ resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
+
+ cookie@0.7.1:
+ resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==}
+ engines: {node: '>= 0.6'}
+
+ core-util-is@1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+
+ debug@2.6.9:
+ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@3.1.0:
+ resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ debug@3.2.7:
+ resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ denque@1.5.1:
+ resolution: {integrity: sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==}
+ engines: {node: '>=0.10'}
+
+ depd@2.0.0:
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
+
+ destroy@1.2.0:
+ resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
+ dotenv@8.6.0:
+ resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==}
+ engines: {node: '>=10'}
+
+ dunder-proto@1.0.1:
+ resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+ engines: {node: '>= 0.4'}
+
+ ecdsa-sig-formatter@1.0.11:
+ resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==}
+
+ ee-first@1.1.1:
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+
+ encodeurl@1.0.2:
+ resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
+ engines: {node: '>= 0.8'}
+
+ encodeurl@2.0.0:
+ resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
+ engines: {node: '>= 0.8'}
+
+ es-define-property@1.0.1:
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ es-object-atoms@1.1.1:
+ resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
+ engines: {node: '>= 0.4'}
+
+ escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+
+ etag@1.8.1:
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
+
+ express@4.21.2:
+ resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==}
+ engines: {node: '>= 0.10.0'}
+
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
+ finalhandler@1.3.1:
+ resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==}
+ engines: {node: '>= 0.8'}
+
+ follow-redirects@1.5.10:
+ resolution: {integrity: sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==}
+ engines: {node: '>=4.0'}
+
+ forwarded@0.2.0:
+ resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
+ engines: {node: '>= 0.6'}
+
+ fresh@0.5.2:
+ resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
+ engines: {node: '>= 0.6'}
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ get-intrinsic@1.3.0:
+ resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
+ engines: {node: '>= 0.4'}
+
+ get-proto@1.0.1:
+ resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+ engines: {node: '>= 0.4'}
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
+ gopd@1.2.0:
+ resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+ engines: {node: '>= 0.4'}
+
+ has-flag@3.0.0:
+ resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
+ engines: {node: '>=4'}
+
+ has-symbols@1.1.0:
+ resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
+ engines: {node: '>= 0.4'}
+
+ hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+
+ http-errors@2.0.0:
+ resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
+ engines: {node: '>= 0.8'}
+
+ iconv-lite@0.4.24:
+ resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ engines: {node: '>=0.10.0'}
+
+ ignore-by-default@1.0.1:
+ resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==}
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ ipaddr.js@1.9.1:
+ resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
+ engines: {node: '>= 0.10'}
+
+ is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+
+ jsonwebtoken@8.5.1:
+ resolution: {integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==}
+ engines: {node: '>=4', npm: '>=1.4.28'}
+
+ jwa@1.4.1:
+ resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==}
+
+ jws@3.2.2:
+ resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==}
+
+ kareem@2.3.2:
+ resolution: {integrity: sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==}
+
+ lodash.includes@4.3.0:
+ resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==}
+
+ lodash.isboolean@3.0.3:
+ resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==}
+
+ lodash.isinteger@4.0.4:
+ resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==}
+
+ lodash.isnumber@3.0.3:
+ resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==}
+
+ lodash.isplainobject@4.0.6:
+ resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
+
+ lodash.isstring@4.0.1:
+ resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==}
+
+ lodash.once@4.1.1:
+ resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==}
+
+ math-intrinsics@1.1.0:
+ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+ engines: {node: '>= 0.4'}
+
+ media-typer@0.3.0:
+ resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
+ engines: {node: '>= 0.6'}
+
+ memory-pager@1.5.0:
+ resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==}
+
+ merge-descriptors@1.0.3:
+ resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==}
+
+ methods@1.1.2:
+ resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
+ engines: {node: '>= 0.6'}
+
+ mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+
+ mime@1.6.0:
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+
+ mongodb@3.7.4:
+ resolution: {integrity: sha512-K5q8aBqEXMwWdVNh94UQTwZ6BejVbFhh1uB6c5FKtPE9eUMZPUO3sRZdgIEcHSrAWmxzpG/FeODDKL388sqRmw==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ aws4: '*'
+ bson-ext: '*'
+ kerberos: '*'
+ mongodb-client-encryption: '*'
+ mongodb-extjson: '*'
+ snappy: '*'
+ peerDependenciesMeta:
+ aws4:
+ optional: true
+ bson-ext:
+ optional: true
+ kerberos:
+ optional: true
+ mongodb-client-encryption:
+ optional: true
+ mongodb-extjson:
+ optional: true
+ snappy:
+ optional: true
+
+ mongoose-legacy-pluralize@1.0.2:
+ resolution: {integrity: sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==}
+ peerDependencies:
+ mongoose: '*'
+
+ mongoose@5.13.23:
+ resolution: {integrity: sha512-Q5bo1yYOcH2wbBPP4tGmcY5VKsFkQcjUDh66YjrbneAFB3vNKQwLvteRFLuLiU17rA5SDl3UMcMJLD9VS8ng2Q==}
+ engines: {node: '>=4.0.0'}
+
+ mpath@0.8.4:
+ resolution: {integrity: sha512-DTxNZomBcTWlrMW76jy1wvV37X/cNNxPW1y2Jzd4DZkAaC5ZGsm8bfGfNOthcDuRJujXLqiuS6o3Tpy0JEoh7g==}
+ engines: {node: '>=4.0.0'}
+
+ mquery@3.2.5:
+ resolution: {integrity: sha512-VjOKHHgU84wij7IUoZzFRU07IAxd5kWJaDmyUzQlbjHjyoeK5TNeeo8ZsFDtTYnSgpW6n/nMNIHvE3u8Lbrf4A==}
+ engines: {node: '>=4.0.0'}
+
+ ms@2.0.0:
+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
+
+ ms@2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ negotiator@0.6.3:
+ resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
+ engines: {node: '>= 0.6'}
+
+ nodemon@2.0.22:
+ resolution: {integrity: sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==}
+ engines: {node: '>=8.10.0'}
+ hasBin: true
+
+ normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+
+ object-inspect@1.13.4:
+ resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
+ engines: {node: '>= 0.4'}
+
+ on-finished@2.4.1:
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
+
+ optional-require@1.0.3:
+ resolution: {integrity: sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA==}
+ engines: {node: '>=4'}
+
+ optional-require@1.1.8:
+ resolution: {integrity: sha512-jq83qaUb0wNg9Krv1c5OQ+58EK+vHde6aBPzLvPPqJm89UQWsvSuFy9X/OSNJnFeSOKo7btE0n8Nl2+nE+z5nA==}
+ engines: {node: '>=4'}
+
+ parseurl@1.3.3:
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
+
+ path-to-regexp@0.1.12:
+ resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==}
+
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
+ proxy-addr@2.0.7:
+ resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
+ engines: {node: '>= 0.10'}
+
+ pstree.remy@1.1.8:
+ resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==}
+
+ qs@6.13.0:
+ resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==}
+ engines: {node: '>=0.6'}
+
+ range-parser@1.2.1:
+ resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+ engines: {node: '>= 0.6'}
+
+ raw-body@2.5.2:
+ resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
+ engines: {node: '>= 0.8'}
+
+ readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+
+ readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+
+ regexp-clone@1.0.0:
+ resolution: {integrity: sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==}
+
+ require-at@1.0.6:
+ resolution: {integrity: sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==}
+ engines: {node: '>=4'}
+
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
+ safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
+ safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+
+ saslprep@1.0.3:
+ resolution: {integrity: sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==}
+ engines: {node: '>=6'}
+
+ semver@5.7.2:
+ resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
+ hasBin: true
+
+ semver@7.0.0:
+ resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==}
+ hasBin: true
+
+ send@0.19.0:
+ resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==}
+ engines: {node: '>= 0.8.0'}
+
+ serve-static@1.16.2:
+ resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==}
+ engines: {node: '>= 0.8.0'}
+
+ setprototypeof@1.2.0:
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+
+ side-channel-list@1.0.0:
+ resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-map@1.0.1:
+ resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-weakmap@1.0.2:
+ resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
+ engines: {node: '>= 0.4'}
+
+ side-channel@1.1.0:
+ resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
+ engines: {node: '>= 0.4'}
+
+ sift@13.5.2:
+ resolution: {integrity: sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==}
+
+ simple-update-notifier@1.1.0:
+ resolution: {integrity: sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==}
+ engines: {node: '>=8.10.0'}
+
+ sliced@1.0.1:
+ resolution: {integrity: sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==}
+
+ sparse-bitfield@3.0.3:
+ resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==}
+
+ statuses@2.0.1:
+ resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
+ engines: {node: '>= 0.8'}
+
+ string_decoder@1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+
+ supports-color@5.5.0:
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
+
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+
+ toidentifier@1.0.1:
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+ engines: {node: '>=0.6'}
+
+ touch@3.1.1:
+ resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==}
+ hasBin: true
+
+ type-is@1.6.18:
+ resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
+ engines: {node: '>= 0.6'}
+
+ undefsafe@2.0.5:
+ resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==}
+
+ undici-types@6.21.0:
+ resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
+
+ unpipe@1.0.0:
+ resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+ engines: {node: '>= 0.8'}
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ utils-merge@1.0.1:
+ resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
+ engines: {node: '>= 0.4.0'}
+
+ vary@1.1.2:
+ resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
+ engines: {node: '>= 0.8'}
+
+snapshots:
+
+ '@hapi/address@4.1.0':
+ dependencies:
+ '@hapi/hoek': 9.3.0
+
+ '@hapi/formula@2.0.0': {}
+
+ '@hapi/hoek@9.3.0': {}
+
+ '@hapi/joi@17.1.1':
+ dependencies:
+ '@hapi/address': 4.1.0
+ '@hapi/formula': 2.0.0
+ '@hapi/hoek': 9.3.0
+ '@hapi/pinpoint': 2.0.1
+ '@hapi/topo': 5.1.0
+
+ '@hapi/pinpoint@2.0.1': {}
+
+ '@hapi/topo@5.1.0':
+ dependencies:
+ '@hapi/hoek': 9.3.0
+
+ '@types/bson@4.0.5':
+ dependencies:
+ '@types/node': 22.14.1
+
+ '@types/mongodb@3.6.20':
+ dependencies:
+ '@types/bson': 4.0.5
+ '@types/node': 22.14.1
+
+ '@types/node@22.14.1':
+ dependencies:
+ undici-types: 6.21.0
+
+ accepts@1.3.8:
+ dependencies:
+ mime-types: 2.1.35
+ negotiator: 0.6.3
+
+ anymatch@3.1.3:
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+
+ array-flatten@1.1.1: {}
+
+ axios@0.19.2:
+ dependencies:
+ follow-redirects: 1.5.10
+ transitivePeerDependencies:
+ - supports-color
+
+ backend@0.0.0: {}
+
+ balanced-match@1.0.2: {}
+
+ bcryptjs@2.4.3: {}
+
+ binary-extensions@2.3.0: {}
+
+ bl@2.2.1:
+ dependencies:
+ readable-stream: 2.3.8
+ safe-buffer: 5.2.1
+
+ bluebird@3.5.1: {}
+
+ body-parser@1.20.3:
+ dependencies:
+ bytes: 3.1.2
+ content-type: 1.0.5
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ http-errors: 2.0.0
+ iconv-lite: 0.4.24
+ on-finished: 2.4.1
+ qs: 6.13.0
+ raw-body: 2.5.2
+ type-is: 1.6.18
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ brace-expansion@1.1.11:
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
+ bson@1.1.6: {}
+
+ buffer-equal-constant-time@1.0.1: {}
+
+ bytes@3.1.2: {}
+
+ call-bind-apply-helpers@1.0.2:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+
+ call-bound@1.0.4:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
+
+ chokidar@3.6.0:
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.3
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ concat-map@0.0.1: {}
+
+ content-disposition@0.5.4:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ content-type@1.0.5: {}
+
+ cookie-signature@1.0.6: {}
+
+ cookie@0.7.1: {}
+
+ core-util-is@1.0.3: {}
+
+ debug@2.6.9:
+ dependencies:
+ ms: 2.0.0
+
+ debug@3.1.0:
+ dependencies:
+ ms: 2.0.0
+
+ debug@3.2.7(supports-color@5.5.0):
+ dependencies:
+ ms: 2.1.3
+ optionalDependencies:
+ supports-color: 5.5.0
+
+ denque@1.5.1: {}
+
+ depd@2.0.0: {}
+
+ destroy@1.2.0: {}
+
+ dotenv@8.6.0: {}
+
+ dunder-proto@1.0.1:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ ecdsa-sig-formatter@1.0.11:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ ee-first@1.1.1: {}
+
+ encodeurl@1.0.2: {}
+
+ encodeurl@2.0.0: {}
+
+ es-define-property@1.0.1: {}
+
+ es-errors@1.3.0: {}
+
+ es-object-atoms@1.1.1:
+ dependencies:
+ es-errors: 1.3.0
+
+ escape-html@1.0.3: {}
+
+ etag@1.8.1: {}
+
+ express@4.21.2:
+ dependencies:
+ accepts: 1.3.8
+ array-flatten: 1.1.1
+ body-parser: 1.20.3
+ content-disposition: 0.5.4
+ content-type: 1.0.5
+ cookie: 0.7.1
+ cookie-signature: 1.0.6
+ debug: 2.6.9
+ depd: 2.0.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 1.3.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ merge-descriptors: 1.0.3
+ methods: 1.1.2
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ path-to-regexp: 0.1.12
+ proxy-addr: 2.0.7
+ qs: 6.13.0
+ range-parser: 1.2.1
+ safe-buffer: 5.2.1
+ send: 0.19.0
+ serve-static: 1.16.2
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ type-is: 1.6.18
+ utils-merge: 1.0.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ finalhandler@1.3.1:
+ dependencies:
+ debug: 2.6.9
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ statuses: 2.0.1
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ follow-redirects@1.5.10:
+ dependencies:
+ debug: 3.1.0
+ transitivePeerDependencies:
+ - supports-color
+
+ forwarded@0.2.0: {}
+
+ fresh@0.5.2: {}
+
+ fsevents@2.3.3:
+ optional: true
+
+ function-bind@1.1.2: {}
+
+ get-intrinsic@1.3.0:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ math-intrinsics: 1.1.0
+
+ get-proto@1.0.1:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.1
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ gopd@1.2.0: {}
+
+ has-flag@3.0.0: {}
+
+ has-symbols@1.1.0: {}
+
+ hasown@2.0.2:
+ dependencies:
+ function-bind: 1.1.2
+
+ http-errors@2.0.0:
+ dependencies:
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ toidentifier: 1.0.1
+
+ iconv-lite@0.4.24:
+ dependencies:
+ safer-buffer: 2.1.2
+
+ ignore-by-default@1.0.1: {}
+
+ inherits@2.0.4: {}
+
+ ipaddr.js@1.9.1: {}
+
+ is-binary-path@2.1.0:
+ dependencies:
+ binary-extensions: 2.3.0
+
+ is-extglob@2.1.1: {}
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-number@7.0.0: {}
+
+ isarray@1.0.0: {}
+
+ jsonwebtoken@8.5.1:
+ dependencies:
+ jws: 3.2.2
+ lodash.includes: 4.3.0
+ lodash.isboolean: 3.0.3
+ lodash.isinteger: 4.0.4
+ lodash.isnumber: 3.0.3
+ lodash.isplainobject: 4.0.6
+ lodash.isstring: 4.0.1
+ lodash.once: 4.1.1
+ ms: 2.1.3
+ semver: 5.7.2
+
+ jwa@1.4.1:
+ dependencies:
+ buffer-equal-constant-time: 1.0.1
+ ecdsa-sig-formatter: 1.0.11
+ safe-buffer: 5.2.1
+
+ jws@3.2.2:
+ dependencies:
+ jwa: 1.4.1
+ safe-buffer: 5.2.1
+
+ kareem@2.3.2: {}
+
+ lodash.includes@4.3.0: {}
+
+ lodash.isboolean@3.0.3: {}
+
+ lodash.isinteger@4.0.4: {}
+
+ lodash.isnumber@3.0.3: {}
+
+ lodash.isplainobject@4.0.6: {}
+
+ lodash.isstring@4.0.1: {}
+
+ lodash.once@4.1.1: {}
+
+ math-intrinsics@1.1.0: {}
+
+ media-typer@0.3.0: {}
+
+ memory-pager@1.5.0:
+ optional: true
+
+ merge-descriptors@1.0.3: {}
+
+ methods@1.1.2: {}
+
+ mime-db@1.52.0: {}
+
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
+
+ mime@1.6.0: {}
+
+ minimatch@3.1.2:
+ dependencies:
+ brace-expansion: 1.1.11
+
+ mongodb@3.7.4:
+ dependencies:
+ bl: 2.2.1
+ bson: 1.1.6
+ denque: 1.5.1
+ optional-require: 1.1.8
+ safe-buffer: 5.2.1
+ optionalDependencies:
+ saslprep: 1.0.3
+
+ mongoose-legacy-pluralize@1.0.2(mongoose@5.13.23):
+ dependencies:
+ mongoose: 5.13.23
+
+ mongoose@5.13.23:
+ dependencies:
+ '@types/bson': 4.0.5
+ '@types/mongodb': 3.6.20
+ bson: 1.1.6
+ kareem: 2.3.2
+ mongodb: 3.7.4
+ mongoose-legacy-pluralize: 1.0.2(mongoose@5.13.23)
+ mpath: 0.8.4
+ mquery: 3.2.5
+ ms: 2.1.2
+ optional-require: 1.0.3
+ regexp-clone: 1.0.0
+ safe-buffer: 5.2.1
+ sift: 13.5.2
+ sliced: 1.0.1
+ transitivePeerDependencies:
+ - aws4
+ - bson-ext
+ - kerberos
+ - mongodb-client-encryption
+ - mongodb-extjson
+ - snappy
+ - supports-color
+
+ mpath@0.8.4: {}
+
+ mquery@3.2.5:
+ dependencies:
+ bluebird: 3.5.1
+ debug: 3.1.0
+ regexp-clone: 1.0.0
+ safe-buffer: 5.1.2
+ sliced: 1.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ ms@2.0.0: {}
+
+ ms@2.1.2: {}
+
+ ms@2.1.3: {}
+
+ negotiator@0.6.3: {}
+
+ nodemon@2.0.22:
+ dependencies:
+ chokidar: 3.6.0
+ debug: 3.2.7(supports-color@5.5.0)
+ ignore-by-default: 1.0.1
+ minimatch: 3.1.2
+ pstree.remy: 1.1.8
+ semver: 5.7.2
+ simple-update-notifier: 1.1.0
+ supports-color: 5.5.0
+ touch: 3.1.1
+ undefsafe: 2.0.5
+
+ normalize-path@3.0.0: {}
+
+ object-inspect@1.13.4: {}
+
+ on-finished@2.4.1:
+ dependencies:
+ ee-first: 1.1.1
+
+ optional-require@1.0.3: {}
+
+ optional-require@1.1.8:
+ dependencies:
+ require-at: 1.0.6
+
+ parseurl@1.3.3: {}
+
+ path-to-regexp@0.1.12: {}
+
+ picomatch@2.3.1: {}
+
+ process-nextick-args@2.0.1: {}
+
+ proxy-addr@2.0.7:
+ dependencies:
+ forwarded: 0.2.0
+ ipaddr.js: 1.9.1
+
+ pstree.remy@1.1.8: {}
+
+ qs@6.13.0:
+ dependencies:
+ side-channel: 1.1.0
+
+ range-parser@1.2.1: {}
+
+ raw-body@2.5.2:
+ dependencies:
+ bytes: 3.1.2
+ http-errors: 2.0.0
+ iconv-lite: 0.4.24
+ unpipe: 1.0.0
+
+ readable-stream@2.3.8:
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+
+ readdirp@3.6.0:
+ dependencies:
+ picomatch: 2.3.1
+
+ regexp-clone@1.0.0: {}
+
+ require-at@1.0.6: {}
+
+ safe-buffer@5.1.2: {}
+
+ safe-buffer@5.2.1: {}
+
+ safer-buffer@2.1.2: {}
+
+ saslprep@1.0.3:
+ dependencies:
+ sparse-bitfield: 3.0.3
+ optional: true
+
+ semver@5.7.2: {}
+
+ semver@7.0.0: {}
+
+ send@0.19.0:
+ dependencies:
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ mime: 1.6.0
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ serve-static@1.16.2:
+ dependencies:
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 0.19.0
+ transitivePeerDependencies:
+ - supports-color
+
+ setprototypeof@1.2.0: {}
+
+ side-channel-list@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-map@1.0.1:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-weakmap@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-map: 1.0.1
+
+ side-channel@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-list: 1.0.0
+ side-channel-map: 1.0.1
+ side-channel-weakmap: 1.0.2
+
+ sift@13.5.2: {}
+
+ simple-update-notifier@1.1.0:
+ dependencies:
+ semver: 7.0.0
+
+ sliced@1.0.1: {}
+
+ sparse-bitfield@3.0.3:
+ dependencies:
+ memory-pager: 1.5.0
+ optional: true
+
+ statuses@2.0.1: {}
+
+ string_decoder@1.1.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
+ supports-color@5.5.0:
+ dependencies:
+ has-flag: 3.0.0
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ toidentifier@1.0.1: {}
+
+ touch@3.1.1: {}
+
+ type-is@1.6.18:
+ dependencies:
+ media-typer: 0.3.0
+ mime-types: 2.1.35
+
+ undefsafe@2.0.5: {}
+
+ undici-types@6.21.0: {}
+
+ unpipe@1.0.0: {}
+
+ util-deprecate@1.0.2: {}
+
+ utils-merge@1.0.1: {}
+
+ vary@1.1.2: {}
diff --git a/test/providers/tst_manifests/pnpm/package_json_deps_without_exhortignore_object/stack_expected_sbom.json b/test/providers/tst_manifests/pnpm/package_json_deps_without_exhortignore_object/stack_expected_sbom.json
new file mode 100644
index 0000000..ad479d0
--- /dev/null
+++ b/test/providers/tst_manifests/pnpm/package_json_deps_without_exhortignore_object/stack_expected_sbom.json
@@ -0,0 +1,1893 @@
+{
+ "bomFormat" : "CycloneDX",
+ "specVersion" : "1.4",
+ "version" : 1,
+ "metadata" : {
+ "timestamp" : "2023-08-07T00:00:00.000Z",
+ "component" : {
+ "name" : "backend",
+ "version" : "1.0.0",
+ "purl" : "pkg:npm/backend@1.0.0",
+ "type" : "application",
+ "bom-ref" : "pkg:npm/backend@1.0.0"
+ }
+ },
+ "components" : [
+ {
+ "name" : "backend",
+ "version" : "1.0.0",
+ "purl" : "pkg:npm/backend@1.0.0",
+ "type" : "application",
+ "bom-ref" : "pkg:npm/backend@1.0.0"
+ },
+ {
+ "group" : "@hapi",
+ "name" : "joi",
+ "version" : "17.1.1",
+ "purl" : "pkg:npm/%40hapi/joi@17.1.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/%40hapi/joi@17.1.1"
+ },
+ {
+ "group" : "@hapi",
+ "name" : "address",
+ "version" : "4.1.0",
+ "purl" : "pkg:npm/%40hapi/address@4.1.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/%40hapi/address@4.1.0"
+ },
+ {
+ "group" : "@hapi",
+ "name" : "hoek",
+ "version" : "9.3.0",
+ "purl" : "pkg:npm/%40hapi/hoek@9.3.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/%40hapi/hoek@9.3.0"
+ },
+ {
+ "group" : "@hapi",
+ "name" : "formula",
+ "version" : "2.0.0",
+ "purl" : "pkg:npm/%40hapi/formula@2.0.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/%40hapi/formula@2.0.0"
+ },
+ {
+ "group" : "@hapi",
+ "name" : "pinpoint",
+ "version" : "2.0.1",
+ "purl" : "pkg:npm/%40hapi/pinpoint@2.0.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/%40hapi/pinpoint@2.0.1"
+ },
+ {
+ "group" : "@hapi",
+ "name" : "topo",
+ "version" : "5.1.0",
+ "purl" : "pkg:npm/%40hapi/topo@5.1.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/%40hapi/topo@5.1.0"
+ },
+ {
+ "name" : "axios",
+ "version" : "0.19.2",
+ "purl" : "pkg:npm/axios@0.19.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/axios@0.19.2"
+ },
+ {
+ "name" : "follow-redirects",
+ "version" : "1.5.10",
+ "purl" : "pkg:npm/follow-redirects@1.5.10",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/follow-redirects@1.5.10"
+ },
+ {
+ "name" : "debug",
+ "version" : "3.1.0",
+ "purl" : "pkg:npm/debug@3.1.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/debug@3.1.0"
+ },
+ {
+ "name" : "ms",
+ "version" : "2.0.0",
+ "purl" : "pkg:npm/ms@2.0.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/ms@2.0.0"
+ },
+ {
+ "name" : "backend",
+ "version" : "0.0.0",
+ "purl" : "pkg:npm/backend@0.0.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/backend@0.0.0"
+ },
+ {
+ "name" : "bcryptjs",
+ "version" : "2.4.3",
+ "purl" : "pkg:npm/bcryptjs@2.4.3",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/bcryptjs@2.4.3"
+ },
+ {
+ "name" : "dotenv",
+ "version" : "8.6.0",
+ "purl" : "pkg:npm/dotenv@8.6.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/dotenv@8.6.0"
+ },
+ {
+ "name" : "express",
+ "version" : "4.18.2",
+ "purl" : "pkg:npm/express@4.18.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/express@4.18.2"
+ },
+ {
+ "name" : "accepts",
+ "version" : "1.3.8",
+ "purl" : "pkg:npm/accepts@1.3.8",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/accepts@1.3.8"
+ },
+ {
+ "name" : "mime-types",
+ "version" : "2.1.35",
+ "purl" : "pkg:npm/mime-types@2.1.35",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/mime-types@2.1.35"
+ },
+ {
+ "name" : "mime-db",
+ "version" : "1.52.0",
+ "purl" : "pkg:npm/mime-db@1.52.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/mime-db@1.52.0"
+ },
+ {
+ "name" : "negotiator",
+ "version" : "0.6.3",
+ "purl" : "pkg:npm/negotiator@0.6.3",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/negotiator@0.6.3"
+ },
+ {
+ "name" : "array-flatten",
+ "version" : "1.1.1",
+ "purl" : "pkg:npm/array-flatten@1.1.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/array-flatten@1.1.1"
+ },
+ {
+ "name" : "body-parser",
+ "version" : "1.20.1",
+ "purl" : "pkg:npm/body-parser@1.20.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/body-parser@1.20.1"
+ },
+ {
+ "name" : "bytes",
+ "version" : "3.1.2",
+ "purl" : "pkg:npm/bytes@3.1.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/bytes@3.1.2"
+ },
+ {
+ "name" : "content-type",
+ "version" : "1.0.5",
+ "purl" : "pkg:npm/content-type@1.0.5",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/content-type@1.0.5"
+ },
+ {
+ "name" : "debug",
+ "version" : "2.6.9",
+ "purl" : "pkg:npm/debug@2.6.9",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/debug@2.6.9"
+ },
+ {
+ "name" : "depd",
+ "version" : "2.0.0",
+ "purl" : "pkg:npm/depd@2.0.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/depd@2.0.0"
+ },
+ {
+ "name" : "destroy",
+ "version" : "1.2.0",
+ "purl" : "pkg:npm/destroy@1.2.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/destroy@1.2.0"
+ },
+ {
+ "name" : "http-errors",
+ "version" : "2.0.0",
+ "purl" : "pkg:npm/http-errors@2.0.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/http-errors@2.0.0"
+ },
+ {
+ "name" : "iconv-lite",
+ "version" : "0.4.24",
+ "purl" : "pkg:npm/iconv-lite@0.4.24",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/iconv-lite@0.4.24"
+ },
+ {
+ "name" : "safer-buffer",
+ "version" : "2.1.2",
+ "purl" : "pkg:npm/safer-buffer@2.1.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/safer-buffer@2.1.2"
+ },
+ {
+ "name" : "on-finished",
+ "version" : "2.4.1",
+ "purl" : "pkg:npm/on-finished@2.4.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/on-finished@2.4.1"
+ },
+ {
+ "name" : "qs",
+ "version" : "6.11.0",
+ "purl" : "pkg:npm/qs@6.11.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/qs@6.11.0"
+ },
+ {
+ "name" : "raw-body",
+ "version" : "2.5.1",
+ "purl" : "pkg:npm/raw-body@2.5.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/raw-body@2.5.1"
+ },
+ {
+ "name" : "unpipe",
+ "version" : "1.0.0",
+ "purl" : "pkg:npm/unpipe@1.0.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/unpipe@1.0.0"
+ },
+ {
+ "name" : "type-is",
+ "version" : "1.6.18",
+ "purl" : "pkg:npm/type-is@1.6.18",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/type-is@1.6.18"
+ },
+ {
+ "name" : "content-disposition",
+ "version" : "0.5.4",
+ "purl" : "pkg:npm/content-disposition@0.5.4",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/content-disposition@0.5.4"
+ },
+ {
+ "name" : "safe-buffer",
+ "version" : "5.2.1",
+ "purl" : "pkg:npm/safe-buffer@5.2.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/safe-buffer@5.2.1"
+ },
+ {
+ "name" : "cookie-signature",
+ "version" : "1.0.6",
+ "purl" : "pkg:npm/cookie-signature@1.0.6",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/cookie-signature@1.0.6"
+ },
+ {
+ "name" : "cookie",
+ "version" : "0.5.0",
+ "purl" : "pkg:npm/cookie@0.5.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/cookie@0.5.0"
+ },
+ {
+ "name" : "encodeurl",
+ "version" : "1.0.2",
+ "purl" : "pkg:npm/encodeurl@1.0.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/encodeurl@1.0.2"
+ },
+ {
+ "name" : "escape-html",
+ "version" : "1.0.3",
+ "purl" : "pkg:npm/escape-html@1.0.3",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/escape-html@1.0.3"
+ },
+ {
+ "name" : "etag",
+ "version" : "1.8.1",
+ "purl" : "pkg:npm/etag@1.8.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/etag@1.8.1"
+ },
+ {
+ "name" : "finalhandler",
+ "version" : "1.2.0",
+ "purl" : "pkg:npm/finalhandler@1.2.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/finalhandler@1.2.0"
+ },
+ {
+ "name" : "parseurl",
+ "version" : "1.3.3",
+ "purl" : "pkg:npm/parseurl@1.3.3",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/parseurl@1.3.3"
+ },
+ {
+ "name" : "statuses",
+ "version" : "2.0.1",
+ "purl" : "pkg:npm/statuses@2.0.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/statuses@2.0.1"
+ },
+ {
+ "name" : "fresh",
+ "version" : "0.5.2",
+ "purl" : "pkg:npm/fresh@0.5.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/fresh@0.5.2"
+ },
+ {
+ "name" : "inherits",
+ "version" : "2.0.4",
+ "purl" : "pkg:npm/inherits@2.0.4",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/inherits@2.0.4"
+ },
+ {
+ "name" : "setprototypeof",
+ "version" : "1.2.0",
+ "purl" : "pkg:npm/setprototypeof@1.2.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/setprototypeof@1.2.0"
+ },
+ {
+ "name" : "toidentifier",
+ "version" : "1.0.1",
+ "purl" : "pkg:npm/toidentifier@1.0.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/toidentifier@1.0.1"
+ },
+ {
+ "name" : "merge-descriptors",
+ "version" : "1.0.1",
+ "purl" : "pkg:npm/merge-descriptors@1.0.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/merge-descriptors@1.0.1"
+ },
+ {
+ "name" : "methods",
+ "version" : "1.1.2",
+ "purl" : "pkg:npm/methods@1.1.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/methods@1.1.2"
+ },
+ {
+ "name" : "ee-first",
+ "version" : "1.1.1",
+ "purl" : "pkg:npm/ee-first@1.1.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/ee-first@1.1.1"
+ },
+ {
+ "name" : "path-to-regexp",
+ "version" : "0.1.7",
+ "purl" : "pkg:npm/path-to-regexp@0.1.7",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/path-to-regexp@0.1.7"
+ },
+ {
+ "name" : "proxy-addr",
+ "version" : "2.0.7",
+ "purl" : "pkg:npm/proxy-addr@2.0.7",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/proxy-addr@2.0.7"
+ },
+ {
+ "name" : "forwarded",
+ "version" : "0.2.0",
+ "purl" : "pkg:npm/forwarded@0.2.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/forwarded@0.2.0"
+ },
+ {
+ "name" : "ipaddr.js",
+ "version" : "1.9.1",
+ "purl" : "pkg:npm/ipaddr.js@1.9.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/ipaddr.js@1.9.1"
+ },
+ {
+ "name" : "side-channel",
+ "version" : "1.0.4",
+ "purl" : "pkg:npm/side-channel@1.0.4",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/side-channel@1.0.4"
+ },
+ {
+ "name" : "call-bind",
+ "version" : "1.0.2",
+ "purl" : "pkg:npm/call-bind@1.0.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/call-bind@1.0.2"
+ },
+ {
+ "name" : "function-bind",
+ "version" : "1.1.1",
+ "purl" : "pkg:npm/function-bind@1.1.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/function-bind@1.1.1"
+ },
+ {
+ "name" : "get-intrinsic",
+ "version" : "1.2.1",
+ "purl" : "pkg:npm/get-intrinsic@1.2.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/get-intrinsic@1.2.1"
+ },
+ {
+ "name" : "has-proto",
+ "version" : "1.0.1",
+ "purl" : "pkg:npm/has-proto@1.0.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/has-proto@1.0.1"
+ },
+ {
+ "name" : "has-symbols",
+ "version" : "1.0.3",
+ "purl" : "pkg:npm/has-symbols@1.0.3",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/has-symbols@1.0.3"
+ },
+ {
+ "name" : "has",
+ "version" : "1.0.3",
+ "purl" : "pkg:npm/has@1.0.3",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/has@1.0.3"
+ },
+ {
+ "name" : "object-inspect",
+ "version" : "1.12.3",
+ "purl" : "pkg:npm/object-inspect@1.12.3",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/object-inspect@1.12.3"
+ },
+ {
+ "name" : "range-parser",
+ "version" : "1.2.1",
+ "purl" : "pkg:npm/range-parser@1.2.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/range-parser@1.2.1"
+ },
+ {
+ "name" : "send",
+ "version" : "0.18.0",
+ "purl" : "pkg:npm/send@0.18.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/send@0.18.0"
+ },
+ {
+ "name" : "mime",
+ "version" : "1.6.0",
+ "purl" : "pkg:npm/mime@1.6.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/mime@1.6.0"
+ },
+ {
+ "name" : "ms",
+ "version" : "2.1.3",
+ "purl" : "pkg:npm/ms@2.1.3",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/ms@2.1.3"
+ },
+ {
+ "name" : "serve-static",
+ "version" : "1.15.0",
+ "purl" : "pkg:npm/serve-static@1.15.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/serve-static@1.15.0"
+ },
+ {
+ "name" : "media-typer",
+ "version" : "0.3.0",
+ "purl" : "pkg:npm/media-typer@0.3.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/media-typer@0.3.0"
+ },
+ {
+ "name" : "utils-merge",
+ "version" : "1.0.1",
+ "purl" : "pkg:npm/utils-merge@1.0.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/utils-merge@1.0.1"
+ },
+ {
+ "name" : "vary",
+ "version" : "1.1.2",
+ "purl" : "pkg:npm/vary@1.1.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/vary@1.1.2"
+ },
+ {
+ "name" : "jsonwebtoken",
+ "version" : "8.5.1",
+ "purl" : "pkg:npm/jsonwebtoken@8.5.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/jsonwebtoken@8.5.1"
+ },
+ {
+ "name" : "jws",
+ "version" : "3.2.2",
+ "purl" : "pkg:npm/jws@3.2.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/jws@3.2.2"
+ },
+ {
+ "name" : "jwa",
+ "version" : "1.4.1",
+ "purl" : "pkg:npm/jwa@1.4.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/jwa@1.4.1"
+ },
+ {
+ "name" : "buffer-equal-constant-time",
+ "version" : "1.0.1",
+ "purl" : "pkg:npm/buffer-equal-constant-time@1.0.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/buffer-equal-constant-time@1.0.1"
+ },
+ {
+ "name" : "ecdsa-sig-formatter",
+ "version" : "1.0.11",
+ "purl" : "pkg:npm/ecdsa-sig-formatter@1.0.11",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/ecdsa-sig-formatter@1.0.11"
+ },
+ {
+ "name" : "lodash.includes",
+ "version" : "4.3.0",
+ "purl" : "pkg:npm/lodash.includes@4.3.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/lodash.includes@4.3.0"
+ },
+ {
+ "name" : "lodash.isboolean",
+ "version" : "3.0.3",
+ "purl" : "pkg:npm/lodash.isboolean@3.0.3",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/lodash.isboolean@3.0.3"
+ },
+ {
+ "name" : "lodash.isinteger",
+ "version" : "4.0.4",
+ "purl" : "pkg:npm/lodash.isinteger@4.0.4",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/lodash.isinteger@4.0.4"
+ },
+ {
+ "name" : "lodash.isnumber",
+ "version" : "3.0.3",
+ "purl" : "pkg:npm/lodash.isnumber@3.0.3",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/lodash.isnumber@3.0.3"
+ },
+ {
+ "name" : "lodash.isplainobject",
+ "version" : "4.0.6",
+ "purl" : "pkg:npm/lodash.isplainobject@4.0.6",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/lodash.isplainobject@4.0.6"
+ },
+ {
+ "name" : "lodash.isstring",
+ "version" : "4.0.1",
+ "purl" : "pkg:npm/lodash.isstring@4.0.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/lodash.isstring@4.0.1"
+ },
+ {
+ "name" : "lodash.once",
+ "version" : "4.1.1",
+ "purl" : "pkg:npm/lodash.once@4.1.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/lodash.once@4.1.1"
+ },
+ {
+ "name" : "semver",
+ "version" : "5.7.2",
+ "purl" : "pkg:npm/semver@5.7.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/semver@5.7.2"
+ },
+ {
+ "name" : "mongoose",
+ "version" : "5.13.20",
+ "purl" : "pkg:npm/mongoose@5.13.20",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/mongoose@5.13.20"
+ },
+ {
+ "group" : "@types",
+ "name" : "bson",
+ "version" : "4.0.5",
+ "purl" : "pkg:npm/%40types/bson@4.0.5",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/%40types/bson@4.0.5"
+ },
+ {
+ "group" : "@types",
+ "name" : "node",
+ "version" : "20.4.8",
+ "purl" : "pkg:npm/%40types/node@20.4.8",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/%40types/node@20.4.8"
+ },
+ {
+ "group" : "@types",
+ "name" : "mongodb",
+ "version" : "3.6.20",
+ "purl" : "pkg:npm/%40types/mongodb@3.6.20",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/%40types/mongodb@3.6.20"
+ },
+ {
+ "name" : "bson",
+ "version" : "1.1.6",
+ "purl" : "pkg:npm/bson@1.1.6",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/bson@1.1.6"
+ },
+ {
+ "name" : "kareem",
+ "version" : "2.3.2",
+ "purl" : "pkg:npm/kareem@2.3.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/kareem@2.3.2"
+ },
+ {
+ "name" : "mongodb",
+ "version" : "3.7.4",
+ "purl" : "pkg:npm/mongodb@3.7.4",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/mongodb@3.7.4"
+ },
+ {
+ "name" : "bl",
+ "version" : "2.2.1",
+ "purl" : "pkg:npm/bl@2.2.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/bl@2.2.1"
+ },
+ {
+ "name" : "readable-stream",
+ "version" : "2.3.8",
+ "purl" : "pkg:npm/readable-stream@2.3.8",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/readable-stream@2.3.8"
+ },
+ {
+ "name" : "core-util-is",
+ "version" : "1.0.3",
+ "purl" : "pkg:npm/core-util-is@1.0.3",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/core-util-is@1.0.3"
+ },
+ {
+ "name" : "isarray",
+ "version" : "1.0.0",
+ "purl" : "pkg:npm/isarray@1.0.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/isarray@1.0.0"
+ },
+ {
+ "name" : "process-nextick-args",
+ "version" : "2.0.1",
+ "purl" : "pkg:npm/process-nextick-args@2.0.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/process-nextick-args@2.0.1"
+ },
+ {
+ "name" : "safe-buffer",
+ "version" : "5.1.2",
+ "purl" : "pkg:npm/safe-buffer@5.1.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/safe-buffer@5.1.2"
+ },
+ {
+ "name" : "string_decoder",
+ "version" : "1.1.1",
+ "purl" : "pkg:npm/string_decoder@1.1.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/string_decoder@1.1.1"
+ },
+ {
+ "name" : "util-deprecate",
+ "version" : "1.0.2",
+ "purl" : "pkg:npm/util-deprecate@1.0.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/util-deprecate@1.0.2"
+ },
+ {
+ "name" : "denque",
+ "version" : "1.5.1",
+ "purl" : "pkg:npm/denque@1.5.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/denque@1.5.1"
+ },
+ {
+ "name" : "optional-require",
+ "version" : "1.1.8",
+ "purl" : "pkg:npm/optional-require@1.1.8",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/optional-require@1.1.8"
+ },
+ {
+ "name" : "require-at",
+ "version" : "1.0.6",
+ "purl" : "pkg:npm/require-at@1.0.6",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/require-at@1.0.6"
+ },
+ {
+ "name" : "saslprep",
+ "version" : "1.0.3",
+ "purl" : "pkg:npm/saslprep@1.0.3",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/saslprep@1.0.3"
+ },
+ {
+ "name" : "sparse-bitfield",
+ "version" : "3.0.3",
+ "purl" : "pkg:npm/sparse-bitfield@3.0.3",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/sparse-bitfield@3.0.3"
+ },
+ {
+ "name" : "memory-pager",
+ "version" : "1.5.0",
+ "purl" : "pkg:npm/memory-pager@1.5.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/memory-pager@1.5.0"
+ },
+ {
+ "name" : "mongoose-legacy-pluralize",
+ "version" : "1.0.2",
+ "purl" : "pkg:npm/mongoose-legacy-pluralize@1.0.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/mongoose-legacy-pluralize@1.0.2"
+ },
+ {
+ "name" : "mpath",
+ "version" : "0.8.4",
+ "purl" : "pkg:npm/mpath@0.8.4",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/mpath@0.8.4"
+ },
+ {
+ "name" : "mquery",
+ "version" : "3.2.5",
+ "purl" : "pkg:npm/mquery@3.2.5",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/mquery@3.2.5"
+ },
+ {
+ "name" : "bluebird",
+ "version" : "3.5.1",
+ "purl" : "pkg:npm/bluebird@3.5.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/bluebird@3.5.1"
+ },
+ {
+ "name" : "regexp-clone",
+ "version" : "1.0.0",
+ "purl" : "pkg:npm/regexp-clone@1.0.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/regexp-clone@1.0.0"
+ },
+ {
+ "name" : "sliced",
+ "version" : "1.0.1",
+ "purl" : "pkg:npm/sliced@1.0.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/sliced@1.0.1"
+ },
+ {
+ "name" : "ms",
+ "version" : "2.1.2",
+ "purl" : "pkg:npm/ms@2.1.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/ms@2.1.2"
+ },
+ {
+ "name" : "optional-require",
+ "version" : "1.0.3",
+ "purl" : "pkg:npm/optional-require@1.0.3",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/optional-require@1.0.3"
+ },
+ {
+ "name" : "sift",
+ "version" : "13.5.2",
+ "purl" : "pkg:npm/sift@13.5.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/sift@13.5.2"
+ },
+ {
+ "name" : "nodemon",
+ "version" : "2.0.22",
+ "purl" : "pkg:npm/nodemon@2.0.22",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/nodemon@2.0.22"
+ },
+ {
+ "name" : "chokidar",
+ "version" : "3.5.3",
+ "purl" : "pkg:npm/chokidar@3.5.3",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/chokidar@3.5.3"
+ },
+ {
+ "name" : "anymatch",
+ "version" : "3.1.3",
+ "purl" : "pkg:npm/anymatch@3.1.3",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/anymatch@3.1.3"
+ },
+ {
+ "name" : "normalize-path",
+ "version" : "3.0.0",
+ "purl" : "pkg:npm/normalize-path@3.0.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/normalize-path@3.0.0"
+ },
+ {
+ "name" : "picomatch",
+ "version" : "2.3.1",
+ "purl" : "pkg:npm/picomatch@2.3.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/picomatch@2.3.1"
+ },
+ {
+ "name" : "braces",
+ "version" : "3.0.2",
+ "purl" : "pkg:npm/braces@3.0.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/braces@3.0.2"
+ },
+ {
+ "name" : "fill-range",
+ "version" : "7.0.1",
+ "purl" : "pkg:npm/fill-range@7.0.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/fill-range@7.0.1"
+ },
+ {
+ "name" : "to-regex-range",
+ "version" : "5.0.1",
+ "purl" : "pkg:npm/to-regex-range@5.0.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/to-regex-range@5.0.1"
+ },
+ {
+ "name" : "is-number",
+ "version" : "7.0.0",
+ "purl" : "pkg:npm/is-number@7.0.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/is-number@7.0.0"
+ },
+ {
+ "name" : "fsevents",
+ "version" : "2.3.2",
+ "purl" : "pkg:npm/fsevents@2.3.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/fsevents@2.3.2"
+ },
+ {
+ "name" : "glob-parent",
+ "version" : "5.1.2",
+ "purl" : "pkg:npm/glob-parent@5.1.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/glob-parent@5.1.2"
+ },
+ {
+ "name" : "is-glob",
+ "version" : "4.0.3",
+ "purl" : "pkg:npm/is-glob@4.0.3",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/is-glob@4.0.3"
+ },
+ {
+ "name" : "is-binary-path",
+ "version" : "2.1.0",
+ "purl" : "pkg:npm/is-binary-path@2.1.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/is-binary-path@2.1.0"
+ },
+ {
+ "name" : "binary-extensions",
+ "version" : "2.2.0",
+ "purl" : "pkg:npm/binary-extensions@2.2.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/binary-extensions@2.2.0"
+ },
+ {
+ "name" : "is-extglob",
+ "version" : "2.1.1",
+ "purl" : "pkg:npm/is-extglob@2.1.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/is-extglob@2.1.1"
+ },
+ {
+ "name" : "readdirp",
+ "version" : "3.6.0",
+ "purl" : "pkg:npm/readdirp@3.6.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/readdirp@3.6.0"
+ },
+ {
+ "name" : "debug",
+ "version" : "3.2.7",
+ "purl" : "pkg:npm/debug@3.2.7",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/debug@3.2.7"
+ },
+ {
+ "name" : "ignore-by-default",
+ "version" : "1.0.1",
+ "purl" : "pkg:npm/ignore-by-default@1.0.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/ignore-by-default@1.0.1"
+ },
+ {
+ "name" : "minimatch",
+ "version" : "3.1.2",
+ "purl" : "pkg:npm/minimatch@3.1.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/minimatch@3.1.2"
+ },
+ {
+ "name" : "brace-expansion",
+ "version" : "1.1.11",
+ "purl" : "pkg:npm/brace-expansion@1.1.11",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/brace-expansion@1.1.11"
+ },
+ {
+ "name" : "balanced-match",
+ "version" : "1.0.2",
+ "purl" : "pkg:npm/balanced-match@1.0.2",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/balanced-match@1.0.2"
+ },
+ {
+ "name" : "concat-map",
+ "version" : "0.0.1",
+ "purl" : "pkg:npm/concat-map@0.0.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/concat-map@0.0.1"
+ },
+ {
+ "name" : "pstree.remy",
+ "version" : "1.1.8",
+ "purl" : "pkg:npm/pstree.remy@1.1.8",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/pstree.remy@1.1.8"
+ },
+ {
+ "name" : "simple-update-notifier",
+ "version" : "1.1.0",
+ "purl" : "pkg:npm/simple-update-notifier@1.1.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/simple-update-notifier@1.1.0"
+ },
+ {
+ "name" : "semver",
+ "version" : "7.0.0",
+ "purl" : "pkg:npm/semver@7.0.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/semver@7.0.0"
+ },
+ {
+ "name" : "supports-color",
+ "version" : "5.5.0",
+ "purl" : "pkg:npm/supports-color@5.5.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/supports-color@5.5.0"
+ },
+ {
+ "name" : "has-flag",
+ "version" : "3.0.0",
+ "purl" : "pkg:npm/has-flag@3.0.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/has-flag@3.0.0"
+ },
+ {
+ "name" : "touch",
+ "version" : "3.1.0",
+ "purl" : "pkg:npm/touch@3.1.0",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/touch@3.1.0"
+ },
+ {
+ "name" : "nopt",
+ "version" : "1.0.10",
+ "purl" : "pkg:npm/nopt@1.0.10",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/nopt@1.0.10"
+ },
+ {
+ "name" : "abbrev",
+ "version" : "1.1.1",
+ "purl" : "pkg:npm/abbrev@1.1.1",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/abbrev@1.1.1"
+ },
+ {
+ "name" : "undefsafe",
+ "version" : "2.0.5",
+ "purl" : "pkg:npm/undefsafe@2.0.5",
+ "type" : "library",
+ "bom-ref" : "pkg:npm/undefsafe@2.0.5"
+ }
+ ],
+ "dependencies" : [
+ {
+ "ref" : "pkg:npm/backend@1.0.0",
+ "dependsOn" : [
+ "pkg:npm/%40hapi/joi@17.1.1",
+ "pkg:npm/axios@0.19.2",
+ "pkg:npm/backend@0.0.0",
+ "pkg:npm/bcryptjs@2.4.3",
+ "pkg:npm/dotenv@8.6.0",
+ "pkg:npm/express@4.18.2",
+ "pkg:npm/jsonwebtoken@8.5.1",
+ "pkg:npm/mongoose@5.13.20",
+ "pkg:npm/nodemon@2.0.22"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/%40hapi/joi@17.1.1",
+ "dependsOn" : [
+ "pkg:npm/%40hapi/address@4.1.0",
+ "pkg:npm/%40hapi/formula@2.0.0",
+ "pkg:npm/%40hapi/hoek@9.3.0",
+ "pkg:npm/%40hapi/pinpoint@2.0.1",
+ "pkg:npm/%40hapi/topo@5.1.0"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/%40hapi/address@4.1.0",
+ "dependsOn" : [
+ "pkg:npm/%40hapi/hoek@9.3.0"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/%40hapi/hoek@9.3.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/%40hapi/formula@2.0.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/%40hapi/pinpoint@2.0.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/%40hapi/topo@5.1.0",
+ "dependsOn" : [
+ "pkg:npm/%40hapi/hoek@9.3.0"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/axios@0.19.2",
+ "dependsOn" : [
+ "pkg:npm/follow-redirects@1.5.10"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/follow-redirects@1.5.10",
+ "dependsOn" : [
+ "pkg:npm/debug@3.1.0"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/debug@3.1.0",
+ "dependsOn" : [
+ "pkg:npm/ms@2.0.0"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/ms@2.0.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/backend@0.0.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/bcryptjs@2.4.3",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/dotenv@8.6.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/express@4.18.2",
+ "dependsOn" : [
+ "pkg:npm/accepts@1.3.8",
+ "pkg:npm/array-flatten@1.1.1",
+ "pkg:npm/body-parser@1.20.1",
+ "pkg:npm/content-disposition@0.5.4",
+ "pkg:npm/content-type@1.0.5",
+ "pkg:npm/cookie-signature@1.0.6",
+ "pkg:npm/cookie@0.5.0",
+ "pkg:npm/debug@2.6.9",
+ "pkg:npm/depd@2.0.0",
+ "pkg:npm/encodeurl@1.0.2",
+ "pkg:npm/escape-html@1.0.3",
+ "pkg:npm/etag@1.8.1",
+ "pkg:npm/finalhandler@1.2.0",
+ "pkg:npm/fresh@0.5.2",
+ "pkg:npm/http-errors@2.0.0",
+ "pkg:npm/merge-descriptors@1.0.1",
+ "pkg:npm/methods@1.1.2",
+ "pkg:npm/on-finished@2.4.1",
+ "pkg:npm/parseurl@1.3.3",
+ "pkg:npm/path-to-regexp@0.1.7",
+ "pkg:npm/proxy-addr@2.0.7",
+ "pkg:npm/qs@6.11.0",
+ "pkg:npm/range-parser@1.2.1",
+ "pkg:npm/safe-buffer@5.2.1",
+ "pkg:npm/send@0.18.0",
+ "pkg:npm/serve-static@1.15.0",
+ "pkg:npm/setprototypeof@1.2.0",
+ "pkg:npm/statuses@2.0.1",
+ "pkg:npm/type-is@1.6.18",
+ "pkg:npm/utils-merge@1.0.1",
+ "pkg:npm/vary@1.1.2"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/accepts@1.3.8",
+ "dependsOn" : [
+ "pkg:npm/mime-types@2.1.35",
+ "pkg:npm/negotiator@0.6.3"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/mime-types@2.1.35",
+ "dependsOn" : [
+ "pkg:npm/mime-db@1.52.0"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/mime-db@1.52.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/negotiator@0.6.3",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/array-flatten@1.1.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/body-parser@1.20.1",
+ "dependsOn" : [
+ "pkg:npm/bytes@3.1.2",
+ "pkg:npm/content-type@1.0.5",
+ "pkg:npm/debug@2.6.9",
+ "pkg:npm/depd@2.0.0",
+ "pkg:npm/destroy@1.2.0",
+ "pkg:npm/http-errors@2.0.0",
+ "pkg:npm/iconv-lite@0.4.24",
+ "pkg:npm/on-finished@2.4.1",
+ "pkg:npm/qs@6.11.0",
+ "pkg:npm/raw-body@2.5.1",
+ "pkg:npm/type-is@1.6.18",
+ "pkg:npm/unpipe@1.0.0"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/bytes@3.1.2",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/content-type@1.0.5",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/debug@2.6.9",
+ "dependsOn" : [
+ "pkg:npm/ms@2.0.0"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/depd@2.0.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/destroy@1.2.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/http-errors@2.0.0",
+ "dependsOn" : [
+ "pkg:npm/depd@2.0.0",
+ "pkg:npm/inherits@2.0.4",
+ "pkg:npm/setprototypeof@1.2.0",
+ "pkg:npm/statuses@2.0.1",
+ "pkg:npm/toidentifier@1.0.1"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/iconv-lite@0.4.24",
+ "dependsOn" : [
+ "pkg:npm/safer-buffer@2.1.2"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/safer-buffer@2.1.2",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/on-finished@2.4.1",
+ "dependsOn" : [
+ "pkg:npm/ee-first@1.1.1"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/qs@6.11.0",
+ "dependsOn" : [
+ "pkg:npm/side-channel@1.0.4"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/raw-body@2.5.1",
+ "dependsOn" : [
+ "pkg:npm/bytes@3.1.2",
+ "pkg:npm/http-errors@2.0.0",
+ "pkg:npm/iconv-lite@0.4.24",
+ "pkg:npm/unpipe@1.0.0"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/unpipe@1.0.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/type-is@1.6.18",
+ "dependsOn" : [
+ "pkg:npm/media-typer@0.3.0",
+ "pkg:npm/mime-types@2.1.35"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/content-disposition@0.5.4",
+ "dependsOn" : [
+ "pkg:npm/safe-buffer@5.2.1"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/safe-buffer@5.2.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/cookie-signature@1.0.6",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/cookie@0.5.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/encodeurl@1.0.2",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/escape-html@1.0.3",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/etag@1.8.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/finalhandler@1.2.0",
+ "dependsOn" : [
+ "pkg:npm/debug@2.6.9",
+ "pkg:npm/encodeurl@1.0.2",
+ "pkg:npm/escape-html@1.0.3",
+ "pkg:npm/on-finished@2.4.1",
+ "pkg:npm/parseurl@1.3.3",
+ "pkg:npm/statuses@2.0.1",
+ "pkg:npm/unpipe@1.0.0"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/parseurl@1.3.3",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/statuses@2.0.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/fresh@0.5.2",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/inherits@2.0.4",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/setprototypeof@1.2.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/toidentifier@1.0.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/merge-descriptors@1.0.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/methods@1.1.2",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/ee-first@1.1.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/path-to-regexp@0.1.7",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/proxy-addr@2.0.7",
+ "dependsOn" : [
+ "pkg:npm/forwarded@0.2.0",
+ "pkg:npm/ipaddr.js@1.9.1"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/forwarded@0.2.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/ipaddr.js@1.9.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/side-channel@1.0.4",
+ "dependsOn" : [
+ "pkg:npm/call-bind@1.0.2",
+ "pkg:npm/get-intrinsic@1.2.1",
+ "pkg:npm/object-inspect@1.12.3"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/call-bind@1.0.2",
+ "dependsOn" : [
+ "pkg:npm/function-bind@1.1.1",
+ "pkg:npm/get-intrinsic@1.2.1"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/function-bind@1.1.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/get-intrinsic@1.2.1",
+ "dependsOn" : [
+ "pkg:npm/function-bind@1.1.1",
+ "pkg:npm/has-proto@1.0.1",
+ "pkg:npm/has-symbols@1.0.3",
+ "pkg:npm/has@1.0.3"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/has-proto@1.0.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/has-symbols@1.0.3",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/has@1.0.3",
+ "dependsOn" : [
+ "pkg:npm/function-bind@1.1.1"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/object-inspect@1.12.3",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/range-parser@1.2.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/send@0.18.0",
+ "dependsOn" : [
+ "pkg:npm/debug@2.6.9",
+ "pkg:npm/depd@2.0.0",
+ "pkg:npm/destroy@1.2.0",
+ "pkg:npm/encodeurl@1.0.2",
+ "pkg:npm/escape-html@1.0.3",
+ "pkg:npm/etag@1.8.1",
+ "pkg:npm/fresh@0.5.2",
+ "pkg:npm/http-errors@2.0.0",
+ "pkg:npm/mime@1.6.0",
+ "pkg:npm/ms@2.1.3",
+ "pkg:npm/on-finished@2.4.1",
+ "pkg:npm/range-parser@1.2.1",
+ "pkg:npm/statuses@2.0.1"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/mime@1.6.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/ms@2.1.3",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/serve-static@1.15.0",
+ "dependsOn" : [
+ "pkg:npm/encodeurl@1.0.2",
+ "pkg:npm/escape-html@1.0.3",
+ "pkg:npm/parseurl@1.3.3",
+ "pkg:npm/send@0.18.0"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/media-typer@0.3.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/utils-merge@1.0.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/vary@1.1.2",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/jsonwebtoken@8.5.1",
+ "dependsOn" : [
+ "pkg:npm/jws@3.2.2",
+ "pkg:npm/lodash.includes@4.3.0",
+ "pkg:npm/lodash.isboolean@3.0.3",
+ "pkg:npm/lodash.isinteger@4.0.4",
+ "pkg:npm/lodash.isnumber@3.0.3",
+ "pkg:npm/lodash.isplainobject@4.0.6",
+ "pkg:npm/lodash.isstring@4.0.1",
+ "pkg:npm/lodash.once@4.1.1",
+ "pkg:npm/ms@2.1.3",
+ "pkg:npm/semver@5.7.2"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/jws@3.2.2",
+ "dependsOn" : [
+ "pkg:npm/jwa@1.4.1",
+ "pkg:npm/safe-buffer@5.2.1"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/jwa@1.4.1",
+ "dependsOn" : [
+ "pkg:npm/buffer-equal-constant-time@1.0.1",
+ "pkg:npm/ecdsa-sig-formatter@1.0.11",
+ "pkg:npm/safe-buffer@5.2.1"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/buffer-equal-constant-time@1.0.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/ecdsa-sig-formatter@1.0.11",
+ "dependsOn" : [
+ "pkg:npm/safe-buffer@5.2.1"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/lodash.includes@4.3.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/lodash.isboolean@3.0.3",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/lodash.isinteger@4.0.4",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/lodash.isnumber@3.0.3",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/lodash.isplainobject@4.0.6",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/lodash.isstring@4.0.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/lodash.once@4.1.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/semver@5.7.2",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/mongoose@5.13.20",
+ "dependsOn" : [
+ "pkg:npm/%40types/bson@4.0.5",
+ "pkg:npm/%40types/mongodb@3.6.20",
+ "pkg:npm/bson@1.1.6",
+ "pkg:npm/kareem@2.3.2",
+ "pkg:npm/mongodb@3.7.4",
+ "pkg:npm/mongoose-legacy-pluralize@1.0.2",
+ "pkg:npm/mpath@0.8.4",
+ "pkg:npm/mquery@3.2.5",
+ "pkg:npm/ms@2.1.2",
+ "pkg:npm/optional-require@1.0.3",
+ "pkg:npm/regexp-clone@1.0.0",
+ "pkg:npm/safe-buffer@5.2.1",
+ "pkg:npm/sift@13.5.2",
+ "pkg:npm/sliced@1.0.1"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/%40types/bson@4.0.5",
+ "dependsOn" : [
+ "pkg:npm/%40types/node@20.4.8"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/%40types/node@20.4.8",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/%40types/mongodb@3.6.20",
+ "dependsOn" : [
+ "pkg:npm/%40types/bson@4.0.5",
+ "pkg:npm/%40types/node@20.4.8"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/bson@1.1.6",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/kareem@2.3.2",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/mongodb@3.7.4",
+ "dependsOn" : [
+ "pkg:npm/bl@2.2.1",
+ "pkg:npm/bson@1.1.6",
+ "pkg:npm/denque@1.5.1",
+ "pkg:npm/optional-require@1.1.8",
+ "pkg:npm/safe-buffer@5.2.1",
+ "pkg:npm/saslprep@1.0.3"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/bl@2.2.1",
+ "dependsOn" : [
+ "pkg:npm/readable-stream@2.3.8",
+ "pkg:npm/safe-buffer@5.2.1"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/readable-stream@2.3.8",
+ "dependsOn" : [
+ "pkg:npm/core-util-is@1.0.3",
+ "pkg:npm/inherits@2.0.4",
+ "pkg:npm/isarray@1.0.0",
+ "pkg:npm/process-nextick-args@2.0.1",
+ "pkg:npm/safe-buffer@5.1.2",
+ "pkg:npm/string_decoder@1.1.1",
+ "pkg:npm/util-deprecate@1.0.2"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/core-util-is@1.0.3",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/isarray@1.0.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/process-nextick-args@2.0.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/safe-buffer@5.1.2",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/string_decoder@1.1.1",
+ "dependsOn" : [
+ "pkg:npm/safe-buffer@5.1.2"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/util-deprecate@1.0.2",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/denque@1.5.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/optional-require@1.1.8",
+ "dependsOn" : [
+ "pkg:npm/require-at@1.0.6"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/require-at@1.0.6",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/saslprep@1.0.3",
+ "dependsOn" : [
+ "pkg:npm/sparse-bitfield@3.0.3"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/sparse-bitfield@3.0.3",
+ "dependsOn" : [
+ "pkg:npm/memory-pager@1.5.0"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/memory-pager@1.5.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/mongoose-legacy-pluralize@1.0.2",
+ "dependsOn" : [
+ "pkg:npm/mongoose@5.13.20"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/mpath@0.8.4",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/mquery@3.2.5",
+ "dependsOn" : [
+ "pkg:npm/bluebird@3.5.1",
+ "pkg:npm/debug@3.1.0",
+ "pkg:npm/regexp-clone@1.0.0",
+ "pkg:npm/safe-buffer@5.1.2",
+ "pkg:npm/sliced@1.0.1"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/bluebird@3.5.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/regexp-clone@1.0.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/sliced@1.0.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/ms@2.1.2",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/optional-require@1.0.3",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/sift@13.5.2",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/nodemon@2.0.22",
+ "dependsOn" : [
+ "pkg:npm/chokidar@3.5.3",
+ "pkg:npm/debug@3.2.7",
+ "pkg:npm/ignore-by-default@1.0.1",
+ "pkg:npm/minimatch@3.1.2",
+ "pkg:npm/pstree.remy@1.1.8",
+ "pkg:npm/semver@5.7.2",
+ "pkg:npm/simple-update-notifier@1.1.0",
+ "pkg:npm/supports-color@5.5.0",
+ "pkg:npm/touch@3.1.0",
+ "pkg:npm/undefsafe@2.0.5"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/chokidar@3.5.3",
+ "dependsOn" : [
+ "pkg:npm/anymatch@3.1.3",
+ "pkg:npm/braces@3.0.2",
+ "pkg:npm/fsevents@2.3.2",
+ "pkg:npm/glob-parent@5.1.2",
+ "pkg:npm/is-binary-path@2.1.0",
+ "pkg:npm/is-glob@4.0.3",
+ "pkg:npm/normalize-path@3.0.0",
+ "pkg:npm/readdirp@3.6.0"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/anymatch@3.1.3",
+ "dependsOn" : [
+ "pkg:npm/normalize-path@3.0.0",
+ "pkg:npm/picomatch@2.3.1"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/normalize-path@3.0.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/picomatch@2.3.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/braces@3.0.2",
+ "dependsOn" : [
+ "pkg:npm/fill-range@7.0.1"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/fill-range@7.0.1",
+ "dependsOn" : [
+ "pkg:npm/to-regex-range@5.0.1"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/to-regex-range@5.0.1",
+ "dependsOn" : [
+ "pkg:npm/is-number@7.0.0"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/is-number@7.0.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/fsevents@2.3.2",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/glob-parent@5.1.2",
+ "dependsOn" : [
+ "pkg:npm/is-glob@4.0.3"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/is-glob@4.0.3",
+ "dependsOn" : [
+ "pkg:npm/is-extglob@2.1.1"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/is-binary-path@2.1.0",
+ "dependsOn" : [
+ "pkg:npm/binary-extensions@2.2.0"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/binary-extensions@2.2.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/is-extglob@2.1.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/readdirp@3.6.0",
+ "dependsOn" : [
+ "pkg:npm/picomatch@2.3.1"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/debug@3.2.7",
+ "dependsOn" : [
+ "pkg:npm/ms@2.1.3"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/ignore-by-default@1.0.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/minimatch@3.1.2",
+ "dependsOn" : [
+ "pkg:npm/brace-expansion@1.1.11"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/brace-expansion@1.1.11",
+ "dependsOn" : [
+ "pkg:npm/balanced-match@1.0.2",
+ "pkg:npm/concat-map@0.0.1"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/balanced-match@1.0.2",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/concat-map@0.0.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/pstree.remy@1.1.8",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/simple-update-notifier@1.1.0",
+ "dependsOn" : [
+ "pkg:npm/semver@7.0.0"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/semver@7.0.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/supports-color@5.5.0",
+ "dependsOn" : [
+ "pkg:npm/has-flag@3.0.0"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/has-flag@3.0.0",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/touch@3.1.0",
+ "dependsOn" : [
+ "pkg:npm/nopt@1.0.10"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/nopt@1.0.10",
+ "dependsOn" : [
+ "pkg:npm/abbrev@1.1.1"
+ ]
+ },
+ {
+ "ref" : "pkg:npm/abbrev@1.1.1",
+ "dependsOn" : [ ]
+ },
+ {
+ "ref" : "pkg:npm/undefsafe@2.0.5",
+ "dependsOn" : [ ]
+ }
+ ]
+}