From 5c40c6ad2dbf60071d74bbafc470e54db68e6ab8 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Fri, 20 Jun 2025 15:11:08 +0100 Subject: [PATCH 001/102] chore: use archive.apache.org instead of dlcdn.apache.org (#234) --- docker-image/Dockerfiles/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-image/Dockerfiles/Dockerfile b/docker-image/Dockerfiles/Dockerfile index 360471e2..c4e18b4d 100644 --- a/docker-image/Dockerfiles/Dockerfile +++ b/docker-image/Dockerfiles/Dockerfile @@ -1,5 +1,5 @@ # first stage -FROM registry.access.redhat.com/ubi9/nodejs-20 as builder +FROM registry.access.redhat.com/ubi9/nodejs-20 AS builder # use privilaged user USER root @@ -13,7 +13,7 @@ RUN curl -kL https://download.oracle.com/java/21/archive/jdk-21.0.1_linux-x64_bi && tar xvzf /tmp/java-package.tar.gz -C /usr/ # install Maven package manager -RUN curl -kL https://dlcdn.apache.org/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz -o /tmp/maven-package.tar.gz \ +RUN curl -kL https://archive.apache.org/dist/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz -o /tmp/maven-package.tar.gz \ && tar xvzf /tmp/maven-package.tar.gz -C /usr/ # install golang package manager @@ -47,7 +47,7 @@ USER default # second stage FROM registry.access.redhat.com/ubi9/nodejs-20-minimal -LABEL org.opencontainers.image.source https://github.com/trustification/exhort-javascript-api +LABEL org.opencontainers.image.source=https://github.com/trustification/exhort-javascript-api # assign rhda source for exhort tracking purposes ENV RHDA_SOURCE='' From cc391673b42ca31c9cec9fde3846150346e3538e Mon Sep 17 00:00:00 2001 From: Strum355 Date: Fri, 20 Jun 2025 14:12:08 +0000 Subject: [PATCH 002/102] build: updated package with v0.2.4-ea.2 [skip ci] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b844a7e9..1e8b1d9b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.1", + "version": "0.2.4-ea.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.1", + "version": "0.2.4-ea.2", "license": "Apache-2.0", "dependencies": { "@babel/core": "^7.23.2", diff --git a/package.json b/package.json index f607630f..99b98c28 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.1", + "version": "0.2.4-ea.2", "description": "Code-Ready Dependency Analytics JavaScript API.", "license": "Apache-2.0", "homepage": "https://github.com/trustification/exhort-javascript-api#README.md", From a9c8bf27fc7684f1ff3e71c34956dc850d220a8a Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Wed, 16 Jul 2025 15:21:14 +0100 Subject: [PATCH 003/102] feat: support passing additional arguments to maven (#238) --- README.md | 8 ++++++++ src/providers/java_maven.js | 33 +++++++++++++++++++-------------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index ba6d02e1..ee7dfe60 100644 --- a/README.md +++ b/README.md @@ -491,6 +491,14 @@ It's also possible to use the lightweight Python PIP utility [pipdeptree](https: #### Toggle Red Hat Trusted Content recommendations Both the HTML-based report and JSON response will by default contain recommendations for migrating to Red Hat-based Trusted Content repositories. This feature can be disabled by setting `EXHORT_RECOMMENDATIONS_ENABLED` to 'false' via environment variables or options. +#### Additional CLI arguments +For some ecosystems we support passing additional CLI arguments to the underlying tools. The following table outlines the supported ecosystems and the environment variable/option that configures this. Note that the arguments are expected to be in the format of a JSON array. + +|Ecosystem|Key | +|---------|---------------| +|Maven |EXHORT_MVN_ARGS| + + [0]: https://img.shields.io/github/v/release/trustification/exhort-javascript-api?color=green&label=latest [1]: https://img.shields.io/github/v/release/trustification/exhort-javascript-api?color=yellow&include_prereleases&label=early-access diff --git a/src/providers/java_maven.js b/src/providers/java_maven.js index 31d5c5aa..269697b2 100644 --- a/src/providers/java_maven.js +++ b/src/providers/java_maven.js @@ -6,6 +6,7 @@ import { EOL } from 'os' import { XMLParser } from 'fast-xml-parser' import Sbom from '../sbom.js' +import { getCustom } from '../tools.js' import Base_java, { ecosystem_maven } from "./base_java.js"; @@ -27,14 +28,13 @@ export default class Java_maven extends Base_java { * @param {string} manifestName - the subject manifest name-type * @returns {boolean} - return true if `pom.xml` is the manifest name-type */ - isSupported(manifestName) { return 'pom.xml' === manifestName } /** * @param {string} manifestDir - the directory where the manifest lies - */ + */ validateLockFile() { return true; } /** @@ -43,8 +43,6 @@ export default class Java_maven extends Base_java { * @param {{}} [opts={}] - optional various options to pass along the application * @returns {Provided} */ - - provideStack(manifest, opts = {}) { return { ecosystem: ecosystem_maven, @@ -59,7 +57,6 @@ export default class Java_maven extends Base_java { * @param {{}} [opts={}] - optional various options to pass along the application * @returns {Provided} */ - provideComponent(manifest, opts = {}) { return { ecosystem: ecosystem_maven, @@ -78,12 +75,16 @@ export default class Java_maven extends Base_java { #createSbomStackAnalysis(manifest, opts = {}) { const manifestDir = path.dirname(manifest) const mvn = this.selectToolBinary(manifest, opts) + const mvnArgs = JSON.parse(getCustom('EXHORT_MVN_ARGS', '[]', opts)); + if (!Array.isArray(mvnArgs)) { + throw new Error(`configured maven args is not an array, is a ${typeof mvnArgs}`) + } // clean maven target try { - this._invokeCommand(mvn, ['-q', 'clean'], {cwd: manifestDir}) + this._invokeCommand(mvn, ['-q', 'clean', ...mvnArgs], { cwd: manifestDir }) } catch (error) { - throw new Error(`failed to clean maven target`, {cause: error}) + throw new Error(`failed to clean maven target`, { cause: error }) } // create dependency graph in a temp file @@ -91,7 +92,7 @@ export default class Java_maven extends Base_java { let tmpDepTree = path.join(tmpDir, 'mvn_deptree.txt') // build initial command (dot outputType is not available for verbose mode) let depTreeCmdArgs = ['-q', 'org.apache.maven.plugins:maven-dependency-plugin:3.6.0:tree', - '-Dscope=compile','-Dverbose', + '-Dscope=compile', '-Dverbose', '-DoutputType=text', `-DoutputFile=${tmpDepTree}`] // exclude ignored dependencies, exclude format is groupId:artifactId:scope:version. // version and scope are marked as '*' if not specified (we do not use scope yet) @@ -104,14 +105,14 @@ export default class Java_maven extends Base_java { ignoredDeps.push(this.toPurl(dep.groupId, dep.artifactId)) } }) - if(ignoredArgs.length > 0) { + if (ignoredArgs.length > 0) { depTreeCmdArgs.push(`-Dexcludes=${ignoredArgs.join(',')}`) } // execute dependency tree command try { - this._invokeCommand(mvn, depTreeCmdArgs, {cwd: manifestDir}) + this._invokeCommand(mvn, [...depTreeCmdArgs, ...mvnArgs], { cwd: manifestDir }) } catch (error) { - throw new Error(`failed creating maven dependency tree`, {cause: error}) + throw new Error(`failed creating maven dependency tree`, { cause: error }) } // read dependency tree from temp file let content = fs.readFileSync(tmpDepTree) @@ -120,7 +121,7 @@ export default class Java_maven extends Base_java { } let sbom = this.createSbomFileFromTextFormat(content.toString(), ignoredDeps, opts); // delete temp file and directory - fs.rmSync(tmpDir, {recursive: true, force: true}) + fs.rmSync(tmpDir, { recursive: true, force: true }) // return dependency graph as string return sbom } @@ -150,14 +151,18 @@ export default class Java_maven extends Base_java { */ #getSbomForComponentAnalysis(manifestPath, opts = {}) { const mvn = this.selectToolBinary(manifestPath, opts) + const mvnArgs = JSON.parse(getCustom('EXHORT_MVN_ARGS', '[]', opts)); + if (!Array.isArray(mvnArgs)) { + throw new Error(`configured maven args is not an array, is a ${typeof mvnArgs}`) + } const tmpEffectivePom = path.resolve(path.join(path.dirname(manifestPath), 'effective-pom.xml')) // create effective pom and save to temp file try { - this._invokeCommand(mvn, ['-q', 'help:effective-pom', `-Doutput=${tmpEffectivePom}`], {cwd: path.dirname(manifestPath)}) + this._invokeCommand(mvn, ['-q', 'help:effective-pom', `-Doutput=${tmpEffectivePom}`, ...mvnArgs], { cwd: path.dirname(manifestPath) }) } catch (error) { - throw new Error(`failed creating maven effective pom`, {cause: error}) + throw new Error(`failed creating maven effective pom`, { cause: error }) } // iterate over all dependencies in original pom and collect all ignored ones let ignored = this.#getDependencies(manifestPath).filter(d => d.ignore) From 310ffbd681cef6825ceaf3264f32024d9ee2e4f3 Mon Sep 17 00:00:00 2001 From: Strum355 Date: Wed, 16 Jul 2025 14:22:02 +0000 Subject: [PATCH 004/102] build: updated package with v0.2.4-ea.3 [skip ci] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1e8b1d9b..de48f712 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.2", + "version": "0.2.4-ea.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.2", + "version": "0.2.4-ea.3", "license": "Apache-2.0", "dependencies": { "@babel/core": "^7.23.2", diff --git a/package.json b/package.json index 99b98c28..8c8d2340 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.2", + "version": "0.2.4-ea.3", "description": "Code-Ready Dependency Analytics JavaScript API.", "license": "Apache-2.0", "homepage": "https://github.com/trustification/exhort-javascript-api#README.md", From ad0d019c39f32a576ef2bac784715cf4d2e44b29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Massimiliano=20Dess=C3=AC=20-=20=28Fast=20Chauffeur=29?= Date: Fri, 18 Jul 2025 12:29:05 +0200 Subject: [PATCH 005/102] [Snyk] Upgrade node-fetch from 2.6.11 to 2.7.0 (#237) --- package-lock.json | 6 ++++-- package.json | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index de48f712..88327be3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "fast-xml-parser": "^4.2.4", "help": "^3.0.2", "https-proxy-agent": "^7.0.6", - "node-fetch": "^2.6.7", + "node-fetch": "^2.7.0", "packageurl-js": "^1.0.2", "yargs": "^17.7.2" }, @@ -3950,7 +3950,9 @@ } }, "node_modules/node-fetch": { - "version": "2.6.11", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" diff --git a/package.json b/package.json index 8c8d2340..10fa0204 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "fast-xml-parser": "^4.2.4", "help": "^3.0.2", "https-proxy-agent": "^7.0.6", - "node-fetch": "^2.6.7", + "node-fetch": "^2.7.0", "packageurl-js": "^1.0.2", "yargs": "^17.7.2" }, From 7a759383f2c2acd02b301997b05e017b0d84d554 Mon Sep 17 00:00:00 2001 From: Strum355 Date: Fri, 18 Jul 2025 10:29:50 +0000 Subject: [PATCH 006/102] build: updated package with v0.2.4-ea.4 [skip ci] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 88327be3..a44c614d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.3", + "version": "0.2.4-ea.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.3", + "version": "0.2.4-ea.4", "license": "Apache-2.0", "dependencies": { "@babel/core": "^7.23.2", diff --git a/package.json b/package.json index 10fa0204..b520946b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.3", + "version": "0.2.4-ea.4", "description": "Code-Ready Dependency Analytics JavaScript API.", "license": "Apache-2.0", "homepage": "https://github.com/trustification/exhort-javascript-api#README.md", From fb08d25c71e5527b944325327056b623bdf6c3d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Massimiliano=20Dess=C3=AC=20-=20=28Fast=20Chauffeur=29?= Date: Fri, 18 Jul 2025 12:59:41 +0200 Subject: [PATCH 007/102] chore(deps): upgrade fast-xml-parser from 4.3.2 to 4.5.3 (#235) --- package-lock.json | 22 ++++++++++++++-------- package.json | 2 +- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index a44c614d..c4bab28e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@babel/core": "^7.23.2", "@cyclonedx/cyclonedx-library": "~1.13.3", "fast-toml": "^0.5.4", - "fast-xml-parser": "^4.2.4", + "fast-xml-parser": "^4.5.3", "help": "^3.0.2", "https-proxy-agent": "^7.0.6", "node-fetch": "^2.7.0", @@ -2402,20 +2402,18 @@ "integrity": "sha512-nUX94P84wE3gcem12g4FAH3xV7BmcCoV8FXcFVV+NIQAOwRJnyqVKhdGd9DqI4CunW+wOZhVBGKI6Jut/OlLTw==" }, "node_modules/fast-xml-parser": { - "version": "4.3.2", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", + "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" } ], "license": "MIT", "dependencies": { - "strnum": "^1.0.5" + "strnum": "^1.1.1" }, "bin": { "fxparser": "src/cli/cli.js" @@ -4932,7 +4930,15 @@ } }, "node_modules/strnum": { - "version": "1.0.5", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", + "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], "license": "MIT" }, "node_modules/supports-color": { diff --git a/package.json b/package.json index b520946b..cd8c8294 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "@babel/core": "^7.23.2", "@cyclonedx/cyclonedx-library": "~1.13.3", "fast-toml": "^0.5.4", - "fast-xml-parser": "^4.2.4", + "fast-xml-parser": "^4.5.3", "help": "^3.0.2", "https-proxy-agent": "^7.0.6", "node-fetch": "^2.7.0", From 3d04997a6eb349d1651be3d376c1868824f0f496 Mon Sep 17 00:00:00 2001 From: Strum355 Date: Fri, 18 Jul 2025 11:00:35 +0000 Subject: [PATCH 008/102] build: updated package with v0.2.4-ea.5 [skip ci] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index c4bab28e..00d8a0d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.4", + "version": "0.2.4-ea.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.4", + "version": "0.2.4-ea.5", "license": "Apache-2.0", "dependencies": { "@babel/core": "^7.23.2", diff --git a/package.json b/package.json index cd8c8294..a8eff0c6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.4", + "version": "0.2.4-ea.5", "description": "Code-Ready Dependency Analytics JavaScript API.", "license": "Apache-2.0", "homepage": "https://github.com/trustification/exhort-javascript-api#README.md", From 60c5f9d9cd28fce18be625209579c7c56b6a10f6 Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Fri, 18 Jul 2025 14:14:27 +0200 Subject: [PATCH 009/102] chore(ci): add multi-arch integration tests (#200) Signed-off-by: Ruben Romero Montes --- .github/workflows/integration.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/workflows/integration.yml diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml new file mode 100644 index 00000000..af7a30f6 --- /dev/null +++ b/.github/workflows/integration.yml @@ -0,0 +1,20 @@ +--- +name: Integration + +on: + workflow_dispatch: + pull_request: + branches: + - main + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + call-shared: + uses: trustification/exhort-integration-tests/.github/workflows/integration.yml@main + with: + language: javascript + repo-url: ${{ github.event.pull_request.head.repo.full_name || github.repository }} + commit-sha: ${{ github.event.pull_request.head.sha || github.sha }} From 6058debcdc9a10aba41966f8fbc3c8729b3de2ca Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Mon, 1 Sep 2025 11:30:48 +0100 Subject: [PATCH 010/102] fix: use & pass down opts for getCustom in imageAnalysis (#244) --- .github/workflows/pr.yml | 1 + package-lock.json | 8 +- package.json | 2 +- src/analysis.js | 4 +- src/oci_image/images.js | 11 +- src/oci_image/utils.js | 243 ++++++++++-------- src/tools.js | 8 +- .../tst_manifests/image/httpd:2.4.49.json | 4 + .../image/httpd:2.4.49^^amd64.json | 4 + ...b693a54ae9ad5e6317fcdbb7a2d9b8c3b1364.json | 4 + 10 files changed, 165 insertions(+), 124 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 79dba4ae..629f383a 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -58,6 +58,7 @@ jobs: with: python-version: '3.9' cache: 'pip' + - name: get Python location id: python-location run: | diff --git a/package-lock.json b/package-lock.json index 00d8a0d0..8e353d06 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ }, "devDependencies": { "@babel/core": "^7.23.2", - "@trustification/exhort-api-spec": "^1.0.13", + "@trustification/exhort-api-spec": "^1.0.18", "@types/node": "^20.17.30", "@types/which": "^3.0.4", "babel-plugin-rewire": "^1.2.0", @@ -863,9 +863,9 @@ "license": "(Unlicense OR Apache-2.0)" }, "node_modules/@trustification/exhort-api-spec": { - "version": "1.0.13", - "resolved": "https://npm.pkg.github.com/download/@trustification/exhort-api-spec/1.0.13/5ad3fc6d7abfd81745d784dc112dbf7c4ee71ea8", - "integrity": "sha512-wTDPOWUTvPHN+PkLoVGYxAfCY/ALB7xi9XHIufvI88y4aeW+UDcjaRINwEUl9fupG2VJQ0Ory+uEeW1BSBIkDQ==", + "version": "1.0.18", + "resolved": "https://npm.pkg.github.com/download/@trustification/exhort-api-spec/1.0.18/b7f6dc02d979899c009edbc0bf3d9bdee137f151", + "integrity": "sha512-ft9oRpItc9LDe/fzcrQiLYJBd3Tpmx0nMl9VMMSfajVDuy3Ot+vMqI3OvhytnzlSb3rY8UUg3+m7xqhi4U/zJw==", "dev": true, "license": "Apache-2.0" }, diff --git a/package.json b/package.json index a8eff0c6..6fbdff5d 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ }, "devDependencies": { "@babel/core": "^7.23.2", - "@trustification/exhort-api-spec": "^1.0.13", + "@trustification/exhort-api-spec": "^1.0.18", "@types/node": "^20.17.30", "@types/which": "^3.0.4", "babel-plugin-rewire": "^1.2.0", diff --git a/src/analysis.js b/src/analysis.js index 3a1a5c14..20e05860 100644 --- a/src/analysis.js +++ b/src/analysis.js @@ -156,8 +156,8 @@ async function requestComponent(provider, manifest, url, opts = {}) { async function requestImages(imageRefs, url, html = false, opts = {}) { const imageSboms = {} for (const image of imageRefs) { - const parsedImageRef = parseImageRef(image) - imageSboms[parsedImageRef.getPackageURL().toString()] = generateImageSBOM(parsedImageRef) + const parsedImageRef = parseImageRef(image, opts) + imageSboms[parsedImageRef.getPackageURL().toString()] = generateImageSBOM(parsedImageRef, opts) } const finalUrl = new URL(`${url}/api/v4/batch-analysis`); diff --git a/src/oci_image/images.js b/src/oci_image/images.js index 6462872b..d600f4bc 100644 --- a/src/oci_image/images.js +++ b/src/oci_image/images.js @@ -216,24 +216,25 @@ export class ImageRef { /** * @param {string} image * @param {string} [platform] + * @param {import("index.js").Options} [opts={}] */ - constructor(image, platform) { + constructor(image, platform, opts) { this.image = new Image(image); if (platform != null) { this.platform = Platform.fromString(platform); } - this.checkImageDigest(); + this.checkImageDigest(opts); } /** * @private */ - checkImageDigest() { + checkImageDigest(opts) { if (this.image.digest == null) { try { - const digests = getImageDigests(this); + const digests = getImageDigests(this, opts); if (digests.size === 0) { throw new Error("Failed to get any image digest"); } @@ -241,7 +242,7 @@ export class ImageRef { this.image.digest = digests[Platform.EMPTY.toString()]; } else { if (this.platform == null) { - this.platform = getImagePlatform(); + this.platform = getImagePlatform(opts); } if (this.platform == null) { throw new Error(`Failed to get image platform for image digest`); diff --git a/src/oci_image/utils.js b/src/oci_image/utils.js index 825b7f30..fbe71a75 100644 --- a/src/oci_image/utils.js +++ b/src/oci_image/utils.js @@ -1,6 +1,6 @@ import { delimiter, sep } from 'path'; -import { getCustomPath, invokeCommand } from '../tools.js'; +import { getCustom, getCustomPath, invokeCommand } from '../tools.js'; import { ImageRef } from './images.js'; import { Platform } from './platform.js'; @@ -54,10 +54,11 @@ const variantMapping = { /** * * @param {import('./images').ImageRef} imageRef + * @param {import("../index.js").Options} [opts={}] - optional various options to pass along the application * @returns {{}} */ -export function generateImageSBOM(imageRef) { - const output = execSyft(imageRef); +export function generateImageSBOM(imageRef, opts = {}) { + const output = execSyft(imageRef, opts); const node = JSON.parse(output); if (node['metadata'] != null) { @@ -73,30 +74,32 @@ export function generateImageSBOM(imageRef) { /** * * @param {string} image + * @param {import("../index.js").Options} [opts={}] - optional various options to pass along the application * @returns {ImageRef} */ -export function parseImageRef(image) { +export function parseImageRef(image, opts) { const parts = image.split('^^') if (parts[0].trim() === image) { - return new ImageRef(image, null) + return new ImageRef(image, null, opts); } else if (parts.length === 2) { - return new ImageRef(parts[0], parts[1]) + return new ImageRef(parts[0], parts[1], opts); } else { throw new Error(`Failed to parse OCI image ref "${image}", should be in the format "image^^architecture" or "image"`) } } /** -* Executes Syft to generate SBOM -* @param {import('./images').ImageRef} imageRef - The image reference -*/ -function execSyft(imageRef) { - const syft = getCustomPath("syft"); - const docker = getCustomPath("docker"); - const podman = getCustomPath("podman"); - - const syftConfigPath = process.env[EXHORT_SYFT_CONFIG_PATH] ?? ''; - const imageSource = process.env[EXHORT_SYFT_IMAGE_SOURCE] ?? ''; + * Executes Syft to generate SBOM + * @param {import('./images').ImageRef} imageRef - The image reference + * @param {import("../index.js").Options} [opts={}] - optional various options to pass along the application + */ +function execSyft(imageRef, opts = {}) { + const syft = getCustomPath("syft", opts); + const docker = getCustomPath("docker", opts); + const podman = getCustomPath("podman", opts); + + const syftConfigPath = getCustom(EXHORT_SYFT_CONFIG_PATH, "", opts); + const imageSource = getCustom(EXHORT_SYFT_IMAGE_SOURCE, "", opts); // Confirm image source exists, this will throw an error if not getImageSource(imageSource); @@ -119,14 +122,8 @@ function execSyft(imageRef) { "-o", "cyclonedx-json@1.5", "-q", - ...(syftConfigPath ? [ - "-c", - syftConfigPath, - ] : []), - ...(imageSource ? [ - "--from", - imageSource, - ] : []) + ...(syftConfigPath ? ["-c", syftConfigPath] : []), + ...(imageSource ? ["--from", imageSource] : []), ]; try { @@ -144,11 +141,11 @@ function execSyft(imageRef) { } /** -* Gets the environment variables for Syft -* @param {string} dockerPath - The Docker path -* @param {string} podmanPath - The Podman path -* @returns {Array} - The environment variables -*/ + * Gets the environment variables for Syft + * @param {string} dockerPath - The Docker path + * @param {string} podmanPath - The Podman path + * @returns {Array} - The environment variables + */ function getSyftEnvs(dockerPath, podmanPath) { let path = null; if (dockerPath && podmanPath) { @@ -171,34 +168,35 @@ function getSyftEnvs(dockerPath, podmanPath) { } /** -* Gets the platform information for an image -* @returns {Platform|null} - The platform information or null -*/ -export function getImagePlatform() { - const platform = process.env[EXHORT_IMAGE_PLATFORM]; + * Gets the platform information for an image + * @param {import("../index.js").Options} [opts={}] - optional various options to pass along the application + * @returns {Platform|null} - The platform information or null + */ +export function getImagePlatform(opts = {}) { + const platform = getCustom(EXHORT_IMAGE_PLATFORM, null, opts); if (platform) { return Platform.fromString(platform) } - const imageSource = process.env[EXHORT_SYFT_IMAGE_SOURCE] ?? ''; + const imageSource = getCustom(EXHORT_SYFT_IMAGE_SOURCE, "", opts); const source = getImageSource(imageSource); - let os = process.env[EXHORT_IMAGE_OS]; + let os = getCustom(EXHORT_IMAGE_OS, null, opts); if (!os) { - os = source.getOs(); + os = source.getOs(opts); } - let arch = process.env[EXHORT_IMAGE_ARCH]; + let arch = getCustom(EXHORT_IMAGE_ARCH, null, opts); if (!arch) { - arch = source.getArch(); + arch = source.getArch(opts); } if (os && arch) { if (!Platform.isVariantRequired(os, arch)) { return Platform.fromComponents(os, arch, null); } - let variant = process.env[EXHORT_IMAGE_VARIANT]; + let variant = getCustom(EXHORT_IMAGE_VARIANT, null, opts); if (!variant) { - variant = source.getVariant(); + variant = source.getVariant(opts); } if (variant) { return Platform.fromComponents(os, arch, variant); @@ -209,13 +207,14 @@ export function getImagePlatform() { } /** -* Gets information about a host from a container engine -* @param {string} engine - The container engine name -* @param {string} info - The information to retrieve -* @returns {string} - The host information -*/ -function hostInfo(engine, info) { - const exec = getCustomPath(engine); + * Gets information about a host from a container engine + * @param {string} engine - The container engine name + * @param {string} info - The information to retrieve + * @param {import("../index.js").Options} [opts={}] - optional various options to pass along the application + * @returns {string} - The host information + */ +function hostInfo(engine, info, opts = {}) { + const exec = getCustomPath(engine, opts); let output; try { @@ -239,83 +238,91 @@ function hostInfo(engine, info) { /** * Gets the OS information from Docker + * @param {import("../index.js").Options} [opts={}] - optional various options to pass along the application * @returns {string} - The OS information */ -function dockerGetOs() { - return hostInfo("docker", "OSType"); +function dockerGetOs(opts = {}) { + return hostInfo("docker", "OSType", opts); } /** * Gets the architecture information from Docker + * @param {import("../index.js").Options} [opts={}] - optional various options to pass along the application * @returns {string} - The architecture information */ -function dockerGetArch() { - let arch = hostInfo("docker", "Architecture"); +function dockerGetArch(opts = {}) { + let arch = hostInfo("docker", "Architecture", opts); arch = archMapping[arch]; return arch || ""; } /** * Gets the variant information from Docker + * @param {import("../index.js").Options} [opts={}] - optional various options to pass along the application * @returns {string} - The variant information */ -function dockerGetVariant() { - let variant = hostInfo("docker", "Architecture"); +function dockerGetVariant(opts = {}) { + let variant = hostInfo("docker", "Architecture", opts); variant = variantMapping[variant]; return variant || ""; } /** * Gets the OS information from Podman + * @param {import("../index.js").Options} [opts={}] - optional various options to pass along the application * @returns {string} - The OS information */ -function podmanGetOs() { - return hostInfo("podman", "os"); +function podmanGetOs(opts = {}) { + return hostInfo("podman", "os", opts); } /** * Gets the architecture information from Podman + * @param {import("../index.js").Options} [opts={}] - optional various options to pass along the application * @returns {string} - The architecture information */ -function podmanGetArch() { - return hostInfo("podman", "arch"); +function podmanGetArch(opts = {}) { + return hostInfo("podman", "arch", opts); } /** * Gets the variant information from Podman + * @param {import("../index.js").Options} [opts={}] - optional various options to pass along the application * @returns {string} - The variant information */ -function podmanGetVariant() { - return hostInfo("podman", "variant"); +function podmanGetVariant(opts = {}) { + return hostInfo("podman", "variant", opts); } /** * Gets information from Docker or Podman - * @param {function(): string} dockerSupplier - function to get information from Docker - * @param {function(): string} podmanSupplier - function to get information from Podman + * @param {function(Object): string} dockerSupplier - function to get information from Docker + * @param {function(Object): string} podmanSupplier - function to get information from Podman + * @param {import("../index.js").Options} [opts={}] - optional various options to pass along the application * @returns {string} - The information */ -function dockerPodmanInfo(dockerSupplier, podmanSupplier) { - return dockerSupplier() ?? podmanSupplier(); +function dockerPodmanInfo(dockerSupplier, podmanSupplier, opts = {}) { + return dockerSupplier(opts) ?? podmanSupplier(opts); } /** * Gets the digests for an image * @param {import('./images').ImageRef} imageRef - The image reference + * @param {import("../index.js").Options} [opts={}] - optional various options to pass along the application * @returns {Object.} - The image digests * @throws {Error} If the image info is invalid */ -export function getImageDigests(imageRef) { - const output = execSkopeoInspect(imageRef, true); +export function getImageDigests(imageRef, opts = {}) { + const output = execSkopeoInspect(imageRef, true, opts); const node = JSON.parse(output); if (node.mediaType) { const mediaType = node.mediaType; - if (typeof mediaType === 'string') { + if (typeof mediaType === "string") { switch (mediaType) { case MEDIA_TYPE_OCI1_MANIFEST: case MEDIA_TYPE_DOCKER2_MANIFEST: - return getSingleImageDigest(imageRef); + return getSingleImageDigest(imageRef, opts); case MEDIA_TYPE_OCI1_MANIFEST_LIST: case MEDIA_TYPE_DOCKER2_MANIFEST_LIST: @@ -393,7 +400,6 @@ function filterPlatform(manifestNode) { if (platformNode.architecture && platformNode.os && typeof platformNode.architecture === 'string' && typeof platformNode.os === 'string') { - try { if (platformNode.variant && typeof platformNode.variant === 'string') { Platform.fromComponents(platformNode.os, platformNode.architecture, platformNode.variant); @@ -412,10 +418,11 @@ function filterPlatform(manifestNode) { /** * Gets digest for a single image * @param {import('./images').ImageRef} imageRef - The image reference + * @param {import("../index.js").Options} [opts={}] - optional various options to pass along the application * @returns {Object.} - The image digest */ -function getSingleImageDigest(imageRef) { - const output = execSkopeoInspect(imageRef, false); +function getSingleImageDigest(imageRef, opts = {}) { + const output = execSkopeoInspect(imageRef, false, opts); const node = JSON.parse(output); @@ -431,26 +438,21 @@ function getSingleImageDigest(imageRef) { * Executes Skopeo inspect * @param {import('./images').ImageRef} imageRef - The image reference * @param {boolean} raw - Whether to use raw output + * @param {import("../index.js").Options} [opts={}] - optional various options to pass along the application */ -function execSkopeoInspect(imageRef, raw) { - const skopeo = getCustomPath("skopeo"); +function execSkopeoInspect(imageRef, raw, opts = {}) { + const skopeo = getCustomPath("skopeo", opts); - const configPath = process.env[EXHORT_SKOPEO_CONFIG_PATH]; - const daemonHost = process.env[EXHORT_IMAGE_SERVICE_ENDPOINT]; + const configPath = getCustom(EXHORT_SKOPEO_CONFIG_PATH, null, opts); + const daemonHost = getCustom(EXHORT_IMAGE_SERVICE_ENDPOINT, null, opts); const args = [ "inspect", raw ? "--raw" : "", `docker://${imageRef.image.getFullName()}`, - ...(configPath ? [ - "--authfile", - configPath, - ] : []), - ...(daemonHost ? [ - "--daemon-host", - daemonHost, - ] : []) - ] + ...(configPath ? ["--authfile", configPath] : []), + ...(daemonHost ? ["--daemon-host", daemonHost] : []), + ]; try { return invokeCommand(skopeo, args); @@ -470,27 +472,56 @@ function execSkopeoInspect(imageRef, raw) { * @property {function(): string} getVariant */ -/** @type {Object. { + switch (name) { + case "": + case "registry": + return { + getOs(opts = {}) { + return dockerPodmanInfo(dockerGetOs, podmanGetOs, opts); + }, + getArch(opts = {}) { + return dockerPodmanInfo(dockerGetArch, podmanGetArch, opts); + }, + getVariant(opts = {}) { + return dockerPodmanInfo(dockerGetVariant, podmanGetVariant, opts); + }, + }; + case "docker": + return { + getOs(opts = {}) { + return dockerGetOs(opts); + }, + getArch(opts = {}) { + return dockerGetArch(opts); + }, + getVariant(opts = {}) { + return dockerGetVariant(opts); + }, + }; + case "podman": + return { + getOs(opts = {}) { + return podmanGetOs(opts); + }, + getArch(opts = {}) { + return podmanGetArch(opts); + }, + getVariant(opts = {}) { + return podmanGetVariant(opts); + }, + }; + default: + return null; } }; @@ -501,7 +532,7 @@ const SyftImageSource = { * @throws {Error} If the image source is not valid */ function getImageSource(name) { - const source = SyftImageSource[name]; + const source = SyftImageSource(name); if (!source) { throw new Error(`The image source for syft is not valid: ${name}`); } diff --git a/src/tools.js b/src/tools.js index 6e83942b..82b2fee3 100644 --- a/src/tools.js +++ b/src/tools.js @@ -13,16 +13,12 @@ export const RegexNotToBeLogged = /EXHORT_.*_TOKEN|ex-.*-token/ export function logValueFromObjects(key,opts, defValue) { if(key in opts) { console.log(`value of option with key ${key} = ${opts[key]} ${EOL}`) - } - else - { + } else { console.log(`key ${key} doesn't exists on opts object ${EOL}`) } if(key in process.env) { console.log(`value of environment variable ${key} = ${process.env[key]} ${EOL}`) - } - else - { + } else { console.log(`environment variable ${key} doesn't exists ${EOL}`) } console.log(`default value for ${key} = ${defValue} ${EOL}`) diff --git a/test/providers/tst_manifests/image/httpd:2.4.49.json b/test/providers/tst_manifests/image/httpd:2.4.49.json index 8a166dc5..da5d3ffe 100644 --- a/test/providers/tst_manifests/image/httpd:2.4.49.json +++ b/test/providers/tst_manifests/image/httpd:2.4.49.json @@ -11727,6 +11727,10 @@ } ], "properties": [ + { + "name": "syft:distro:extendedSupport", + "value": "false" + }, { "name": "syft:distro:id", "value": "debian" diff --git a/test/providers/tst_manifests/image/httpd:2.4.49^^amd64.json b/test/providers/tst_manifests/image/httpd:2.4.49^^amd64.json index 8a166dc5..da5d3ffe 100644 --- a/test/providers/tst_manifests/image/httpd:2.4.49^^amd64.json +++ b/test/providers/tst_manifests/image/httpd:2.4.49^^amd64.json @@ -11727,6 +11727,10 @@ } ], "properties": [ + { + "name": "syft:distro:extendedSupport", + "value": "false" + }, { "name": "syft:distro:id", "value": "debian" diff --git a/test/providers/tst_manifests/image/httpd@sha256:4b5cb7697fea2aa6d398504c381b693a54ae9ad5e6317fcdbb7a2d9b8c3b1364.json b/test/providers/tst_manifests/image/httpd@sha256:4b5cb7697fea2aa6d398504c381b693a54ae9ad5e6317fcdbb7a2d9b8c3b1364.json index 8a166dc5..da5d3ffe 100644 --- a/test/providers/tst_manifests/image/httpd@sha256:4b5cb7697fea2aa6d398504c381b693a54ae9ad5e6317fcdbb7a2d9b8c3b1364.json +++ b/test/providers/tst_manifests/image/httpd@sha256:4b5cb7697fea2aa6d398504c381b693a54ae9ad5e6317fcdbb7a2d9b8c3b1364.json @@ -11727,6 +11727,10 @@ } ], "properties": [ + { + "name": "syft:distro:extendedSupport", + "value": "false" + }, { "name": "syft:distro:id", "value": "debian" From 969dc247c0a5125ca98fad1edc8e2f5367fd5c14 Mon Sep 17 00:00:00 2001 From: Strum355 Date: Mon, 1 Sep 2025 10:31:40 +0000 Subject: [PATCH 011/102] build: updated package with v0.2.4-ea.6 [skip ci] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8e353d06..d2a937b9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.5", + "version": "0.2.4-ea.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.5", + "version": "0.2.4-ea.6", "license": "Apache-2.0", "dependencies": { "@babel/core": "^7.23.2", diff --git a/package.json b/package.json index 6fbdff5d..f966f53a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.5", + "version": "0.2.4-ea.6", "description": "Code-Ready Dependency Analytics JavaScript API.", "license": "Apache-2.0", "homepage": "https://github.com/trustification/exhort-javascript-api#README.md", From 5ea1a5e695dbbdf29a6f5c024a4b0bf3bb6d2745 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Mon, 1 Sep 2025 16:53:34 +0100 Subject: [PATCH 012/102] fix: properly handle go.mod files with no dependencies (#245) --- src/providers/golang_gomodules.js | 17 +++--- test/providers/golang_gomodules.test.js | 3 +- .../expected_sbom_component_analysis.json | 27 ++++++++++ .../expected_sbom_stack_analysis.json | 52 +++++++++++++++++++ .../tst_manifests/golang/go_mod_empty/go.mod | 3 ++ 5 files changed, 95 insertions(+), 7 deletions(-) create mode 100644 test/providers/tst_manifests/golang/go_mod_empty/expected_sbom_component_analysis.json create mode 100644 test/providers/tst_manifests/golang/go_mod_empty/expected_sbom_stack_analysis.json create mode 100644 test/providers/tst_manifests/golang/go_mod_empty/go.mod diff --git a/src/providers/golang_gomodules.js b/src/providers/golang_gomodules.js index e0fddf5e..e67bd0fe 100644 --- a/src/providers/golang_gomodules.js +++ b/src/providers/golang_gomodules.js @@ -258,17 +258,22 @@ function getSBOM(manifest, opts = {}, includeTransitive) { } let manifestDir = path.dirname(manifest) try { - var goGraphOutput = invokeCommand(goBin, ['mod', 'graph'], {cwd: manifestDir}).toString() + var goGraphOutput = invokeCommand(goBin, ['mod', 'graph'], {cwd: manifestDir}).toString().trim() } catch(error) { throw new Error('failed to invoke go binary for module graph', {cause: error}) } + + try { + var goModEditOutput = JSON.parse(invokeCommand(goBin, ["mod", "edit", "-json"], {cwd: manifestDir}).toString().trim()) + } catch(error) { + throw new Error('failed to determine root module name', {cause: error}) + } + let ignoredDeps = getIgnoredDeps(manifest); let allIgnoredDeps = ignoredDeps.map((dep) => dep.toString()) let sbom = new Sbom(); - let rows = goGraphOutput.split(getLineSeparatorGolang()).filter(line => { - return !line.includes(' go@'); - }); - let root = getParentVertexFromEdge(rows[0]) + let rows = goGraphOutput.split(getLineSeparatorGolang()).filter(line => !line.includes(' go@')); + let root = getParentVertexFromEdge(goModEditOutput['Module']['Path']) let matchManifestVersions = getCustom("MATCH_MANIFEST_VERSIONS", "false", opts); if(matchManifestVersions === "true") { performManifestVersionsCheck(root, rows, manifest) @@ -278,7 +283,7 @@ function getSBOM(manifest, opts = {}, includeTransitive) { sbom.addRoot(mainModule) const exhortGoMvsLogicEnabled = getCustom("EXHORT_GO_MVS_LOGIC_ENABLED", "false", opts) if(includeTransitive && exhortGoMvsLogicEnabled === "true") { - rows = getFinalPackagesVersionsForModule(rows,manifest,goBin) + rows = getFinalPackagesVersionsForModule(rows, manifest, goBin) } if (includeTransitive) { let currentParent = "" diff --git a/test/providers/golang_gomodules.test.js b/test/providers/golang_gomodules.test.js index f1b5894e..32063f97 100644 --- a/test/providers/golang_gomodules.test.js +++ b/test/providers/golang_gomodules.test.js @@ -23,7 +23,8 @@ suite('testing the golang-go-modules data provider', () => { "go_mod_no_ignore", "go_mod_with_ignore", "go_mod_test_ignore", - "go_mod_with_all_ignore" + "go_mod_with_all_ignore", + "go_mod_empty" ].forEach(testCase => { let scenario = testCase.replace('go_mod_', '').replaceAll('_', ' ') test(`verify go.mod sbom provided for stack analysis with scenario ${scenario}`, () => { diff --git a/test/providers/tst_manifests/golang/go_mod_empty/expected_sbom_component_analysis.json b/test/providers/tst_manifests/golang/go_mod_empty/expected_sbom_component_analysis.json new file mode 100644 index 00000000..17455b3c --- /dev/null +++ b/test/providers/tst_manifests/golang/go_mod_empty/expected_sbom_component_analysis.json @@ -0,0 +1,27 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "group": "github.com/sample", + "name": "empty-module", + "version": "v0.0.0", + "purl": "pkg:golang/github.com/sample/empty-module@v0.0.0", + "type": "application", + "bom-ref": "pkg:golang/github.com/sample/empty-module@v0.0.0" + } + }, + "components": [ + { + "group": "github.com/sample", + "name": "empty-module", + "version": "v0.0.0", + "purl": "pkg:golang/github.com/sample/empty-module@v0.0.0", + "type": "application", + "bom-ref": "pkg:golang/github.com/sample/empty-module@v0.0.0" + } + ], + "dependencies": [] +} diff --git a/test/providers/tst_manifests/golang/go_mod_empty/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/golang/go_mod_empty/expected_sbom_stack_analysis.json new file mode 100644 index 00000000..a41eed49 --- /dev/null +++ b/test/providers/tst_manifests/golang/go_mod_empty/expected_sbom_stack_analysis.json @@ -0,0 +1,52 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "group": "github.com/sample", + "name": "empty-module", + "version": "v0.0.0", + "purl": "pkg:golang/github.com/sample/empty-module@v0.0.0", + "type": "application", + "bom-ref": "pkg:golang/github.com/sample/empty-module@v0.0.0" + } + }, + "components": [ + { + "group": "github.com/sample", + "name": "empty-module", + "version": "v0.0.0", + "purl": "pkg:golang/github.com/sample/empty-module@v0.0.0", + "type": "application", + "bom-ref": "pkg:golang/github.com/sample/empty-module@v0.0.0" + }, + { + "name": "go", + "version": "1.24", + "purl": "pkg:golang/go@1.24", + "type": "library", + "bom-ref": "pkg:golang/go@1.24" + }, + { + "name": "toolchain", + "version": "go1.24", + "purl": "pkg:golang/toolchain@go1.24", + "type": "library", + "bom-ref": "pkg:golang/toolchain@go1.24" + } + ], + "dependencies": [ + { + "ref": "pkg:golang/go@1.24", + "dependsOn": [ + "pkg:golang/toolchain@go1.24" + ] + }, + { + "ref": "pkg:golang/toolchain@go1.24", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/golang/go_mod_empty/go.mod b/test/providers/tst_manifests/golang/go_mod_empty/go.mod new file mode 100644 index 00000000..a2af790f --- /dev/null +++ b/test/providers/tst_manifests/golang/go_mod_empty/go.mod @@ -0,0 +1,3 @@ +module github.com/sample/empty-module + +go 1.24 From d454a4a1918e2eb495700e1f283752120a9d8eb1 Mon Sep 17 00:00:00 2001 From: Strum355 Date: Mon, 1 Sep 2025 15:54:24 +0000 Subject: [PATCH 013/102] build: updated package with v0.2.4-ea.7 [skip ci] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index d2a937b9..cee9c79c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.6", + "version": "0.2.4-ea.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.6", + "version": "0.2.4-ea.7", "license": "Apache-2.0", "dependencies": { "@babel/core": "^7.23.2", diff --git a/package.json b/package.json index f966f53a..813d6500 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.6", + "version": "0.2.4-ea.7", "description": "Code-Ready Dependency Analytics JavaScript API.", "license": "Apache-2.0", "homepage": "https://github.com/trustification/exhort-javascript-api#README.md", From b45975f3563c39b7d3fc9df3a3579100a1327a34 Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Tue, 2 Sep 2025 12:10:22 +0200 Subject: [PATCH 014/102] fix: allow ignored packages without version (#246) Signed-off-by: Ruben Romero Montes --- src/providers/python_pip.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/providers/python_pip.js b/src/providers/python_pip.js index 1ce06c48..062da21a 100644 --- a/src/providers/python_pip.js +++ b/src/providers/python_pip.js @@ -95,6 +95,9 @@ function splitToNameVersion(nameVersion) { } const regex = /[^\w\s-_]/g; let endIndex = nameVersion.search(regex); + if(endIndex === -1) { + return [nameVersion.trim()] + } result.push(nameVersion.substring(0, endIndex).trim()) return result; } From 854a70ad2ae856d986e54bb9a99ea28ea5c86bcf Mon Sep 17 00:00:00 2001 From: ruromero Date: Tue, 2 Sep 2025 10:11:09 +0000 Subject: [PATCH 015/102] build: updated package with v0.2.4-ea.8 [skip ci] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index cee9c79c..e090b67c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.7", + "version": "0.2.4-ea.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.7", + "version": "0.2.4-ea.8", "license": "Apache-2.0", "dependencies": { "@babel/core": "^7.23.2", diff --git a/package.json b/package.json index 813d6500..68b00602 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.7", + "version": "0.2.4-ea.8", "description": "Code-Ready Dependency Analytics JavaScript API.", "license": "Apache-2.0", "homepage": "https://github.com/trustification/exhort-javascript-api#README.md", From e9064484ed3e8bed113e8dd655ad697ce36f316d Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Tue, 2 Sep 2025 14:34:17 +0100 Subject: [PATCH 016/102] fix: correctly fallback to podman if docker hostinfo returns nothing (#247) --- src/oci_image/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/oci_image/utils.js b/src/oci_image/utils.js index fbe71a75..4b95a30d 100644 --- a/src/oci_image/utils.js +++ b/src/oci_image/utils.js @@ -302,7 +302,7 @@ function podmanGetVariant(opts = {}) { * @returns {string} - The information */ function dockerPodmanInfo(dockerSupplier, podmanSupplier, opts = {}) { - return dockerSupplier(opts) ?? podmanSupplier(opts); + return dockerSupplier(opts) || podmanSupplier(opts); } /** From d23acc71f7243247fc0583945852849ba0720073 Mon Sep 17 00:00:00 2001 From: Strum355 Date: Tue, 2 Sep 2025 13:35:13 +0000 Subject: [PATCH 017/102] build: updated package with v0.2.4-ea.9 [skip ci] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index e090b67c..9ac89306 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.8", + "version": "0.2.4-ea.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.8", + "version": "0.2.4-ea.9", "license": "Apache-2.0", "dependencies": { "@babel/core": "^7.23.2", diff --git a/package.json b/package.json index 68b00602..a696ac08 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.8", + "version": "0.2.4-ea.9", "description": "Code-Ready Dependency Analytics JavaScript API.", "license": "Apache-2.0", "homepage": "https://github.com/trustification/exhort-javascript-api#README.md", From a93a7f9da98e6cb64c6107caa06228bb741c3696 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Mon, 6 Oct 2025 10:55:09 +0100 Subject: [PATCH 018/102] chore: include package manager in exhort API request headers (#253) --- src/analysis.js | 17 ++++++--- src/providers/base_javascript.js | 38 ++++++++++++------- src/providers/javascript_yarn.js | 1 + .../processors/yarn_berry_processor.js | 10 ++--- .../processors/yarn_classic_processor.js | 6 +-- 5 files changed, 45 insertions(+), 27 deletions(-) diff --git a/src/analysis.js b/src/analysis.js index 20e05860..93cc55cd 100644 --- a/src/analysis.js +++ b/src/analysis.js @@ -12,6 +12,7 @@ export default { requestComponent, requestStack, requestImages, validateToken } const rhdaTokenHeader = "rhda-token"; const rhdaSourceHeader = "rhda-source" const rhdaOperationTypeHeader = "rhda-operation-type" +const rhdaPackageManagerHeader = "rhda-pkg-manager" /** * Adds proxy agent configuration to fetch options if a proxy URL is specified @@ -29,7 +30,7 @@ function addProxyAgent(options, opts) { /** * Send a stack analysis request and get the report as 'text/html' or 'application/json'. - * @param {import('./provider').Provider | import('./providers/base_java.js').default } provider - the provided data for constructing the request + * @param {import('./provider').Provider} provider - the provided data for constructing the request * @param {string} manifest - path for the manifest * @param {string} url - the backend url to send the request to * @param {boolean} [html=false] - true will return 'text/html', false will return 'application/json' @@ -43,17 +44,18 @@ async function requestStack(provider, manifest, url, html = false, opts = {}) { opts["source-manifest"] = "" opts[rhdaOperationTypeHeader.toUpperCase().replaceAll("-", "_")] = "stack-analysis" let startTime = new Date() - let EndTime + let endTime if (process.env["EXHORT_DEBUG"] === "true") { console.log("Starting time of sending stack analysis request to exhort server= " + startTime) } + opts[rhdaPackageManagerHeader.toUpperCase().replaceAll("-", "_")] = provided.ecosystem const fetchOptions = addProxyAgent({ method: 'POST', headers: { 'Accept': html ? 'text/html' : 'application/json', 'Content-Type': provided.contentType, - ...getTokenHeaders(opts) + ...getTokenHeaders(opts), }, body: provided.content }, opts); @@ -76,11 +78,11 @@ async function requestStack(provider, manifest, url, html = false, opts = {}) { if (exRequestId) { console.log("Unique Identifier associated with this request - ex-request-id=" + exRequestId) } - EndTime = new Date() + endTime = new Date() console.log("Response body received from exhort server : " + EOL + EOL) console.log(console.log(JSON.stringify(result, null, 4))) - console.log("Ending time of sending stack analysis request to exhort server= " + EndTime) - let time = (EndTime - startTime) / 1000 + console.log("Ending time of sending stack analysis request to exhort server= " + endTime) + let time = (endTime - startTime) / 1000 console.log("Total Time in seconds: " + time) } @@ -108,6 +110,7 @@ async function requestComponent(provider, manifest, url, opts = {}) { if (process.env["EXHORT_DEBUG"] === "true") { console.log("Starting time of sending component analysis request to exhort server= " + new Date()) } + opts[rhdaPackageManagerHeader.toUpperCase().replaceAll("-", "_")] = provided.ecosystem const fetchOptions = addProxyAgent({ method: 'POST', @@ -256,6 +259,8 @@ function getTokenHeaders(opts = {}) { setRhdaHeader(rhdaTokenHeader, headers, opts); setRhdaHeader(rhdaSourceHeader, headers, opts); setRhdaHeader(rhdaOperationTypeHeader, headers, opts); + setRhdaHeader(rhdaPackageManagerHeader, headers, opts) + if (process.env["EXHORT_DEBUG"] === "true") { console.log("Headers Values to be sent to exhort:" + EOL) for (const headerKey in headers) { diff --git a/src/providers/base_javascript.js b/src/providers/base_javascript.js index fcb5d44c..365adb9e 100644 --- a/src/providers/base_javascript.js +++ b/src/providers/base_javascript.js @@ -15,7 +15,7 @@ import Manifest from './manifest.js'; * The ecosystem identifier for JavaScript/npm packages * @type {string} */ -export const ecosystem = 'npm'; +export const purlType = 'npm'; /** * Base class for JavaScript package manager providers. @@ -28,6 +28,8 @@ export default class Base_javascript { #manifest; /** @type {string} */ #cmd; + /** @type {string} */ + #ecosystem; /** * Sets up the provider with the manifest path and options @@ -38,17 +40,27 @@ export default class Base_javascript { _setUp(manifestPath, opts) { this.#cmd = getCustomPath(this._cmdName(), opts); this.#manifest = new Manifest(manifestPath); + this.#ecosystem = purlType; } /** - * Gets the current manifest object - * @returns {Manifest} The manifest object - * @protected - */ + * Gets the current manifest object + * @returns {Manifest} The manifest object + * @protected + */ _getManifest() { return this.#manifest; } + /** + * Sets the ecosystem value + * @param {string} ecosystem - The ecosystem identifier + * @protected + */ + _setEcosystem(ecosystem) { + this.#ecosystem = ecosystem; + } + /** * Returns the name of the lock file for the specific implementation * @returns {string} The lock file name @@ -117,7 +129,7 @@ export default class Base_javascript { provideStack(manifestPath, opts = {}) { this._setUp(manifestPath, opts); return { - ecosystem, + ecosystem: this.#ecosystem, content: this.#getSBOM(opts), contentType: 'application/vnd.cyclonedx+json' } @@ -132,7 +144,7 @@ export default class Base_javascript { provideComponent(manifestPath, opts = {}) { this._setUp(manifestPath, opts); return { - ecosystem, + ecosystem: this.#ecosystem, content: this.#getDirectDependencySbom(opts), contentType: 'application/vnd.cyclonedx+json' } @@ -163,7 +175,7 @@ export default class Base_javascript { #getSBOM(opts = {}) { const depsObject = this._buildDependencyTree(true); - let mainComponent = toPurl(ecosystem, this.#manifest.name, this.#manifest.version); + let mainComponent = toPurl(purlType, this.#manifest.name, this.#manifest.version); let sbom = new Sbom(); sbom.addRoot(mainComponent); @@ -185,8 +197,8 @@ export default class Base_javascript { Object.entries(dependencies) .forEach(entry => { const [name, artifact] = entry; - const target = toPurl(ecosystem, name, artifact.version); - const rootPurl = toPurl(ecosystem, this.#manifest.name, this.#manifest.version); + const target = toPurl(purlType, name, artifact.version); + const rootPurl = toPurl(purlType, this.#manifest.name, this.#manifest.version); sbom.addDependency(rootPurl, target); this.#addDependenciesOf(sbom, target, artifact); }); @@ -205,7 +217,7 @@ export default class Base_javascript { .forEach(entry => { const [name, depArtifact] = entry; if(depArtifact.version !== undefined) { - const target = toPurl(ecosystem, name, depArtifact.version); + const target = toPurl(purlType, name, depArtifact.version); sbom.addDependency(from, target); this.#addDependenciesOf(sbom, target, depArtifact); } @@ -220,7 +232,7 @@ export default class Base_javascript { */ #getDirectDependencySbom(opts = {}) { const depTree = this._buildDependencyTree(false); - let mainComponent = toPurl(ecosystem, this.#manifest.name, this.#manifest.version); + let mainComponent = toPurl(purlType, this.#manifest.name, this.#manifest.version); let sbom = new Sbom(); sbom.addRoot(mainComponent); @@ -251,7 +263,7 @@ export default class Base_javascript { return new Map( Object.entries(depTree.dependencies).map( - ([key, value]) => [key, toPurl(ecosystem, key, value.version)] + ([key, value]) => [key, toPurl(purlType, key, value.version)] ) ); } diff --git a/src/providers/javascript_yarn.js b/src/providers/javascript_yarn.js index 7756472f..9d1c8e13 100644 --- a/src/providers/javascript_yarn.js +++ b/src/providers/javascript_yarn.js @@ -35,6 +35,7 @@ export default class Javascript_yarn extends Base_javascript { } const isClassic = matches[1] === '1'; + this._setEcosystem(isClassic ? 'yarn-classic' : 'yarn-berry'); this.#processor = isClassic ? new Yarn_classic_processor(this._getManifest()) : new Yarn_berry_processor(this._getManifest()); } diff --git a/src/providers/processors/yarn_berry_processor.js b/src/providers/processors/yarn_berry_processor.js index b8854079..b5ca0329 100644 --- a/src/providers/processors/yarn_berry_processor.js +++ b/src/providers/processors/yarn_berry_processor.js @@ -1,7 +1,7 @@ import { EOL } from 'os'; import { toPurl, toPurlFromString } from "../../tools.js"; -import { ecosystem } from "../base_javascript.js"; +import { purlType } from "../base_javascript.js"; import Yarn_processor from "./yarn_processor.js"; @@ -64,7 +64,7 @@ export default class Yarn_berry_processor extends Yarn_processor { const idx = depName.lastIndexOf('@'); const name = depName.substring(0, idx); const version = dep.children.Version; - return [name, toPurl(ecosystem, name, version)]; + return [name, toPurl(purlType, name, version)]; } ) ); @@ -120,12 +120,12 @@ export default class Yarn_berry_processor extends Yarn_processor { const matches = Yarn_berry_processor.LOCATOR_PATTERN.exec(locator); if (matches) { - return toPurl(ecosystem, matches[1], matches[2]); + return toPurl(purlType, matches[1], matches[2]); } const virtualMatches = Yarn_berry_processor.VIRTUAL_LOCATOR_PATTERN.exec(locator); if (virtualMatches) { - return toPurl(ecosystem, virtualMatches[1], virtualMatches[2]); + return toPurl(purlType, virtualMatches[1], virtualMatches[2]); } return undefined; @@ -145,6 +145,6 @@ export default class Yarn_berry_processor extends Yarn_processor { const name = depName.substring(0, depName.lastIndexOf('@')); const version = node.children.Version; - return toPurl(ecosystem, name, version); + return toPurl(purlType, name, version); } } diff --git a/src/providers/processors/yarn_classic_processor.js b/src/providers/processors/yarn_classic_processor.js index 4f7c910b..baa17d41 100644 --- a/src/providers/processors/yarn_classic_processor.js +++ b/src/providers/processors/yarn_classic_processor.js @@ -1,5 +1,5 @@ import { toPurl, toPurlFromString } from "../../tools.js"; -import { ecosystem } from "../base_javascript.js"; +import { purlType } from "../base_javascript.js"; import Yarn_processor from "./yarn_processor.js"; @@ -52,7 +52,7 @@ export default class Yarn_classic_processor extends Yarn_processor { const idx = depName.lastIndexOf('@'); const name = depName.substring(0, idx); const version = idx !== -1 ? depName.substring(idx + 1) : ''; - return [name, toPurl(ecosystem, name, version)]; + return [name, toPurl(purlType, name, version)]; } ) ) @@ -119,7 +119,7 @@ class NodeMetaData { const idx = this.nodeName.lastIndexOf('@'); this.name = this.nodeName.substring(0, idx); this.version = idx !== -1 ? this.nodeName.substring(idx + 1) : ''; - this.purl = toPurl(ecosystem, this.name, this.version); + this.purl = toPurl(purlType, this.name, this.version); const shadowNode = node.shadow; this.shadow = shadowNode ? shadowNode : false; } From 57853f33fb96e17fb99f0d3fc261b360ab0e01fd Mon Sep 17 00:00:00 2001 From: Strum355 Date: Mon, 6 Oct 2025 09:55:59 +0000 Subject: [PATCH 019/102] build: updated package with v0.2.4-ea.10 [skip ci] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9ac89306..46bd328f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.9", + "version": "0.2.4-ea.10", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.9", + "version": "0.2.4-ea.10", "license": "Apache-2.0", "dependencies": { "@babel/core": "^7.23.2", diff --git a/package.json b/package.json index a696ac08..62f4cf62 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.9", + "version": "0.2.4-ea.10", "description": "Code-Ready Dependency Analytics JavaScript API.", "license": "Apache-2.0", "homepage": "https://github.com/trustification/exhort-javascript-api#README.md", From b7c897764a6130632038dcc5268396bdd5fb50e2 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Fri, 10 Oct 2025 15:44:40 +0100 Subject: [PATCH 020/102] feat: separate telemetry id header from auth token header (#254) --- src/analysis.js | 2 ++ src/index.js | 1 + 2 files changed, 3 insertions(+) diff --git a/src/analysis.js b/src/analysis.js index 93cc55cd..780b7c62 100644 --- a/src/analysis.js +++ b/src/analysis.js @@ -10,6 +10,7 @@ import { RegexNotToBeLogged, getCustom } from "./tools.js"; export default { requestComponent, requestStack, requestImages, validateToken } const rhdaTokenHeader = "rhda-token"; +const rhdaTelemetryId = "rhda-telemetry-id"; const rhdaSourceHeader = "rhda-source" const rhdaOperationTypeHeader = "rhda-operation-type" const rhdaPackageManagerHeader = "rhda-pkg-manager" @@ -260,6 +261,7 @@ function getTokenHeaders(opts = {}) { setRhdaHeader(rhdaSourceHeader, headers, opts); setRhdaHeader(rhdaOperationTypeHeader, headers, opts); setRhdaHeader(rhdaPackageManagerHeader, headers, opts) + setRhdaHeader(rhdaTelemetryId, headers, opts); if (process.env["EXHORT_DEBUG"] === "true") { console.log("Headers Values to be sent to exhort:" + EOL) diff --git a/src/index.js b/src/index.js index 1b376c1b..dfd87d57 100644 --- a/src/index.js +++ b/src/index.js @@ -46,6 +46,7 @@ export const exhortDefaultUrl = "https://rhda.rhcloud.com"; * MATCH_MANIFEST_VERSIONS?: string | undefined, * RHDA_SOURCE?: string | undefined, * RHDA_TOKEN?: string | undefined, + * RHDA_TELEMETRY_ID?: string | undefined, * [key: string]: string | undefined, * }} Options */ From 8e44e06b2ba1acda6d0c36dae73652f7f7c0d8b1 Mon Sep 17 00:00:00 2001 From: Strum355 Date: Fri, 10 Oct 2025 14:45:50 +0000 Subject: [PATCH 021/102] build: updated package with v0.2.4-ea.11 [skip ci] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 46bd328f..a1512c42 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.10", + "version": "0.2.4-ea.11", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.10", + "version": "0.2.4-ea.11", "license": "Apache-2.0", "dependencies": { "@babel/core": "^7.23.2", diff --git a/package.json b/package.json index 62f4cf62..e8a67257 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.10", + "version": "0.2.4-ea.11", "description": "Code-Ready Dependency Analytics JavaScript API.", "license": "Apache-2.0", "homepage": "https://github.com/trustification/exhort-javascript-api#README.md", From 87054fff42098aa903cc78edf11d5b7b9d11b692 Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Thu, 30 Oct 2025 10:25:06 +0100 Subject: [PATCH 022/102] feat!: set golang mvs true as default (#255) * feat!: set golang mvs true as default Signed-off-by: Ruben Romero Montes * feat: update tests Signed-off-by: Ruben Romero Montes * feat: update provider to trustify Signed-off-by: Ruben Romero Montes * fix: ci build Signed-off-by: Ruben Romero Montes * fix: update new perl-base sbom Signed-off-by: Ruben Romero Montes * fix: align providers Signed-off-by: Ruben Romero Montes --------- Signed-off-by: Ruben Romero Montes --- .mocharc.json | 3 +- README.md | 25 +- docker-image/Dockerfiles/Dockerfile | 2 +- src/providers/golang_gomodules.js | 48 +- test/it/end-to-end.js | 16 +- test/it/test_manifests/go/go.sum | 301 + .../expected_sbom_stack_analysis.json | 29 +- .../tst_manifests/golang/go_mod_empty/go.mod | 2 +- .../expected_sbom_stack_analysis.json | 1262 +- .../expected_sbom_stack_analysis.json | 10433 +++---------- .../expected_sbom_stack_analysis.json | 12998 ++-------------- .../expected_sbom_stack_analysis.json | 7559 ++++----- .../golang/go_mod_with_all_ignore/go.sum | 322 + .../expected_sbom_stack_analysis.json | 10311 +++--------- .../tst_manifests/image/httpd:2.4.49.json | 18 +- .../image/httpd:2.4.49^^amd64.json | 18 +- ...b693a54ae9ad5e6317fcdbb7a2d9b8c3b1364.json | 18 +- 17 files changed, 10307 insertions(+), 33058 deletions(-) create mode 100644 test/it/test_manifests/go/go.sum create mode 100644 test/providers/tst_manifests/golang/go_mod_with_all_ignore/go.sum diff --git a/.mocharc.json b/.mocharc.json index a1cd6260..3f47f6f5 100644 --- a/.mocharc.json +++ b/.mocharc.json @@ -10,5 +10,6 @@ "check-leaks": false, "color": true, "fail-zero": true, - "recursive": true + "recursive": true, + "reporter-options": ["maxDiffSize=0"] } \ No newline at end of file diff --git a/README.md b/README.md index ee7dfe60..7821aa92 100644 --- a/README.md +++ b/README.md @@ -444,26 +444,25 @@ Two possible values for this setting: 2. MATCH_MANIFEST_VERSIONS="true" - means that before starting the analysis, the api will compare all the versions of packages in manifest against installed/resolved versions on client' environment, in case there is a difference, it will throw an error to the client/user with message containing the first encountered versions mismatch, including package name, and the versions difference, and will suggest to set setting `MATCH_MANIFEST_VERSIONS`="false" to ignore all differences - #### Golang Support -By default, all go.mod' packages' transitive modules will be taken to analysis with their original package version, that is, -if go.mod has 2 modules, `a` and `b`, and each one of them has the same package c with same major version v1, but different minor versions: -- namespace/c/v1@v1.1 -- namespace/c/v1@v1.2 - +By default, Golang dependency resolution follows the [Minimal Version Selection (MVS) Algorithm](https://go.dev/ref/mod#minimal-version-selection). +This means that when analyzing a project, only the module versions that would actually be included in the final executable are considered. -Then both of these packages will be entered to the generated sbom and will be included in analysis returned to client. -In golang, in an actual build of an application into an actual application executable binary, only one of the minor versions will be included in the executable, as only packages with same name but different major versions considered different packages , -hence can co-exist together in the application executable. +For example, if your `go.mod` file declares two modules, `a` and `b`, and both depend on the same package `c` (same major version `v1`) but with different minor versions: -Go ecosystem knows how to select one minor version among all the minor versions of the same major version of a given package, using the [MVS Algorithm](https://go.dev/ref/mod#minimal-version-selection). - -In order to enable this behavior, that only shows in analysis modules versions that are actually built into the application executable, please set -system property/environment variable - `EXHORT_GO_MVS_LOGIC_ENABLED=true`(Default is false) +- `namespace/c/v1@v1.1` +- `namespace/c/v1@v1.2` +Only one of these versions — the minimal version selected by MVS — will be included in the generated SBOM and analysis results. +This mirrors the behavior of a real Go build, where only one minor version of a given major version can be present in the executable (since Go treats packages with the same name and major version as identical). +The MVS-based resolution is **enabled by default**. +If you want to disable this behavior and instead include **all transitive module versions** (as listed in `go.mod` dependencies), set the system property or environment variable: +```bash +EXHORT_GO_MVS_LOGIC_ENABLED=false +``` #### Python Support diff --git a/docker-image/Dockerfiles/Dockerfile b/docker-image/Dockerfiles/Dockerfile index c4e18b4d..d88f99d9 100644 --- a/docker-image/Dockerfiles/Dockerfile +++ b/docker-image/Dockerfiles/Dockerfile @@ -56,7 +56,7 @@ ENV EXHORT_PIP_FREEZE='' # contains pip show data for all packages, base64 encoded ENV EXHORT_PIP_SHOW='' # indicate whether to use the Minimal version selection (MVS) algorithm to select a set of module versions to use when building Go packages. -ENV EXHORT_GO_MVS_LOGIC_ENABLED='false' +ENV EXHORT_GO_MVS_LOGIC_ENABLED='true' # Copy java executable from the builder stage COPY --from=builder /usr/jdk-21.0.1/ /usr/jdk-21.0.1/ diff --git a/src/providers/golang_gomodules.js b/src/providers/golang_gomodules.js index e67bd0fe..90bb2dd8 100644 --- a/src/providers/golang_gomodules.js +++ b/src/providers/golang_gomodules.js @@ -24,6 +24,7 @@ export default { isSupported, validateLockFile, provideComponent, provideStack } */ const ecosystem = 'golang' const defaultMainModuleVersion = "v0.0.0"; + /** * @param {string} manifestName - the subject manifest name-type * @returns {boolean} - return true if `pom.xml` is the manifest name-type @@ -281,7 +282,7 @@ function getSBOM(manifest, opts = {}, includeTransitive) { const mainModule = toPurl(root, "@") sbom.addRoot(mainModule) - const exhortGoMvsLogicEnabled = getCustom("EXHORT_GO_MVS_LOGIC_ENABLED", "false", opts) + const exhortGoMvsLogicEnabled = getCustom("EXHORT_GO_MVS_LOGIC_ENABLED", "true", opts) if(includeTransitive && exhortGoMvsLogicEnabled === "true") { rows = getFinalPackagesVersionsForModule(rows, manifest, goBin) } @@ -377,15 +378,25 @@ function getFinalPackagesVersionsForModule(rows,manifestPath,goBin) { let childName = getPackageName(child) let parentFinalVersion = finalVersionModules[parentName] let childFinalVersion = finalVersionModules[childName] - // if this condition will be uncommented, there will be several differences between sbom and go list -m all listing... - // let parentOriginalVersion = getVersionOfPackage(parent) - // if( parentOriginalVersion !== undefined && parentOriginalVersion === parentFinalVersion) { - if (parentName !== parent) { - finalVersionModulesArray.push(`${parentName}@${parentFinalVersion} ${childName}@${childFinalVersion}`) + + // Handle special cases for go and toolchain modules that aren't in go list -m all + if (isSpecialGoModule(parentName) || isSpecialGoModule(childName)) { + // For go and toolchain modules, use the original versions from the graph + let parentVersion = getVersionOfPackage(parent) + let childVersion = getVersionOfPackage(child) + if (parentName !== parent) { + finalVersionModulesArray.push(`${parentName}@${parentVersion} ${childName}@${childVersion}`) + } else { + finalVersionModulesArray.push(`${parentName} ${childName}@${childVersion}`) + } } else { - finalVersionModulesArray.push(`${parentName} ${childName}@${childFinalVersion}`) + // For regular modules, use MVS logic + if (parentName !== parent) { + finalVersionModulesArray.push(`${parentName}@${parentFinalVersion} ${childName}@${childFinalVersion}`) + } else { + finalVersionModulesArray.push(`${parentName} ${childName}@${childFinalVersion}`) + } } - // } }) return finalVersionModulesArray @@ -401,6 +412,27 @@ function getPackageName(fullPackage) { return fullPackage.split("@")[0] } +/** + * Check if a module name is a special Go module (go or toolchain) + * @param {string} moduleName - the module name to check + * @return {boolean} true if it's a special Go module + * @private + */ +function isSpecialGoModule(moduleName) { + return moduleName === 'go' || moduleName === 'toolchain'; +} + +/** + * + * @param {string} fullPackage - full package with its name and version + * @return -{string} package version only + * @private + */ +function getVersionOfPackage(fullPackage) { + let parts = fullPackage.split("@") + return parts.length > 1 ? parts[1] : undefined +} + function getLineSeparatorGolang() { let reg = /\n|\r\n/ return reg diff --git a/test/it/end-to-end.js b/test/it/end-to-end.js index cd8752e7..a73db28d 100644 --- a/test/it/end-to-end.js +++ b/test/it/end-to-end.js @@ -22,8 +22,10 @@ function getParsedKeyFromHtml(html, key,keyLength) { } function extractTotalsGeneralOrFromProvider(providedDataForStack, provider) { - if(providedDataForStack.providers[provider].sources.length > 0) { - return providedDataForStack.providers[provider].sources[provider].summary.total; + if(providedDataForStack.providers[provider].sources && Object.keys(providedDataForStack.providers[provider].sources).length > 0) { + // Get the first source (e.g., "osv") and return its summary total + const firstSource = Object.keys(providedDataForStack.providers[provider].sources)[0]; + return providedDataForStack.providers[provider].sources[firstSource].summary.total; } else { return providedDataForStack.scanned.total; } @@ -53,7 +55,7 @@ suite('Integration Tests', () => { let pomPath = `test/it/test_manifests/${packageManager}/${manifestName}` let providedDataForStack = await index.stackAnalysis(pomPath) console.log(JSON.stringify(providedDataForStack,null , 4)) - let providers = ["tpa"] + let providers = ["rhtpa"] providers.forEach(provider => expect(extractTotalsGeneralOrFromProvider(providedDataForStack, provider)).greaterThan(0)) // TODO: if sources doesn't exist, add "scanned" instead // python transitive count for stack analysis is awaiting fix in exhort backend @@ -74,7 +76,7 @@ suite('Integration Tests', () => { } let reportParsedFromHtml let parsedSummaryFromHtml - let parsedStatusFromHtmlOsvNvd + let parsedStatusFromProvider let parsedScannedFromHtml try { reportParsedFromHtml = JSON.parse(html.substring(html.indexOf("\"report\" :") + 10, html.search(/([}](\s*)){5}/) + html.substring(html.search(/([}](\s*)){5}/)).indexOf(","))) @@ -85,8 +87,8 @@ suite('Integration Tests', () => { reportParsedFromHtml = JSON.parse("{" + startOfJson.substring(0,startOfJson.indexOf("};") + 1)) reportParsedFromHtml = reportParsedFromHtml.report } finally { - parsedStatusFromHtmlOsvNvd = reportParsedFromHtml.providers["tpa"].status - expect(parsedStatusFromHtmlOsvNvd.code).equals(200) + parsedStatusFromProvider = reportParsedFromHtml.providers["rhtpa"].status + expect(parsedStatusFromProvider.code).equals(200) parsedScannedFromHtml = reportParsedFromHtml.scanned expect( typeof html).equals("string") expect(html).include("html").include("svg") @@ -102,7 +104,7 @@ suite('Integration Tests', () => { expect(analysisReport.scanned.total).greaterThan(0) expect(analysisReport.scanned.transitive).equal(0) - let providers = ["tpa"] + let providers = ["rhtpa"] providers.forEach(provider => expect(extractTotalsGeneralOrFromProvider(analysisReport, provider)).greaterThan(0)) providers.forEach(provider => expect(analysisReport.providers[provider].status.code).equals(200)) }).timeout(20000); diff --git a/test/it/test_manifests/go/go.sum b/test/it/test_manifests/go/go.sum new file mode 100644 index 00000000..eb339779 --- /dev/null +++ b/test/it/test_manifests/go/go.sum @@ -0,0 +1,301 @@ +github.com/AndreasBriese/bbloom v0.0.0-20180913140656-343706a395b7/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= +github.com/Kubuxu/go-os-helper v0.0.1/go.mod h1:N8B+I7vPCT80IcP58r50u4+gEEcsZETFUpAzWW2ep1Y= +github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= +github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/btcsuite/btcd v0.0.0-20190213025234-306aecffea32/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= +github.com/btcsuite/btcd v0.0.0-20190523000118-16327141da8c/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= +github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= +github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= +github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= +github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= +github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/cskr/pubsub v1.0.2/go.mod h1:/8MzYXk/NJAz782G8RPkFzXTZVu63VotefPnR9TIRis= +github.com/cucumber/godog v0.8.1/go.mod h1:vSh3r/lM+psC1BPXvdkSEuNjmXfpVqrMGYAElF6hxnA= +github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +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/dgraph-io/badger v1.5.5-0.20190226225317-8115aed38f8f/go.mod h1:VZxzAIRPHRVNRKRo6AXrX9BJegn6il06VMTZVJYCIjQ= +github.com/dgryski/go-farm v0.0.0-20190104051053-3adb47b1fb0f/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/elastic/go-sysinfo v1.1.1/go.mod h1:i1ZYdU10oLNfRzq4vq62BEwD2fH8KaWh6eh0ikPT9F0= +github.com/elastic/go-windows v1.0.0/go.mod h1:TsU0Nrp7/y3+VwE82FoZF8gC/XFg/Elz6CcloAxnPgU= +github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.6.0/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +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.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gxed/hashland/keccakpg v0.0.1/go.mod h1:kRzw3HkwxFU1mpmPP8v1WyQzwdGfmKFJ6tItnhQ67kU= +github.com/gxed/hashland/murmur3 v0.0.1/go.mod h1:KjXop02n4/ckmZSnY2+HKcLud/tcmvhST0bie/0lS48= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= +github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= +github.com/ipfs/bbloom v0.0.1/go.mod h1:oqo8CVWsJFMOZqTglBG4wydCE4IQA/G2/SEofB0rjUI= +github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0= +github.com/ipfs/go-bitswap v0.1.0/go.mod h1:FFJEf18E9izuCqUtHxbWEvq+reg7o4CW5wSAE1wsxj0= +github.com/ipfs/go-block-format v0.0.1/go.mod h1:DK/YYcsSUIVAFNwo/KZCdIIbpN0ROH/baNLgayt4pFc= +github.com/ipfs/go-block-format v0.0.2/go.mod h1:AWR46JfpcObNfg3ok2JHDUfdiHRgWhJgCQF+KIgOPJY= +github.com/ipfs/go-block-format v0.0.3/go.mod h1:4LmD4ZUw0mhO+JSKdpWwrzATiEfM7WWgQ8H5l6P8MVk= +github.com/ipfs/go-blockservice v0.1.0/go.mod h1:hzmMScl1kXHg3M2BjTymbVPjv627N7sYcvYaKbop39M= +github.com/ipfs/go-cid v0.0.1/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= +github.com/ipfs/go-cid v0.0.2/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= +github.com/ipfs/go-cid v0.0.3/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= +github.com/ipfs/go-cid v0.0.4/go.mod h1:4LLaPOQwmk5z9LBgQnpkivrx8BJjUyGwTXCd5Xfj6+M= +github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= +github.com/ipfs/go-datastore v0.0.1/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= +github.com/ipfs/go-datastore v0.0.5/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= +github.com/ipfs/go-datastore v0.1.0/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= +github.com/ipfs/go-datastore v0.3.1/go.mod h1:w38XXW9kVFNp57Zj5knbKWM2T+KOZCGDRVNdgPHtbHw= +github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= +github.com/ipfs/go-ds-badger v0.0.2/go.mod h1:Y3QpeSFWQf6MopLTiZD+VT6IC1yZqaGmjvRcKeSGij8= +github.com/ipfs/go-ds-leveldb v0.0.1/go.mod h1:feO8V3kubwsEF22n0YRQCffeb79OOYIykR4L04tMOYc= +github.com/ipfs/go-ipfs-blockstore v0.0.1/go.mod h1:d3WClOmRQKFnJ0Jz/jj/zmksX0ma1gROTlovZKBmN08= +github.com/ipfs/go-ipfs-blockstore v0.1.0/go.mod h1:5aD0AvHPi7mZc6Ci1WCAhiBQu2IsfTduLl+422H6Rqw= +github.com/ipfs/go-ipfs-blocksutil v0.0.1/go.mod h1:Yq4M86uIOmxmGPUHv/uI7uKqZNtLb449gwKqXjIsnRk= +github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= +github.com/ipfs/go-ipfs-delay v0.0.1/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= +github.com/ipfs/go-ipfs-ds-help v0.0.1/go.mod h1:gtP9xRaZXqIQRh1HRpp595KbBEdgqWFxefeVKOV8sxo= +github.com/ipfs/go-ipfs-exchange-interface v0.0.1/go.mod h1:c8MwfHjtQjPoDyiy9cFquVtVHkO9b9Ob3FG91qJnWCM= +github.com/ipfs/go-ipfs-exchange-offline v0.0.1/go.mod h1:WhHSFCVYX36H/anEKQboAzpUws3x7UeEGkzQc3iNkM0= +github.com/ipfs/go-ipfs-pq v0.0.1/go.mod h1:LWIqQpqfRG3fNc5XsnIhz/wQ2XXGyugQwls7BgUmUfY= +github.com/ipfs/go-ipfs-routing v0.1.0/go.mod h1:hYoUkJLyAUKhF58tysKpids8RNDPO42BVMgK5dNsoqY= +github.com/ipfs/go-ipfs-util v0.0.1/go.mod h1:spsl5z8KUnrve+73pOhSVZND1SIxPW5RyBCNzQxlJBc= +github.com/ipfs/go-ipfs-util v0.0.2/go.mod h1:CbPtkWJzjLdEcezDns2XYaehFVNXG9zrdrtMecczcsQ= +github.com/ipfs/go-ipld-cbor v0.0.3/go.mod h1:wTBtrQZA3SoFKMVkp6cn6HMRteIB1VsmHA0AQFOn7Nc= +github.com/ipfs/go-ipld-cbor v0.0.5/go.mod h1:BkCduEx3XBCO6t2Sfo5BaHzuok7hbhdMm9Oh8B2Ftq4= +github.com/ipfs/go-ipld-format v0.0.1/go.mod h1:kyJtbkDALmFHv3QR6et67i35QzO3S0dCDnkOJhcZkms= +github.com/ipfs/go-ipld-format v0.0.2/go.mod h1:4B6+FM2u9OJ9zCV+kSbgFAZlOrv1Hqbf0INGQgiKf9k= +github.com/ipfs/go-ipld-format v0.2.0/go.mod h1:3l3C1uKoadTPbeNfrDi+xMInYKlx2Cvg1BuydPSdzQs= +github.com/ipfs/go-log v0.0.1/go.mod h1:kL1d2/hzSpI0thNYjiKfjanbVNU+IIGA/WnNESY9leM= +github.com/ipfs/go-merkledag v0.3.2/go.mod h1:fvkZNNZixVW6cKSZ/JfLlON5OlgTXNdRLz0p6QG/I2M= +github.com/ipfs/go-metrics-interface v0.0.1/go.mod h1:6s6euYU4zowdslK0GKHmqaIZ3j/b/tL7HTWtJ4VPgWY= +github.com/ipfs/go-peertaskqueue v0.1.0/go.mod h1:Jmk3IyCcfl1W3jTW3YpghSwSEC6IJ3Vzz/jUmWw8Z0U= +github.com/ipfs/go-verifcid v0.0.1/go.mod h1:5Hrva5KBeIog4A+UpqlaIU+DEstipcJYQQZc0g37pY0= +github.com/ipld/go-car v0.3.0/go.mod h1:dPkEWeAK8KaVvH5TahaCs6Mncpd4lDMpkbs0/SPzuVs= +github.com/ipld/go-codec-dagpb v1.2.0/go.mod h1:6nBN7X7h8EOsEejZGqC7tej5drsdBAXbMHyBT+Fne5s= +github.com/ipld/go-ipld-prime v0.9.0/go.mod h1:KvBLMr4PX1gWptgkzRjVZCrLmSGcZCb/jioOQwCqZN8= +github.com/jackpal/gateway v1.0.5/go.mod h1:lTpwd4ACLXmpyiCTRtfiNyVnUmqT9RivzCDQetPfnjA= +github.com/jackpal/go-nat-pmp v1.0.1/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jbenet/go-cienv v0.0.0-20150120210510-1bb1476777ec/go.mod h1:rGaEvXB4uRSZMmzKNLoXvTu1sfx+1kv/DojUlPrSZGs= +github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA= +github.com/jbenet/go-temp-err-catcher v0.0.0-20150120210811-aac704a3f4f2/go.mod h1:8GXXJV31xl8whumTzdZsTt3RnUIiPqzkyf7mxToRCMs= +github.com/jbenet/goprocess v0.0.0-20160826012719-b497e2f366b8/go.mod h1:Ly/wlsjFq/qrU3Rar62tu1gASgGw6chQbSh/XgIIXCY= +github.com/jbenet/goprocess v0.1.3/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= +github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak= +github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= +github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/koron/go-ssdp v0.0.0-20180514024734-4a0ed625a78b/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +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/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/libp2p/go-addr-util v0.0.1/go.mod h1:4ac6O7n9rIAKB1dnd+s8IbbMXkt+oBpzX4/+RACcnlQ= +github.com/libp2p/go-buffer-pool v0.0.1/go.mod h1:xtyIz9PMobb13WaxR6Zo1Pd1zXJKYg0a8KiIvDp3TzQ= +github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= +github.com/libp2p/go-conn-security-multistream v0.1.0/go.mod h1:aw6eD7LOsHEX7+2hJkDxw1MteijaVcI+/eP2/x3J1xc= +github.com/libp2p/go-flow-metrics v0.0.1/go.mod h1:Iv1GH0sG8DtYN3SVJ2eG221wMiNpZxBdp967ls1g+k8= +github.com/libp2p/go-libp2p v0.1.0/go.mod h1:6D/2OBauqLUoqcADOJpn9WbKqvaM07tDw68qHM0BxUM= +github.com/libp2p/go-libp2p-autonat v0.1.0/go.mod h1:1tLf2yXxiE/oKGtDwPYWTSYG3PtvYlJmg7NeVtPRqH8= +github.com/libp2p/go-libp2p-blankhost v0.1.1/go.mod h1:pf2fvdLJPsC1FsVrNP3DUUvMzUts2dsLLBEpo1vW1ro= +github.com/libp2p/go-libp2p-circuit v0.1.0/go.mod h1:Ahq4cY3V9VJcHcn1SBXjr78AbFkZeIRmfunbA7pmFh8= +github.com/libp2p/go-libp2p-core v0.0.1/go.mod h1:g/VxnTZ/1ygHxH3dKok7Vno1VfpvGcGip57wjTU4fco= +github.com/libp2p/go-libp2p-core v0.0.2/go.mod h1:9dAcntw/n46XycV4RnlBq3BpgrmyUi9LuoTNdPrbUco= +github.com/libp2p/go-libp2p-crypto v0.1.0/go.mod h1:sPUokVISZiy+nNuTTH/TY+leRSxnFj/2GLjtOTW90hI= +github.com/libp2p/go-libp2p-discovery v0.1.0/go.mod h1:4F/x+aldVHjHDHuX85x1zWoFTGElt8HnoDzwkFZm29g= +github.com/libp2p/go-libp2p-loggables v0.1.0/go.mod h1:EyumB2Y6PrYjr55Q3/tiJ/o3xoDasoRYM7nOzEpoa90= +github.com/libp2p/go-libp2p-mplex v0.2.0/go.mod h1:Ejl9IyjvXJ0T9iqUTE1jpYATQ9NM3g+OtR+EMMODbKo= +github.com/libp2p/go-libp2p-mplex v0.2.1/go.mod h1:SC99Rxs8Vuzrf/6WhmH41kNn13TiYdAWNYHrwImKLnE= +github.com/libp2p/go-libp2p-nat v0.0.4/go.mod h1:N9Js/zVtAXqaeT99cXgTV9e75KpnWCvVOiGzlcHmBbY= +github.com/libp2p/go-libp2p-netutil v0.1.0/go.mod h1:3Qv/aDqtMLTUyQeundkKsA+YCThNdbQD54k3TqjpbFU= +github.com/libp2p/go-libp2p-peer v0.2.0/go.mod h1:RCffaCvUyW2CJmG2gAWVqwePwW7JMgxjsHm7+J5kjWY= +github.com/libp2p/go-libp2p-peerstore v0.1.0/go.mod h1:2CeHkQsr8svp4fZ+Oi9ykN1HBb6u0MOvdJ7YIsmcwtY= +github.com/libp2p/go-libp2p-record v0.1.0/go.mod h1:ujNc8iuE5dlKWVy6wuL6dd58t0n7xI4hAIl8pE6wu5Q= +github.com/libp2p/go-libp2p-secio v0.1.0/go.mod h1:tMJo2w7h3+wN4pgU2LSYeiKPrfqBgkOsdiKK77hE7c8= +github.com/libp2p/go-libp2p-swarm v0.1.0/go.mod h1:wQVsCdjsuZoc730CgOvh5ox6K8evllckjebkdiY5ta4= +github.com/libp2p/go-libp2p-testing v0.0.2/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= +github.com/libp2p/go-libp2p-testing v0.0.3/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= +github.com/libp2p/go-libp2p-transport-upgrader v0.1.1/go.mod h1:IEtA6or8JUbsV07qPW4r01GnTenLW4oi3lOPbUMGJJA= +github.com/libp2p/go-libp2p-yamux v0.2.0/go.mod h1:Db2gU+XfLpm6E4rG5uGCFX6uXA8MEXOxFcRoXUODaK8= +github.com/libp2p/go-maddr-filter v0.0.4/go.mod h1:6eT12kSQMA9x2pvFQa+xesMKUBlj9VImZbj3B9FBH/Q= +github.com/libp2p/go-mplex v0.0.3/go.mod h1:pK5yMLmOoBR1pNCqDlA2GQrdAVTMkqFalaTWe7l4Yd0= +github.com/libp2p/go-mplex v0.1.0/go.mod h1:SXgmdki2kwCUlCCbfGLEgHjC4pFqhTp0ZoV6aiKgxDU= +github.com/libp2p/go-msgio v0.0.2/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= +github.com/libp2p/go-nat v0.0.3/go.mod h1:88nUEt0k0JD45Bk93NIwDqjlhiOwOoV36GchpcVc1yI= +github.com/libp2p/go-reuseport v0.0.1/go.mod h1:jn6RmB1ufnQwl0Q1f+YxAj8isJgDCQzaaxIFYDhcYEA= +github.com/libp2p/go-reuseport-transport v0.0.2/go.mod h1:YkbSDrvjUVDL6b8XqriyA20obEtsW9BLkuOUyQAOCbs= +github.com/libp2p/go-stream-muxer v0.0.1/go.mod h1:bAo8x7YkSpadMTbtTaxGVHWUQsR/l5MEaHbKaliuT14= +github.com/libp2p/go-stream-muxer-multistream v0.2.0/go.mod h1:j9eyPol/LLRqT+GPLSxvimPhNph4sfYfMoDPd7HkzIc= +github.com/libp2p/go-tcp-transport v0.1.0/go.mod h1:oJ8I5VXryj493DEJ7OsBieu8fcg2nHGctwtInJVpipc= +github.com/libp2p/go-testutil v0.1.0/go.mod h1:81b2n5HypcVyrCg/MJx4Wgfp/VHojytjVe/gLzZ2Ehc= +github.com/libp2p/go-ws-transport v0.1.0/go.mod h1:rjw1MG1LU9YDC6gzmwObkPd/Sqwhw7yT74kj3raBFuo= +github.com/libp2p/go-yamux v1.2.2/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/miekg/dns v1.1.12/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= +github.com/minio/sha256-simd v0.0.0-20190131020904-2d45a736cd16/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= +github.com/minio/sha256-simd v0.0.0-20190328051042-05b4dd3047e5/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= +github.com/minio/sha256-simd v0.1.0/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= +github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= +github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= +github.com/mr-tron/base58 v1.1.1/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= +github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA= +github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM= +github.com/multiformats/go-multiaddr v0.0.1/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= +github.com/multiformats/go-multiaddr v0.0.2/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= +github.com/multiformats/go-multiaddr v0.0.4/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= +github.com/multiformats/go-multiaddr-dns v0.0.1/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= +github.com/multiformats/go-multiaddr-dns v0.0.2/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= +github.com/multiformats/go-multiaddr-fmt v0.0.1/go.mod h1:aBYjqL4T/7j4Qx+R73XSv/8JsgnRFlf0w2KGLCmXl3Q= +github.com/multiformats/go-multiaddr-net v0.0.1/go.mod h1:nw6HSxNmCIQH27XPGBuX+d1tnvM7ihcFwHMSstNAVUU= +github.com/multiformats/go-multibase v0.0.1/go.mod h1:bja2MqRZ3ggyXtZSEDKpl0uO/gviWFaSteVbWT51qgs= +github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc= +github.com/multiformats/go-multihash v0.0.1/go.mod h1:w/5tugSrLEbWqlcgJabL3oHFKTwfvkofsjW2Qa1ct4U= +github.com/multiformats/go-multihash v0.0.5/go.mod h1:lt/HCbqlQwlPBz7lv0sQCdtfcMtlJvakRUn/0Ual8po= +github.com/multiformats/go-multihash v0.0.10/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= +github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= +github.com/multiformats/go-multihash v0.0.14/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= +github.com/multiformats/go-multihash v0.0.15/go.mod h1:D6aZrWNLFTV/ynMpKsNtB40mJzmCl4jb1alC0OvHiHg= +github.com/multiformats/go-multistream v0.1.0/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg= +github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/polydawn/refmt v0.0.0-20190221155625-df39d6c2d992/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= +github.com/polydawn/refmt v0.0.0-20190807091052-3d65705ee9f1/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= +github.com/polydawn/refmt v0.0.0-20201211092308-30ac6d18308e/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= +github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/santhosh-tekuri/jsonschema v1.2.4/go.mod h1:TEAUOeZSmIxTTuHatJzrvARHiuO9LYd+cIxzgEHCQI4= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v0.0.0-20190222223459-a17d461953aa/go.mod h1:2RVY1rIf+2J2o/IM9+vPq9RzmHDSseB7FoXiSNIUsoU= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/spacemonkeygo/openssl v0.0.0-20181017203307-c2dcc5cca94a/go.mod h1:7AyxJNCJ7SBZ1MfVQCWD6Uqo2oubI2Eq2y2eqf+A5r0= +github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572/go.mod h1:w0SWMsp6j9O/dk4/ZpIhL+3CkG8ofA2vuv7k+ltqUMc= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +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.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/warpfork/go-wish v0.0.0-20180510122957-5ad1f5abf436/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= +github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= +github.com/whyrusleeping/cbor-gen v0.0.0-20200123233031-1cdf64d27158/go.mod h1:Xj/M2wWU+QdTdRbu/L/1dIZY8/Wb2K9pAhtroQuxJJI= +github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1/go.mod h1:8UvriyWtv5Q5EOgjHaSseUEdkQfvwFv1I/In/O2M9gc= +github.com/whyrusleeping/go-logging v0.0.0-20170515211332-0457bb6b88fc/go.mod h1:bopw91TMyo8J3tvftk8xmU2kPmlrt4nScJQZU2hE5EM= +github.com/whyrusleeping/go-notifier v0.0.0-20170827234753-097c5d47330f/go.mod h1:cZNvX9cFybI01GriPRMXDtczuvUhgbcYr9iCGaNlRv8= +github.com/whyrusleeping/mafmt v1.2.8/go.mod h1:faQJFPbLSxzD9xpA02ttW/tS9vZykNvXwGvqIpk20FA= +github.com/whyrusleeping/mdns v0.0.0-20180901202407-ef14215e6b30/go.mod h1:j4l84WPFclQPj320J9gp0XwNKBb3U0zt5CBqjPp22G4= +github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7/go.mod h1:X2c0RVCI1eSUFI8eLcY3c0423ykwiUdxLJtkDvruhjI= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.elastic.co/apm v1.11.0/go.mod h1:qoOSi09pnzJDh5fKnfY7bPmQgl8yl2tULdOu03xhui0= +go.elastic.co/fastjson v1.1.0/go.mod h1:boNGISWMjQsUPy/t6yqt2/1Wx4YNPSe+mZjlyw9vKKI= +golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190225124518-7f87c0fbb88b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190227160552-c95aed5357e7/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-20190522155817-f3200d17e092/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-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/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-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/sys v0.0.0-20180909124046-d0be0721c37e/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-20190219092855-153ac476189d/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190524122548-abf6ff778158/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191025021431-6c3a3bfe00ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +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/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +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/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +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.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= diff --git a/test/providers/tst_manifests/golang/go_mod_empty/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/golang/go_mod_empty/expected_sbom_stack_analysis.json index a41eed49..34d6f9e3 100644 --- a/test/providers/tst_manifests/golang/go_mod_empty/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_empty/expected_sbom_stack_analysis.json @@ -21,32 +21,7 @@ "purl": "pkg:golang/github.com/sample/empty-module@v0.0.0", "type": "application", "bom-ref": "pkg:golang/github.com/sample/empty-module@v0.0.0" - }, - { - "name": "go", - "version": "1.24", - "purl": "pkg:golang/go@1.24", - "type": "library", - "bom-ref": "pkg:golang/go@1.24" - }, - { - "name": "toolchain", - "version": "go1.24", - "purl": "pkg:golang/toolchain@go1.24", - "type": "library", - "bom-ref": "pkg:golang/toolchain@go1.24" } ], - "dependencies": [ - { - "ref": "pkg:golang/go@1.24", - "dependsOn": [ - "pkg:golang/toolchain@go1.24" - ] - }, - { - "ref": "pkg:golang/toolchain@go1.24", - "dependsOn": [] - } - ] -} + "dependencies": [] +} \ No newline at end of file diff --git a/test/providers/tst_manifests/golang/go_mod_empty/go.mod b/test/providers/tst_manifests/golang/go_mod_empty/go.mod index a2af790f..0220501d 100644 --- a/test/providers/tst_manifests/golang/go_mod_empty/go.mod +++ b/test/providers/tst_manifests/golang/go_mod_empty/go.mod @@ -1,3 +1,3 @@ module github.com/sample/empty-module -go 1.24 +go 1.20 diff --git a/test/providers/tst_manifests/golang/go_mod_light_no_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/golang/go_mod_light_no_ignore/expected_sbom_stack_analysis.json index 842251a8..d78d8976 100644 --- a/test/providers/tst_manifests/golang/go_mod_light_no_ignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_light_no_ignore/expected_sbom_stack_analysis.json @@ -1,724 +1,540 @@ { - "bomFormat": "CycloneDX", - "specVersion": "1.4", - "version": 1, - "metadata": { - "timestamp": "2023-08-07T00:00:00.000Z", - "component": { - "group": "golang.org/x", - "name": "example", - "version": "v0.0.0", - "purl": "pkg:golang/golang.org/x/example@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/golang.org/x/example@v0.0.0" - } - }, - "components": [ - { - "group": "golang.org/x", - "name": "example", - "version": "v0.0.0", - "purl": "pkg:golang/golang.org/x/example@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/golang.org/x/example@v0.0.0" - }, - { - "group": "github.com/spf13", - "name": "cobra", - "version": "v0.0.5", - "purl": "pkg:golang/github.com/spf13/cobra@v0.0.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/spf13/cobra@v0.0.5" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20210112183307-1e6ecd4bf1b0", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0" - }, - { - "group": "gopkg.in", - "name": "yaml.v3", - "version": "v3.0.1", - "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1" - }, - { - "group": "github.com/BurntSushi", - "name": "toml", - "version": "v0.3.1", - "purl": "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/BurntSushi/toml@v0.3.1" - }, - { - "group": "github.com/cpuguy83", - "name": "go-md2man", - "version": "v1.0.10", - "purl": "pkg:golang/github.com/cpuguy83/go-md2man@v1.0.10", - "type": "library", - "bom-ref": "pkg:golang/github.com/cpuguy83/go-md2man@v1.0.10" - }, - { - "group": "github.com/inconshreveable", - "name": "mousetrap", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/inconshreveable/mousetrap@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/inconshreveable/mousetrap@v1.0.0" - }, - { - "group": "github.com/mitchellh", - "name": "go-homedir", - "version": "v1.1.0", - "purl": "pkg:golang/github.com/mitchellh/go-homedir@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/mitchellh/go-homedir@v1.1.0" - }, - { - "group": "github.com/spf13", - "name": "pflag", - "version": "v1.0.3", - "purl": "pkg:golang/github.com/spf13/pflag@v1.0.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.3" - }, - { - "group": "github.com/spf13", - "name": "viper", - "version": "v1.3.2", - "purl": "pkg:golang/github.com/spf13/viper@v1.3.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/spf13/viper@v1.3.2" - }, - { - "group": "gopkg.in", - "name": "yaml.v2", - "version": "v2.2.2", - "purl": "pkg:golang/gopkg.in/yaml.v2@v2.2.2", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.2" - }, - { - "group": "github.com/yuin", - "name": "goldmark", - "version": "v1.2.1", - "purl": "pkg:golang/github.com/yuin/goldmark@v1.2.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/yuin/goldmark@v1.2.1" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.3.0", - "purl": "pkg:golang/golang.org/x/mod@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.3.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20201021035429-f5854403a974", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20201020160332-67f06af15bc9", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20200804184101-5ec99f83aff1", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - }, - { - "group": "gopkg.in", - "name": "check.v1", - "version": "v0.0.0-20161208181325-20d25e280405", - "purl": "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - }, - { - "group": "github.com/russross", - "name": "blackfriday", - "version": "v1.5.2", - "purl": "pkg:golang/github.com/russross/blackfriday@v1.5.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/russross/blackfriday@v1.5.2" - }, - { - "group": "github.com/armon", - "name": "consul-api", - "version": "v0.0.0-20180202201655-eb2c6b5be1b6", - "purl": "pkg:golang/github.com/armon/consul-api@v0.0.0-20180202201655-eb2c6b5be1b6", - "type": "library", - "bom-ref": "pkg:golang/github.com/armon/consul-api@v0.0.0-20180202201655-eb2c6b5be1b6" - }, - { - "group": "github.com/coreos", - "name": "etcd", - "version": "v3.3.10+incompatible", - "purl": "pkg:golang/github.com/coreos/etcd@v3.3.10%2Bincompatible", - "type": "library", - "bom-ref": "pkg:golang/github.com/coreos/etcd@v3.3.10%2Bincompatible" - }, - { - "group": "github.com/coreos", - "name": "go-etcd", - "version": "v2.0.0+incompatible", - "purl": "pkg:golang/github.com/coreos/go-etcd@v2.0.0%2Bincompatible", - "type": "library", - "bom-ref": "pkg:golang/github.com/coreos/go-etcd@v2.0.0%2Bincompatible" - }, - { - "group": "github.com/coreos", - "name": "go-semver", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/coreos/go-semver@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/coreos/go-semver@v0.2.0" - }, - { - "group": "github.com/fsnotify", - "name": "fsnotify", - "version": "v1.4.7", - "purl": "pkg:golang/github.com/fsnotify/fsnotify@v1.4.7", - "type": "library", - "bom-ref": "pkg:golang/github.com/fsnotify/fsnotify@v1.4.7" - }, - { - "group": "github.com/hashicorp", - "name": "hcl", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/hashicorp/hcl@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/hashicorp/hcl@v1.0.0" - }, - { - "group": "github.com/magiconair", - "name": "properties", - "version": "v1.8.0", - "purl": "pkg:golang/github.com/magiconair/properties@v1.8.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/magiconair/properties@v1.8.0" - }, - { - "group": "github.com/mitchellh", - "name": "mapstructure", - "version": "v1.1.2", - "purl": "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2" - }, - { - "group": "github.com/pelletier", - "name": "go-toml", - "version": "v1.2.0", - "purl": "pkg:golang/github.com/pelletier/go-toml@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/pelletier/go-toml@v1.2.0" - }, - { - "group": "github.com/spf13", - "name": "afero", - "version": "v1.1.2", - "purl": "pkg:golang/github.com/spf13/afero@v1.1.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/spf13/afero@v1.1.2" - }, - { - "group": "github.com/spf13", - "name": "cast", - "version": "v1.3.0", - "purl": "pkg:golang/github.com/spf13/cast@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/spf13/cast@v1.3.0" - }, - { - "group": "github.com/spf13", - "name": "jwalterweatherman", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/spf13/jwalterweatherman@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/spf13/jwalterweatherman@v1.0.0" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.2.2", - "purl": "pkg:golang/github.com/stretchr/testify@v1.2.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.2.2" - }, - { - "group": "github.com/ugorji/go", - "name": "codec", - "version": "v0.0.0-20181204163529-d75b2dcb6bc8", - "purl": "pkg:golang/github.com/ugorji/go/codec@v0.0.0-20181204163529-d75b2dcb6bc8", - "type": "library", - "bom-ref": "pkg:golang/github.com/ugorji/go/codec@v0.0.0-20181204163529-d75b2dcb6bc8" - }, - { - "group": "github.com/xordataexchange", - "name": "crypt", - "version": "v0.0.3-0.20170626215501-b2862e3d0a77", - "purl": "pkg:golang/github.com/xordataexchange/crypt@v0.0.3-0.20170626215501-b2862e3d0a77", - "type": "library", - "bom-ref": "pkg:golang/github.com/xordataexchange/crypt@v0.0.3-0.20170626215501-b2862e3d0a77" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20181203042331-505ab145d0a9", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20181203042331-505ab145d0a9", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20181203042331-505ab145d0a9" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20181205085412-a5c9d58dba9a", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20181205085412-a5c9d58dba9a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20181205085412-a5c9d58dba9a" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.0", - "purl": "pkg:golang/golang.org/x/text@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.0" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20191011191535-87dc89f01550", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191119224855-298f0cb1881e", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20191011141410-1b5146add898", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20200622213623-75b288015ac9", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200930185726-fdedc70b468f", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.3", - "purl": "pkg:golang/golang.org/x/text@v0.3.3", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.3" - }, - { - "group": "github.com/davecgh", - "name": "go-spew", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1" - }, - { - "group": "github.com/pmezard", - "name": "go-difflib", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190404232315-eb5bcb51f2a3", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190412213103-97732733099d", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190620200207-3b0461eec859", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20190423024810-112230192c58", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20190717185122-a985d3407aa7", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20180917221912-90fa682c2a6e", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20190308221718-c2843e01d9a2", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190215142949-d0b11bdaac8a", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a" - } - ], - "dependencies": [ - { - "ref": "pkg:golang/golang.org/x/example@v0.0.0", - "dependsOn": [ - "pkg:golang/github.com/spf13/cobra@v0.0.5", - "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/spf13/cobra@v0.0.5", - "dependsOn": [ - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/cpuguy83/go-md2man@v1.0.10", - "pkg:golang/github.com/inconshreveable/mousetrap@v1.0.0", - "pkg:golang/github.com/mitchellh/go-homedir@v1.1.0", - "pkg:golang/github.com/spf13/pflag@v1.0.3", - "pkg:golang/github.com/spf13/viper@v1.3.2", - "pkg:golang/gopkg.in/yaml.v2@v2.2.2" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.2.1", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", - "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/cpuguy83/go-md2man@v1.0.10", - "dependsOn": [ - "pkg:golang/github.com/russross/blackfriday@v1.5.2" - ] - }, - { - "ref": "pkg:golang/github.com/inconshreveable/mousetrap@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/mitchellh/go-homedir@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/spf13/pflag@v1.0.3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/spf13/viper@v1.3.2", - "dependsOn": [ - "pkg:golang/github.com/armon/consul-api@v0.0.0-20180202201655-eb2c6b5be1b6", - "pkg:golang/github.com/coreos/etcd@v3.3.10%2Bincompatible", - "pkg:golang/github.com/coreos/go-etcd@v2.0.0%2Bincompatible", - "pkg:golang/github.com/coreos/go-semver@v0.2.0", - "pkg:golang/github.com/fsnotify/fsnotify@v1.4.7", - "pkg:golang/github.com/hashicorp/hcl@v1.0.0", - "pkg:golang/github.com/magiconair/properties@v1.8.0", - "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", - "pkg:golang/github.com/pelletier/go-toml@v1.2.0", - "pkg:golang/github.com/spf13/afero@v1.1.2", - "pkg:golang/github.com/spf13/cast@v1.3.0", - "pkg:golang/github.com/spf13/jwalterweatherman@v1.0.0", - "pkg:golang/github.com/spf13/pflag@v1.0.3", - "pkg:golang/github.com/stretchr/testify@v1.2.2", - "pkg:golang/github.com/ugorji/go/codec@v0.0.0-20181204163529-d75b2dcb6bc8", - "pkg:golang/github.com/xordataexchange/crypt@v0.0.3-0.20170626215501-b2862e3d0a77", - "pkg:golang/golang.org/x/crypto@v0.0.0-20181203042331-505ab145d0a9", - "pkg:golang/golang.org/x/sys@v0.0.0-20181205085412-a5c9d58dba9a", - "pkg:golang/golang.org/x/text@v0.3.0", - "pkg:golang/gopkg.in/yaml.v2@v2.2.2" - ] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.2", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/github.com/yuin/goldmark@v1.2.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.3.0", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f", - "pkg:golang/golang.org/x/text@v0.3.3" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/russross/blackfriday@v1.5.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/armon/consul-api@v0.0.0-20180202201655-eb2c6b5be1b6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/coreos/etcd@v3.3.10%2Bincompatible", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/coreos/go-etcd@v2.0.0%2Bincompatible", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/coreos/go-semver@v0.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/fsnotify/fsnotify@v1.4.7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/hashicorp/hcl@v1.0.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1" - ] - }, - { - "ref": "pkg:golang/github.com/magiconair/properties@v1.8.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/pelletier/go-toml@v1.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/spf13/afero@v1.1.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/spf13/cast@v1.3.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/testify@v1.2.2" - ] - }, - { - "ref": "pkg:golang/github.com/spf13/jwalterweatherman@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.2.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ugorji/go/codec@v0.0.0-20181204163529-d75b2dcb6bc8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/xordataexchange/crypt@v0.0.3-0.20170626215501-b2862e3d0a77", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20181203042331-505ab145d0a9", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20181205085412-a5c9d58dba9a", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.3", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e" - ] - }, - { - "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "dependsOn": [] - } - ] -} + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "group": "golang.org/x", + "name": "example", + "version": "v0.0.0", + "purl": "pkg:golang/golang.org/x/example@v0.0.0", + "type": "application", + "bom-ref": "pkg:golang/golang.org/x/example@v0.0.0" + } + }, + "components": [ + { + "group": "golang.org/x", + "name": "example", + "version": "v0.0.0", + "purl": "pkg:golang/golang.org/x/example@v0.0.0", + "type": "application", + "bom-ref": "pkg:golang/golang.org/x/example@v0.0.0" + }, + { + "group": "github.com/spf13", + "name": "cobra", + "version": "v0.0.5", + "purl": "pkg:golang/github.com/spf13/cobra@v0.0.5", + "type": "library", + "bom-ref": "pkg:golang/github.com/spf13/cobra@v0.0.5" + }, + { + "group": "golang.org/x", + "name": "tools", + "version": "v0.0.0-20210112183307-1e6ecd4bf1b0", + "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0" + }, + { + "group": "gopkg.in", + "name": "yaml.v3", + "version": "v3.0.1", + "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1" + }, + { + "group": "github.com/BurntSushi", + "name": "toml", + "version": "v0.3.1", + "purl": "pkg:golang/github.com/BurntSushi/toml@v0.3.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/BurntSushi/toml@v0.3.1" + }, + { + "group": "github.com/cpuguy83", + "name": "go-md2man", + "version": "v1.0.10", + "purl": "pkg:golang/github.com/cpuguy83/go-md2man@v1.0.10", + "type": "library", + "bom-ref": "pkg:golang/github.com/cpuguy83/go-md2man@v1.0.10" + }, + { + "group": "github.com/inconshreveable", + "name": "mousetrap", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/inconshreveable/mousetrap@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/inconshreveable/mousetrap@v1.0.0" + }, + { + "group": "github.com/mitchellh", + "name": "go-homedir", + "version": "v1.1.0", + "purl": "pkg:golang/github.com/mitchellh/go-homedir@v1.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/mitchellh/go-homedir@v1.1.0" + }, + { + "group": "github.com/spf13", + "name": "pflag", + "version": "v1.0.3", + "purl": "pkg:golang/github.com/spf13/pflag@v1.0.3", + "type": "library", + "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.3" + }, + { + "group": "github.com/spf13", + "name": "viper", + "version": "v1.3.2", + "purl": "pkg:golang/github.com/spf13/viper@v1.3.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/spf13/viper@v1.3.2" + }, + { + "group": "gopkg.in", + "name": "yaml.v2", + "version": "v2.2.2", + "purl": "pkg:golang/gopkg.in/yaml.v2@v2.2.2", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.2" + }, + { + "group": "github.com/yuin", + "name": "goldmark", + "version": "v1.2.1", + "purl": "pkg:golang/github.com/yuin/goldmark@v1.2.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/yuin/goldmark@v1.2.1" + }, + { + "group": "golang.org/x", + "name": "mod", + "version": "v0.3.0", + "purl": "pkg:golang/golang.org/x/mod@v0.3.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/mod@v0.3.0" + }, + { + "group": "golang.org/x", + "name": "net", + "version": "v0.0.0-20201021035429-f5854403a974", + "purl": "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974" + }, + { + "group": "golang.org/x", + "name": "sync", + "version": "v0.0.0-20201020160332-67f06af15bc9", + "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" + }, + { + "group": "golang.org/x", + "name": "xerrors", + "version": "v0.0.0-20200804184101-5ec99f83aff1", + "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + }, + { + "group": "gopkg.in", + "name": "check.v1", + "version": "v0.0.0-20161208181325-20d25e280405", + "purl": "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" + }, + { + "group": "github.com/russross", + "name": "blackfriday", + "version": "v1.5.2", + "purl": "pkg:golang/github.com/russross/blackfriday@v1.5.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/russross/blackfriday@v1.5.2" + }, + { + "group": "github.com/armon", + "name": "consul-api", + "version": "v0.0.0-20180202201655-eb2c6b5be1b6", + "purl": "pkg:golang/github.com/armon/consul-api@v0.0.0-20180202201655-eb2c6b5be1b6", + "type": "library", + "bom-ref": "pkg:golang/github.com/armon/consul-api@v0.0.0-20180202201655-eb2c6b5be1b6" + }, + { + "group": "github.com/coreos", + "name": "etcd", + "version": "v3.3.10+incompatible", + "purl": "pkg:golang/github.com/coreos/etcd@v3.3.10%2Bincompatible", + "type": "library", + "bom-ref": "pkg:golang/github.com/coreos/etcd@v3.3.10%2Bincompatible" + }, + { + "group": "github.com/coreos", + "name": "go-etcd", + "version": "v2.0.0+incompatible", + "purl": "pkg:golang/github.com/coreos/go-etcd@v2.0.0%2Bincompatible", + "type": "library", + "bom-ref": "pkg:golang/github.com/coreos/go-etcd@v2.0.0%2Bincompatible" + }, + { + "group": "github.com/coreos", + "name": "go-semver", + "version": "v0.2.0", + "purl": "pkg:golang/github.com/coreos/go-semver@v0.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/coreos/go-semver@v0.2.0" + }, + { + "group": "github.com/fsnotify", + "name": "fsnotify", + "version": "v1.4.7", + "purl": "pkg:golang/github.com/fsnotify/fsnotify@v1.4.7", + "type": "library", + "bom-ref": "pkg:golang/github.com/fsnotify/fsnotify@v1.4.7" + }, + { + "group": "github.com/hashicorp", + "name": "hcl", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/hashicorp/hcl@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/hashicorp/hcl@v1.0.0" + }, + { + "group": "github.com/magiconair", + "name": "properties", + "version": "v1.8.0", + "purl": "pkg:golang/github.com/magiconair/properties@v1.8.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/magiconair/properties@v1.8.0" + }, + { + "group": "github.com/mitchellh", + "name": "mapstructure", + "version": "v1.1.2", + "purl": "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2" + }, + { + "group": "github.com/pelletier", + "name": "go-toml", + "version": "v1.2.0", + "purl": "pkg:golang/github.com/pelletier/go-toml@v1.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/pelletier/go-toml@v1.2.0" + }, + { + "group": "github.com/spf13", + "name": "afero", + "version": "v1.1.2", + "purl": "pkg:golang/github.com/spf13/afero@v1.1.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/spf13/afero@v1.1.2" + }, + { + "group": "github.com/spf13", + "name": "cast", + "version": "v1.3.0", + "purl": "pkg:golang/github.com/spf13/cast@v1.3.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/spf13/cast@v1.3.0" + }, + { + "group": "github.com/spf13", + "name": "jwalterweatherman", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/spf13/jwalterweatherman@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/spf13/jwalterweatherman@v1.0.0" + }, + { + "group": "github.com/stretchr", + "name": "testify", + "version": "v1.2.2", + "purl": "pkg:golang/github.com/stretchr/testify@v1.2.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.2.2" + }, + { + "group": "github.com/ugorji/go", + "name": "codec", + "version": "v0.0.0-20181204163529-d75b2dcb6bc8", + "purl": "pkg:golang/github.com/ugorji/go/codec@v0.0.0-20181204163529-d75b2dcb6bc8", + "type": "library", + "bom-ref": "pkg:golang/github.com/ugorji/go/codec@v0.0.0-20181204163529-d75b2dcb6bc8" + }, + { + "group": "github.com/xordataexchange", + "name": "crypt", + "version": "v0.0.3-0.20170626215501-b2862e3d0a77", + "purl": "pkg:golang/github.com/xordataexchange/crypt@v0.0.3-0.20170626215501-b2862e3d0a77", + "type": "library", + "bom-ref": "pkg:golang/github.com/xordataexchange/crypt@v0.0.3-0.20170626215501-b2862e3d0a77" + }, + { + "group": "golang.org/x", + "name": "crypto", + "version": "v0.0.0-20200622213623-75b288015ac9", + "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9" + }, + { + "group": "golang.org/x", + "name": "sys", + "version": "v0.0.0-20200930185726-fdedc70b468f", + "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f" + }, + { + "group": "golang.org/x", + "name": "text", + "version": "v0.3.3", + "purl": "pkg:golang/golang.org/x/text@v0.3.3", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/text@v0.3.3" + }, + { + "group": "github.com/davecgh", + "name": "go-spew", + "version": "v1.1.1", + "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1" + }, + { + "group": "github.com/pmezard", + "name": "go-difflib", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0" + } + ], + "dependencies": [ + { + "ref": "pkg:golang/golang.org/x/example@v0.0.0", + "dependsOn": [ + "pkg:golang/github.com/spf13/cobra@v0.0.5", + "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1" + ] + }, + { + "ref": "pkg:golang/github.com/spf13/cobra@v0.0.5", + "dependsOn": [ + "pkg:golang/github.com/BurntSushi/toml@v0.3.1", + "pkg:golang/github.com/cpuguy83/go-md2man@v1.0.10", + "pkg:golang/github.com/inconshreveable/mousetrap@v1.0.0", + "pkg:golang/github.com/mitchellh/go-homedir@v1.1.0", + "pkg:golang/github.com/spf13/pflag@v1.0.3", + "pkg:golang/github.com/spf13/viper@v1.3.2", + "pkg:golang/gopkg.in/yaml.v2@v2.2.2" + ] + }, + { + "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0", + "dependsOn": [ + "pkg:golang/github.com/yuin/goldmark@v1.2.1", + "pkg:golang/golang.org/x/mod@v0.3.0", + "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", + "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + ] + }, + { + "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "dependsOn": [ + "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" + ] + }, + { + "ref": "pkg:golang/github.com/BurntSushi/toml@v0.3.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/cpuguy83/go-md2man@v1.0.10", + "dependsOn": [ + "pkg:golang/github.com/russross/blackfriday@v1.5.2" + ] + }, + { + "ref": "pkg:golang/github.com/inconshreveable/mousetrap@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/mitchellh/go-homedir@v1.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/spf13/pflag@v1.0.3", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/spf13/viper@v1.3.2", + "dependsOn": [ + "pkg:golang/github.com/armon/consul-api@v0.0.0-20180202201655-eb2c6b5be1b6", + "pkg:golang/github.com/coreos/etcd@v3.3.10%2Bincompatible", + "pkg:golang/github.com/coreos/go-etcd@v2.0.0%2Bincompatible", + "pkg:golang/github.com/coreos/go-semver@v0.2.0", + "pkg:golang/github.com/fsnotify/fsnotify@v1.4.7", + "pkg:golang/github.com/hashicorp/hcl@v1.0.0", + "pkg:golang/github.com/magiconair/properties@v1.8.0", + "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", + "pkg:golang/github.com/pelletier/go-toml@v1.2.0", + "pkg:golang/github.com/spf13/afero@v1.1.2", + "pkg:golang/github.com/spf13/cast@v1.3.0", + "pkg:golang/github.com/spf13/jwalterweatherman@v1.0.0", + "pkg:golang/github.com/spf13/pflag@v1.0.3", + "pkg:golang/github.com/stretchr/testify@v1.2.2", + "pkg:golang/github.com/ugorji/go/codec@v0.0.0-20181204163529-d75b2dcb6bc8", + "pkg:golang/github.com/xordataexchange/crypt@v0.0.3-0.20170626215501-b2862e3d0a77", + "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", + "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f", + "pkg:golang/golang.org/x/text@v0.3.3", + "pkg:golang/gopkg.in/yaml.v2@v2.2.2" + ] + }, + { + "ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.2", + "dependsOn": [ + "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" + ] + }, + { + "ref": "pkg:golang/github.com/yuin/goldmark@v1.2.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/mod@v0.3.0", + "dependsOn": [ + "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", + "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + ] + }, + { + "ref": "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", + "dependsOn": [ + "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", + "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f", + "pkg:golang/golang.org/x/text@v0.3.3" + ] + }, + { + "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/russross/blackfriday@v1.5.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/armon/consul-api@v0.0.0-20180202201655-eb2c6b5be1b6", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/coreos/etcd@v3.3.10%2Bincompatible", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/coreos/go-etcd@v2.0.0%2Bincompatible", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/coreos/go-semver@v0.2.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/fsnotify/fsnotify@v1.4.7", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/hashicorp/hcl@v1.0.0", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1" + ] + }, + { + "ref": "pkg:golang/github.com/magiconair/properties@v1.8.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/pelletier/go-toml@v1.2.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/spf13/afero@v1.1.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/spf13/cast@v1.3.0", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/github.com/stretchr/testify@v1.2.2" + ] + }, + { + "ref": "pkg:golang/github.com/spf13/jwalterweatherman@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/stretchr/testify@v1.2.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/ugorji/go/codec@v0.0.0-20181204163529-d75b2dcb6bc8", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/xordataexchange/crypt@v0.0.3-0.20170626215501-b2862e3d0a77", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", + "dependsOn": [ + "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", + "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f" + ] + }, + { + "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/text@v0.3.3", + "dependsOn": [ + "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0" + ] + }, + { + "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "dependsOn": [] + } + ] +} \ No newline at end of file diff --git a/test/providers/tst_manifests/golang/go_mod_no_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/golang/go_mod_no_ignore/expected_sbom_stack_analysis.json index 0c0f8c16..02b7c2df 100644 --- a/test/providers/tst_manifests/golang/go_mod_no_ignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_no_ignore/expected_sbom_stack_analysis.json @@ -1,8164 +1,2271 @@ { - "bomFormat": "CycloneDX", - "specVersion": "1.4", - "version": 1, - "metadata": { - "timestamp": "2023-08-07T00:00:00.000Z", - "component": { - "group": "github.com/RHEcosystemAppEng/SaaSi", - "name": "deployer", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0" - } - }, - "components": [ - { - "group": "github.com/RHEcosystemAppEng/SaaSi", - "name": "deployer", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0" - }, - { - "group": "github.com/davecgh", - "name": "go-spew", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1" - }, - { - "group": "github.com/emicklei/go-restful", - "name": "v3", - "version": "v3.9.0", - "purl": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0" - }, - { - "group": "github.com/gin-gonic", - "name": "gin", - "version": "v1.9.1", - "purl": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1" - }, - { - "group": "github.com/go-logr", - "name": "logr", - "version": "v1.2.3", - "purl": "pkg:golang/github.com/go-logr/logr@v1.2.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-logr/logr@v1.2.3" - }, - { - "group": "github.com/go-openapi", - "name": "jsonpointer", - "version": "v0.19.5", - "purl": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5" - }, - { - "group": "github.com/go-openapi", - "name": "jsonreference", - "version": "v0.20.0", - "purl": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0" - }, - { - "group": "github.com/go-openapi", - "name": "swag", - "version": "v0.19.14", - "purl": "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14" - }, - { - "group": "github.com/gogo", - "name": "protobuf", - "version": "v1.3.2", - "purl": "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.5.2", - "purl": "pkg:golang/github.com/golang/protobuf@v1.5.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.2" - }, - { - "group": "github.com/google", - "name": "gnostic", - "version": "v0.5.7-v3refs", - "purl": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.9", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.9", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.9" - }, - { - "group": "github.com/google", - "name": "gofuzz", - "version": "v1.1.0", - "purl": "pkg:golang/github.com/google/gofuzz@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/gofuzz@v1.1.0" - }, - { - "group": "github.com/google", - "name": "uuid", - "version": "v1.1.2", - "purl": "pkg:golang/github.com/google/uuid@v1.1.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/uuid@v1.1.2" - }, - { - "group": "github.com/imdario", - "name": "mergo", - "version": "v0.3.6", - "purl": "pkg:golang/github.com/imdario/mergo@v0.3.6", - "type": "library", - "bom-ref": "pkg:golang/github.com/imdario/mergo@v0.3.6" - }, - { - "group": "github.com/jessevdk", - "name": "go-flags", - "version": "v1.5.0", - "purl": "pkg:golang/github.com/jessevdk/go-flags@v1.5.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/jessevdk/go-flags@v1.5.0" - }, - { - "group": "github.com/josharian", - "name": "intern", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/josharian/intern@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/josharian/intern@v1.0.0" - }, - { - "group": "github.com/json-iterator", - "name": "go", - "version": "v1.1.12", - "purl": "pkg:golang/github.com/json-iterator/go@v1.1.12", - "type": "library", - "bom-ref": "pkg:golang/github.com/json-iterator/go@v1.1.12" - }, - { - "group": "github.com/kr", - "name": "pretty", - "version": "v0.3.1", - "purl": "pkg:golang/github.com/kr/pretty@v0.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/pretty@v0.3.1" - }, - { - "group": "github.com/kr", - "name": "text", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/kr/text@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/text@v0.2.0" - }, - { - "group": "github.com/mailru", - "name": "easyjson", - "version": "v0.7.6", - "purl": "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "type": "library", - "bom-ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6" - }, - { - "group": "github.com/modern-go", - "name": "concurrent", - "version": "v0.0.0-20180306012644-bacd9c7ef1dd", - "purl": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "type": "library", - "bom-ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" - }, - { - "group": "github.com/modern-go", - "name": "reflect2", - "version": "v1.0.2", - "purl": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2" - }, - { - "group": "github.com/munnerz", - "name": "goautoneg", - "version": "v0.0.0-20191010083416-a7dc8b61c822", - "purl": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "type": "library", - "bom-ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822" - }, - { - "group": "github.com/rogpeppe", - "name": "go-internal", - "version": "v1.9.0", - "purl": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" - }, - { - "group": "github.com/spf13", - "name": "pflag", - "version": "v1.0.5", - "purl": "pkg:golang/github.com/spf13/pflag@v1.0.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.5" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.10.0", - "purl": "pkg:golang/golang.org/x/net@v0.10.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.10.0" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20220223155221-ee480838109b", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.8.0", - "purl": "pkg:golang/golang.org/x/sys@v0.8.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.8.0" - }, - { - "group": "golang.org/x", - "name": "term", - "version": "v0.8.0", - "purl": "pkg:golang/golang.org/x/term@v0.8.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/term@v0.8.0" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.9.0", - "purl": "pkg:golang/golang.org/x/text@v0.9.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.9.0" - }, - { - "group": "golang.org/x", - "name": "time", - "version": "v0.0.0-20220210224613-90d013bbcef8", - "purl": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.6.7", - "purl": "pkg:golang/google.golang.org/appengine@v1.6.7", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.7" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.30.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.30.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.30.0" - }, - { - "group": "gopkg.in", - "name": "inf.v0", - "version": "v0.9.1", - "purl": "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1" - }, - { - "group": "gopkg.in", - "name": "yaml.v2", - "version": "v2.4.0", - "purl": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0" - }, - { - "group": "gopkg.in", - "name": "yaml.v3", - "version": "v3.0.1", - "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1" - }, - { - "group": "k8s.io", - "name": "api", - "version": "v0.26.1", - "purl": "pkg:golang/k8s.io/api@v0.26.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/api@v0.26.1" - }, - { - "group": "k8s.io", - "name": "apimachinery", - "version": "v0.26.1", - "purl": "pkg:golang/k8s.io/apimachinery@v0.26.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/apimachinery@v0.26.1" - }, - { - "group": "k8s.io", - "name": "client-go", - "version": "v0.26.1", - "purl": "pkg:golang/k8s.io/client-go@v0.26.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/client-go@v0.26.1" - }, - { - "group": "k8s.io/klog", - "name": "v2", - "version": "v2.80.1", - "purl": "pkg:golang/k8s.io/klog/v2@v2.80.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/klog/v2@v2.80.1" - }, - { - "group": "k8s.io", - "name": "kube-openapi", - "version": "v0.0.0-20221012153701-172d655c2280", - "purl": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280" - }, - { - "group": "k8s.io", - "name": "utils", - "version": "v0.0.0-20221107191617-1a15be271d1d", - "purl": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d" - }, - { - "group": "sigs.k8s.io", - "name": "json", - "version": "v0.0.0-20220713155537-f223a00ba0e2", - "purl": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2" - }, - { - "group": "sigs.k8s.io/structured-merge-diff", - "name": "v4", - "version": "v4.2.3", - "purl": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3" - }, - { - "group": "sigs.k8s.io", - "name": "yaml", - "version": "v1.3.0", - "purl": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0" - }, - { - "group": "github.com/bytedance", - "name": "sonic", - "version": "v1.9.1", - "purl": "pkg:golang/github.com/bytedance/sonic@v1.9.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/bytedance/sonic@v1.9.1" - }, - { - "group": "github.com/gin-contrib", - "name": "sse", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/gin-contrib/sse@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/gin-contrib/sse@v0.1.0" - }, - { - "group": "github.com/go-playground/validator", - "name": "v10", - "version": "v10.14.0", - "purl": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0" - }, - { - "group": "github.com/goccy", - "name": "go-json", - "version": "v0.10.2", - "purl": "pkg:golang/github.com/goccy/go-json@v0.10.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/goccy/go-json@v0.10.2" - }, - { - "group": "github.com/mattn", - "name": "go-isatty", - "version": "v0.0.19", - "purl": "pkg:golang/github.com/mattn/go-isatty@v0.0.19", - "type": "library", - "bom-ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.19" - }, - { - "group": "github.com/pelletier/go-toml", - "name": "v2", - "version": "v2.0.8", - "purl": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", - "type": "library", - "bom-ref": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.8.3", - "purl": "pkg:golang/github.com/stretchr/testify@v1.8.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.8.3" - }, - { - "group": "github.com/ugorji/go", - "name": "codec", - "version": "v1.2.11", - "purl": "pkg:golang/github.com/ugorji/go/codec@v1.2.11", - "type": "library", - "bom-ref": "pkg:golang/github.com/ugorji/go/codec@v1.2.11" - }, - { - "group": "github.com/chenzhuoyu", - "name": "base64x", - "version": "v0.0.0-20221115062448-fe3a3abad311", - "purl": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", - "type": "library", - "bom-ref": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311" - }, - { - "group": "github.com/gabriel-vasile", - "name": "mimetype", - "version": "v1.4.2", - "purl": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2" - }, - { - "group": "github.com/go-playground", - "name": "locales", - "version": "v0.14.1", - "purl": "pkg:golang/github.com/go-playground/locales@v0.14.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-playground/locales@v0.14.1" - }, - { - "group": "github.com/go-playground", - "name": "universal-translator", - "version": "v0.18.1", - "purl": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1" - }, - { - "group": "github.com/klauspost/cpuid", - "name": "v2", - "version": "v2.2.4", - "purl": "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4" - }, - { - "group": "github.com/leodido", - "name": "go-urn", - "version": "v1.2.4", - "purl": "pkg:golang/github.com/leodido/go-urn@v1.2.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/leodido/go-urn@v1.2.4" - }, - { - "group": "github.com/pmezard", - "name": "go-difflib", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0" - }, - { - "group": "github.com/twitchyliquid64", - "name": "golang-asm", - "version": "v0.15.1", - "purl": "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1" - }, - { - "group": "golang.org/x", - "name": "arch", - "version": "v0.3.0", - "purl": "pkg:golang/golang.org/x/arch@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/arch@v0.3.0" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.9.0", - "purl": "pkg:golang/golang.org/x/crypto@v0.9.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.9.0" - }, - { - "group": "github.com/go-openapi", - "name": "swag", - "version": "v0.19.5", - "purl": "pkg:golang/github.com/go-openapi/swag@v0.19.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/swag@v0.19.5" - }, - { - "group": "github.com/mailru", - "name": "easyjson", - "version": "v0.0.0-20190626092158-b2ccc519800e", - "purl": "pkg:golang/github.com/mailru/easyjson@v0.0.0-20190626092158-b2ccc519800e", - "type": "library", - "bom-ref": "pkg:golang/github.com/mailru/easyjson@v0.0.0-20190626092158-b2ccc519800e" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.3.0", - "purl": "pkg:golang/github.com/stretchr/testify@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.3.0" - }, - { - "group": "github.com/go-openapi", - "name": "jsonpointer", - "version": "v0.19.3", - "purl": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.3" - }, - { - "group": "github.com/niemeyer", - "name": "pretty", - "version": "v0.0.0-20200227124842-a10e7caefd8e", - "purl": "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", - "type": "library", - "bom-ref": "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.6.1", - "purl": "pkg:golang/github.com/stretchr/testify@v1.6.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.6.1" - }, - { - "group": "gopkg.in", - "name": "check.v1", - "version": "v1.0.0-20200227125254-8fa46927fb4f", - "purl": "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" - }, - { - "group": "gopkg.in", - "name": "yaml.v3", - "version": "v3.0.0-20200615113413-eeeca48fe776", - "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200615113413-eeeca48fe776", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200615113413-eeeca48fe776" - }, - { - "group": "github.com/kisielk", - "name": "errcheck", - "version": "v1.5.0", - "purl": "pkg:golang/github.com/kisielk/errcheck@v1.5.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kisielk/errcheck@v1.5.0" - }, - { - "group": "github.com/kisielk", - "name": "gotool", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kisielk/gotool@v1.0.0" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20210106214847-113979e3529a", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20210106214847-113979e3529a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20210106214847-113979e3529a" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.5", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.5" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.26.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.26.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.26.0" - }, - { - "group": "github.com/docopt", - "name": "docopt-go", - "version": "v0.0.0-20180111231733-ee0de3bc6815", - "purl": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", - "type": "library", - "bom-ref": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815" - }, - { - "group": "github.com/kr", - "name": "pretty", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/kr/pretty@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/pretty@v0.2.0" - }, - { - "group": "github.com/stoewer", - "name": "go-strcase", - "version": "v1.2.0", - "purl": "pkg:golang/github.com/stoewer/go-strcase@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/stoewer/go-strcase@v1.2.0" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190524140312-2c0ae7006135", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20200804184101-5ec99f83aff1", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20201019141844-1ed22bb0c154", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154" - }, - { - "group": "gopkg.in", - "name": "check.v1", - "version": "v1.0.0-20190902080502-41f04d3bba15", - "purl": "pkg:golang/gopkg.in/check.v1@v1.0.0-20190902080502-41f04d3bba15", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20190902080502-41f04d3bba15" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210320140829-1e4c9ba3b0c4", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210320140829-1e4c9ba3b0c4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210320140829-1e4c9ba3b0c4" - }, - { - "group": "github.com/google", - "name": "gofuzz", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/google/gofuzz@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/gofuzz@v1.0.0" - }, - { - "group": "github.com/modern-go", - "name": "concurrent", - "version": "v0.0.0-20180228061459-e0a39a4cb421", - "purl": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180228061459-e0a39a4cb421", - "type": "library", - "bom-ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180228061459-e0a39a4cb421" - }, - { - "group": "github.com/creack", - "name": "pty", - "version": "v1.1.9", - "purl": "pkg:golang/github.com/creack/pty@v1.1.9", - "type": "library", - "bom-ref": "pkg:golang/github.com/creack/pty@v1.1.9" - }, - { - "group": "github.com/pkg", - "name": "diff", - "version": "v0.0.0-20210226163009-20ebb0f2a09e", - "purl": "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e", - "type": "library", - "bom-ref": "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.65.0", - "purl": "pkg:golang/cloud.google.com/go@v0.65.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.65.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20220127200216-cd36cc0744dd", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20220127200216-cd36cc0744dd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20220127200216-cd36cc0744dd" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.6.6", - "purl": "pkg:golang/google.golang.org/appengine@v1.6.6", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.6" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.6.0", - "purl": "pkg:golang/golang.org/x/tools@v0.6.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.6.0" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.8.0", - "purl": "pkg:golang/golang.org/x/mod@v0.8.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.8.0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.5.0", - "purl": "pkg:golang/golang.org/x/sys@v0.5.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.5.0" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.3.1", - "purl": "pkg:golang/github.com/golang/protobuf@v1.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.3.1" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190603091049-60506f45cf65", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.2", - "purl": "pkg:golang/golang.org/x/text@v0.3.2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.2" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.5.0", - "purl": "pkg:golang/github.com/golang/protobuf@v1.5.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.0" - }, - { - "group": "gopkg.in", - "name": "check.v1", - "version": "v0.0.0-20161208181325-20d25e280405", - "purl": "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.8.0", - "purl": "pkg:golang/github.com/stretchr/testify@v1.8.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.8.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.3.1-0.20221206200815-1e63c2f08a10", - "purl": "pkg:golang/golang.org/x/net@v0.3.1-0.20221206200815-1e63c2f08a10", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.3.1-0.20221206200815-1e63c2f08a10" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.5.0", - "purl": "pkg:golang/golang.org/x/text@v0.5.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.5.0" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.28.1", - "purl": "pkg:golang/google.golang.org/protobuf@v1.28.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.28.1" - }, - { - "group": "github.com/armon", - "name": "go-socks5", - "version": "v0.0.0-20160902184237-e75332964ef5", - "purl": "pkg:golang/github.com/armon/go-socks5@v0.0.0-20160902184237-e75332964ef5", - "type": "library", - "bom-ref": "pkg:golang/github.com/armon/go-socks5@v0.0.0-20160902184237-e75332964ef5" - }, - { - "group": "github.com/elazarl", - "name": "goproxy", - "version": "v0.0.0-20180725130230-947c36da3153", - "purl": "pkg:golang/github.com/elazarl/goproxy@v0.0.0-20180725130230-947c36da3153", - "type": "library", - "bom-ref": "pkg:golang/github.com/elazarl/goproxy@v0.0.0-20180725130230-947c36da3153" - }, - { - "group": "github.com/evanphx", - "name": "json-patch", - "version": "v4.12.0+incompatible", - "purl": "pkg:golang/github.com/evanphx/json-patch@v4.12.0%2Bincompatible", - "type": "library", - "bom-ref": "pkg:golang/github.com/evanphx/json-patch@v4.12.0%2Bincompatible" - }, - { - "group": "github.com/moby", - "name": "spdystream", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/moby/spdystream@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/moby/spdystream@v0.2.0" - }, - { - "group": "github.com/mxk", - "name": "go-flowrate", - "version": "v0.0.0-20140419014527-cca7078d478f", - "purl": "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f", - "type": "library", - "bom-ref": "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f" - }, - { - "group": "github.com/onsi/ginkgo", - "name": "v2", - "version": "v2.4.0", - "purl": "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0" - }, - { - "group": "github.com/onsi", - "name": "gomega", - "version": "v1.23.0", - "purl": "pkg:golang/github.com/onsi/gomega@v1.23.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/onsi/gomega@v1.23.0" - }, - { - "group": "github.com/pkg", - "name": "errors", - "version": "v0.9.1", - "purl": "pkg:golang/github.com/pkg/errors@v0.9.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/pkg/errors@v0.9.1" - }, - { - "group": "github.com/golang", - "name": "groupcache", - "version": "v0.0.0-20210331224755-41bb18bfe9da", - "purl": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da" - }, - { - "group": "github.com/gregjones", - "name": "httpcache", - "version": "v0.0.0-20180305231024-9cad4c3443a7", - "purl": "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7", - "type": "library", - "bom-ref": "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7" - }, - { - "group": "github.com/peterbourgon", - "name": "diskv", - "version": "v2.0.1+incompatible", - "purl": "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible", - "type": "library", - "bom-ref": "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible" - }, - { - "group": "golang.org/x", - "name": "term", - "version": "v0.3.0", - "purl": "pkg:golang/golang.org/x/term@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/term@v0.3.0" - }, - { - "group": "github.com/google", - "name": "btree", - "version": "v1.0.1", - "purl": "pkg:golang/github.com/google/btree@v1.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/btree@v1.0.1" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.3.0", - "purl": "pkg:golang/golang.org/x/sys@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.3.0" - }, - { - "group": "github.com/go-logr", - "name": "logr", - "version": "v1.2.0", - "purl": "pkg:golang/github.com/go-logr/logr@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-logr/logr@v1.2.0" - }, - { - "group": "github.com/NYTimes", - "name": "gziphandler", - "version": "v0.0.0-20170623195520-56545f4a5d46", - "purl": "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", - "type": "library", - "bom-ref": "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46" - }, - { - "group": "github.com/asaskevich", - "name": "govalidator", - "version": "v0.0.0-20190424111038-f61b66f89f4a", - "purl": "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a", - "type": "library", - "bom-ref": "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a" - }, - { - "group": "github.com/emicklei/go-restful", - "name": "v3", - "version": "v3.8.0", - "purl": "pkg:golang/github.com/emicklei/go-restful/v3@v3.8.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.8.0" - }, - { - "group": "github.com/go-openapi", - "name": "jsonreference", - "version": "v0.19.3", - "purl": "pkg:golang/github.com/go-openapi/jsonreference@v0.19.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.19.3" - }, - { - "group": "github.com/mitchellh", - "name": "mapstructure", - "version": "v1.1.2", - "purl": "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2" - }, - { - "group": "github.com/munnerz", - "name": "goautoneg", - "version": "v0.0.0-20120707110453-a547fc61f48d", - "purl": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20120707110453-a547fc61f48d", - "type": "library", - "bom-ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20120707110453-a547fc61f48d" - }, - { - "group": "github.com/onsi/ginkgo", - "name": "v2", - "version": "v2.1.4", - "purl": "pkg:golang/github.com/onsi/ginkgo/v2@v2.1.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/onsi/ginkgo/v2@v2.1.4" - }, - { - "group": "github.com/onsi", - "name": "gomega", - "version": "v1.19.0", - "purl": "pkg:golang/github.com/onsi/gomega@v1.19.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/onsi/gomega@v1.19.0" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.5.1", - "purl": "pkg:golang/github.com/stretchr/testify@v1.5.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.5.1" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.27.1", - "purl": "pkg:golang/google.golang.org/protobuf@v1.27.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.27.1" - }, - { - "group": "gopkg.in", - "name": "yaml.v3", - "version": "v3.0.0-20210107192922-496545a6307b", - "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20210107192922-496545a6307b", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20210107192922-496545a6307b" - }, - { - "group": "k8s.io", - "name": "gengo", - "version": "v0.0.0-20210813121822-485abfe95c7c", - "purl": "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c" - }, - { - "group": "k8s.io/klog", - "name": "v2", - "version": "v2.2.0", - "purl": "pkg:golang/k8s.io/klog/v2@v2.2.0", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/klog/v2@v2.2.0" - }, - { - "group": "k8s.io", - "name": "utils", - "version": "v0.0.0-20210802155522-efc7438f0176", - "purl": "pkg:golang/k8s.io/utils@v0.0.0-20210802155522-efc7438f0176", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/utils@v0.0.0-20210802155522-efc7438f0176" - }, - { - "group": "sigs.k8s.io", - "name": "yaml", - "version": "v1.2.0", - "purl": "pkg:golang/sigs.k8s.io/yaml@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/yaml@v1.2.0" - }, - { - "group": "github.com/PuerkitoBio", - "name": "purell", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1" - }, - { - "group": "github.com/PuerkitoBio", - "name": "urlesc", - "version": "v0.0.0-20170810143723-de5bf2ad4578", - "purl": "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578", - "type": "library", - "bom-ref": "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578" - }, - { - "group": "github.com/go-logr", - "name": "logr", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/go-logr/logr@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-logr/logr@v0.2.0" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.6.0-dev.0.20220106191415-9b9b3d81d5e3", - "purl": "pkg:golang/golang.org/x/mod@v0.6.0-dev.0.20220106191415-9b9b3d81d5e3", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.6.0-dev.0.20220106191415-9b9b3d81d5e3" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20220225172249-27dd8689420f", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20220319134239-a9b59b0215f8", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20220319134239-a9b59b0215f8", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20220319134239-a9b59b0215f8" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.7", - "purl": "pkg:golang/golang.org/x/text@v0.3.7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.7" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.1.10", - "purl": "pkg:golang/golang.org/x/tools@v0.1.10", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.1.10" - }, - { - "group": "gopkg.in", - "name": "yaml.v2", - "version": "v2.2.8", - "purl": "pkg:golang/gopkg.in/yaml.v2@v2.2.8", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.8" - }, - { - "group": "github.com/kr", - "name": "pretty", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/kr/pretty@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/pretty@v0.1.0" - }, - { - "group": "github.com/mailru", - "name": "easyjson", - "version": "v0.0.0-20190614124828-94de47d64c63", - "purl": "pkg:golang/github.com/mailru/easyjson@v0.0.0-20190614124828-94de47d64c63", - "type": "library", - "bom-ref": "pkg:golang/github.com/mailru/easyjson@v0.0.0-20190614124828-94de47d64c63" - }, - { - "group": "gopkg.in", - "name": "check.v1", - "version": "v1.0.0-20180628173108-788fd7840127", - "purl": "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127" - }, - { - "group": "gopkg.in", - "name": "yaml.v2", - "version": "v2.2.2", - "purl": "pkg:golang/gopkg.in/yaml.v2@v2.2.2", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.2" - }, - { - "group": "github.com/davecgh", - "name": "go-spew", - "version": "v1.1.0", - "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.0" - }, - { - "group": "github.com/stretchr", - "name": "objx", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/stretchr/objx@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/objx@v0.1.0" - }, - { - "group": "github.com/kr", - "name": "text", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/kr/text@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/text@v0.1.0" - }, - { - "group": "gopkg.in", - "name": "yaml.v3", - "version": "v3.0.0-20200313102051-9f266ea9e77c", - "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200619180055-7c47624df98f", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200619180055-7c47624df98f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200619180055-7c47624df98f" - }, - { - "group": "github.com/yuin", - "name": "goldmark", - "version": "v1.2.1", - "purl": "pkg:golang/github.com/yuin/goldmark@v1.2.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/yuin/goldmark@v1.2.1" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.3.0", - "purl": "pkg:golang/golang.org/x/mod@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.3.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20201021035429-f5854403a974", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20201020160332-67f06af15bc9", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20191204190536-9bdfabe68543", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190311183353-d8887717615a", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20190423024810-112230192c58", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.1", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.1" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20190313153728-d0100b6bd8b3", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.27.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.27.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.27.0" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.24.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.24.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.24.0" - }, - { - "group": "cloud.google.com/go", - "name": "storage", - "version": "v1.10.0", - "purl": "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/storage@v1.10.0" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.4.4", - "purl": "pkg:golang/github.com/golang/mock@v1.4.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.4.4" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.2", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.2" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.1", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.1" - }, - { - "group": "github.com/google/martian", - "name": "v3", - "version": "v3.0.0", - "purl": "pkg:golang/github.com/google/martian/v3@v3.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/martian/v3@v3.0.0" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20200708004538-1a94d8640e99", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99" - }, - { - "group": "github.com/googleapis/gax-go", - "name": "v2", - "version": "v2.0.5", - "purl": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5" - }, - { - "group": "github.com/jstemmer", - "name": "go-junit-report", - "version": "v0.9.1", - "purl": "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1" - }, - { - "name": "go.opencensus.io", - "version": "v0.22.4", - "purl": "pkg:golang/go.opencensus.io@v0.22.4", - "type": "library", - "bom-ref": "pkg:golang/go.opencensus.io@v0.22.4" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20200302205851-738671d3881b", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200822124328-c89045814202", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20200107190931-bf48bf16ab8d", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.3", - "purl": "pkg:golang/golang.org/x/text@v0.3.3", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.3" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200825202427-b303f430e36d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200825202427-b303f430e36d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200825202427-b303f430e36d" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.30.0", - "purl": "pkg:golang/google.golang.org/api@v0.30.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.30.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200825200019-8632dd797987", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200825200019-8632dd797987", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200825200019-8632dd797987" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.31.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.31.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.31.0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20211216021012-1d35b9e2eb4e", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20211216021012-1d35b9e2eb4e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20211216021012-1d35b9e2eb4e" - }, - { - "group": "golang.org/x", - "name": "term", - "version": "v0.0.0-20210927222741-03fcf44c2211", - "purl": "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20190308221718-c2843e01d9a2", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190215142949-d0b11bdaac8a", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.0", - "purl": "pkg:golang/golang.org/x/text@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.0" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20180917221912-90fa682c2a6e", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.26.0-rc.1", - "purl": "pkg:golang/google.golang.org/protobuf@v1.26.0-rc.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.26.0-rc.1" - }, - { - "group": "github.com/kr", - "name": "pty", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/kr/pty@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/pty@v1.1.1" - }, - { - "group": "github.com/yuin", - "name": "goldmark", - "version": "v1.1.27", - "purl": "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "type": "library", - "bom-ref": "pkg:golang/github.com/yuin/goldmark@v1.1.27" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.2.0", - "purl": "pkg:golang/golang.org/x/mod@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.2.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200226121028-0de0cce0169b", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20190911185100-cd5d95a43a6e", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20191011191535-87dc89f01550", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191119224855-298f0cb1881e", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20191011141410-1b5146add898", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20200622213623-75b288015ac9", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200930185726-fdedc70b468f", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.4.0", - "purl": "pkg:golang/github.com/google/go-cmp@v0.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.4.0" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.22.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.22.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.22.0" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190311212946-11955173bddd", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd" - }, - { - "group": "github.com/envoyproxy", - "name": "go-control-plane", - "version": "v0.9.1-0.20191026205805-5f8ba28d4473", - "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.1-0.20191026205805-5f8ba28d4473", - "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.1-0.20191026205805-5f8ba28d4473" - }, - { - "group": "github.com/envoyproxy", - "name": "protoc-gen-validate", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0" - }, - { - "group": "github.com/golang", - "name": "glog", - "version": "v0.0.0-20160126235308-23def4e6c14b", - "purl": "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/golang/mock@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.1.1" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.3.2", - "purl": "pkg:golang/github.com/golang/protobuf@v1.3.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.3.2" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/google/go-cmp@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.2.0" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20180821212333-d2e6202438be", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190819201941-24fa4b261c55", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200526211855-cb27e3aa2013", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.57.0", - "purl": "pkg:golang/cloud.google.com/go@v0.57.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.57.0" - }, - { - "group": "cloud.google.com/go", - "name": "bigquery", - "version": "v1.8.0", - "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.8.0" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.4.1", - "purl": "pkg:golang/github.com/google/go-cmp@v0.4.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.4.1" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200520182314-0ba52f642ac2", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200520182314-0ba52f642ac2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200520182314-0ba52f642ac2" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200523222454-059865788121", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200523222454-059865788121", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200523222454-059865788121" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200618134242-20370b0cb4b2", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200618134242-20370b0cb4b2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200618134242-20370b0cb4b2" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.28.0", - "purl": "pkg:golang/google.golang.org/api@v0.28.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.28.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200618031413-b414f8b61790", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200618031413-b414f8b61790", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200618031413-b414f8b61790" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.29.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.29.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.29.1" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190425150028-36563e24a262", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.23.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.23.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.23.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190628185345-da137c7871d7", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190628185345-da137c7871d7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190628185345-da137c7871d7" - }, - { - "group": "github.com/chzyer", - "name": "logex", - "version": "v1.1.10", - "purl": "pkg:golang/github.com/chzyer/logex@v1.1.10", - "type": "library", - "bom-ref": "pkg:golang/github.com/chzyer/logex@v1.1.10" - }, - { - "group": "github.com/chzyer", - "name": "readline", - "version": "v0.0.0-20180603132655-2972be24d48e", - "purl": "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "type": "library", - "bom-ref": "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e" - }, - { - "group": "github.com/chzyer", - "name": "test", - "version": "v0.0.0-20180213035817-a1ea475d72b1", - "purl": "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "type": "library", - "bom-ref": "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1" - }, - { - "group": "github.com/ianlancetaylor", - "name": "demangle", - "version": "v0.0.0-20181102032728-5e5cf60278f6", - "purl": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "type": "library", - "bom-ref": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20191204072324-ce4227a45e2e", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.19.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.19.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.19.0" - }, - { - "group": "github.com/golang", - "name": "groupcache", - "version": "v0.0.0-20190702054246-869f871628b6", - "purl": "pkg:golang/github.com/golang/groupcache@v0.0.0-20190702054246-869f871628b6", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20190702054246-869f871628b6" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.3.0", - "purl": "pkg:golang/github.com/google/go-cmp@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.3.0" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.4.0", - "purl": "pkg:golang/github.com/stretchr/testify@v1.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.4.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190620200207-3b0461eec859", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190502145724-3ef323f4f1fd", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190425155659-357c62f0e4bb", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.20.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.20.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.20.1" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200130002326-2f3ba24bd6e7", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200130002326-2f3ba24bd6e7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200130002326-2f3ba24bd6e7" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200323222414-85ca7c5b95cd", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.34.0", - "purl": "pkg:golang/cloud.google.com/go@v0.34.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.34.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190108225652-1e06a53dbb7e", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20181221193216-37e7f081c4d4", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.4.0", - "purl": "pkg:golang/google.golang.org/appengine@v1.4.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.4.0" - }, - { - "group": "github.com/yuin", - "name": "goldmark", - "version": "v1.1.32", - "purl": "pkg:golang/github.com/yuin/goldmark@v1.1.32", - "type": "library", - "bom-ref": "pkg:golang/github.com/yuin/goldmark@v1.1.32" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200625001655-4c5254603344", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200625001655-4c5254603344", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200625001655-4c5254603344" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20200625203802-6e8e738ad208", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.62.0", - "purl": "pkg:golang/cloud.google.com/go@v0.62.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.62.0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200803210538-64077c9b5642", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200803210538-64077c9b5642", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200803210538-64077c9b5642" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200804011535-6c149bb5ef0d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200804011535-6c149bb5ef0d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200804011535-6c149bb5ef0d" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200804131852-c06518451d9c", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200804131852-c06518451d9c", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200804131852-c06518451d9c" - }, - { - "group": "github.com/cncf/udpa", - "name": "go", - "version": "v0.0.0-20191209042840-269d4d468f6f", - "purl": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "type": "library", - "bom-ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f" - }, - { - "group": "github.com/envoyproxy", - "name": "go-control-plane", - "version": "v0.9.4", - "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.3.3", - "purl": "pkg:golang/github.com/golang/protobuf@v1.3.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.3.3" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210615035016-665e8c7367d1", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210615035016-665e8c7367d1", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210615035016-665e8c7367d1" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190404232315-eb5bcb51f2a3", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190412213103-97732733099d", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20190717185122-a985d3407aa7", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.0", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.0" - }, - { - "group": "github.com/census-instrumentation", - "name": "opencensus-proto", - "version": "v0.2.1", - "purl": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1" - }, - { - "group": "github.com/prometheus", - "name": "client_model", - "version": "v0.0.0-20190812154241-14fe0d1b01d4", - "purl": "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "type": "library", - "bom-ref": "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.23.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.23.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.23.0" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20190121172915-509febef88a4", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20190227174305-5b3e6a55c961", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190226205152-f727befe758c", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.0-20190102054323-c2f93a96b099", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.23.1-0.20200526195155-81db48ad09cc", - "purl": "pkg:golang/google.golang.org/protobuf@v1.23.1-0.20200526195155-81db48ad09cc", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.23.1-0.20200526195155-81db48ad09cc" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.0-20190523083050-ea95bdfd59fc", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - }, - { - "group": "cloud.google.com/go", - "name": "bigquery", - "version": "v1.4.0", - "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.4.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.4.0" - }, - { - "group": "cloud.google.com/go", - "name": "datastore", - "version": "v1.1.0", - "purl": "pkg:golang/cloud.google.com/go/datastore@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/datastore@v1.1.0" - }, - { - "group": "cloud.google.com/go", - "name": "pubsub", - "version": "v1.2.0", - "purl": "pkg:golang/cloud.google.com/go/pubsub@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/pubsub@v1.2.0" - }, - { - "group": "cloud.google.com/go", - "name": "storage", - "version": "v1.6.0", - "purl": "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/storage@v1.6.0" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.4.3", - "purl": "pkg:golang/github.com/golang/mock@v1.4.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.4.3" - }, - { - "group": "github.com/google", - "name": "martian", - "version": "v2.1.0+incompatible", - "purl": "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20200430221834-fc25d7d30c6d", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20200430221834-fc25d7d30c6d", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200430221834-fc25d7d30c6d" - }, - { - "name": "go.opencensus.io", - "version": "v0.22.3", - "purl": "pkg:golang/go.opencensus.io@v0.22.3", - "type": "library", - "bom-ref": "pkg:golang/go.opencensus.io@v0.22.3" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200501053045-e0ff5e5a1de5", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200501053045-e0ff5e5a1de5", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200501053045-e0ff5e5a1de5" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20200317015054-43a5402ce75a", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200501052902-10377860bb8e", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200501052902-10377860bb8e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200501052902-10377860bb8e" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200501065659-ab2804fb9c9d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200501065659-ab2804fb9c9d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200501065659-ab2804fb9c9d" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.22.0", - "purl": "pkg:golang/google.golang.org/api@v0.22.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.22.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200430143042-b979b6f78d84", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200430143042-b979b6f78d84", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200430143042-b979b6f78d84" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.1-2020.1.3", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - }, - { - "group": "cloud.google.com/go", - "name": "storage", - "version": "v1.8.0", - "purl": "pkg:golang/cloud.google.com/go/storage@v1.8.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/storage@v1.8.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200513185701-a91f0712d120", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200513185701-a91f0712d120", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200513185701-a91f0712d120" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200515095857-1151b9dac4a9", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200515095857-1151b9dac4a9", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200515095857-1151b9dac4a9" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200515010526-7d3b6ebf133d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200515010526-7d3b6ebf133d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200515010526-7d3b6ebf133d" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.24.0", - "purl": "pkg:golang/google.golang.org/api@v0.24.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.24.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200515170657-fc4c6c6a6587", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200515170657-fc4c6c6a6587", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200515170657-fc4c6c6a6587" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.1-2020.1.4", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.56.0", - "purl": "pkg:golang/cloud.google.com/go@v0.56.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.56.0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200331124033-c3d80250170d", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200331025713-a30bf2db82d4", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.6.5", - "purl": "pkg:golang/google.golang.org/appengine@v1.6.5", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.5" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200331122359-1ee6d9798940", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.28.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.28.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.28.0" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.26.0", - "purl": "pkg:golang/cloud.google.com/go@v0.26.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.26.0" - }, - { - "group": "github.com/BurntSushi", - "name": "toml", - "version": "v0.3.1", - "purl": "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/BurntSushi/toml@v0.3.1" - }, - { - "group": "github.com/client9", - "name": "misspell", - "version": "v0.3.4", - "purl": "pkg:golang/github.com/client9/misspell@v0.3.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/client9/misspell@v0.3.4" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.2.0", - "purl": "pkg:golang/github.com/golang/protobuf@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.2.0" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20181026193005-c67002cb31c3", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20181026193005-c67002cb31c3", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20181026193005-c67002cb31c3" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20180826012351-8a410e7b638d", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20180826012351-8a410e7b638d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20180826012351-8a410e7b638d" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20180314180146-1d60e4601c6f", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20180830151530-49385e6e1522", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20180830151530-49385e6e1522", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20180830151530-49385e6e1522" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190114222345-bf090417da8b", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190114222345-bf090417da8b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190114222345-bf090417da8b" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.1.0", - "purl": "pkg:golang/google.golang.org/appengine@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.1.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20180817151627-c66870c02cf8", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190213061140-3a22650c66bd", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20190227155943-e225da77a7e6", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.1.1-0.20191105210325-c90efee705ee", - "purl": "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20180724234803-3673e40ba225", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20180724234803-3673e40ba225", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20180724234803-3673e40ba225" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200707034311-ab3426394381", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200707034311-ab3426394381", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200707034311-ab3426394381" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200729194436-6467de6f59a7", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200729194436-6467de6f59a7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200729194436-6467de6f59a7" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.29.0", - "purl": "pkg:golang/google.golang.org/api@v0.29.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.29.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200729003335-053ba62fc06f", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200729003335-053ba62fc06f", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200729003335-053ba62fc06f" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.30.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.30.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.30.0" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.25.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.25.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.25.0" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.25.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.25.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.25.1" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.21.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.21.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.21.0" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20181108010431-42b317875d0f", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20181108010431-42b317875d0f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20181108010431-42b317875d0f" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.52.0", - "purl": "pkg:golang/cloud.google.com/go@v0.52.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.52.0" - }, - { - "group": "cloud.google.com/go", - "name": "storage", - "version": "v1.5.0", - "purl": "pkg:golang/cloud.google.com/go/storage@v1.5.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/storage@v1.5.0" - }, - { - "group": "github.com/golang", - "name": "groupcache", - "version": "v0.0.0-20200121045136-8c9f03a8e57e", - "purl": "pkg:golang/github.com/golang/groupcache@v0.0.0-20200121045136-8c9f03a8e57e", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20200121045136-8c9f03a8e57e" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20200119233911-0405dc783f0a", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20200119233911-0405dc783f0a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200119233911-0405dc783f0a" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200122134326-e047566fdf82", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200122134326-e047566fdf82", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200122134326-e047566fdf82" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200122220014-bf1340f18c4a", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200122220014-bf1340f18c4a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200122220014-bf1340f18c4a" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.15.0", - "purl": "pkg:golang/google.golang.org/api@v0.15.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.15.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200122232147-0452cf42e150", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200122232147-0452cf42e150", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200122232147-0452cf42e150" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.26.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.26.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.26.0" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20200207192155-f17229e696bd", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20200207192155-f17229e696bd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200207192155-f17229e696bd" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200212091648-12a6c2dcc1e4", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200212091648-12a6c2dcc1e4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200212091648-12a6c2dcc1e4" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200212150539-ea181f53ac56", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200212150539-ea181f53ac56", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200212150539-ea181f53ac56" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.17.0", - "purl": "pkg:golang/google.golang.org/api@v0.17.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.17.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200212174721-66ed5ce911ce", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200212174721-66ed5ce911ce", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200212174721-66ed5ce911ce" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.27.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.27.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.27.1" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20200130185559-910be7a94367", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20200130185559-910be7a94367", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20200130185559-910be7a94367" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200202094626-16171245cfb2", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200202094626-16171245cfb2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200202094626-16171245cfb2" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200202164722-d101bd2416d5", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200202164722-d101bd2416d5", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200202164722-d101bd2416d5" - }, - { - "group": "golang.org/x", - "name": "time", - "version": "v0.0.0-20191024005414-555d28b269f0", - "purl": "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200204074204-1cc6d1ef6c74", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200204074204-1cc6d1ef6c74", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200204074204-1cc6d1ef6c74" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200204135345-fa8e72b47b90", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200204135345-fa8e72b47b90", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200204135345-fa8e72b47b90" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.53.0", - "purl": "pkg:golang/cloud.google.com/go@v0.53.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.53.0" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20200224162631-6cc2880d07d6", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200222125558-5a598a2470a0", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200222125558-5a598a2470a0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200222125558-5a598a2470a0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200223170610-d5e6a3e2c0ae", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200223170610-d5e6a3e2c0ae", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200223170610-d5e6a3e2c0ae" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200224181240-023911ca70b2", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200224181240-023911ca70b2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200224181240-023911ca70b2" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.18.0", - "purl": "pkg:golang/google.golang.org/api@v0.18.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.18.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200224152610-e50cd9704f63", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200224152610-e50cd9704f63", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200224152610-e50cd9704f63" - }, - { - "group": "rsc.io/quote", - "name": "v3", - "version": "v3.1.0", - "purl": "pkg:golang/rsc.io/quote/v3@v3.1.0", - "type": "library", - "bom-ref": "pkg:golang/rsc.io/quote/v3@v3.1.0" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.38.0", - "purl": "pkg:golang/cloud.google.com/go@v0.38.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.38.0" - }, - { - "group": "github.com/hashicorp", - "name": "golang-lru", - "version": "v0.5.1", - "purl": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1" - }, - { - "name": "go.opencensus.io", - "version": "v0.21.0", - "purl": "pkg:golang/go.opencensus.io@v0.21.0", - "type": "library", - "bom-ref": "pkg:golang/go.opencensus.io@v0.21.0" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20190409202823-959b441ac422", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190503192946-f4e77d36d62c", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20190604053449-0f29369cfe45", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190507160741-ecd444e8653b", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.5.0", - "purl": "pkg:golang/google.golang.org/appengine@v1.5.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.5.0" - }, - { - "group": "github.com/google", - "name": "renameio", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/google/renameio@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/renameio@v0.1.0" - }, - { - "group": "github.com/rogpeppe", - "name": "go-internal", - "version": "v1.3.0", - "purl": "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.0.0-20190513183733-4bf6d317e70e", - "purl": "pkg:golang/golang.org/x/mod@v0.0.0-20190513183733-4bf6d317e70e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.0.0-20190513183733-4bf6d317e70e" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191130070609-6e064ea0cf2d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191130070609-6e064ea0cf2d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191130070609-6e064ea0cf2d" - }, - { - "group": "cloud.google.com/go", - "name": "bigquery", - "version": "v1.7.0", - "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.7.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.7.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200506145744-7e3656a0809f", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200506145744-7e3656a0809f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200506145744-7e3656a0809f" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200511232937-7e40ca221e25", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200511232937-7e40ca221e25", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200511232937-7e40ca221e25" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200512131952-2bc93b1c0c88", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200512131952-2bc93b1c0c88", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200512131952-2bc93b1c0c88" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200511104702-f5ebc3bea380", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200511104702-f5ebc3bea380", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200511104702-f5ebc3bea380" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.3.5", - "purl": "pkg:golang/github.com/golang/protobuf@v1.3.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.3.5" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20200229191704-1ebb73c60ed3", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20200229191704-1ebb73c60ed3", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200229191704-1ebb73c60ed3" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200324143707-d3edc9973b7e", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200324143707-d3edc9973b7e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200324143707-d3edc9973b7e" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.20.0", - "purl": "pkg:golang/google.golang.org/api@v0.20.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.20.0" - }, - { - "group": "github.com/yuin", - "name": "goldmark", - "version": "v1.1.25", - "purl": "pkg:golang/github.com/yuin/goldmark@v1.1.25", - "type": "library", - "bom-ref": "pkg:golang/github.com/yuin/goldmark@v1.1.25" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.0", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.0" - }, - { - "group": "github.com/envoyproxy", - "name": "go-control-plane", - "version": "v0.9.0", - "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.0" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.0-rc.4.0.20200313231945-b860323f09d0", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.4.0.20200313231945-b860323f09d0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.4.0.20200313231945-b860323f09d0" - }, - { - "group": "cloud.google.com/go", - "name": "bigquery", - "version": "v1.0.1", - "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.0.1", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.0.1" - }, - { - "group": "cloud.google.com/go", - "name": "datastore", - "version": "v1.0.0", - "purl": "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/datastore@v1.0.0" - }, - { - "group": "cloud.google.com/go", - "name": "pubsub", - "version": "v1.0.1", - "purl": "pkg:golang/cloud.google.com/go/pubsub@v1.0.1", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/pubsub@v1.0.1" - }, - { - "group": "cloud.google.com/go", - "name": "storage", - "version": "v1.0.0", - "purl": "pkg:golang/cloud.google.com/go/storage@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/storage@v1.0.0" - }, - { - "group": "github.com/golang", - "name": "groupcache", - "version": "v0.0.0-20191227052852-215e87163ea7", - "purl": "pkg:golang/github.com/golang/groupcache@v0.0.0-20191227052852-215e87163ea7", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20191227052852-215e87163ea7" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.3.1", - "purl": "pkg:golang/github.com/golang/mock@v1.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.3.1" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20191218002539-d4f498aebedc", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20191218002539-d4f498aebedc", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20191218002539-d4f498aebedc" - }, - { - "name": "go.opencensus.io", - "version": "v0.22.2", - "purl": "pkg:golang/go.opencensus.io@v0.22.2", - "type": "library", - "bom-ref": "pkg:golang/go.opencensus.io@v0.22.2" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20191227195350-da58074b4299", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20191227195350-da58074b4299", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20191227195350-da58074b4299" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20191125180803-fdd1cda4f05f", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20191125180803-fdd1cda4f05f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20191125180803-fdd1cda4f05f" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200114155413-6afb5195e5aa", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200114155413-6afb5195e5aa", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200114155413-6afb5195e5aa" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200113162924-86b910548bc1", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200113162924-86b910548bc1", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200113162924-86b910548bc1" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200117161641-43d50277825c", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200117161641-43d50277825c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200117161641-43d50277825c" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200115191322-ca5a22157cba", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200115191322-ca5a22157cba", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200115191322-ca5a22157cba" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.1-2019.2.3", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.50.0", - "purl": "pkg:golang/cloud.google.com/go@v0.50.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.50.0" - }, - { - "group": "cloud.google.com/go", - "name": "bigquery", - "version": "v1.3.0", - "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.3.0" - }, - { - "group": "cloud.google.com/go", - "name": "pubsub", - "version": "v1.1.0", - "purl": "pkg:golang/cloud.google.com/go/pubsub@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/pubsub@v1.1.0" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.3.1", - "purl": "pkg:golang/github.com/google/go-cmp@v0.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.3.1" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20191209160850-c0dbc17a3553", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20191209160850-c0dbc17a3553", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20191209160850-c0dbc17a3553" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20191202225959-858c2ad4c8b6", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20191202225959-858c2ad4c8b6", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20191202225959-858c2ad4c8b6" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20191228213918-04cbcbbfeed8", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20191228213918-04cbcbbfeed8", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191228213918-04cbcbbfeed8" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191227053925-7b8e75db28f4", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191227053925-7b8e75db28f4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191227053925-7b8e75db28f4" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20191230161307-f3c370f40bfb", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20191230161307-f3c370f40bfb", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191230161307-f3c370f40bfb" - }, - { - "group": "dmitri.shuralyov.com/gpu", - "name": "mtl", - "version": "v0.0.0-20190408044501-666a987793e9", - "purl": "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "type": "library", - "bom-ref": "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9" - }, - { - "group": "github.com/BurntSushi", - "name": "xgb", - "version": "v0.0.0-20160522181843-27f122750802", - "purl": "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "type": "library", - "bom-ref": "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802" - }, - { - "group": "github.com/go-gl/glfw/v3.3", - "name": "glfw", - "version": "v0.0.0-20191125211704-12ad95a8df72", - "purl": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72" - }, - { - "group": "golang.org/x", - "name": "image", - "version": "v0.0.0-20190802002840-cff245a6509b", - "purl": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b" - }, - { - "group": "golang.org/x", - "name": "mobile", - "version": "v0.0.0-20190719004257-d2bd2a29d028", - "purl": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.1.0", - "purl": "pkg:golang/golang.org/x/mod@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.1.0" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191012152004-8de300cfc20a", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190506145303-2d16b83fe98c", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190502173448-54afdca5d873", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.0-20190418001031-e561f6794a2a", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200207183749-b753a1ba74fa", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200207183749-b753a1ba74fa", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200207183749-b753a1ba74fa" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.4.0", - "purl": "pkg:golang/github.com/golang/mock@v1.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.4.0" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20200212024743-f11f1df84d12", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20200212024743-f11f1df84d12", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200212024743-f11f1df84d12" - }, - { - "group": "github.com/go-gl/glfw/v3.3", - "name": "glfw", - "version": "v0.0.0-20200222043503-6f7a984d4dc4", - "purl": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.1.1-0.20191107180719-034126e5016b", - "purl": "pkg:golang/golang.org/x/mod@v0.1.1-0.20191107180719-034126e5016b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.1.1-0.20191107180719-034126e5016b" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20191001151750-bb3f8db39f24", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20191001151750-bb3f8db39f24", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191001151750-bb3f8db39f24" - }, - { - "group": "rsc.io", - "name": "sampler", - "version": "v1.3.0", - "purl": "pkg:golang/rsc.io/sampler@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/rsc.io/sampler@v1.3.0" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.2.0", - "purl": "pkg:golang/github.com/golang/mock@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.2.0" - }, - { - "group": "github.com/google", - "name": "btree", - "version": "v0.0.0-20180813153112-4030bb1f1f0c", - "purl": "pkg:golang/github.com/google/btree@v0.0.0-20180813153112-4030bb1f1f0c", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/btree@v0.0.0-20180813153112-4030bb1f1f0c" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20181206194817-3ea8567a2e57", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20181206194817-3ea8567a2e57", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20181206194817-3ea8567a2e57" - }, - { - "group": "github.com/googleapis/gax-go", - "name": "v2", - "version": "v2.0.4", - "purl": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.4" - }, - { - "group": "github.com/jstemmer", - "name": "go-junit-report", - "version": "v0.0.0-20190106144839-af01ea7f8024", - "purl": "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "type": "library", - "bom-ref": "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20190301231843-5614ed5bae6f", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20190301231843-5614ed5bae6f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190301231843-5614ed5bae6f" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20190226205417-e64efc72b421", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20190226205417-e64efc72b421", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20190226205417-e64efc72b421" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.1-0.20180807135948-17ff2d5776d2", - "purl": "pkg:golang/golang.org/x/text@v0.3.1-0.20180807135948-17ff2d5776d2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.1-0.20180807135948-17ff2d5776d2" - }, - { - "group": "golang.org/x", - "name": "time", - "version": "v0.0.0-20181108054448-85acf8d2951c", - "purl": "pkg:golang/golang.org/x/time@v0.0.0-20181108054448-85acf8d2951c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20181108054448-85acf8d2951c" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190312170243-e65039ee4138", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190312170243-e65039ee4138", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190312170243-e65039ee4138" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.4.0", - "purl": "pkg:golang/google.golang.org/api@v0.4.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.4.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190418145605-e7d98fc518a7", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190418145605-e7d98fc518a7", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190418145605-e7d98fc518a7" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.0-20190106161140-3f1c8253044a", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.0-20190106161140-3f1c8253044a", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190106161140-3f1c8253044a" - }, - { - "group": "github.com/hashicorp", - "name": "golang-lru", - "version": "v0.5.0", - "purl": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190307195333-5fe7a883aa19", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190307195333-5fe7a883aa19", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190307195333-5fe7a883aa19" - }, - { - "group": "gopkg.in", - "name": "errgo.v2", - "version": "v2.1.0", - "purl": "pkg:golang/gopkg.in/errgo.v2@v2.1.0", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/errgo.v2@v2.1.0" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20190510104115-cbcb75029529", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20190510104115-cbcb75029529", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190510104115-cbcb75029529" - }, - { - "group": "cloud.google.com/go", - "name": "pubsub", - "version": "v1.3.1", - "purl": "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/pubsub@v1.3.1" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.20.1-0.20200309200217-e05f789c0967", - "purl": "pkg:golang/google.golang.org/protobuf@v1.20.1-0.20200309200217-e05f789c0967", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.20.1-0.20200309200217-e05f789c0967" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.44.2", - "purl": "pkg:golang/cloud.google.com/go@v0.44.2", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.44.2" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.8.0", - "purl": "pkg:golang/google.golang.org/api@v0.8.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.8.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190801165951-fa694d86fc64", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.21.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.21.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.21.1" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.44.1", - "purl": "pkg:golang/cloud.google.com/go@v0.44.1", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.44.1" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190624142023-c5567b49c5d0", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190624142023-c5567b49c5d0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190624142023-c5567b49c5d0" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.7.0", - "purl": "pkg:golang/google.golang.org/api@v0.7.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.7.0" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.6.1", - "purl": "pkg:golang/google.golang.org/appengine@v1.6.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.1" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.45.1", - "purl": "pkg:golang/cloud.google.com/go@v0.45.1", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.45.1" - }, - { - "name": "go.opencensus.io", - "version": "v0.22.0", - "purl": "pkg:golang/go.opencensus.io@v0.22.0", - "type": "library", - "bom-ref": "pkg:golang/go.opencensus.io@v0.22.0" - }, - { - "group": "golang.org/x", - "name": "time", - "version": "v0.0.0-20190308202827-9d24e82272b4", - "purl": "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.9.0", - "purl": "pkg:golang/google.golang.org/api@v0.9.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.9.0" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.46.3", - "purl": "pkg:golang/cloud.google.com/go@v0.46.3", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.46.3" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190911173649-1774047e7e51", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190911173649-1774047e7e51", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190911173649-1774047e7e51" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191125144606-a911d9008d1f", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191125144606-a911d9008d1f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191125144606-a911d9008d1f" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190621195816-6e04913cbbac", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190621195816-6e04913cbbac", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190621195816-6e04913cbbac" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20190515194954-54271f7e092f", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20191129062945-2f5052295587", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20191129062945-2f5052295587", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20191129062945-2f5052295587" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190724013045-ca1201d0de80", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190724013045-ca1201d0de80", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190724013045-ca1201d0de80" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190726091711-fc99dfbffb4e", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190726091711-fc99dfbffb4e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190726091711-fc99dfbffb4e" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191216173652-a0e659d51361", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191216173652-a0e659d51361", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191216173652-a0e659d51361" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.14.0", - "purl": "pkg:golang/google.golang.org/api@v0.14.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.14.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20191216164720-4f79533eabd1", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20191216164720-4f79533eabd1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191216164720-4f79533eabd1" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20191030013958-a1ab85dbe136", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20191030013958-a1ab85dbe136", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20191030013958-a1ab85dbe136" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20190930215403-16217165b5de", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20190930215403-16217165b5de", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190930215403-16217165b5de" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191113191852-77e3bb0ad9e7", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191113191852-77e3bb0ad9e7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191113191852-77e3bb0ad9e7" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.13.0", - "purl": "pkg:golang/google.golang.org/api@v0.13.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.13.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20191108220845-16a3f7862a1a", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20191108220845-16a3f7862a1a", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191108220845-16a3f7862a1a" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191115202509-3a792d9c32b2", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191115202509-3a792d9c32b2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191115202509-3a792d9c32b2" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20191115194625-c23dd37a84c9", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20191115194625-c23dd37a84c9", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191115194625-c23dd37a84c9" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20190306152737-a1d7652674e8", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20190306152737-a1d7652674e8", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190306152737-a1d7652674e8" - }, - { - "group": "golang.org/x", - "name": "image", - "version": "v0.0.0-20190227222117-0694c2d4d067", - "purl": "pkg:golang/golang.org/x/image@v0.0.0-20190227222117-0694c2d4d067", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/image@v0.0.0-20190227222117-0694c2d4d067" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190312061237-fead79001313", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190312061237-fead79001313", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190312061237-fead79001313" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.0.0-20170915032832-14c0d48ead0c", - "purl": "pkg:golang/golang.org/x/text@v0.0.0-20170915032832-14c0d48ead0c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.0.0-20170915032832-14c0d48ead0c" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.54.0", - "purl": "pkg:golang/cloud.google.com/go@v0.54.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.54.0" - }, - { - "group": "cloud.google.com/go", - "name": "bigquery", - "version": "v1.5.0", - "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.5.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.5.0" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.3.4", - "purl": "pkg:golang/github.com/golang/protobuf@v1.3.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.3.4" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200312045724-11d5b4c81c7d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200312045724-11d5b4c81c7d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200312045724-11d5b4c81c7d" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200312145019-da6875a35672", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200312145019-da6875a35672", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200312145019-da6875a35672" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.0-rc.2", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.2" - }, - { - "group": "github.com/google", - "name": "btree", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/google/btree@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/btree@v1.0.0" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20190510132918-efd6b22b2522", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20190510132918-efd6b22b2522", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190510132918-efd6b22b2522" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190628153133-6cdbf07be9d0", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190628153133-6cdbf07be9d0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190628153133-6cdbf07be9d0" - }, - { - "group": "rsc.io", - "name": "binaryregexp", - "version": "v0.2.0", - "purl": "pkg:golang/rsc.io/binaryregexp@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/rsc.io/binaryregexp@v0.2.0" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20190605123033-f99c8df09eb5", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20190605123033-f99c8df09eb5", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190605123033-f99c8df09eb5" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190606165138-5da285871e9c", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190606165138-5da285871e9c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190606165138-5da285871e9c" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190606124116-d0a3d012864b", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190606124116-d0a3d012864b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190606124116-d0a3d012864b" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190501004415-9ce7a6920f09", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190501004415-9ce7a6920f09", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190501004415-9ce7a6920f09" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20190829153037-c13cbed26979", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20190829153037-c13cbed26979", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190829153037-c13cbed26979" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20190909230951-414d861bb4ac", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20190909230951-414d861bb4ac", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190909230951-414d861bb4ac" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190911174233-4f2ddba30aff", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190911174233-4f2ddba30aff", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190911174233-4f2ddba30aff" - }, - { - "group": "github.com/go-gl", - "name": "glfw", - "version": "v0.0.0-20190409004039-e6da0acd62b1", - "purl": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.4.1", - "purl": "pkg:golang/github.com/golang/mock@v1.4.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.4.1" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200301022130-244492dfa37a", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200301022130-244492dfa37a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200301022130-244492dfa37a" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200302150141-5c8b2ff67527", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200302150141-5c8b2ff67527", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200302150141-5c8b2ff67527" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200304193943-95d2e580d8eb", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200304193943-95d2e580d8eb", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200304193943-95d2e580d8eb" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200305110556-506484158171", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200305110556-506484158171", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200305110556-506484158171" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200227222343-706bc42d1f0d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200227222343-706bc42d1f0d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200227222343-706bc42d1f0d" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.19.0", - "purl": "pkg:golang/google.golang.org/api@v0.19.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.19.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200228133532-8c2c7df3a383", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200228133532-8c2c7df3a383", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200228133532-8c2c7df3a383" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v0.0.0-20200228230310-ab0ca4ff8a60", - "purl": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200228230310-ab0ca4ff8a60", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200228230310-ab0ca4ff8a60" - }, - { - "group": "golang.org/x", - "name": "mobile", - "version": "v0.0.0-20190312151609-d3739f865fa6", - "purl": "pkg:golang/golang.org/x/mobile@v0.0.0-20190312151609-d3739f865fa6", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mobile@v0.0.0-20190312151609-d3739f865fa6" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190312151545-0bb0c0a6e846", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190312151545-0bb0c0a6e846", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190312151545-0bb0c0a6e846" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190816200558-6889da9d5479", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190816200558-6889da9d5479", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190816200558-6889da9d5479" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.0-rc.1.0.20200221234624-67d41d38c208", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1.0.20200221234624-67d41d38c208", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1.0.20200221234624-67d41d38c208" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v0.0.0-20200221191635-4d8936d0db64", - "purl": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200221191635-4d8936d0db64", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200221191635-4d8936d0db64" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.0-rc.1", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v0.0.0-20200109180630-ec00e32a8dfd", - "purl": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200109180630-ec00e32a8dfd", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200109180630-ec00e32a8dfd" - } - ], - "dependencies": [ - { - "ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "pkg:golang/github.com/gin-gonic/gin@v1.9.1", - "pkg:golang/github.com/go-logr/logr@v1.2.3", - "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/github.com/imdario/mergo@v0.3.6", - "pkg:golang/github.com/jessevdk/go-flags@v1.5.0", - "pkg:golang/github.com/josharian/intern@v1.0.0", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/kr/pretty@v0.3.1", - "pkg:golang/github.com/kr/text@v0.2.0", - "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/term@v0.8.0", - "pkg:golang/golang.org/x/text@v0.9.0", - "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/protobuf@v1.30.0", - "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/k8s.io/api@v0.26.1", - "pkg:golang/k8s.io/apimachinery@v0.26.1", - "pkg:golang/k8s.io/client-go@v0.26.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", - "dependsOn": [ - "pkg:golang/github.com/bytedance/sonic@v1.9.1", - "pkg:golang/github.com/gin-contrib/sse@v0.1.0", - "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", - "pkg:golang/github.com/goccy/go-json@v0.10.2", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/mattn/go-isatty@v0.0.19", - "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", - "pkg:golang/github.com/stretchr/testify@v1.8.3", - "pkg:golang/github.com/ugorji/go/codec@v1.2.11", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/google.golang.org/protobuf@v1.30.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", - "pkg:golang/github.com/go-playground/locales@v0.14.1", - "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", - "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", - "pkg:golang/github.com/leodido/go-urn@v1.2.4", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", - "pkg:golang/golang.org/x/arch@v0.3.0", - "pkg:golang/golang.org/x/crypto@v0.9.0", - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/text@v0.9.0" - ] - }, - { - "ref": "pkg:golang/github.com/go-logr/logr@v1.2.3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "dependsOn": [ - "pkg:golang/github.com/go-openapi/swag@v0.19.5", - "pkg:golang/github.com/mailru/easyjson@v0.0.0-20190626092158-b2ccc519800e", - "pkg:golang/github.com/stretchr/testify@v1.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "dependsOn": [ - "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.3", - "pkg:golang/github.com/stretchr/testify@v1.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/kr/text@v0.2.0", - "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", - "pkg:golang/github.com/stretchr/testify@v1.6.1", - "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200615113413-eeeca48fe776" - ] - }, - { - "ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "dependsOn": [ - "pkg:golang/github.com/kisielk/errcheck@v1.5.0", - "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "pkg:golang/golang.org/x/tools@v0.0.0-20210106214847-113979e3529a" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.5.2", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.5.5", - "pkg:golang/google.golang.org/protobuf@v1.26.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/kr/pretty@v0.2.0", - "pkg:golang/github.com/stoewer/go-strcase@v1.2.0", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", - "pkg:golang/google.golang.org/protobuf@v1.26.0", - "pkg:golang/gopkg.in/check.v1@v1.0.0-20190902080502-41f04d3bba15", - "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200615113413-eeeca48fe776" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.9", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/gofuzz@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/uuid@v1.1.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/imdario/mergo@v0.3.6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/jessevdk/go-flags@v1.5.0", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20210320140829-1e4c9ba3b0c4" - ] - }, - { - "ref": "pkg:golang/github.com/josharian/intern@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/json-iterator/go@v1.1.12", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/google/gofuzz@v1.0.0", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180228061459-e0a39a4cb421", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/stretchr/testify@v1.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/kr/pretty@v0.3.1", - "dependsOn": [ - "pkg:golang/github.com/kr/text@v0.2.0", - "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" - ] - }, - { - "ref": "pkg:golang/github.com/kr/text@v0.2.0", - "dependsOn": [ - "pkg:golang/github.com/creack/pty@v1.1.9" - ] - }, - { - "ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "dependsOn": [ - "pkg:golang/github.com/josharian/intern@v1.0.0" - ] - }, - { - "ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", - "dependsOn": [ - "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e" - ] - }, - { - "ref": "pkg:golang/github.com/spf13/pflag@v1.0.5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.10.0", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/term@v0.8.0", - "pkg:golang/golang.org/x/text@v0.9.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/golang.org/x/net@v0.0.0-20220127200216-cd36cc0744dd", - "pkg:golang/google.golang.org/appengine@v1.6.6" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.8.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/term@v0.8.0", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.8.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.9.0", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.6.0", - "pkg:golang/golang.org/x/mod@v0.8.0", - "pkg:golang/golang.org/x/sys@v0.5.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.6.7", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65", - "pkg:golang/golang.org/x/text@v0.3.2" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.30.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.0", - "pkg:golang/github.com/google/go-cmp@v0.5.5" - ] - }, - { - "ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/k8s.io/api@v0.26.1", - "dependsOn": [ - "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "pkg:golang/github.com/stretchr/testify@v1.8.0", - "pkg:golang/k8s.io/apimachinery@v0.26.1", - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/go-logr/logr@v1.2.3", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/golang.org/x/net@v0.3.1-0.20221206200815-1e63c2f08a10", - "pkg:golang/golang.org/x/text@v0.5.0", - "pkg:golang/google.golang.org/protobuf@v1.28.1", - "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.3.0" - ] - }, - { - "ref": "pkg:golang/k8s.io/apimachinery@v0.26.1", - "dependsOn": [ - "pkg:golang/github.com/armon/go-socks5@v0.0.0-20160902184237-e75332964ef5", - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/elazarl/goproxy@v0.0.0-20180725130230-947c36da3153", - "pkg:golang/github.com/evanphx/json-patch@v4.12.0%2Bincompatible", - "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/github.com/moby/spdystream@v0.2.0", - "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/github.com/stretchr/testify@v1.8.0", - "pkg:golang/golang.org/x/net@v0.3.1-0.20221206200815-1e63c2f08a10", - "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.3.0", - "pkg:golang/github.com/go-logr/logr@v1.2.3", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/kr/text@v0.2.0", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", - "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", - "pkg:golang/github.com/onsi/gomega@v1.23.0", - "pkg:golang/github.com/pkg/errors@v0.9.1", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/golang.org/x/text@v0.5.0", - "pkg:golang/google.golang.org/protobuf@v1.28.1", - "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1" - ] - }, - { - "ref": "pkg:golang/k8s.io/client-go@v0.26.1", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/evanphx/json-patch@v4.12.0%2Bincompatible", - "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7", - "pkg:golang/github.com/imdario/mergo@v0.3.6", - "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/github.com/stretchr/testify@v1.8.0", - "pkg:golang/golang.org/x/net@v0.3.1-0.20221206200815-1e63c2f08a10", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "pkg:golang/golang.org/x/term@v0.3.0", - "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "pkg:golang/google.golang.org/protobuf@v1.28.1", - "pkg:golang/k8s.io/api@v0.26.1", - "pkg:golang/k8s.io/apimachinery@v0.26.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.3.0", - "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "pkg:golang/github.com/go-logr/logr@v1.2.3", - "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "pkg:golang/github.com/google/btree@v1.0.1", - "pkg:golang/github.com/josharian/intern@v1.0.0", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "pkg:golang/github.com/moby/spdystream@v0.2.0", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "pkg:golang/github.com/pkg/errors@v0.9.1", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/golang.org/x/sys@v0.3.0", - "pkg:golang/golang.org/x/text@v0.5.0", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2" - ] - }, - { - "ref": "pkg:golang/k8s.io/klog/v2@v2.80.1", - "dependsOn": [ - "pkg:golang/github.com/go-logr/logr@v1.2.0" - ] - }, - { - "ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "dependsOn": [ - "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", - "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a", - "pkg:golang/github.com/emicklei/go-restful/v3@v3.8.0", - "pkg:golang/github.com/go-openapi/jsonreference@v0.19.3", - "pkg:golang/github.com/go-openapi/swag@v0.19.5", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", - "pkg:golang/github.com/google/go-cmp@v0.5.5", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", - "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20120707110453-a547fc61f48d", - "pkg:golang/github.com/onsi/ginkgo/v2@v2.1.4", - "pkg:golang/github.com/onsi/gomega@v1.19.0", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/github.com/stretchr/testify@v1.5.1", - "pkg:golang/google.golang.org/protobuf@v1.27.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20210107192922-496545a6307b", - "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c", - "pkg:golang/k8s.io/klog/v2@v2.2.0", - "pkg:golang/k8s.io/utils@v0.0.0-20210802155522-efc7438f0176", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.2.0", - "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1", - "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578", - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/go-logr/logr@v0.2.0", - "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/mailru/easyjson@v0.0.0-20190626092158-b2ccc519800e", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/golang.org/x/mod@v0.6.0-dev.0.20220106191415-9b9b3d81d5e3", - "pkg:golang/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f", - "pkg:golang/golang.org/x/sys@v0.0.0-20220319134239-a9b59b0215f8", - "pkg:golang/golang.org/x/text@v0.3.7", - "pkg:golang/golang.org/x/tools@v0.1.10", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/github.com/go-logr/logr@v1.2.0" - ] - }, - { - "ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "dependsOn": [ - "pkg:golang/gopkg.in/yaml.v2@v2.2.8", - "pkg:golang/github.com/google/gofuzz@v1.0.0", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" - ] - }, - { - "ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0" - ] - }, - { - "ref": "pkg:golang/github.com/bytedance/sonic@v1.9.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/gin-contrib/sse@v0.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/goccy/go-json@v0.10.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.19", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.8.3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ugorji/go/codec@v1.2.11", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-playground/locales@v0.14.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/leodido/go-urn@v1.2.4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/arch@v0.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.9.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-openapi/swag@v0.19.5", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/kr/pretty@v0.1.0", - "pkg:golang/github.com/mailru/easyjson@v0.0.0-20190614124828-94de47d64c63", - "pkg:golang/github.com/stretchr/testify@v1.3.0", - "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127", - "pkg:golang/gopkg.in/yaml.v2@v2.2.2" - ] - }, - { - "ref": "pkg:golang/github.com/mailru/easyjson@v0.0.0-20190626092158-b2ccc519800e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.3.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/objx@v0.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.3", - "dependsOn": [ - "pkg:golang/github.com/go-openapi/swag@v0.19.5", - "pkg:golang/github.com/mailru/easyjson@v0.0.0-20190626092158-b2ccc519800e", - "pkg:golang/github.com/stretchr/testify@v1.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", - "dependsOn": [ - "pkg:golang/github.com/kr/text@v0.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.6.1", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/objx@v0.1.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c" - ] - }, - { - "ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200615113413-eeeca48fe776", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/github.com/kisielk/errcheck@v1.5.0", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20200619180055-7c47624df98f" - ] - }, - { - "ref": "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20210106214847-113979e3529a", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.2.1", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", - "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.5", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.26.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.0", - "pkg:golang/github.com/google/go-cmp@v0.5.5" - ] - }, - { - "ref": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/kr/pretty@v0.2.0", - "dependsOn": [ - "pkg:golang/github.com/kr/text@v0.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/stoewer/go-strcase@v1.2.0", - "dependsOn": [ - "pkg:golang/github.com/stretchr/testify@v1.5.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - ] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0" - ] - }, - { - "ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20190902080502-41f04d3bba15", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210320140829-1e4c9ba3b0c4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/gofuzz@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180228061459-e0a39a4cb421", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/creack/pty@v1.1.9", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.65.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "pkg:golang/github.com/golang/mock@v1.4.4", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.5.1", - "pkg:golang/github.com/google/martian/v3@v3.0.0", - "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.4", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/text@v0.3.3", - "pkg:golang/golang.org/x/tools@v0.0.0-20200825202427-b303f430e36d", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "pkg:golang/google.golang.org/api@v0.30.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200825200019-8632dd797987", - "pkg:golang/google.golang.org/grpc@v1.31.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20220127200216-cd36cc0744dd", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20211216021012-1d35b9e2eb4e", - "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211", - "pkg:golang/golang.org/x/text@v0.3.7" - ] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.6.6", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65", - "pkg:golang/golang.org/x/text@v0.3.2" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.6.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.8.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.5.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.3.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.2", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.5.0", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.5.5", - "pkg:golang/google.golang.org/protobuf@v1.26.0-rc.1" - ] - }, - { - "ref": "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.8.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.3.1-0.20221206200815-1e63c2f08a10", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.5.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.28.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/armon/go-socks5@v0.0.0-20160902184237-e75332964ef5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/elazarl/goproxy@v0.0.0-20180725130230-947c36da3153", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/evanphx/json-patch@v4.12.0%2Bincompatible", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/moby/spdystream@v0.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/onsi/gomega@v1.23.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/pkg/errors@v0.9.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/term@v0.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/btree@v1.0.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-logr/logr@v1.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.8.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.19.3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20120707110453-a547fc61f48d", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/onsi/ginkgo/v2@v2.1.4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/onsi/gomega@v1.19.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.5.1", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/objx@v0.1.0", - "pkg:golang/gopkg.in/yaml.v2@v2.2.2" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.27.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20210107192922-496545a6307b", - "dependsOn": [] - }, - { - "ref": "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c", - "dependsOn": [] - }, - { - "ref": "pkg:golang/k8s.io/klog/v2@v2.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/k8s.io/utils@v0.0.0-20210802155522-efc7438f0176", - "dependsOn": [] - }, - { - "ref": "pkg:golang/sigs.k8s.io/yaml@v1.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-logr/logr@v0.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.6.0-dev.0.20220106191415-9b9b3d81d5e3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20220319134239-a9b59b0215f8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.7", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.1.10", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.8", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/github.com/kr/pretty@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/kr/text@v0.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/mailru/easyjson@v0.0.0-20190614124828-94de47d64c63", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.2", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/stretchr/objx@v0.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/kr/text@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/kr/pty@v1.1.1" - ] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200619180055-7c47624df98f", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/github.com/yuin/goldmark@v1.2.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.3.0", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f", - "pkg:golang/golang.org/x/text@v0.3.3" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.1", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/protobuf@v1.22.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.27.0", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.1-0.20191026205805-5f8ba28d4473", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.24.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.57.0", - "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.4.1", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/net@v0.0.0-20200520182314-0ba52f642ac2", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200523222454-059865788121", - "pkg:golang/golang.org/x/tools@v0.0.0-20200618134242-20370b0cb4b2", - "pkg:golang/google.golang.org/api@v0.28.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200618031413-b414f8b61790", - "pkg:golang/google.golang.org/grpc@v1.29.1" - ] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.4.4", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.2", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/protobuf@v1.23.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.1", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/github.com/google/martian/v3@v3.0.0", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190628185345-da137c7871d7" - ] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "dependsOn": [ - "pkg:golang/google.golang.org/grpc@v1.19.0" - ] - }, - { - "ref": "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/go.opencensus.io@v0.22.4", - "dependsOn": [ - "pkg:golang/github.com/golang/groupcache@v0.0.0-20190702054246-869f871628b6", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/stretchr/testify@v1.4.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb", - "pkg:golang/google.golang.org/grpc@v1.20.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20200130002326-2f3ba24bd6e7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.34.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e", - "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4", - "pkg:golang/google.golang.org/appengine@v1.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.3", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200825202427-b303f430e36d", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.32", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200625001655-4c5254603344", - "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.30.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.62.0", - "pkg:golang/github.com/google/go-cmp@v0.5.1", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.4", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "pkg:golang/golang.org/x/sys@v0.0.0-20200803210538-64077c9b5642", - "pkg:golang/golang.org/x/tools@v0.0.0-20200804011535-6c149bb5ef0d", - "pkg:golang/google.golang.org/appengine@v1.6.6", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200804131852-c06518451d9c", - "pkg:golang/google.golang.org/grpc@v1.31.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200825200019-8632dd797987", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.31.0", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20211216021012-1d35b9e2eb4e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20210615035016-665e8c7367d1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.26.0-rc.1", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.5.5" - ] - }, - { - "ref": "pkg:golang/github.com/kr/pty@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.2.0", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.4.0", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.22.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a" - ] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.1-0.20191026205805-5f8ba28d4473", - "dependsOn": [ - "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.23.0" - ] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.3.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.23.1-0.20200526195155-81db48ad09cc", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.57.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.4.0", - "pkg:golang/cloud.google.com/go/datastore@v1.1.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.2.0", - "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "pkg:golang/github.com/golang/mock@v1.4.3", - "pkg:golang/github.com/golang/protobuf@v1.4.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20200430221834-fc25d7d30c6d", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/net@v0.0.0-20200501053045-e0ff5e5a1de5", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "pkg:golang/golang.org/x/sys@v0.0.0-20200501052902-10377860bb8e", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20200501065659-ab2804fb9c9d", - "pkg:golang/google.golang.org/api@v0.22.0", - "pkg:golang/google.golang.org/appengine@v1.6.6", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200430143042-b979b6f78d84", - "pkg:golang/google.golang.org/grpc@v1.29.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.57.0", - "pkg:golang/cloud.google.com/go/storage@v1.8.0", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200513185701-a91f0712d120", - "pkg:golang/golang.org/x/sys@v0.0.0-20200515095857-1151b9dac4a9", - "pkg:golang/golang.org/x/tools@v0.0.0-20200515010526-7d3b6ebf133d", - "pkg:golang/google.golang.org/api@v0.24.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200515170657-fc4c6c6a6587", - "pkg:golang/google.golang.org/grpc@v1.29.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.4.1", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200520182314-0ba52f642ac2", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200523222454-059865788121", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200618134242-20370b0cb4b2", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.28.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.56.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d", - "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4", - "pkg:golang/google.golang.org/appengine@v1.6.5", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940", - "pkg:golang/google.golang.org/grpc@v1.28.0", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200618031413-b414f8b61790", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.29.1", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.23.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190628185345-da137c7871d7", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/chzyer/logex@v1.1.10", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.19.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.26.0", - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/client9/misspell@v0.3.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20181026193005-c67002cb31c3", - "pkg:golang/golang.org/x/net@v0.0.0-20180826012351-8a410e7b638d", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f", - "pkg:golang/golang.org/x/sys@v0.0.0-20180830151530-49385e6e1522", - "pkg:golang/golang.org/x/text@v0.3.0", - "pkg:golang/golang.org/x/tools@v0.0.0-20190114222345-bf090417da8b", - "pkg:golang/google.golang.org/appengine@v1.1.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20190702054246-869f871628b6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.4.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/objx@v0.1.0", - "pkg:golang/gopkg.in/yaml.v2@v2.2.2" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.20.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.26.0", - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/client9/misspell@v0.3.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd", - "pkg:golang/google.golang.org/appengine@v1.1.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200130002326-2f3ba24bd6e7", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.34.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.4.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20180724234803-3673e40ba225", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/yuin/goldmark@v1.1.32", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200625001655-4c5254603344", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.62.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "pkg:golang/github.com/golang/mock@v1.4.3", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.5.1", - "pkg:golang/github.com/google/martian/v3@v3.0.0", - "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.4", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/net@v0.0.0-20200707034311-ab3426394381", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/text@v0.3.3", - "pkg:golang/golang.org/x/tools@v0.0.0-20200729194436-6467de6f59a7", - "pkg:golang/google.golang.org/api@v0.29.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200729003335-053ba62fc06f", - "pkg:golang/google.golang.org/grpc@v1.30.0", - "pkg:golang/google.golang.org/protobuf@v1.25.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200803210538-64077c9b5642", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200804011535-6c149bb5ef0d", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.32", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200625001655-4c5254603344", - "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200804131852-c06518451d9c", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0" - ] - }, - { - "ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/google.golang.org/grpc@v1.25.1" - ] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "dependsOn": [ - "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.25.1" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.3.3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210615035016-665e8c7367d1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.0", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/protobuf@v1.21.0" - ] - }, - { - "ref": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/sync@v0.0.0-20181108010431-42b317875d0f" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.23.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.26.0", - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/client9/misspell@v0.3.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/appengine@v1.1.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "pkg:golang/golang.org/x/sync@v0.0.0-20181108010431-42b317875d0f", - "pkg:golang/google.golang.org/appengine@v1.4.0" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.23.1-0.20200526195155-81db48ad09cc", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.4.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.52.0", - "pkg:golang/cloud.google.com/go/storage@v1.5.0", - "pkg:golang/github.com/golang/groupcache@v0.0.0-20200121045136-8c9f03a8e57e", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/exp@v0.0.0-20200119233911-0405dc783f0a", - "pkg:golang/golang.org/x/sys@v0.0.0-20200122134326-e047566fdf82", - "pkg:golang/golang.org/x/tools@v0.0.0-20200122220014-bf1340f18c4a", - "pkg:golang/google.golang.org/api@v0.15.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200122232147-0452cf42e150", - "pkg:golang/google.golang.org/grpc@v1.26.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/datastore@v1.1.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.52.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.2.0", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/exp@v0.0.0-20200207192155-f17229e696bd", - "pkg:golang/golang.org/x/sys@v0.0.0-20200212091648-12a6c2dcc1e4", - "pkg:golang/golang.org/x/tools@v0.0.0-20200212150539-ea181f53ac56", - "pkg:golang/google.golang.org/api@v0.17.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200212174721-66ed5ce911ce", - "pkg:golang/google.golang.org/grpc@v1.27.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/pubsub@v1.2.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.52.0", - "pkg:golang/cloud.google.com/go/bigquery@v1.4.0", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200130185559-910be7a94367", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200202094626-16171245cfb2", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/sys@v0.0.0-20200202164722-d101bd2416d5", - "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0", - "pkg:golang/golang.org/x/tools@v0.0.0-20200204074204-1cc6d1ef6c74", - "pkg:golang/google.golang.org/api@v0.15.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200204135345-fa8e72b47b90", - "pkg:golang/google.golang.org/grpc@v1.27.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.53.0", - "pkg:golang/cloud.google.com/go/datastore@v1.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", - "pkg:golang/golang.org/x/net@v0.0.0-20200222125558-5a598a2470a0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200223170610-d5e6a3e2c0ae", - "pkg:golang/golang.org/x/tools@v0.0.0-20200224181240-023911ca70b2", - "pkg:golang/google.golang.org/api@v0.18.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200224152610-e50cd9704f63", - "pkg:golang/google.golang.org/grpc@v1.27.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - ] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.4.3", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262", - "pkg:golang/rsc.io/quote/v3@v3.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200430221834-fc25d7d30c6d", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/go.opencensus.io@v0.22.3", - "dependsOn": [ - "pkg:golang/github.com/golang/groupcache@v0.0.0-20190702054246-869f871628b6", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/stretchr/testify@v1.4.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb", - "pkg:golang/google.golang.org/grpc@v1.20.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200501053045-e0ff5e5a1de5", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200501052902-10377860bb8e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200501065659-ab2804fb9c9d", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.22.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200430143042-b979b6f78d84", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3", - "dependsOn": [ - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/google/renameio@v0.1.0", - "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0", - "pkg:golang/golang.org/x/mod@v0.0.0-20190513183733-4bf6d317e70e", - "pkg:golang/golang.org/x/tools@v0.0.0-20191130070609-6e064ea0cf2d" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/storage@v1.8.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.57.0", - "pkg:golang/cloud.google.com/go/bigquery@v1.7.0", - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/net@v0.0.0-20200506145744-7e3656a0809f", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200511232937-7e40ca221e25", - "pkg:golang/golang.org/x/tools@v0.0.0-20200512131952-2bc93b1c0c88", - "pkg:golang/google.golang.org/api@v0.24.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200511104702-f5ebc3bea380", - "pkg:golang/google.golang.org/grpc@v1.29.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200513185701-a91f0712d120", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200515095857-1151b9dac4a9", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200515010526-7d3b6ebf133d", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.24.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.56.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d", - "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4", - "pkg:golang/google.golang.org/appengine@v1.6.5", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940", - "pkg:golang/google.golang.org/grpc@v1.28.0", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200515170657-fc4c6c6a6587", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.22.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", - "dependsOn": [ - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/google/renameio@v0.1.0", - "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0", - "pkg:golang/golang.org/x/mod@v0.0.0-20190513183733-4bf6d317e70e", - "pkg:golang/golang.org/x/tools@v0.0.0-20191130070609-6e064ea0cf2d" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.56.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.4.0", - "pkg:golang/cloud.google.com/go/datastore@v1.1.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.2.0", - "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "pkg:golang/github.com/golang/mock@v1.4.3", - "pkg:golang/github.com/golang/protobuf@v1.3.5", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20200229191704-1ebb73c60ed3", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/net@v0.0.0-20200324143707-d3edc9973b7e", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4", - "pkg:golang/google.golang.org/api@v0.20.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940", - "pkg:golang/google.golang.org/grpc@v1.28.0", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.25", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.6.5", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65", - "pkg:golang/golang.org/x/text@v0.3.2" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.28.0", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.26.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/client9/misspell@v0.3.4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20181026193005-c67002cb31c3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20180826012351-8a410e7b638d", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20180830151530-49385e6e1522", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190114222345-bf090417da8b", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20180724234803-3673e40ba225", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200707034311-ab3426394381", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200729194436-6467de6f59a7", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.32", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200625001655-4c5254603344", - "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.29.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.56.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d", - "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4", - "pkg:golang/google.golang.org/appengine@v1.6.5", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940", - "pkg:golang/google.golang.org/grpc@v1.28.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200729003335-053ba62fc06f", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.30.0", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.25.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/github.com/google/go-cmp@v0.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.25.1", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.0", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.21.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.4.0.20200313231945-b860323f09d0", - "pkg:golang/github.com/google/go-cmp@v0.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20181108010431-42b317875d0f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.52.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.0.1", - "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.0.1", - "pkg:golang/cloud.google.com/go/storage@v1.0.0", - "pkg:golang/github.com/golang/groupcache@v0.0.0-20191227052852-215e87163ea7", - "pkg:golang/github.com/golang/mock@v1.3.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20191218002539-d4f498aebedc", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20191227195350-da58074b4299", - "pkg:golang/golang.org/x/lint@v0.0.0-20191125180803-fdd1cda4f05f", - "pkg:golang/golang.org/x/net@v0.0.0-20200114155413-6afb5195e5aa", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/sys@v0.0.0-20200113162924-86b910548bc1", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20200117161641-43d50277825c", - "pkg:golang/google.golang.org/api@v0.15.0", - "pkg:golang/google.golang.org/appengine@v1.6.5", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200115191322-ca5a22157cba", - "pkg:golang/google.golang.org/grpc@v1.26.0", - "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/storage@v1.5.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.50.0", - "pkg:golang/cloud.google.com/go/bigquery@v1.3.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.1.0", - "pkg:golang/github.com/golang/groupcache@v0.0.0-20191227052852-215e87163ea7", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.1", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20191227195350-da58074b4299", - "pkg:golang/golang.org/x/net@v0.0.0-20191209160850-c0dbc17a3553", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20191202225959-858c2ad4c8b6", - "pkg:golang/golang.org/x/sys@v0.0.0-20191228213918-04cbcbbfeed8", - "pkg:golang/golang.org/x/tools@v0.0.0-20191227053925-7b8e75db28f4", - "pkg:golang/google.golang.org/api@v0.15.0", - "pkg:golang/google.golang.org/appengine@v1.6.5", - "pkg:golang/google.golang.org/genproto@v0.0.0-20191230161307-f3c370f40bfb", - "pkg:golang/google.golang.org/grpc@v1.26.0" - ] - }, - { - "ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20200121045136-8c9f03a8e57e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200119233911-0405dc783f0a", - "dependsOn": [ - "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.0", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200122134326-e047566fdf82", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200122220014-bf1340f18c4a", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.15.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "pkg:golang/google.golang.org/grpc@v1.20.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200122232147-0452cf42e150", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.26.0", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.1-0.20191026205805-5f8ba28d4473", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200207192155-f17229e696bd", - "dependsOn": [ - "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "pkg:golang/golang.org/x/tools@v0.0.0-20200207183749-b753a1ba74fa" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200212091648-12a6c2dcc1e4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200212150539-ea181f53ac56", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.17.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200212174721-66ed5ce911ce", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.27.1", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.1-0.20191026205805-5f8ba28d4473", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20200130185559-910be7a94367", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20200130002326-2f3ba24bd6e7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200202094626-16171245cfb2", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200202164722-d101bd2416d5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200204074204-1cc6d1ef6c74", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200204135345-fa8e72b47b90", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.53.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.3.0", - "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.1.0", - "pkg:golang/cloud.google.com/go/storage@v1.5.0", - "pkg:golang/github.com/golang/groupcache@v0.0.0-20200121045136-8c9f03a8e57e", - "pkg:golang/github.com/golang/mock@v1.4.0", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20200212024743-f11f1df84d12", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/exp@v0.0.0-20200207192155-f17229e696bd", - "pkg:golang/golang.org/x/lint@v0.0.0-20200130185559-910be7a94367", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200202094626-16171245cfb2", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200212091648-12a6c2dcc1e4", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20200212150539-ea181f53ac56", - "pkg:golang/google.golang.org/api@v0.17.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200212174721-66ed5ce911ce", - "pkg:golang/google.golang.org/grpc@v1.27.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", - "dependsOn": [ - "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191107180719-034126e5016b", - "pkg:golang/golang.org/x/sys@v0.0.0-20191001151750-bb3f8db39f24", - "pkg:golang/golang.org/x/tools@v0.0.0-20200207183749-b753a1ba74fa", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200222125558-5a598a2470a0", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200223170610-d5e6a3e2c0ae", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200224181240-023911ca70b2", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.18.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200224152610-e50cd9704f63", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/rsc.io/quote/v3@v3.1.0", - "dependsOn": [ - "pkg:golang/rsc.io/sampler@v1.3.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.38.0", - "dependsOn": [ - "pkg:golang/github.com/golang/mock@v1.2.0", - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/github.com/google/btree@v0.0.0-20180813153112-4030bb1f1f0c", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20181206194817-3ea8567a2e57", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.4", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190301231843-5614ed5bae6f", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190226205417-e64efc72b421", - "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "pkg:golang/golang.org/x/text@v0.3.1-0.20180807135948-17ff2d5776d2", - "pkg:golang/golang.org/x/time@v0.0.0-20181108054448-85acf8d2951c", - "pkg:golang/golang.org/x/tools@v0.0.0-20190312170243-e65039ee4138", - "pkg:golang/google.golang.org/api@v0.4.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190418145605-e7d98fc518a7", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190106161140-3f1c8253044a" - ] - }, - { - "ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/go.opencensus.io@v0.21.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190307195333-5fe7a883aa19", - "pkg:golang/google.golang.org/grpc@v1.19.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.34.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e", - "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4", - "pkg:golang/google.golang.org/appengine@v1.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.5.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20180724234803-3673e40ba225", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/renameio@v0.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0", - "dependsOn": [ - "pkg:golang/gopkg.in/errgo.v2@v2.1.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.0.0-20190513183733-4bf6d317e70e", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190510104115-cbcb75029529" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191130070609-6e064ea0cf2d", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.7.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.56.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", - "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "pkg:golang/github.com/golang/protobuf@v1.4.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/net@v0.0.0-20200501053045-e0ff5e5a1de5", - "pkg:golang/golang.org/x/sys@v0.0.0-20200501052902-10377860bb8e", - "pkg:golang/golang.org/x/tools@v0.0.0-20200501065659-ab2804fb9c9d", - "pkg:golang/google.golang.org/api@v0.22.0", - "pkg:golang/google.golang.org/appengine@v1.6.6", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200430143042-b979b6f78d84", - "pkg:golang/google.golang.org/grpc@v1.29.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200506145744-7e3656a0809f", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200511232937-7e40ca221e25", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200512131952-2bc93b1c0c88", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200511104702-f5ebc3bea380", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.3.5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200229191704-1ebb73c60ed3", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200324143707-d3edc9973b7e", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.20.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/github.com/yuin/goldmark@v1.1.25", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.0", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.0", - "dependsOn": [ - "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.23.0" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.4.0.20200313231945-b860323f09d0", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/protobuf@v1.20.1-0.20200309200217-e05f789c0967" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.0.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.44.2", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/google.golang.org/api@v0.8.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64", - "pkg:golang/google.golang.org/grpc@v1.21.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.44.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/sys@v0.0.0-20190624142023-c5567b49c5d0", - "pkg:golang/google.golang.org/api@v0.7.0", - "pkg:golang/google.golang.org/appengine@v1.6.1", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64", - "pkg:golang/google.golang.org/grpc@v1.21.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/pubsub@v1.0.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.45.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "pkg:golang/google.golang.org/api@v0.9.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.21.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/storage@v1.0.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.46.3", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/google.golang.org/api@v0.9.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190911173649-1774047e7e51", - "pkg:golang/google.golang.org/grpc@v1.21.1" - ] - }, - { - "ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20191227052852-215e87163ea7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.3.1", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262" - ] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20191218002539-d4f498aebedc", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/go.opencensus.io@v0.22.2", - "dependsOn": [ - "pkg:golang/github.com/golang/groupcache@v0.0.0-20190702054246-869f871628b6", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/stretchr/testify@v1.4.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb", - "pkg:golang/google.golang.org/grpc@v1.20.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20191227195350-da58074b4299", - "dependsOn": [ - "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.0", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20191125180803-fdd1cda4f05f", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20191125144606-a911d9008d1f" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200114155413-6afb5195e5aa", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200113162924-86b910548bc1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200117161641-43d50277825c", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200115191322-ca5a22157cba", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3", - "dependsOn": [ - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/google/renameio@v0.1.0", - "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0", - "pkg:golang/golang.org/x/mod@v0.0.0-20190513183733-4bf6d317e70e", - "pkg:golang/golang.org/x/tools@v0.0.0-20190621195816-6e04913cbbac" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.50.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.0.1", - "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.0.1", - "pkg:golang/cloud.google.com/go/storage@v1.0.0", - "pkg:golang/github.com/golang/mock@v1.3.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20191129062945-2f5052295587", - "pkg:golang/golang.org/x/lint@v0.0.0-20191125180803-fdd1cda4f05f", - "pkg:golang/golang.org/x/net@v0.0.0-20190724013045-ca1201d0de80", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/sys@v0.0.0-20190726091711-fc99dfbffb4e", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20191216173652-a0e659d51361", - "pkg:golang/google.golang.org/api@v0.14.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20191216164720-4f79533eabd1", - "pkg:golang/google.golang.org/grpc@v1.21.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.3.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.46.3", - "pkg:golang/cloud.google.com/go/storage@v1.0.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/exp@v0.0.0-20191030013958-a1ab85dbe136", - "pkg:golang/golang.org/x/lint@v0.0.0-20190930215403-16217165b5de", - "pkg:golang/golang.org/x/tools@v0.0.0-20191113191852-77e3bb0ad9e7", - "pkg:golang/google.golang.org/api@v0.13.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20191108220845-16a3f7862a1a", - "pkg:golang/google.golang.org/grpc@v1.21.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/pubsub@v1.1.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.46.3", - "pkg:golang/cloud.google.com/go/storage@v1.0.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20191030013958-a1ab85dbe136", - "pkg:golang/golang.org/x/lint@v0.0.0-20190930215403-16217165b5de", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "pkg:golang/golang.org/x/tools@v0.0.0-20191115202509-3a792d9c32b2", - "pkg:golang/google.golang.org/api@v0.14.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20191115194625-c23dd37a84c9", - "pkg:golang/google.golang.org/grpc@v1.21.1" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.3.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20191209160850-c0dbc17a3553", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20191202225959-858c2ad4c8b6", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.34.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e", - "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4", - "pkg:golang/google.golang.org/appengine@v1.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191228213918-04cbcbbfeed8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191227053925-7b8e75db28f4", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191230161307-f3c370f40bfb", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "dependsOn": [ - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "dependsOn": [ - "pkg:golang/golang.org/x/exp@v0.0.0-20190306152737-a1d7652674e8", - "pkg:golang/golang.org/x/image@v0.0.0-20190227222117-0694c2d4d067", - "pkg:golang/golang.org/x/sys@v0.0.0-20190312061237-fead79001313" - ] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.1.0", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190510104115-cbcb75029529" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200207183749-b753a1ba74fa", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.4.0", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262", - "pkg:golang/rsc.io/quote/v3@v3.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200212024743-f11f1df84d12", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.1.1-0.20191107180719-034126e5016b", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191001151750-bb3f8db39f24", - "dependsOn": [] - }, - { - "ref": "pkg:golang/rsc.io/sampler@v1.3.0", - "dependsOn": [ - "pkg:golang/golang.org/x/text@v0.0.0-20170915032832-14c0d48ead0c" - ] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/btree@v0.0.0-20180813153112-4030bb1f1f0c", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20181206194817-3ea8567a2e57", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.4", - "dependsOn": [ - "pkg:golang/google.golang.org/grpc@v1.19.0" - ] - }, - { - "ref": "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190301231843-5614ed5bae6f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20190226205417-e64efc72b421", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.34.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e", - "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4", - "pkg:golang/google.golang.org/appengine@v1.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.1-0.20180807135948-17ff2d5776d2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/time@v0.0.0-20181108054448-85acf8d2951c", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190312170243-e65039ee4138", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.4.0", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190301231843-5614ed5bae6f", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190226205417-e64efc72b421", - "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "pkg:golang/golang.org/x/tools@v0.0.0-20190312170243-e65039ee4138", - "pkg:golang/google.golang.org/appengine@v1.4.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190307195333-5fe7a883aa19", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190418145605-e7d98fc518a7", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190106161140-3f1c8253044a", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190307195333-5fe7a883aa19", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/gopkg.in/errgo.v2@v2.1.0", - "dependsOn": [ - "pkg:golang/github.com/kr/pretty@v0.1.0", - "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127" - ] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190510104115-cbcb75029529", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.54.0", - "pkg:golang/cloud.google.com/go/bigquery@v1.5.0", - "pkg:golang/github.com/golang/protobuf@v1.3.4", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0", - "pkg:golang/golang.org/x/tools@v0.0.0-20200312045724-11d5b4c81c7d", - "pkg:golang/google.golang.org/api@v0.20.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200312145019-da6875a35672", - "pkg:golang/google.golang.org/grpc@v1.28.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.20.1-0.20200309200217-e05f789c0967", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.2", - "pkg:golang/github.com/google/go-cmp@v0.4.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.44.2", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "pkg:golang/github.com/golang/mock@v1.3.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/btree@v1.0.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190510132918-efd6b22b2522", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "pkg:golang/golang.org/x/tools@v0.0.0-20190628153133-6cdbf07be9d0", - "pkg:golang/google.golang.org/api@v0.8.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64", - "pkg:golang/google.golang.org/grpc@v1.21.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a", - "pkg:golang/rsc.io/binaryregexp@v0.2.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.8.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "pkg:golang/google.golang.org/grpc@v1.20.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.21.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.26.0", - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/client9/misspell@v0.3.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd", - "pkg:golang/google.golang.org/appengine@v1.1.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.44.1", - "dependsOn": [ - "pkg:golang/github.com/golang/mock@v1.3.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/btree@v1.0.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190510132918-efd6b22b2522", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190624142023-c5567b49c5d0", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "pkg:golang/golang.org/x/tools@v0.0.0-20190628153133-6cdbf07be9d0", - "pkg:golang/google.golang.org/api@v0.8.0", - "pkg:golang/google.golang.org/appengine@v1.6.1", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64", - "pkg:golang/google.golang.org/grpc@v1.21.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a", - "pkg:golang/rsc.io/binaryregexp@v0.2.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190624142023-c5567b49c5d0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.7.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "pkg:golang/google.golang.org/grpc@v1.20.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.6.1", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/golang.org/x/crypto@v0.0.0-20190605123033-f99c8df09eb5", - "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65", - "pkg:golang/golang.org/x/sys@v0.0.0-20190606165138-5da285871e9c", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190606124116-d0a3d012864b" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.45.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.0.1", - "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "pkg:golang/github.com/golang/mock@v1.3.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190510132918-efd6b22b2522", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "pkg:golang/golang.org/x/tools@v0.0.0-20190628153133-6cdbf07be9d0", - "pkg:golang/google.golang.org/api@v0.9.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.21.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/go.opencensus.io@v0.22.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/golang.org/x/net@v0.0.0-20190501004415-9ce7a6920f09", - "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb", - "pkg:golang/google.golang.org/grpc@v1.20.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.9.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "pkg:golang/google.golang.org/grpc@v1.20.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.46.3", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.0.1", - "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.0.1", - "pkg:golang/github.com/golang/mock@v1.3.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190829153037-c13cbed26979", - "pkg:golang/golang.org/x/lint@v0.0.0-20190909230951-414d861bb4ac", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190911174233-4f2ddba30aff", - "pkg:golang/google.golang.org/api@v0.9.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190911173649-1774047e7e51", - "pkg:golang/google.golang.org/grpc@v1.21.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190911173649-1774047e7e51", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191125144606-a911d9008d1f", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190621195816-6e04913cbbac", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - ] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20191129062945-2f5052295587", - "dependsOn": [ - "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.0", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190724013045-ca1201d0de80", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190726091711-fc99dfbffb4e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191216173652-a0e659d51361", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.14.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "pkg:golang/google.golang.org/grpc@v1.20.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191216164720-4f79533eabd1", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20191030013958-a1ab85dbe136", - "dependsOn": [ - "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.0", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190930215403-16217165b5de", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191113191852-77e3bb0ad9e7", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.13.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "pkg:golang/google.golang.org/grpc@v1.20.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191108220845-16a3f7862a1a", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191115202509-3a792d9c32b2", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191115194625-c23dd37a84c9", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190306152737-a1d7652674e8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/image@v0.0.0-20190227222117-0694c2d4d067", - "dependsOn": [ - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190312061237-fead79001313", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.0.0-20170915032832-14c0d48ead0c", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.54.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.4.0", - "pkg:golang/cloud.google.com/go/datastore@v1.1.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.2.0", - "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "pkg:golang/github.com/golang/mock@v1.4.1", - "pkg:golang/github.com/golang/protobuf@v1.3.4", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20200229191704-1ebb73c60ed3", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/net@v0.0.0-20200301022130-244492dfa37a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200302150141-5c8b2ff67527", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20200304193943-95d2e580d8eb", - "pkg:golang/google.golang.org/api@v0.20.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200305110556-506484158171", - "pkg:golang/google.golang.org/grpc@v1.27.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.5.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.53.0", - "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "pkg:golang/github.com/golang/protobuf@v1.3.4", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/tools@v0.0.0-20200227222343-706bc42d1f0d", - "pkg:golang/google.golang.org/api@v0.19.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200228133532-8c2c7df3a383", - "pkg:golang/google.golang.org/grpc@v1.27.1" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.3.4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200312045724-11d5b4c81c7d", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200312145019-da6875a35672", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.2", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/protobuf@v0.0.0-20200228230310-ab0ca4ff8a60" - ] - }, - { - "ref": "pkg:golang/github.com/google/btree@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190510132918-efd6b22b2522", - "dependsOn": [ - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/golang.org/x/image@v0.0.0-20190227222117-0694c2d4d067", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190312151609-d3739f865fa6", - "pkg:golang/golang.org/x/sys@v0.0.0-20190312061237-fead79001313", - "pkg:golang/golang.org/x/tools@v0.0.0-20190312151545-0bb0c0a6e846" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190628153133-6cdbf07be9d0", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - ] - }, - { - "ref": "pkg:golang/rsc.io/binaryregexp@v0.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190605123033-f99c8df09eb5", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190606165138-5da285871e9c", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190606124116-d0a3d012864b", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190501004415-9ce7a6920f09", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190829153037-c13cbed26979", - "dependsOn": [ - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.0", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "pkg:golang/golang.org/x/tools@v0.0.0-20190816200558-6889da9d5479" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190909230951-414d861bb4ac", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190911174233-4f2ddba30aff", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.4.1", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262", - "pkg:golang/rsc.io/quote/v3@v3.1.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200301022130-244492dfa37a", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200302150141-5c8b2ff67527", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200304193943-95d2e580d8eb", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200305110556-506484158171", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200227222343-706bc42d1f0d", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.19.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200228133532-8c2c7df3a383", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200228230310-ab0ca4ff8a60", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1.0.20200221234624-67d41d38c208", - "pkg:golang/github.com/google/go-cmp@v0.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/mobile@v0.0.0-20190312151609-d3739f865fa6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190312151545-0bb0c0a6e846", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190816200558-6889da9d5479", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1.0.20200221234624-67d41d38c208", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/protobuf@v0.0.0-20200221191635-4d8936d0db64" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200221191635-4d8936d0db64", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1", - "pkg:golang/github.com/google/go-cmp@v0.3.1" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.3.1", - "pkg:golang/google.golang.org/protobuf@v0.0.0-20200109180630-ec00e32a8dfd" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200109180630-ec00e32a8dfd", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.3.0" - ] - } - ] -} + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "group": "github.com/RHEcosystemAppEng/SaaSi", + "name": "deployer", + "version": "v0.0.0", + "purl": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", + "type": "application", + "bom-ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0" + } + }, + "components": [ + { + "group": "github.com/RHEcosystemAppEng/SaaSi", + "name": "deployer", + "version": "v0.0.0", + "purl": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", + "type": "application", + "bom-ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0" + }, + { + "group": "github.com/davecgh", + "name": "go-spew", + "version": "v1.1.1", + "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1" + }, + { + "group": "github.com/emicklei/go-restful", + "name": "v3", + "version": "v3.9.0", + "purl": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0" + }, + { + "group": "github.com/gin-gonic", + "name": "gin", + "version": "v1.9.1", + "purl": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1" + }, + { + "group": "github.com/go-logr", + "name": "logr", + "version": "v1.2.3", + "purl": "pkg:golang/github.com/go-logr/logr@v1.2.3", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-logr/logr@v1.2.3" + }, + { + "group": "github.com/go-openapi", + "name": "jsonpointer", + "version": "v0.19.5", + "purl": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5" + }, + { + "group": "github.com/go-openapi", + "name": "jsonreference", + "version": "v0.20.0", + "purl": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0" + }, + { + "group": "github.com/go-openapi", + "name": "swag", + "version": "v0.19.14", + "purl": "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14" + }, + { + "group": "github.com/gogo", + "name": "protobuf", + "version": "v1.3.2", + "purl": "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2" + }, + { + "group": "github.com/golang", + "name": "protobuf", + "version": "v1.5.2", + "purl": "pkg:golang/github.com/golang/protobuf@v1.5.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.2" + }, + { + "group": "github.com/google", + "name": "gnostic", + "version": "v0.5.7-v3refs", + "purl": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs" + }, + { + "group": "github.com/google", + "name": "go-cmp", + "version": "v0.5.9", + "purl": "pkg:golang/github.com/google/go-cmp@v0.5.9", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.9" + }, + { + "group": "github.com/google", + "name": "gofuzz", + "version": "v1.1.0", + "purl": "pkg:golang/github.com/google/gofuzz@v1.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/gofuzz@v1.1.0" + }, + { + "group": "github.com/google", + "name": "uuid", + "version": "v1.1.2", + "purl": "pkg:golang/github.com/google/uuid@v1.1.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/uuid@v1.1.2" + }, + { + "group": "github.com/imdario", + "name": "mergo", + "version": "v0.3.6", + "purl": "pkg:golang/github.com/imdario/mergo@v0.3.6", + "type": "library", + "bom-ref": "pkg:golang/github.com/imdario/mergo@v0.3.6" + }, + { + "group": "github.com/jessevdk", + "name": "go-flags", + "version": "v1.5.0", + "purl": "pkg:golang/github.com/jessevdk/go-flags@v1.5.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/jessevdk/go-flags@v1.5.0" + }, + { + "group": "github.com/josharian", + "name": "intern", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/josharian/intern@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/josharian/intern@v1.0.0" + }, + { + "group": "github.com/json-iterator", + "name": "go", + "version": "v1.1.12", + "purl": "pkg:golang/github.com/json-iterator/go@v1.1.12", + "type": "library", + "bom-ref": "pkg:golang/github.com/json-iterator/go@v1.1.12" + }, + { + "group": "github.com/kr", + "name": "pretty", + "version": "v0.3.1", + "purl": "pkg:golang/github.com/kr/pretty@v0.3.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/kr/pretty@v0.3.1" + }, + { + "group": "github.com/kr", + "name": "text", + "version": "v0.2.0", + "purl": "pkg:golang/github.com/kr/text@v0.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/kr/text@v0.2.0" + }, + { + "group": "github.com/mailru", + "name": "easyjson", + "version": "v0.7.6", + "purl": "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "type": "library", + "bom-ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6" + }, + { + "group": "github.com/modern-go", + "name": "concurrent", + "version": "v0.0.0-20180306012644-bacd9c7ef1dd", + "purl": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "type": "library", + "bom-ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" + }, + { + "group": "github.com/modern-go", + "name": "reflect2", + "version": "v1.0.2", + "purl": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2" + }, + { + "group": "github.com/munnerz", + "name": "goautoneg", + "version": "v0.0.0-20191010083416-a7dc8b61c822", + "purl": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "type": "library", + "bom-ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822" + }, + { + "group": "github.com/rogpeppe", + "name": "go-internal", + "version": "v1.9.0", + "purl": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" + }, + { + "group": "github.com/spf13", + "name": "pflag", + "version": "v1.0.5", + "purl": "pkg:golang/github.com/spf13/pflag@v1.0.5", + "type": "library", + "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.5" + }, + { + "group": "golang.org/x", + "name": "net", + "version": "v0.10.0", + "purl": "pkg:golang/golang.org/x/net@v0.10.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/net@v0.10.0" + }, + { + "group": "golang.org/x", + "name": "oauth2", + "version": "v0.0.0-20220223155221-ee480838109b", + "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b" + }, + { + "group": "golang.org/x", + "name": "sys", + "version": "v0.8.0", + "purl": "pkg:golang/golang.org/x/sys@v0.8.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/sys@v0.8.0" + }, + { + "group": "golang.org/x", + "name": "term", + "version": "v0.8.0", + "purl": "pkg:golang/golang.org/x/term@v0.8.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/term@v0.8.0" + }, + { + "group": "golang.org/x", + "name": "text", + "version": "v0.9.0", + "purl": "pkg:golang/golang.org/x/text@v0.9.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/text@v0.9.0" + }, + { + "group": "golang.org/x", + "name": "time", + "version": "v0.0.0-20220210224613-90d013bbcef8", + "purl": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8" + }, + { + "group": "google.golang.org", + "name": "appengine", + "version": "v1.6.7", + "purl": "pkg:golang/google.golang.org/appengine@v1.6.7", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.7" + }, + { + "group": "google.golang.org", + "name": "protobuf", + "version": "v1.30.0", + "purl": "pkg:golang/google.golang.org/protobuf@v1.30.0", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.30.0" + }, + { + "group": "gopkg.in", + "name": "inf.v0", + "version": "v0.9.1", + "purl": "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1" + }, + { + "group": "gopkg.in", + "name": "yaml.v2", + "version": "v2.4.0", + "purl": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0" + }, + { + "group": "gopkg.in", + "name": "yaml.v3", + "version": "v3.0.1", + "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1" + }, + { + "group": "k8s.io", + "name": "api", + "version": "v0.26.1", + "purl": "pkg:golang/k8s.io/api@v0.26.1", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/api@v0.26.1" + }, + { + "group": "k8s.io", + "name": "apimachinery", + "version": "v0.26.1", + "purl": "pkg:golang/k8s.io/apimachinery@v0.26.1", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/apimachinery@v0.26.1" + }, + { + "group": "k8s.io", + "name": "client-go", + "version": "v0.26.1", + "purl": "pkg:golang/k8s.io/client-go@v0.26.1", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/client-go@v0.26.1" + }, + { + "group": "k8s.io/klog", + "name": "v2", + "version": "v2.80.1", + "purl": "pkg:golang/k8s.io/klog/v2@v2.80.1", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/klog/v2@v2.80.1" + }, + { + "group": "k8s.io", + "name": "kube-openapi", + "version": "v0.0.0-20221012153701-172d655c2280", + "purl": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280" + }, + { + "group": "k8s.io", + "name": "utils", + "version": "v0.0.0-20221107191617-1a15be271d1d", + "purl": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d" + }, + { + "group": "sigs.k8s.io", + "name": "json", + "version": "v0.0.0-20220713155537-f223a00ba0e2", + "purl": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "type": "library", + "bom-ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2" + }, + { + "group": "sigs.k8s.io/structured-merge-diff", + "name": "v4", + "version": "v4.2.3", + "purl": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "type": "library", + "bom-ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3" + }, + { + "group": "sigs.k8s.io", + "name": "yaml", + "version": "v1.3.0", + "purl": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "type": "library", + "bom-ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0" + }, + { + "group": "github.com/bytedance", + "name": "sonic", + "version": "v1.9.1", + "purl": "pkg:golang/github.com/bytedance/sonic@v1.9.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/bytedance/sonic@v1.9.1" + }, + { + "group": "github.com/gin-contrib", + "name": "sse", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/gin-contrib/sse@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/gin-contrib/sse@v0.1.0" + }, + { + "group": "github.com/go-playground/validator", + "name": "v10", + "version": "v10.14.0", + "purl": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0" + }, + { + "group": "github.com/goccy", + "name": "go-json", + "version": "v0.10.2", + "purl": "pkg:golang/github.com/goccy/go-json@v0.10.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/goccy/go-json@v0.10.2" + }, + { + "group": "github.com/mattn", + "name": "go-isatty", + "version": "v0.0.19", + "purl": "pkg:golang/github.com/mattn/go-isatty@v0.0.19", + "type": "library", + "bom-ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.19" + }, + { + "group": "github.com/pelletier/go-toml", + "name": "v2", + "version": "v2.0.8", + "purl": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", + "type": "library", + "bom-ref": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8" + }, + { + "group": "github.com/stretchr", + "name": "testify", + "version": "v1.8.3", + "purl": "pkg:golang/github.com/stretchr/testify@v1.8.3", + "type": "library", + "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.8.3" + }, + { + "group": "github.com/ugorji/go", + "name": "codec", + "version": "v1.2.11", + "purl": "pkg:golang/github.com/ugorji/go/codec@v1.2.11", + "type": "library", + "bom-ref": "pkg:golang/github.com/ugorji/go/codec@v1.2.11" + }, + { + "group": "github.com/chenzhuoyu", + "name": "base64x", + "version": "v0.0.0-20221115062448-fe3a3abad311", + "purl": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", + "type": "library", + "bom-ref": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311" + }, + { + "group": "github.com/gabriel-vasile", + "name": "mimetype", + "version": "v1.4.2", + "purl": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2" + }, + { + "group": "github.com/go-playground", + "name": "locales", + "version": "v0.14.1", + "purl": "pkg:golang/github.com/go-playground/locales@v0.14.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-playground/locales@v0.14.1" + }, + { + "group": "github.com/go-playground", + "name": "universal-translator", + "version": "v0.18.1", + "purl": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1" + }, + { + "group": "github.com/klauspost/cpuid", + "name": "v2", + "version": "v2.2.4", + "purl": "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", + "type": "library", + "bom-ref": "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4" + }, + { + "group": "github.com/leodido", + "name": "go-urn", + "version": "v1.2.4", + "purl": "pkg:golang/github.com/leodido/go-urn@v1.2.4", + "type": "library", + "bom-ref": "pkg:golang/github.com/leodido/go-urn@v1.2.4" + }, + { + "group": "github.com/pmezard", + "name": "go-difflib", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0" + }, + { + "group": "github.com/twitchyliquid64", + "name": "golang-asm", + "version": "v0.15.1", + "purl": "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1" + }, + { + "group": "golang.org/x", + "name": "arch", + "version": "v0.3.0", + "purl": "pkg:golang/golang.org/x/arch@v0.3.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/arch@v0.3.0" + }, + { + "group": "golang.org/x", + "name": "crypto", + "version": "v0.9.0", + "purl": "pkg:golang/golang.org/x/crypto@v0.9.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/crypto@v0.9.0" + }, + { + "group": "github.com/niemeyer", + "name": "pretty", + "version": "v0.0.0-20200227124842-a10e7caefd8e", + "purl": "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", + "type": "library", + "bom-ref": "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e" + }, + { + "group": "gopkg.in", + "name": "check.v1", + "version": "v1.0.0-20200227125254-8fa46927fb4f", + "purl": "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" + }, + { + "group": "github.com/kisielk", + "name": "errcheck", + "version": "v1.5.0", + "purl": "pkg:golang/github.com/kisielk/errcheck@v1.5.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/kisielk/errcheck@v1.5.0" + }, + { + "group": "github.com/kisielk", + "name": "gotool", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/kisielk/gotool@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/kisielk/gotool@v1.0.0" + }, + { + "group": "golang.org/x", + "name": "tools", + "version": "v0.6.0", + "purl": "pkg:golang/golang.org/x/tools@v0.6.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/tools@v0.6.0" + }, + { + "group": "github.com/docopt", + "name": "docopt-go", + "version": "v0.0.0-20180111231733-ee0de3bc6815", + "purl": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", + "type": "library", + "bom-ref": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815" + }, + { + "group": "github.com/stoewer", + "name": "go-strcase", + "version": "v1.2.0", + "purl": "pkg:golang/github.com/stoewer/go-strcase@v1.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/stoewer/go-strcase@v1.2.0" + }, + { + "group": "golang.org/x", + "name": "xerrors", + "version": "v0.0.0-20200804184101-5ec99f83aff1", + "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + }, + { + "group": "google.golang.org", + "name": "genproto", + "version": "v0.0.0-20201019141844-1ed22bb0c154", + "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154" + }, + { + "group": "github.com/creack", + "name": "pty", + "version": "v1.1.9", + "purl": "pkg:golang/github.com/creack/pty@v1.1.9", + "type": "library", + "bom-ref": "pkg:golang/github.com/creack/pty@v1.1.9" + }, + { + "group": "github.com/pkg", + "name": "diff", + "version": "v0.0.0-20210226163009-20ebb0f2a09e", + "purl": "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e", + "type": "library", + "bom-ref": "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e" + }, + { + "group": "cloud.google.com", + "name": "go", + "version": "v0.65.0", + "purl": "pkg:golang/cloud.google.com/go@v0.65.0", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go@v0.65.0" + }, + { + "group": "golang.org/x", + "name": "mod", + "version": "v0.8.0", + "purl": "pkg:golang/golang.org/x/mod@v0.8.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/mod@v0.8.0" + }, + { + "group": "github.com/armon", + "name": "go-socks5", + "version": "v0.0.0-20160902184237-e75332964ef5", + "purl": "pkg:golang/github.com/armon/go-socks5@v0.0.0-20160902184237-e75332964ef5", + "type": "library", + "bom-ref": "pkg:golang/github.com/armon/go-socks5@v0.0.0-20160902184237-e75332964ef5" + }, + { + "group": "github.com/elazarl", + "name": "goproxy", + "version": "v0.0.0-20180725130230-947c36da3153", + "purl": "pkg:golang/github.com/elazarl/goproxy@v0.0.0-20180725130230-947c36da3153", + "type": "library", + "bom-ref": "pkg:golang/github.com/elazarl/goproxy@v0.0.0-20180725130230-947c36da3153" + }, + { + "group": "github.com/evanphx", + "name": "json-patch", + "version": "v4.12.0+incompatible", + "purl": "pkg:golang/github.com/evanphx/json-patch@v4.12.0%2Bincompatible", + "type": "library", + "bom-ref": "pkg:golang/github.com/evanphx/json-patch@v4.12.0%2Bincompatible" + }, + { + "group": "github.com/moby", + "name": "spdystream", + "version": "v0.2.0", + "purl": "pkg:golang/github.com/moby/spdystream@v0.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/moby/spdystream@v0.2.0" + }, + { + "group": "github.com/mxk", + "name": "go-flowrate", + "version": "v0.0.0-20140419014527-cca7078d478f", + "purl": "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f", + "type": "library", + "bom-ref": "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f" + }, + { + "group": "github.com/onsi/ginkgo", + "name": "v2", + "version": "v2.4.0", + "purl": "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0" + }, + { + "group": "github.com/onsi", + "name": "gomega", + "version": "v1.23.0", + "purl": "pkg:golang/github.com/onsi/gomega@v1.23.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/onsi/gomega@v1.23.0" + }, + { + "group": "github.com/pkg", + "name": "errors", + "version": "v0.9.1", + "purl": "pkg:golang/github.com/pkg/errors@v0.9.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/pkg/errors@v0.9.1" + }, + { + "group": "github.com/golang", + "name": "groupcache", + "version": "v0.0.0-20210331224755-41bb18bfe9da", + "purl": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "type": "library", + "bom-ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da" + }, + { + "group": "github.com/gregjones", + "name": "httpcache", + "version": "v0.0.0-20180305231024-9cad4c3443a7", + "purl": "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7", + "type": "library", + "bom-ref": "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7" + }, + { + "group": "github.com/peterbourgon", + "name": "diskv", + "version": "v2.0.1+incompatible", + "purl": "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible", + "type": "library", + "bom-ref": "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible" + }, + { + "group": "github.com/google", + "name": "btree", + "version": "v1.0.1", + "purl": "pkg:golang/github.com/google/btree@v1.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/btree@v1.0.1" + }, + { + "group": "github.com/NYTimes", + "name": "gziphandler", + "version": "v0.0.0-20170623195520-56545f4a5d46", + "purl": "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", + "type": "library", + "bom-ref": "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46" + }, + { + "group": "github.com/asaskevich", + "name": "govalidator", + "version": "v0.0.0-20190424111038-f61b66f89f4a", + "purl": "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a", + "type": "library", + "bom-ref": "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a" + }, + { + "group": "github.com/mitchellh", + "name": "mapstructure", + "version": "v1.1.2", + "purl": "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2" + }, + { + "group": "k8s.io", + "name": "gengo", + "version": "v0.0.0-20210813121822-485abfe95c7c", + "purl": "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c" + }, + { + "group": "github.com/PuerkitoBio", + "name": "purell", + "version": "v1.1.1", + "purl": "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1" + }, + { + "group": "github.com/PuerkitoBio", + "name": "urlesc", + "version": "v0.0.0-20170810143723-de5bf2ad4578", + "purl": "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578", + "type": "library", + "bom-ref": "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578" + }, + { + "group": "github.com/stretchr", + "name": "objx", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/stretchr/objx@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/stretchr/objx@v0.1.0" + }, + { + "group": "github.com/yuin", + "name": "goldmark", + "version": "v1.2.1", + "purl": "pkg:golang/github.com/yuin/goldmark@v1.2.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/yuin/goldmark@v1.2.1" + }, + { + "group": "golang.org/x", + "name": "sync", + "version": "v0.0.0-20201020160332-67f06af15bc9", + "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" + }, + { + "group": "golang.org/x", + "name": "lint", + "version": "v0.0.0-20200302205851-738671d3881b", + "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b" + }, + { + "group": "google.golang.org", + "name": "grpc", + "version": "v1.31.0", + "purl": "pkg:golang/google.golang.org/grpc@v1.31.0", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/grpc@v1.31.0" + }, + { + "group": "cloud.google.com/go", + "name": "storage", + "version": "v1.10.0", + "purl": "pkg:golang/cloud.google.com/go/storage@v1.10.0", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go/storage@v1.10.0" + }, + { + "group": "github.com/golang", + "name": "mock", + "version": "v1.4.4", + "purl": "pkg:golang/github.com/golang/mock@v1.4.4", + "type": "library", + "bom-ref": "pkg:golang/github.com/golang/mock@v1.4.4" + }, + { + "group": "github.com/google/martian", + "name": "v3", + "version": "v3.0.0", + "purl": "pkg:golang/github.com/google/martian/v3@v3.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/martian/v3@v3.0.0" + }, + { + "group": "github.com/google", + "name": "pprof", + "version": "v0.0.0-20200708004538-1a94d8640e99", + "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99" + }, + { + "group": "github.com/googleapis/gax-go", + "name": "v2", + "version": "v2.0.5", + "purl": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", + "type": "library", + "bom-ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5" + }, + { + "group": "github.com/jstemmer", + "name": "go-junit-report", + "version": "v0.9.1", + "purl": "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1" + }, + { + "name": "go.opencensus.io", + "version": "v0.22.4", + "purl": "pkg:golang/go.opencensus.io@v0.22.4", + "type": "library", + "bom-ref": "pkg:golang/go.opencensus.io@v0.22.4" + }, + { + "group": "google.golang.org", + "name": "api", + "version": "v0.30.0", + "purl": "pkg:golang/google.golang.org/api@v0.30.0", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/api@v0.30.0" + }, + { + "group": "github.com/kr", + "name": "pty", + "version": "v1.1.1", + "purl": "pkg:golang/github.com/kr/pty@v1.1.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/kr/pty@v1.1.1" + }, + { + "group": "github.com/envoyproxy", + "name": "go-control-plane", + "version": "v0.9.4", + "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", + "type": "library", + "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4" + }, + { + "group": "github.com/envoyproxy", + "name": "protoc-gen-validate", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0" + }, + { + "group": "github.com/golang", + "name": "glog", + "version": "v0.0.0-20160126235308-23def4e6c14b", + "purl": "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", + "type": "library", + "bom-ref": "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b" + }, + { + "group": "cloud.google.com/go", + "name": "bigquery", + "version": "v1.8.0", + "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.8.0" + }, + { + "group": "github.com/chzyer", + "name": "logex", + "version": "v1.1.10", + "purl": "pkg:golang/github.com/chzyer/logex@v1.1.10", + "type": "library", + "bom-ref": "pkg:golang/github.com/chzyer/logex@v1.1.10" + }, + { + "group": "github.com/chzyer", + "name": "readline", + "version": "v0.0.0-20180603132655-2972be24d48e", + "purl": "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", + "type": "library", + "bom-ref": "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e" + }, + { + "group": "github.com/chzyer", + "name": "test", + "version": "v0.0.0-20180213035817-a1ea475d72b1", + "purl": "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", + "type": "library", + "bom-ref": "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1" + }, + { + "group": "github.com/ianlancetaylor", + "name": "demangle", + "version": "v0.0.0-20181102032728-5e5cf60278f6", + "purl": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", + "type": "library", + "bom-ref": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6" + }, + { + "group": "github.com/cncf/udpa", + "name": "go", + "version": "v0.0.0-20191209042840-269d4d468f6f", + "purl": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", + "type": "library", + "bom-ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f" + }, + { + "group": "github.com/census-instrumentation", + "name": "opencensus-proto", + "version": "v0.2.1", + "purl": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1" + }, + { + "group": "github.com/prometheus", + "name": "client_model", + "version": "v0.0.0-20190812154241-14fe0d1b01d4", + "purl": "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", + "type": "library", + "bom-ref": "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4" + }, + { + "group": "golang.org/x", + "name": "exp", + "version": "v0.0.0-20200224162631-6cc2880d07d6", + "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6" + }, + { + "group": "honnef.co/go", + "name": "tools", + "version": "v0.0.1-2020.1.4", + "purl": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "type": "library", + "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4" + }, + { + "group": "cloud.google.com/go", + "name": "datastore", + "version": "v1.1.0", + "purl": "pkg:golang/cloud.google.com/go/datastore@v1.1.0", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go/datastore@v1.1.0" + }, + { + "group": "cloud.google.com/go", + "name": "pubsub", + "version": "v1.3.1", + "purl": "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go/pubsub@v1.3.1" + }, + { + "group": "github.com/google", + "name": "martian", + "version": "v2.1.0+incompatible", + "purl": "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible" + }, + { + "group": "github.com/BurntSushi", + "name": "toml", + "version": "v0.3.1", + "purl": "pkg:golang/github.com/BurntSushi/toml@v0.3.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/BurntSushi/toml@v0.3.1" + }, + { + "group": "github.com/client9", + "name": "misspell", + "version": "v0.3.4", + "purl": "pkg:golang/github.com/client9/misspell@v0.3.4", + "type": "library", + "bom-ref": "pkg:golang/github.com/client9/misspell@v0.3.4" + }, + { + "group": "rsc.io/quote", + "name": "v3", + "version": "v3.1.0", + "purl": "pkg:golang/rsc.io/quote/v3@v3.1.0", + "type": "library", + "bom-ref": "pkg:golang/rsc.io/quote/v3@v3.1.0" + }, + { + "group": "github.com/hashicorp", + "name": "golang-lru", + "version": "v0.5.1", + "purl": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1" + }, + { + "group": "github.com/google", + "name": "renameio", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/google/renameio@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/renameio@v0.1.0" + }, + { + "group": "dmitri.shuralyov.com/gpu", + "name": "mtl", + "version": "v0.0.0-20190408044501-666a987793e9", + "purl": "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", + "type": "library", + "bom-ref": "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9" + }, + { + "group": "github.com/BurntSushi", + "name": "xgb", + "version": "v0.0.0-20160522181843-27f122750802", + "purl": "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", + "type": "library", + "bom-ref": "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802" + }, + { + "group": "github.com/go-gl/glfw/v3.3", + "name": "glfw", + "version": "v0.0.0-20200222043503-6f7a984d4dc4", + "purl": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4" + }, + { + "group": "golang.org/x", + "name": "image", + "version": "v0.0.0-20190802002840-cff245a6509b", + "purl": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b" + }, + { + "group": "golang.org/x", + "name": "mobile", + "version": "v0.0.0-20190719004257-d2bd2a29d028", + "purl": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028" + }, + { + "group": "rsc.io", + "name": "sampler", + "version": "v1.3.0", + "purl": "pkg:golang/rsc.io/sampler@v1.3.0", + "type": "library", + "bom-ref": "pkg:golang/rsc.io/sampler@v1.3.0" + }, + { + "group": "gopkg.in", + "name": "errgo.v2", + "version": "v2.1.0", + "purl": "pkg:golang/gopkg.in/errgo.v2@v2.1.0", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/errgo.v2@v2.1.0" + }, + { + "group": "rsc.io", + "name": "binaryregexp", + "version": "v0.2.0", + "purl": "pkg:golang/rsc.io/binaryregexp@v0.2.0", + "type": "library", + "bom-ref": "pkg:golang/rsc.io/binaryregexp@v0.2.0" + }, + { + "group": "github.com/go-gl", + "name": "glfw", + "version": "v0.0.0-20190409004039-e6da0acd62b1", + "purl": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1" + } + ], + "dependencies": [ + { + "ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", + "pkg:golang/github.com/gin-gonic/gin@v1.9.1", + "pkg:golang/github.com/go-logr/logr@v1.2.3", + "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", + "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/google/uuid@v1.1.2", + "pkg:golang/github.com/imdario/mergo@v0.3.6", + "pkg:golang/github.com/jessevdk/go-flags@v1.5.0", + "pkg:golang/github.com/josharian/intern@v1.0.0", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/kr/pretty@v0.3.1", + "pkg:golang/github.com/kr/text@v0.2.0", + "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", + "pkg:golang/github.com/spf13/pflag@v1.0.5", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/term@v0.8.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/k8s.io/api@v0.26.1", + "pkg:golang/k8s.io/apimachinery@v0.26.1", + "pkg:golang/k8s.io/client-go@v0.26.1", + "pkg:golang/k8s.io/klog/v2@v2.80.1", + "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", + "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "pkg:golang/sigs.k8s.io/yaml@v1.3.0" + ] + }, + { + "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", + "dependsOn": [ + "pkg:golang/github.com/bytedance/sonic@v1.9.1", + "pkg:golang/github.com/gin-contrib/sse@v0.1.0", + "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", + "pkg:golang/github.com/goccy/go-json@v0.10.2", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/mattn/go-isatty@v0.0.19", + "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/github.com/ugorji/go/codec@v1.2.11", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", + "pkg:golang/github.com/go-playground/locales@v0.14.1", + "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", + "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", + "pkg:golang/github.com/leodido/go-urn@v1.2.4", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", + "pkg:golang/golang.org/x/arch@v0.3.0", + "pkg:golang/golang.org/x/crypto@v0.9.0", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/text@v0.9.0" + ] + }, + { + "ref": "pkg:golang/github.com/go-logr/logr@v1.2.3", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "dependsOn": [ + "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/stretchr/testify@v1.8.3" + ] + }, + { + "ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", + "dependsOn": [ + "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "pkg:golang/github.com/stretchr/testify@v1.8.3" + ] + }, + { + "ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/kr/text@v0.2.0", + "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/github.com/kr/pretty@v0.3.1" + ] + }, + { + "ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "dependsOn": [ + "pkg:golang/github.com/kisielk/errcheck@v1.5.0", + "pkg:golang/github.com/kisielk/gotool@v1.0.0", + "pkg:golang/golang.org/x/tools@v0.6.0" + ] + }, + { + "ref": "pkg:golang/github.com/golang/protobuf@v1.5.2", + "dependsOn": [ + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/google.golang.org/protobuf@v1.30.0" + ] + }, + { + "ref": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/kr/pretty@v0.3.1", + "pkg:golang/github.com/stoewer/go-strcase@v1.2.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1" + ] + }, + { + "ref": "pkg:golang/github.com/google/go-cmp@v0.5.9", + "dependsOn": [ + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + ] + }, + { + "ref": "pkg:golang/github.com/google/gofuzz@v1.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/google/uuid@v1.1.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/imdario/mergo@v0.3.6", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/jessevdk/go-flags@v1.5.0", + "dependsOn": [ + "pkg:golang/golang.org/x/sys@v0.8.0" + ] + }, + { + "ref": "pkg:golang/github.com/josharian/intern@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/json-iterator/go@v1.1.12", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/stretchr/testify@v1.8.3" + ] + }, + { + "ref": "pkg:golang/github.com/kr/pretty@v0.3.1", + "dependsOn": [ + "pkg:golang/github.com/kr/text@v0.2.0", + "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" + ] + }, + { + "ref": "pkg:golang/github.com/kr/text@v0.2.0", + "dependsOn": [ + "pkg:golang/github.com/creack/pty@v1.1.9", + "pkg:golang/github.com/kr/pty@v1.1.1" + ] + }, + { + "ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "dependsOn": [ + "pkg:golang/github.com/josharian/intern@v1.0.0" + ] + }, + { + "ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", + "dependsOn": [ + "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e", + "pkg:golang/gopkg.in/errgo.v2@v2.1.0" + ] + }, + { + "ref": "pkg:golang/github.com/spf13/pflag@v1.0.5", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/net@v0.10.0", + "dependsOn": [ + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/term@v0.8.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/crypto@v0.9.0" + ] + }, + { + "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.65.0", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" + ] + }, + { + "ref": "pkg:golang/golang.org/x/sys@v0.8.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/term@v0.8.0", + "dependsOn": [ + "pkg:golang/golang.org/x/sys@v0.8.0" + ] + }, + { + "ref": "pkg:golang/golang.org/x/text@v0.9.0", + "dependsOn": [ + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/golang.org/x/sys@v0.8.0" + ] + }, + { + "ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", + "dependsOn": [] + }, + { + "ref": "pkg:golang/google.golang.org/appengine@v1.6.7", + "dependsOn": [ + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/crypto@v0.9.0", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/tools@v0.6.0" + ] + }, + { + "ref": "pkg:golang/google.golang.org/protobuf@v1.30.0", + "dependsOn": [ + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154" + ] + }, + { + "ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "dependsOn": [ + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" + ] + }, + { + "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "dependsOn": [ + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" + ] + }, + { + "ref": "pkg:golang/k8s.io/api@v0.26.1", + "dependsOn": [ + "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/k8s.io/apimachinery@v0.26.1", + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/go-logr/logr@v1.2.3", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/github.com/spf13/pflag@v1.0.5", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/k8s.io/klog/v2@v2.80.1", + "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "pkg:golang/sigs.k8s.io/yaml@v1.3.0" + ] + }, + { + "ref": "pkg:golang/k8s.io/apimachinery@v0.26.1", + "dependsOn": [ + "pkg:golang/github.com/armon/go-socks5@v0.0.0-20160902184237-e75332964ef5", + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/elazarl/goproxy@v0.0.0-20180725130230-947c36da3153", + "pkg:golang/github.com/evanphx/json-patch@v4.12.0%2Bincompatible", + "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/google/uuid@v1.1.2", + "pkg:golang/github.com/moby/spdystream@v0.2.0", + "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f", + "pkg:golang/github.com/spf13/pflag@v1.0.5", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "pkg:golang/k8s.io/klog/v2@v2.80.1", + "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", + "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "pkg:golang/github.com/go-logr/logr@v1.2.3", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/kr/text@v0.2.0", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", + "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", + "pkg:golang/github.com/onsi/gomega@v1.23.0", + "pkg:golang/github.com/pkg/errors@v0.9.1", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1" + ] + }, + { + "ref": "pkg:golang/k8s.io/client-go@v0.26.1", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/evanphx/json-patch@v4.12.0%2Bincompatible", + "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/google/uuid@v1.1.2", + "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7", + "pkg:golang/github.com/imdario/mergo@v0.3.6", + "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible", + "pkg:golang/github.com/spf13/pflag@v1.0.5", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "pkg:golang/golang.org/x/term@v0.8.0", + "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/k8s.io/api@v0.26.1", + "pkg:golang/k8s.io/apimachinery@v0.26.1", + "pkg:golang/k8s.io/klog/v2@v2.80.1", + "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", + "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", + "pkg:golang/github.com/go-logr/logr@v1.2.3", + "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", + "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "pkg:golang/github.com/google/btree@v1.0.1", + "pkg:golang/github.com/josharian/intern@v1.0.0", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/moby/spdystream@v0.2.0", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "pkg:golang/github.com/pkg/errors@v0.9.1", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2" + ] + }, + { + "ref": "pkg:golang/k8s.io/klog/v2@v2.80.1", + "dependsOn": [ + "pkg:golang/github.com/go-logr/logr@v1.2.3" + ] + }, + { + "ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", + "dependsOn": [ + "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", + "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a", + "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", + "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", + "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/google/uuid@v1.1.2", + "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", + "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", + "pkg:golang/github.com/onsi/gomega@v1.23.0", + "pkg:golang/github.com/spf13/pflag@v1.0.5", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c", + "pkg:golang/k8s.io/klog/v2@v2.80.1", + "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1", + "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578", + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/go-logr/logr@v1.2.3", + "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + ] + }, + { + "ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/k8s.io/klog/v2@v2.80.1", + "pkg:golang/github.com/go-logr/logr@v1.2.3" + ] + }, + { + "ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "dependsOn": [ + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" + ] + }, + { + "ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0" + ] + }, + { + "ref": "pkg:golang/github.com/bytedance/sonic@v1.9.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/gin-contrib/sse@v0.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/goccy/go-json@v0.10.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.19", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/stretchr/testify@v1.8.3", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/github.com/stretchr/objx@v0.1.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0" + ] + }, + { + "ref": "pkg:golang/github.com/ugorji/go/codec@v1.2.11", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/go-playground/locales@v0.14.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/leodido/go-urn@v1.2.4", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/arch@v0.3.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/crypto@v0.9.0", + "dependsOn": [ + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/net@v0.10.0" + ] + }, + { + "ref": "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", + "dependsOn": [ + "pkg:golang/github.com/kr/text@v0.2.0" + ] + }, + { + "ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/kisielk/errcheck@v1.5.0", + "dependsOn": [ + "pkg:golang/golang.org/x/tools@v0.6.0" + ] + }, + { + "ref": "pkg:golang/github.com/kisielk/gotool@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/tools@v0.6.0", + "dependsOn": [ + "pkg:golang/github.com/yuin/goldmark@v1.2.1", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", + "pkg:golang/google.golang.org/appengine@v1.6.7" + ] + }, + { + "ref": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/stoewer/go-strcase@v1.2.0", + "dependsOn": [ + "pkg:golang/github.com/stretchr/testify@v1.8.3" + ] + }, + { + "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "dependsOn": [ + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/google.golang.org/grpc@v1.31.0", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" + ] + }, + { + "ref": "pkg:golang/github.com/creack/pty@v1.1.9", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e", + "dependsOn": [] + }, + { + "ref": "pkg:golang/cloud.google.com/go@v0.65.0", + "dependsOn": [ + "pkg:golang/cloud.google.com/go/storage@v1.10.0", + "pkg:golang/github.com/golang/mock@v1.4.4", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/google/martian/v3@v3.0.0", + "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", + "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", + "pkg:golang/go.opencensus.io@v0.22.4", + "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", + "pkg:golang/google.golang.org/api@v0.30.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/google.golang.org/grpc@v1.31.0", + "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", + "pkg:golang/cloud.google.com/go/datastore@v1.1.0", + "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", + "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", + "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/github.com/google/btree@v1.0.1", + "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", + "pkg:golang/rsc.io/binaryregexp@v0.2.0" + ] + }, + { + "ref": "pkg:golang/golang.org/x/mod@v0.8.0", + "dependsOn": [ + "pkg:golang/golang.org/x/crypto@v0.9.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + ] + }, + { + "ref": "pkg:golang/github.com/armon/go-socks5@v0.0.0-20160902184237-e75332964ef5", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/elazarl/goproxy@v0.0.0-20180725130230-947c36da3153", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/evanphx/json-patch@v4.12.0%2Bincompatible", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/moby/spdystream@v0.2.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/onsi/gomega@v1.23.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/pkg/errors@v0.9.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/google/btree@v1.0.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/stretchr/objx@v0.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/yuin/goldmark@v1.2.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", + "dependsOn": [ + "pkg:golang/golang.org/x/tools@v0.6.0" + ] + }, + { + "ref": "pkg:golang/google.golang.org/grpc@v1.31.0", + "dependsOn": [ + "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", + "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", + "pkg:golang/github.com/golang/mock@v1.4.4", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", + "pkg:golang/cloud.google.com/go@v0.65.0", + "pkg:golang/github.com/BurntSushi/toml@v0.3.1", + "pkg:golang/github.com/client9/misspell@v0.3.4", + "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", + "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4" + ] + }, + { + "ref": "pkg:golang/cloud.google.com/go/storage@v1.10.0", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.65.0", + "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/google.golang.org/api@v0.30.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/google.golang.org/grpc@v1.31.0", + "pkg:golang/cloud.google.com/go/datastore@v1.1.0", + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", + "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", + "pkg:golang/go.opencensus.io@v0.22.4", + "pkg:golang/google.golang.org/appengine@v1.6.7" + ] + }, + { + "ref": "pkg:golang/github.com/golang/mock@v1.4.4", + "dependsOn": [ + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/rsc.io/quote/v3@v3.1.0" + ] + }, + { + "ref": "pkg:golang/github.com/google/martian/v3@v3.0.0", + "dependsOn": [ + "pkg:golang/golang.org/x/net@v0.10.0" + ] + }, + { + "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99", + "dependsOn": [ + "pkg:golang/github.com/chzyer/logex@v1.1.10", + "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", + "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", + "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", + "pkg:golang/golang.org/x/sys@v0.8.0" + ] + }, + { + "ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", + "dependsOn": [ + "pkg:golang/google.golang.org/grpc@v1.31.0" + ] + }, + { + "ref": "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/go.opencensus.io@v0.22.4", + "dependsOn": [ + "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/google.golang.org/grpc@v1.31.0", + "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1" + ] + }, + { + "ref": "pkg:golang/google.golang.org/api@v0.30.0", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.65.0", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", + "pkg:golang/go.opencensus.io@v0.22.4", + "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/google.golang.org/grpc@v1.31.0", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2" + ] + }, + { + "ref": "pkg:golang/github.com/kr/pty@v1.1.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", + "dependsOn": [ + "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", + "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/google.golang.org/grpc@v1.31.0", + "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", + "pkg:golang/github.com/google/go-cmp@v0.5.9" + ] + }, + { + "ref": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", + "dependsOn": [] + }, + { + "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.65.0", + "pkg:golang/cloud.google.com/go/storage@v1.10.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/google.golang.org/api@v0.30.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/google.golang.org/grpc@v1.31.0", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b" + ] + }, + { + "ref": "pkg:golang/github.com/chzyer/logex@v1.1.10", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", + "dependsOn": [ + "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/google.golang.org/grpc@v1.31.0" + ] + }, + { + "ref": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", + "dependsOn": [ + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" + ] + }, + { + "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "dependsOn": [ + "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", + "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", + "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4", + "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", + "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", + "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1" + ] + }, + { + "ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "dependsOn": [ + "pkg:golang/github.com/BurntSushi/toml@v0.3.1", + "pkg:golang/github.com/google/renameio@v0.1.0", + "pkg:golang/github.com/kisielk/gotool@v1.0.0", + "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/golang.org/x/tools@v0.6.0" + ] + }, + { + "ref": "pkg:golang/cloud.google.com/go/datastore@v1.1.0", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.65.0", + "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/google.golang.org/api@v0.30.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/google.golang.org/grpc@v1.31.0", + "pkg:golang/google.golang.org/appengine@v1.6.7" + ] + }, + { + "ref": "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.65.0", + "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", + "pkg:golang/go.opencensus.io@v0.22.4", + "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/google.golang.org/api@v0.30.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/google.golang.org/grpc@v1.31.0", + "pkg:golang/cloud.google.com/go/storage@v1.10.0", + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6" + ] + }, + { + "ref": "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/BurntSushi/toml@v0.3.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/client9/misspell@v0.3.4", + "dependsOn": [] + }, + { + "ref": "pkg:golang/rsc.io/quote/v3@v3.1.0", + "dependsOn": [ + "pkg:golang/rsc.io/sampler@v1.3.0" + ] + }, + { + "ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/google/renameio@v0.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", + "dependsOn": [ + "pkg:golang/golang.org/x/text@v0.9.0" + ] + }, + { + "ref": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", + "dependsOn": [ + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", + "pkg:golang/golang.org/x/sys@v0.8.0" + ] + }, + { + "ref": "pkg:golang/rsc.io/sampler@v1.3.0", + "dependsOn": [ + "pkg:golang/golang.org/x/text@v0.9.0" + ] + }, + { + "ref": "pkg:golang/gopkg.in/errgo.v2@v2.1.0", + "dependsOn": [ + "pkg:golang/github.com/kr/pretty@v0.3.1", + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" + ] + }, + { + "ref": "pkg:golang/rsc.io/binaryregexp@v0.2.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", + "dependsOn": [] + } + ] +} \ No newline at end of file diff --git a/test/providers/tst_manifests/golang/go_mod_test_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/golang/go_mod_test_ignore/expected_sbom_stack_analysis.json index 6096c03e..84421b48 100644 --- a/test/providers/tst_manifests/golang/go_mod_test_ignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_test_ignore/expected_sbom_stack_analysis.json @@ -1,11329 +1,1671 @@ { - "bomFormat": "CycloneDX", - "specVersion": "1.4", - "version": 1, - "metadata": { - "timestamp": "2023-08-07T00:00:00.000Z", - "component": { - "group": "github.com/GoogleCloudPlatform/microservices-demo/src", - "name": "checkoutservice", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0" - } - }, - "components": [ - { - "group": "github.com/GoogleCloudPlatform/microservices-demo/src", - "name": "checkoutservice", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.100.2", - "purl": "pkg:golang/cloud.google.com/go@v0.100.2", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.100.2" - }, - { - "group": "cloud.google.com/go", - "name": "compute", - "version": "v1.6.1", - "purl": "pkg:golang/cloud.google.com/go/compute@v1.6.1", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/compute@v1.6.1" - }, - { - "group": "cloud.google.com/go", - "name": "monitoring", - "version": "v1.1.0", - "purl": "pkg:golang/cloud.google.com/go/monitoring@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/monitoring@v1.1.0" - }, - { - "group": "cloud.google.com/go", - "name": "profiler", - "version": "v0.3.0", - "purl": "pkg:golang/cloud.google.com/go/profiler@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/profiler@v0.3.0" - }, - { - "group": "cloud.google.com/go", - "name": "trace", - "version": "v1.0.0", - "purl": "pkg:golang/cloud.google.com/go/trace@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/trace@v1.0.0" - }, - { - "group": "contrib.go.opencensus.io/exporter", - "name": "jaeger", - "version": "v0.2.1", - "purl": "pkg:golang/contrib.go.opencensus.io/exporter/jaeger@v0.2.1", - "type": "library", - "bom-ref": "pkg:golang/contrib.go.opencensus.io/exporter/jaeger@v0.2.1" - }, - { - "group": "contrib.go.opencensus.io/exporter", - "name": "stackdriver", - "version": "v0.13.12", - "purl": "pkg:golang/contrib.go.opencensus.io/exporter/stackdriver@v0.13.12", - "type": "library", - "bom-ref": "pkg:golang/contrib.go.opencensus.io/exporter/stackdriver@v0.13.12" - }, - { - "group": "github.com/aws", - "name": "aws-sdk-go", - "version": "v1.43.31", - "purl": "pkg:golang/github.com/aws/aws-sdk-go@v1.43.31", - "type": "library", - "bom-ref": "pkg:golang/github.com/aws/aws-sdk-go@v1.43.31" - }, - { - "group": "github.com/census-instrumentation", - "name": "opencensus-proto", - "version": "v0.3.0", - "purl": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0" - }, - { - "group": "github.com/cespare", - "name": "xxhash", - "version": "v1.1.0", - "purl": "pkg:golang/github.com/cespare/xxhash@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/cespare/xxhash@v1.1.0" - }, - { - "group": "github.com/cncf/udpa", - "name": "go", - "version": "v0.0.0-20210930031921-04548b0d99d4", - "purl": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", - "type": "library", - "bom-ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4" - }, - { - "group": "github.com/cncf/xds", - "name": "go", - "version": "v0.0.0-20211011173535-cb28da3451f1", - "purl": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", - "type": "library", - "bom-ref": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1" - }, - { - "group": "github.com/envoyproxy", - "name": "go-control-plane", - "version": "v0.10.2-0.20220325020618-49ff273808a1", - "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1", - "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1" - }, - { - "group": "github.com/envoyproxy", - "name": "protoc-gen-validate", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0" - }, - { - "group": "github.com/golang", - "name": "groupcache", - "version": "v0.0.0-20210331224755-41bb18bfe9da", - "purl": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.5.2", - "purl": "pkg:golang/github.com/golang/protobuf@v1.5.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.2" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.8", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.8", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.8" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20220412212628-83db2b799d1f", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f" - }, - { - "group": "github.com/google", - "name": "uuid", - "version": "v1.3.0", - "purl": "pkg:golang/github.com/google/uuid@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/uuid@v1.3.0" - }, - { - "group": "github.com/googleapis/gax-go", - "name": "v2", - "version": "v2.4.0", - "purl": "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0" - }, - { - "group": "github.com/jmespath", - "name": "go-jmespath", - "version": "v0.4.0", - "purl": "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0" - }, - { - "group": "github.com/prometheus", - "name": "prometheus", - "version": "v2.5.0+incompatible", - "purl": "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible", - "type": "library", - "bom-ref": "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible" - }, - { - "group": "github.com/sirupsen", - "name": "logrus", - "version": "v1.8.1", - "purl": "pkg:golang/github.com/sirupsen/logrus@v1.8.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/sirupsen/logrus@v1.8.1" - }, - { - "group": "github.com/uber", - "name": "jaeger-client-go", - "version": "v2.25.0+incompatible", - "purl": "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible", - "type": "library", - "bom-ref": "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20220802222814-0bcc04d9c69b", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20220411215720-9780585627b5", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20210220032951-036812b2e83c", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.7", - "purl": "pkg:golang/golang.org/x/text@v0.3.7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.7" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.78.0", - "purl": "pkg:golang/google.golang.org/api@v0.78.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.78.0" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.6.7", - "purl": "pkg:golang/google.golang.org/appengine@v1.6.7", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.7" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20220518221133-4f43b3371335", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.48.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.48.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.48.0" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.28.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.28.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.28.0" - }, - { - "group": "cloud.google.com/go", - "name": "compute", - "version": "v0.1.0", - "purl": "pkg:golang/cloud.google.com/go/compute@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/compute@v0.1.0" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.6", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.6", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.6" - }, - { - "group": "github.com/google/martian", - "name": "v3", - "version": "v3.2.1", - "purl": "pkg:golang/github.com/google/martian/v3@v3.2.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/martian/v3@v3.2.1" - }, - { - "group": "github.com/googleapis/gax-go", - "name": "v2", - "version": "v2.1.1", - "purl": "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.1" - }, - { - "name": "go.opencensus.io", - "version": "v0.23.0", - "purl": "pkg:golang/go.opencensus.io@v0.23.0", - "type": "library", - "bom-ref": "pkg:golang/go.opencensus.io@v0.23.0" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20211104180415-d3ed0bb246c8", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20211104180415-d3ed0bb246c8", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20211104180415-d3ed0bb246c8" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20200804184101-5ec99f83aff1", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.63.0", - "purl": "pkg:golang/google.golang.org/api@v0.63.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.63.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20211221195035-429b39de9b1c", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20211221195035-429b39de9b1c", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20211221195035-429b39de9b1c" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.40.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.40.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.40.1" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.27.1", - "purl": "pkg:golang/google.golang.org/protobuf@v1.27.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.27.1" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.7", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.7", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.7" - }, - { - "group": "github.com/googleapis/gax-go", - "name": "v2", - "version": "v2.3.0", - "purl": "pkg:golang/github.com/googleapis/gax-go/v2@v2.3.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.3.0" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.75.0", - "purl": "pkg:golang/google.golang.org/api@v0.75.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.75.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20220421151946-72621c1f0bd3", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20220421151946-72621c1f0bd3", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220421151946-72621c1f0bd3" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.45.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.45.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.45.0" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.97.0", - "purl": "pkg:golang/cloud.google.com/go@v0.97.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.97.0" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.58.0", - "purl": "pkg:golang/google.golang.org/api@v0.58.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.58.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20211018162055-cf77aa76bad2", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20211018162055-cf77aa76bad2", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20211018162055-cf77aa76bad2" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.40.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.40.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.40.0" - }, - { - "group": "cloud.google.com/go", - "name": "storage", - "version": "v1.22.1", - "purl": "pkg:golang/cloud.google.com/go/storage@v1.22.1", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/storage@v1.22.1" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.6.0", - "purl": "pkg:golang/github.com/golang/mock@v1.6.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.6.0" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.46.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.46.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.46.0" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.94.1", - "purl": "pkg:golang/cloud.google.com/go@v0.94.1", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.94.1" - }, - { - "group": "github.com/googleapis/gax-go", - "name": "v2", - "version": "v2.1.0", - "purl": "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.0" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.57.0", - "purl": "pkg:golang/google.golang.org/api@v0.57.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.57.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210921142501-181ce0d877f6", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210921142501-181ce0d877f6", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210921142501-181ce0d877f6" - }, - { - "name": "go.opencensus.io", - "version": "v0.22.4", - "purl": "pkg:golang/go.opencensus.io@v0.22.4", - "type": "library", - "bom-ref": "pkg:golang/go.opencensus.io@v0.22.4" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20200625203802-6e8e738ad208", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.29.0", - "purl": "pkg:golang/google.golang.org/api@v0.29.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.29.0" - }, - { - "group": "github.com/aws", - "name": "aws-sdk-go", - "version": "v1.37.0", - "purl": "pkg:golang/github.com/aws/aws-sdk-go@v1.37.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/aws/aws-sdk-go@v1.37.0" - }, - { - "group": "github.com/jstemmer", - "name": "go-junit-report", - "version": "v0.9.1", - "purl": "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20210508222113-6edffad5e616", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20210503060351-7fd8e65b6420", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20210503060351-7fd8e65b6420", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20210503060351-7fd8e65b6420" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20211005180243-6b3c2da341f1", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20211005180243-6b3c2da341f1", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20211005180243-6b3c2da341f1" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.1.5", - "purl": "pkg:golang/golang.org/x/tools@v0.1.5", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.1.5" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.59.0", - "purl": "pkg:golang/google.golang.org/api@v0.59.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.59.0" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.1-2020.1.4", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4" - }, - { - "group": "github.com/pkg", - "name": "errors", - "version": "v0.9.1", - "purl": "pkg:golang/github.com/pkg/errors@v0.9.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/pkg/errors@v0.9.1" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20220127200216-cd36cc0744dd", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20220127200216-cd36cc0744dd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20220127200216-cd36cc0744dd" - }, - { - "group": "github.com/OneOfOne", - "name": "xxhash", - "version": "v1.2.2", - "purl": "pkg:golang/github.com/OneOfOne/xxhash@v1.2.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/OneOfOne/xxhash@v1.2.2" - }, - { - "group": "github.com/spaolacci", - "name": "murmur3", - "version": "v0.0.0-20180118202830-f09979ecbc72", - "purl": "pkg:golang/github.com/spaolacci/murmur3@v0.0.0-20180118202830-f09979ecbc72", - "type": "library", - "bom-ref": "pkg:golang/github.com/spaolacci/murmur3@v0.0.0-20180118202830-f09979ecbc72" - }, - { - "group": "github.com/cncf/xds", - "name": "go", - "version": "v0.0.0-20210922020428-25de7278fc84", - "purl": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20210922020428-25de7278fc84", - "type": "library", - "bom-ref": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20210922020428-25de7278fc84" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.3.2", - "purl": "pkg:golang/github.com/golang/protobuf@v1.3.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.3.2" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.25.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.25.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.25.1" - }, - { - "group": "github.com/census-instrumentation", - "name": "opencensus-proto", - "version": "v0.2.1", - "purl": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1" - }, - { - "group": "github.com/cncf/xds", - "name": "go", - "version": "v0.0.0-20211001041855-01bcc9b48dfe", - "purl": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211001041855-01bcc9b48dfe", - "type": "library", - "bom-ref": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211001041855-01bcc9b48dfe" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.5.0", - "purl": "pkg:golang/github.com/golang/protobuf@v1.5.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.0" - }, - { - "group": "github.com/prometheus", - "name": "client_model", - "version": "v0.0.0-20190812154241-14fe0d1b01d4", - "purl": "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "type": "library", - "bom-ref": "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.7.0", - "purl": "pkg:golang/github.com/stretchr/testify@v1.7.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.7.0" - }, - { - "group": "go.opentelemetry.io/proto", - "name": "otlp", - "version": "v0.7.0", - "purl": "pkg:golang/go.opentelemetry.io/proto/otlp@v0.7.0", - "type": "library", - "bom-ref": "pkg:golang/go.opentelemetry.io/proto/otlp@v0.7.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20201021035429-f5854403a974", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210119212857-b64e53b001e4", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210119212857-b64e53b001e4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210119212857-b64e53b001e4" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200526211855-cb27e3aa2013", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.36.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.36.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.36.0" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.5", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.5" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.26.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.26.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.26.0" - }, - { - "group": "github.com/chzyer", - "name": "logex", - "version": "v1.1.10", - "purl": "pkg:golang/github.com/chzyer/logex@v1.1.10", - "type": "library", - "bom-ref": "pkg:golang/github.com/chzyer/logex@v1.1.10" - }, - { - "group": "github.com/chzyer", - "name": "readline", - "version": "v0.0.0-20180603132655-2972be24d48e", - "purl": "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "type": "library", - "bom-ref": "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e" - }, - { - "group": "github.com/chzyer", - "name": "test", - "version": "v0.0.0-20180213035817-a1ea475d72b1", - "purl": "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "type": "library", - "bom-ref": "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1" - }, - { - "group": "github.com/ianlancetaylor", - "name": "demangle", - "version": "v0.0.0-20210905161508-09a460cdf81d", - "purl": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20210905161508-09a460cdf81d", - "type": "library", - "bom-ref": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20210905161508-09a460cdf81d" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20211007075335-d3039528d8ac", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20211007075335-d3039528d8ac", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20211007075335-d3039528d8ac" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20220505152158-f39f71e6c8f3", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20220505152158-f39f71e6c8f3", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220505152158-f39f71e6c8f3" - }, - { - "group": "github.com/jmespath/go-jmespath/internal", - "name": "testify", - "version": "v1.5.1", - "purl": "pkg:golang/github.com/jmespath/go-jmespath/internal/testify@v1.5.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/jmespath/go-jmespath/internal/testify@v1.5.1" - }, - { - "group": "github.com/davecgh", - "name": "go-spew", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1" - }, - { - "group": "github.com/pmezard", - "name": "go-difflib", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.2.2", - "purl": "pkg:golang/github.com/stretchr/testify@v1.2.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.2.2" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20191026070338-33540a1f6037", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20191026070338-33540a1f6037", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191026070338-33540a1f6037" - }, - { - "group": "golang.org/x", - "name": "term", - "version": "v0.0.0-20210927222741-03fcf44c2211", - "purl": "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.65.0", - "purl": "pkg:golang/cloud.google.com/go@v0.65.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.65.0" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.6.6", - "purl": "pkg:golang/google.golang.org/appengine@v1.6.6", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.6" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20180917221912-90fa682c2a6e", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20220425223048-2871e0cb64e4", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20220425223048-2871e0cb64e4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20220425223048-2871e0cb64e4" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20220502124256-b6088ccd6cba", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20220502124256-b6088ccd6cba", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20220502124256-b6088ccd6cba" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20220411194840-2f41105eb62f", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20220429170224-98d788798c3e", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20220429170224-98d788798c3e", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220429170224-98d788798c3e" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.3.1", - "purl": "pkg:golang/github.com/golang/protobuf@v1.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.3.1" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190603091049-60506f45cf65", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.2", - "purl": "pkg:golang/golang.org/x/text@v0.3.2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.2" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20210405180319-a5a99cb37ef4", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210510120138-977fb7262007", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.5", - "purl": "pkg:golang/golang.org/x/text@v0.3.5", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.5" - }, - { - "group": "github.com/cespare/xxhash", - "name": "v2", - "version": "v2.1.1", - "purl": "pkg:golang/github.com/cespare/xxhash/v2@v2.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/cespare/xxhash/v2@v2.1.1" - }, - { - "group": "github.com/golang", - "name": "glog", - "version": "v0.0.0-20160126235308-23def4e6c14b", - "purl": "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b" - }, - { - "group": "github.com/google", - "name": "uuid", - "version": "v1.1.2", - "purl": "pkg:golang/github.com/google/uuid@v1.1.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/uuid@v1.1.2" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20200107190931-bf48bf16ab8d", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20191204190536-9bdfabe68543", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - }, - { - "group": "github.com/golang", - "name": "snappy", - "version": "v0.0.3", - "purl": "pkg:golang/github.com/golang/snappy@v0.0.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/snappy@v0.0.3" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190628185345-da137c7871d7", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190628185345-da137c7871d7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190628185345-da137c7871d7" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.37.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.37.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.37.0" - }, - { - "group": "google.golang.org/grpc/cmd", - "name": "protoc-gen-go-grpc", - "version": "v1.1.0", - "purl": "pkg:golang/google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1.0" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.56.0", - "purl": "pkg:golang/google.golang.org/api@v0.56.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.56.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210909211513-a8c4777a87af", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210909211513-a8c4777a87af", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210909211513-a8c4777a87af" - }, - { - "group": "github.com/golang", - "name": "groupcache", - "version": "v0.0.0-20200121045136-8c9f03a8e57e", - "purl": "pkg:golang/github.com/golang/groupcache@v0.0.0-20200121045136-8c9f03a8e57e", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20200121045136-8c9f03a8e57e" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.3", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.3" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.3", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.3" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.6.1", - "purl": "pkg:golang/github.com/stretchr/testify@v1.6.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.6.1" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20201110031124-69a78807bb2b", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20201110031124-69a78807bb2b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20201110031124-69a78807bb2b" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.33.2", - "purl": "pkg:golang/google.golang.org/grpc@v1.33.2", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.33.2" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200822124328-c89045814202", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.99.0", - "purl": "pkg:golang/cloud.google.com/go@v0.99.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.99.0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20211210111614-af8b64212486", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20211210111614-af8b64212486", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20211210111614-af8b64212486" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20211208223120-3a66f561d7aa", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20211208223120-3a66f561d7aa", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20211208223120-3a66f561d7aa" - }, - { - "group": "github.com/cncf/udpa", - "name": "go", - "version": "v0.0.0-20201120205902-5459f2c99403", - "purl": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20201120205902-5459f2c99403", - "type": "library", - "bom-ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20201120205902-5459f2c99403" - }, - { - "group": "github.com/envoyproxy", - "name": "go-control-plane", - "version": "v0.9.9-0.20210512163311-63b5d3c536b0", - "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.9-0.20210512163311-63b5d3c536b0", - "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.9-0.20210512163311-63b5d3c536b0" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.0", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200323222414-85ca7c5b95cd", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.25.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.25.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.25.0" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.74.0", - "purl": "pkg:golang/google.golang.org/api@v0.74.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.74.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20220407144326-9054f6ed7bac", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20220407144326-9054f6ed7bac", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220407144326-9054f6ed7bac" - }, - { - "group": "cloud.google.com/go", - "name": "compute", - "version": "v1.6.0", - "purl": "pkg:golang/cloud.google.com/go/compute@v1.6.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/compute@v1.6.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20220412020605-290c469a71a5", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20220412020605-290c469a71a5", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20220412020605-290c469a71a5" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20220412211240-33da011f77ad", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20220412211240-33da011f77ad", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20220412211240-33da011f77ad" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20220414192740-2d67ff6cf2b4", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20220414192740-2d67ff6cf2b4", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220414192740-2d67ff6cf2b4" - }, - { - "group": "github.com/envoyproxy", - "name": "go-control-plane", - "version": "v0.9.10-0.20210907150352-cf90f659a021", - "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.10-0.20210907150352-cf90f659a021", - "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.10-0.20210907150352-cf90f659a021" - }, - { - "group": "cloud.google.com/go", - "name": "storage", - "version": "v1.10.0", - "purl": "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/storage@v1.10.0" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20210819190943-2bc19b11175f", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210819190943-2bc19b11175f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210819190943-2bc19b11175f" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210924002016-3dee208752a0", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210924002016-3dee208752a0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210924002016-3dee208752a0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210917161153-d61c044b1678", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210917161153-d61c044b1678", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210917161153-d61c044b1678" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210917145530-b395a37504d4", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210917145530-b395a37504d4", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210917145530-b395a37504d4" - }, - { - "group": "cloud.google.com/go", - "name": "iam", - "version": "v0.3.0", - "purl": "pkg:golang/cloud.google.com/go/iam@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/iam@v0.3.0" - }, - { - "group": "github.com/googleapis", - "name": "go-type-adapters", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/googleapis/go-type-adapters@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/googleapis/go-type-adapters@v1.0.0" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.4.2", - "purl": "pkg:golang/golang.org/x/mod@v0.4.2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.4.2" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.1.1", - "purl": "pkg:golang/golang.org/x/tools@v0.1.1", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.1.1" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.55.0", - "purl": "pkg:golang/google.golang.org/api@v0.55.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.55.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210831024726-fe130286e0e2", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210831024726-fe130286e0e2", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210831024726-fe130286e0e2" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.54.0", - "purl": "pkg:golang/google.golang.org/api@v0.54.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.54.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210821163610-241b8fcbd6c8", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210821163610-241b8fcbd6c8", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210821163610-241b8fcbd6c8" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210908233432-aa78b53d3365", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210908233432-aa78b53d3365", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210908233432-aa78b53d3365" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210903162649-d08c68adba83", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210903162649-d08c68adba83", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210903162649-d08c68adba83" - }, - { - "group": "github.com/golang", - "name": "groupcache", - "version": "v0.0.0-20190702054246-869f871628b6", - "purl": "pkg:golang/github.com/golang/groupcache@v0.0.0-20190702054246-869f871628b6", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20190702054246-869f871628b6" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.3.0", - "purl": "pkg:golang/github.com/google/go-cmp@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.3.0" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.4.0", - "purl": "pkg:golang/github.com/stretchr/testify@v1.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.4.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190620200207-3b0461eec859", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190502145724-3ef323f4f1fd", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190425155659-357c62f0e4bb", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.20.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.20.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.20.1" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.56.0", - "purl": "pkg:golang/cloud.google.com/go@v0.56.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.56.0" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.4.0", - "purl": "pkg:golang/github.com/google/go-cmp@v0.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.4.0" - }, - { - "group": "github.com/googleapis/gax-go", - "name": "v2", - "version": "v2.0.5", - "purl": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5" - }, - { - "name": "go.opencensus.io", - "version": "v0.22.3", - "purl": "pkg:golang/go.opencensus.io@v0.22.3", - "type": "library", - "bom-ref": "pkg:golang/go.opencensus.io@v0.22.3" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20200302205851-738671d3881b", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20200317015054-43a5402ce75a", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200331124033-c3d80250170d", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200331025713-a30bf2db82d4", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.6.5", - "purl": "pkg:golang/google.golang.org/appengine@v1.6.5", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.5" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200331122359-1ee6d9798940", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.28.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.28.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.28.0" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200130002326-2f3ba24bd6e7", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200130002326-2f3ba24bd6e7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200130002326-2f3ba24bd6e7" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210423082822-04245dca01da", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210423082822-04245dca01da", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210423082822-04245dca01da" - }, - { - "group": "golang.org/x", - "name": "term", - "version": "v0.0.0-20201126162022-7de9c90e9dd1", - "purl": "pkg:golang/golang.org/x/term@v0.0.0-20201126162022-7de9c90e9dd1", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/term@v0.0.0-20201126162022-7de9c90e9dd1" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.6", - "purl": "pkg:golang/golang.org/x/text@v0.3.6", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.6" - }, - { - "group": "github.com/yuin", - "name": "goldmark", - "version": "v1.3.5", - "purl": "pkg:golang/github.com/yuin/goldmark@v1.3.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/yuin/goldmark@v1.3.5" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20211008145708-270636b82663", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20211008145708-270636b82663", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20211008145708-270636b82663" - }, - { - "group": "github.com/BurntSushi", - "name": "toml", - "version": "v0.3.1", - "purl": "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/BurntSushi/toml@v0.3.1" - }, - { - "group": "github.com/google", - "name": "renameio", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/google/renameio@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/renameio@v0.1.0" - }, - { - "group": "github.com/kisielk", - "name": "gotool", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kisielk/gotool@v1.0.0" - }, - { - "group": "github.com/rogpeppe", - "name": "go-internal", - "version": "v1.3.0", - "purl": "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.0.0-20190513183733-4bf6d317e70e", - "purl": "pkg:golang/golang.org/x/mod@v0.0.0-20190513183733-4bf6d317e70e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.0.0-20190513183733-4bf6d317e70e" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191130070609-6e064ea0cf2d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191130070609-6e064ea0cf2d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191130070609-6e064ea0cf2d" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20211216021012-1d35b9e2eb4e", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20211216021012-1d35b9e2eb4e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20211216021012-1d35b9e2eb4e" - }, - { - "group": "github.com/envoyproxy", - "name": "go-control-plane", - "version": "v0.9.0", - "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.0" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/golang/mock@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.1.1" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/google/go-cmp@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.2.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190311183353-d8887717615a", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20180821212333-d2e6202438be", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190215142949-d0b11bdaac8a", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190819201941-24fa4b261c55", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.26.0-rc.1", - "purl": "pkg:golang/google.golang.org/protobuf@v1.26.0-rc.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.26.0-rc.1" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.2.0", - "purl": "pkg:golang/github.com/golang/protobuf@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.2.0" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20181108010431-42b317875d0f", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20181108010431-42b317875d0f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20181108010431-42b317875d0f" - }, - { - "group": "github.com/davecgh", - "name": "go-spew", - "version": "v1.1.0", - "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.0" - }, - { - "group": "github.com/stretchr", - "name": "objx", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/stretchr/objx@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/objx@v0.1.0" - }, - { - "group": "gopkg.in", - "name": "yaml.v3", - "version": "v3.0.0-20200313102051-9f266ea9e77c", - "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c" - }, - { - "group": "github.com/grpc-ecosystem", - "name": "grpc-gateway", - "version": "v1.16.0", - "purl": "pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v1.16.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v1.16.0" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20200622213623-75b288015ac9", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200930185726-fdedc70b468f", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.3", - "purl": "pkg:golang/golang.org/x/text@v0.3.3", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.3" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.1", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.1" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20190313153728-d0100b6bd8b3", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190524140312-2c0ae7006135", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.27.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.27.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.27.0" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.23.1-0.20200526195155-81db48ad09cc", - "purl": "pkg:golang/google.golang.org/protobuf@v1.23.1-0.20200526195155-81db48ad09cc", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.23.1-0.20200526195155-81db48ad09cc" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.0-20190523083050-ea95bdfd59fc", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - }, - { - "group": "github.com/envoyproxy", - "name": "go-control-plane", - "version": "v0.9.9-0.20201210154907-fd9021fe5dad", - "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.9-0.20201210154907-fd9021fe5dad", - "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.9-0.20201210154907-fd9021fe5dad" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.2", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.2" - }, - { - "group": "gopkg.in", - "name": "yaml.v2", - "version": "v2.2.8", - "purl": "pkg:golang/gopkg.in/yaml.v2@v2.2.8", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.8" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210615035016-665e8c7367d1", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210615035016-665e8c7367d1", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210615035016-665e8c7367d1" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.4.4", - "purl": "pkg:golang/github.com/golang/mock@v1.4.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.4.4" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.1", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.1" - }, - { - "group": "github.com/google/martian", - "name": "v3", - "version": "v3.0.0", - "purl": "pkg:golang/github.com/google/martian/v3@v3.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/martian/v3@v3.0.0" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20200708004538-1a94d8640e99", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200825202427-b303f430e36d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200825202427-b303f430e36d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200825202427-b303f430e36d" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.30.0", - "purl": "pkg:golang/google.golang.org/api@v0.30.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.30.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200825200019-8632dd797987", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200825200019-8632dd797987", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200825200019-8632dd797987" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.31.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.31.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.31.0" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20190308221718-c2843e01d9a2", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.0", - "purl": "pkg:golang/golang.org/x/text@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210330210617-4fbd30eecc44", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210330210617-4fbd30eecc44", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210330210617-4fbd30eecc44" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.34.0", - "purl": "pkg:golang/cloud.google.com/go@v0.34.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.34.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190108225652-1e06a53dbb7e", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20181221193216-37e7f081c4d4", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.4.0", - "purl": "pkg:golang/google.golang.org/appengine@v1.4.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.4.0" - }, - { - "group": "github.com/envoyproxy", - "name": "go-control-plane", - "version": "v0.9.9-0.20210217033140-668b12f5399d", - "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.9-0.20210217033140-668b12f5399d", - "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.9-0.20210217033140-668b12f5399d" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.23.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.23.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.23.0" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.93.3", - "purl": "pkg:golang/cloud.google.com/go@v0.93.3", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.93.3" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210823070655-63515b42dcdf", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210823070655-63515b42dcdf", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210823070655-63515b42dcdf" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210828152312-66f60bf46e71", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210828152312-66f60bf46e71", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210828152312-66f60bf46e71" - }, - { - "group": "github.com/cncf/udpa", - "name": "go", - "version": "v0.0.0-20191209042840-269d4d468f6f", - "purl": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "type": "library", - "bom-ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f" - }, - { - "group": "github.com/envoyproxy", - "name": "go-control-plane", - "version": "v0.9.4", - "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.61.0", - "purl": "pkg:golang/google.golang.org/api@v0.61.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.61.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20211206160659-862468c7d6e0", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20211206160659-862468c7d6e0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20211206160659-862468c7d6e0" - }, - { - "group": "github.com/cncf/xds", - "name": "go", - "version": "v0.0.0-20210312221358-fbca930ec8ed", - "purl": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20210312221358-fbca930ec8ed", - "type": "library", - "bom-ref": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20210312221358-fbca930ec8ed" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.5.1", - "purl": "pkg:golang/github.com/stretchr/testify@v1.5.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.5.1" - }, - { - "group": "cloud.google.com/go", - "name": "compute", - "version": "v1.5.0", - "purl": "pkg:golang/cloud.google.com/go/compute@v1.5.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/compute@v1.5.0" - }, - { - "group": "github.com/googleapis/gax-go", - "name": "v2", - "version": "v2.2.0", - "purl": "pkg:golang/github.com/googleapis/gax-go/v2@v2.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.2.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20220325170049-de3da57026de", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20220325170049-de3da57026de", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20220325170049-de3da57026de" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20220309155454-6242fa91716a", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220309155454-6242fa91716a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220309155454-6242fa91716a" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20220328115105-d36c6a25d886", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20220328115105-d36c6a25d886", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20220328115105-d36c6a25d886" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20220324131243-acbaeb5b85eb", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20220324131243-acbaeb5b85eb", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220324131243-acbaeb5b85eb" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20220413183235-5e96e2839df9", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20220413183235-5e96e2839df9", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220413183235-5e96e2839df9" - }, - { - "group": "github.com/cncf/xds", - "name": "go", - "version": "v0.0.0-20210805033703-aa0b78936158", - "purl": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20210805033703-aa0b78936158", - "type": "library", - "bom-ref": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20210805033703-aa0b78936158" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.57.0", - "purl": "pkg:golang/cloud.google.com/go@v0.57.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.57.0" - }, - { - "group": "cloud.google.com/go", - "name": "bigquery", - "version": "v1.8.0", - "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.8.0" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.4.1", - "purl": "pkg:golang/github.com/google/go-cmp@v0.4.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.4.1" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200520182314-0ba52f642ac2", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200520182314-0ba52f642ac2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200520182314-0ba52f642ac2" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200523222454-059865788121", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200523222454-059865788121", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200523222454-059865788121" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200618134242-20370b0cb4b2", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200618134242-20370b0cb4b2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200618134242-20370b0cb4b2" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.28.0", - "purl": "pkg:golang/google.golang.org/api@v0.28.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.28.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200618031413-b414f8b61790", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200618031413-b414f8b61790", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200618031413-b414f8b61790" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.29.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.29.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.29.1" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.70.0", - "purl": "pkg:golang/google.golang.org/api@v0.70.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.70.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20220222213610-43724f9ea8cf", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20220222213610-43724f9ea8cf", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220222213610-43724f9ea8cf" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.44.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.44.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.44.0" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.5.1", - "purl": "pkg:golang/github.com/golang/protobuf@v1.5.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.1" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210329143202-679c6ae281ee", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210329143202-679c6ae281ee", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210329143202-679c6ae281ee" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20191011191535-87dc89f01550", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191119224855-298f0cb1881e", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20191011141410-1b5146add898", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.90.0", - "purl": "pkg:golang/cloud.google.com/go@v0.90.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.90.0" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20210805134026-6f1e6394065a", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210805134026-6f1e6394065a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210805134026-6f1e6394065a" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210806184541-e5e7981a1069", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210806184541-e5e7981a1069", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210806184541-e5e7981a1069" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210805201207-89edb61ffb67", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210805201207-89edb61ffb67", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210805201207-89edb61ffb67" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.39.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.39.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.39.1" - }, - { - "group": "gopkg.in", - "name": "yaml.v2", - "version": "v2.2.2", - "purl": "pkg:golang/gopkg.in/yaml.v2@v2.2.2", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.2" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20190121172915-509febef88a4", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20190227174305-5b3e6a55c961", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190213061140-3a22650c66bd", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20190227155943-e225da77a7e6", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190226205152-f727befe758c", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.19.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.19.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.19.0" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.0-20190102054323-c2f93a96b099", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.26.0", - "purl": "pkg:golang/cloud.google.com/go@v0.26.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.26.0" - }, - { - "group": "github.com/client9", - "name": "misspell", - "version": "v0.3.4", - "purl": "pkg:golang/github.com/client9/misspell@v0.3.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/client9/misspell@v0.3.4" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20180314180146-1d60e4601c6f", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190311212946-11955173bddd", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.1.0", - "purl": "pkg:golang/google.golang.org/appengine@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.1.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20180817151627-c66870c02cf8", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8" - }, - { - "group": "cloud.google.com/go", - "name": "bigquery", - "version": "v1.4.0", - "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.4.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.4.0" - }, - { - "group": "cloud.google.com/go", - "name": "datastore", - "version": "v1.1.0", - "purl": "pkg:golang/cloud.google.com/go/datastore@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/datastore@v1.1.0" - }, - { - "group": "cloud.google.com/go", - "name": "pubsub", - "version": "v1.2.0", - "purl": "pkg:golang/cloud.google.com/go/pubsub@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/pubsub@v1.2.0" - }, - { - "group": "cloud.google.com/go", - "name": "storage", - "version": "v1.6.0", - "purl": "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/storage@v1.6.0" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.4.3", - "purl": "pkg:golang/github.com/golang/mock@v1.4.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.4.3" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.3.5", - "purl": "pkg:golang/github.com/golang/protobuf@v1.3.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.3.5" - }, - { - "group": "github.com/google", - "name": "martian", - "version": "v2.1.0+incompatible", - "purl": "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20200229191704-1ebb73c60ed3", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20200229191704-1ebb73c60ed3", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200229191704-1ebb73c60ed3" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200324143707-d3edc9973b7e", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200324143707-d3edc9973b7e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200324143707-d3edc9973b7e" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.20.0", - "purl": "pkg:golang/google.golang.org/api@v0.20.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.20.0" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.1-2020.1.3", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - }, - { - "group": "github.com/yuin", - "name": "goldmark", - "version": "v1.1.25", - "purl": "pkg:golang/github.com/yuin/goldmark@v1.1.25", - "type": "library", - "bom-ref": "pkg:golang/github.com/yuin/goldmark@v1.1.25" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.2.0", - "purl": "pkg:golang/golang.org/x/mod@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.2.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200226121028-0de0cce0169b", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20190911185100-cd5d95a43a6e", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.3.3", - "purl": "pkg:golang/github.com/golang/protobuf@v1.3.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.3.3" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.1.1-0.20191105210325-c90efee705ee", - "purl": "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20190423024810-112230192c58", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20201119102817-f84b799fce68", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20201119102817-f84b799fce68", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20201119102817-f84b799fce68" - }, - { - "group": "gopkg.in", - "name": "errgo.v2", - "version": "v2.1.0", - "purl": "pkg:golang/gopkg.in/errgo.v2@v2.1.0", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/errgo.v2@v2.1.0" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20190510104115-cbcb75029529", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20190510104115-cbcb75029529", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190510104115-cbcb75029529" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20190717185122-a985d3407aa7", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.23.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.23.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.23.0" - }, - { - "group": "gopkg.in", - "name": "check.v1", - "version": "v0.0.0-20161208181325-20d25e280405", - "purl": "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - }, - { - "group": "github.com/antihax", - "name": "optional", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/antihax/optional@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/antihax/optional@v1.0.0" - }, - { - "group": "github.com/ghodss", - "name": "yaml", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/ghodss/yaml@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/ghodss/yaml@v1.0.0" - }, - { - "group": "github.com/rogpeppe", - "name": "fastuuid", - "version": "v1.2.0", - "purl": "pkg:golang/github.com/rogpeppe/fastuuid@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/rogpeppe/fastuuid@v1.2.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200513103714-09dca8ec2884", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200513103714-09dca8ec2884", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200513103714-09dca8ec2884" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.33.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.33.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.33.1" - }, - { - "group": "gopkg.in", - "name": "yaml.v2", - "version": "v2.2.3", - "purl": "pkg:golang/gopkg.in/yaml.v2@v2.2.3", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.3" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190404232315-eb5bcb51f2a3", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190412213103-97732733099d", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.22.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.22.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.22.0" - }, - { - "group": "github.com/envoyproxy", - "name": "go-control-plane", - "version": "v0.9.1-0.20191026205805-5f8ba28d4473", - "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.1-0.20191026205805-5f8ba28d4473", - "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.1-0.20191026205805-5f8ba28d4473" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.0", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.0" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190425150028-36563e24a262", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262" - }, - { - "group": "github.com/ianlancetaylor", - "name": "demangle", - "version": "v0.0.0-20181102032728-5e5cf60278f6", - "purl": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "type": "library", - "bom-ref": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20191204072324-ce4227a45e2e", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - }, - { - "group": "github.com/yuin", - "name": "goldmark", - "version": "v1.1.32", - "purl": "pkg:golang/github.com/yuin/goldmark@v1.1.32", - "type": "library", - "bom-ref": "pkg:golang/github.com/yuin/goldmark@v1.1.32" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.3.0", - "purl": "pkg:golang/golang.org/x/mod@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.3.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200625001655-4c5254603344", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200625001655-4c5254603344", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200625001655-4c5254603344" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.62.0", - "purl": "pkg:golang/cloud.google.com/go@v0.62.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.62.0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200803210538-64077c9b5642", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200803210538-64077c9b5642", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200803210538-64077c9b5642" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200804011535-6c149bb5ef0d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200804011535-6c149bb5ef0d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200804011535-6c149bb5ef0d" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200804131852-c06518451d9c", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200804131852-c06518451d9c", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200804131852-c06518451d9c" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.24.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.24.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.24.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20180724234803-3673e40ba225", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20180724234803-3673e40ba225", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20180724234803-3673e40ba225" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210813162853-db860fec028c", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210813162853-db860fec028c", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210813162853-db860fec028c" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20211124211545-fe61309f8881", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20211124211545-fe61309f8881", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20211124211545-fe61309f8881" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20211118181313-81c1377c94b1", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20211118181313-81c1377c94b1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20211118181313-81c1377c94b1" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.71.0", - "purl": "pkg:golang/google.golang.org/api@v0.71.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.71.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20220310185008-1973136f34c6", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20220310185008-1973136f34c6", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220310185008-1973136f34c6" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20200430221834-fc25d7d30c6d", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20200430221834-fc25d7d30c6d", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200430221834-fc25d7d30c6d" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200501053045-e0ff5e5a1de5", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200501053045-e0ff5e5a1de5", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200501053045-e0ff5e5a1de5" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200501052902-10377860bb8e", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200501052902-10377860bb8e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200501052902-10377860bb8e" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200501065659-ab2804fb9c9d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200501065659-ab2804fb9c9d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200501065659-ab2804fb9c9d" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.22.0", - "purl": "pkg:golang/google.golang.org/api@v0.22.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.22.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200430143042-b979b6f78d84", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200430143042-b979b6f78d84", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200430143042-b979b6f78d84" - }, - { - "group": "cloud.google.com/go", - "name": "storage", - "version": "v1.8.0", - "purl": "pkg:golang/cloud.google.com/go/storage@v1.8.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/storage@v1.8.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200513185701-a91f0712d120", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200513185701-a91f0712d120", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200513185701-a91f0712d120" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200515095857-1151b9dac4a9", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200515095857-1151b9dac4a9", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200515095857-1151b9dac4a9" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200515010526-7d3b6ebf133d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200515010526-7d3b6ebf133d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200515010526-7d3b6ebf133d" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.24.0", - "purl": "pkg:golang/google.golang.org/api@v0.24.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.24.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200515170657-fc4c6c6a6587", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200515170657-fc4c6c6a6587", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200515170657-fc4c6c6a6587" - }, - { - "group": "github.com/yuin", - "name": "goldmark", - "version": "v1.1.27", - "purl": "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "type": "library", - "bom-ref": "pkg:golang/github.com/yuin/goldmark@v1.1.27" - }, - { - "group": "cloud.google.com/go", - "name": "compute", - "version": "v1.3.0", - "purl": "pkg:golang/cloud.google.com/go/compute@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/compute@v1.3.0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20220209214540-3681064d5158", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20220209214540-3681064d5158", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20220209214540-3681064d5158" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20220218161850-94dd64e39d7c", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20220218161850-94dd64e39d7c", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220218161850-94dd64e39d7c" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20201208152925-83fdc39ff7b5", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20201208152925-83fdc39ff7b5", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20201208152925-83fdc39ff7b5" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20210316092652-d523dce5a7f4", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20210316092652-d523dce5a7f4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20210316092652-d523dce5a7f4" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210320140829-1e4c9ba3b0c4", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210320140829-1e4c9ba3b0c4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210320140829-1e4c9ba3b0c4" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.1.0", - "purl": "pkg:golang/golang.org/x/tools@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.1.0" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.36.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.36.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.36.1" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20210720184732-4bb14d4b1be1", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20210720184732-4bb14d4b1be1", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20210720184732-4bb14d4b1be1" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20210628180205-a41e5a781914", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210628180205-a41e5a781914", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210628180205-a41e5a781914" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.51.0", - "purl": "pkg:golang/google.golang.org/api@v0.51.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.51.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210728212813-7823e685a01f", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210728212813-7823e685a01f", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210728212813-7823e685a01f" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.39.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.39.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.39.0" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20181026193005-c67002cb31c3", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20181026193005-c67002cb31c3", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20181026193005-c67002cb31c3" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20180826012351-8a410e7b638d", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20180826012351-8a410e7b638d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20180826012351-8a410e7b638d" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20180830151530-49385e6e1522", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20180830151530-49385e6e1522", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20180830151530-49385e6e1522" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190114222345-bf090417da8b", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190114222345-bf090417da8b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190114222345-bf090417da8b" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.52.0", - "purl": "pkg:golang/cloud.google.com/go@v0.52.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.52.0" - }, - { - "group": "cloud.google.com/go", - "name": "storage", - "version": "v1.5.0", - "purl": "pkg:golang/cloud.google.com/go/storage@v1.5.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/storage@v1.5.0" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20200119233911-0405dc783f0a", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20200119233911-0405dc783f0a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200119233911-0405dc783f0a" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200122134326-e047566fdf82", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200122134326-e047566fdf82", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200122134326-e047566fdf82" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200122220014-bf1340f18c4a", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200122220014-bf1340f18c4a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200122220014-bf1340f18c4a" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.15.0", - "purl": "pkg:golang/google.golang.org/api@v0.15.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.15.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200122232147-0452cf42e150", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200122232147-0452cf42e150", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200122232147-0452cf42e150" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.26.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.26.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.26.0" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20200207192155-f17229e696bd", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20200207192155-f17229e696bd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200207192155-f17229e696bd" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200212091648-12a6c2dcc1e4", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200212091648-12a6c2dcc1e4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200212091648-12a6c2dcc1e4" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200212150539-ea181f53ac56", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200212150539-ea181f53ac56", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200212150539-ea181f53ac56" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.17.0", - "purl": "pkg:golang/google.golang.org/api@v0.17.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.17.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200212174721-66ed5ce911ce", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200212174721-66ed5ce911ce", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200212174721-66ed5ce911ce" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.27.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.27.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.27.1" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20200130185559-910be7a94367", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20200130185559-910be7a94367", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20200130185559-910be7a94367" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200202094626-16171245cfb2", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200202094626-16171245cfb2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200202094626-16171245cfb2" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200202164722-d101bd2416d5", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200202164722-d101bd2416d5", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200202164722-d101bd2416d5" - }, - { - "group": "golang.org/x", - "name": "time", - "version": "v0.0.0-20191024005414-555d28b269f0", - "purl": "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200204074204-1cc6d1ef6c74", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200204074204-1cc6d1ef6c74", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200204074204-1cc6d1ef6c74" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200204135345-fa8e72b47b90", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200204135345-fa8e72b47b90", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200204135345-fa8e72b47b90" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.53.0", - "purl": "pkg:golang/cloud.google.com/go@v0.53.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.53.0" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20200224162631-6cc2880d07d6", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200222125558-5a598a2470a0", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200222125558-5a598a2470a0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200222125558-5a598a2470a0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200223170610-d5e6a3e2c0ae", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200223170610-d5e6a3e2c0ae", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200223170610-d5e6a3e2c0ae" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200224181240-023911ca70b2", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200224181240-023911ca70b2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200224181240-023911ca70b2" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.18.0", - "purl": "pkg:golang/google.golang.org/api@v0.18.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.18.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200224152610-e50cd9704f63", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200224152610-e50cd9704f63", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200224152610-e50cd9704f63" - }, - { - "group": "rsc.io/quote", - "name": "v3", - "version": "v3.1.0", - "purl": "pkg:golang/rsc.io/quote/v3@v3.1.0", - "type": "library", - "bom-ref": "pkg:golang/rsc.io/quote/v3@v3.1.0" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.38.0", - "purl": "pkg:golang/cloud.google.com/go@v0.38.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.38.0" - }, - { - "group": "github.com/hashicorp", - "name": "golang-lru", - "version": "v0.5.1", - "purl": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1" - }, - { - "name": "go.opencensus.io", - "version": "v0.21.0", - "purl": "pkg:golang/go.opencensus.io@v0.21.0", - "type": "library", - "bom-ref": "pkg:golang/go.opencensus.io@v0.21.0" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20190409202823-959b441ac422", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190503192946-f4e77d36d62c", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20190604053449-0f29369cfe45", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190507160741-ecd444e8653b", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.5.0", - "purl": "pkg:golang/google.golang.org/appengine@v1.5.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.5.0" - }, - { - "group": "github.com/kr", - "name": "pretty", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/kr/pretty@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/pretty@v0.1.0" - }, - { - "group": "gopkg.in", - "name": "check.v1", - "version": "v1.0.0-20180628173108-788fd7840127", - "purl": "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.21.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.21.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.21.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200707034311-ab3426394381", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200707034311-ab3426394381", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200707034311-ab3426394381" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200729194436-6467de6f59a7", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200729194436-6467de6f59a7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200729194436-6467de6f59a7" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200729003335-053ba62fc06f", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200729003335-053ba62fc06f", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200729003335-053ba62fc06f" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.30.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.30.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.30.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20220225172249-27dd8689420f", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20220223155221-ee480838109b", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20220227234510-4e6760a101f9", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20220227234510-4e6760a101f9", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20220227234510-4e6760a101f9" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20220304144024-325a89244dc8", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20220304144024-325a89244dc8", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220304144024-325a89244dc8" - }, - { - "group": "cloud.google.com/go", - "name": "bigquery", - "version": "v1.7.0", - "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.7.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.7.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200506145744-7e3656a0809f", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200506145744-7e3656a0809f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200506145744-7e3656a0809f" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200511232937-7e40ca221e25", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200511232937-7e40ca221e25", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200511232937-7e40ca221e25" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200512131952-2bc93b1c0c88", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200512131952-2bc93b1c0c88", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200512131952-2bc93b1c0c88" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200511104702-f5ebc3bea380", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200511104702-f5ebc3bea380", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200511104702-f5ebc3bea380" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.67.0", - "purl": "pkg:golang/google.golang.org/api@v0.67.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.67.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20220207164111-0872dc986b00", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20220207164111-0872dc986b00", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220207164111-0872dc986b00" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210315160823-c6e025ad8005", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210315160823-c6e025ad8005", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210315160823-c6e025ad8005" - }, - { - "group": "github.com/yuin", - "name": "goldmark", - "version": "v1.2.1", - "purl": "pkg:golang/github.com/yuin/goldmark@v1.2.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/yuin/goldmark@v1.2.1" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20201020160332-67f06af15bc9", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" - }, - { - "group": "github.com/ianlancetaylor", - "name": "demangle", - "version": "v0.0.0-20200824232613-28f6c0f3b639", - "purl": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20200824232613-28f6c0f3b639", - "type": "library", - "bom-ref": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20200824232613-28f6c0f3b639" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.87.0", - "purl": "pkg:golang/cloud.google.com/go@v0.87.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.87.0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210630005230-0f9fa26af87c", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210630005230-0f9fa26af87c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210630005230-0f9fa26af87c" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210716133855-ce7ef5c701ea", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210716133855-ce7ef5c701ea", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210716133855-ce7ef5c701ea" - }, - { - "group": "cloud.google.com/go", - "name": "bigquery", - "version": "v1.0.1", - "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.0.1", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.0.1" - }, - { - "group": "cloud.google.com/go", - "name": "datastore", - "version": "v1.0.0", - "purl": "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/datastore@v1.0.0" - }, - { - "group": "cloud.google.com/go", - "name": "pubsub", - "version": "v1.0.1", - "purl": "pkg:golang/cloud.google.com/go/pubsub@v1.0.1", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/pubsub@v1.0.1" - }, - { - "group": "cloud.google.com/go", - "name": "storage", - "version": "v1.0.0", - "purl": "pkg:golang/cloud.google.com/go/storage@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/storage@v1.0.0" - }, - { - "group": "github.com/golang", - "name": "groupcache", - "version": "v0.0.0-20191227052852-215e87163ea7", - "purl": "pkg:golang/github.com/golang/groupcache@v0.0.0-20191227052852-215e87163ea7", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20191227052852-215e87163ea7" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.3.1", - "purl": "pkg:golang/github.com/golang/mock@v1.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.3.1" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20191218002539-d4f498aebedc", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20191218002539-d4f498aebedc", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20191218002539-d4f498aebedc" - }, - { - "name": "go.opencensus.io", - "version": "v0.22.2", - "purl": "pkg:golang/go.opencensus.io@v0.22.2", - "type": "library", - "bom-ref": "pkg:golang/go.opencensus.io@v0.22.2" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20191227195350-da58074b4299", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20191227195350-da58074b4299", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20191227195350-da58074b4299" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20191125180803-fdd1cda4f05f", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20191125180803-fdd1cda4f05f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20191125180803-fdd1cda4f05f" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200114155413-6afb5195e5aa", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200114155413-6afb5195e5aa", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200114155413-6afb5195e5aa" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200113162924-86b910548bc1", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200113162924-86b910548bc1", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200113162924-86b910548bc1" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200117161641-43d50277825c", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200117161641-43d50277825c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200117161641-43d50277825c" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200115191322-ca5a22157cba", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200115191322-ca5a22157cba", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200115191322-ca5a22157cba" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.1-2019.2.3", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.50.0", - "purl": "pkg:golang/cloud.google.com/go@v0.50.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.50.0" - }, - { - "group": "cloud.google.com/go", - "name": "bigquery", - "version": "v1.3.0", - "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.3.0" - }, - { - "group": "cloud.google.com/go", - "name": "pubsub", - "version": "v1.1.0", - "purl": "pkg:golang/cloud.google.com/go/pubsub@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/pubsub@v1.1.0" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.3.1", - "purl": "pkg:golang/github.com/google/go-cmp@v0.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.3.1" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20191209160850-c0dbc17a3553", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20191209160850-c0dbc17a3553", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20191209160850-c0dbc17a3553" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20191202225959-858c2ad4c8b6", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20191202225959-858c2ad4c8b6", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20191202225959-858c2ad4c8b6" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20191228213918-04cbcbbfeed8", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20191228213918-04cbcbbfeed8", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191228213918-04cbcbbfeed8" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191227053925-7b8e75db28f4", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191227053925-7b8e75db28f4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191227053925-7b8e75db28f4" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20191230161307-f3c370f40bfb", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20191230161307-f3c370f40bfb", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191230161307-f3c370f40bfb" - }, - { - "group": "dmitri.shuralyov.com/gpu", - "name": "mtl", - "version": "v0.0.0-20190408044501-666a987793e9", - "purl": "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "type": "library", - "bom-ref": "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9" - }, - { - "group": "github.com/BurntSushi", - "name": "xgb", - "version": "v0.0.0-20160522181843-27f122750802", - "purl": "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "type": "library", - "bom-ref": "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802" - }, - { - "group": "github.com/go-gl/glfw/v3.3", - "name": "glfw", - "version": "v0.0.0-20191125211704-12ad95a8df72", - "purl": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72" - }, - { - "group": "golang.org/x", - "name": "image", - "version": "v0.0.0-20190802002840-cff245a6509b", - "purl": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b" - }, - { - "group": "golang.org/x", - "name": "mobile", - "version": "v0.0.0-20190719004257-d2bd2a29d028", - "purl": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.1.0", - "purl": "pkg:golang/golang.org/x/mod@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.1.0" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191012152004-8de300cfc20a", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190506145303-2d16b83fe98c", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190502173448-54afdca5d873", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.0-20190418001031-e561f6794a2a", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200207183749-b753a1ba74fa", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200207183749-b753a1ba74fa", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200207183749-b753a1ba74fa" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.4.0", - "purl": "pkg:golang/github.com/golang/mock@v1.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.4.0" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20200212024743-f11f1df84d12", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20200212024743-f11f1df84d12", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200212024743-f11f1df84d12" - }, - { - "group": "github.com/go-gl/glfw/v3.3", - "name": "glfw", - "version": "v0.0.0-20200222043503-6f7a984d4dc4", - "purl": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.1.1-0.20191107180719-034126e5016b", - "purl": "pkg:golang/golang.org/x/mod@v0.1.1-0.20191107180719-034126e5016b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.1.1-0.20191107180719-034126e5016b" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20191001151750-bb3f8db39f24", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20191001151750-bb3f8db39f24", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191001151750-bb3f8db39f24" - }, - { - "group": "rsc.io", - "name": "sampler", - "version": "v1.3.0", - "purl": "pkg:golang/rsc.io/sampler@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/rsc.io/sampler@v1.3.0" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.2.0", - "purl": "pkg:golang/github.com/golang/mock@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.2.0" - }, - { - "group": "github.com/google", - "name": "btree", - "version": "v0.0.0-20180813153112-4030bb1f1f0c", - "purl": "pkg:golang/github.com/google/btree@v0.0.0-20180813153112-4030bb1f1f0c", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/btree@v0.0.0-20180813153112-4030bb1f1f0c" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20181206194817-3ea8567a2e57", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20181206194817-3ea8567a2e57", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20181206194817-3ea8567a2e57" - }, - { - "group": "github.com/googleapis/gax-go", - "name": "v2", - "version": "v2.0.4", - "purl": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.4" - }, - { - "group": "github.com/jstemmer", - "name": "go-junit-report", - "version": "v0.0.0-20190106144839-af01ea7f8024", - "purl": "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "type": "library", - "bom-ref": "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20190301231843-5614ed5bae6f", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20190301231843-5614ed5bae6f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190301231843-5614ed5bae6f" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20190226205417-e64efc72b421", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20190226205417-e64efc72b421", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20190226205417-e64efc72b421" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.1-0.20180807135948-17ff2d5776d2", - "purl": "pkg:golang/golang.org/x/text@v0.3.1-0.20180807135948-17ff2d5776d2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.1-0.20180807135948-17ff2d5776d2" - }, - { - "group": "golang.org/x", - "name": "time", - "version": "v0.0.0-20181108054448-85acf8d2951c", - "purl": "pkg:golang/golang.org/x/time@v0.0.0-20181108054448-85acf8d2951c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20181108054448-85acf8d2951c" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190312170243-e65039ee4138", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190312170243-e65039ee4138", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190312170243-e65039ee4138" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.4.0", - "purl": "pkg:golang/google.golang.org/api@v0.4.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.4.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190418145605-e7d98fc518a7", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190418145605-e7d98fc518a7", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190418145605-e7d98fc518a7" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.0-20190106161140-3f1c8253044a", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.0-20190106161140-3f1c8253044a", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190106161140-3f1c8253044a" - }, - { - "group": "github.com/hashicorp", - "name": "golang-lru", - "version": "v0.5.0", - "purl": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190307195333-5fe7a883aa19", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190307195333-5fe7a883aa19", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190307195333-5fe7a883aa19" - }, - { - "group": "github.com/kr", - "name": "text", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/kr/text@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/text@v0.1.0" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.0-rc.4.0.20200313231945-b860323f09d0", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.4.0.20200313231945-b860323f09d0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.4.0.20200313231945-b860323f09d0" - }, - { - "group": "cloud.google.com/go", - "name": "pubsub", - "version": "v1.3.1", - "purl": "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/pubsub@v1.3.1" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20220128215802-99c3d69c2c27", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20220128215802-99c3d69c2c27", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20220128215802-99c3d69c2c27" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20220126215142-9970aeb2e350", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20220126215142-9970aeb2e350", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220126215142-9970aeb2e350" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20210609004039-a478d1d731e9", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20210609004039-a478d1d731e9", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20210609004039-a478d1d731e9" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.1.4", - "purl": "pkg:golang/golang.org/x/tools@v0.1.4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.1.4" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.50.0", - "purl": "pkg:golang/google.golang.org/api@v0.50.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.50.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210713002101-d411969a0d9a", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210713002101-d411969a0d9a", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210713002101-d411969a0d9a" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.44.2", - "purl": "pkg:golang/cloud.google.com/go@v0.44.2", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.44.2" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.8.0", - "purl": "pkg:golang/google.golang.org/api@v0.8.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.8.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190801165951-fa694d86fc64", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.21.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.21.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.21.1" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.44.1", - "purl": "pkg:golang/cloud.google.com/go@v0.44.1", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.44.1" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190624142023-c5567b49c5d0", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190624142023-c5567b49c5d0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190624142023-c5567b49c5d0" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.7.0", - "purl": "pkg:golang/google.golang.org/api@v0.7.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.7.0" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.6.1", - "purl": "pkg:golang/google.golang.org/appengine@v1.6.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.1" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.45.1", - "purl": "pkg:golang/cloud.google.com/go@v0.45.1", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.45.1" - }, - { - "name": "go.opencensus.io", - "version": "v0.22.0", - "purl": "pkg:golang/go.opencensus.io@v0.22.0", - "type": "library", - "bom-ref": "pkg:golang/go.opencensus.io@v0.22.0" - }, - { - "group": "golang.org/x", - "name": "time", - "version": "v0.0.0-20190308202827-9d24e82272b4", - "purl": "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.9.0", - "purl": "pkg:golang/google.golang.org/api@v0.9.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.9.0" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.46.3", - "purl": "pkg:golang/cloud.google.com/go@v0.46.3", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.46.3" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190911173649-1774047e7e51", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190911173649-1774047e7e51", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190911173649-1774047e7e51" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191125144606-a911d9008d1f", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191125144606-a911d9008d1f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191125144606-a911d9008d1f" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190621195816-6e04913cbbac", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190621195816-6e04913cbbac", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190621195816-6e04913cbbac" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20190515194954-54271f7e092f", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20191129062945-2f5052295587", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20191129062945-2f5052295587", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20191129062945-2f5052295587" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190724013045-ca1201d0de80", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190724013045-ca1201d0de80", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190724013045-ca1201d0de80" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190726091711-fc99dfbffb4e", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190726091711-fc99dfbffb4e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190726091711-fc99dfbffb4e" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191216173652-a0e659d51361", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191216173652-a0e659d51361", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191216173652-a0e659d51361" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.14.0", - "purl": "pkg:golang/google.golang.org/api@v0.14.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.14.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20191216164720-4f79533eabd1", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20191216164720-4f79533eabd1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191216164720-4f79533eabd1" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20191030013958-a1ab85dbe136", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20191030013958-a1ab85dbe136", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20191030013958-a1ab85dbe136" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20190930215403-16217165b5de", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20190930215403-16217165b5de", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190930215403-16217165b5de" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191113191852-77e3bb0ad9e7", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191113191852-77e3bb0ad9e7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191113191852-77e3bb0ad9e7" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.13.0", - "purl": "pkg:golang/google.golang.org/api@v0.13.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.13.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20191108220845-16a3f7862a1a", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20191108220845-16a3f7862a1a", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191108220845-16a3f7862a1a" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191115202509-3a792d9c32b2", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191115202509-3a792d9c32b2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191115202509-3a792d9c32b2" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20191115194625-c23dd37a84c9", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20191115194625-c23dd37a84c9", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191115194625-c23dd37a84c9" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20190306152737-a1d7652674e8", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20190306152737-a1d7652674e8", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190306152737-a1d7652674e8" - }, - { - "group": "golang.org/x", - "name": "image", - "version": "v0.0.0-20190227222117-0694c2d4d067", - "purl": "pkg:golang/golang.org/x/image@v0.0.0-20190227222117-0694c2d4d067", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/image@v0.0.0-20190227222117-0694c2d4d067" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190312061237-fead79001313", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190312061237-fead79001313", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190312061237-fead79001313" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.0.0-20170915032832-14c0d48ead0c", - "purl": "pkg:golang/golang.org/x/text@v0.0.0-20170915032832-14c0d48ead0c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.0.0-20170915032832-14c0d48ead0c" - }, - { - "group": "github.com/kr", - "name": "pty", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/kr/pty@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/pty@v1.1.1" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.20.1-0.20200309200217-e05f789c0967", - "purl": "pkg:golang/google.golang.org/protobuf@v1.20.1-0.20200309200217-e05f789c0967", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.20.1-0.20200309200217-e05f789c0967" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.54.0", - "purl": "pkg:golang/cloud.google.com/go@v0.54.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.54.0" - }, - { - "group": "cloud.google.com/go", - "name": "bigquery", - "version": "v1.5.0", - "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.5.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.5.0" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.3.4", - "purl": "pkg:golang/github.com/golang/protobuf@v1.3.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.3.4" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200312045724-11d5b4c81c7d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200312045724-11d5b4c81c7d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200312045724-11d5b4c81c7d" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200312145019-da6875a35672", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200312145019-da6875a35672", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200312145019-da6875a35672" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.84.0", - "purl": "pkg:golang/cloud.google.com/go@v0.84.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.84.0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210616094352-59db8d763f22", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210616094352-59db8d763f22", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210616094352-59db8d763f22" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210624195500-8bfb893ecb84", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210624195500-8bfb893ecb84", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210624195500-8bfb893ecb84" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.38.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.38.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.38.0" - }, - { - "group": "github.com/google", - "name": "btree", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/google/btree@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/btree@v1.0.0" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20190510132918-efd6b22b2522", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20190510132918-efd6b22b2522", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190510132918-efd6b22b2522" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190628153133-6cdbf07be9d0", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190628153133-6cdbf07be9d0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190628153133-6cdbf07be9d0" - }, - { - "group": "rsc.io", - "name": "binaryregexp", - "version": "v0.2.0", - "purl": "pkg:golang/rsc.io/binaryregexp@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/rsc.io/binaryregexp@v0.2.0" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20190605123033-f99c8df09eb5", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20190605123033-f99c8df09eb5", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190605123033-f99c8df09eb5" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190606165138-5da285871e9c", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190606165138-5da285871e9c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190606165138-5da285871e9c" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190606124116-d0a3d012864b", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190606124116-d0a3d012864b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190606124116-d0a3d012864b" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190501004415-9ce7a6920f09", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190501004415-9ce7a6920f09", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190501004415-9ce7a6920f09" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20190829153037-c13cbed26979", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20190829153037-c13cbed26979", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190829153037-c13cbed26979" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20190909230951-414d861bb4ac", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20190909230951-414d861bb4ac", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190909230951-414d861bb4ac" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190911174233-4f2ddba30aff", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190911174233-4f2ddba30aff", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190911174233-4f2ddba30aff" - }, - { - "group": "github.com/go-gl", - "name": "glfw", - "version": "v0.0.0-20190409004039-e6da0acd62b1", - "purl": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.0-rc.2", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.2" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.4.1", - "purl": "pkg:golang/github.com/golang/mock@v1.4.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.4.1" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200301022130-244492dfa37a", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200301022130-244492dfa37a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200301022130-244492dfa37a" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200302150141-5c8b2ff67527", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200302150141-5c8b2ff67527", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200302150141-5c8b2ff67527" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200304193943-95d2e580d8eb", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200304193943-95d2e580d8eb", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200304193943-95d2e580d8eb" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200305110556-506484158171", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200305110556-506484158171", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200305110556-506484158171" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200227222343-706bc42d1f0d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200227222343-706bc42d1f0d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200227222343-706bc42d1f0d" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.19.0", - "purl": "pkg:golang/google.golang.org/api@v0.19.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.19.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200228133532-8c2c7df3a383", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200228133532-8c2c7df3a383", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200228133532-8c2c7df3a383" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.5.0", - "purl": "pkg:golang/github.com/golang/mock@v1.5.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.5.0" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20210601050228-01bbb1931b22", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20210601050228-01bbb1931b22", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20210601050228-01bbb1931b22" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20210514164344-f6687ab2804c", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210514164344-f6687ab2804c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210514164344-f6687ab2804c" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.1.2", - "purl": "pkg:golang/golang.org/x/tools@v0.1.2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.1.2" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.48.0", - "purl": "pkg:golang/google.golang.org/api@v0.48.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.48.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210608205507-b6d2f5bf0d7d", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210608205507-b6d2f5bf0d7d", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210608205507-b6d2f5bf0d7d" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.1.3", - "purl": "pkg:golang/golang.org/x/tools@v0.1.3", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.1.3" - }, - { - "group": "golang.org/x", - "name": "mobile", - "version": "v0.0.0-20190312151609-d3739f865fa6", - "purl": "pkg:golang/golang.org/x/mobile@v0.0.0-20190312151609-d3739f865fa6", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mobile@v0.0.0-20190312151609-d3739f865fa6" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190312151545-0bb0c0a6e846", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190312151545-0bb0c0a6e846", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190312151545-0bb0c0a6e846" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190816200558-6889da9d5479", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190816200558-6889da9d5479", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190816200558-6889da9d5479" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v0.0.0-20200228230310-ab0ca4ff8a60", - "purl": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200228230310-ab0ca4ff8a60", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200228230310-ab0ca4ff8a60" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.83.0", - "purl": "pkg:golang/cloud.google.com/go@v0.83.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.83.0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210603125802-9665404d3644", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210603125802-9665404d3644", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210603125802-9665404d3644" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210604141403-392c879c8b08", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210604141403-392c879c8b08", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210604141403-392c879c8b08" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.0-rc.1.0.20200221234624-67d41d38c208", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1.0.20200221234624-67d41d38c208", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1.0.20200221234624-67d41d38c208" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.47.0", - "purl": "pkg:golang/google.golang.org/api@v0.47.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.47.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210602131652-f16073e35f0c", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210602131652-f16073e35f0c", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210602131652-f16073e35f0c" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v0.0.0-20200221191635-4d8936d0db64", - "purl": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200221191635-4d8936d0db64", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200221191635-4d8936d0db64" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.81.0", - "purl": "pkg:golang/cloud.google.com/go@v0.81.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.81.0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210514084401-e8d321eab015", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210514084401-e8d321eab015", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210514084401-e8d321eab015" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210513213006-bf773b8c8384", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210513213006-bf773b8c8384", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210513213006-bf773b8c8384" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.37.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.37.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.37.1" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.0-rc.1", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1" - }, - { - "group": "github.com/google/martian", - "name": "v3", - "version": "v3.1.0", - "purl": "pkg:golang/github.com/google/martian/v3@v3.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/martian/v3@v3.1.0" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20210226084205-cbba55b83ad5", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20210226084205-cbba55b83ad5", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20210226084205-cbba55b83ad5" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20210313182246-cd4f82c27b84", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210313182246-cd4f82c27b84", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210313182246-cd4f82c27b84" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.43.0", - "purl": "pkg:golang/google.golang.org/api@v0.43.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.43.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210402141018-6c239bbf2bb1", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210402141018-6c239bbf2bb1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210402141018-6c239bbf2bb1" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v0.0.0-20200109180630-ec00e32a8dfd", - "purl": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200109180630-ec00e32a8dfd", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200109180630-ec00e32a8dfd" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.79.0", - "purl": "pkg:golang/cloud.google.com/go@v0.79.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.79.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210319143718-93e7006c17a6", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210319143718-93e7006c17a6", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210319143718-93e7006c17a6" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20210226172049-e18ecbb05110", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20210226172049-e18ecbb05110", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20210226172049-e18ecbb05110" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20210220000619-9bb904979d93", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210220000619-9bb904979d93", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210220000619-9bb904979d93" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.41.0", - "purl": "pkg:golang/google.golang.org/api@v0.41.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.41.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210310155132-4ce2db91004e", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210310155132-4ce2db91004e", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210310155132-4ce2db91004e" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.78.0", - "purl": "pkg:golang/cloud.google.com/go@v0.78.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.78.0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210305230114-8fe3ee5dd75b", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210305230114-8fe3ee5dd75b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210305230114-8fe3ee5dd75b" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210303154014-9728d6b83eeb", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210303154014-9728d6b83eeb", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210303154014-9728d6b83eeb" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.4", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.4" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20210122040257-d980be63207e", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20210122040257-d980be63207e", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20210122040257-d980be63207e" - }, - { - "name": "go.opencensus.io", - "version": "v0.22.5", - "purl": "pkg:golang/go.opencensus.io@v0.22.5", - "type": "library", - "bom-ref": "pkg:golang/go.opencensus.io@v0.22.5" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.4.1", - "purl": "pkg:golang/golang.org/x/mod@v0.4.1", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.4.1" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20210119194325-5f4716e94777", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20210119194325-5f4716e94777", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20210119194325-5f4716e94777" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20210218202405-ba52d332ba99", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210218202405-ba52d332ba99", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210218202405-ba52d332ba99" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210220050731-9a76102bfb43", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210220050731-9a76102bfb43", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210220050731-9a76102bfb43" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.40.0", - "purl": "pkg:golang/google.golang.org/api@v0.40.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.40.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20210222152913-aa3ee6e6a81c", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20210222152913-aa3ee6e6a81c", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210222152913-aa3ee6e6a81c" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.35.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.35.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.35.0" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.74.0", - "purl": "pkg:golang/cloud.google.com/go@v0.74.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.74.0" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20201208152858-08078c50e5b5", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20201208152858-08078c50e5b5", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20201208152858-08078c50e5b5" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20201207232520-09787c993a3a", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20201207232520-09787c993a3a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20201207232520-09787c993a3a" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210104204734-6f8348627aad", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210104204734-6f8348627aad", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210104204734-6f8348627aad" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20210105154028-b0ab187a4818", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20210105154028-b0ab187a4818", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20210105154028-b0ab187a4818" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20201214200347-8c77b98c765d", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20201214200347-8c77b98c765d", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20201214200347-8c77b98c765d" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.34.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.34.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.34.0" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20201203190320-1bf35d6f28c2", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20201203190320-1bf35d6f28c2", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20201203190320-1bf35d6f28c2" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.4.0", - "purl": "pkg:golang/golang.org/x/mod@v0.4.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.4.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20201209123823-ac852fbbde11", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20201209123823-ac852fbbde11", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20201209123823-ac852fbbde11" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.4", - "purl": "pkg:golang/golang.org/x/text@v0.3.4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.4" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20201208233053-a543418bbed2", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20201208233053-a543418bbed2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20201208233053-a543418bbed2" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.36.0", - "purl": "pkg:golang/google.golang.org/api@v0.36.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.36.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20201210142538-e3217bee35cc", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20201210142538-e3217bee35cc", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20201210142538-e3217bee35cc" - }, - { - "group": "github.com/cncf/udpa", - "name": "go", - "version": "v0.0.0-20200629203442-efcf912fb354", - "purl": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20200629203442-efcf912fb354", - "type": "library", - "bom-ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20200629203442-efcf912fb354" - }, - { - "group": "github.com/envoyproxy", - "name": "go-control-plane", - "version": "v0.9.7", - "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.7", - "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.7" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.72.0", - "purl": "pkg:golang/cloud.google.com/go@v0.72.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.72.0" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20201109201403-9fd604954f58", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20201109201403-9fd604954f58", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20201109201403-9fd604954f58" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20201201145000-ef89a241ccb3", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20201201145000-ef89a241ccb3", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20201201145000-ef89a241ccb3" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20201201161351-ac6f37ff4c2a", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20201201161351-ac6f37ff4c2a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20201201161351-ac6f37ff4c2a" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20201201144952-b05cb90ed32e", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20201201144952-b05cb90ed32e", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20201201144952-b05cb90ed32e" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.2", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.2" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20201023163331-3e6fc7fc9c4c", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20201023163331-3e6fc7fc9c4c", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20201023163331-3e6fc7fc9c4c" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20201031054903-ff519b6c9102", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20201031054903-ff519b6c9102", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20201031054903-ff519b6c9102" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20200902213428-5d25da1a8d43", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20200902213428-5d25da1a8d43", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20200902213428-5d25da1a8d43" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20201110124207-079ba7bd75cd", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20201110124207-079ba7bd75cd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20201110124207-079ba7bd75cd" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.35.0", - "purl": "pkg:golang/google.golang.org/api@v0.35.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.35.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20201109203340-2640f1f9cdfb", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20201109203340-2640f1f9cdfb", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20201109203340-2640f1f9cdfb" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200905004654-be1d3432aa8f", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200905004654-be1d3432aa8f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200905004654-be1d3432aa8f" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200904185747-39188db58858", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200904185747-39188db58858", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200904185747-39188db58858" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200904004341-0bd0a958aa1d", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200904004341-0bd0a958aa1d", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200904004341-0bd0a958aa1d" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.31.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.31.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.31.1" - } - ], - "dependencies": [ - { - "ref": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.100.2", - "pkg:golang/cloud.google.com/go/compute@v1.6.1", - "pkg:golang/cloud.google.com/go/monitoring@v1.1.0", - "pkg:golang/cloud.google.com/go/profiler@v0.3.0", - "pkg:golang/cloud.google.com/go/trace@v1.0.0", - "pkg:golang/contrib.go.opencensus.io/exporter/jaeger@v0.2.1", - "pkg:golang/contrib.go.opencensus.io/exporter/stackdriver@v0.13.12", - "pkg:golang/github.com/aws/aws-sdk-go@v1.43.31", - "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0", - "pkg:golang/github.com/cespare/xxhash@v1.1.0", - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", - "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.8", - "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f", - "pkg:golang/github.com/google/uuid@v1.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", - "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0", - "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible", - "pkg:golang/github.com/sirupsen/logrus@v1.8.1", - "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible", - "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/text@v0.3.7", - "pkg:golang/google.golang.org/api@v0.78.0", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", - "pkg:golang/google.golang.org/grpc@v1.48.0", - "pkg:golang/google.golang.org/protobuf@v1.28.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.100.2", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/compute@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/google/martian/v3@v3.2.1", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.1", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20211104180415-d3ed0bb246c8", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "pkg:golang/google.golang.org/api@v0.63.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20211221195035-429b39de9b1c", - "pkg:golang/google.golang.org/grpc@v1.40.1", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/compute@v1.6.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.100.2", - "pkg:golang/github.com/google/go-cmp@v0.5.7", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.3.0", - "pkg:golang/google.golang.org/api@v0.75.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220421151946-72621c1f0bd3", - "pkg:golang/google.golang.org/grpc@v1.45.0", - "pkg:golang/google.golang.org/protobuf@v1.28.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/monitoring@v1.1.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.97.0", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.1", - "pkg:golang/google.golang.org/api@v0.58.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20211018162055-cf77aa76bad2", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/profiler@v0.3.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.100.2", - "pkg:golang/cloud.google.com/go/compute@v1.6.1", - "pkg:golang/cloud.google.com/go/storage@v1.22.1", - "pkg:golang/github.com/golang/mock@v1.6.0", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", - "pkg:golang/google.golang.org/api@v0.78.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", - "pkg:golang/google.golang.org/grpc@v1.46.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/trace@v1.0.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.94.1", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.0", - "pkg:golang/google.golang.org/api@v0.57.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210921142501-181ce0d877f6", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/contrib.go.opencensus.io/exporter/jaeger@v0.2.1", - "dependsOn": [ - "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible", - "pkg:golang/go.opencensus.io@v0.22.4", - "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "pkg:golang/google.golang.org/api@v0.29.0" - ] - }, - { - "ref": "pkg:golang/contrib.go.opencensus.io/exporter/stackdriver@v0.13.12", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.97.0", - "pkg:golang/cloud.google.com/go/monitoring@v1.1.0", - "pkg:golang/cloud.google.com/go/trace@v1.0.0", - "pkg:golang/github.com/aws/aws-sdk-go@v1.37.0", - "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/net@v0.0.0-20210503060351-7fd8e65b6420", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20211005180243-6b3c2da341f1", - "pkg:golang/golang.org/x/tools@v0.1.5", - "pkg:golang/google.golang.org/api@v0.59.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20211018162055-cf77aa76bad2", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4" - ] - }, - { - "ref": "pkg:golang/github.com/aws/aws-sdk-go@v1.43.31", - "dependsOn": [ - "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0", - "pkg:golang/github.com/pkg/errors@v0.9.1", - "pkg:golang/golang.org/x/net@v0.0.0-20220127200216-cd36cc0744dd" - ] - }, - { - "ref": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/cespare/xxhash@v1.1.0", - "dependsOn": [ - "pkg:golang/github.com/OneOfOne/xxhash@v1.2.2", - "pkg:golang/github.com/spaolacci/murmur3@v0.0.0-20180118202830-f09979ecbc72" - ] - }, - { - "ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", - "dependsOn": [ - "pkg:golang/github.com/cncf/xds/go@v0.0.0-20210922020428-25de7278fc84" - ] - }, - { - "ref": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/google.golang.org/grpc@v1.25.1" - ] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1", - "dependsOn": [ - "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211001041855-01bcc9b48dfe", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.5.0", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "pkg:golang/github.com/stretchr/testify@v1.7.0", - "pkg:golang/go.opentelemetry.io/proto/otlp@v0.7.0", - "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", - "pkg:golang/golang.org/x/sys@v0.0.0-20210119212857-b64e53b001e4", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "pkg:golang/google.golang.org/grpc@v1.36.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.5.2", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.5.5", - "pkg:golang/google.golang.org/protobuf@v1.26.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20210905161508-09a460cdf81d", - "pkg:golang/golang.org/x/sys@v0.0.0-20211007075335-d3039528d8ac" - ] - }, - { - "ref": "pkg:golang/github.com/google/uuid@v1.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.5.8", - "pkg:golang/google.golang.org/api@v0.78.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220505152158-f39f71e6c8f3", - "pkg:golang/google.golang.org/grpc@v1.46.0", - "pkg:golang/google.golang.org/protobuf@v1.28.0" - ] - }, - { - "ref": "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0", - "dependsOn": [ - "pkg:golang/github.com/jmespath/go-jmespath/internal/testify@v1.5.1" - ] - }, - { - "ref": "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/sirupsen/logrus@v1.8.1", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/testify@v1.2.2", - "pkg:golang/golang.org/x/sys@v0.0.0-20191026070338-33540a1f6037" - ] - }, - { - "ref": "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", - "dependsOn": [ - "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211", - "pkg:golang/golang.org/x/text@v0.3.7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/golang.org/x/net@v0.0.0-20220127200216-cd36cc0744dd", - "pkg:golang/google.golang.org/appengine@v1.6.6" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.7", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.78.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/compute@v1.6.1", - "pkg:golang/github.com/google/go-cmp@v0.5.8", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.3.0", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/net@v0.0.0-20220425223048-2871e0cb64e4", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20220502124256-b6088ccd6cba", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220429170224-98d788798c3e", - "pkg:golang/google.golang.org/grpc@v1.46.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.6.7", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65", - "pkg:golang/golang.org/x/text@v0.3.2" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.46.0", - "pkg:golang/google.golang.org/protobuf@v1.28.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.48.0", - "dependsOn": [ - "pkg:golang/github.com/cespare/xxhash/v2@v2.1.1", - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", - "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20210119212857-b64e53b001e4", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.28.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.0", - "pkg:golang/github.com/google/go-cmp@v0.5.5" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/compute@v0.1.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.100.2", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.1", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "pkg:golang/google.golang.org/api@v0.63.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20211221195035-429b39de9b1c", - "pkg:golang/google.golang.org/grpc@v1.40.1", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.6", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/github.com/google/martian/v3@v3.2.1", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/golang/snappy@v0.0.3", - "pkg:golang/golang.org/x/net@v0.0.0-20190628185345-da137c7871d7", - "pkg:golang/google.golang.org/grpc@v1.37.0", - "pkg:golang/google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1.0", - "pkg:golang/google.golang.org/protobuf@v1.26.0" - ] - }, - { - "ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.1", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/google.golang.org/api@v0.56.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210909211513-a8c4777a87af", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/go.opencensus.io@v0.23.0", - "dependsOn": [ - "pkg:golang/github.com/golang/groupcache@v0.0.0-20200121045136-8c9f03a8e57e", - "pkg:golang/github.com/golang/protobuf@v1.4.3", - "pkg:golang/github.com/google/go-cmp@v0.5.3", - "pkg:golang/github.com/stretchr/testify@v1.6.1", - "pkg:golang/golang.org/x/net@v0.0.0-20201110031124-69a78807bb2b", - "pkg:golang/google.golang.org/grpc@v1.33.2" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20211104180415-d3ed0bb246c8", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/google.golang.org/appengine@v1.6.6" - ] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.63.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.99.0", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.1", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/net@v0.0.0-20210503060351-7fd8e65b6420", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20211104180415-d3ed0bb246c8", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20211210111614-af8b64212486", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20211208223120-3a66f561d7aa", - "pkg:golang/google.golang.org/grpc@v1.40.1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20211221195035-429b39de9b1c", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.40.1", - "dependsOn": [ - "pkg:golang/github.com/cespare/xxhash@v1.1.0", - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20201120205902-5459f2c99403", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.9-0.20210512163311-63b5d3c536b0", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.4.3", - "pkg:golang/github.com/google/go-cmp@v0.5.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "pkg:golang/google.golang.org/protobuf@v1.25.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.27.1", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.0", - "pkg:golang/github.com/google/go-cmp@v0.5.5" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.7", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.3.0", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.5.7", - "pkg:golang/google.golang.org/api@v0.74.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220407144326-9054f6ed7bac", - "pkg:golang/google.golang.org/grpc@v1.45.0", - "pkg:golang/google.golang.org/protobuf@v1.28.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.75.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/compute@v1.6.0", - "pkg:golang/github.com/google/go-cmp@v0.5.7", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.3.0", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/net@v0.0.0-20220412020605-290c469a71a5", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20220412211240-33da011f77ad", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220414192740-2d67ff6cf2b4", - "pkg:golang/google.golang.org/grpc@v1.45.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220421151946-72621c1f0bd3", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.45.0", - "pkg:golang/google.golang.org/protobuf@v1.28.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.45.0", - "dependsOn": [ - "pkg:golang/github.com/cespare/xxhash/v2@v2.1.1", - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", - "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.10-0.20210907150352-cf90f659a021", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.5", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "pkg:golang/google.golang.org/protobuf@v1.26.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.97.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/google/martian/v3@v3.2.1", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.0", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210819190943-2bc19b11175f", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "pkg:golang/google.golang.org/api@v0.57.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210924002016-3dee208752a0", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.58.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.94.1", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.1", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/net@v0.0.0-20210503060351-7fd8e65b6420", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210819190943-2bc19b11175f", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20210917161153-d61c044b1678", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210917145530-b395a37504d4", - "pkg:golang/google.golang.org/grpc@v1.40.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20211018162055-cf77aa76bad2", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.40.0", - "dependsOn": [ - "pkg:golang/github.com/cespare/xxhash@v1.1.0", - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20201120205902-5459f2c99403", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.9-0.20210512163311-63b5d3c536b0", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.4.3", - "pkg:golang/github.com/google/go-cmp@v0.5.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "pkg:golang/google.golang.org/protobuf@v1.25.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/storage@v1.22.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.100.2", - "pkg:golang/cloud.google.com/go/compute@v1.6.0", - "pkg:golang/cloud.google.com/go/iam@v0.3.0", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.7", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.3.0", - "pkg:golang/github.com/googleapis/go-type-adapters@v1.0.0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f", - "pkg:golang/google.golang.org/api@v0.74.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", - "pkg:golang/google.golang.org/grpc@v1.46.0", - "pkg:golang/google.golang.org/protobuf@v1.28.0" - ] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.6.0", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.4.2", - "pkg:golang/golang.org/x/tools@v0.1.1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.46.0", - "dependsOn": [ - "pkg:golang/github.com/cespare/xxhash/v2@v2.1.1", - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", - "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20210119212857-b64e53b001e4", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.94.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/google/martian/v3@v3.2.1", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.0", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210819190943-2bc19b11175f", - "pkg:golang/google.golang.org/api@v0.55.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210831024726-fe130286e0e2", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.0", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/google.golang.org/api@v0.54.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210821163610-241b8fcbd6c8", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.57.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.94.1", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.0", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/net@v0.0.0-20210503060351-7fd8e65b6420", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210819190943-2bc19b11175f", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20210908233432-aa78b53d3365", - "pkg:golang/golang.org/x/tools@v0.1.5", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210903162649-d08c68adba83", - "pkg:golang/google.golang.org/grpc@v1.40.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210921142501-181ce0d877f6", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/go.opencensus.io@v0.22.4", - "dependsOn": [ - "pkg:golang/github.com/golang/groupcache@v0.0.0-20190702054246-869f871628b6", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/stretchr/testify@v1.4.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb", - "pkg:golang/google.golang.org/grpc@v1.20.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.29.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.56.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d", - "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4", - "pkg:golang/google.golang.org/appengine@v1.6.5", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940", - "pkg:golang/google.golang.org/grpc@v1.28.0" - ] - }, - { - "ref": "pkg:golang/github.com/aws/aws-sdk-go@v1.37.0", - "dependsOn": [ - "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0", - "pkg:golang/github.com/pkg/errors@v0.9.1", - "pkg:golang/golang.org/x/net@v0.0.0-20201110031124-69a78807bb2b" - ] - }, - { - "ref": "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20200130002326-2f3ba24bd6e7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20210503060351-7fd8e65b6420", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20210423082822-04245dca01da", - "pkg:golang/golang.org/x/term@v0.0.0-20201126162022-7de9c90e9dd1", - "pkg:golang/golang.org/x/text@v0.3.6" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20211005180243-6b3c2da341f1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/google.golang.org/appengine@v1.6.6" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.1.5", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.3.5", - "pkg:golang/golang.org/x/mod@v0.4.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.59.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.97.0", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.1", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/net@v0.0.0-20210503060351-7fd8e65b6420", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20211005180243-6b3c2da341f1", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20211007075335-d3039528d8ac", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20211008145708-270636b82663", - "pkg:golang/google.golang.org/grpc@v1.40.0" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", - "dependsOn": [ - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/google/renameio@v0.1.0", - "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0", - "pkg:golang/golang.org/x/mod@v0.0.0-20190513183733-4bf6d317e70e", - "pkg:golang/golang.org/x/tools@v0.0.0-20191130070609-6e064ea0cf2d" - ] - }, - { - "ref": "pkg:golang/github.com/pkg/errors@v0.9.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20220127200216-cd36cc0744dd", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20211216021012-1d35b9e2eb4e", - "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211", - "pkg:golang/golang.org/x/text@v0.3.7" - ] - }, - { - "ref": "pkg:golang/github.com/OneOfOne/xxhash@v1.2.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/spaolacci/murmur3@v0.0.0-20180118202830-f09979ecbc72", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20210922020428-25de7278fc84", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/google.golang.org/grpc@v1.25.1" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.3.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.25.1", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.0", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211001041855-01bcc9b48dfe", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/google.golang.org/grpc@v1.25.1" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.5.0", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.5.5", - "pkg:golang/google.golang.org/protobuf@v1.26.0-rc.1" - ] - }, - { - "ref": "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/sync@v0.0.0-20181108010431-42b317875d0f" - ] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.7.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/objx@v0.1.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c" - ] - }, - { - "ref": "pkg:golang/go.opentelemetry.io/proto/otlp@v0.7.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.3", - "pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v1.16.0", - "pkg:golang/google.golang.org/grpc@v1.36.0", - "pkg:golang/google.golang.org/protobuf@v1.25.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f", - "pkg:golang/golang.org/x/text@v0.3.3" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210119212857-b64e53b001e4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.23.1-0.20200526195155-81db48ad09cc", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.36.0", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20201120205902-5459f2c99403", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.9-0.20201210154907-fd9021fe5dad", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.5.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "pkg:golang/google.golang.org/protobuf@v1.25.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.5", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.26.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.0", - "pkg:golang/github.com/google/go-cmp@v0.5.5" - ] - }, - { - "ref": "pkg:golang/github.com/chzyer/logex@v1.1.10", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20210905161508-09a460cdf81d", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20211007075335-d3039528d8ac", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220505152158-f39f71e6c8f3", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.46.0", - "pkg:golang/google.golang.org/protobuf@v1.28.0" - ] - }, - { - "ref": "pkg:golang/github.com/jmespath/go-jmespath/internal/testify@v1.5.1", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/objx@v0.1.0", - "pkg:golang/gopkg.in/yaml.v2@v2.2.8" - ] - }, - { - "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.2.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191026070338-33540a1f6037", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20210615035016-665e8c7367d1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.65.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "pkg:golang/github.com/golang/mock@v1.4.4", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.5.1", - "pkg:golang/github.com/google/martian/v3@v3.0.0", - "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.4", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/text@v0.3.3", - "pkg:golang/golang.org/x/tools@v0.0.0-20200825202427-b303f430e36d", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "pkg:golang/google.golang.org/api@v0.30.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200825200019-8632dd797987", - "pkg:golang/google.golang.org/grpc@v1.31.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.6.6", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65", - "pkg:golang/golang.org/x/text@v0.3.2" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20220425223048-2871e0cb64e4", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20211216021012-1d35b9e2eb4e", - "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211", - "pkg:golang/golang.org/x/text@v0.3.7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20220502124256-b6088ccd6cba", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220429170224-98d788798c3e", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.45.0", - "pkg:golang/google.golang.org/protobuf@v1.28.0" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.3.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.2", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20210330210617-4fbd30eecc44", - "pkg:golang/golang.org/x/term@v0.0.0-20201126162022-7de9c90e9dd1", - "pkg:golang/golang.org/x/text@v0.3.3" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.5", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e" - ] - }, - { - "ref": "pkg:golang/github.com/cespare/xxhash/v2@v2.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/uuid@v1.1.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.34.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e", - "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4", - "pkg:golang/google.golang.org/appengine@v1.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/snappy@v0.0.3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190628185345-da137c7871d7", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.37.0", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20201120205902-5459f2c99403", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.9-0.20210217033140-668b12f5399d", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.5.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "pkg:golang/google.golang.org/protobuf@v1.25.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1.0", - "dependsOn": [ - "pkg:golang/google.golang.org/protobuf@v1.23.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.56.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.93.3", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.0", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/net@v0.0.0-20210503060351-7fd8e65b6420", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210819190943-2bc19b11175f", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20210823070655-63515b42dcdf", - "pkg:golang/golang.org/x/tools@v0.1.5", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210828152312-66f60bf46e71", - "pkg:golang/google.golang.org/grpc@v1.40.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210909211513-a8c4777a87af", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.5", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20200121045136-8c9f03a8e57e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.3", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/protobuf@v1.23.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.3", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.6.1", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/objx@v0.1.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20201110031124-69a78807bb2b", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f", - "pkg:golang/golang.org/x/text@v0.3.3" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.33.2", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/github.com/google/go-cmp@v0.5.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "pkg:golang/google.golang.org/protobuf@v1.25.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.99.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/google/martian/v3@v3.2.1", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.1", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20211104180415-d3ed0bb246c8", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "pkg:golang/google.golang.org/api@v0.61.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20211206160659-862468c7d6e0", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20211210111614-af8b64212486", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20211208223120-3a66f561d7aa", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20201120205902-5459f2c99403", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/google.golang.org/grpc@v1.25.1" - ] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.9-0.20210512163311-63b5d3c536b0", - "dependsOn": [ - "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "pkg:golang/github.com/cncf/xds/go@v0.0.0-20210312221358-fbca930ec8ed", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.4.3", - "pkg:golang/github.com/google/go-cmp@v0.5.0", - "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "pkg:golang/github.com/stretchr/testify@v1.5.1", - "pkg:golang/go.opentelemetry.io/proto/otlp@v0.7.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "pkg:golang/google.golang.org/grpc@v1.36.0", - "pkg:golang/google.golang.org/protobuf@v1.25.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.0", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.25.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/github.com/google/go-cmp@v0.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.74.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/compute@v1.5.0", - "pkg:golang/github.com/google/go-cmp@v0.5.7", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.2.0", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/net@v0.0.0-20220325170049-de3da57026de", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20220309155454-6242fa91716a", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20220328115105-d36c6a25d886", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220324131243-acbaeb5b85eb", - "pkg:golang/google.golang.org/grpc@v1.45.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220407144326-9054f6ed7bac", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.45.0", - "pkg:golang/google.golang.org/protobuf@v1.28.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/compute@v1.6.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.100.2", - "pkg:golang/github.com/google/go-cmp@v0.5.7", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.3.0", - "pkg:golang/google.golang.org/api@v0.74.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220413183235-5e96e2839df9", - "pkg:golang/google.golang.org/grpc@v1.45.0", - "pkg:golang/google.golang.org/protobuf@v1.28.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20220412020605-290c469a71a5", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20211216021012-1d35b9e2eb4e", - "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211", - "pkg:golang/golang.org/x/text@v0.3.7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20220412211240-33da011f77ad", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220414192740-2d67ff6cf2b4", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.45.0", - "pkg:golang/google.golang.org/protobuf@v1.28.0" - ] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.10-0.20210907150352-cf90f659a021", - "dependsOn": [ - "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "pkg:golang/github.com/cncf/xds/go@v0.0.0-20210805033703-aa0b78936158", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.4.3", - "pkg:golang/github.com/google/go-cmp@v0.5.0", - "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "pkg:golang/github.com/stretchr/testify@v1.7.0", - "pkg:golang/go.opentelemetry.io/proto/otlp@v0.7.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "pkg:golang/google.golang.org/grpc@v1.36.0", - "pkg:golang/google.golang.org/protobuf@v1.25.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.57.0", - "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.4.1", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/net@v0.0.0-20200520182314-0ba52f642ac2", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200523222454-059865788121", - "pkg:golang/golang.org/x/tools@v0.0.0-20200618134242-20370b0cb4b2", - "pkg:golang/google.golang.org/api@v0.28.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200618031413-b414f8b61790", - "pkg:golang/google.golang.org/grpc@v1.29.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210819190943-2bc19b11175f", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/google.golang.org/appengine@v1.6.6" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210924002016-3dee208752a0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210917161153-d61c044b1678", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210917145530-b395a37504d4", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.5", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/iam@v0.3.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.100.2", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.1", - "pkg:golang/google.golang.org/api@v0.70.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220222213610-43724f9ea8cf", - "pkg:golang/google.golang.org/grpc@v1.44.0" - ] - }, - { - "ref": "pkg:golang/github.com/googleapis/go-type-adapters@v1.0.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.1", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210329143202-679c6ae281ee", - "pkg:golang/google.golang.org/protobuf@v1.26.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.4.2", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.1.1", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.3.5", - "pkg:golang/golang.org/x/mod@v0.4.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.55.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.93.3", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.0", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/net@v0.0.0-20210503060351-7fd8e65b6420", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210819190943-2bc19b11175f", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20210823070655-63515b42dcdf", - "pkg:golang/golang.org/x/tools@v0.1.5", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210828152312-66f60bf46e71", - "pkg:golang/google.golang.org/grpc@v1.40.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210831024726-fe130286e0e2", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.5", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.54.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.90.0", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/net@v0.0.0-20210503060351-7fd8e65b6420", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210805134026-6f1e6394065a", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20210806184541-e5e7981a1069", - "pkg:golang/golang.org/x/tools@v0.1.5", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210805201207-89edb61ffb67", - "pkg:golang/google.golang.org/grpc@v1.39.1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210821163610-241b8fcbd6c8", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.5", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210908233432-aa78b53d3365", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210903162649-d08c68adba83", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.5", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20190702054246-869f871628b6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.4.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/objx@v0.1.0", - "pkg:golang/gopkg.in/yaml.v2@v2.2.2" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.20.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.26.0", - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/client9/misspell@v0.3.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd", - "pkg:golang/google.golang.org/appengine@v1.1.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.56.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.4.0", - "pkg:golang/cloud.google.com/go/datastore@v1.1.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.2.0", - "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "pkg:golang/github.com/golang/mock@v1.4.3", - "pkg:golang/github.com/golang/protobuf@v1.3.5", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20200229191704-1ebb73c60ed3", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/net@v0.0.0-20200324143707-d3edc9973b7e", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4", - "pkg:golang/google.golang.org/api@v0.20.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940", - "pkg:golang/google.golang.org/grpc@v1.28.0", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.4.0", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "dependsOn": [ - "pkg:golang/google.golang.org/grpc@v1.19.0" - ] - }, - { - "ref": "pkg:golang/go.opencensus.io@v0.22.3", - "dependsOn": [ - "pkg:golang/github.com/golang/groupcache@v0.0.0-20190702054246-869f871628b6", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/stretchr/testify@v1.4.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb", - "pkg:golang/google.golang.org/grpc@v1.20.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20200130002326-2f3ba24bd6e7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.25", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.6.5", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65", - "pkg:golang/golang.org/x/text@v0.3.2" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.28.0", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200130002326-2f3ba24bd6e7", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210423082822-04245dca01da", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/term@v0.0.0-20201126162022-7de9c90e9dd1", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20201119102817-f84b799fce68" - ] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.6", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e" - ] - }, - { - "ref": "pkg:golang/github.com/yuin/goldmark@v1.3.5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20211008145708-270636b82663", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/renameio@v0.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0", - "dependsOn": [ - "pkg:golang/gopkg.in/errgo.v2@v2.1.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.0.0-20190513183733-4bf6d317e70e", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190510104115-cbcb75029529" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191130070609-6e064ea0cf2d", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20211216021012-1d35b9e2eb4e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.0", - "dependsOn": [ - "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.23.0" - ] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.26.0-rc.1", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.5.5" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20181108010431-42b317875d0f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/stretchr/objx@v0.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v1.16.0", - "dependsOn": [ - "pkg:golang/github.com/antihax/optional@v1.0.0", - "pkg:golang/github.com/ghodss/yaml@v1.0.0", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/rogpeppe/fastuuid@v1.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200513103714-09dca8ec2884", - "pkg:golang/google.golang.org/grpc@v1.33.1", - "pkg:golang/gopkg.in/yaml.v2@v2.2.3" - ] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.3", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.1", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/protobuf@v1.22.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.27.0", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.1-0.20191026205805-5f8ba28d4473", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.23.1-0.20200526195155-81db48ad09cc", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.9-0.20201210154907-fd9021fe5dad", - "dependsOn": [ - "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20201120205902-5459f2c99403", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "pkg:golang/github.com/stretchr/testify@v1.5.1", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.23.0" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.2", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/protobuf@v1.23.0" - ] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.8", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210615035016-665e8c7367d1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.4.4", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.1", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/github.com/google/martian/v3@v3.0.0", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190628185345-da137c7871d7" - ] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200825202427-b303f430e36d", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.32", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200625001655-4c5254603344", - "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.30.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.62.0", - "pkg:golang/github.com/google/go-cmp@v0.5.1", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.4", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "pkg:golang/golang.org/x/sys@v0.0.0-20200803210538-64077c9b5642", - "pkg:golang/golang.org/x/tools@v0.0.0-20200804011535-6c149bb5ef0d", - "pkg:golang/google.golang.org/appengine@v1.6.6", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200804131852-c06518451d9c", - "pkg:golang/google.golang.org/grpc@v1.31.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200825200019-8632dd797987", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.31.0", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a" - ] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210330210617-4fbd30eecc44", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.34.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.4.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20180724234803-3673e40ba225", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.9-0.20210217033140-668b12f5399d", - "dependsOn": [ - "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20201120205902-5459f2c99403", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "pkg:golang/github.com/stretchr/testify@v1.5.1", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.23.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.23.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.93.3", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/google/martian/v3@v3.2.1", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210805134026-6f1e6394065a", - "pkg:golang/google.golang.org/api@v0.54.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210813162853-db860fec028c", - "pkg:golang/google.golang.org/grpc@v1.39.1", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210823070655-63515b42dcdf", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210828152312-66f60bf46e71", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.5", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/google.golang.org/grpc@v1.25.1" - ] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "dependsOn": [ - "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.25.1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.61.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.97.0", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.1", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/net@v0.0.0-20210503060351-7fd8e65b6420", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20211104180415-d3ed0bb246c8", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20211124211545-fe61309f8881", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20211118181313-81c1377c94b1", - "pkg:golang/google.golang.org/grpc@v1.40.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20211206160659-862468c7d6e0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20210312221358-fbca930ec8ed", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/google.golang.org/grpc@v1.25.1" - ] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.5.1", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/objx@v0.1.0", - "pkg:golang/gopkg.in/yaml.v2@v2.2.2" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/compute@v1.5.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.100.2", - "pkg:golang/github.com/google/go-cmp@v0.5.7", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.1", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "pkg:golang/google.golang.org/api@v0.70.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220222213610-43724f9ea8cf", - "pkg:golang/google.golang.org/grpc@v1.44.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.2.0", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.5.7", - "pkg:golang/google.golang.org/api@v0.71.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220310185008-1973136f34c6", - "pkg:golang/google.golang.org/grpc@v1.45.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20220325170049-de3da57026de", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20211216021012-1d35b9e2eb4e", - "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211", - "pkg:golang/golang.org/x/text@v0.3.7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220309155454-6242fa91716a", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/golang.org/x/net@v0.0.0-20220127200216-cd36cc0744dd", - "pkg:golang/google.golang.org/appengine@v1.6.6" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20220328115105-d36c6a25d886", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220324131243-acbaeb5b85eb", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.45.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220413183235-5e96e2839df9", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.45.0", - "pkg:golang/google.golang.org/protobuf@v1.28.0" - ] - }, - { - "ref": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20210805033703-aa0b78936158", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/google.golang.org/grpc@v1.25.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.57.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.4.0", - "pkg:golang/cloud.google.com/go/datastore@v1.1.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.2.0", - "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "pkg:golang/github.com/golang/mock@v1.4.3", - "pkg:golang/github.com/golang/protobuf@v1.4.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20200430221834-fc25d7d30c6d", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/net@v0.0.0-20200501053045-e0ff5e5a1de5", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "pkg:golang/golang.org/x/sys@v0.0.0-20200501052902-10377860bb8e", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20200501065659-ab2804fb9c9d", - "pkg:golang/google.golang.org/api@v0.22.0", - "pkg:golang/google.golang.org/appengine@v1.6.6", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200430143042-b979b6f78d84", - "pkg:golang/google.golang.org/grpc@v1.29.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.57.0", - "pkg:golang/cloud.google.com/go/storage@v1.8.0", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200513185701-a91f0712d120", - "pkg:golang/golang.org/x/sys@v0.0.0-20200515095857-1151b9dac4a9", - "pkg:golang/golang.org/x/tools@v0.0.0-20200515010526-7d3b6ebf133d", - "pkg:golang/google.golang.org/api@v0.24.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200515170657-fc4c6c6a6587", - "pkg:golang/google.golang.org/grpc@v1.29.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.4.1", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200520182314-0ba52f642ac2", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200523222454-059865788121", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200618134242-20370b0cb4b2", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.28.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.56.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d", - "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4", - "pkg:golang/google.golang.org/appengine@v1.6.5", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940", - "pkg:golang/google.golang.org/grpc@v1.28.0", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200618031413-b414f8b61790", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.29.1", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.70.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/compute@v1.3.0", - "pkg:golang/github.com/google/go-cmp@v0.5.7", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.1", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/net@v0.0.0-20220127200216-cd36cc0744dd", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20211104180415-d3ed0bb246c8", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20220209214540-3681064d5158", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220218161850-94dd64e39d7c", - "pkg:golang/google.golang.org/grpc@v1.44.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220222213610-43724f9ea8cf", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.44.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.44.0", - "dependsOn": [ - "pkg:golang/github.com/cespare/xxhash/v2@v2.1.1", - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", - "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.10-0.20210907150352-cf90f659a021", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.4.3", - "pkg:golang/github.com/google/go-cmp@v0.5.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "pkg:golang/google.golang.org/protobuf@v1.25.0" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.5.1", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.5.5", - "pkg:golang/google.golang.org/protobuf@v1.26.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210329143202-679c6ae281ee", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20201208152925-83fdc39ff7b5", - "pkg:golang/golang.org/x/net@v0.0.0-20210316092652-d523dce5a7f4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210320140829-1e4c9ba3b0c4", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.0", - "pkg:golang/google.golang.org/grpc@v1.36.1", - "pkg:golang/google.golang.org/protobuf@v1.26.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.90.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "pkg:golang/github.com/golang/mock@v1.6.0", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/google/martian/v3@v3.2.1", - "pkg:golang/github.com/google/pprof@v0.0.0-20210720184732-4bb14d4b1be1", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210628180205-a41e5a781914", - "pkg:golang/golang.org/x/text@v0.3.6", - "pkg:golang/golang.org/x/tools@v0.1.5", - "pkg:golang/google.golang.org/api@v0.51.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210728212813-7823e685a01f", - "pkg:golang/google.golang.org/grpc@v1.39.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210805134026-6f1e6394065a", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/google.golang.org/appengine@v1.6.6" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210806184541-e5e7981a1069", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210805201207-89edb61ffb67", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.5", - "pkg:golang/google.golang.org/grpc@v1.39.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.39.1", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20201120205902-5459f2c99403", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.9-0.20210512163311-63b5d3c536b0", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.4.3", - "pkg:golang/github.com/google/go-cmp@v0.5.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "pkg:golang/google.golang.org/protobuf@v1.25.0" - ] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.2", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "pkg:golang/golang.org/x/sync@v0.0.0-20181108010431-42b317875d0f", - "pkg:golang/google.golang.org/appengine@v1.4.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.19.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.26.0", - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/client9/misspell@v0.3.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20181026193005-c67002cb31c3", - "pkg:golang/golang.org/x/net@v0.0.0-20180826012351-8a410e7b638d", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f", - "pkg:golang/golang.org/x/sys@v0.0.0-20180830151530-49385e6e1522", - "pkg:golang/golang.org/x/text@v0.3.0", - "pkg:golang/golang.org/x/tools@v0.0.0-20190114222345-bf090417da8b", - "pkg:golang/google.golang.org/appengine@v1.1.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.26.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/client9/misspell@v0.3.4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a" - ] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.4.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.52.0", - "pkg:golang/cloud.google.com/go/storage@v1.5.0", - "pkg:golang/github.com/golang/groupcache@v0.0.0-20200121045136-8c9f03a8e57e", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/exp@v0.0.0-20200119233911-0405dc783f0a", - "pkg:golang/golang.org/x/sys@v0.0.0-20200122134326-e047566fdf82", - "pkg:golang/golang.org/x/tools@v0.0.0-20200122220014-bf1340f18c4a", - "pkg:golang/google.golang.org/api@v0.15.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200122232147-0452cf42e150", - "pkg:golang/google.golang.org/grpc@v1.26.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/datastore@v1.1.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.52.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.2.0", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/exp@v0.0.0-20200207192155-f17229e696bd", - "pkg:golang/golang.org/x/sys@v0.0.0-20200212091648-12a6c2dcc1e4", - "pkg:golang/golang.org/x/tools@v0.0.0-20200212150539-ea181f53ac56", - "pkg:golang/google.golang.org/api@v0.17.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200212174721-66ed5ce911ce", - "pkg:golang/google.golang.org/grpc@v1.27.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/pubsub@v1.2.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.52.0", - "pkg:golang/cloud.google.com/go/bigquery@v1.4.0", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200130185559-910be7a94367", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200202094626-16171245cfb2", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/sys@v0.0.0-20200202164722-d101bd2416d5", - "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0", - "pkg:golang/golang.org/x/tools@v0.0.0-20200204074204-1cc6d1ef6c74", - "pkg:golang/google.golang.org/api@v0.15.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200204135345-fa8e72b47b90", - "pkg:golang/google.golang.org/grpc@v1.27.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.53.0", - "pkg:golang/cloud.google.com/go/datastore@v1.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", - "pkg:golang/golang.org/x/net@v0.0.0-20200222125558-5a598a2470a0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200223170610-d5e6a3e2c0ae", - "pkg:golang/golang.org/x/tools@v0.0.0-20200224181240-023911ca70b2", - "pkg:golang/google.golang.org/api@v0.18.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200224152610-e50cd9704f63", - "pkg:golang/google.golang.org/grpc@v1.27.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - ] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.4.3", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262", - "pkg:golang/rsc.io/quote/v3@v3.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.3.5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200229191704-1ebb73c60ed3", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200324143707-d3edc9973b7e", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.20.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3", - "dependsOn": [ - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/google/renameio@v0.1.0", - "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0", - "pkg:golang/golang.org/x/mod@v0.0.0-20190513183733-4bf6d317e70e", - "pkg:golang/golang.org/x/tools@v0.0.0-20191130070609-6e064ea0cf2d" - ] - }, - { - "ref": "pkg:golang/github.com/yuin/goldmark@v1.1.25", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.2.0", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.3.3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20201119102817-f84b799fce68", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/errgo.v2@v2.1.0", - "dependsOn": [ - "pkg:golang/github.com/kr/pretty@v0.1.0", - "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127" - ] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190510104115-cbcb75029529", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - ] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.23.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.26.0", - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/client9/misspell@v0.3.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/appengine@v1.1.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/antihax/optional@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ghodss/yaml@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/rogpeppe/fastuuid@v1.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200513103714-09dca8ec2884", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.33.1", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.3", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.22.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0" - ] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.1-0.20191026205805-5f8ba28d4473", - "dependsOn": [ - "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.23.0" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.0", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/protobuf@v1.21.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - ] - }, - { - "ref": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/yuin/goldmark@v1.1.32", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.3.0", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200625001655-4c5254603344", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.62.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "pkg:golang/github.com/golang/mock@v1.4.3", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.5.1", - "pkg:golang/github.com/google/martian/v3@v3.0.0", - "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.4", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/net@v0.0.0-20200707034311-ab3426394381", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/text@v0.3.3", - "pkg:golang/golang.org/x/tools@v0.0.0-20200729194436-6467de6f59a7", - "pkg:golang/google.golang.org/api@v0.29.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200729003335-053ba62fc06f", - "pkg:golang/google.golang.org/grpc@v1.30.0", - "pkg:golang/google.golang.org/protobuf@v1.25.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200803210538-64077c9b5642", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200804011535-6c149bb5ef0d", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.32", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200625001655-4c5254603344", - "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200804131852-c06518451d9c", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.24.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20180724234803-3673e40ba225", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210813162853-db860fec028c", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.5", - "pkg:golang/google.golang.org/grpc@v1.39.1", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20211124211545-fe61309f8881", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20211118181313-81c1377c94b1", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.71.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/compute@v1.5.0", - "pkg:golang/github.com/google/go-cmp@v0.5.7", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.1", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20220227234510-4e6760a101f9", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220304144024-325a89244dc8", - "pkg:golang/google.golang.org/grpc@v1.44.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220310185008-1973136f34c6", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.44.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200430221834-fc25d7d30c6d", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200501053045-e0ff5e5a1de5", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200501052902-10377860bb8e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200501065659-ab2804fb9c9d", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.22.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200430143042-b979b6f78d84", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/storage@v1.8.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.57.0", - "pkg:golang/cloud.google.com/go/bigquery@v1.7.0", - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/net@v0.0.0-20200506145744-7e3656a0809f", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200511232937-7e40ca221e25", - "pkg:golang/golang.org/x/tools@v0.0.0-20200512131952-2bc93b1c0c88", - "pkg:golang/google.golang.org/api@v0.24.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200511104702-f5ebc3bea380", - "pkg:golang/google.golang.org/grpc@v1.29.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200513185701-a91f0712d120", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200515095857-1151b9dac4a9", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200515010526-7d3b6ebf133d", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.24.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.56.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d", - "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4", - "pkg:golang/google.golang.org/appengine@v1.6.5", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940", - "pkg:golang/google.golang.org/grpc@v1.28.0", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200515170657-fc4c6c6a6587", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.22.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go/compute@v1.3.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.100.2", - "pkg:golang/github.com/google/go-cmp@v0.5.7", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.1", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "pkg:golang/google.golang.org/api@v0.67.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220207164111-0872dc986b00", - "pkg:golang/google.golang.org/grpc@v1.44.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20220209214540-3681064d5158", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220218161850-94dd64e39d7c", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.44.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20201208152925-83fdc39ff7b5", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20200130002326-2f3ba24bd6e7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20210316092652-d523dce5a7f4", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20210315160823-c6e025ad8005", - "pkg:golang/golang.org/x/term@v0.0.0-20201126162022-7de9c90e9dd1", - "pkg:golang/golang.org/x/text@v0.3.3" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210320140829-1e4c9ba3b0c4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.2.1", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", - "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", - "pkg:golang/golang.org/x/sys@v0.0.0-20210119212857-b64e53b001e4", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.36.1", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20201120205902-5459f2c99403", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.9-0.20201210154907-fd9021fe5dad", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.5.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "pkg:golang/google.golang.org/protobuf@v1.25.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20210720184732-4bb14d4b1be1", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20200824232613-28f6c0f3b639", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210628180205-a41e5a781914", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/google.golang.org/appengine@v1.6.6" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.51.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.87.0", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/net@v0.0.0-20210503060351-7fd8e65b6420", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210628180205-a41e5a781914", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20210630005230-0f9fa26af87c", - "pkg:golang/golang.org/x/tools@v0.1.5", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210716133855-ce7ef5c701ea", - "pkg:golang/google.golang.org/grpc@v1.39.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210728212813-7823e685a01f", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.5", - "pkg:golang/google.golang.org/grpc@v1.39.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.39.0", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20201120205902-5459f2c99403", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.9-0.20210512163311-63b5d3c536b0", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.4.3", - "pkg:golang/github.com/google/go-cmp@v0.5.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "pkg:golang/google.golang.org/protobuf@v1.25.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20181026193005-c67002cb31c3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20180826012351-8a410e7b638d", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20180830151530-49385e6e1522", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190114222345-bf090417da8b", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.52.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.0.1", - "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.0.1", - "pkg:golang/cloud.google.com/go/storage@v1.0.0", - "pkg:golang/github.com/golang/groupcache@v0.0.0-20191227052852-215e87163ea7", - "pkg:golang/github.com/golang/mock@v1.3.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20191218002539-d4f498aebedc", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20191227195350-da58074b4299", - "pkg:golang/golang.org/x/lint@v0.0.0-20191125180803-fdd1cda4f05f", - "pkg:golang/golang.org/x/net@v0.0.0-20200114155413-6afb5195e5aa", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/sys@v0.0.0-20200113162924-86b910548bc1", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20200117161641-43d50277825c", - "pkg:golang/google.golang.org/api@v0.15.0", - "pkg:golang/google.golang.org/appengine@v1.6.5", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200115191322-ca5a22157cba", - "pkg:golang/google.golang.org/grpc@v1.26.0", - "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/storage@v1.5.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.50.0", - "pkg:golang/cloud.google.com/go/bigquery@v1.3.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.1.0", - "pkg:golang/github.com/golang/groupcache@v0.0.0-20191227052852-215e87163ea7", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.1", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20191227195350-da58074b4299", - "pkg:golang/golang.org/x/net@v0.0.0-20191209160850-c0dbc17a3553", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20191202225959-858c2ad4c8b6", - "pkg:golang/golang.org/x/sys@v0.0.0-20191228213918-04cbcbbfeed8", - "pkg:golang/golang.org/x/tools@v0.0.0-20191227053925-7b8e75db28f4", - "pkg:golang/google.golang.org/api@v0.15.0", - "pkg:golang/google.golang.org/appengine@v1.6.5", - "pkg:golang/google.golang.org/genproto@v0.0.0-20191230161307-f3c370f40bfb", - "pkg:golang/google.golang.org/grpc@v1.26.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200119233911-0405dc783f0a", - "dependsOn": [ - "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.0", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200122134326-e047566fdf82", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200122220014-bf1340f18c4a", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.15.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "pkg:golang/google.golang.org/grpc@v1.20.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200122232147-0452cf42e150", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.26.0", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.1-0.20191026205805-5f8ba28d4473", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200207192155-f17229e696bd", - "dependsOn": [ - "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "pkg:golang/golang.org/x/tools@v0.0.0-20200207183749-b753a1ba74fa" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200212091648-12a6c2dcc1e4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200212150539-ea181f53ac56", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.17.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200212174721-66ed5ce911ce", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.27.1", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.1-0.20191026205805-5f8ba28d4473", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20200130185559-910be7a94367", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20200130002326-2f3ba24bd6e7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200202094626-16171245cfb2", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200202164722-d101bd2416d5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200204074204-1cc6d1ef6c74", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200204135345-fa8e72b47b90", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.53.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.3.0", - "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.1.0", - "pkg:golang/cloud.google.com/go/storage@v1.5.0", - "pkg:golang/github.com/golang/groupcache@v0.0.0-20200121045136-8c9f03a8e57e", - "pkg:golang/github.com/golang/mock@v1.4.0", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20200212024743-f11f1df84d12", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/exp@v0.0.0-20200207192155-f17229e696bd", - "pkg:golang/golang.org/x/lint@v0.0.0-20200130185559-910be7a94367", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200202094626-16171245cfb2", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200212091648-12a6c2dcc1e4", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20200212150539-ea181f53ac56", - "pkg:golang/google.golang.org/api@v0.17.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200212174721-66ed5ce911ce", - "pkg:golang/google.golang.org/grpc@v1.27.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", - "dependsOn": [ - "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191107180719-034126e5016b", - "pkg:golang/golang.org/x/sys@v0.0.0-20191001151750-bb3f8db39f24", - "pkg:golang/golang.org/x/tools@v0.0.0-20200207183749-b753a1ba74fa", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200222125558-5a598a2470a0", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200223170610-d5e6a3e2c0ae", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200224181240-023911ca70b2", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.18.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200224152610-e50cd9704f63", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/rsc.io/quote/v3@v3.1.0", - "dependsOn": [ - "pkg:golang/rsc.io/sampler@v1.3.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.38.0", - "dependsOn": [ - "pkg:golang/github.com/golang/mock@v1.2.0", - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/github.com/google/btree@v0.0.0-20180813153112-4030bb1f1f0c", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20181206194817-3ea8567a2e57", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.4", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190301231843-5614ed5bae6f", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190226205417-e64efc72b421", - "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "pkg:golang/golang.org/x/text@v0.3.1-0.20180807135948-17ff2d5776d2", - "pkg:golang/golang.org/x/time@v0.0.0-20181108054448-85acf8d2951c", - "pkg:golang/golang.org/x/tools@v0.0.0-20190312170243-e65039ee4138", - "pkg:golang/google.golang.org/api@v0.4.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190418145605-e7d98fc518a7", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190106161140-3f1c8253044a" - ] - }, - { - "ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/go.opencensus.io@v0.21.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190307195333-5fe7a883aa19", - "pkg:golang/google.golang.org/grpc@v1.19.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.34.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e", - "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4", - "pkg:golang/google.golang.org/appengine@v1.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.5.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20180724234803-3673e40ba225", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/kr/pretty@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/kr/text@v0.1.0" - ] - }, - { - "ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.21.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.4.0.20200313231945-b860323f09d0", - "pkg:golang/github.com/google/go-cmp@v0.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200707034311-ab3426394381", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200729194436-6467de6f59a7", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.32", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200625001655-4c5254603344", - "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200729003335-053ba62fc06f", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.30.0", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20211216021012-1d35b9e2eb4e", - "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211", - "pkg:golang/golang.org/x/text@v0.3.7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/golang.org/x/net@v0.0.0-20220127200216-cd36cc0744dd", - "pkg:golang/google.golang.org/appengine@v1.6.6" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20220227234510-4e6760a101f9", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220304144024-325a89244dc8", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.44.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.7.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.56.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", - "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "pkg:golang/github.com/golang/protobuf@v1.4.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/net@v0.0.0-20200501053045-e0ff5e5a1de5", - "pkg:golang/golang.org/x/sys@v0.0.0-20200501052902-10377860bb8e", - "pkg:golang/golang.org/x/tools@v0.0.0-20200501065659-ab2804fb9c9d", - "pkg:golang/google.golang.org/api@v0.22.0", - "pkg:golang/google.golang.org/appengine@v1.6.6", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200430143042-b979b6f78d84", - "pkg:golang/google.golang.org/grpc@v1.29.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200506145744-7e3656a0809f", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200511232937-7e40ca221e25", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200512131952-2bc93b1c0c88", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200511104702-f5ebc3bea380", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.67.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/compute@v0.1.0", - "pkg:golang/github.com/google/go-cmp@v0.5.7", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.1.1", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/net@v0.0.0-20210503060351-7fd8e65b6420", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20211104180415-d3ed0bb246c8", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20220128215802-99c3d69c2c27", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220126215142-9970aeb2e350", - "pkg:golang/google.golang.org/grpc@v1.40.1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220207164111-0872dc986b00", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210315160823-c6e025ad8005", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/yuin/goldmark@v1.2.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20200824232613-28f6c0f3b639", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.87.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "pkg:golang/github.com/golang/mock@v1.6.0", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/google/martian/v3@v3.2.1", - "pkg:golang/github.com/google/pprof@v0.0.0-20210609004039-a478d1d731e9", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210628180205-a41e5a781914", - "pkg:golang/golang.org/x/text@v0.3.6", - "pkg:golang/golang.org/x/tools@v0.1.4", - "pkg:golang/google.golang.org/api@v0.50.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210713002101-d411969a0d9a", - "pkg:golang/google.golang.org/grpc@v1.39.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210630005230-0f9fa26af87c", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210716133855-ce7ef5c701ea", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.4", - "pkg:golang/google.golang.org/grpc@v1.39.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.0.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.44.2", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/google.golang.org/api@v0.8.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64", - "pkg:golang/google.golang.org/grpc@v1.21.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.44.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/sys@v0.0.0-20190624142023-c5567b49c5d0", - "pkg:golang/google.golang.org/api@v0.7.0", - "pkg:golang/google.golang.org/appengine@v1.6.1", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64", - "pkg:golang/google.golang.org/grpc@v1.21.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/pubsub@v1.0.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.45.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "pkg:golang/google.golang.org/api@v0.9.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.21.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/storage@v1.0.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.46.3", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/google.golang.org/api@v0.9.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190911173649-1774047e7e51", - "pkg:golang/google.golang.org/grpc@v1.21.1" - ] - }, - { - "ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20191227052852-215e87163ea7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.3.1", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262" - ] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20191218002539-d4f498aebedc", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/go.opencensus.io@v0.22.2", - "dependsOn": [ - "pkg:golang/github.com/golang/groupcache@v0.0.0-20190702054246-869f871628b6", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/stretchr/testify@v1.4.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb", - "pkg:golang/google.golang.org/grpc@v1.20.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20191227195350-da58074b4299", - "dependsOn": [ - "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.0", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20191125180803-fdd1cda4f05f", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20191125144606-a911d9008d1f" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200114155413-6afb5195e5aa", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200113162924-86b910548bc1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200117161641-43d50277825c", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200115191322-ca5a22157cba", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3", - "dependsOn": [ - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/google/renameio@v0.1.0", - "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0", - "pkg:golang/golang.org/x/mod@v0.0.0-20190513183733-4bf6d317e70e", - "pkg:golang/golang.org/x/tools@v0.0.0-20190621195816-6e04913cbbac" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.50.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.0.1", - "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.0.1", - "pkg:golang/cloud.google.com/go/storage@v1.0.0", - "pkg:golang/github.com/golang/mock@v1.3.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20191129062945-2f5052295587", - "pkg:golang/golang.org/x/lint@v0.0.0-20191125180803-fdd1cda4f05f", - "pkg:golang/golang.org/x/net@v0.0.0-20190724013045-ca1201d0de80", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/sys@v0.0.0-20190726091711-fc99dfbffb4e", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20191216173652-a0e659d51361", - "pkg:golang/google.golang.org/api@v0.14.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20191216164720-4f79533eabd1", - "pkg:golang/google.golang.org/grpc@v1.21.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.3.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.46.3", - "pkg:golang/cloud.google.com/go/storage@v1.0.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/exp@v0.0.0-20191030013958-a1ab85dbe136", - "pkg:golang/golang.org/x/lint@v0.0.0-20190930215403-16217165b5de", - "pkg:golang/golang.org/x/tools@v0.0.0-20191113191852-77e3bb0ad9e7", - "pkg:golang/google.golang.org/api@v0.13.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20191108220845-16a3f7862a1a", - "pkg:golang/google.golang.org/grpc@v1.21.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/pubsub@v1.1.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.46.3", - "pkg:golang/cloud.google.com/go/storage@v1.0.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20191030013958-a1ab85dbe136", - "pkg:golang/golang.org/x/lint@v0.0.0-20190930215403-16217165b5de", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "pkg:golang/golang.org/x/tools@v0.0.0-20191115202509-3a792d9c32b2", - "pkg:golang/google.golang.org/api@v0.14.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20191115194625-c23dd37a84c9", - "pkg:golang/google.golang.org/grpc@v1.21.1" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.3.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20191209160850-c0dbc17a3553", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20191202225959-858c2ad4c8b6", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.34.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e", - "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4", - "pkg:golang/google.golang.org/appengine@v1.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191228213918-04cbcbbfeed8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191227053925-7b8e75db28f4", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191230161307-f3c370f40bfb", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "dependsOn": [ - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "dependsOn": [ - "pkg:golang/golang.org/x/exp@v0.0.0-20190306152737-a1d7652674e8", - "pkg:golang/golang.org/x/image@v0.0.0-20190227222117-0694c2d4d067", - "pkg:golang/golang.org/x/sys@v0.0.0-20190312061237-fead79001313" - ] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.1.0", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190510104115-cbcb75029529" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200207183749-b753a1ba74fa", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.4.0", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262", - "pkg:golang/rsc.io/quote/v3@v3.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200212024743-f11f1df84d12", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.1.1-0.20191107180719-034126e5016b", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191001151750-bb3f8db39f24", - "dependsOn": [] - }, - { - "ref": "pkg:golang/rsc.io/sampler@v1.3.0", - "dependsOn": [ - "pkg:golang/golang.org/x/text@v0.0.0-20170915032832-14c0d48ead0c" - ] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/btree@v0.0.0-20180813153112-4030bb1f1f0c", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20181206194817-3ea8567a2e57", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.4", - "dependsOn": [ - "pkg:golang/google.golang.org/grpc@v1.19.0" - ] - }, - { - "ref": "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190301231843-5614ed5bae6f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20190226205417-e64efc72b421", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.34.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e", - "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4", - "pkg:golang/google.golang.org/appengine@v1.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.1-0.20180807135948-17ff2d5776d2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/time@v0.0.0-20181108054448-85acf8d2951c", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190312170243-e65039ee4138", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.4.0", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190301231843-5614ed5bae6f", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190226205417-e64efc72b421", - "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "pkg:golang/golang.org/x/tools@v0.0.0-20190312170243-e65039ee4138", - "pkg:golang/google.golang.org/appengine@v1.4.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190307195333-5fe7a883aa19", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190418145605-e7d98fc518a7", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190106161140-3f1c8253044a", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190307195333-5fe7a883aa19", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/github.com/kr/text@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/kr/pty@v1.1.1" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.4.0.20200313231945-b860323f09d0", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/protobuf@v1.20.1-0.20200309200217-e05f789c0967" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.54.0", - "pkg:golang/cloud.google.com/go/bigquery@v1.5.0", - "pkg:golang/github.com/golang/protobuf@v1.3.4", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0", - "pkg:golang/golang.org/x/tools@v0.0.0-20200312045724-11d5b4c81c7d", - "pkg:golang/google.golang.org/api@v0.20.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200312145019-da6875a35672", - "pkg:golang/google.golang.org/grpc@v1.28.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20220128215802-99c3d69c2c27", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220126215142-9970aeb2e350", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/google.golang.org/grpc@v1.40.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20210609004039-a478d1d731e9", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20200824232613-28f6c0f3b639", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.1.4", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.3.5", - "pkg:golang/golang.org/x/mod@v0.4.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.50.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.84.0", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/net@v0.0.0-20210503060351-7fd8e65b6420", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210628180205-a41e5a781914", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20210616094352-59db8d763f22", - "pkg:golang/golang.org/x/tools@v0.1.4", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210624195500-8bfb893ecb84", - "pkg:golang/google.golang.org/grpc@v1.38.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210713002101-d411969a0d9a", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.4", - "pkg:golang/google.golang.org/grpc@v1.39.0", - "pkg:golang/google.golang.org/protobuf@v1.27.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.44.2", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "pkg:golang/github.com/golang/mock@v1.3.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/btree@v1.0.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190510132918-efd6b22b2522", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "pkg:golang/golang.org/x/tools@v0.0.0-20190628153133-6cdbf07be9d0", - "pkg:golang/google.golang.org/api@v0.8.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64", - "pkg:golang/google.golang.org/grpc@v1.21.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a", - "pkg:golang/rsc.io/binaryregexp@v0.2.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.8.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "pkg:golang/google.golang.org/grpc@v1.20.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.21.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.26.0", - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/client9/misspell@v0.3.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd", - "pkg:golang/google.golang.org/appengine@v1.1.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.44.1", - "dependsOn": [ - "pkg:golang/github.com/golang/mock@v1.3.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/btree@v1.0.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190510132918-efd6b22b2522", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190624142023-c5567b49c5d0", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "pkg:golang/golang.org/x/tools@v0.0.0-20190628153133-6cdbf07be9d0", - "pkg:golang/google.golang.org/api@v0.8.0", - "pkg:golang/google.golang.org/appengine@v1.6.1", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64", - "pkg:golang/google.golang.org/grpc@v1.21.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a", - "pkg:golang/rsc.io/binaryregexp@v0.2.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190624142023-c5567b49c5d0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.7.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "pkg:golang/google.golang.org/grpc@v1.20.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.6.1", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/golang.org/x/crypto@v0.0.0-20190605123033-f99c8df09eb5", - "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65", - "pkg:golang/golang.org/x/sys@v0.0.0-20190606165138-5da285871e9c", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190606124116-d0a3d012864b" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.45.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.0.1", - "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "pkg:golang/github.com/golang/mock@v1.3.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190510132918-efd6b22b2522", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "pkg:golang/golang.org/x/tools@v0.0.0-20190628153133-6cdbf07be9d0", - "pkg:golang/google.golang.org/api@v0.9.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.21.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/go.opencensus.io@v0.22.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/golang.org/x/net@v0.0.0-20190501004415-9ce7a6920f09", - "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb", - "pkg:golang/google.golang.org/grpc@v1.20.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.9.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "pkg:golang/google.golang.org/grpc@v1.20.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.46.3", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.0.1", - "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.0.1", - "pkg:golang/github.com/golang/mock@v1.3.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190829153037-c13cbed26979", - "pkg:golang/golang.org/x/lint@v0.0.0-20190909230951-414d861bb4ac", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190911174233-4f2ddba30aff", - "pkg:golang/google.golang.org/api@v0.9.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190911173649-1774047e7e51", - "pkg:golang/google.golang.org/grpc@v1.21.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190911173649-1774047e7e51", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191125144606-a911d9008d1f", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190621195816-6e04913cbbac", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - ] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20191129062945-2f5052295587", - "dependsOn": [ - "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.0", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190724013045-ca1201d0de80", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190726091711-fc99dfbffb4e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191216173652-a0e659d51361", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.14.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "pkg:golang/google.golang.org/grpc@v1.20.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191216164720-4f79533eabd1", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20191030013958-a1ab85dbe136", - "dependsOn": [ - "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.0", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190930215403-16217165b5de", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191113191852-77e3bb0ad9e7", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.13.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "pkg:golang/google.golang.org/grpc@v1.20.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191108220845-16a3f7862a1a", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191115202509-3a792d9c32b2", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191115194625-c23dd37a84c9", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190306152737-a1d7652674e8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/image@v0.0.0-20190227222117-0694c2d4d067", - "dependsOn": [ - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190312061237-fead79001313", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.0.0-20170915032832-14c0d48ead0c", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/kr/pty@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.20.1-0.20200309200217-e05f789c0967", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.2", - "pkg:golang/github.com/google/go-cmp@v0.4.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.54.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.4.0", - "pkg:golang/cloud.google.com/go/datastore@v1.1.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.2.0", - "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "pkg:golang/github.com/golang/mock@v1.4.1", - "pkg:golang/github.com/golang/protobuf@v1.3.4", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20200229191704-1ebb73c60ed3", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/net@v0.0.0-20200301022130-244492dfa37a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200302150141-5c8b2ff67527", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20200304193943-95d2e580d8eb", - "pkg:golang/google.golang.org/api@v0.20.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200305110556-506484158171", - "pkg:golang/google.golang.org/grpc@v1.27.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.5.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.53.0", - "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "pkg:golang/github.com/golang/protobuf@v1.3.4", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/tools@v0.0.0-20200227222343-706bc42d1f0d", - "pkg:golang/google.golang.org/api@v0.19.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200228133532-8c2c7df3a383", - "pkg:golang/google.golang.org/grpc@v1.27.1" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.3.4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200312045724-11d5b4c81c7d", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200312145019-da6875a35672", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.84.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "pkg:golang/github.com/golang/mock@v1.5.0", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/google/martian/v3@v3.2.1", - "pkg:golang/github.com/google/pprof@v0.0.0-20210601050228-01bbb1931b22", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210514164344-f6687ab2804c", - "pkg:golang/golang.org/x/text@v0.3.6", - "pkg:golang/golang.org/x/tools@v0.1.2", - "pkg:golang/google.golang.org/api@v0.48.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210608205507-b6d2f5bf0d7d", - "pkg:golang/google.golang.org/grpc@v1.38.0", - "pkg:golang/google.golang.org/protobuf@v1.26.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210616094352-59db8d763f22", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210624195500-8bfb893ecb84", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.3", - "pkg:golang/google.golang.org/grpc@v1.38.0", - "pkg:golang/google.golang.org/protobuf@v1.26.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.38.0", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20201120205902-5459f2c99403", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.9-0.20210217033140-668b12f5399d", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.5.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "pkg:golang/google.golang.org/protobuf@v1.25.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/btree@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190510132918-efd6b22b2522", - "dependsOn": [ - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/golang.org/x/image@v0.0.0-20190227222117-0694c2d4d067", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190312151609-d3739f865fa6", - "pkg:golang/golang.org/x/sys@v0.0.0-20190312061237-fead79001313", - "pkg:golang/golang.org/x/tools@v0.0.0-20190312151545-0bb0c0a6e846" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190628153133-6cdbf07be9d0", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - ] - }, - { - "ref": "pkg:golang/rsc.io/binaryregexp@v0.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190605123033-f99c8df09eb5", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190606165138-5da285871e9c", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190606124116-d0a3d012864b", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190501004415-9ce7a6920f09", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190829153037-c13cbed26979", - "dependsOn": [ - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.0", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "pkg:golang/golang.org/x/tools@v0.0.0-20190816200558-6889da9d5479" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190909230951-414d861bb4ac", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190911174233-4f2ddba30aff", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.2", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/protobuf@v0.0.0-20200228230310-ab0ca4ff8a60" - ] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.4.1", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262", - "pkg:golang/rsc.io/quote/v3@v3.1.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200301022130-244492dfa37a", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200302150141-5c8b2ff67527", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200304193943-95d2e580d8eb", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200305110556-506484158171", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200227222343-706bc42d1f0d", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.19.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200228133532-8c2c7df3a383", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.5.0", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e" - ] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20210601050228-01bbb1931b22", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20200824232613-28f6c0f3b639", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210514164344-f6687ab2804c", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/google.golang.org/appengine@v1.6.6" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.1.2", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.3.5", - "pkg:golang/golang.org/x/mod@v0.4.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.48.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.83.0", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/net@v0.0.0-20210503060351-7fd8e65b6420", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210514164344-f6687ab2804c", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20210603125802-9665404d3644", - "pkg:golang/golang.org/x/tools@v0.1.2", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210604141403-392c879c8b08", - "pkg:golang/google.golang.org/grpc@v1.38.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210608205507-b6d2f5bf0d7d", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.2", - "pkg:golang/google.golang.org/grpc@v1.38.0", - "pkg:golang/google.golang.org/protobuf@v1.26.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.1.3", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.3.5", - "pkg:golang/golang.org/x/mod@v0.4.2", - "pkg:golang/golang.org/x/net@v0.0.0-20210405180319-a5a99cb37ef4", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20210510120138-977fb7262007", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/mobile@v0.0.0-20190312151609-d3739f865fa6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190312151545-0bb0c0a6e846", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190816200558-6889da9d5479", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200228230310-ab0ca4ff8a60", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1.0.20200221234624-67d41d38c208", - "pkg:golang/github.com/google/go-cmp@v0.4.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.83.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "pkg:golang/github.com/golang/mock@v1.5.0", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.6", - "pkg:golang/github.com/google/martian/v3@v3.2.1", - "pkg:golang/github.com/google/pprof@v0.0.0-20210601050228-01bbb1931b22", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210514164344-f6687ab2804c", - "pkg:golang/golang.org/x/text@v0.3.6", - "pkg:golang/golang.org/x/tools@v0.1.2", - "pkg:golang/google.golang.org/api@v0.47.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210602131652-f16073e35f0c", - "pkg:golang/google.golang.org/grpc@v1.38.0", - "pkg:golang/google.golang.org/protobuf@v1.26.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210603125802-9665404d3644", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210604141403-392c879c8b08", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.2", - "pkg:golang/google.golang.org/grpc@v1.38.0", - "pkg:golang/google.golang.org/protobuf@v1.26.0" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1.0.20200221234624-67d41d38c208", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/protobuf@v0.0.0-20200221191635-4d8936d0db64" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.47.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.81.0", - "pkg:golang/github.com/google/go-cmp@v0.5.5", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/net@v0.0.0-20210503060351-7fd8e65b6420", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210514164344-f6687ab2804c", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20210514084401-e8d321eab015", - "pkg:golang/golang.org/x/tools@v0.1.1", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210513213006-bf773b8c8384", - "pkg:golang/google.golang.org/grpc@v1.37.1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210602131652-f16073e35f0c", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.2", - "pkg:golang/google.golang.org/grpc@v1.38.0", - "pkg:golang/google.golang.org/protobuf@v1.26.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200221191635-4d8936d0db64", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1", - "pkg:golang/github.com/google/go-cmp@v0.3.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.81.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "pkg:golang/github.com/golang/mock@v1.5.0", - "pkg:golang/github.com/golang/protobuf@v1.5.1", - "pkg:golang/github.com/google/go-cmp@v0.5.5", - "pkg:golang/github.com/google/martian/v3@v3.1.0", - "pkg:golang/github.com/google/pprof@v0.0.0-20210226084205-cbba55b83ad5", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20201208152925-83fdc39ff7b5", - "pkg:golang/golang.org/x/net@v0.0.0-20210316092652-d523dce5a7f4", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210313182246-cd4f82c27b84", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.0", - "pkg:golang/google.golang.org/api@v0.43.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210402141018-6c239bbf2bb1", - "pkg:golang/google.golang.org/grpc@v1.36.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210514084401-e8d321eab015", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210513213006-bf773b8c8384", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/lint@v0.0.0-20201208152925-83fdc39ff7b5", - "pkg:golang/golang.org/x/net@v0.0.0-20210316092652-d523dce5a7f4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210320140829-1e4c9ba3b0c4", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.0", - "pkg:golang/google.golang.org/grpc@v1.36.1", - "pkg:golang/google.golang.org/protobuf@v1.26.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.37.1", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20201120205902-5459f2c99403", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.9-0.20210217033140-668b12f5399d", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.5.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "pkg:golang/google.golang.org/protobuf@v1.25.0" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.3.1", - "pkg:golang/google.golang.org/protobuf@v0.0.0-20200109180630-ec00e32a8dfd" - ] - }, - { - "ref": "pkg:golang/github.com/google/martian/v3@v3.1.0", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190628185345-da137c7871d7" - ] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20210226084205-cbba55b83ad5", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20200824232613-28f6c0f3b639", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210313182246-cd4f82c27b84", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/google.golang.org/appengine@v1.6.6" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.43.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.79.0", - "pkg:golang/github.com/google/go-cmp@v0.5.5", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20201208152925-83fdc39ff7b5", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210313182246-cd4f82c27b84", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20210320140829-1e4c9ba3b0c4", - "pkg:golang/golang.org/x/tools@v0.1.0", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210319143718-93e7006c17a6", - "pkg:golang/google.golang.org/grpc@v1.36.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210402141018-6c239bbf2bb1", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20201208152925-83fdc39ff7b5", - "pkg:golang/golang.org/x/net@v0.0.0-20210316092652-d523dce5a7f4", - "pkg:golang/golang.org/x/sys@v0.0.0-20210320140829-1e4c9ba3b0c4", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.0", - "pkg:golang/google.golang.org/grpc@v1.36.1", - "pkg:golang/google.golang.org/protobuf@v1.26.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200109180630-ec00e32a8dfd", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.3.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.79.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "pkg:golang/github.com/golang/mock@v1.5.0", - "pkg:golang/github.com/golang/protobuf@v1.4.3", - "pkg:golang/github.com/google/go-cmp@v0.5.5", - "pkg:golang/github.com/google/martian/v3@v3.1.0", - "pkg:golang/github.com/google/pprof@v0.0.0-20210226084205-cbba55b83ad5", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20201208152925-83fdc39ff7b5", - "pkg:golang/golang.org/x/net@v0.0.0-20210226172049-e18ecbb05110", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210220000619-9bb904979d93", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.0", - "pkg:golang/google.golang.org/api@v0.41.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210310155132-4ce2db91004e", - "pkg:golang/google.golang.org/grpc@v1.36.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210319143718-93e7006c17a6", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20210226172049-e18ecbb05110", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20201119102817-f84b799fce68", - "pkg:golang/golang.org/x/term@v0.0.0-20201126162022-7de9c90e9dd1", - "pkg:golang/golang.org/x/text@v0.3.3" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210220000619-9bb904979d93", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/google.golang.org/appengine@v1.6.6" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.41.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.78.0", - "pkg:golang/github.com/google/go-cmp@v0.5.5", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20201208152925-83fdc39ff7b5", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210220000619-9bb904979d93", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/sys@v0.0.0-20210305230114-8fe3ee5dd75b", - "pkg:golang/golang.org/x/tools@v0.1.0", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210303154014-9728d6b83eeb", - "pkg:golang/google.golang.org/grpc@v1.36.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210310155132-4ce2db91004e", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.78.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "pkg:golang/github.com/golang/mock@v1.4.4", - "pkg:golang/github.com/golang/protobuf@v1.4.3", - "pkg:golang/github.com/google/go-cmp@v0.5.4", - "pkg:golang/github.com/google/martian/v3@v3.1.0", - "pkg:golang/github.com/google/pprof@v0.0.0-20210122040257-d980be63207e", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.5", - "pkg:golang/golang.org/x/lint@v0.0.0-20201208152925-83fdc39ff7b5", - "pkg:golang/golang.org/x/mod@v0.4.1", - "pkg:golang/golang.org/x/net@v0.0.0-20210119194325-5f4716e94777", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20210218202405-ba52d332ba99", - "pkg:golang/golang.org/x/sys@v0.0.0-20210220050731-9a76102bfb43", - "pkg:golang/golang.org/x/text@v0.3.5", - "pkg:golang/golang.org/x/tools@v0.1.0", - "pkg:golang/google.golang.org/api@v0.40.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20210222152913-aa3ee6e6a81c", - "pkg:golang/google.golang.org/grpc@v1.35.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210305230114-8fe3ee5dd75b", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210303154014-9728d6b83eeb", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.4", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20210122040257-d980be63207e", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20200824232613-28f6c0f3b639", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/go.opencensus.io@v0.22.5", - "dependsOn": [ - "pkg:golang/github.com/golang/groupcache@v0.0.0-20190702054246-869f871628b6", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/stretchr/testify@v1.4.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd", - "pkg:golang/golang.org/x/text@v0.3.3", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb", - "pkg:golang/google.golang.org/grpc@v1.20.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.4.1", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20210119194325-5f4716e94777", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20201119102817-f84b799fce68", - "pkg:golang/golang.org/x/term@v0.0.0-20201126162022-7de9c90e9dd1", - "pkg:golang/golang.org/x/text@v0.3.3" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20210218202405-ba52d332ba99", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/google.golang.org/appengine@v1.6.6" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210220050731-9a76102bfb43", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.40.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.74.0", - "pkg:golang/github.com/google/go-cmp@v0.5.4", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.5", - "pkg:golang/golang.org/x/lint@v0.0.0-20201208152925-83fdc39ff7b5", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20201208152858-08078c50e5b5", - "pkg:golang/golang.org/x/sync@v0.0.0-20201207232520-09787c993a3a", - "pkg:golang/golang.org/x/sys@v0.0.0-20210104204734-6f8348627aad", - "pkg:golang/golang.org/x/tools@v0.0.0-20210105154028-b0ab187a4818", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20201214200347-8c77b98c765d", - "pkg:golang/google.golang.org/grpc@v1.34.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20210222152913-aa3ee6e6a81c", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.35.0", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20201120205902-5459f2c99403", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.9-0.20201210154907-fd9021fe5dad", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.5.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "pkg:golang/google.golang.org/protobuf@v1.25.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.74.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "pkg:golang/github.com/golang/mock@v1.4.4", - "pkg:golang/github.com/golang/protobuf@v1.4.3", - "pkg:golang/github.com/google/go-cmp@v0.5.4", - "pkg:golang/github.com/google/martian/v3@v3.1.0", - "pkg:golang/github.com/google/pprof@v0.0.0-20201203190320-1bf35d6f28c2", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.5", - "pkg:golang/golang.org/x/lint@v0.0.0-20201208152925-83fdc39ff7b5", - "pkg:golang/golang.org/x/mod@v0.4.0", - "pkg:golang/golang.org/x/net@v0.0.0-20201209123823-ac852fbbde11", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20201208152858-08078c50e5b5", - "pkg:golang/golang.org/x/text@v0.3.4", - "pkg:golang/golang.org/x/tools@v0.0.0-20201208233053-a543418bbed2", - "pkg:golang/google.golang.org/api@v0.36.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20201210142538-e3217bee35cc", - "pkg:golang/google.golang.org/grpc@v1.34.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20201208152858-08078c50e5b5", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/google.golang.org/appengine@v1.6.6" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20201207232520-09787c993a3a", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210104204734-6f8348627aad", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20210105154028-b0ab187a4818", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.2.1", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", - "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20201214200347-8c77b98c765d", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.34.0", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20200629203442-efcf912fb354", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.7", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.5.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "pkg:golang/google.golang.org/protobuf@v1.25.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20201203190320-1bf35d6f28c2", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20200824232613-28f6c0f3b639", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.4.0", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20201209123823-ac852fbbde11", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20201119102817-f84b799fce68", - "pkg:golang/golang.org/x/term@v0.0.0-20201126162022-7de9c90e9dd1", - "pkg:golang/golang.org/x/text@v0.3.3" - ] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.4", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20201208233053-a543418bbed2", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.2.1", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", - "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.36.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.72.0", - "pkg:golang/github.com/google/go-cmp@v0.5.4", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.5", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20201109201403-9fd604954f58", - "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", - "pkg:golang/golang.org/x/sys@v0.0.0-20201201145000-ef89a241ccb3", - "pkg:golang/golang.org/x/tools@v0.0.0-20201201161351-ac6f37ff4c2a", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20201201144952-b05cb90ed32e", - "pkg:golang/google.golang.org/grpc@v1.33.2" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20201210142538-e3217bee35cc", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0" - ] - }, - { - "ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20200629203442-efcf912fb354", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/google.golang.org/grpc@v1.25.1" - ] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.7", - "dependsOn": [ - "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20200629203442-efcf912fb354", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "pkg:golang/github.com/stretchr/testify@v1.5.1", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.23.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.72.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "pkg:golang/github.com/golang/mock@v1.4.4", - "pkg:golang/github.com/golang/protobuf@v1.4.3", - "pkg:golang/github.com/google/go-cmp@v0.5.2", - "pkg:golang/github.com/google/martian/v3@v3.1.0", - "pkg:golang/github.com/google/pprof@v0.0.0-20201023163331-3e6fc7fc9c4c", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.5", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/net@v0.0.0-20201031054903-ff519b6c9102", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200902213428-5d25da1a8d43", - "pkg:golang/golang.org/x/text@v0.3.4", - "pkg:golang/golang.org/x/tools@v0.0.0-20201110124207-079ba7bd75cd", - "pkg:golang/google.golang.org/api@v0.35.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20201109203340-2640f1f9cdfb", - "pkg:golang/google.golang.org/grpc@v1.33.2" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20201109201403-9fd604954f58", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/google.golang.org/appengine@v1.6.6" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20201201145000-ef89a241ccb3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20201201161351-ac6f37ff4c2a", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.2.1", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", - "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20201201144952-b05cb90ed32e", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.2", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20201023163331-3e6fc7fc9c4c", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20200824232613-28f6c0f3b639", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20201031054903-ff519b6c9102", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f", - "pkg:golang/golang.org/x/text@v0.3.3" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20200902213428-5d25da1a8d43", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/google.golang.org/appengine@v1.6.6" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20201110124207-079ba7bd75cd", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.2.1", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", - "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.35.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/github.com/google/go-cmp@v0.5.2", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.4", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200902213428-5d25da1a8d43", - "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "pkg:golang/golang.org/x/sys@v0.0.0-20200905004654-be1d3432aa8f", - "pkg:golang/golang.org/x/tools@v0.0.0-20200904185747-39188db58858", - "pkg:golang/google.golang.org/appengine@v1.6.6", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200904004341-0bd0a958aa1d", - "pkg:golang/google.golang.org/grpc@v1.31.1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20201109203340-2640f1f9cdfb", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200905004654-be1d3432aa8f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200904185747-39188db58858", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.2.1", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200904004341-0bd0a958aa1d", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.31.1", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - } - ] -} + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "group": "github.com/GoogleCloudPlatform/microservices-demo/src", + "name": "checkoutservice", + "version": "v0.0.0", + "purl": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0", + "type": "application", + "bom-ref": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0" + } + }, + "components": [ + { + "group": "github.com/GoogleCloudPlatform/microservices-demo/src", + "name": "checkoutservice", + "version": "v0.0.0", + "purl": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0", + "type": "application", + "bom-ref": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0" + }, + { + "group": "cloud.google.com", + "name": "go", + "version": "v0.100.2", + "purl": "pkg:golang/cloud.google.com/go@v0.100.2", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go@v0.100.2" + }, + { + "group": "cloud.google.com/go", + "name": "compute", + "version": "v1.6.1", + "purl": "pkg:golang/cloud.google.com/go/compute@v1.6.1", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go/compute@v1.6.1" + }, + { + "group": "cloud.google.com/go", + "name": "monitoring", + "version": "v1.1.0", + "purl": "pkg:golang/cloud.google.com/go/monitoring@v1.1.0", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go/monitoring@v1.1.0" + }, + { + "group": "cloud.google.com/go", + "name": "profiler", + "version": "v0.3.0", + "purl": "pkg:golang/cloud.google.com/go/profiler@v0.3.0", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go/profiler@v0.3.0" + }, + { + "group": "cloud.google.com/go", + "name": "trace", + "version": "v1.0.0", + "purl": "pkg:golang/cloud.google.com/go/trace@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go/trace@v1.0.0" + }, + { + "group": "contrib.go.opencensus.io/exporter", + "name": "jaeger", + "version": "v0.2.1", + "purl": "pkg:golang/contrib.go.opencensus.io/exporter/jaeger@v0.2.1", + "type": "library", + "bom-ref": "pkg:golang/contrib.go.opencensus.io/exporter/jaeger@v0.2.1" + }, + { + "group": "contrib.go.opencensus.io/exporter", + "name": "stackdriver", + "version": "v0.13.12", + "purl": "pkg:golang/contrib.go.opencensus.io/exporter/stackdriver@v0.13.12", + "type": "library", + "bom-ref": "pkg:golang/contrib.go.opencensus.io/exporter/stackdriver@v0.13.12" + }, + { + "group": "github.com/aws", + "name": "aws-sdk-go", + "version": "v1.43.31", + "purl": "pkg:golang/github.com/aws/aws-sdk-go@v1.43.31", + "type": "library", + "bom-ref": "pkg:golang/github.com/aws/aws-sdk-go@v1.43.31" + }, + { + "group": "github.com/census-instrumentation", + "name": "opencensus-proto", + "version": "v0.3.0", + "purl": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0" + }, + { + "group": "github.com/cespare", + "name": "xxhash", + "version": "v1.1.0", + "purl": "pkg:golang/github.com/cespare/xxhash@v1.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/cespare/xxhash@v1.1.0" + }, + { + "group": "github.com/cncf/udpa", + "name": "go", + "version": "v0.0.0-20210930031921-04548b0d99d4", + "purl": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", + "type": "library", + "bom-ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4" + }, + { + "group": "github.com/cncf/xds", + "name": "go", + "version": "v0.0.0-20211011173535-cb28da3451f1", + "purl": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", + "type": "library", + "bom-ref": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1" + }, + { + "group": "github.com/envoyproxy", + "name": "go-control-plane", + "version": "v0.10.2-0.20220325020618-49ff273808a1", + "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1", + "type": "library", + "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1" + }, + { + "group": "github.com/envoyproxy", + "name": "protoc-gen-validate", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0" + }, + { + "group": "github.com/golang", + "name": "groupcache", + "version": "v0.0.0-20210331224755-41bb18bfe9da", + "purl": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "type": "library", + "bom-ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da" + }, + { + "group": "github.com/golang", + "name": "protobuf", + "version": "v1.5.2", + "purl": "pkg:golang/github.com/golang/protobuf@v1.5.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.2" + }, + { + "group": "github.com/google", + "name": "go-cmp", + "version": "v0.5.8", + "purl": "pkg:golang/github.com/google/go-cmp@v0.5.8", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.8" + }, + { + "group": "github.com/google", + "name": "pprof", + "version": "v0.0.0-20220412212628-83db2b799d1f", + "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f" + }, + { + "group": "github.com/google", + "name": "uuid", + "version": "v1.3.0", + "purl": "pkg:golang/github.com/google/uuid@v1.3.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/uuid@v1.3.0" + }, + { + "group": "github.com/googleapis/gax-go", + "name": "v2", + "version": "v2.4.0", + "purl": "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0" + }, + { + "group": "github.com/jmespath", + "name": "go-jmespath", + "version": "v0.4.0", + "purl": "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0" + }, + { + "group": "github.com/prometheus", + "name": "prometheus", + "version": "v2.5.0+incompatible", + "purl": "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible", + "type": "library", + "bom-ref": "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible" + }, + { + "group": "github.com/sirupsen", + "name": "logrus", + "version": "v1.8.1", + "purl": "pkg:golang/github.com/sirupsen/logrus@v1.8.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/sirupsen/logrus@v1.8.1" + }, + { + "group": "github.com/uber", + "name": "jaeger-client-go", + "version": "v2.25.0+incompatible", + "purl": "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible", + "type": "library", + "bom-ref": "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible" + }, + { + "group": "golang.org/x", + "name": "net", + "version": "v0.0.0-20220802222814-0bcc04d9c69b", + "purl": "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b" + }, + { + "group": "golang.org/x", + "name": "oauth2", + "version": "v0.0.0-20220411215720-9780585627b5", + "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5" + }, + { + "group": "golang.org/x", + "name": "sync", + "version": "v0.0.0-20210220032951-036812b2e83c", + "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c" + }, + { + "group": "golang.org/x", + "name": "text", + "version": "v0.3.7", + "purl": "pkg:golang/golang.org/x/text@v0.3.7", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/text@v0.3.7" + }, + { + "group": "google.golang.org", + "name": "api", + "version": "v0.78.0", + "purl": "pkg:golang/google.golang.org/api@v0.78.0", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/api@v0.78.0" + }, + { + "group": "google.golang.org", + "name": "appengine", + "version": "v1.6.7", + "purl": "pkg:golang/google.golang.org/appengine@v1.6.7", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.7" + }, + { + "group": "google.golang.org", + "name": "genproto", + "version": "v0.0.0-20220518221133-4f43b3371335", + "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335" + }, + { + "group": "google.golang.org", + "name": "grpc", + "version": "v1.48.0", + "purl": "pkg:golang/google.golang.org/grpc@v1.48.0", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/grpc@v1.48.0" + }, + { + "group": "google.golang.org", + "name": "protobuf", + "version": "v1.28.0", + "purl": "pkg:golang/google.golang.org/protobuf@v1.28.0", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.28.0" + }, + { + "group": "github.com/google/martian", + "name": "v3", + "version": "v3.2.1", + "purl": "pkg:golang/github.com/google/martian/v3@v3.2.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/martian/v3@v3.2.1" + }, + { + "name": "go.opencensus.io", + "version": "v0.23.0", + "purl": "pkg:golang/go.opencensus.io@v0.23.0", + "type": "library", + "bom-ref": "pkg:golang/go.opencensus.io@v0.23.0" + }, + { + "group": "golang.org/x", + "name": "xerrors", + "version": "v0.0.0-20220411194840-2f41105eb62f", + "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f" + }, + { + "group": "cloud.google.com/go", + "name": "storage", + "version": "v1.22.1", + "purl": "pkg:golang/cloud.google.com/go/storage@v1.22.1", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go/storage@v1.22.1" + }, + { + "group": "github.com/golang", + "name": "mock", + "version": "v1.6.0", + "purl": "pkg:golang/github.com/golang/mock@v1.6.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/golang/mock@v1.6.0" + }, + { + "group": "github.com/jstemmer", + "name": "go-junit-report", + "version": "v0.9.1", + "purl": "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1" + }, + { + "group": "golang.org/x", + "name": "lint", + "version": "v0.0.0-20210508222113-6edffad5e616", + "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616" + }, + { + "group": "golang.org/x", + "name": "tools", + "version": "v0.1.5", + "purl": "pkg:golang/golang.org/x/tools@v0.1.5", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/tools@v0.1.5" + }, + { + "group": "honnef.co/go", + "name": "tools", + "version": "v0.0.1-2020.1.4", + "purl": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "type": "library", + "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4" + }, + { + "group": "github.com/pkg", + "name": "errors", + "version": "v0.9.1", + "purl": "pkg:golang/github.com/pkg/errors@v0.9.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/pkg/errors@v0.9.1" + }, + { + "group": "github.com/OneOfOne", + "name": "xxhash", + "version": "v1.2.2", + "purl": "pkg:golang/github.com/OneOfOne/xxhash@v1.2.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/OneOfOne/xxhash@v1.2.2" + }, + { + "group": "github.com/spaolacci", + "name": "murmur3", + "version": "v0.0.0-20180118202830-f09979ecbc72", + "purl": "pkg:golang/github.com/spaolacci/murmur3@v0.0.0-20180118202830-f09979ecbc72", + "type": "library", + "bom-ref": "pkg:golang/github.com/spaolacci/murmur3@v0.0.0-20180118202830-f09979ecbc72" + }, + { + "group": "github.com/prometheus", + "name": "client_model", + "version": "v0.0.0-20190812154241-14fe0d1b01d4", + "purl": "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", + "type": "library", + "bom-ref": "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4" + }, + { + "group": "github.com/stretchr", + "name": "testify", + "version": "v1.7.0", + "purl": "pkg:golang/github.com/stretchr/testify@v1.7.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.7.0" + }, + { + "group": "go.opentelemetry.io/proto", + "name": "otlp", + "version": "v0.7.0", + "purl": "pkg:golang/go.opentelemetry.io/proto/otlp@v0.7.0", + "type": "library", + "bom-ref": "pkg:golang/go.opentelemetry.io/proto/otlp@v0.7.0" + }, + { + "group": "github.com/chzyer", + "name": "logex", + "version": "v1.1.10", + "purl": "pkg:golang/github.com/chzyer/logex@v1.1.10", + "type": "library", + "bom-ref": "pkg:golang/github.com/chzyer/logex@v1.1.10" + }, + { + "group": "github.com/chzyer", + "name": "readline", + "version": "v0.0.0-20180603132655-2972be24d48e", + "purl": "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", + "type": "library", + "bom-ref": "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e" + }, + { + "group": "github.com/chzyer", + "name": "test", + "version": "v0.0.0-20180213035817-a1ea475d72b1", + "purl": "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", + "type": "library", + "bom-ref": "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1" + }, + { + "group": "github.com/ianlancetaylor", + "name": "demangle", + "version": "v0.0.0-20210905161508-09a460cdf81d", + "purl": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20210905161508-09a460cdf81d", + "type": "library", + "bom-ref": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20210905161508-09a460cdf81d" + }, + { + "group": "github.com/jmespath/go-jmespath/internal", + "name": "testify", + "version": "v1.5.1", + "purl": "pkg:golang/github.com/jmespath/go-jmespath/internal/testify@v1.5.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/jmespath/go-jmespath/internal/testify@v1.5.1" + }, + { + "group": "github.com/davecgh", + "name": "go-spew", + "version": "v1.1.1", + "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1" + }, + { + "group": "github.com/pmezard", + "name": "go-difflib", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0" + }, + { + "group": "golang.org/x", + "name": "term", + "version": "v0.0.0-20210927222741-03fcf44c2211", + "purl": "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211" + }, + { + "group": "github.com/cespare/xxhash", + "name": "v2", + "version": "v2.1.1", + "purl": "pkg:golang/github.com/cespare/xxhash/v2@v2.1.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/cespare/xxhash/v2@v2.1.1" + }, + { + "group": "github.com/golang", + "name": "glog", + "version": "v0.0.0-20160126235308-23def4e6c14b", + "purl": "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", + "type": "library", + "bom-ref": "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b" + }, + { + "group": "github.com/golang", + "name": "snappy", + "version": "v0.0.3", + "purl": "pkg:golang/github.com/golang/snappy@v0.0.3", + "type": "library", + "bom-ref": "pkg:golang/github.com/golang/snappy@v0.0.3" + }, + { + "group": "google.golang.org/grpc/cmd", + "name": "protoc-gen-go-grpc", + "version": "v1.1.0", + "purl": "pkg:golang/google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1.0", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1.0" + }, + { + "group": "cloud.google.com/go", + "name": "iam", + "version": "v0.3.0", + "purl": "pkg:golang/cloud.google.com/go/iam@v0.3.0", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go/iam@v0.3.0" + }, + { + "group": "github.com/googleapis", + "name": "go-type-adapters", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/googleapis/go-type-adapters@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/googleapis/go-type-adapters@v1.0.0" + }, + { + "group": "golang.org/x", + "name": "mod", + "version": "v0.4.2", + "purl": "pkg:golang/golang.org/x/mod@v0.4.2", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/mod@v0.4.2" + }, + { + "group": "github.com/yuin", + "name": "goldmark", + "version": "v1.3.5", + "purl": "pkg:golang/github.com/yuin/goldmark@v1.3.5", + "type": "library", + "bom-ref": "pkg:golang/github.com/yuin/goldmark@v1.3.5" + }, + { + "group": "github.com/BurntSushi", + "name": "toml", + "version": "v0.3.1", + "purl": "pkg:golang/github.com/BurntSushi/toml@v0.3.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/BurntSushi/toml@v0.3.1" + }, + { + "group": "github.com/google", + "name": "renameio", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/google/renameio@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/renameio@v0.1.0" + }, + { + "group": "github.com/kisielk", + "name": "gotool", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/kisielk/gotool@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/kisielk/gotool@v1.0.0" + }, + { + "group": "github.com/rogpeppe", + "name": "go-internal", + "version": "v1.3.0", + "purl": "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0" + }, + { + "group": "github.com/stretchr", + "name": "objx", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/stretchr/objx@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/stretchr/objx@v0.1.0" + }, + { + "group": "gopkg.in", + "name": "yaml.v3", + "version": "v3.0.0-20200313102051-9f266ea9e77c", + "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c" + }, + { + "group": "github.com/grpc-ecosystem", + "name": "grpc-gateway", + "version": "v1.16.0", + "purl": "pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v1.16.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v1.16.0" + }, + { + "group": "golang.org/x", + "name": "crypto", + "version": "v0.0.0-20200622213623-75b288015ac9", + "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9" + }, + { + "group": "gopkg.in", + "name": "yaml.v2", + "version": "v2.2.8", + "purl": "pkg:golang/gopkg.in/yaml.v2@v2.2.8", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.8" + }, + { + "group": "cloud.google.com/go", + "name": "bigquery", + "version": "v1.8.0", + "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.8.0" + }, + { + "group": "golang.org/x", + "name": "exp", + "version": "v0.0.0-20200224162631-6cc2880d07d6", + "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6" + }, + { + "group": "github.com/client9", + "name": "misspell", + "version": "v0.3.4", + "purl": "pkg:golang/github.com/client9/misspell@v0.3.4", + "type": "library", + "bom-ref": "pkg:golang/github.com/client9/misspell@v0.3.4" + }, + { + "group": "cloud.google.com/go", + "name": "datastore", + "version": "v1.1.0", + "purl": "pkg:golang/cloud.google.com/go/datastore@v1.1.0", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go/datastore@v1.1.0" + }, + { + "group": "cloud.google.com/go", + "name": "pubsub", + "version": "v1.3.1", + "purl": "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go/pubsub@v1.3.1" + }, + { + "group": "github.com/google", + "name": "martian", + "version": "v2.1.0+incompatible", + "purl": "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible" + }, + { + "group": "gopkg.in", + "name": "errgo.v2", + "version": "v2.1.0", + "purl": "pkg:golang/gopkg.in/errgo.v2@v2.1.0", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/errgo.v2@v2.1.0" + }, + { + "group": "gopkg.in", + "name": "check.v1", + "version": "v1.0.0-20180628173108-788fd7840127", + "purl": "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127" + }, + { + "group": "github.com/antihax", + "name": "optional", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/antihax/optional@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/antihax/optional@v1.0.0" + }, + { + "group": "github.com/ghodss", + "name": "yaml", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/ghodss/yaml@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/ghodss/yaml@v1.0.0" + }, + { + "group": "github.com/rogpeppe", + "name": "fastuuid", + "version": "v1.2.0", + "purl": "pkg:golang/github.com/rogpeppe/fastuuid@v1.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/rogpeppe/fastuuid@v1.2.0" + }, + { + "group": "golang.org/x", + "name": "time", + "version": "v0.0.0-20191024005414-555d28b269f0", + "purl": "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0" + }, + { + "group": "rsc.io/quote", + "name": "v3", + "version": "v3.1.0", + "purl": "pkg:golang/rsc.io/quote/v3@v3.1.0", + "type": "library", + "bom-ref": "pkg:golang/rsc.io/quote/v3@v3.1.0" + }, + { + "group": "github.com/hashicorp", + "name": "golang-lru", + "version": "v0.5.1", + "purl": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1" + }, + { + "group": "github.com/kr", + "name": "pretty", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/kr/pretty@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/kr/pretty@v0.1.0" + }, + { + "group": "dmitri.shuralyov.com/gpu", + "name": "mtl", + "version": "v0.0.0-20190408044501-666a987793e9", + "purl": "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", + "type": "library", + "bom-ref": "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9" + }, + { + "group": "github.com/BurntSushi", + "name": "xgb", + "version": "v0.0.0-20160522181843-27f122750802", + "purl": "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", + "type": "library", + "bom-ref": "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802" + }, + { + "group": "github.com/go-gl/glfw/v3.3", + "name": "glfw", + "version": "v0.0.0-20200222043503-6f7a984d4dc4", + "purl": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4" + }, + { + "group": "golang.org/x", + "name": "image", + "version": "v0.0.0-20190802002840-cff245a6509b", + "purl": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b" + }, + { + "group": "golang.org/x", + "name": "mobile", + "version": "v0.0.0-20190719004257-d2bd2a29d028", + "purl": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028" + }, + { + "group": "rsc.io", + "name": "sampler", + "version": "v1.3.0", + "purl": "pkg:golang/rsc.io/sampler@v1.3.0", + "type": "library", + "bom-ref": "pkg:golang/rsc.io/sampler@v1.3.0" + }, + { + "group": "github.com/google", + "name": "btree", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/google/btree@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/btree@v1.0.0" + }, + { + "group": "github.com/kr", + "name": "text", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/kr/text@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/kr/text@v0.1.0" + }, + { + "group": "github.com/kr", + "name": "pty", + "version": "v1.1.1", + "purl": "pkg:golang/github.com/kr/pty@v1.1.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/kr/pty@v1.1.1" + }, + { + "group": "rsc.io", + "name": "binaryregexp", + "version": "v0.2.0", + "purl": "pkg:golang/rsc.io/binaryregexp@v0.2.0", + "type": "library", + "bom-ref": "pkg:golang/rsc.io/binaryregexp@v0.2.0" + }, + { + "group": "github.com/go-gl", + "name": "glfw", + "version": "v0.0.0-20190409004039-e6da0acd62b1", + "purl": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1" + } + ], + "dependencies": [ + { + "ref": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.100.2", + "pkg:golang/cloud.google.com/go/compute@v1.6.1", + "pkg:golang/cloud.google.com/go/monitoring@v1.1.0", + "pkg:golang/cloud.google.com/go/profiler@v0.3.0", + "pkg:golang/cloud.google.com/go/trace@v1.0.0", + "pkg:golang/contrib.go.opencensus.io/exporter/jaeger@v0.2.1", + "pkg:golang/contrib.go.opencensus.io/exporter/stackdriver@v0.13.12", + "pkg:golang/github.com/aws/aws-sdk-go@v1.43.31", + "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0", + "pkg:golang/github.com/cespare/xxhash@v1.1.0", + "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", + "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", + "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1", + "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.8", + "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f", + "pkg:golang/github.com/google/uuid@v1.3.0", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", + "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0", + "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible", + "pkg:golang/github.com/sirupsen/logrus@v1.8.1", + "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", + "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", + "pkg:golang/golang.org/x/text@v0.3.7", + "pkg:golang/google.golang.org/api@v0.78.0", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/google.golang.org/protobuf@v1.28.0" + ] + }, + { + "ref": "pkg:golang/cloud.google.com/go@v0.100.2", + "dependsOn": [ + "pkg:golang/cloud.google.com/go/compute@v1.6.1", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.8", + "pkg:golang/github.com/google/martian/v3@v3.2.1", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", + "pkg:golang/go.opencensus.io@v0.23.0", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f", + "pkg:golang/google.golang.org/api@v0.78.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/google.golang.org/protobuf@v1.28.0", + "pkg:golang/cloud.google.com/go/storage@v1.22.1", + "pkg:golang/github.com/golang/mock@v1.6.0", + "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f", + "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", + "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/golang.org/x/text@v0.3.7", + "pkg:golang/golang.org/x/tools@v0.1.5", + "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", + "pkg:golang/cloud.google.com/go/datastore@v1.1.0", + "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", + "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", + "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "pkg:golang/golang.org/x/mod@v0.4.2", + "pkg:golang/github.com/google/btree@v1.0.0", + "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0", + "pkg:golang/rsc.io/binaryregexp@v0.2.0" + ] + }, + { + "ref": "pkg:golang/cloud.google.com/go/compute@v1.6.1", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.100.2", + "pkg:golang/github.com/google/go-cmp@v0.5.8", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", + "pkg:golang/google.golang.org/api@v0.78.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/google.golang.org/protobuf@v1.28.0", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f" + ] + }, + { + "ref": "pkg:golang/cloud.google.com/go/monitoring@v1.1.0", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.100.2", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", + "pkg:golang/google.golang.org/api@v0.78.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/google.golang.org/protobuf@v1.28.0" + ] + }, + { + "ref": "pkg:golang/cloud.google.com/go/profiler@v0.3.0", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.100.2", + "pkg:golang/cloud.google.com/go/compute@v1.6.1", + "pkg:golang/cloud.google.com/go/storage@v1.22.1", + "pkg:golang/github.com/golang/mock@v1.6.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", + "pkg:golang/google.golang.org/api@v0.78.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/grpc@v1.48.0" + ] + }, + { + "ref": "pkg:golang/cloud.google.com/go/trace@v1.0.0", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.100.2", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", + "pkg:golang/google.golang.org/api@v0.78.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/google.golang.org/protobuf@v1.28.0" + ] + }, + { + "ref": "pkg:golang/contrib.go.opencensus.io/exporter/jaeger@v0.2.1", + "dependsOn": [ + "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible", + "pkg:golang/go.opencensus.io@v0.23.0", + "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", + "pkg:golang/google.golang.org/api@v0.78.0" + ] + }, + { + "ref": "pkg:golang/contrib.go.opencensus.io/exporter/stackdriver@v0.13.12", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.100.2", + "pkg:golang/cloud.google.com/go/monitoring@v1.1.0", + "pkg:golang/cloud.google.com/go/trace@v1.0.0", + "pkg:golang/github.com/aws/aws-sdk-go@v1.43.31", + "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.8", + "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", + "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible", + "pkg:golang/go.opencensus.io@v0.23.0", + "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", + "pkg:golang/golang.org/x/tools@v0.1.5", + "pkg:golang/google.golang.org/api@v0.78.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/google.golang.org/protobuf@v1.28.0", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4" + ] + }, + { + "ref": "pkg:golang/github.com/aws/aws-sdk-go@v1.43.31", + "dependsOn": [ + "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0", + "pkg:golang/github.com/pkg/errors@v0.9.1", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b" + ] + }, + { + "ref": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/cespare/xxhash@v1.1.0", + "dependsOn": [ + "pkg:golang/github.com/OneOfOne/xxhash@v1.2.2", + "pkg:golang/github.com/spaolacci/murmur3@v0.0.0-20180118202830-f09979ecbc72" + ] + }, + { + "ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", + "dependsOn": [ + "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", + "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/google.golang.org/grpc@v1.48.0" + ] + }, + { + "ref": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", + "dependsOn": [ + "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/google.golang.org/grpc@v1.48.0" + ] + }, + { + "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1", + "dependsOn": [ + "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0", + "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", + "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.8", + "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", + "pkg:golang/github.com/stretchr/testify@v1.7.0", + "pkg:golang/go.opentelemetry.io/proto/otlp@v0.7.0", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/google.golang.org/protobuf@v1.28.0", + "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4" + ] + }, + { + "ref": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/golang/protobuf@v1.5.2", + "dependsOn": [ + "pkg:golang/github.com/google/go-cmp@v0.5.8", + "pkg:golang/google.golang.org/protobuf@v1.28.0" + ] + }, + { + "ref": "pkg:golang/github.com/google/go-cmp@v0.5.8", + "dependsOn": [ + "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f" + ] + }, + { + "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f", + "dependsOn": [ + "pkg:golang/github.com/chzyer/logex@v1.1.10", + "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", + "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", + "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20210905161508-09a460cdf81d" + ] + }, + { + "ref": "pkg:golang/github.com/google/uuid@v1.3.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", + "dependsOn": [ + "pkg:golang/github.com/google/go-cmp@v0.5.8", + "pkg:golang/google.golang.org/api@v0.78.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/google.golang.org/protobuf@v1.28.0" + ] + }, + { + "ref": "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0", + "dependsOn": [ + "pkg:golang/github.com/jmespath/go-jmespath/internal/testify@v1.5.1" + ] + }, + { + "ref": "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/sirupsen/logrus@v1.8.1", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/github.com/stretchr/testify@v1.7.0" + ] + }, + { + "ref": "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "dependsOn": [ + "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211", + "pkg:golang/golang.org/x/text@v0.3.7", + "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9" + ] + }, + { + "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.100.2", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c" + ] + }, + { + "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/text@v0.3.7", + "dependsOn": [ + "pkg:golang/golang.org/x/tools@v0.1.5" + ] + }, + { + "ref": "pkg:golang/google.golang.org/api@v0.78.0", + "dependsOn": [ + "pkg:golang/cloud.google.com/go/compute@v1.6.1", + "pkg:golang/github.com/google/go-cmp@v0.5.8", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", + "pkg:golang/go.opencensus.io@v0.23.0", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", + "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/cloud.google.com/go@v0.100.2", + "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", + "pkg:golang/golang.org/x/tools@v0.1.5", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", + "pkg:golang/golang.org/x/text@v0.3.7", + "pkg:golang/github.com/golang/protobuf@v1.5.2" + ] + }, + { + "ref": "pkg:golang/google.golang.org/appengine@v1.6.7", + "dependsOn": [ + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/golang.org/x/text@v0.3.7", + "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", + "pkg:golang/golang.org/x/tools@v0.1.5" + ] + }, + { + "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "dependsOn": [ + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/golang.org/x/text@v0.3.7", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/google.golang.org/protobuf@v1.28.0", + "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", + "pkg:golang/golang.org/x/tools@v0.1.5", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c" + ] + }, + { + "ref": "pkg:golang/google.golang.org/grpc@v1.48.0", + "dependsOn": [ + "pkg:golang/github.com/cespare/xxhash/v2@v2.1.1", + "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", + "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", + "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1", + "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.8", + "pkg:golang/github.com/google/uuid@v1.3.0", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/protobuf@v1.28.0", + "pkg:golang/github.com/cespare/xxhash@v1.1.0", + "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "pkg:golang/github.com/golang/mock@v1.6.0", + "pkg:golang/cloud.google.com/go@v0.100.2", + "pkg:golang/github.com/BurntSushi/toml@v0.3.1", + "pkg:golang/github.com/client9/misspell@v0.3.4", + "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", + "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", + "pkg:golang/golang.org/x/tools@v0.1.5", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "pkg:golang/golang.org/x/text@v0.3.7" + ] + }, + { + "ref": "pkg:golang/google.golang.org/protobuf@v1.28.0", + "dependsOn": [ + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.8", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335" + ] + }, + { + "ref": "pkg:golang/github.com/google/martian/v3@v3.2.1", + "dependsOn": [ + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/golang/snappy@v0.0.3", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1.0", + "pkg:golang/google.golang.org/protobuf@v1.28.0" + ] + }, + { + "ref": "pkg:golang/go.opencensus.io@v0.23.0", + "dependsOn": [ + "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.8", + "pkg:golang/github.com/stretchr/testify@v1.7.0", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/golang.org/x/text@v0.3.7", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1" + ] + }, + { + "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f", + "dependsOn": [] + }, + { + "ref": "pkg:golang/cloud.google.com/go/storage@v1.22.1", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.100.2", + "pkg:golang/cloud.google.com/go/compute@v1.6.1", + "pkg:golang/cloud.google.com/go/iam@v0.3.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.8", + "pkg:golang/github.com/google/uuid@v1.3.0", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", + "pkg:golang/github.com/googleapis/go-type-adapters@v1.0.0", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f", + "pkg:golang/google.golang.org/api@v0.78.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/google.golang.org/protobuf@v1.28.0", + "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/golang.org/x/tools@v0.1.5", + "pkg:golang/cloud.google.com/go/datastore@v1.1.0", + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", + "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", + "pkg:golang/go.opencensus.io@v0.23.0", + "pkg:golang/google.golang.org/appengine@v1.6.7" + ] + }, + { + "ref": "pkg:golang/github.com/golang/mock@v1.6.0", + "dependsOn": [ + "pkg:golang/golang.org/x/mod@v0.4.2", + "pkg:golang/golang.org/x/tools@v0.1.5", + "pkg:golang/rsc.io/quote/v3@v3.1.0" + ] + }, + { + "ref": "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", + "dependsOn": [ + "pkg:golang/golang.org/x/tools@v0.1.5" + ] + }, + { + "ref": "pkg:golang/golang.org/x/tools@v0.1.5", + "dependsOn": [ + "pkg:golang/github.com/yuin/goldmark@v1.3.5", + "pkg:golang/golang.org/x/mod@v0.4.2", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f", + "pkg:golang/google.golang.org/appengine@v1.6.7" + ] + }, + { + "ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "dependsOn": [ + "pkg:golang/github.com/BurntSushi/toml@v0.3.1", + "pkg:golang/github.com/google/renameio@v0.1.0", + "pkg:golang/github.com/kisielk/gotool@v1.0.0", + "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0", + "pkg:golang/golang.org/x/mod@v0.4.2", + "pkg:golang/golang.org/x/tools@v0.1.5" + ] + }, + { + "ref": "pkg:golang/github.com/pkg/errors@v0.9.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/OneOfOne/xxhash@v1.2.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/spaolacci/murmur3@v0.0.0-20180118202830-f09979ecbc72", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", + "dependsOn": [ + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c" + ] + }, + { + "ref": "pkg:golang/github.com/stretchr/testify@v1.7.0", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/github.com/stretchr/objx@v0.1.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c", + "pkg:golang/gopkg.in/yaml.v2@v2.2.8" + ] + }, + { + "ref": "pkg:golang/go.opentelemetry.io/proto/otlp@v0.7.0", + "dependsOn": [ + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v1.16.0", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/google.golang.org/protobuf@v1.28.0" + ] + }, + { + "ref": "pkg:golang/github.com/chzyer/logex@v1.1.10", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20210905161508-09a460cdf81d", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/jmespath/go-jmespath/internal/testify@v1.5.1", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/github.com/stretchr/objx@v0.1.0", + "pkg:golang/gopkg.in/yaml.v2@v2.2.8" + ] + }, + { + "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/cespare/xxhash/v2@v2.1.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/golang/snappy@v0.0.3", + "dependsOn": [] + }, + { + "ref": "pkg:golang/google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1.0", + "dependsOn": [ + "pkg:golang/google.golang.org/protobuf@v1.28.0" + ] + }, + { + "ref": "pkg:golang/cloud.google.com/go/iam@v0.3.0", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.100.2", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", + "pkg:golang/google.golang.org/api@v0.78.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/grpc@v1.48.0" + ] + }, + { + "ref": "pkg:golang/github.com/googleapis/go-type-adapters@v1.0.0", + "dependsOn": [ + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/protobuf@v1.28.0" + ] + }, + { + "ref": "pkg:golang/golang.org/x/mod@v0.4.2", + "dependsOn": [ + "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", + "pkg:golang/golang.org/x/tools@v0.1.5", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f" + ] + }, + { + "ref": "pkg:golang/github.com/yuin/goldmark@v1.3.5", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/BurntSushi/toml@v0.3.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/google/renameio@v0.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/kisielk/gotool@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0", + "dependsOn": [ + "pkg:golang/gopkg.in/errgo.v2@v2.1.0" + ] + }, + { + "ref": "pkg:golang/github.com/stretchr/objx@v0.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c", + "dependsOn": [ + "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127" + ] + }, + { + "ref": "pkg:golang/github.com/grpc-ecosystem/grpc-gateway@v1.16.0", + "dependsOn": [ + "pkg:golang/github.com/antihax/optional@v1.0.0", + "pkg:golang/github.com/ghodss/yaml@v1.0.0", + "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/rogpeppe/fastuuid@v1.2.0", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/gopkg.in/yaml.v2@v2.2.8" + ] + }, + { + "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", + "dependsOn": [ + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b" + ] + }, + { + "ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.8", + "dependsOn": [ + "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127" + ] + }, + { + "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.100.2", + "pkg:golang/cloud.google.com/go/storage@v1.22.1", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.8", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", + "pkg:golang/golang.org/x/mod@v0.4.2", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/golang.org/x/tools@v0.1.5", + "pkg:golang/google.golang.org/api@v0.78.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616" + ] + }, + { + "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "dependsOn": [ + "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", + "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", + "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4", + "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", + "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", + "pkg:golang/golang.org/x/mod@v0.4.2", + "pkg:golang/golang.org/x/tools@v0.1.5", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f", + "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1" + ] + }, + { + "ref": "pkg:golang/github.com/client9/misspell@v0.3.4", + "dependsOn": [] + }, + { + "ref": "pkg:golang/cloud.google.com/go/datastore@v1.1.0", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.100.2", + "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.8", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "pkg:golang/golang.org/x/tools@v0.1.5", + "pkg:golang/google.golang.org/api@v0.78.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/google.golang.org/appengine@v1.6.7" + ] + }, + { + "ref": "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.100.2", + "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.8", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", + "pkg:golang/go.opencensus.io@v0.23.0", + "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", + "pkg:golang/golang.org/x/mod@v0.4.2", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", + "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", + "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0", + "pkg:golang/golang.org/x/tools@v0.1.5", + "pkg:golang/google.golang.org/api@v0.78.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/cloud.google.com/go/storage@v1.22.1", + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6" + ] + }, + { + "ref": "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", + "dependsOn": [] + }, + { + "ref": "pkg:golang/gopkg.in/errgo.v2@v2.1.0", + "dependsOn": [ + "pkg:golang/github.com/kr/pretty@v0.1.0", + "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127" + ] + }, + { + "ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/antihax/optional@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/ghodss/yaml@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/rogpeppe/fastuuid@v1.2.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/rsc.io/quote/v3@v3.1.0", + "dependsOn": [ + "pkg:golang/rsc.io/sampler@v1.3.0" + ] + }, + { + "ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/kr/pretty@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/kr/text@v0.1.0" + ] + }, + { + "ref": "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", + "dependsOn": [ + "pkg:golang/golang.org/x/text@v0.3.7" + ] + }, + { + "ref": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", + "dependsOn": [ + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b" + ] + }, + { + "ref": "pkg:golang/rsc.io/sampler@v1.3.0", + "dependsOn": [ + "pkg:golang/golang.org/x/text@v0.3.7" + ] + }, + { + "ref": "pkg:golang/github.com/google/btree@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/kr/text@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/kr/pty@v1.1.1" + ] + }, + { + "ref": "pkg:golang/github.com/kr/pty@v1.1.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/rsc.io/binaryregexp@v0.2.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", + "dependsOn": [] + } + ] +} \ No newline at end of file diff --git a/test/providers/tst_manifests/golang/go_mod_with_all_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/golang/go_mod_with_all_ignore/expected_sbom_stack_analysis.json index 2436085b..440e02f2 100644 --- a/test/providers/tst_manifests/golang/go_mod_with_all_ignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_with_all_ignore/expected_sbom_stack_analysis.json @@ -1,4656 +1,2905 @@ { - "bomFormat": "CycloneDX", - "specVersion": "1.4", - "version": 1, - "metadata": { - "timestamp": "2023-08-07T00:00:00.000Z", - "component": { - "group": "github.com/devfile-samples", - "name": "devfile-sample-go-basic", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/devfile-samples/devfile-sample-go-basic@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/devfile-samples/devfile-sample-go-basic@v0.0.0" - } - }, - "components": [ - { - "group": "github.com/devfile-samples", - "name": "devfile-sample-go-basic", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/devfile-samples/devfile-sample-go-basic@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/devfile-samples/devfile-sample-go-basic@v0.0.0" - }, - { - "group": "github.com/gin-contrib", - "name": "sse", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/gin-contrib/sse@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/gin-contrib/sse@v0.1.0" - }, - { - "group": "github.com/go-playground/validator", - "name": "v10", - "version": "v10.2.0", - "purl": "pkg:golang/github.com/go-playground/validator/v10@v10.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-playground/validator/v10@v10.2.0" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.3.3", - "purl": "pkg:golang/github.com/golang/protobuf@v1.3.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.3.3" - }, - { - "group": "github.com/json-iterator", - "name": "go", - "version": "v1.1.9", - "purl": "pkg:golang/github.com/json-iterator/go@v1.1.9", - "type": "library", - "bom-ref": "pkg:golang/github.com/json-iterator/go@v1.1.9" - }, - { - "group": "github.com/mattn", - "name": "go-isatty", - "version": "v0.0.12", - "purl": "pkg:golang/github.com/mattn/go-isatty@v0.0.12", - "type": "library", - "bom-ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.12" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.4.0", - "purl": "pkg:golang/github.com/stretchr/testify@v1.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.4.0" - }, - { - "group": "github.com/ugorji/go", - "name": "codec", - "version": "v1.1.7", - "purl": "pkg:golang/github.com/ugorji/go/codec@v1.1.7", - "type": "library", - "bom-ref": "pkg:golang/github.com/ugorji/go/codec@v1.1.7" - }, - { - "group": "gopkg.in", - "name": "yaml.v2", - "version": "v2.2.8", - "purl": "pkg:golang/gopkg.in/yaml.v2@v2.2.8", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.8" - }, - { - "group": "github.com/ipfs", - "name": "go-block-format", - "version": "v0.0.3", - "purl": "pkg:golang/github.com/ipfs/go-block-format@v0.0.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-block-format@v0.0.3" - }, - { - "group": "github.com/ipfs", - "name": "go-cid", - "version": "v0.0.7", - "purl": "pkg:golang/github.com/ipfs/go-cid@v0.0.7", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-cid@v0.0.7" - }, - { - "group": "github.com/ipfs", - "name": "go-ipld-cbor", - "version": "v0.0.5", - "purl": "pkg:golang/github.com/ipfs/go-ipld-cbor@v0.0.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-ipld-cbor@v0.0.5" - }, - { - "group": "github.com/ipfs", - "name": "go-ipld-format", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/ipfs/go-ipld-format@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-ipld-format@v0.2.0" - }, - { - "group": "github.com/ipfs", - "name": "go-merkledag", - "version": "v0.3.2", - "purl": "pkg:golang/github.com/ipfs/go-merkledag@v0.3.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-merkledag@v0.3.2" - }, - { - "group": "github.com/ipld", - "name": "go-codec-dagpb", - "version": "v1.2.0", - "purl": "pkg:golang/github.com/ipld/go-codec-dagpb@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipld/go-codec-dagpb@v1.2.0" - }, - { - "group": "github.com/ipld", - "name": "go-ipld-prime", - "version": "v0.9.0", - "purl": "pkg:golang/github.com/ipld/go-ipld-prime@v0.9.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipld/go-ipld-prime@v0.9.0" - }, - { - "group": "github.com/multiformats", - "name": "go-multihash", - "version": "v0.0.15", - "purl": "pkg:golang/github.com/multiformats/go-multihash@v0.0.15", - "type": "library", - "bom-ref": "pkg:golang/github.com/multiformats/go-multihash@v0.0.15" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.7.0", - "purl": "pkg:golang/github.com/stretchr/testify@v1.7.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.7.0" - }, - { - "group": "github.com/dgrijalva", - "name": "jwt-go", - "version": "v3.2.0+incompatible", - "purl": "pkg:golang/github.com/dgrijalva/jwt-go@v3.2.0%2Bincompatible", - "type": "library", - "bom-ref": "pkg:golang/github.com/dgrijalva/jwt-go@v3.2.0%2Bincompatible" - }, - { - "group": "github.com/labstack", - "name": "gommon", - "version": "v0.3.0", - "purl": "pkg:golang/github.com/labstack/gommon@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/labstack/gommon@v0.3.0" - }, - { - "group": "github.com/mattn", - "name": "go-colorable", - "version": "v0.1.7", - "purl": "pkg:golang/github.com/mattn/go-colorable@v0.1.7", - "type": "library", - "bom-ref": "pkg:golang/github.com/mattn/go-colorable@v0.1.7" - }, - { - "group": "github.com/valyala", - "name": "fasttemplate", - "version": "v1.2.1", - "purl": "pkg:golang/github.com/valyala/fasttemplate@v1.2.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/valyala/fasttemplate@v1.2.1" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20200820211705-5c72a883971a", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20200820211705-5c72a883971a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20200820211705-5c72a883971a" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200822124328-c89045814202", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200826173525-f9321e4c35a6", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200826173525-f9321e4c35a6", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200826173525-f9321e4c35a6" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.3", - "purl": "pkg:golang/golang.org/x/text@v0.3.3", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.3" - }, - { - "group": "github.com/beevik", - "name": "etree", - "version": "v1.1.0", - "purl": "pkg:golang/github.com/beevik/etree@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/beevik/etree@v1.1.0" - }, - { - "group": "github.com/jonboulle", - "name": "clockwork", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/jonboulle/clockwork@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/jonboulle/clockwork@v0.2.0" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.6.1", - "purl": "pkg:golang/github.com/stretchr/testify@v1.6.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.6.1" - }, - { - "group": "github.com/armon", - "name": "go-radix", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/armon/go-radix@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/armon/go-radix@v1.0.0" - }, - { - "group": "github.com/cucumber", - "name": "godog", - "version": "v0.8.1", - "purl": "pkg:golang/github.com/cucumber/godog@v0.8.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/cucumber/godog@v0.8.1" - }, - { - "group": "github.com/davecgh", - "name": "go-spew", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1" - }, - { - "group": "github.com/elastic", - "name": "go-sysinfo", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/elastic/go-sysinfo@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/elastic/go-sysinfo@v1.1.1" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.3.1", - "purl": "pkg:golang/github.com/google/go-cmp@v0.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.3.1" - }, - { - "group": "github.com/pkg", - "name": "errors", - "version": "v0.8.1", - "purl": "pkg:golang/github.com/pkg/errors@v0.8.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/pkg/errors@v0.8.1" - }, - { - "group": "github.com/prometheus", - "name": "procfs", - "version": "v0.0.3", - "purl": "pkg:golang/github.com/prometheus/procfs@v0.0.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/prometheus/procfs@v0.0.3" - }, - { - "group": "github.com/santhosh-tekuri", - "name": "jsonschema", - "version": "v1.2.4", - "purl": "pkg:golang/github.com/santhosh-tekuri/jsonschema@v1.2.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/santhosh-tekuri/jsonschema@v1.2.4" - }, - { - "group": "go.elastic.co", - "name": "fastjson", - "version": "v1.1.0", - "purl": "pkg:golang/go.elastic.co/fastjson@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/go.elastic.co/fastjson@v1.1.0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20191204072324-ce4227a45e2e", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - }, - { - "group": "gopkg.in", - "name": "check.v1", - "version": "v0.0.0-20161208181325-20d25e280405", - "purl": "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.3.0", - "purl": "pkg:golang/github.com/stretchr/testify@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.3.0" - }, - { - "group": "github.com/go-playground/assert", - "name": "v2", - "version": "v2.0.1", - "purl": "pkg:golang/github.com/go-playground/assert/v2@v2.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-playground/assert/v2@v2.0.1" - }, - { - "group": "github.com/go-playground", - "name": "locales", - "version": "v0.13.0", - "purl": "pkg:golang/github.com/go-playground/locales@v0.13.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-playground/locales@v0.13.0" - }, - { - "group": "github.com/go-playground", - "name": "universal-translator", - "version": "v0.17.0", - "purl": "pkg:golang/github.com/go-playground/universal-translator@v0.17.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-playground/universal-translator@v0.17.0" - }, - { - "group": "github.com/leodido", - "name": "go-urn", - "version": "v1.2.0", - "purl": "pkg:golang/github.com/leodido/go-urn@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/leodido/go-urn@v1.2.0" - }, - { - "group": "github.com/google", - "name": "gofuzz", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/google/gofuzz@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/gofuzz@v1.0.0" - }, - { - "group": "github.com/modern-go", - "name": "concurrent", - "version": "v0.0.0-20180228061459-e0a39a4cb421", - "purl": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180228061459-e0a39a4cb421", - "type": "library", - "bom-ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180228061459-e0a39a4cb421" - }, - { - "group": "github.com/modern-go", - "name": "reflect2", - "version": "v0.0.0-20180701023420-4b7aa43c6742", - "purl": "pkg:golang/github.com/modern-go/reflect2@v0.0.0-20180701023420-4b7aa43c6742", - "type": "library", - "bom-ref": "pkg:golang/github.com/modern-go/reflect2@v0.0.0-20180701023420-4b7aa43c6742" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200116001909-b77594299b42", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42" - }, - { - "group": "github.com/davecgh", - "name": "go-spew", - "version": "v1.1.0", - "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.0" - }, - { - "group": "github.com/pmezard", - "name": "go-difflib", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0" - }, - { - "group": "github.com/stretchr", - "name": "objx", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/stretchr/objx@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/objx@v0.1.0" - }, - { - "group": "gopkg.in", - "name": "yaml.v2", - "version": "v2.2.2", - "purl": "pkg:golang/gopkg.in/yaml.v2@v2.2.2", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.2" - }, - { - "group": "github.com/ugorji", - "name": "go", - "version": "v1.1.7", - "purl": "pkg:golang/github.com/ugorji/go@v1.1.7", - "type": "library", - "bom-ref": "pkg:golang/github.com/ugorji/go@v1.1.7" - }, - { - "group": "github.com/ipfs", - "name": "go-ipfs-util", - "version": "v0.0.2", - "purl": "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.2" - }, - { - "group": "github.com/multiformats", - "name": "go-multihash", - "version": "v0.0.14", - "purl": "pkg:golang/github.com/multiformats/go-multihash@v0.0.14", - "type": "library", - "bom-ref": "pkg:golang/github.com/multiformats/go-multihash@v0.0.14" - }, - { - "group": "github.com/multiformats", - "name": "go-multibase", - "version": "v0.0.3", - "purl": "pkg:golang/github.com/multiformats/go-multibase@v0.0.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/multiformats/go-multibase@v0.0.3" - }, - { - "group": "github.com/multiformats", - "name": "go-multihash", - "version": "v0.0.13", - "purl": "pkg:golang/github.com/multiformats/go-multihash@v0.0.13", - "type": "library", - "bom-ref": "pkg:golang/github.com/multiformats/go-multihash@v0.0.13" - }, - { - "group": "github.com/multiformats", - "name": "go-varint", - "version": "v0.0.5", - "purl": "pkg:golang/github.com/multiformats/go-varint@v0.0.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/multiformats/go-varint@v0.0.5" - }, - { - "group": "github.com/ipfs", - "name": "go-block-format", - "version": "v0.0.2", - "purl": "pkg:golang/github.com/ipfs/go-block-format@v0.0.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-block-format@v0.0.2" - }, - { - "group": "github.com/ipfs", - "name": "go-cid", - "version": "v0.0.3", - "purl": "pkg:golang/github.com/ipfs/go-cid@v0.0.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-cid@v0.0.3" - }, - { - "group": "github.com/ipfs", - "name": "go-ipfs-util", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.1" - }, - { - "group": "github.com/ipfs", - "name": "go-ipld-format", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/ipfs/go-ipld-format@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-ipld-format@v0.0.1" - }, - { - "group": "github.com/multiformats", - "name": "go-multihash", - "version": "v0.0.10", - "purl": "pkg:golang/github.com/multiformats/go-multihash@v0.0.10", - "type": "library", - "bom-ref": "pkg:golang/github.com/multiformats/go-multihash@v0.0.10" - }, - { - "group": "github.com/polydawn", - "name": "refmt", - "version": "v0.0.0-20190221155625-df39d6c2d992", - "purl": "pkg:golang/github.com/polydawn/refmt@v0.0.0-20190221155625-df39d6c2d992", - "type": "library", - "bom-ref": "pkg:golang/github.com/polydawn/refmt@v0.0.0-20190221155625-df39d6c2d992" - }, - { - "group": "github.com/smartystreets", - "name": "goconvey", - "version": "v0.0.0-20190222223459-a17d461953aa", - "purl": "pkg:golang/github.com/smartystreets/goconvey@v0.0.0-20190222223459-a17d461953aa", - "type": "library", - "bom-ref": "pkg:golang/github.com/smartystreets/goconvey@v0.0.0-20190222223459-a17d461953aa" - }, - { - "group": "github.com/warpfork", - "name": "go-wish", - "version": "v0.0.0-20180510122957-5ad1f5abf436", - "purl": "pkg:golang/github.com/warpfork/go-wish@v0.0.0-20180510122957-5ad1f5abf436", - "type": "library", - "bom-ref": "pkg:golang/github.com/warpfork/go-wish@v0.0.0-20180510122957-5ad1f5abf436" - }, - { - "group": "github.com/whyrusleeping", - "name": "cbor-gen", - "version": "v0.0.0-20200123233031-1cdf64d27158", - "purl": "pkg:golang/github.com/whyrusleeping/cbor-gen@v0.0.0-20200123233031-1cdf64d27158", - "type": "library", - "bom-ref": "pkg:golang/github.com/whyrusleeping/cbor-gen@v0.0.0-20200123233031-1cdf64d27158" - }, - { - "group": "github.com/ipfs", - "name": "go-cid", - "version": "v0.0.2", - "purl": "pkg:golang/github.com/ipfs/go-cid@v0.0.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-cid@v0.0.2" - }, - { - "group": "github.com/libp2p", - "name": "go-buffer-pool", - "version": "v0.0.2", - "purl": "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.2" - }, - { - "group": "github.com/multiformats", - "name": "go-multihash", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/multiformats/go-multihash@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/multiformats/go-multihash@v0.0.1" - }, - { - "group": "github.com/gogo", - "name": "protobuf", - "version": "v1.3.1", - "purl": "pkg:golang/github.com/gogo/protobuf@v1.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/gogo/protobuf@v1.3.1" - }, - { - "group": "github.com/ipfs", - "name": "go-blockservice", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/ipfs/go-blockservice@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-blockservice@v0.1.0" - }, - { - "group": "github.com/ipfs", - "name": "go-datastore", - "version": "v0.3.1", - "purl": "pkg:golang/github.com/ipfs/go-datastore@v0.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-datastore@v0.3.1" - }, - { - "group": "github.com/ipfs", - "name": "go-ipfs-blockstore", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/ipfs/go-ipfs-blockstore@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-blockstore@v0.1.0" - }, - { - "group": "github.com/ipfs", - "name": "go-ipfs-exchange-offline", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/ipfs/go-ipfs-exchange-offline@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-exchange-offline@v0.0.1" - }, - { - "group": "github.com/ipfs", - "name": "go-ipld-cbor", - "version": "v0.0.3", - "purl": "pkg:golang/github.com/ipfs/go-ipld-cbor@v0.0.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-ipld-cbor@v0.0.3" - }, - { - "group": "github.com/ipfs", - "name": "go-ipld-format", - "version": "v0.0.2", - "purl": "pkg:golang/github.com/ipfs/go-ipld-format@v0.0.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-ipld-format@v0.0.2" - }, - { - "group": "github.com/mr-tron", - "name": "base58", - "version": "v1.2.0", - "purl": "pkg:golang/github.com/mr-tron/base58@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/mr-tron/base58@v1.2.0" - }, - { - "group": "github.com/multiformats", - "name": "go-varint", - "version": "v0.0.6", - "purl": "pkg:golang/github.com/multiformats/go-varint@v0.0.6", - "type": "library", - "bom-ref": "pkg:golang/github.com/multiformats/go-varint@v0.0.6" - }, - { - "group": "github.com/polydawn", - "name": "refmt", - "version": "v0.0.0-20201211092308-30ac6d18308e", - "purl": "pkg:golang/github.com/polydawn/refmt@v0.0.0-20201211092308-30ac6d18308e", - "type": "library", - "bom-ref": "pkg:golang/github.com/polydawn/refmt@v0.0.0-20201211092308-30ac6d18308e" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20200804184101-5ec99f83aff1", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - }, - { - "group": "github.com/frankban", - "name": "quicktest", - "version": "v1.11.3", - "purl": "pkg:golang/github.com/frankban/quicktest@v1.11.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/frankban/quicktest@v1.11.3" - }, - { - "group": "github.com/ipfs", - "name": "go-cid", - "version": "v0.0.4", - "purl": "pkg:golang/github.com/ipfs/go-cid@v0.0.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-cid@v0.0.4" - }, - { - "group": "github.com/polydawn", - "name": "refmt", - "version": "v0.0.0-20190807091052-3d65705ee9f1", - "purl": "pkg:golang/github.com/polydawn/refmt@v0.0.0-20190807091052-3d65705ee9f1", - "type": "library", - "bom-ref": "pkg:golang/github.com/polydawn/refmt@v0.0.0-20190807091052-3d65705ee9f1" - }, - { - "group": "github.com/smartystreets", - "name": "goconvey", - "version": "v1.6.4", - "purl": "pkg:golang/github.com/smartystreets/goconvey@v1.6.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/smartystreets/goconvey@v1.6.4" - }, - { - "group": "github.com/warpfork", - "name": "go-wish", - "version": "v0.0.0-20200122115046-b9ea61034e4a", - "purl": "pkg:golang/github.com/warpfork/go-wish@v0.0.0-20200122115046-b9ea61034e4a", - "type": "library", - "bom-ref": "pkg:golang/github.com/warpfork/go-wish@v0.0.0-20200122115046-b9ea61034e4a" - }, - { - "group": "github.com/minio", - "name": "blake2b-simd", - "version": "v0.0.0-20160723061019-3f5f724cb5b1", - "purl": "pkg:golang/github.com/minio/blake2b-simd@v0.0.0-20160723061019-3f5f724cb5b1", - "type": "library", - "bom-ref": "pkg:golang/github.com/minio/blake2b-simd@v0.0.0-20160723061019-3f5f724cb5b1" - }, - { - "group": "github.com/minio", - "name": "sha256-simd", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/minio/sha256-simd@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/minio/sha256-simd@v1.0.0" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20210220033148-5ea612d1eb83", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20210220033148-5ea612d1eb83", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20210220033148-5ea612d1eb83" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210309074719-68d13333faf2", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210309074719-68d13333faf2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210309074719-68d13333faf2" - }, - { - "group": "gopkg.in", - "name": "yaml.v3", - "version": "v3.0.0-20200313102051-9f266ea9e77c", - "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c" - }, - { - "group": "github.com/mattn", - "name": "go-colorable", - "version": "v0.1.2", - "purl": "pkg:golang/github.com/mattn/go-colorable@v0.1.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/mattn/go-colorable@v0.1.2" - }, - { - "group": "github.com/mattn", - "name": "go-isatty", - "version": "v0.0.9", - "purl": "pkg:golang/github.com/mattn/go-isatty@v0.0.9", - "type": "library", - "bom-ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.9" - }, - { - "group": "github.com/valyala", - "name": "fasttemplate", - "version": "v1.0.1", - "purl": "pkg:golang/github.com/valyala/fasttemplate@v1.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/valyala/fasttemplate@v1.0.1" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200223170610-d5e6a3e2c0ae", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200223170610-d5e6a3e2c0ae", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200223170610-d5e6a3e2c0ae" - }, - { - "group": "github.com/valyala", - "name": "bytebufferpool", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/valyala/bytebufferpool@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/valyala/bytebufferpool@v1.0.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190404232315-eb5bcb51f2a3", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190412213103-97732733099d", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20200622213623-75b288015ac9", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200323222414-85ca7c5b95cd", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.0", - "purl": "pkg:golang/golang.org/x/text@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.0" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20180917221912-90fa682c2a6e", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e" - }, - { - "group": "github.com/elastic", - "name": "go-windows", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/elastic/go-windows@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/elastic/go-windows@v1.0.0" - }, - { - "group": "github.com/joeshaw", - "name": "multierror", - "version": "v0.0.0-20140124173710-69b34d4ec901", - "purl": "pkg:golang/github.com/joeshaw/multierror@v0.0.0-20140124173710-69b34d4ec901", - "type": "library", - "bom-ref": "pkg:golang/github.com/joeshaw/multierror@v0.0.0-20140124173710-69b34d4ec901" - }, - { - "group": "github.com/prometheus", - "name": "procfs", - "version": "v0.0.0-20190425082905-87a4384529e0", - "purl": "pkg:golang/github.com/prometheus/procfs@v0.0.0-20190425082905-87a4384529e0", - "type": "library", - "bom-ref": "pkg:golang/github.com/prometheus/procfs@v0.0.0-20190425082905-87a4384529e0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20191025021431-6c3a3bfe00ae", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20191025021431-6c3a3bfe00ae", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191025021431-6c3a3bfe00ae" - }, - { - "group": "howett.net", - "name": "plist", - "version": "v0.0.0-20181124034731-591f970eefbb", - "purl": "pkg:golang/howett.net/plist@v0.0.0-20181124034731-591f970eefbb", - "type": "library", - "bom-ref": "pkg:golang/howett.net/plist@v0.0.0-20181124034731-591f970eefbb" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.3.0", - "purl": "pkg:golang/github.com/google/go-cmp@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.3.0" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20181221193216-37e7f081c4d4", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4" - }, - { - "group": "github.com/pkg", - "name": "errors", - "version": "v0.8.0", - "purl": "pkg:golang/github.com/pkg/errors@v0.8.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/pkg/errors@v0.8.0" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200509030707-2212a7e161a5", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200509030707-2212a7e161a5", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200509030707-2212a7e161a5" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.2", - "purl": "pkg:golang/golang.org/x/text@v0.3.2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.2" - }, - { - "group": "github.com/mr-tron", - "name": "base58", - "version": "v1.1.3", - "purl": "pkg:golang/github.com/mr-tron/base58@v1.1.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/mr-tron/base58@v1.1.3" - }, - { - "group": "github.com/minio", - "name": "sha256-simd", - "version": "v0.1.1-0.20190913151208-6de447530771", - "purl": "pkg:golang/github.com/minio/sha256-simd@v0.1.1-0.20190913151208-6de447530771", - "type": "library", - "bom-ref": "pkg:golang/github.com/minio/sha256-simd@v0.1.1-0.20190913151208-6de447530771" - }, - { - "group": "github.com/spaolacci", - "name": "murmur3", - "version": "v1.1.0", - "purl": "pkg:golang/github.com/spaolacci/murmur3@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/spaolacci/murmur3@v1.1.0" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20190611184440-5c40567a22f8", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20190611184440-5c40567a22f8", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190611184440-5c40567a22f8" - }, - { - "group": "github.com/mr-tron", - "name": "base58", - "version": "v1.1.0", - "purl": "pkg:golang/github.com/mr-tron/base58@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/mr-tron/base58@v1.1.0" - }, - { - "group": "github.com/multiformats", - "name": "go-base32", - "version": "v0.0.3", - "purl": "pkg:golang/github.com/multiformats/go-base32@v0.0.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/multiformats/go-base32@v0.0.3" - }, - { - "group": "github.com/multiformats", - "name": "go-base36", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/multiformats/go-base36@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/multiformats/go-base36@v0.1.0" - }, - { - "group": "github.com/ipfs", - "name": "go-cid", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/ipfs/go-cid@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-cid@v0.0.1" - }, - { - "group": "github.com/multiformats", - "name": "go-multibase", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/multiformats/go-multibase@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/multiformats/go-multibase@v0.0.1" - }, - { - "group": "github.com/mr-tron", - "name": "base58", - "version": "v1.1.2", - "purl": "pkg:golang/github.com/mr-tron/base58@v1.1.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/mr-tron/base58@v1.1.2" - }, - { - "group": "github.com/gopherjs", - "name": "gopherjs", - "version": "v0.0.0-20181017120253-0766667cb4d1", - "purl": "pkg:golang/github.com/gopherjs/gopherjs@v0.0.0-20181017120253-0766667cb4d1", - "type": "library", - "bom-ref": "pkg:golang/github.com/gopherjs/gopherjs@v0.0.0-20181017120253-0766667cb4d1" - }, - { - "group": "github.com/jtolds", - "name": "gls", - "version": "v4.2.1+incompatible", - "purl": "pkg:golang/github.com/jtolds/gls@v4.2.1%2Bincompatible", - "type": "library", - "bom-ref": "pkg:golang/github.com/jtolds/gls@v4.2.1%2Bincompatible" - }, - { - "group": "github.com/smartystreets", - "name": "assertions", - "version": "v0.0.0-20180927180507-b2de0cb4f26d", - "purl": "pkg:golang/github.com/smartystreets/assertions@v0.0.0-20180927180507-b2de0cb4f26d", - "type": "library", - "bom-ref": "pkg:golang/github.com/smartystreets/assertions@v0.0.0-20180927180507-b2de0cb4f26d" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.4.0", - "purl": "pkg:golang/github.com/google/go-cmp@v0.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.4.0" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20191204190536-9bdfabe68543", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - }, - { - "group": "github.com/gxed/hashland", - "name": "keccakpg", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/gxed/hashland/keccakpg@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/gxed/hashland/keccakpg@v0.0.1" - }, - { - "group": "github.com/gxed/hashland", - "name": "murmur3", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/gxed/hashland/murmur3@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/gxed/hashland/murmur3@v0.0.1" - }, - { - "group": "github.com/minio", - "name": "sha256-simd", - "version": "v0.0.0-20190131020904-2d45a736cd16", - "purl": "pkg:golang/github.com/minio/sha256-simd@v0.0.0-20190131020904-2d45a736cd16", - "type": "library", - "bom-ref": "pkg:golang/github.com/minio/sha256-simd@v0.0.0-20190131020904-2d45a736cd16" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20190211182817-74369b46fc67", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20190211182817-74369b46fc67", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190211182817-74369b46fc67" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190219092855-153ac476189d", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190219092855-153ac476189d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190219092855-153ac476189d" - }, - { - "group": "github.com/kisielk", - "name": "errcheck", - "version": "v1.2.0", - "purl": "pkg:golang/github.com/kisielk/errcheck@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kisielk/errcheck@v1.2.0" - }, - { - "group": "github.com/kisielk", - "name": "gotool", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kisielk/gotool@v1.0.0" - }, - { - "group": "github.com/ipfs", - "name": "go-bitswap", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/ipfs/go-bitswap@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-bitswap@v0.1.0" - }, - { - "group": "github.com/ipfs", - "name": "go-datastore", - "version": "v0.0.5", - "purl": "pkg:golang/github.com/ipfs/go-datastore@v0.0.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-datastore@v0.0.5" - }, - { - "group": "github.com/ipfs", - "name": "go-ipfs-blockstore", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/ipfs/go-ipfs-blockstore@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-blockstore@v0.0.1" - }, - { - "group": "github.com/ipfs", - "name": "go-ipfs-blocksutil", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/ipfs/go-ipfs-blocksutil@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-blocksutil@v0.0.1" - }, - { - "group": "github.com/ipfs", - "name": "go-ipfs-delay", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/ipfs/go-ipfs-delay@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-delay@v0.0.1" - }, - { - "group": "github.com/ipfs", - "name": "go-ipfs-exchange-interface", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/ipfs/go-ipfs-exchange-interface@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-exchange-interface@v0.0.1" - }, - { - "group": "github.com/ipfs", - "name": "go-ipfs-routing", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/ipfs/go-ipfs-routing@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-routing@v0.1.0" - }, - { - "group": "github.com/ipfs", - "name": "go-log", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-log@v0.0.1" - }, - { - "group": "github.com/ipfs", - "name": "go-verifcid", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/ipfs/go-verifcid@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-verifcid@v0.0.1" - }, - { - "group": "github.com/go-check", - "name": "check", - "version": "v0.0.0-20180628173108-788fd7840127", - "purl": "pkg:golang/github.com/go-check/check@v0.0.0-20180628173108-788fd7840127", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-check/check@v0.0.0-20180628173108-788fd7840127" - }, - { - "group": "github.com/google", - "name": "uuid", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/google/uuid@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/uuid@v1.1.1" - }, - { - "group": "github.com/ipfs", - "name": "go-ipfs-delay", - "version": "v0.0.0-20181109222059-70721b86a9a8", - "purl": "pkg:golang/github.com/ipfs/go-ipfs-delay@v0.0.0-20181109222059-70721b86a9a8", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-delay@v0.0.0-20181109222059-70721b86a9a8" - }, - { - "group": "github.com/jbenet", - "name": "goprocess", - "version": "v0.0.0-20160826012719-b497e2f366b8", - "purl": "pkg:golang/github.com/jbenet/goprocess@v0.0.0-20160826012719-b497e2f366b8", - "type": "library", - "bom-ref": "pkg:golang/github.com/jbenet/goprocess@v0.0.0-20160826012719-b497e2f366b8" - }, - { - "group": "github.com/kr", - "name": "pretty", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/kr/pretty@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/pretty@v0.1.0" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20190717185122-a985d3407aa7", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - }, - { - "group": "gopkg.in", - "name": "check.v1", - "version": "v1.0.0-20180628173108-788fd7840127", - "purl": "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127" - }, - { - "group": "github.com/hashicorp", - "name": "golang-lru", - "version": "v0.5.1", - "purl": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1" - }, - { - "group": "github.com/ipfs", - "name": "bbloom", - "version": "v0.0.4", - "purl": "pkg:golang/github.com/ipfs/bbloom@v0.0.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/bbloom@v0.0.4" - }, - { - "group": "github.com/ipfs", - "name": "go-block-format", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/ipfs/go-block-format@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-block-format@v0.0.1" - }, - { - "group": "github.com/ipfs", - "name": "go-datastore", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/ipfs/go-datastore@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-datastore@v0.1.0" - }, - { - "group": "github.com/ipfs", - "name": "go-ipfs-ds-help", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/ipfs/go-ipfs-ds-help@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-ds-help@v0.0.1" - }, - { - "group": "github.com/ipfs", - "name": "go-metrics-interface", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/ipfs/go-metrics-interface@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-metrics-interface@v0.0.1" - }, - { - "group": "github.com/ipfs", - "name": "go-datastore", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/ipfs/go-datastore@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-datastore@v0.0.1" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.4", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.4" - }, - { - "group": "github.com/kr", - "name": "pretty", - "version": "v0.2.1", - "purl": "pkg:golang/github.com/kr/pretty@v0.2.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/pretty@v0.2.1" - }, - { - "group": "github.com/jtolds", - "name": "gls", - "version": "v4.20.0+incompatible", - "purl": "pkg:golang/github.com/jtolds/gls@v4.20.0%2Bincompatible", - "type": "library", - "bom-ref": "pkg:golang/github.com/jtolds/gls@v4.20.0%2Bincompatible" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190328211700-ab21143f2384", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190328211700-ab21143f2384", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190328211700-ab21143f2384" - }, - { - "group": "github.com/klauspost/cpuid", - "name": "v2", - "version": "v2.0.4", - "purl": "pkg:golang/github.com/klauspost/cpuid/v2@v2.0.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/klauspost/cpuid/v2@v2.0.4" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20191026070338-33540a1f6037", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20191026070338-33540a1f6037", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191026070338-33540a1f6037" - }, - { - "group": "golang.org/x", - "name": "term", - "version": "v0.0.0-20201117132131-f5c789dd3221", - "purl": "pkg:golang/golang.org/x/term@v0.0.0-20201117132131-f5c789dd3221", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/term@v0.0.0-20201117132131-f5c789dd3221" - }, - { - "group": "github.com/mattn", - "name": "go-isatty", - "version": "v0.0.8", - "purl": "pkg:golang/github.com/mattn/go-isatty@v0.0.8", - "type": "library", - "bom-ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.8" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190813064441-fde4db37ae7a", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190813064441-fde4db37ae7a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190813064441-fde4db37ae7a" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20190308221718-c2843e01d9a2", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2" - }, - { - "group": "github.com/jessevdk", - "name": "go-flags", - "version": "v1.4.0", - "purl": "pkg:golang/github.com/jessevdk/go-flags@v1.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/jessevdk/go-flags@v1.4.0" - }, - { - "group": "gopkg.in", - "name": "yaml.v2", - "version": "v2.2.1", - "purl": "pkg:golang/gopkg.in/yaml.v2@v2.2.1", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.1" - }, - { - "group": "github.com/yuin", - "name": "goldmark", - "version": "v1.1.27", - "purl": "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "type": "library", - "bom-ref": "pkg:golang/github.com/yuin/goldmark@v1.1.27" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.2.0", - "purl": "pkg:golang/golang.org/x/mod@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.2.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200226121028-0de0cce0169b", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20190911185100-cd5d95a43a6e", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20181030221726-6c7e314b6563", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20181030221726-6c7e314b6563", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20181030221726-6c7e314b6563" - }, - { - "group": "github.com/cskr", - "name": "pubsub", - "version": "v1.0.2", - "purl": "pkg:golang/github.com/cskr/pubsub@v1.0.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/cskr/pubsub@v1.0.2" - }, - { - "group": "github.com/gogo", - "name": "protobuf", - "version": "v1.2.1", - "purl": "pkg:golang/github.com/gogo/protobuf@v1.2.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/gogo/protobuf@v1.2.1" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.3.1", - "purl": "pkg:golang/github.com/golang/protobuf@v1.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.3.1" - }, - { - "group": "github.com/ipfs", - "name": "go-detect-race", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/ipfs/go-detect-race@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-detect-race@v0.0.1" - }, - { - "group": "github.com/ipfs", - "name": "go-peertaskqueue", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/ipfs/go-peertaskqueue@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-peertaskqueue@v0.1.0" - }, - { - "group": "github.com/jbenet", - "name": "goprocess", - "version": "v0.1.3", - "purl": "pkg:golang/github.com/jbenet/goprocess@v0.1.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/jbenet/goprocess@v0.1.3" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/libp2p/go-libp2p@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p@v0.1.0" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-core", - "version": "v0.0.2", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-loggables", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-loggables@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-loggables@v0.1.0" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-netutil", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-netutil@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-netutil@v0.1.0" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-testing", - "version": "v0.0.3", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3" - }, - { - "group": "github.com/libp2p", - "name": "go-testutil", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/libp2p/go-testutil@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-testutil@v0.1.0" - }, - { - "group": "github.com/multiformats", - "name": "go-multiaddr", - "version": "v0.0.4", - "purl": "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4" - }, - { - "group": "github.com/opentracing", - "name": "opentracing-go", - "version": "v1.1.0", - "purl": "pkg:golang/github.com/opentracing/opentracing-go@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/opentracing/opentracing-go@v1.1.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190522155817-f3200d17e092", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190522155817-f3200d17e092", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190522155817-f3200d17e092" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190524122548-abf6ff778158", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190524122548-abf6ff778158", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190524122548-abf6ff778158" - }, - { - "group": "github.com/ipfs", - "name": "bbloom", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/ipfs/bbloom@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/bbloom@v0.0.1" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-record", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-record@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-record@v0.1.0" - }, - { - "group": "github.com/multiformats", - "name": "go-multihash", - "version": "v0.0.5", - "purl": "pkg:golang/github.com/multiformats/go-multihash@v0.0.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/multiformats/go-multihash@v0.0.5" - }, - { - "group": "github.com/mattn", - "name": "go-colorable", - "version": "v0.1.1", - "purl": "pkg:golang/github.com/mattn/go-colorable@v0.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/mattn/go-colorable@v0.1.1" - }, - { - "group": "github.com/opentracing", - "name": "opentracing-go", - "version": "v1.0.2", - "purl": "pkg:golang/github.com/opentracing/opentracing-go@v1.0.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/opentracing/opentracing-go@v1.0.2" - }, - { - "group": "github.com/whyrusleeping", - "name": "go-logging", - "version": "v0.0.0-20170515211332-0457bb6b88fc", - "purl": "pkg:golang/github.com/whyrusleeping/go-logging@v0.0.0-20170515211332-0457bb6b88fc", - "type": "library", - "bom-ref": "pkg:golang/github.com/whyrusleeping/go-logging@v0.0.0-20170515211332-0457bb6b88fc" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190227160552-c95aed5357e7", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190227160552-c95aed5357e7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190227160552-c95aed5357e7" - }, - { - "group": "github.com/kr", - "name": "text", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/kr/text@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/text@v0.1.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190311183353-d8887717615a", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190222072716-a9d3bda3a223", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190222072716-a9d3bda3a223", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190222072716-a9d3bda3a223" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190215142949-d0b11bdaac8a", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20191011191535-87dc89f01550", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191119224855-298f0cb1881e", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20191011141410-1b5146add898", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - }, - { - "group": "github.com/kisielk", - "name": "errcheck", - "version": "v1.1.0", - "purl": "pkg:golang/github.com/kisielk/errcheck@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kisielk/errcheck@v1.1.0" - }, - { - "group": "github.com/ipfs", - "name": "go-ipfs-pq", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/ipfs/go-ipfs-pq@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-pq@v0.0.1" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-core", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1" - }, - { - "group": "github.com/jbenet", - "name": "go-cienv", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/jbenet/go-cienv@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/jbenet/go-cienv@v0.1.0" - }, - { - "group": "github.com/libp2p", - "name": "go-conn-security-multistream", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/libp2p/go-conn-security-multistream@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-conn-security-multistream@v0.1.0" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-autonat", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-autonat@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-autonat@v0.1.0" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-blankhost", - "version": "v0.1.1", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-blankhost@v0.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-blankhost@v0.1.1" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-circuit", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-circuit@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-circuit@v0.1.0" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-discovery", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-discovery@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-discovery@v0.1.0" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-mplex", - "version": "v0.2.1", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-mplex@v0.2.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-mplex@v0.2.1" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-nat", - "version": "v0.0.4", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-nat@v0.0.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-nat@v0.0.4" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-peerstore", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-peerstore@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-peerstore@v0.1.0" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-secio", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-secio@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-secio@v0.1.0" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-swarm", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-swarm@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-swarm@v0.1.0" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-transport-upgrader", - "version": "v0.1.1", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-transport-upgrader@v0.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-transport-upgrader@v0.1.1" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-yamux", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-yamux@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-yamux@v0.2.0" - }, - { - "group": "github.com/libp2p", - "name": "go-maddr-filter", - "version": "v0.0.4", - "purl": "pkg:golang/github.com/libp2p/go-maddr-filter@v0.0.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-maddr-filter@v0.0.4" - }, - { - "group": "github.com/libp2p", - "name": "go-stream-muxer-multistream", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/libp2p/go-stream-muxer-multistream@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-stream-muxer-multistream@v0.2.0" - }, - { - "group": "github.com/libp2p", - "name": "go-tcp-transport", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/libp2p/go-tcp-transport@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-tcp-transport@v0.1.0" - }, - { - "group": "github.com/libp2p", - "name": "go-ws-transport", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/libp2p/go-ws-transport@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-ws-transport@v0.1.0" - }, - { - "group": "github.com/multiformats", - "name": "go-multiaddr-dns", - "version": "v0.0.2", - "purl": "pkg:golang/github.com/multiformats/go-multiaddr-dns@v0.0.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/multiformats/go-multiaddr-dns@v0.0.2" - }, - { - "group": "github.com/multiformats", - "name": "go-multiaddr-net", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1" - }, - { - "group": "github.com/multiformats", - "name": "go-multistream", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/multiformats/go-multistream@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/multiformats/go-multistream@v0.1.0" - }, - { - "group": "github.com/whyrusleeping", - "name": "mdns", - "version": "v0.0.0-20180901202407-ef14215e6b30", - "purl": "pkg:golang/github.com/whyrusleeping/mdns@v0.0.0-20180901202407-ef14215e6b30", - "type": "library", - "bom-ref": "pkg:golang/github.com/whyrusleeping/mdns@v0.0.0-20180901202407-ef14215e6b30" - }, - { - "group": "github.com/btcsuite", - "name": "btcd", - "version": "v0.0.0-20190523000118-16327141da8c", - "purl": "pkg:golang/github.com/btcsuite/btcd@v0.0.0-20190523000118-16327141da8c", - "type": "library", - "bom-ref": "pkg:golang/github.com/btcsuite/btcd@v0.0.0-20190523000118-16327141da8c" - }, - { - "group": "github.com/coreos", - "name": "go-semver", - "version": "v0.3.0", - "purl": "pkg:golang/github.com/coreos/go-semver@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/coreos/go-semver@v0.3.0" - }, - { - "group": "github.com/libp2p", - "name": "go-flow-metrics", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/libp2p/go-flow-metrics@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-flow-metrics@v0.0.1" - }, - { - "group": "github.com/minio", - "name": "sha256-simd", - "version": "v0.0.0-20190328051042-05b4dd3047e5", - "purl": "pkg:golang/github.com/minio/sha256-simd@v0.0.0-20190328051042-05b4dd3047e5", - "type": "library", - "bom-ref": "pkg:golang/github.com/minio/sha256-simd@v0.0.0-20190328051042-05b4dd3047e5" - }, - { - "group": "github.com/spacemonkeygo", - "name": "openssl", - "version": "v0.0.0-20181017203307-c2dcc5cca94a", - "purl": "pkg:golang/github.com/spacemonkeygo/openssl@v0.0.0-20181017203307-c2dcc5cca94a", - "type": "library", - "bom-ref": "pkg:golang/github.com/spacemonkeygo/openssl@v0.0.0-20181017203307-c2dcc5cca94a" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20190513172903-22d7a77e9e5f", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20190513172903-22d7a77e9e5f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190513172903-22d7a77e9e5f" - }, - { - "group": "github.com/multiformats", - "name": "go-multiaddr", - "version": "v0.0.2", - "purl": "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.2" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-testing", - "version": "v0.0.2", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.2" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20190426145343-a29dc8fdc734", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20190426145343-a29dc8fdc734", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190426145343-a29dc8fdc734" - }, - { - "group": "github.com/mattn", - "name": "go-isatty", - "version": "v0.0.5", - "purl": "pkg:golang/github.com/mattn/go-isatty@v0.0.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.5" - }, - { - "group": "github.com/kr", - "name": "pty", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/kr/pty@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/pty@v1.1.1" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190620200207-3b0461eec859", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20190423024810-112230192c58", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20180221164845-07fd8470d635", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20180221164845-07fd8470d635", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20180221164845-07fd8470d635" - }, - { - "group": "github.com/btcsuite", - "name": "btcd", - "version": "v0.0.0-20190213025234-306aecffea32", - "purl": "pkg:golang/github.com/btcsuite/btcd@v0.0.0-20190213025234-306aecffea32", - "type": "library", - "bom-ref": "pkg:golang/github.com/btcsuite/btcd@v0.0.0-20190213025234-306aecffea32" - }, - { - "group": "github.com/mr-tron", - "name": "base58", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/mr-tron/base58@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/mr-tron/base58@v1.1.1" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20190225124518-7f87c0fbb88b", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20190225124518-7f87c0fbb88b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190225124518-7f87c0fbb88b" - }, - { - "group": "github.com/libp2p", - "name": "go-mplex", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/libp2p/go-mplex@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-mplex@v0.1.0" - }, - { - "group": "github.com/jbenet", - "name": "go-cienv", - "version": "v0.0.0-20150120210510-1bb1476777ec", - "purl": "pkg:golang/github.com/jbenet/go-cienv@v0.0.0-20150120210510-1bb1476777ec", - "type": "library", - "bom-ref": "pkg:golang/github.com/jbenet/go-cienv@v0.0.0-20150120210510-1bb1476777ec" - }, - { - "group": "github.com/libp2p", - "name": "go-nat", - "version": "v0.0.3", - "purl": "pkg:golang/github.com/libp2p/go-nat@v0.0.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-nat@v0.0.3" - }, - { - "group": "github.com/whyrusleeping", - "name": "go-notifier", - "version": "v0.0.0-20170827234753-097c5d47330f", - "purl": "pkg:golang/github.com/whyrusleeping/go-notifier@v0.0.0-20170827234753-097c5d47330f", - "type": "library", - "bom-ref": "pkg:golang/github.com/whyrusleeping/go-notifier@v0.0.0-20170827234753-097c5d47330f" - }, - { - "group": "github.com/ipfs", - "name": "go-ds-badger", - "version": "v0.0.2", - "purl": "pkg:golang/github.com/ipfs/go-ds-badger@v0.0.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-ds-badger@v0.0.2" - }, - { - "group": "github.com/ipfs", - "name": "go-ds-leveldb", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/ipfs/go-ds-leveldb@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/ipfs/go-ds-leveldb@v0.0.1" - }, - { - "group": "github.com/libp2p", - "name": "go-buffer-pool", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.1" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-crypto", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-crypto@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-crypto@v0.1.0" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-peer", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-peer@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-peer@v0.2.0" - }, - { - "group": "github.com/whyrusleeping", - "name": "go-keyspace", - "version": "v0.0.0-20160322163242-5b898ac5add1", - "purl": "pkg:golang/github.com/whyrusleeping/go-keyspace@v0.0.0-20160322163242-5b898ac5add1", - "type": "library", - "bom-ref": "pkg:golang/github.com/whyrusleeping/go-keyspace@v0.0.0-20160322163242-5b898ac5add1" - }, - { - "group": "github.com/whyrusleeping", - "name": "mafmt", - "version": "v1.2.8", - "purl": "pkg:golang/github.com/whyrusleeping/mafmt@v1.2.8", - "type": "library", - "bom-ref": "pkg:golang/github.com/whyrusleeping/mafmt@v1.2.8" - }, - { - "group": "github.com/libp2p", - "name": "go-msgio", - "version": "v0.0.2", - "purl": "pkg:golang/github.com/libp2p/go-msgio@v0.0.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-msgio@v0.0.2" - }, - { - "group": "github.com/minio", - "name": "sha256-simd", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/minio/sha256-simd@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/minio/sha256-simd@v0.1.0" - }, - { - "group": "github.com/libp2p", - "name": "go-addr-util", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/libp2p/go-addr-util@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-addr-util@v0.0.1" - }, - { - "group": "github.com/whyrusleeping", - "name": "multiaddr-filter", - "version": "v0.0.0-20160516205228-e903e4adabd7", - "purl": "pkg:golang/github.com/whyrusleeping/multiaddr-filter@v0.0.0-20160516205228-e903e4adabd7", - "type": "library", - "bom-ref": "pkg:golang/github.com/whyrusleeping/multiaddr-filter@v0.0.0-20160516205228-e903e4adabd7" - }, - { - "group": "github.com/jbenet", - "name": "go-temp-err-catcher", - "version": "v0.0.0-20150120210811-aac704a3f4f2", - "purl": "pkg:golang/github.com/jbenet/go-temp-err-catcher@v0.0.0-20150120210811-aac704a3f4f2", - "type": "library", - "bom-ref": "pkg:golang/github.com/jbenet/go-temp-err-catcher@v0.0.0-20150120210811-aac704a3f4f2" - }, - { - "group": "github.com/libp2p", - "name": "go-libp2p-mplex", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/libp2p/go-libp2p-mplex@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-mplex@v0.2.0" - }, - { - "group": "github.com/onsi", - "name": "ginkgo", - "version": "v1.8.0", - "purl": "pkg:golang/github.com/onsi/ginkgo@v1.8.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/onsi/ginkgo@v1.8.0" - }, - { - "group": "github.com/onsi", - "name": "gomega", - "version": "v1.5.0", - "purl": "pkg:golang/github.com/onsi/gomega@v1.5.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/onsi/gomega@v1.5.0" - }, - { - "group": "github.com/libp2p", - "name": "go-yamux", - "version": "v1.2.2", - "purl": "pkg:golang/github.com/libp2p/go-yamux@v1.2.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-yamux@v1.2.2" - }, - { - "group": "github.com/multiformats", - "name": "go-multiaddr", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.1" - }, - { - "group": "github.com/libp2p", - "name": "go-reuseport", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/libp2p/go-reuseport@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-reuseport@v0.0.1" - }, - { - "group": "github.com/libp2p", - "name": "go-reuseport-transport", - "version": "v0.0.2", - "purl": "pkg:golang/github.com/libp2p/go-reuseport-transport@v0.0.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-reuseport-transport@v0.0.2" - }, - { - "group": "github.com/multiformats", - "name": "go-multiaddr-fmt", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/multiformats/go-multiaddr-fmt@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/multiformats/go-multiaddr-fmt@v0.0.1" - }, - { - "group": "github.com/gorilla", - "name": "websocket", - "version": "v1.4.0", - "purl": "pkg:golang/github.com/gorilla/websocket@v1.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/gorilla/websocket@v1.4.0" - }, - { - "group": "github.com/multiformats", - "name": "go-multiaddr-dns", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/multiformats/go-multiaddr-dns@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/multiformats/go-multiaddr-dns@v0.0.1" - }, - { - "group": "github.com/aead", - "name": "siphash", - "version": "v1.0.1", - "purl": "pkg:golang/github.com/aead/siphash@v1.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/aead/siphash@v1.0.1" - }, - { - "group": "github.com/btcsuite", - "name": "btclog", - "version": "v0.0.0-20170628155309-84c8d2346e9f", - "purl": "pkg:golang/github.com/btcsuite/btclog@v0.0.0-20170628155309-84c8d2346e9f", - "type": "library", - "bom-ref": "pkg:golang/github.com/btcsuite/btclog@v0.0.0-20170628155309-84c8d2346e9f" - }, - { - "group": "github.com/btcsuite", - "name": "btcutil", - "version": "v0.0.0-20190425235716-9e5f4b9a998d", - "purl": "pkg:golang/github.com/btcsuite/btcutil@v0.0.0-20190425235716-9e5f4b9a998d", - "type": "library", - "bom-ref": "pkg:golang/github.com/btcsuite/btcutil@v0.0.0-20190425235716-9e5f4b9a998d" - }, - { - "group": "github.com/btcsuite", - "name": "go-socks", - "version": "v0.0.0-20170105172521-4720035b7bfd", - "purl": "pkg:golang/github.com/btcsuite/go-socks@v0.0.0-20170105172521-4720035b7bfd", - "type": "library", - "bom-ref": "pkg:golang/github.com/btcsuite/go-socks@v0.0.0-20170105172521-4720035b7bfd" - }, - { - "group": "github.com/btcsuite", - "name": "goleveldb", - "version": "v0.0.0-20160330041536-7834afc9e8cd", - "purl": "pkg:golang/github.com/btcsuite/goleveldb@v0.0.0-20160330041536-7834afc9e8cd", - "type": "library", - "bom-ref": "pkg:golang/github.com/btcsuite/goleveldb@v0.0.0-20160330041536-7834afc9e8cd" - }, - { - "group": "github.com/btcsuite", - "name": "snappy-go", - "version": "v0.0.0-20151229074030-0bdef8d06723", - "purl": "pkg:golang/github.com/btcsuite/snappy-go@v0.0.0-20151229074030-0bdef8d06723", - "type": "library", - "bom-ref": "pkg:golang/github.com/btcsuite/snappy-go@v0.0.0-20151229074030-0bdef8d06723" - }, - { - "group": "github.com/btcsuite", - "name": "websocket", - "version": "v0.0.0-20150119174127-31079b680792", - "purl": "pkg:golang/github.com/btcsuite/websocket@v0.0.0-20150119174127-31079b680792", - "type": "library", - "bom-ref": "pkg:golang/github.com/btcsuite/websocket@v0.0.0-20150119174127-31079b680792" - }, - { - "group": "github.com/btcsuite", - "name": "winsvc", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/btcsuite/winsvc@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/btcsuite/winsvc@v1.0.0" - }, - { - "group": "github.com/davecgh", - "name": "go-spew", - "version": "v0.0.0-20171005155431-ecdeabc65495", - "purl": "pkg:golang/github.com/davecgh/go-spew@v0.0.0-20171005155431-ecdeabc65495", - "type": "library", - "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v0.0.0-20171005155431-ecdeabc65495" - }, - { - "group": "github.com/jessevdk", - "name": "go-flags", - "version": "v0.0.0-20141203071132-1679536dcc89", - "purl": "pkg:golang/github.com/jessevdk/go-flags@v0.0.0-20141203071132-1679536dcc89", - "type": "library", - "bom-ref": "pkg:golang/github.com/jessevdk/go-flags@v0.0.0-20141203071132-1679536dcc89" - }, - { - "group": "github.com/jrick", - "name": "logrotate", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/jrick/logrotate@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/jrick/logrotate@v1.0.0" - }, - { - "group": "github.com/kkdai", - "name": "bstream", - "version": "v0.0.0-20161212061736-f391b8402d23", - "purl": "pkg:golang/github.com/kkdai/bstream@v0.0.0-20161212061736-f391b8402d23", - "type": "library", - "bom-ref": "pkg:golang/github.com/kkdai/bstream@v0.0.0-20161212061736-f391b8402d23" - }, - { - "group": "github.com/onsi", - "name": "ginkgo", - "version": "v1.7.0", - "purl": "pkg:golang/github.com/onsi/ginkgo@v1.7.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/onsi/ginkgo@v1.7.0" - }, - { - "group": "github.com/onsi", - "name": "gomega", - "version": "v1.4.3", - "purl": "pkg:golang/github.com/onsi/gomega@v1.4.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/onsi/gomega@v1.4.3" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20170930174604-9419663f5a44", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20170930174604-9419663f5a44", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20170930174604-9419663f5a44" - }, - { - "group": "github.com/spacemonkeygo", - "name": "spacelog", - "version": "v0.0.0-20180420211403-2296661a0572", - "purl": "pkg:golang/github.com/spacemonkeygo/spacelog@v0.0.0-20180420211403-2296661a0572", - "type": "library", - "bom-ref": "pkg:golang/github.com/spacemonkeygo/spacelog@v0.0.0-20180420211403-2296661a0572" - }, - { - "group": "github.com/btcsuite", - "name": "btcutil", - "version": "v0.0.0-20190207003914-4c204d697803", - "purl": "pkg:golang/github.com/btcsuite/btcutil@v0.0.0-20190207003914-4c204d697803", - "type": "library", - "bom-ref": "pkg:golang/github.com/btcsuite/btcutil@v0.0.0-20190207003914-4c204d697803" - }, - { - "group": "github.com/huin", - "name": "goupnp", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/huin/goupnp@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/huin/goupnp@v1.0.0" - }, - { - "group": "github.com/jackpal", - "name": "gateway", - "version": "v1.0.5", - "purl": "pkg:golang/github.com/jackpal/gateway@v1.0.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/jackpal/gateway@v1.0.5" - }, - { - "group": "github.com/jackpal", - "name": "go-nat-pmp", - "version": "v1.0.1", - "purl": "pkg:golang/github.com/jackpal/go-nat-pmp@v1.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/jackpal/go-nat-pmp@v1.0.1" - }, - { - "group": "github.com/koron", - "name": "go-ssdp", - "version": "v0.0.0-20180514024734-4a0ed625a78b", - "purl": "pkg:golang/github.com/koron/go-ssdp@v0.0.0-20180514024734-4a0ed625a78b", - "type": "library", - "bom-ref": "pkg:golang/github.com/koron/go-ssdp@v0.0.0-20180514024734-4a0ed625a78b" - }, - { - "group": "github.com/AndreasBriese", - "name": "bbloom", - "version": "v0.0.0-20180913140656-343706a395b7", - "purl": "pkg:golang/github.com/AndreasBriese/bbloom@v0.0.0-20180913140656-343706a395b7", - "type": "library", - "bom-ref": "pkg:golang/github.com/AndreasBriese/bbloom@v0.0.0-20180913140656-343706a395b7" - }, - { - "group": "github.com/Kubuxu", - "name": "go-os-helper", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/Kubuxu/go-os-helper@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/Kubuxu/go-os-helper@v0.0.1" - }, - { - "group": "github.com/dgraph-io", - "name": "badger", - "version": "v1.5.5-0.20190226225317-8115aed38f8f", - "purl": "pkg:golang/github.com/dgraph-io/badger@v1.5.5-0.20190226225317-8115aed38f8f", - "type": "library", - "bom-ref": "pkg:golang/github.com/dgraph-io/badger@v1.5.5-0.20190226225317-8115aed38f8f" - }, - { - "group": "github.com/dgryski", - "name": "go-farm", - "version": "v0.0.0-20190104051053-3adb47b1fb0f", - "purl": "pkg:golang/github.com/dgryski/go-farm@v0.0.0-20190104051053-3adb47b1fb0f", - "type": "library", - "bom-ref": "pkg:golang/github.com/dgryski/go-farm@v0.0.0-20190104051053-3adb47b1fb0f" - }, - { - "group": "github.com/dustin", - "name": "go-humanize", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/dustin/go-humanize@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/dustin/go-humanize@v1.0.0" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.3.0", - "purl": "pkg:golang/github.com/golang/protobuf@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.3.0" - }, - { - "group": "github.com/syndtr", - "name": "goleveldb", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/syndtr/goleveldb@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/syndtr/goleveldb@v1.0.0" - }, - { - "group": "github.com/libp2p", - "name": "go-mplex", - "version": "v0.0.3", - "purl": "pkg:golang/github.com/libp2p/go-mplex@v0.0.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-mplex@v0.0.3" - }, - { - "group": "github.com/fsnotify", - "name": "fsnotify", - "version": "v1.4.7", - "purl": "pkg:golang/github.com/fsnotify/fsnotify@v1.4.7", - "type": "library", - "bom-ref": "pkg:golang/github.com/fsnotify/fsnotify@v1.4.7" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.2.0", - "purl": "pkg:golang/github.com/golang/protobuf@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.2.0" - }, - { - "group": "github.com/hpcloud", - "name": "tail", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/hpcloud/tail@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/hpcloud/tail@v1.0.0" - }, - { - "group": "github.com/onsi", - "name": "ginkgo", - "version": "v1.6.0", - "purl": "pkg:golang/github.com/onsi/ginkgo@v1.6.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/onsi/ginkgo@v1.6.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20180906233101-161cd47e91fd", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20180906233101-161cd47e91fd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20180906233101-161cd47e91fd" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20180314180146-1d60e4601c6f", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20180909124046-d0be0721c37e", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20180909124046-d0be0721c37e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20180909124046-d0be0721c37e" - }, - { - "group": "gopkg.in", - "name": "fsnotify.v1", - "version": "v1.4.7", - "purl": "pkg:golang/gopkg.in/fsnotify.v1@v1.4.7", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/fsnotify.v1@v1.4.7" - }, - { - "group": "gopkg.in", - "name": "tomb.v1", - "version": "v1.0.0-20141024135613-dd632973f1e7", - "purl": "pkg:golang/gopkg.in/tomb.v1@v1.0.0-20141024135613-dd632973f1e7", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/tomb.v1@v1.0.0-20141024135613-dd632973f1e7" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190228124157-a34e9553db1e", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190228124157-a34e9553db1e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190228124157-a34e9553db1e" - }, - { - "group": "github.com/huin", - "name": "goutil", - "version": "v0.0.0-20170803182201-1ca381bf3150", - "purl": "pkg:golang/github.com/huin/goutil@v0.0.0-20170803182201-1ca381bf3150", - "type": "library", - "bom-ref": "pkg:golang/github.com/huin/goutil@v0.0.0-20170803182201-1ca381bf3150" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20181011144130-49bb7cea24b1", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20181011144130-49bb7cea24b1", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20181011144130-49bb7cea24b1" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20180831171423-11092d34479b", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20180831171423-11092d34479b", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20180831171423-11092d34479b" - }, - { - "group": "github.com/golang", - "name": "snappy", - "version": "v0.0.0-20180518054509-2e65f85255db", - "purl": "pkg:golang/github.com/golang/snappy@v0.0.0-20180518054509-2e65f85255db", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/snappy@v0.0.0-20180518054509-2e65f85255db" - }, - { - "group": "github.com/libp2p", - "name": "go-stream-muxer", - "version": "v0.0.1", - "purl": "pkg:golang/github.com/libp2p/go-stream-muxer@v0.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/libp2p/go-stream-muxer@v0.0.1" - } - ], - "dependencies": [ - { - "ref": "pkg:golang/github.com/devfile-samples/devfile-sample-go-basic@v0.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/gin-contrib/sse@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/stretchr/testify@v1.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/go-playground/validator/v10@v10.2.0", - "dependsOn": [ - "pkg:golang/github.com/go-playground/assert/v2@v2.0.1", - "pkg:golang/github.com/go-playground/locales@v0.13.0", - "pkg:golang/github.com/go-playground/universal-translator@v0.17.0", - "pkg:golang/github.com/leodido/go-urn@v1.2.0" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.3.3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/json-iterator/go@v1.1.9", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/google/gofuzz@v1.0.0", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180228061459-e0a39a4cb421", - "pkg:golang/github.com/modern-go/reflect2@v0.0.0-20180701023420-4b7aa43c6742", - "pkg:golang/github.com/stretchr/testify@v1.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.12", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42" - ] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.4.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/objx@v0.1.0", - "pkg:golang/gopkg.in/yaml.v2@v2.2.2" - ] - }, - { - "ref": "pkg:golang/github.com/ugorji/go/codec@v1.1.7", - "dependsOn": [ - "pkg:golang/github.com/ugorji/go@v1.1.7" - ] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.8", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-block-format@v0.0.3", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-cid@v0.0.7", - "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.2", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.14" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-cid@v0.0.7", - "dependsOn": [ - "pkg:golang/github.com/multiformats/go-multibase@v0.0.3", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.13", - "pkg:golang/github.com/multiformats/go-varint@v0.0.5" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-ipld-cbor@v0.0.5", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-block-format@v0.0.2", - "pkg:golang/github.com/ipfs/go-cid@v0.0.3", - "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipld-format@v0.0.1", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.10", - "pkg:golang/github.com/polydawn/refmt@v0.0.0-20190221155625-df39d6c2d992", - "pkg:golang/github.com/smartystreets/goconvey@v0.0.0-20190222223459-a17d461953aa", - "pkg:golang/github.com/warpfork/go-wish@v0.0.0-20180510122957-5ad1f5abf436", - "pkg:golang/github.com/whyrusleeping/cbor-gen@v0.0.0-20200123233031-1cdf64d27158" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-ipld-format@v0.2.0", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-block-format@v0.0.2", - "pkg:golang/github.com/ipfs/go-cid@v0.0.2", - "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.2", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-merkledag@v0.3.2", - "dependsOn": [ - "pkg:golang/github.com/gogo/protobuf@v1.3.1", - "pkg:golang/github.com/ipfs/go-block-format@v0.0.2", - "pkg:golang/github.com/ipfs/go-blockservice@v0.1.0", - "pkg:golang/github.com/ipfs/go-cid@v0.0.3", - "pkg:golang/github.com/ipfs/go-datastore@v0.3.1", - "pkg:golang/github.com/ipfs/go-ipfs-blockstore@v0.1.0", - "pkg:golang/github.com/ipfs/go-ipfs-exchange-offline@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipld-cbor@v0.0.3", - "pkg:golang/github.com/ipfs/go-ipld-format@v0.0.2", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.10" - ] - }, - { - "ref": "pkg:golang/github.com/ipld/go-codec-dagpb@v1.2.0", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-cid@v0.0.7", - "pkg:golang/github.com/ipld/go-ipld-prime@v0.9.0", - "pkg:golang/github.com/mr-tron/base58@v1.2.0", - "pkg:golang/github.com/multiformats/go-varint@v0.0.6", - "pkg:golang/github.com/polydawn/refmt@v0.0.0-20201211092308-30ac6d18308e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/github.com/ipld/go-ipld-prime@v0.9.0", - "dependsOn": [ - "pkg:golang/github.com/frankban/quicktest@v1.11.3", - "pkg:golang/github.com/ipfs/go-cid@v0.0.4", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.15", - "pkg:golang/github.com/polydawn/refmt@v0.0.0-20190807091052-3d65705ee9f1", - "pkg:golang/github.com/smartystreets/goconvey@v1.6.4", - "pkg:golang/github.com/warpfork/go-wish@v0.0.0-20200122115046-b9ea61034e4a" - ] - }, - { - "ref": "pkg:golang/github.com/multiformats/go-multihash@v0.0.15", - "dependsOn": [ - "pkg:golang/github.com/minio/blake2b-simd@v0.0.0-20160723061019-3f5f724cb5b1", - "pkg:golang/github.com/minio/sha256-simd@v1.0.0", - "pkg:golang/github.com/mr-tron/base58@v1.2.0", - "pkg:golang/github.com/multiformats/go-varint@v0.0.6", - "pkg:golang/golang.org/x/crypto@v0.0.0-20210220033148-5ea612d1eb83", - "pkg:golang/golang.org/x/sys@v0.0.0-20210309074719-68d13333faf2" - ] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.7.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/objx@v0.1.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c" - ] - }, - { - "ref": "pkg:golang/github.com/dgrijalva/jwt-go@v3.2.0%2Bincompatible", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/labstack/gommon@v0.3.0", - "dependsOn": [ - "pkg:golang/github.com/mattn/go-colorable@v0.1.2", - "pkg:golang/github.com/mattn/go-isatty@v0.0.9", - "pkg:golang/github.com/stretchr/testify@v1.4.0", - "pkg:golang/github.com/valyala/fasttemplate@v1.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/mattn/go-colorable@v0.1.7", - "dependsOn": [ - "pkg:golang/github.com/mattn/go-isatty@v0.0.12", - "pkg:golang/golang.org/x/sys@v0.0.0-20200223170610-d5e6a3e2c0ae" - ] - }, - { - "ref": "pkg:golang/github.com/valyala/fasttemplate@v1.2.1", - "dependsOn": [ - "pkg:golang/github.com/valyala/bytebufferpool@v1.0.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20200820211705-5c72a883971a", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200826173525-f9321e4c35a6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.3", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e" - ] - }, - { - "ref": "pkg:golang/github.com/beevik/etree@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/jonboulle/clockwork@v0.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.6.1", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/objx@v0.1.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c" - ] - }, - { - "ref": "pkg:golang/github.com/armon/go-radix@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/cucumber/godog@v0.8.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/elastic/go-sysinfo@v1.1.1", - "dependsOn": [ - "pkg:golang/github.com/elastic/go-windows@v1.0.0", - "pkg:golang/github.com/joeshaw/multierror@v0.0.0-20140124173710-69b34d4ec901", - "pkg:golang/github.com/pkg/errors@v0.8.1", - "pkg:golang/github.com/prometheus/procfs@v0.0.0-20190425082905-87a4384529e0", - "pkg:golang/github.com/stretchr/testify@v1.3.0", - "pkg:golang/golang.org/x/sys@v0.0.0-20191025021431-6c3a3bfe00ae", - "pkg:golang/howett.net/plist@v0.0.0-20181124034731-591f970eefbb" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.3.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/pkg/errors@v0.8.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/prometheus/procfs@v0.0.3", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4" - ] - }, - { - "ref": "pkg:golang/github.com/santhosh-tekuri/jsonschema@v1.2.4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/go.elastic.co/fastjson@v1.1.0", - "dependsOn": [ - "pkg:golang/github.com/pkg/errors@v0.8.0", - "pkg:golang/golang.org/x/tools@v0.0.0-20200509030707-2212a7e161a5" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.3.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/objx@v0.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/go-playground/assert/v2@v2.0.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-playground/locales@v0.13.0", - "dependsOn": [ - "pkg:golang/golang.org/x/text@v0.3.2" - ] - }, - { - "ref": "pkg:golang/github.com/go-playground/universal-translator@v0.17.0", - "dependsOn": [ - "pkg:golang/github.com/go-playground/locales@v0.13.0" - ] - }, - { - "ref": "pkg:golang/github.com/leodido/go-urn@v1.2.0", - "dependsOn": [ - "pkg:golang/github.com/stretchr/testify@v1.4.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/gofuzz@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180228061459-e0a39a4cb421", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/modern-go/reflect2@v0.0.0-20180701023420-4b7aa43c6742", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200116001909-b77594299b42", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/stretchr/objx@v0.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.2", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/github.com/ugorji/go@v1.1.7", - "dependsOn": [ - "pkg:golang/github.com/ugorji/go/codec@v1.1.7" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.2", - "dependsOn": [ - "pkg:golang/github.com/mr-tron/base58@v1.1.3", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.13" - ] - }, - { - "ref": "pkg:golang/github.com/multiformats/go-multihash@v0.0.14", - "dependsOn": [ - "pkg:golang/github.com/minio/blake2b-simd@v0.0.0-20160723061019-3f5f724cb5b1", - "pkg:golang/github.com/minio/sha256-simd@v0.1.1-0.20190913151208-6de447530771", - "pkg:golang/github.com/mr-tron/base58@v1.1.3", - "pkg:golang/github.com/multiformats/go-varint@v0.0.5", - "pkg:golang/github.com/spaolacci/murmur3@v1.1.0", - "pkg:golang/golang.org/x/crypto@v0.0.0-20190611184440-5c40567a22f8" - ] - }, - { - "ref": "pkg:golang/github.com/multiformats/go-multibase@v0.0.3", - "dependsOn": [ - "pkg:golang/github.com/mr-tron/base58@v1.1.0", - "pkg:golang/github.com/multiformats/go-base32@v0.0.3", - "pkg:golang/github.com/multiformats/go-base36@v0.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/multiformats/go-multihash@v0.0.13", - "dependsOn": [ - "pkg:golang/github.com/minio/blake2b-simd@v0.0.0-20160723061019-3f5f724cb5b1", - "pkg:golang/github.com/minio/sha256-simd@v0.1.1-0.20190913151208-6de447530771", - "pkg:golang/github.com/mr-tron/base58@v1.1.3", - "pkg:golang/github.com/multiformats/go-varint@v0.0.5", - "pkg:golang/github.com/spaolacci/murmur3@v1.1.0", - "pkg:golang/golang.org/x/crypto@v0.0.0-20190611184440-5c40567a22f8" - ] - }, - { - "ref": "pkg:golang/github.com/multiformats/go-varint@v0.0.5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-block-format@v0.0.2", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-cid@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.1", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-cid@v0.0.3", - "dependsOn": [ - "pkg:golang/github.com/multiformats/go-multibase@v0.0.1", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/mr-tron/base58@v1.1.0", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-ipld-format@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-block-format@v0.0.2", - "pkg:golang/github.com/ipfs/go-cid@v0.0.1", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/multiformats/go-multihash@v0.0.10", - "dependsOn": [ - "pkg:golang/github.com/minio/blake2b-simd@v0.0.0-20160723061019-3f5f724cb5b1", - "pkg:golang/github.com/minio/sha256-simd@v0.1.1-0.20190913151208-6de447530771", - "pkg:golang/github.com/mr-tron/base58@v1.1.2", - "pkg:golang/github.com/spaolacci/murmur3@v1.1.0", - "pkg:golang/golang.org/x/crypto@v0.0.0-20190611184440-5c40567a22f8" - ] - }, - { - "ref": "pkg:golang/github.com/polydawn/refmt@v0.0.0-20190221155625-df39d6c2d992", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/smartystreets/goconvey@v0.0.0-20190222223459-a17d461953aa", - "dependsOn": [ - "pkg:golang/github.com/gopherjs/gopherjs@v0.0.0-20181017120253-0766667cb4d1", - "pkg:golang/github.com/jtolds/gls@v4.2.1%2Bincompatible", - "pkg:golang/github.com/smartystreets/assertions@v0.0.0-20180927180507-b2de0cb4f26d" - ] - }, - { - "ref": "pkg:golang/github.com/warpfork/go-wish@v0.0.0-20180510122957-5ad1f5abf436", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/whyrusleeping/cbor-gen@v0.0.0-20200123233031-1cdf64d27158", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/ipfs/go-cid@v0.0.3", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-cid@v0.0.2", - "dependsOn": [ - "pkg:golang/github.com/multiformats/go-multibase@v0.0.1", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/multiformats/go-multihash@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/gxed/hashland/keccakpg@v0.0.1", - "pkg:golang/github.com/gxed/hashland/murmur3@v0.0.1", - "pkg:golang/github.com/minio/blake2b-simd@v0.0.0-20160723061019-3f5f724cb5b1", - "pkg:golang/github.com/minio/sha256-simd@v0.0.0-20190131020904-2d45a736cd16", - "pkg:golang/github.com/mr-tron/base58@v1.1.0", - "pkg:golang/golang.org/x/crypto@v0.0.0-20190211182817-74369b46fc67", - "pkg:golang/golang.org/x/sys@v0.0.0-20190219092855-153ac476189d" - ] - }, - { - "ref": "pkg:golang/github.com/gogo/protobuf@v1.3.1", - "dependsOn": [ - "pkg:golang/github.com/kisielk/errcheck@v1.2.0", - "pkg:golang/github.com/kisielk/gotool@v1.0.0" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-blockservice@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-bitswap@v0.1.0", - "pkg:golang/github.com/ipfs/go-block-format@v0.0.2", - "pkg:golang/github.com/ipfs/go-cid@v0.0.2", - "pkg:golang/github.com/ipfs/go-datastore@v0.0.5", - "pkg:golang/github.com/ipfs/go-ipfs-blockstore@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-blocksutil@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-delay@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-exchange-interface@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-exchange-offline@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-routing@v0.1.0", - "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.1", - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/ipfs/go-verifcid@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-datastore@v0.3.1", - "dependsOn": [ - "pkg:golang/github.com/go-check/check@v0.0.0-20180628173108-788fd7840127", - "pkg:golang/github.com/google/uuid@v1.1.1", - "pkg:golang/github.com/ipfs/go-ipfs-delay@v0.0.0-20181109222059-70721b86a9a8", - "pkg:golang/github.com/jbenet/goprocess@v0.0.0-20160826012719-b497e2f366b8", - "pkg:golang/github.com/kr/pretty@v0.1.0", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7", - "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-ipfs-blockstore@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/github.com/ipfs/bbloom@v0.0.4", - "pkg:golang/github.com/ipfs/go-block-format@v0.0.1", - "pkg:golang/github.com/ipfs/go-cid@v0.0.1", - "pkg:golang/github.com/ipfs/go-datastore@v0.1.0", - "pkg:golang/github.com/ipfs/go-ipfs-ds-help@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.1", - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/ipfs/go-metrics-interface@v0.0.1", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-ipfs-exchange-offline@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-block-format@v0.0.2", - "pkg:golang/github.com/ipfs/go-cid@v0.0.1", - "pkg:golang/github.com/ipfs/go-datastore@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-blockstore@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-blocksutil@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-exchange-interface@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-ipld-cbor@v0.0.3", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-block-format@v0.0.2", - "pkg:golang/github.com/ipfs/go-cid@v0.0.2", - "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipld-format@v0.0.1", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.1", - "pkg:golang/github.com/polydawn/refmt@v0.0.0-20190221155625-df39d6c2d992", - "pkg:golang/github.com/smartystreets/goconvey@v0.0.0-20190222223459-a17d461953aa", - "pkg:golang/github.com/warpfork/go-wish@v0.0.0-20180510122957-5ad1f5abf436" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-ipld-format@v0.0.2", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-block-format@v0.0.2", - "pkg:golang/github.com/ipfs/go-cid@v0.0.2", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/mr-tron/base58@v1.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/multiformats/go-varint@v0.0.6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/polydawn/refmt@v0.0.0-20201211092308-30ac6d18308e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/frankban/quicktest@v1.11.3", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.5.4", - "pkg:golang/github.com/kr/pretty@v0.2.1" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-cid@v0.0.4", - "dependsOn": [ - "pkg:golang/github.com/multiformats/go-multibase@v0.0.1", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.10" - ] - }, - { - "ref": "pkg:golang/github.com/polydawn/refmt@v0.0.0-20190807091052-3d65705ee9f1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/smartystreets/goconvey@v1.6.4", - "dependsOn": [ - "pkg:golang/github.com/gopherjs/gopherjs@v0.0.0-20181017120253-0766667cb4d1", - "pkg:golang/github.com/jtolds/gls@v4.20.0%2Bincompatible", - "pkg:golang/github.com/smartystreets/assertions@v0.0.0-20180927180507-b2de0cb4f26d", - "pkg:golang/golang.org/x/tools@v0.0.0-20190328211700-ab21143f2384" - ] - }, - { - "ref": "pkg:golang/github.com/warpfork/go-wish@v0.0.0-20200122115046-b9ea61034e4a", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/minio/blake2b-simd@v0.0.0-20160723061019-3f5f724cb5b1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/minio/sha256-simd@v1.0.0", - "dependsOn": [ - "pkg:golang/github.com/klauspost/cpuid/v2@v2.0.4" - ] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20210220033148-5ea612d1eb83", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20191026070338-33540a1f6037", - "pkg:golang/golang.org/x/term@v0.0.0-20201117132131-f5c789dd3221" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210309074719-68d13333faf2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/github.com/mattn/go-colorable@v0.1.2", - "dependsOn": [ - "pkg:golang/github.com/mattn/go-isatty@v0.0.8" - ] - }, - { - "ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.9", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20190813064441-fde4db37ae7a" - ] - }, - { - "ref": "pkg:golang/github.com/valyala/fasttemplate@v1.0.1", - "dependsOn": [ - "pkg:golang/github.com/valyala/bytebufferpool@v1.0.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200223170610-d5e6a3e2c0ae", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/valyala/bytebufferpool@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/elastic/go-windows@v1.0.0", - "dependsOn": [ - "pkg:golang/github.com/pkg/errors@v0.8.1", - "pkg:golang/github.com/stretchr/testify@v1.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/joeshaw/multierror@v0.0.0-20140124173710-69b34d4ec901", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/prometheus/procfs@v0.0.0-20190425082905-87a4384529e0", - "dependsOn": [ - "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191025021431-6c3a3bfe00ae", - "dependsOn": [] - }, - { - "ref": "pkg:golang/howett.net/plist@v0.0.0-20181124034731-591f970eefbb", - "dependsOn": [ - "pkg:golang/github.com/jessevdk/go-flags@v1.4.0", - "pkg:golang/github.com/kr/pretty@v0.1.0", - "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127", - "pkg:golang/gopkg.in/yaml.v2@v2.2.1" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/pkg/errors@v0.8.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200509030707-2212a7e161a5", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.2", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e" - ] - }, - { - "ref": "pkg:golang/github.com/mr-tron/base58@v1.1.3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/minio/sha256-simd@v0.1.1-0.20190913151208-6de447530771", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/spaolacci/murmur3@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190611184440-5c40567a22f8", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - ] - }, - { - "ref": "pkg:golang/github.com/mr-tron/base58@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/multiformats/go-base32@v0.0.3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/multiformats/go-base36@v0.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-cid@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/multiformats/go-multibase@v0.0.1", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/multiformats/go-multibase@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/mr-tron/base58@v1.1.0", - "pkg:golang/github.com/multiformats/go-base32@v0.0.3" - ] - }, - { - "ref": "pkg:golang/github.com/mr-tron/base58@v1.1.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/gopherjs/gopherjs@v0.0.0-20181017120253-0766667cb4d1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/jtolds/gls@v4.2.1%2Bincompatible", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/smartystreets/assertions@v0.0.0-20180927180507-b2de0cb4f26d", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.4.0", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/gxed/hashland/keccakpg@v0.0.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/gxed/hashland/murmur3@v0.0.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/minio/sha256-simd@v0.0.0-20190131020904-2d45a736cd16", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190211182817-74369b46fc67", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190219092855-153ac476189d", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/kisielk/errcheck@v1.2.0", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20181030221726-6c7e314b6563" - ] - }, - { - "ref": "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-bitswap@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/cskr/pubsub@v1.0.2", - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/gogo/protobuf@v1.2.1", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/uuid@v1.1.1", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/github.com/ipfs/go-block-format@v0.0.2", - "pkg:golang/github.com/ipfs/go-cid@v0.0.2", - "pkg:golang/github.com/ipfs/go-datastore@v0.0.5", - "pkg:golang/github.com/ipfs/go-detect-race@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-blockstore@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-blocksutil@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-delay@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-exchange-interface@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-routing@v0.1.0", - "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.1", - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/ipfs/go-metrics-interface@v0.0.1", - "pkg:golang/github.com/ipfs/go-peertaskqueue@v0.1.0", - "pkg:golang/github.com/jbenet/goprocess@v0.1.3", - "pkg:golang/github.com/libp2p/go-libp2p@v0.1.0", - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", - "pkg:golang/github.com/libp2p/go-libp2p-loggables@v0.1.0", - "pkg:golang/github.com/libp2p/go-libp2p-netutil@v0.1.0", - "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", - "pkg:golang/github.com/libp2p/go-testutil@v0.1.0", - "pkg:golang/github.com/mattn/go-colorable@v0.1.2", - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", - "pkg:golang/github.com/opentracing/opentracing-go@v1.1.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190522155817-f3200d17e092", - "pkg:golang/golang.org/x/sys@v0.0.0-20190524122548-abf6ff778158", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/gopkg.in/yaml.v2@v2.2.2" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-datastore@v0.0.5", - "dependsOn": [ - "pkg:golang/github.com/go-check/check@v0.0.0-20180628173108-788fd7840127", - "pkg:golang/github.com/google/uuid@v1.1.1", - "pkg:golang/github.com/ipfs/go-ipfs-delay@v0.0.0-20181109222059-70721b86a9a8", - "pkg:golang/github.com/jbenet/goprocess@v0.0.0-20160826012719-b497e2f366b8", - "pkg:golang/github.com/kr/pretty@v0.1.0", - "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-ipfs-blockstore@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/github.com/ipfs/bbloom@v0.0.1", - "pkg:golang/github.com/ipfs/go-block-format@v0.0.1", - "pkg:golang/github.com/ipfs/go-cid@v0.0.1", - "pkg:golang/github.com/ipfs/go-datastore@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-ds-help@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.1", - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/ipfs/go-metrics-interface@v0.0.1", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-ipfs-blocksutil@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-block-format@v0.0.2" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-ipfs-delay@v0.0.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-ipfs-exchange-interface@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-block-format@v0.0.2", - "pkg:golang/github.com/ipfs/go-cid@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-ipfs-routing@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/gogo/protobuf@v1.2.1", - "pkg:golang/github.com/ipfs/go-cid@v0.0.2", - "pkg:golang/github.com/ipfs/go-datastore@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-delay@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-ds-help@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.1", - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", - "pkg:golang/github.com/libp2p/go-libp2p-record@v0.1.0", - "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.5" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/gogo/protobuf@v1.2.1", - "pkg:golang/github.com/mattn/go-colorable@v0.1.1", - "pkg:golang/github.com/opentracing/opentracing-go@v1.0.2", - "pkg:golang/github.com/stretchr/testify@v1.3.0", - "pkg:golang/github.com/whyrusleeping/go-logging@v0.0.0-20170515211332-0457bb6b88fc", - "pkg:golang/golang.org/x/net@v0.0.0-20190227160552-c95aed5357e7" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-verifcid@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-cid@v0.0.1", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/go-check/check@v0.0.0-20180628173108-788fd7840127", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/uuid@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-ipfs-delay@v0.0.0-20181109222059-70721b86a9a8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/jbenet/goprocess@v0.0.0-20160826012719-b497e2f366b8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/kr/pretty@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/kr/text@v0.1.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ipfs/bbloom@v0.0.4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-block-format@v0.0.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-datastore@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/go-check/check@v0.0.0-20180628173108-788fd7840127", - "pkg:golang/github.com/google/uuid@v1.1.1", - "pkg:golang/github.com/ipfs/go-ipfs-delay@v0.0.0-20181109222059-70721b86a9a8", - "pkg:golang/github.com/jbenet/goprocess@v0.0.0-20160826012719-b497e2f366b8", - "pkg:golang/github.com/kr/pretty@v0.1.0", - "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-ipfs-ds-help@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-cid@v0.0.1", - "pkg:golang/github.com/ipfs/go-datastore@v0.0.1", - "pkg:golang/github.com/multiformats/go-base32@v0.0.3" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-metrics-interface@v0.0.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-datastore@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/go-check/check@v0.0.0-20180628173108-788fd7840127", - "pkg:golang/github.com/google/uuid@v1.1.1", - "pkg:golang/github.com/ipfs/go-ipfs-delay@v0.0.0-20181109222059-70721b86a9a8", - "pkg:golang/github.com/jbenet/goprocess@v0.0.0-20160826012719-b497e2f366b8", - "pkg:golang/github.com/kr/pretty@v0.1.0", - "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.4", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/github.com/kr/pretty@v0.2.1", - "dependsOn": [ - "pkg:golang/github.com/kr/text@v0.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/jtolds/gls@v4.20.0%2Bincompatible", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190328211700-ab21143f2384", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a" - ] - }, - { - "ref": "pkg:golang/github.com/klauspost/cpuid/v2@v2.0.4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191026070338-33540a1f6037", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/term@v0.0.0-20201117132131-f5c789dd3221", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20191026070338-33540a1f6037" - ] - }, - { - "ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.8", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20190222072716-a9d3bda3a223" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190813064441-fde4db37ae7a", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a" - ] - }, - { - "ref": "pkg:golang/github.com/jessevdk/go-flags@v1.4.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.1", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.2.0", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20181030221726-6c7e314b6563", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/cskr/pubsub@v1.0.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/gogo/protobuf@v1.2.1", - "dependsOn": [ - "pkg:golang/github.com/kisielk/errcheck@v1.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.3.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-detect-race@v0.0.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-peertaskqueue@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-ipfs-pq@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.5" - ] - }, - { - "ref": "pkg:golang/github.com/jbenet/goprocess@v0.1.3", - "dependsOn": [ - "pkg:golang/github.com/jbenet/go-cienv@v0.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/gogo/protobuf@v1.2.1", - "pkg:golang/github.com/ipfs/go-cid@v0.0.2", - "pkg:golang/github.com/ipfs/go-detect-race@v0.0.1", - "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.1", - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/jbenet/go-cienv@v0.1.0", - "pkg:golang/github.com/jbenet/goprocess@v0.1.3", - "pkg:golang/github.com/libp2p/go-conn-security-multistream@v0.1.0", - "pkg:golang/github.com/libp2p/go-libp2p-autonat@v0.1.0", - "pkg:golang/github.com/libp2p/go-libp2p-blankhost@v0.1.1", - "pkg:golang/github.com/libp2p/go-libp2p-circuit@v0.1.0", - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-discovery@v0.1.0", - "pkg:golang/github.com/libp2p/go-libp2p-loggables@v0.1.0", - "pkg:golang/github.com/libp2p/go-libp2p-mplex@v0.2.1", - "pkg:golang/github.com/libp2p/go-libp2p-nat@v0.0.4", - "pkg:golang/github.com/libp2p/go-libp2p-netutil@v0.1.0", - "pkg:golang/github.com/libp2p/go-libp2p-peerstore@v0.1.0", - "pkg:golang/github.com/libp2p/go-libp2p-secio@v0.1.0", - "pkg:golang/github.com/libp2p/go-libp2p-swarm@v0.1.0", - "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", - "pkg:golang/github.com/libp2p/go-libp2p-transport-upgrader@v0.1.1", - "pkg:golang/github.com/libp2p/go-libp2p-yamux@v0.2.0", - "pkg:golang/github.com/libp2p/go-maddr-filter@v0.0.4", - "pkg:golang/github.com/libp2p/go-stream-muxer-multistream@v0.2.0", - "pkg:golang/github.com/libp2p/go-tcp-transport@v0.1.0", - "pkg:golang/github.com/libp2p/go-ws-transport@v0.1.0", - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", - "pkg:golang/github.com/multiformats/go-multiaddr-dns@v0.0.2", - "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1", - "pkg:golang/github.com/multiformats/go-multistream@v0.1.0", - "pkg:golang/github.com/whyrusleeping/mdns@v0.0.0-20180901202407-ef14215e6b30" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", - "dependsOn": [ - "pkg:golang/github.com/btcsuite/btcd@v0.0.0-20190523000118-16327141da8c", - "pkg:golang/github.com/coreos/go-semver@v0.3.0", - "pkg:golang/github.com/gogo/protobuf@v1.2.1", - "pkg:golang/github.com/ipfs/go-cid@v0.0.2", - "pkg:golang/github.com/jbenet/goprocess@v0.1.3", - "pkg:golang/github.com/libp2p/go-flow-metrics@v0.0.1", - "pkg:golang/github.com/minio/sha256-simd@v0.0.0-20190328051042-05b4dd3047e5", - "pkg:golang/github.com/mr-tron/base58@v1.1.2", - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.5", - "pkg:golang/github.com/spacemonkeygo/openssl@v0.0.0-20181017203307-c2dcc5cca94a", - "pkg:golang/golang.org/x/crypto@v0.0.0-20190513172903-22d7a77e9e5f" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-loggables@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/google/uuid@v1.1.1", - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.2" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-netutil@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.2" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", - "dependsOn": [ - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.2" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-testutil@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.2", - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190222072716-a9d3bda3a223" - ] - }, - { - "ref": "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", - "dependsOn": [ - "pkg:golang/github.com/multiformats/go-multihash@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/opentracing/opentracing-go@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190522155817-f3200d17e092", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190524122548-abf6ff778158", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ipfs/bbloom@v0.0.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-record@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/gogo/protobuf@v1.2.1", - "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.1", - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.5" - ] - }, - { - "ref": "pkg:golang/github.com/multiformats/go-multihash@v0.0.5", - "dependsOn": [ - "pkg:golang/github.com/minio/blake2b-simd@v0.0.0-20160723061019-3f5f724cb5b1", - "pkg:golang/github.com/minio/sha256-simd@v0.0.0-20190328051042-05b4dd3047e5", - "pkg:golang/github.com/mr-tron/base58@v1.1.2", - "pkg:golang/github.com/spaolacci/murmur3@v1.1.0", - "pkg:golang/golang.org/x/crypto@v0.0.0-20190426145343-a29dc8fdc734" - ] - }, - { - "ref": "pkg:golang/github.com/mattn/go-colorable@v0.1.1", - "dependsOn": [ - "pkg:golang/github.com/mattn/go-isatty@v0.0.5" - ] - }, - { - "ref": "pkg:golang/github.com/opentracing/opentracing-go@v1.0.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/whyrusleeping/go-logging@v0.0.0-20170515211332-0457bb6b88fc", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190227160552-c95aed5357e7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/kr/text@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/kr/pty@v1.1.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190222072716-a9d3bda3a223", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/kisielk/errcheck@v1.1.0", - "dependsOn": [ - "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "pkg:golang/golang.org/x/tools@v0.0.0-20180221164845-07fd8470d635" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-ipfs-pq@v0.0.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/btcsuite/btcd@v0.0.0-20190213025234-306aecffea32", - "pkg:golang/github.com/coreos/go-semver@v0.3.0", - "pkg:golang/github.com/gogo/protobuf@v1.2.1", - "pkg:golang/github.com/ipfs/go-cid@v0.0.1", - "pkg:golang/github.com/jbenet/goprocess@v0.0.0-20160826012719-b497e2f366b8", - "pkg:golang/github.com/libp2p/go-flow-metrics@v0.0.1", - "pkg:golang/github.com/minio/sha256-simd@v0.0.0-20190131020904-2d45a736cd16", - "pkg:golang/github.com/mr-tron/base58@v1.1.1", - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.2", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.1", - "pkg:golang/github.com/spacemonkeygo/openssl@v0.0.0-20181017203307-c2dcc5cca94a", - "pkg:golang/golang.org/x/crypto@v0.0.0-20190225124518-7f87c0fbb88b" - ] - }, - { - "ref": "pkg:golang/github.com/jbenet/go-cienv@v0.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-conn-security-multistream@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.2", - "pkg:golang/github.com/multiformats/go-multistream@v0.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-autonat@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/gogo/protobuf@v1.2.1", - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-blankhost@v0.1.1", - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-swarm@v0.1.0", - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-blankhost@v0.1.1", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.2", - "pkg:golang/github.com/multiformats/go-multistream@v0.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-circuit@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/gogo/protobuf@v1.2.1", - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.2", - "pkg:golang/github.com/libp2p/go-libp2p-blankhost@v0.1.1", - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-swarm@v0.1.0", - "pkg:golang/github.com/libp2p/go-libp2p-transport-upgrader@v0.1.1", - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", - "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-discovery@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-cid@v0.0.2", - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-blankhost@v0.1.1", - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-swarm@v0.1.0", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.5" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-mplex@v0.2.1", - "dependsOn": [ - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", - "pkg:golang/github.com/libp2p/go-mplex@v0.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-nat@v0.0.4", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/jbenet/go-cienv@v0.0.0-20150120210510-1bb1476777ec", - "pkg:golang/github.com/jbenet/goprocess@v0.0.0-20160826012719-b497e2f366b8", - "pkg:golang/github.com/libp2p/go-nat@v0.0.3", - "pkg:golang/github.com/whyrusleeping/go-notifier@v0.0.0-20170827234753-097c5d47330f" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-peerstore@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/gogo/protobuf@v1.2.1", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/github.com/ipfs/go-datastore@v0.0.1", - "pkg:golang/github.com/ipfs/go-ds-badger@v0.0.2", - "pkg:golang/github.com/ipfs/go-ds-leveldb@v0.0.1", - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-crypto@v0.1.0", - "pkg:golang/github.com/libp2p/go-libp2p-peer@v0.2.0", - "pkg:golang/github.com/multiformats/go-base32@v0.0.3", - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.2", - "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.1", - "pkg:golang/github.com/pkg/errors@v0.8.1", - "pkg:golang/github.com/whyrusleeping/go-keyspace@v0.0.0-20160322163242-5b898ac5add1", - "pkg:golang/github.com/whyrusleeping/mafmt@v1.2.8" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-secio@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/gogo/protobuf@v1.2.1", - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.2", - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.2", - "pkg:golang/github.com/libp2p/go-msgio@v0.0.2", - "pkg:golang/github.com/minio/sha256-simd@v0.1.0", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.5", - "pkg:golang/golang.org/x/crypto@v0.0.0-20190513172903-22d7a77e9e5f" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-swarm@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/jbenet/goprocess@v0.1.3", - "pkg:golang/github.com/libp2p/go-addr-util@v0.0.1", - "pkg:golang/github.com/libp2p/go-conn-security-multistream@v0.1.0", - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-loggables@v0.1.0", - "pkg:golang/github.com/libp2p/go-libp2p-peerstore@v0.1.0", - "pkg:golang/github.com/libp2p/go-libp2p-secio@v0.1.0", - "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", - "pkg:golang/github.com/libp2p/go-libp2p-transport-upgrader@v0.1.1", - "pkg:golang/github.com/libp2p/go-libp2p-yamux@v0.2.0", - "pkg:golang/github.com/libp2p/go-maddr-filter@v0.0.4", - "pkg:golang/github.com/libp2p/go-stream-muxer-multistream@v0.2.0", - "pkg:golang/github.com/libp2p/go-tcp-transport@v0.1.0", - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", - "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1", - "pkg:golang/github.com/whyrusleeping/mafmt@v1.2.8", - "pkg:golang/github.com/whyrusleeping/multiaddr-filter@v0.0.0-20160516205228-e903e4adabd7" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-transport-upgrader@v0.1.1", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/jbenet/go-temp-err-catcher@v0.0.0-20150120210811-aac704a3f4f2", - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-mplex@v0.2.0", - "pkg:golang/github.com/libp2p/go-maddr-filter@v0.0.4", - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", - "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1", - "pkg:golang/github.com/onsi/ginkgo@v1.8.0", - "pkg:golang/github.com/onsi/gomega@v1.5.0" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-yamux@v0.2.0", - "dependsOn": [ - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", - "pkg:golang/github.com/libp2p/go-yamux@v1.2.2" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-maddr-filter@v0.0.4", - "dependsOn": [ - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.1", - "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-stream-muxer-multistream@v0.2.0", - "dependsOn": [ - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/multiformats/go-multistream@v0.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-tcp-transport@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-mplex@v0.2.1", - "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", - "pkg:golang/github.com/libp2p/go-libp2p-transport-upgrader@v0.1.1", - "pkg:golang/github.com/libp2p/go-reuseport@v0.0.1", - "pkg:golang/github.com/libp2p/go-reuseport-transport@v0.0.2", - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", - "pkg:golang/github.com/multiformats/go-multiaddr-fmt@v0.0.1", - "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1", - "pkg:golang/github.com/multiformats/go-multihash@v0.0.5" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-ws-transport@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/gorilla/websocket@v1.4.0", - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-mplex@v0.2.0", - "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", - "pkg:golang/github.com/libp2p/go-libp2p-transport-upgrader@v0.1.1", - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", - "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1", - "pkg:golang/github.com/whyrusleeping/mafmt@v1.2.8" - ] - }, - { - "ref": "pkg:golang/github.com/multiformats/go-multiaddr-dns@v0.0.2", - "dependsOn": [ - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.1", - "pkg:golang/github.com/multiformats/go-multiaddr-dns@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/multiformats/go-multistream@v0.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/whyrusleeping/mdns@v0.0.0-20180901202407-ef14215e6b30", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/btcsuite/btcd@v0.0.0-20190523000118-16327141da8c", - "dependsOn": [ - "pkg:golang/github.com/aead/siphash@v1.0.1", - "pkg:golang/github.com/btcsuite/btclog@v0.0.0-20170628155309-84c8d2346e9f", - "pkg:golang/github.com/btcsuite/btcutil@v0.0.0-20190425235716-9e5f4b9a998d", - "pkg:golang/github.com/btcsuite/go-socks@v0.0.0-20170105172521-4720035b7bfd", - "pkg:golang/github.com/btcsuite/goleveldb@v0.0.0-20160330041536-7834afc9e8cd", - "pkg:golang/github.com/btcsuite/snappy-go@v0.0.0-20151229074030-0bdef8d06723", - "pkg:golang/github.com/btcsuite/websocket@v0.0.0-20150119174127-31079b680792", - "pkg:golang/github.com/btcsuite/winsvc@v1.0.0", - "pkg:golang/github.com/davecgh/go-spew@v0.0.0-20171005155431-ecdeabc65495", - "pkg:golang/github.com/jessevdk/go-flags@v0.0.0-20141203071132-1679536dcc89", - "pkg:golang/github.com/jrick/logrotate@v1.0.0", - "pkg:golang/github.com/kkdai/bstream@v0.0.0-20161212061736-f391b8402d23", - "pkg:golang/github.com/onsi/ginkgo@v1.7.0", - "pkg:golang/github.com/onsi/gomega@v1.4.3", - "pkg:golang/golang.org/x/crypto@v0.0.0-20170930174604-9419663f5a44" - ] - }, - { - "ref": "pkg:golang/github.com/coreos/go-semver@v0.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-flow-metrics@v0.0.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/minio/sha256-simd@v0.0.0-20190328051042-05b4dd3047e5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/spacemonkeygo/openssl@v0.0.0-20181017203307-c2dcc5cca94a", - "dependsOn": [ - "pkg:golang/github.com/spacemonkeygo/spacelog@v0.0.0-20180420211403-2296661a0572" - ] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190513172903-22d7a77e9e5f", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - ] - }, - { - "ref": "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.2", - "dependsOn": [ - "pkg:golang/github.com/multiformats/go-multihash@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.2", - "dependsOn": [ - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.2" - ] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190426145343-a29dc8fdc734", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - ] - }, - { - "ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.5", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20190222072716-a9d3bda3a223" - ] - }, - { - "ref": "pkg:golang/github.com/kr/pty@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20180221164845-07fd8470d635", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/btcsuite/btcd@v0.0.0-20190213025234-306aecffea32", - "dependsOn": [ - "pkg:golang/github.com/aead/siphash@v1.0.1", - "pkg:golang/github.com/btcsuite/btclog@v0.0.0-20170628155309-84c8d2346e9f", - "pkg:golang/github.com/btcsuite/btcutil@v0.0.0-20190207003914-4c204d697803", - "pkg:golang/github.com/btcsuite/go-socks@v0.0.0-20170105172521-4720035b7bfd", - "pkg:golang/github.com/btcsuite/goleveldb@v0.0.0-20160330041536-7834afc9e8cd", - "pkg:golang/github.com/btcsuite/snappy-go@v0.0.0-20151229074030-0bdef8d06723", - "pkg:golang/github.com/btcsuite/websocket@v0.0.0-20150119174127-31079b680792", - "pkg:golang/github.com/btcsuite/winsvc@v1.0.0", - "pkg:golang/github.com/davecgh/go-spew@v0.0.0-20171005155431-ecdeabc65495", - "pkg:golang/github.com/jessevdk/go-flags@v0.0.0-20141203071132-1679536dcc89", - "pkg:golang/github.com/jrick/logrotate@v1.0.0", - "pkg:golang/github.com/kkdai/bstream@v0.0.0-20161212061736-f391b8402d23", - "pkg:golang/github.com/onsi/ginkgo@v1.7.0", - "pkg:golang/github.com/onsi/gomega@v1.4.3", - "pkg:golang/golang.org/x/crypto@v0.0.0-20170930174604-9419663f5a44" - ] - }, - { - "ref": "pkg:golang/github.com/mr-tron/base58@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190225124518-7f87c0fbb88b", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-mplex@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/jbenet/go-cienv@v0.0.0-20150120210510-1bb1476777ec", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-nat@v0.0.3", - "dependsOn": [ - "pkg:golang/github.com/huin/goupnp@v1.0.0", - "pkg:golang/github.com/jackpal/gateway@v1.0.5", - "pkg:golang/github.com/jackpal/go-nat-pmp@v1.0.1", - "pkg:golang/github.com/koron/go-ssdp@v0.0.0-20180514024734-4a0ed625a78b" - ] - }, - { - "ref": "pkg:golang/github.com/whyrusleeping/go-notifier@v0.0.0-20170827234753-097c5d47330f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-ds-badger@v0.0.2", - "dependsOn": [ - "pkg:golang/github.com/AndreasBriese/bbloom@v0.0.0-20180913140656-343706a395b7", - "pkg:golang/github.com/Kubuxu/go-os-helper@v0.0.1", - "pkg:golang/github.com/dgraph-io/badger@v1.5.5-0.20190226225317-8115aed38f8f", - "pkg:golang/github.com/dgryski/go-farm@v0.0.0-20190104051053-3adb47b1fb0f", - "pkg:golang/github.com/dustin/go-humanize@v1.0.0", - "pkg:golang/github.com/golang/protobuf@v1.3.0", - "pkg:golang/github.com/ipfs/go-datastore@v0.0.1", - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/jbenet/goprocess@v0.0.0-20160826012719-b497e2f366b8", - "pkg:golang/github.com/pkg/errors@v0.8.1" - ] - }, - { - "ref": "pkg:golang/github.com/ipfs/go-ds-leveldb@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-datastore@v0.0.1", - "pkg:golang/github.com/jbenet/goprocess@v0.0.0-20160826012719-b497e2f366b8", - "pkg:golang/github.com/syndtr/goleveldb@v1.0.0" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-crypto@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-peer@v0.2.0", - "dependsOn": [ - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-crypto@v0.1.0", - "pkg:golang/golang.org/x/sys@v0.0.0-20190222072716-a9d3bda3a223" - ] - }, - { - "ref": "pkg:golang/github.com/whyrusleeping/go-keyspace@v0.0.0-20160322163242-5b898ac5add1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/whyrusleeping/mafmt@v1.2.8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-msgio@v0.0.2", - "dependsOn": [ - "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/minio/sha256-simd@v0.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-addr-util@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.1", - "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1", - "pkg:golang/github.com/whyrusleeping/mafmt@v1.2.8" - ] - }, - { - "ref": "pkg:golang/github.com/whyrusleeping/multiaddr-filter@v0.0.0-20160516205228-e903e4adabd7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/jbenet/go-temp-err-catcher@v0.0.0-20150120210811-aac704a3f4f2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-libp2p-mplex@v0.2.0", - "dependsOn": [ - "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.1", - "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", - "pkg:golang/github.com/libp2p/go-mplex@v0.0.3" - ] - }, - { - "ref": "pkg:golang/github.com/onsi/ginkgo@v1.8.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/onsi/gomega@v1.5.0", - "dependsOn": [ - "pkg:golang/github.com/fsnotify/fsnotify@v1.4.7", - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/github.com/hpcloud/tail@v1.0.0", - "pkg:golang/github.com/onsi/ginkgo@v1.6.0", - "pkg:golang/golang.org/x/net@v0.0.0-20180906233101-161cd47e91fd", - "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f", - "pkg:golang/golang.org/x/sys@v0.0.0-20180909124046-d0be0721c37e", - "pkg:golang/golang.org/x/text@v0.3.0", - "pkg:golang/gopkg.in/fsnotify.v1@v1.4.7", - "pkg:golang/gopkg.in/tomb.v1@v1.0.0-20141024135613-dd632973f1e7", - "pkg:golang/gopkg.in/yaml.v2@v2.2.1" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-yamux@v1.2.2", - "dependsOn": [ - "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.2" - ] - }, - { - "ref": "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/multiformats/go-multihash@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-reuseport@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/pkg/errors@v0.8.1", - "pkg:golang/github.com/stretchr/testify@v1.3.0", - "pkg:golang/golang.org/x/sys@v0.0.0-20190228124157-a34e9553db1e" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-reuseport-transport@v0.0.2", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/libp2p/go-reuseport@v0.0.1", - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.1", - "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/multiformats/go-multiaddr-fmt@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.1", - "pkg:golang/github.com/multiformats/go-multiaddr-dns@v0.0.2" - ] - }, - { - "ref": "pkg:golang/github.com/gorilla/websocket@v1.4.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/multiformats/go-multiaddr-dns@v0.0.1", - "dependsOn": [ - "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/aead/siphash@v1.0.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/btcsuite/btclog@v0.0.0-20170628155309-84c8d2346e9f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/btcsuite/btcutil@v0.0.0-20190425235716-9e5f4b9a998d", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/btcsuite/go-socks@v0.0.0-20170105172521-4720035b7bfd", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/btcsuite/goleveldb@v0.0.0-20160330041536-7834afc9e8cd", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/btcsuite/snappy-go@v0.0.0-20151229074030-0bdef8d06723", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/btcsuite/websocket@v0.0.0-20150119174127-31079b680792", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/btcsuite/winsvc@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/davecgh/go-spew@v0.0.0-20171005155431-ecdeabc65495", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/jessevdk/go-flags@v0.0.0-20141203071132-1679536dcc89", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/jrick/logrotate@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/kkdai/bstream@v0.0.0-20161212061736-f391b8402d23", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/onsi/ginkgo@v1.7.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/onsi/gomega@v1.4.3", - "dependsOn": [ - "pkg:golang/github.com/fsnotify/fsnotify@v1.4.7", - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/github.com/hpcloud/tail@v1.0.0", - "pkg:golang/github.com/onsi/ginkgo@v1.6.0", - "pkg:golang/golang.org/x/net@v0.0.0-20180906233101-161cd47e91fd", - "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f", - "pkg:golang/golang.org/x/sys@v0.0.0-20180909124046-d0be0721c37e", - "pkg:golang/golang.org/x/text@v0.3.0", - "pkg:golang/gopkg.in/fsnotify.v1@v1.4.7", - "pkg:golang/gopkg.in/tomb.v1@v1.0.0-20141024135613-dd632973f1e7", - "pkg:golang/gopkg.in/yaml.v2@v2.2.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20170930174604-9419663f5a44", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/spacemonkeygo/spacelog@v0.0.0-20180420211403-2296661a0572", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/btcsuite/btcutil@v0.0.0-20190207003914-4c204d697803", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/huin/goupnp@v1.0.0", - "dependsOn": [ - "pkg:golang/github.com/huin/goutil@v0.0.0-20170803182201-1ca381bf3150", - "pkg:golang/golang.org/x/net@v0.0.0-20181011144130-49bb7cea24b1", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/jackpal/gateway@v1.0.5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/jackpal/go-nat-pmp@v1.0.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/koron/go-ssdp@v0.0.0-20180514024734-4a0ed625a78b", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/AndreasBriese/bbloom@v0.0.0-20180913140656-343706a395b7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/Kubuxu/go-os-helper@v0.0.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/dgraph-io/badger@v1.5.5-0.20190226225317-8115aed38f8f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/dgryski/go-farm@v0.0.0-20190104051053-3adb47b1fb0f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/dustin/go-humanize@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.3.0", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20180906233101-161cd47e91fd", - "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f", - "pkg:golang/google.golang.org/genproto@v0.0.0-20180831171423-11092d34479b" - ] - }, - { - "ref": "pkg:golang/github.com/syndtr/goleveldb@v1.0.0", - "dependsOn": [ - "pkg:golang/github.com/golang/snappy@v0.0.0-20180518054509-2e65f85255db", - "pkg:golang/github.com/onsi/ginkgo@v1.7.0", - "pkg:golang/github.com/onsi/gomega@v1.4.3" - ] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-mplex@v0.0.3", - "dependsOn": [ - "pkg:golang/github.com/ipfs/go-log@v0.0.1", - "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.1", - "pkg:golang/github.com/libp2p/go-stream-muxer@v0.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/fsnotify/fsnotify@v1.4.7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/hpcloud/tail@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/onsi/ginkgo@v1.6.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20180906233101-161cd47e91fd", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20180909124046-d0be0721c37e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/fsnotify.v1@v1.4.7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/tomb.v1@v1.0.0-20141024135613-dd632973f1e7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190228124157-a34e9553db1e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/huin/goutil@v0.0.0-20170803182201-1ca381bf3150", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20181011144130-49bb7cea24b1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20180831171423-11092d34479b", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/snappy@v0.0.0-20180518054509-2e65f85255db", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/libp2p/go-stream-muxer@v0.0.1", - "dependsOn": [] - } - ] -} + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "group": "github.com/devfile-samples", + "name": "devfile-sample-go-basic", + "version": "v0.0.0", + "purl": "pkg:golang/github.com/devfile-samples/devfile-sample-go-basic@v0.0.0", + "type": "application", + "bom-ref": "pkg:golang/github.com/devfile-samples/devfile-sample-go-basic@v0.0.0" + } + }, + "components": [ + { + "group": "github.com/devfile-samples", + "name": "devfile-sample-go-basic", + "version": "v0.0.0", + "purl": "pkg:golang/github.com/devfile-samples/devfile-sample-go-basic@v0.0.0", + "type": "application", + "bom-ref": "pkg:golang/github.com/devfile-samples/devfile-sample-go-basic@v0.0.0" + }, + { + "group": "github.com/gin-contrib", + "name": "sse", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/gin-contrib/sse@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/gin-contrib/sse@v0.1.0" + }, + { + "group": "github.com/go-playground/validator", + "name": "v10", + "version": "v10.2.0", + "purl": "pkg:golang/github.com/go-playground/validator/v10@v10.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-playground/validator/v10@v10.2.0" + }, + { + "group": "github.com/golang", + "name": "protobuf", + "version": "v1.3.3", + "purl": "pkg:golang/github.com/golang/protobuf@v1.3.3", + "type": "library", + "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.3.3" + }, + { + "group": "github.com/json-iterator", + "name": "go", + "version": "v1.1.9", + "purl": "pkg:golang/github.com/json-iterator/go@v1.1.9", + "type": "library", + "bom-ref": "pkg:golang/github.com/json-iterator/go@v1.1.9" + }, + { + "group": "github.com/mattn", + "name": "go-isatty", + "version": "v0.0.12", + "purl": "pkg:golang/github.com/mattn/go-isatty@v0.0.12", + "type": "library", + "bom-ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.12" + }, + { + "group": "github.com/stretchr", + "name": "testify", + "version": "v1.7.0", + "purl": "pkg:golang/github.com/stretchr/testify@v1.7.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.7.0" + }, + { + "group": "github.com/ugorji/go", + "name": "codec", + "version": "v1.1.7", + "purl": "pkg:golang/github.com/ugorji/go/codec@v1.1.7", + "type": "library", + "bom-ref": "pkg:golang/github.com/ugorji/go/codec@v1.1.7" + }, + { + "group": "gopkg.in", + "name": "yaml.v2", + "version": "v2.2.8", + "purl": "pkg:golang/gopkg.in/yaml.v2@v2.2.8", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.8" + }, + { + "group": "github.com/ipfs", + "name": "go-block-format", + "version": "v0.0.3", + "purl": "pkg:golang/github.com/ipfs/go-block-format@v0.0.3", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-block-format@v0.0.3" + }, + { + "group": "github.com/ipfs", + "name": "go-cid", + "version": "v0.0.7", + "purl": "pkg:golang/github.com/ipfs/go-cid@v0.0.7", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-cid@v0.0.7" + }, + { + "group": "github.com/ipfs", + "name": "go-ipld-cbor", + "version": "v0.0.5", + "purl": "pkg:golang/github.com/ipfs/go-ipld-cbor@v0.0.5", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-ipld-cbor@v0.0.5" + }, + { + "group": "github.com/ipfs", + "name": "go-ipld-format", + "version": "v0.2.0", + "purl": "pkg:golang/github.com/ipfs/go-ipld-format@v0.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-ipld-format@v0.2.0" + }, + { + "group": "github.com/ipfs", + "name": "go-merkledag", + "version": "v0.3.2", + "purl": "pkg:golang/github.com/ipfs/go-merkledag@v0.3.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-merkledag@v0.3.2" + }, + { + "group": "github.com/ipld", + "name": "go-codec-dagpb", + "version": "v1.2.0", + "purl": "pkg:golang/github.com/ipld/go-codec-dagpb@v1.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipld/go-codec-dagpb@v1.2.0" + }, + { + "group": "github.com/ipld", + "name": "go-ipld-prime", + "version": "v0.9.0", + "purl": "pkg:golang/github.com/ipld/go-ipld-prime@v0.9.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipld/go-ipld-prime@v0.9.0" + }, + { + "group": "github.com/multiformats", + "name": "go-multihash", + "version": "v0.0.15", + "purl": "pkg:golang/github.com/multiformats/go-multihash@v0.0.15", + "type": "library", + "bom-ref": "pkg:golang/github.com/multiformats/go-multihash@v0.0.15" + }, + { + "group": "github.com/dgrijalva", + "name": "jwt-go", + "version": "v3.2.0+incompatible", + "purl": "pkg:golang/github.com/dgrijalva/jwt-go@v3.2.0%2Bincompatible", + "type": "library", + "bom-ref": "pkg:golang/github.com/dgrijalva/jwt-go@v3.2.0%2Bincompatible" + }, + { + "group": "github.com/labstack", + "name": "gommon", + "version": "v0.3.0", + "purl": "pkg:golang/github.com/labstack/gommon@v0.3.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/labstack/gommon@v0.3.0" + }, + { + "group": "github.com/mattn", + "name": "go-colorable", + "version": "v0.1.7", + "purl": "pkg:golang/github.com/mattn/go-colorable@v0.1.7", + "type": "library", + "bom-ref": "pkg:golang/github.com/mattn/go-colorable@v0.1.7" + }, + { + "group": "github.com/valyala", + "name": "fasttemplate", + "version": "v1.2.1", + "purl": "pkg:golang/github.com/valyala/fasttemplate@v1.2.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/valyala/fasttemplate@v1.2.1" + }, + { + "group": "golang.org/x", + "name": "crypto", + "version": "v0.0.0-20210220033148-5ea612d1eb83", + "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20210220033148-5ea612d1eb83", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20210220033148-5ea612d1eb83" + }, + { + "group": "golang.org/x", + "name": "net", + "version": "v0.0.0-20200822124328-c89045814202", + "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202" + }, + { + "group": "golang.org/x", + "name": "sys", + "version": "v0.0.0-20210309074719-68d13333faf2", + "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210309074719-68d13333faf2", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210309074719-68d13333faf2" + }, + { + "group": "golang.org/x", + "name": "text", + "version": "v0.3.3", + "purl": "pkg:golang/golang.org/x/text@v0.3.3", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/text@v0.3.3" + }, + { + "group": "github.com/beevik", + "name": "etree", + "version": "v1.1.0", + "purl": "pkg:golang/github.com/beevik/etree@v1.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/beevik/etree@v1.1.0" + }, + { + "group": "github.com/jonboulle", + "name": "clockwork", + "version": "v0.2.0", + "purl": "pkg:golang/github.com/jonboulle/clockwork@v0.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/jonboulle/clockwork@v0.2.0" + }, + { + "group": "github.com/armon", + "name": "go-radix", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/armon/go-radix@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/armon/go-radix@v1.0.0" + }, + { + "group": "github.com/cucumber", + "name": "godog", + "version": "v0.8.1", + "purl": "pkg:golang/github.com/cucumber/godog@v0.8.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/cucumber/godog@v0.8.1" + }, + { + "group": "github.com/davecgh", + "name": "go-spew", + "version": "v1.1.1", + "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1" + }, + { + "group": "github.com/elastic", + "name": "go-sysinfo", + "version": "v1.1.1", + "purl": "pkg:golang/github.com/elastic/go-sysinfo@v1.1.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/elastic/go-sysinfo@v1.1.1" + }, + { + "group": "github.com/google", + "name": "go-cmp", + "version": "v0.5.4", + "purl": "pkg:golang/github.com/google/go-cmp@v0.5.4", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.4" + }, + { + "group": "github.com/pkg", + "name": "errors", + "version": "v0.8.1", + "purl": "pkg:golang/github.com/pkg/errors@v0.8.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/pkg/errors@v0.8.1" + }, + { + "group": "github.com/prometheus", + "name": "procfs", + "version": "v0.0.3", + "purl": "pkg:golang/github.com/prometheus/procfs@v0.0.3", + "type": "library", + "bom-ref": "pkg:golang/github.com/prometheus/procfs@v0.0.3" + }, + { + "group": "github.com/santhosh-tekuri", + "name": "jsonschema", + "version": "v1.2.4", + "purl": "pkg:golang/github.com/santhosh-tekuri/jsonschema@v1.2.4", + "type": "library", + "bom-ref": "pkg:golang/github.com/santhosh-tekuri/jsonschema@v1.2.4" + }, + { + "group": "go.elastic.co", + "name": "fastjson", + "version": "v1.1.0", + "purl": "pkg:golang/go.elastic.co/fastjson@v1.1.0", + "type": "library", + "bom-ref": "pkg:golang/go.elastic.co/fastjson@v1.1.0" + }, + { + "group": "gopkg.in", + "name": "check.v1", + "version": "v1.0.0-20180628173108-788fd7840127", + "purl": "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127" + }, + { + "group": "github.com/go-playground/assert", + "name": "v2", + "version": "v2.0.1", + "purl": "pkg:golang/github.com/go-playground/assert/v2@v2.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-playground/assert/v2@v2.0.1" + }, + { + "group": "github.com/go-playground", + "name": "locales", + "version": "v0.13.0", + "purl": "pkg:golang/github.com/go-playground/locales@v0.13.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-playground/locales@v0.13.0" + }, + { + "group": "github.com/go-playground", + "name": "universal-translator", + "version": "v0.17.0", + "purl": "pkg:golang/github.com/go-playground/universal-translator@v0.17.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-playground/universal-translator@v0.17.0" + }, + { + "group": "github.com/leodido", + "name": "go-urn", + "version": "v1.2.0", + "purl": "pkg:golang/github.com/leodido/go-urn@v1.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/leodido/go-urn@v1.2.0" + }, + { + "group": "github.com/google", + "name": "gofuzz", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/google/gofuzz@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/gofuzz@v1.0.0" + }, + { + "group": "github.com/modern-go", + "name": "concurrent", + "version": "v0.0.0-20180228061459-e0a39a4cb421", + "purl": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180228061459-e0a39a4cb421", + "type": "library", + "bom-ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180228061459-e0a39a4cb421" + }, + { + "group": "github.com/modern-go", + "name": "reflect2", + "version": "v0.0.0-20180701023420-4b7aa43c6742", + "purl": "pkg:golang/github.com/modern-go/reflect2@v0.0.0-20180701023420-4b7aa43c6742", + "type": "library", + "bom-ref": "pkg:golang/github.com/modern-go/reflect2@v0.0.0-20180701023420-4b7aa43c6742" + }, + { + "group": "github.com/pmezard", + "name": "go-difflib", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0" + }, + { + "group": "github.com/stretchr", + "name": "objx", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/stretchr/objx@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/stretchr/objx@v0.1.0" + }, + { + "group": "github.com/ugorji", + "name": "go", + "version": "v1.1.7", + "purl": "pkg:golang/github.com/ugorji/go@v1.1.7", + "type": "library", + "bom-ref": "pkg:golang/github.com/ugorji/go@v1.1.7" + }, + { + "group": "github.com/ipfs", + "name": "go-ipfs-util", + "version": "v0.0.2", + "purl": "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.2" + }, + { + "group": "github.com/multiformats", + "name": "go-multibase", + "version": "v0.0.3", + "purl": "pkg:golang/github.com/multiformats/go-multibase@v0.0.3", + "type": "library", + "bom-ref": "pkg:golang/github.com/multiformats/go-multibase@v0.0.3" + }, + { + "group": "github.com/multiformats", + "name": "go-varint", + "version": "v0.0.6", + "purl": "pkg:golang/github.com/multiformats/go-varint@v0.0.6", + "type": "library", + "bom-ref": "pkg:golang/github.com/multiformats/go-varint@v0.0.6" + }, + { + "group": "github.com/polydawn", + "name": "refmt", + "version": "v0.0.0-20201211092308-30ac6d18308e", + "purl": "pkg:golang/github.com/polydawn/refmt@v0.0.0-20201211092308-30ac6d18308e", + "type": "library", + "bom-ref": "pkg:golang/github.com/polydawn/refmt@v0.0.0-20201211092308-30ac6d18308e" + }, + { + "group": "github.com/smartystreets", + "name": "goconvey", + "version": "v1.6.4", + "purl": "pkg:golang/github.com/smartystreets/goconvey@v1.6.4", + "type": "library", + "bom-ref": "pkg:golang/github.com/smartystreets/goconvey@v1.6.4" + }, + { + "group": "github.com/warpfork", + "name": "go-wish", + "version": "v0.0.0-20200122115046-b9ea61034e4a", + "purl": "pkg:golang/github.com/warpfork/go-wish@v0.0.0-20200122115046-b9ea61034e4a", + "type": "library", + "bom-ref": "pkg:golang/github.com/warpfork/go-wish@v0.0.0-20200122115046-b9ea61034e4a" + }, + { + "group": "github.com/whyrusleeping", + "name": "cbor-gen", + "version": "v0.0.0-20200123233031-1cdf64d27158", + "purl": "pkg:golang/github.com/whyrusleeping/cbor-gen@v0.0.0-20200123233031-1cdf64d27158", + "type": "library", + "bom-ref": "pkg:golang/github.com/whyrusleeping/cbor-gen@v0.0.0-20200123233031-1cdf64d27158" + }, + { + "group": "github.com/libp2p", + "name": "go-buffer-pool", + "version": "v0.0.2", + "purl": "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.2" + }, + { + "group": "github.com/gogo", + "name": "protobuf", + "version": "v1.3.1", + "purl": "pkg:golang/github.com/gogo/protobuf@v1.3.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/gogo/protobuf@v1.3.1" + }, + { + "group": "github.com/ipfs", + "name": "go-blockservice", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/ipfs/go-blockservice@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-blockservice@v0.1.0" + }, + { + "group": "github.com/ipfs", + "name": "go-datastore", + "version": "v0.3.1", + "purl": "pkg:golang/github.com/ipfs/go-datastore@v0.3.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-datastore@v0.3.1" + }, + { + "group": "github.com/ipfs", + "name": "go-ipfs-blockstore", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/ipfs/go-ipfs-blockstore@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-blockstore@v0.1.0" + }, + { + "group": "github.com/ipfs", + "name": "go-ipfs-exchange-offline", + "version": "v0.0.1", + "purl": "pkg:golang/github.com/ipfs/go-ipfs-exchange-offline@v0.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-exchange-offline@v0.0.1" + }, + { + "group": "github.com/mr-tron", + "name": "base58", + "version": "v1.2.0", + "purl": "pkg:golang/github.com/mr-tron/base58@v1.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/mr-tron/base58@v1.2.0" + }, + { + "group": "golang.org/x", + "name": "xerrors", + "version": "v0.0.0-20200804184101-5ec99f83aff1", + "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + }, + { + "group": "github.com/frankban", + "name": "quicktest", + "version": "v1.11.3", + "purl": "pkg:golang/github.com/frankban/quicktest@v1.11.3", + "type": "library", + "bom-ref": "pkg:golang/github.com/frankban/quicktest@v1.11.3" + }, + { + "group": "github.com/minio", + "name": "blake2b-simd", + "version": "v0.0.0-20160723061019-3f5f724cb5b1", + "purl": "pkg:golang/github.com/minio/blake2b-simd@v0.0.0-20160723061019-3f5f724cb5b1", + "type": "library", + "bom-ref": "pkg:golang/github.com/minio/blake2b-simd@v0.0.0-20160723061019-3f5f724cb5b1" + }, + { + "group": "github.com/minio", + "name": "sha256-simd", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/minio/sha256-simd@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/minio/sha256-simd@v1.0.0" + }, + { + "group": "github.com/valyala", + "name": "bytebufferpool", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/valyala/bytebufferpool@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/valyala/bytebufferpool@v1.0.0" + }, + { + "group": "golang.org/x", + "name": "tools", + "version": "v0.0.0-20200509030707-2212a7e161a5", + "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200509030707-2212a7e161a5", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200509030707-2212a7e161a5" + }, + { + "group": "github.com/elastic", + "name": "go-windows", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/elastic/go-windows@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/elastic/go-windows@v1.0.0" + }, + { + "group": "github.com/joeshaw", + "name": "multierror", + "version": "v0.0.0-20140124173710-69b34d4ec901", + "purl": "pkg:golang/github.com/joeshaw/multierror@v0.0.0-20140124173710-69b34d4ec901", + "type": "library", + "bom-ref": "pkg:golang/github.com/joeshaw/multierror@v0.0.0-20140124173710-69b34d4ec901" + }, + { + "group": "howett.net", + "name": "plist", + "version": "v0.0.0-20181124034731-591f970eefbb", + "purl": "pkg:golang/howett.net/plist@v0.0.0-20181124034731-591f970eefbb", + "type": "library", + "bom-ref": "pkg:golang/howett.net/plist@v0.0.0-20181124034731-591f970eefbb" + }, + { + "group": "golang.org/x", + "name": "sync", + "version": "v0.0.0-20190911185100-cd5d95a43a6e", + "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e" + }, + { + "group": "github.com/spaolacci", + "name": "murmur3", + "version": "v1.1.0", + "purl": "pkg:golang/github.com/spaolacci/murmur3@v1.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/spaolacci/murmur3@v1.1.0" + }, + { + "group": "github.com/multiformats", + "name": "go-base32", + "version": "v0.0.3", + "purl": "pkg:golang/github.com/multiformats/go-base32@v0.0.3", + "type": "library", + "bom-ref": "pkg:golang/github.com/multiformats/go-base32@v0.0.3" + }, + { + "group": "github.com/multiformats", + "name": "go-base36", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/multiformats/go-base36@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/multiformats/go-base36@v0.1.0" + }, + { + "group": "github.com/gopherjs", + "name": "gopherjs", + "version": "v0.0.0-20181017120253-0766667cb4d1", + "purl": "pkg:golang/github.com/gopherjs/gopherjs@v0.0.0-20181017120253-0766667cb4d1", + "type": "library", + "bom-ref": "pkg:golang/github.com/gopherjs/gopherjs@v0.0.0-20181017120253-0766667cb4d1" + }, + { + "group": "github.com/jtolds", + "name": "gls", + "version": "v4.20.0+incompatible", + "purl": "pkg:golang/github.com/jtolds/gls@v4.20.0%2Bincompatible", + "type": "library", + "bom-ref": "pkg:golang/github.com/jtolds/gls@v4.20.0%2Bincompatible" + }, + { + "group": "github.com/smartystreets", + "name": "assertions", + "version": "v0.0.0-20180927180507-b2de0cb4f26d", + "purl": "pkg:golang/github.com/smartystreets/assertions@v0.0.0-20180927180507-b2de0cb4f26d", + "type": "library", + "bom-ref": "pkg:golang/github.com/smartystreets/assertions@v0.0.0-20180927180507-b2de0cb4f26d" + }, + { + "group": "github.com/gxed/hashland", + "name": "keccakpg", + "version": "v0.0.1", + "purl": "pkg:golang/github.com/gxed/hashland/keccakpg@v0.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/gxed/hashland/keccakpg@v0.0.1" + }, + { + "group": "github.com/gxed/hashland", + "name": "murmur3", + "version": "v0.0.1", + "purl": "pkg:golang/github.com/gxed/hashland/murmur3@v0.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/gxed/hashland/murmur3@v0.0.1" + }, + { + "group": "github.com/kisielk", + "name": "errcheck", + "version": "v1.2.0", + "purl": "pkg:golang/github.com/kisielk/errcheck@v1.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/kisielk/errcheck@v1.2.0" + }, + { + "group": "github.com/kisielk", + "name": "gotool", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/kisielk/gotool@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/kisielk/gotool@v1.0.0" + }, + { + "group": "github.com/ipfs", + "name": "go-bitswap", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/ipfs/go-bitswap@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-bitswap@v0.1.0" + }, + { + "group": "github.com/ipfs", + "name": "go-ipfs-blocksutil", + "version": "v0.0.1", + "purl": "pkg:golang/github.com/ipfs/go-ipfs-blocksutil@v0.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-blocksutil@v0.0.1" + }, + { + "group": "github.com/ipfs", + "name": "go-ipfs-delay", + "version": "v0.0.1", + "purl": "pkg:golang/github.com/ipfs/go-ipfs-delay@v0.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-delay@v0.0.1" + }, + { + "group": "github.com/ipfs", + "name": "go-ipfs-exchange-interface", + "version": "v0.0.1", + "purl": "pkg:golang/github.com/ipfs/go-ipfs-exchange-interface@v0.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-exchange-interface@v0.0.1" + }, + { + "group": "github.com/ipfs", + "name": "go-ipfs-routing", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/ipfs/go-ipfs-routing@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-routing@v0.1.0" + }, + { + "group": "github.com/ipfs", + "name": "go-log", + "version": "v0.0.1", + "purl": "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-log@v0.0.1" + }, + { + "group": "github.com/ipfs", + "name": "go-verifcid", + "version": "v0.0.1", + "purl": "pkg:golang/github.com/ipfs/go-verifcid@v0.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-verifcid@v0.0.1" + }, + { + "group": "github.com/go-check", + "name": "check", + "version": "v0.0.0-20180628173108-788fd7840127", + "purl": "pkg:golang/github.com/go-check/check@v0.0.0-20180628173108-788fd7840127", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-check/check@v0.0.0-20180628173108-788fd7840127" + }, + { + "group": "github.com/google", + "name": "uuid", + "version": "v1.1.1", + "purl": "pkg:golang/github.com/google/uuid@v1.1.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/uuid@v1.1.1" + }, + { + "group": "github.com/jbenet", + "name": "goprocess", + "version": "v0.1.3", + "purl": "pkg:golang/github.com/jbenet/goprocess@v0.1.3", + "type": "library", + "bom-ref": "pkg:golang/github.com/jbenet/goprocess@v0.1.3" + }, + { + "group": "github.com/kr", + "name": "pretty", + "version": "v0.2.1", + "purl": "pkg:golang/github.com/kr/pretty@v0.2.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/kr/pretty@v0.2.1" + }, + { + "group": "github.com/hashicorp", + "name": "golang-lru", + "version": "v0.5.1", + "purl": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1" + }, + { + "group": "github.com/ipfs", + "name": "bbloom", + "version": "v0.0.4", + "purl": "pkg:golang/github.com/ipfs/bbloom@v0.0.4", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/bbloom@v0.0.4" + }, + { + "group": "github.com/ipfs", + "name": "go-ipfs-ds-help", + "version": "v0.0.1", + "purl": "pkg:golang/github.com/ipfs/go-ipfs-ds-help@v0.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-ds-help@v0.0.1" + }, + { + "group": "github.com/ipfs", + "name": "go-metrics-interface", + "version": "v0.0.1", + "purl": "pkg:golang/github.com/ipfs/go-metrics-interface@v0.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-metrics-interface@v0.0.1" + }, + { + "group": "github.com/klauspost/cpuid", + "name": "v2", + "version": "v2.0.4", + "purl": "pkg:golang/github.com/klauspost/cpuid/v2@v2.0.4", + "type": "library", + "bom-ref": "pkg:golang/github.com/klauspost/cpuid/v2@v2.0.4" + }, + { + "group": "golang.org/x", + "name": "term", + "version": "v0.0.0-20201117132131-f5c789dd3221", + "purl": "pkg:golang/golang.org/x/term@v0.0.0-20201117132131-f5c789dd3221", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/term@v0.0.0-20201117132131-f5c789dd3221" + }, + { + "group": "github.com/jessevdk", + "name": "go-flags", + "version": "v1.4.0", + "purl": "pkg:golang/github.com/jessevdk/go-flags@v1.4.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/jessevdk/go-flags@v1.4.0" + }, + { + "group": "github.com/yuin", + "name": "goldmark", + "version": "v1.1.27", + "purl": "pkg:golang/github.com/yuin/goldmark@v1.1.27", + "type": "library", + "bom-ref": "pkg:golang/github.com/yuin/goldmark@v1.1.27" + }, + { + "group": "golang.org/x", + "name": "mod", + "version": "v0.2.0", + "purl": "pkg:golang/golang.org/x/mod@v0.2.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/mod@v0.2.0" + }, + { + "group": "github.com/cskr", + "name": "pubsub", + "version": "v1.0.2", + "purl": "pkg:golang/github.com/cskr/pubsub@v1.0.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/cskr/pubsub@v1.0.2" + }, + { + "group": "github.com/ipfs", + "name": "go-detect-race", + "version": "v0.0.1", + "purl": "pkg:golang/github.com/ipfs/go-detect-race@v0.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-detect-race@v0.0.1" + }, + { + "group": "github.com/ipfs", + "name": "go-peertaskqueue", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/ipfs/go-peertaskqueue@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-peertaskqueue@v0.1.0" + }, + { + "group": "github.com/libp2p", + "name": "go-libp2p", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/libp2p/go-libp2p@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p@v0.1.0" + }, + { + "group": "github.com/libp2p", + "name": "go-libp2p-core", + "version": "v0.0.2", + "purl": "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2" + }, + { + "group": "github.com/libp2p", + "name": "go-libp2p-loggables", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/libp2p/go-libp2p-loggables@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-loggables@v0.1.0" + }, + { + "group": "github.com/libp2p", + "name": "go-libp2p-netutil", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/libp2p/go-libp2p-netutil@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-netutil@v0.1.0" + }, + { + "group": "github.com/libp2p", + "name": "go-libp2p-testing", + "version": "v0.0.3", + "purl": "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3" + }, + { + "group": "github.com/libp2p", + "name": "go-testutil", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/libp2p/go-testutil@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-testutil@v0.1.0" + }, + { + "group": "github.com/multiformats", + "name": "go-multiaddr", + "version": "v0.0.4", + "purl": "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", + "type": "library", + "bom-ref": "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4" + }, + { + "group": "github.com/opentracing", + "name": "opentracing-go", + "version": "v1.1.0", + "purl": "pkg:golang/github.com/opentracing/opentracing-go@v1.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/opentracing/opentracing-go@v1.1.0" + }, + { + "group": "github.com/libp2p", + "name": "go-libp2p-record", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/libp2p/go-libp2p-record@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-record@v0.1.0" + }, + { + "group": "github.com/whyrusleeping", + "name": "go-logging", + "version": "v0.0.0-20170515211332-0457bb6b88fc", + "purl": "pkg:golang/github.com/whyrusleeping/go-logging@v0.0.0-20170515211332-0457bb6b88fc", + "type": "library", + "bom-ref": "pkg:golang/github.com/whyrusleeping/go-logging@v0.0.0-20170515211332-0457bb6b88fc" + }, + { + "group": "github.com/kr", + "name": "text", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/kr/text@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/kr/text@v0.1.0" + }, + { + "group": "github.com/ipfs", + "name": "go-ipfs-pq", + "version": "v0.0.1", + "purl": "pkg:golang/github.com/ipfs/go-ipfs-pq@v0.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-ipfs-pq@v0.0.1" + }, + { + "group": "github.com/jbenet", + "name": "go-cienv", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/jbenet/go-cienv@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/jbenet/go-cienv@v0.1.0" + }, + { + "group": "github.com/libp2p", + "name": "go-conn-security-multistream", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/libp2p/go-conn-security-multistream@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-conn-security-multistream@v0.1.0" + }, + { + "group": "github.com/libp2p", + "name": "go-libp2p-autonat", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/libp2p/go-libp2p-autonat@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-autonat@v0.1.0" + }, + { + "group": "github.com/libp2p", + "name": "go-libp2p-blankhost", + "version": "v0.1.1", + "purl": "pkg:golang/github.com/libp2p/go-libp2p-blankhost@v0.1.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-blankhost@v0.1.1" + }, + { + "group": "github.com/libp2p", + "name": "go-libp2p-circuit", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/libp2p/go-libp2p-circuit@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-circuit@v0.1.0" + }, + { + "group": "github.com/libp2p", + "name": "go-libp2p-discovery", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/libp2p/go-libp2p-discovery@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-discovery@v0.1.0" + }, + { + "group": "github.com/libp2p", + "name": "go-libp2p-mplex", + "version": "v0.2.1", + "purl": "pkg:golang/github.com/libp2p/go-libp2p-mplex@v0.2.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-mplex@v0.2.1" + }, + { + "group": "github.com/libp2p", + "name": "go-libp2p-nat", + "version": "v0.0.4", + "purl": "pkg:golang/github.com/libp2p/go-libp2p-nat@v0.0.4", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-nat@v0.0.4" + }, + { + "group": "github.com/libp2p", + "name": "go-libp2p-peerstore", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/libp2p/go-libp2p-peerstore@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-peerstore@v0.1.0" + }, + { + "group": "github.com/libp2p", + "name": "go-libp2p-secio", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/libp2p/go-libp2p-secio@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-secio@v0.1.0" + }, + { + "group": "github.com/libp2p", + "name": "go-libp2p-swarm", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/libp2p/go-libp2p-swarm@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-swarm@v0.1.0" + }, + { + "group": "github.com/libp2p", + "name": "go-libp2p-transport-upgrader", + "version": "v0.1.1", + "purl": "pkg:golang/github.com/libp2p/go-libp2p-transport-upgrader@v0.1.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-transport-upgrader@v0.1.1" + }, + { + "group": "github.com/libp2p", + "name": "go-libp2p-yamux", + "version": "v0.2.0", + "purl": "pkg:golang/github.com/libp2p/go-libp2p-yamux@v0.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-yamux@v0.2.0" + }, + { + "group": "github.com/libp2p", + "name": "go-maddr-filter", + "version": "v0.0.4", + "purl": "pkg:golang/github.com/libp2p/go-maddr-filter@v0.0.4", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-maddr-filter@v0.0.4" + }, + { + "group": "github.com/libp2p", + "name": "go-stream-muxer-multistream", + "version": "v0.2.0", + "purl": "pkg:golang/github.com/libp2p/go-stream-muxer-multistream@v0.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-stream-muxer-multistream@v0.2.0" + }, + { + "group": "github.com/libp2p", + "name": "go-tcp-transport", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/libp2p/go-tcp-transport@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-tcp-transport@v0.1.0" + }, + { + "group": "github.com/libp2p", + "name": "go-ws-transport", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/libp2p/go-ws-transport@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-ws-transport@v0.1.0" + }, + { + "group": "github.com/multiformats", + "name": "go-multiaddr-dns", + "version": "v0.0.2", + "purl": "pkg:golang/github.com/multiformats/go-multiaddr-dns@v0.0.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/multiformats/go-multiaddr-dns@v0.0.2" + }, + { + "group": "github.com/multiformats", + "name": "go-multiaddr-net", + "version": "v0.0.1", + "purl": "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1" + }, + { + "group": "github.com/multiformats", + "name": "go-multistream", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/multiformats/go-multistream@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/multiformats/go-multistream@v0.1.0" + }, + { + "group": "github.com/whyrusleeping", + "name": "mdns", + "version": "v0.0.0-20180901202407-ef14215e6b30", + "purl": "pkg:golang/github.com/whyrusleeping/mdns@v0.0.0-20180901202407-ef14215e6b30", + "type": "library", + "bom-ref": "pkg:golang/github.com/whyrusleeping/mdns@v0.0.0-20180901202407-ef14215e6b30" + }, + { + "group": "github.com/btcsuite", + "name": "btcd", + "version": "v0.0.0-20190523000118-16327141da8c", + "purl": "pkg:golang/github.com/btcsuite/btcd@v0.0.0-20190523000118-16327141da8c", + "type": "library", + "bom-ref": "pkg:golang/github.com/btcsuite/btcd@v0.0.0-20190523000118-16327141da8c" + }, + { + "group": "github.com/coreos", + "name": "go-semver", + "version": "v0.3.0", + "purl": "pkg:golang/github.com/coreos/go-semver@v0.3.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/coreos/go-semver@v0.3.0" + }, + { + "group": "github.com/libp2p", + "name": "go-flow-metrics", + "version": "v0.0.1", + "purl": "pkg:golang/github.com/libp2p/go-flow-metrics@v0.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-flow-metrics@v0.0.1" + }, + { + "group": "github.com/spacemonkeygo", + "name": "openssl", + "version": "v0.0.0-20181017203307-c2dcc5cca94a", + "purl": "pkg:golang/github.com/spacemonkeygo/openssl@v0.0.0-20181017203307-c2dcc5cca94a", + "type": "library", + "bom-ref": "pkg:golang/github.com/spacemonkeygo/openssl@v0.0.0-20181017203307-c2dcc5cca94a" + }, + { + "group": "github.com/kr", + "name": "pty", + "version": "v1.1.1", + "purl": "pkg:golang/github.com/kr/pty@v1.1.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/kr/pty@v1.1.1" + }, + { + "group": "github.com/libp2p", + "name": "go-mplex", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/libp2p/go-mplex@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-mplex@v0.1.0" + }, + { + "group": "github.com/libp2p", + "name": "go-nat", + "version": "v0.0.3", + "purl": "pkg:golang/github.com/libp2p/go-nat@v0.0.3", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-nat@v0.0.3" + }, + { + "group": "github.com/whyrusleeping", + "name": "go-notifier", + "version": "v0.0.0-20170827234753-097c5d47330f", + "purl": "pkg:golang/github.com/whyrusleeping/go-notifier@v0.0.0-20170827234753-097c5d47330f", + "type": "library", + "bom-ref": "pkg:golang/github.com/whyrusleeping/go-notifier@v0.0.0-20170827234753-097c5d47330f" + }, + { + "group": "github.com/ipfs", + "name": "go-ds-badger", + "version": "v0.0.2", + "purl": "pkg:golang/github.com/ipfs/go-ds-badger@v0.0.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-ds-badger@v0.0.2" + }, + { + "group": "github.com/ipfs", + "name": "go-ds-leveldb", + "version": "v0.0.1", + "purl": "pkg:golang/github.com/ipfs/go-ds-leveldb@v0.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/ipfs/go-ds-leveldb@v0.0.1" + }, + { + "group": "github.com/libp2p", + "name": "go-libp2p-crypto", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/libp2p/go-libp2p-crypto@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-crypto@v0.1.0" + }, + { + "group": "github.com/libp2p", + "name": "go-libp2p-peer", + "version": "v0.2.0", + "purl": "pkg:golang/github.com/libp2p/go-libp2p-peer@v0.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-libp2p-peer@v0.2.0" + }, + { + "group": "github.com/whyrusleeping", + "name": "go-keyspace", + "version": "v0.0.0-20160322163242-5b898ac5add1", + "purl": "pkg:golang/github.com/whyrusleeping/go-keyspace@v0.0.0-20160322163242-5b898ac5add1", + "type": "library", + "bom-ref": "pkg:golang/github.com/whyrusleeping/go-keyspace@v0.0.0-20160322163242-5b898ac5add1" + }, + { + "group": "github.com/whyrusleeping", + "name": "mafmt", + "version": "v1.2.8", + "purl": "pkg:golang/github.com/whyrusleeping/mafmt@v1.2.8", + "type": "library", + "bom-ref": "pkg:golang/github.com/whyrusleeping/mafmt@v1.2.8" + }, + { + "group": "github.com/libp2p", + "name": "go-msgio", + "version": "v0.0.2", + "purl": "pkg:golang/github.com/libp2p/go-msgio@v0.0.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-msgio@v0.0.2" + }, + { + "group": "github.com/libp2p", + "name": "go-addr-util", + "version": "v0.0.1", + "purl": "pkg:golang/github.com/libp2p/go-addr-util@v0.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-addr-util@v0.0.1" + }, + { + "group": "github.com/whyrusleeping", + "name": "multiaddr-filter", + "version": "v0.0.0-20160516205228-e903e4adabd7", + "purl": "pkg:golang/github.com/whyrusleeping/multiaddr-filter@v0.0.0-20160516205228-e903e4adabd7", + "type": "library", + "bom-ref": "pkg:golang/github.com/whyrusleeping/multiaddr-filter@v0.0.0-20160516205228-e903e4adabd7" + }, + { + "group": "github.com/jbenet", + "name": "go-temp-err-catcher", + "version": "v0.0.0-20150120210811-aac704a3f4f2", + "purl": "pkg:golang/github.com/jbenet/go-temp-err-catcher@v0.0.0-20150120210811-aac704a3f4f2", + "type": "library", + "bom-ref": "pkg:golang/github.com/jbenet/go-temp-err-catcher@v0.0.0-20150120210811-aac704a3f4f2" + }, + { + "group": "github.com/onsi", + "name": "ginkgo", + "version": "v1.8.0", + "purl": "pkg:golang/github.com/onsi/ginkgo@v1.8.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/onsi/ginkgo@v1.8.0" + }, + { + "group": "github.com/onsi", + "name": "gomega", + "version": "v1.5.0", + "purl": "pkg:golang/github.com/onsi/gomega@v1.5.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/onsi/gomega@v1.5.0" + }, + { + "group": "github.com/libp2p", + "name": "go-yamux", + "version": "v1.2.2", + "purl": "pkg:golang/github.com/libp2p/go-yamux@v1.2.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-yamux@v1.2.2" + }, + { + "group": "github.com/libp2p", + "name": "go-reuseport", + "version": "v0.0.1", + "purl": "pkg:golang/github.com/libp2p/go-reuseport@v0.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-reuseport@v0.0.1" + }, + { + "group": "github.com/libp2p", + "name": "go-reuseport-transport", + "version": "v0.0.2", + "purl": "pkg:golang/github.com/libp2p/go-reuseport-transport@v0.0.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-reuseport-transport@v0.0.2" + }, + { + "group": "github.com/multiformats", + "name": "go-multiaddr-fmt", + "version": "v0.0.1", + "purl": "pkg:golang/github.com/multiformats/go-multiaddr-fmt@v0.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/multiformats/go-multiaddr-fmt@v0.0.1" + }, + { + "group": "github.com/gorilla", + "name": "websocket", + "version": "v1.4.0", + "purl": "pkg:golang/github.com/gorilla/websocket@v1.4.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/gorilla/websocket@v1.4.0" + }, + { + "group": "github.com/aead", + "name": "siphash", + "version": "v1.0.1", + "purl": "pkg:golang/github.com/aead/siphash@v1.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/aead/siphash@v1.0.1" + }, + { + "group": "github.com/btcsuite", + "name": "btclog", + "version": "v0.0.0-20170628155309-84c8d2346e9f", + "purl": "pkg:golang/github.com/btcsuite/btclog@v0.0.0-20170628155309-84c8d2346e9f", + "type": "library", + "bom-ref": "pkg:golang/github.com/btcsuite/btclog@v0.0.0-20170628155309-84c8d2346e9f" + }, + { + "group": "github.com/btcsuite", + "name": "btcutil", + "version": "v0.0.0-20190425235716-9e5f4b9a998d", + "purl": "pkg:golang/github.com/btcsuite/btcutil@v0.0.0-20190425235716-9e5f4b9a998d", + "type": "library", + "bom-ref": "pkg:golang/github.com/btcsuite/btcutil@v0.0.0-20190425235716-9e5f4b9a998d" + }, + { + "group": "github.com/btcsuite", + "name": "go-socks", + "version": "v0.0.0-20170105172521-4720035b7bfd", + "purl": "pkg:golang/github.com/btcsuite/go-socks@v0.0.0-20170105172521-4720035b7bfd", + "type": "library", + "bom-ref": "pkg:golang/github.com/btcsuite/go-socks@v0.0.0-20170105172521-4720035b7bfd" + }, + { + "group": "github.com/btcsuite", + "name": "goleveldb", + "version": "v0.0.0-20160330041536-7834afc9e8cd", + "purl": "pkg:golang/github.com/btcsuite/goleveldb@v0.0.0-20160330041536-7834afc9e8cd", + "type": "library", + "bom-ref": "pkg:golang/github.com/btcsuite/goleveldb@v0.0.0-20160330041536-7834afc9e8cd" + }, + { + "group": "github.com/btcsuite", + "name": "snappy-go", + "version": "v0.0.0-20151229074030-0bdef8d06723", + "purl": "pkg:golang/github.com/btcsuite/snappy-go@v0.0.0-20151229074030-0bdef8d06723", + "type": "library", + "bom-ref": "pkg:golang/github.com/btcsuite/snappy-go@v0.0.0-20151229074030-0bdef8d06723" + }, + { + "group": "github.com/btcsuite", + "name": "websocket", + "version": "v0.0.0-20150119174127-31079b680792", + "purl": "pkg:golang/github.com/btcsuite/websocket@v0.0.0-20150119174127-31079b680792", + "type": "library", + "bom-ref": "pkg:golang/github.com/btcsuite/websocket@v0.0.0-20150119174127-31079b680792" + }, + { + "group": "github.com/btcsuite", + "name": "winsvc", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/btcsuite/winsvc@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/btcsuite/winsvc@v1.0.0" + }, + { + "group": "github.com/jrick", + "name": "logrotate", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/jrick/logrotate@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/jrick/logrotate@v1.0.0" + }, + { + "group": "github.com/kkdai", + "name": "bstream", + "version": "v0.0.0-20161212061736-f391b8402d23", + "purl": "pkg:golang/github.com/kkdai/bstream@v0.0.0-20161212061736-f391b8402d23", + "type": "library", + "bom-ref": "pkg:golang/github.com/kkdai/bstream@v0.0.0-20161212061736-f391b8402d23" + }, + { + "group": "github.com/spacemonkeygo", + "name": "spacelog", + "version": "v0.0.0-20180420211403-2296661a0572", + "purl": "pkg:golang/github.com/spacemonkeygo/spacelog@v0.0.0-20180420211403-2296661a0572", + "type": "library", + "bom-ref": "pkg:golang/github.com/spacemonkeygo/spacelog@v0.0.0-20180420211403-2296661a0572" + }, + { + "group": "github.com/huin", + "name": "goupnp", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/huin/goupnp@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/huin/goupnp@v1.0.0" + }, + { + "group": "github.com/jackpal", + "name": "gateway", + "version": "v1.0.5", + "purl": "pkg:golang/github.com/jackpal/gateway@v1.0.5", + "type": "library", + "bom-ref": "pkg:golang/github.com/jackpal/gateway@v1.0.5" + }, + { + "group": "github.com/jackpal", + "name": "go-nat-pmp", + "version": "v1.0.1", + "purl": "pkg:golang/github.com/jackpal/go-nat-pmp@v1.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/jackpal/go-nat-pmp@v1.0.1" + }, + { + "group": "github.com/koron", + "name": "go-ssdp", + "version": "v0.0.0-20180514024734-4a0ed625a78b", + "purl": "pkg:golang/github.com/koron/go-ssdp@v0.0.0-20180514024734-4a0ed625a78b", + "type": "library", + "bom-ref": "pkg:golang/github.com/koron/go-ssdp@v0.0.0-20180514024734-4a0ed625a78b" + }, + { + "group": "github.com/AndreasBriese", + "name": "bbloom", + "version": "v0.0.0-20180913140656-343706a395b7", + "purl": "pkg:golang/github.com/AndreasBriese/bbloom@v0.0.0-20180913140656-343706a395b7", + "type": "library", + "bom-ref": "pkg:golang/github.com/AndreasBriese/bbloom@v0.0.0-20180913140656-343706a395b7" + }, + { + "group": "github.com/Kubuxu", + "name": "go-os-helper", + "version": "v0.0.1", + "purl": "pkg:golang/github.com/Kubuxu/go-os-helper@v0.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/Kubuxu/go-os-helper@v0.0.1" + }, + { + "group": "github.com/dgraph-io", + "name": "badger", + "version": "v1.5.5-0.20190226225317-8115aed38f8f", + "purl": "pkg:golang/github.com/dgraph-io/badger@v1.5.5-0.20190226225317-8115aed38f8f", + "type": "library", + "bom-ref": "pkg:golang/github.com/dgraph-io/badger@v1.5.5-0.20190226225317-8115aed38f8f" + }, + { + "group": "github.com/dgryski", + "name": "go-farm", + "version": "v0.0.0-20190104051053-3adb47b1fb0f", + "purl": "pkg:golang/github.com/dgryski/go-farm@v0.0.0-20190104051053-3adb47b1fb0f", + "type": "library", + "bom-ref": "pkg:golang/github.com/dgryski/go-farm@v0.0.0-20190104051053-3adb47b1fb0f" + }, + { + "group": "github.com/dustin", + "name": "go-humanize", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/dustin/go-humanize@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/dustin/go-humanize@v1.0.0" + }, + { + "group": "github.com/syndtr", + "name": "goleveldb", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/syndtr/goleveldb@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/syndtr/goleveldb@v1.0.0" + }, + { + "group": "github.com/fsnotify", + "name": "fsnotify", + "version": "v1.4.7", + "purl": "pkg:golang/github.com/fsnotify/fsnotify@v1.4.7", + "type": "library", + "bom-ref": "pkg:golang/github.com/fsnotify/fsnotify@v1.4.7" + }, + { + "group": "github.com/hpcloud", + "name": "tail", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/hpcloud/tail@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/hpcloud/tail@v1.0.0" + }, + { + "group": "gopkg.in", + "name": "fsnotify.v1", + "version": "v1.4.7", + "purl": "pkg:golang/gopkg.in/fsnotify.v1@v1.4.7", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/fsnotify.v1@v1.4.7" + }, + { + "group": "gopkg.in", + "name": "tomb.v1", + "version": "v1.0.0-20141024135613-dd632973f1e7", + "purl": "pkg:golang/gopkg.in/tomb.v1@v1.0.0-20141024135613-dd632973f1e7", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/tomb.v1@v1.0.0-20141024135613-dd632973f1e7" + }, + { + "group": "github.com/huin", + "name": "goutil", + "version": "v0.0.0-20170803182201-1ca381bf3150", + "purl": "pkg:golang/github.com/huin/goutil@v0.0.0-20170803182201-1ca381bf3150", + "type": "library", + "bom-ref": "pkg:golang/github.com/huin/goutil@v0.0.0-20170803182201-1ca381bf3150" + }, + { + "group": "google.golang.org", + "name": "genproto", + "version": "v0.0.0-20180831171423-11092d34479b", + "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20180831171423-11092d34479b", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20180831171423-11092d34479b" + }, + { + "group": "github.com/golang", + "name": "snappy", + "version": "v0.0.0-20180518054509-2e65f85255db", + "purl": "pkg:golang/github.com/golang/snappy@v0.0.0-20180518054509-2e65f85255db", + "type": "library", + "bom-ref": "pkg:golang/github.com/golang/snappy@v0.0.0-20180518054509-2e65f85255db" + }, + { + "group": "github.com/libp2p", + "name": "go-stream-muxer", + "version": "v0.0.1", + "purl": "pkg:golang/github.com/libp2p/go-stream-muxer@v0.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/libp2p/go-stream-muxer@v0.0.1" + } + ], + "dependencies": [ + { + "ref": "pkg:golang/github.com/devfile-samples/devfile-sample-go-basic@v0.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/gin-contrib/sse@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/stretchr/testify@v1.7.0" + ] + }, + { + "ref": "pkg:golang/github.com/go-playground/validator/v10@v10.2.0", + "dependsOn": [ + "pkg:golang/github.com/go-playground/assert/v2@v2.0.1", + "pkg:golang/github.com/go-playground/locales@v0.13.0", + "pkg:golang/github.com/go-playground/universal-translator@v0.17.0", + "pkg:golang/github.com/leodido/go-urn@v1.2.0" + ] + }, + { + "ref": "pkg:golang/github.com/golang/protobuf@v1.3.3", + "dependsOn": [ + "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", + "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", + "pkg:golang/google.golang.org/genproto@v0.0.0-20180831171423-11092d34479b" + ] + }, + { + "ref": "pkg:golang/github.com/json-iterator/go@v1.1.9", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/google/gofuzz@v1.0.0", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180228061459-e0a39a4cb421", + "pkg:golang/github.com/modern-go/reflect2@v0.0.0-20180701023420-4b7aa43c6742", + "pkg:golang/github.com/stretchr/testify@v1.7.0" + ] + }, + { + "ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.12", + "dependsOn": [ + "pkg:golang/golang.org/x/sys@v0.0.0-20210309074719-68d13333faf2" + ] + }, + { + "ref": "pkg:golang/github.com/stretchr/testify@v1.7.0", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/github.com/stretchr/objx@v0.1.0", + "pkg:golang/gopkg.in/yaml.v2@v2.2.8" + ] + }, + { + "ref": "pkg:golang/github.com/ugorji/go/codec@v1.1.7", + "dependsOn": [ + "pkg:golang/github.com/ugorji/go@v1.1.7" + ] + }, + { + "ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.8", + "dependsOn": [ + "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127" + ] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-block-format@v0.0.3", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-cid@v0.0.7", + "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.2", + "pkg:golang/github.com/multiformats/go-multihash@v0.0.15" + ] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-cid@v0.0.7", + "dependsOn": [ + "pkg:golang/github.com/multiformats/go-multibase@v0.0.3", + "pkg:golang/github.com/multiformats/go-multihash@v0.0.15", + "pkg:golang/github.com/multiformats/go-varint@v0.0.6" + ] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-ipld-cbor@v0.0.5", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-block-format@v0.0.3", + "pkg:golang/github.com/ipfs/go-cid@v0.0.7", + "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.2", + "pkg:golang/github.com/ipfs/go-ipld-format@v0.2.0", + "pkg:golang/github.com/multiformats/go-multihash@v0.0.15", + "pkg:golang/github.com/polydawn/refmt@v0.0.0-20201211092308-30ac6d18308e", + "pkg:golang/github.com/smartystreets/goconvey@v1.6.4", + "pkg:golang/github.com/warpfork/go-wish@v0.0.0-20200122115046-b9ea61034e4a", + "pkg:golang/github.com/whyrusleeping/cbor-gen@v0.0.0-20200123233031-1cdf64d27158" + ] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-ipld-format@v0.2.0", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-block-format@v0.0.3", + "pkg:golang/github.com/ipfs/go-cid@v0.0.7", + "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.2", + "pkg:golang/github.com/multiformats/go-multihash@v0.0.15" + ] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-merkledag@v0.3.2", + "dependsOn": [ + "pkg:golang/github.com/gogo/protobuf@v1.3.1", + "pkg:golang/github.com/ipfs/go-block-format@v0.0.3", + "pkg:golang/github.com/ipfs/go-blockservice@v0.1.0", + "pkg:golang/github.com/ipfs/go-cid@v0.0.7", + "pkg:golang/github.com/ipfs/go-datastore@v0.3.1", + "pkg:golang/github.com/ipfs/go-ipfs-blockstore@v0.1.0", + "pkg:golang/github.com/ipfs/go-ipfs-exchange-offline@v0.0.1", + "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.2", + "pkg:golang/github.com/ipfs/go-ipld-cbor@v0.0.5", + "pkg:golang/github.com/ipfs/go-ipld-format@v0.2.0", + "pkg:golang/github.com/multiformats/go-multihash@v0.0.15" + ] + }, + { + "ref": "pkg:golang/github.com/ipld/go-codec-dagpb@v1.2.0", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-cid@v0.0.7", + "pkg:golang/github.com/ipld/go-ipld-prime@v0.9.0", + "pkg:golang/github.com/mr-tron/base58@v1.2.0", + "pkg:golang/github.com/multiformats/go-varint@v0.0.6", + "pkg:golang/github.com/polydawn/refmt@v0.0.0-20201211092308-30ac6d18308e", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + ] + }, + { + "ref": "pkg:golang/github.com/ipld/go-ipld-prime@v0.9.0", + "dependsOn": [ + "pkg:golang/github.com/frankban/quicktest@v1.11.3", + "pkg:golang/github.com/ipfs/go-cid@v0.0.7", + "pkg:golang/github.com/multiformats/go-multihash@v0.0.15", + "pkg:golang/github.com/polydawn/refmt@v0.0.0-20201211092308-30ac6d18308e", + "pkg:golang/github.com/smartystreets/goconvey@v1.6.4", + "pkg:golang/github.com/warpfork/go-wish@v0.0.0-20200122115046-b9ea61034e4a" + ] + }, + { + "ref": "pkg:golang/github.com/multiformats/go-multihash@v0.0.15", + "dependsOn": [ + "pkg:golang/github.com/minio/blake2b-simd@v0.0.0-20160723061019-3f5f724cb5b1", + "pkg:golang/github.com/minio/sha256-simd@v1.0.0", + "pkg:golang/github.com/mr-tron/base58@v1.2.0", + "pkg:golang/github.com/multiformats/go-varint@v0.0.6", + "pkg:golang/golang.org/x/crypto@v0.0.0-20210220033148-5ea612d1eb83", + "pkg:golang/golang.org/x/sys@v0.0.0-20210309074719-68d13333faf2", + "pkg:golang/github.com/spaolacci/murmur3@v1.1.0", + "pkg:golang/github.com/gxed/hashland/keccakpg@v0.0.1", + "pkg:golang/github.com/gxed/hashland/murmur3@v0.0.1" + ] + }, + { + "ref": "pkg:golang/github.com/dgrijalva/jwt-go@v3.2.0%2Bincompatible", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/labstack/gommon@v0.3.0", + "dependsOn": [ + "pkg:golang/github.com/mattn/go-colorable@v0.1.7", + "pkg:golang/github.com/mattn/go-isatty@v0.0.12", + "pkg:golang/github.com/stretchr/testify@v1.7.0", + "pkg:golang/github.com/valyala/fasttemplate@v1.2.1" + ] + }, + { + "ref": "pkg:golang/github.com/mattn/go-colorable@v0.1.7", + "dependsOn": [ + "pkg:golang/github.com/mattn/go-isatty@v0.0.12", + "pkg:golang/golang.org/x/sys@v0.0.0-20210309074719-68d13333faf2" + ] + }, + { + "ref": "pkg:golang/github.com/valyala/fasttemplate@v1.2.1", + "dependsOn": [ + "pkg:golang/github.com/valyala/bytebufferpool@v1.0.0" + ] + }, + { + "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20210220033148-5ea612d1eb83", + "dependsOn": [ + "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", + "pkg:golang/golang.org/x/sys@v0.0.0-20210309074719-68d13333faf2", + "pkg:golang/golang.org/x/term@v0.0.0-20201117132131-f5c789dd3221" + ] + }, + { + "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", + "dependsOn": [ + "pkg:golang/golang.org/x/crypto@v0.0.0-20210220033148-5ea612d1eb83", + "pkg:golang/golang.org/x/sys@v0.0.0-20210309074719-68d13333faf2", + "pkg:golang/golang.org/x/text@v0.3.3" + ] + }, + { + "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210309074719-68d13333faf2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/text@v0.3.3", + "dependsOn": [ + "pkg:golang/golang.org/x/tools@v0.0.0-20200509030707-2212a7e161a5" + ] + }, + { + "ref": "pkg:golang/github.com/beevik/etree@v1.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/jonboulle/clockwork@v0.2.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/armon/go-radix@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/cucumber/godog@v0.8.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/elastic/go-sysinfo@v1.1.1", + "dependsOn": [ + "pkg:golang/github.com/elastic/go-windows@v1.0.0", + "pkg:golang/github.com/joeshaw/multierror@v0.0.0-20140124173710-69b34d4ec901", + "pkg:golang/github.com/pkg/errors@v0.8.1", + "pkg:golang/github.com/prometheus/procfs@v0.0.3", + "pkg:golang/github.com/stretchr/testify@v1.7.0", + "pkg:golang/golang.org/x/sys@v0.0.0-20210309074719-68d13333faf2", + "pkg:golang/howett.net/plist@v0.0.0-20181124034731-591f970eefbb" + ] + }, + { + "ref": "pkg:golang/github.com/google/go-cmp@v0.5.4", + "dependsOn": [ + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + ] + }, + { + "ref": "pkg:golang/github.com/pkg/errors@v0.8.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/prometheus/procfs@v0.0.3", + "dependsOn": [ + "pkg:golang/github.com/google/go-cmp@v0.5.4", + "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e" + ] + }, + { + "ref": "pkg:golang/github.com/santhosh-tekuri/jsonschema@v1.2.4", + "dependsOn": [] + }, + { + "ref": "pkg:golang/go.elastic.co/fastjson@v1.1.0", + "dependsOn": [ + "pkg:golang/github.com/pkg/errors@v0.8.1", + "pkg:golang/golang.org/x/tools@v0.0.0-20200509030707-2212a7e161a5" + ] + }, + { + "ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/go-playground/assert/v2@v2.0.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/go-playground/locales@v0.13.0", + "dependsOn": [ + "pkg:golang/golang.org/x/text@v0.3.3" + ] + }, + { + "ref": "pkg:golang/github.com/go-playground/universal-translator@v0.17.0", + "dependsOn": [ + "pkg:golang/github.com/go-playground/locales@v0.13.0" + ] + }, + { + "ref": "pkg:golang/github.com/leodido/go-urn@v1.2.0", + "dependsOn": [ + "pkg:golang/github.com/stretchr/testify@v1.7.0" + ] + }, + { + "ref": "pkg:golang/github.com/google/gofuzz@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180228061459-e0a39a4cb421", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/modern-go/reflect2@v0.0.0-20180701023420-4b7aa43c6742", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/stretchr/objx@v0.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/ugorji/go@v1.1.7", + "dependsOn": [ + "pkg:golang/github.com/ugorji/go/codec@v1.1.7" + ] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.2", + "dependsOn": [ + "pkg:golang/github.com/mr-tron/base58@v1.2.0", + "pkg:golang/github.com/multiformats/go-multihash@v0.0.15" + ] + }, + { + "ref": "pkg:golang/github.com/multiformats/go-multibase@v0.0.3", + "dependsOn": [ + "pkg:golang/github.com/mr-tron/base58@v1.2.0", + "pkg:golang/github.com/multiformats/go-base32@v0.0.3", + "pkg:golang/github.com/multiformats/go-base36@v0.1.0" + ] + }, + { + "ref": "pkg:golang/github.com/multiformats/go-varint@v0.0.6", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/polydawn/refmt@v0.0.0-20201211092308-30ac6d18308e", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/smartystreets/goconvey@v1.6.4", + "dependsOn": [ + "pkg:golang/github.com/gopherjs/gopherjs@v0.0.0-20181017120253-0766667cb4d1", + "pkg:golang/github.com/jtolds/gls@v4.20.0%2Bincompatible", + "pkg:golang/github.com/smartystreets/assertions@v0.0.0-20180927180507-b2de0cb4f26d", + "pkg:golang/golang.org/x/tools@v0.0.0-20200509030707-2212a7e161a5" + ] + }, + { + "ref": "pkg:golang/github.com/warpfork/go-wish@v0.0.0-20200122115046-b9ea61034e4a", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/whyrusleeping/cbor-gen@v0.0.0-20200123233031-1cdf64d27158", + "dependsOn": [ + "pkg:golang/github.com/google/go-cmp@v0.5.4", + "pkg:golang/github.com/ipfs/go-cid@v0.0.7", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/gogo/protobuf@v1.3.1", + "dependsOn": [ + "pkg:golang/github.com/kisielk/errcheck@v1.2.0", + "pkg:golang/github.com/kisielk/gotool@v1.0.0" + ] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-blockservice@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-bitswap@v0.1.0", + "pkg:golang/github.com/ipfs/go-block-format@v0.0.3", + "pkg:golang/github.com/ipfs/go-cid@v0.0.7", + "pkg:golang/github.com/ipfs/go-datastore@v0.3.1", + "pkg:golang/github.com/ipfs/go-ipfs-blockstore@v0.1.0", + "pkg:golang/github.com/ipfs/go-ipfs-blocksutil@v0.0.1", + "pkg:golang/github.com/ipfs/go-ipfs-delay@v0.0.1", + "pkg:golang/github.com/ipfs/go-ipfs-exchange-interface@v0.0.1", + "pkg:golang/github.com/ipfs/go-ipfs-exchange-offline@v0.0.1", + "pkg:golang/github.com/ipfs/go-ipfs-routing@v0.1.0", + "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.2", + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/ipfs/go-verifcid@v0.0.1" + ] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-datastore@v0.3.1", + "dependsOn": [ + "pkg:golang/github.com/go-check/check@v0.0.0-20180628173108-788fd7840127", + "pkg:golang/github.com/google/uuid@v1.1.1", + "pkg:golang/github.com/ipfs/go-ipfs-delay@v0.0.1", + "pkg:golang/github.com/jbenet/goprocess@v0.1.3", + "pkg:golang/github.com/kr/pretty@v0.2.1", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", + "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127" + ] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-ipfs-blockstore@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", + "pkg:golang/github.com/ipfs/bbloom@v0.0.4", + "pkg:golang/github.com/ipfs/go-block-format@v0.0.3", + "pkg:golang/github.com/ipfs/go-cid@v0.0.7", + "pkg:golang/github.com/ipfs/go-datastore@v0.3.1", + "pkg:golang/github.com/ipfs/go-ipfs-ds-help@v0.0.1", + "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.2", + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/ipfs/go-metrics-interface@v0.0.1", + "pkg:golang/github.com/multiformats/go-multihash@v0.0.15" + ] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-ipfs-exchange-offline@v0.0.1", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-block-format@v0.0.3", + "pkg:golang/github.com/ipfs/go-cid@v0.0.7", + "pkg:golang/github.com/ipfs/go-datastore@v0.3.1", + "pkg:golang/github.com/ipfs/go-ipfs-blockstore@v0.1.0", + "pkg:golang/github.com/ipfs/go-ipfs-blocksutil@v0.0.1", + "pkg:golang/github.com/ipfs/go-ipfs-exchange-interface@v0.0.1", + "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.2" + ] + }, + { + "ref": "pkg:golang/github.com/mr-tron/base58@v1.2.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/frankban/quicktest@v1.11.3", + "dependsOn": [ + "pkg:golang/github.com/google/go-cmp@v0.5.4", + "pkg:golang/github.com/kr/pretty@v0.2.1" + ] + }, + { + "ref": "pkg:golang/github.com/minio/blake2b-simd@v0.0.0-20160723061019-3f5f724cb5b1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/minio/sha256-simd@v1.0.0", + "dependsOn": [ + "pkg:golang/github.com/klauspost/cpuid/v2@v2.0.4" + ] + }, + { + "ref": "pkg:golang/github.com/valyala/bytebufferpool@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200509030707-2212a7e161a5", + "dependsOn": [ + "pkg:golang/github.com/yuin/goldmark@v1.1.27", + "pkg:golang/golang.org/x/mod@v0.2.0", + "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", + "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + ] + }, + { + "ref": "pkg:golang/github.com/elastic/go-windows@v1.0.0", + "dependsOn": [ + "pkg:golang/github.com/pkg/errors@v0.8.1", + "pkg:golang/github.com/stretchr/testify@v1.7.0" + ] + }, + { + "ref": "pkg:golang/github.com/joeshaw/multierror@v0.0.0-20140124173710-69b34d4ec901", + "dependsOn": [] + }, + { + "ref": "pkg:golang/howett.net/plist@v0.0.0-20181124034731-591f970eefbb", + "dependsOn": [ + "pkg:golang/github.com/jessevdk/go-flags@v1.4.0", + "pkg:golang/github.com/kr/pretty@v0.2.1", + "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127", + "pkg:golang/gopkg.in/yaml.v2@v2.2.8" + ] + }, + { + "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/spaolacci/murmur3@v1.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/multiformats/go-base32@v0.0.3", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/multiformats/go-base36@v0.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/gopherjs/gopherjs@v0.0.0-20181017120253-0766667cb4d1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/jtolds/gls@v4.20.0%2Bincompatible", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/smartystreets/assertions@v0.0.0-20180927180507-b2de0cb4f26d", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/gxed/hashland/keccakpg@v0.0.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/gxed/hashland/murmur3@v0.0.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/kisielk/errcheck@v1.2.0", + "dependsOn": [ + "pkg:golang/golang.org/x/tools@v0.0.0-20200509030707-2212a7e161a5", + "pkg:golang/github.com/kisielk/gotool@v1.0.0" + ] + }, + { + "ref": "pkg:golang/github.com/kisielk/gotool@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-bitswap@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/cskr/pubsub@v1.0.2", + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/gogo/protobuf@v1.3.1", + "pkg:golang/github.com/golang/protobuf@v1.3.3", + "pkg:golang/github.com/google/uuid@v1.1.1", + "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", + "pkg:golang/github.com/ipfs/go-block-format@v0.0.3", + "pkg:golang/github.com/ipfs/go-cid@v0.0.7", + "pkg:golang/github.com/ipfs/go-datastore@v0.3.1", + "pkg:golang/github.com/ipfs/go-detect-race@v0.0.1", + "pkg:golang/github.com/ipfs/go-ipfs-blockstore@v0.1.0", + "pkg:golang/github.com/ipfs/go-ipfs-blocksutil@v0.0.1", + "pkg:golang/github.com/ipfs/go-ipfs-delay@v0.0.1", + "pkg:golang/github.com/ipfs/go-ipfs-exchange-interface@v0.0.1", + "pkg:golang/github.com/ipfs/go-ipfs-routing@v0.1.0", + "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.2", + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/ipfs/go-metrics-interface@v0.0.1", + "pkg:golang/github.com/ipfs/go-peertaskqueue@v0.1.0", + "pkg:golang/github.com/jbenet/goprocess@v0.1.3", + "pkg:golang/github.com/libp2p/go-libp2p@v0.1.0", + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-loggables@v0.1.0", + "pkg:golang/github.com/libp2p/go-libp2p-netutil@v0.1.0", + "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", + "pkg:golang/github.com/libp2p/go-testutil@v0.1.0", + "pkg:golang/github.com/mattn/go-colorable@v0.1.7", + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", + "pkg:golang/github.com/opentracing/opentracing-go@v1.1.0", + "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", + "pkg:golang/golang.org/x/sys@v0.0.0-20210309074719-68d13333faf2", + "pkg:golang/golang.org/x/text@v0.3.3", + "pkg:golang/gopkg.in/yaml.v2@v2.2.8" + ] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-ipfs-blocksutil@v0.0.1", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-block-format@v0.0.3" + ] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-ipfs-delay@v0.0.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-ipfs-exchange-interface@v0.0.1", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-block-format@v0.0.3", + "pkg:golang/github.com/ipfs/go-cid@v0.0.7" + ] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-ipfs-routing@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/gogo/protobuf@v1.3.1", + "pkg:golang/github.com/ipfs/go-cid@v0.0.7", + "pkg:golang/github.com/ipfs/go-datastore@v0.3.1", + "pkg:golang/github.com/ipfs/go-ipfs-delay@v0.0.1", + "pkg:golang/github.com/ipfs/go-ipfs-ds-help@v0.0.1", + "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.2", + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-record@v0.1.0", + "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", + "pkg:golang/github.com/multiformats/go-multihash@v0.0.15" + ] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "dependsOn": [ + "pkg:golang/github.com/gogo/protobuf@v1.3.1", + "pkg:golang/github.com/mattn/go-colorable@v0.1.7", + "pkg:golang/github.com/opentracing/opentracing-go@v1.1.0", + "pkg:golang/github.com/stretchr/testify@v1.7.0", + "pkg:golang/github.com/whyrusleeping/go-logging@v0.0.0-20170515211332-0457bb6b88fc", + "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202" + ] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-verifcid@v0.0.1", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-cid@v0.0.7", + "pkg:golang/github.com/multiformats/go-multihash@v0.0.15" + ] + }, + { + "ref": "pkg:golang/github.com/go-check/check@v0.0.0-20180628173108-788fd7840127", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/google/uuid@v1.1.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/jbenet/goprocess@v0.1.3", + "dependsOn": [ + "pkg:golang/github.com/jbenet/go-cienv@v0.1.0" + ] + }, + { + "ref": "pkg:golang/github.com/kr/pretty@v0.2.1", + "dependsOn": [ + "pkg:golang/github.com/kr/text@v0.1.0" + ] + }, + { + "ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/ipfs/bbloom@v0.0.4", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-ipfs-ds-help@v0.0.1", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-cid@v0.0.7", + "pkg:golang/github.com/ipfs/go-datastore@v0.3.1", + "pkg:golang/github.com/multiformats/go-base32@v0.0.3" + ] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-metrics-interface@v0.0.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/klauspost/cpuid/v2@v2.0.4", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/term@v0.0.0-20201117132131-f5c789dd3221", + "dependsOn": [ + "pkg:golang/golang.org/x/sys@v0.0.0-20210309074719-68d13333faf2" + ] + }, + { + "ref": "pkg:golang/github.com/jessevdk/go-flags@v1.4.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/yuin/goldmark@v1.1.27", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/mod@v0.2.0", + "dependsOn": [ + "pkg:golang/golang.org/x/crypto@v0.0.0-20210220033148-5ea612d1eb83", + "pkg:golang/golang.org/x/tools@v0.0.0-20200509030707-2212a7e161a5", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + ] + }, + { + "ref": "pkg:golang/github.com/cskr/pubsub@v1.0.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-detect-race@v0.0.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-peertaskqueue@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-ipfs-pq@v0.0.1", + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/multiformats/go-multihash@v0.0.15" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-libp2p@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/gogo/protobuf@v1.3.1", + "pkg:golang/github.com/ipfs/go-cid@v0.0.7", + "pkg:golang/github.com/ipfs/go-detect-race@v0.0.1", + "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.2", + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/jbenet/go-cienv@v0.1.0", + "pkg:golang/github.com/jbenet/goprocess@v0.1.3", + "pkg:golang/github.com/libp2p/go-conn-security-multistream@v0.1.0", + "pkg:golang/github.com/libp2p/go-libp2p-autonat@v0.1.0", + "pkg:golang/github.com/libp2p/go-libp2p-blankhost@v0.1.1", + "pkg:golang/github.com/libp2p/go-libp2p-circuit@v0.1.0", + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-discovery@v0.1.0", + "pkg:golang/github.com/libp2p/go-libp2p-loggables@v0.1.0", + "pkg:golang/github.com/libp2p/go-libp2p-mplex@v0.2.1", + "pkg:golang/github.com/libp2p/go-libp2p-nat@v0.0.4", + "pkg:golang/github.com/libp2p/go-libp2p-netutil@v0.1.0", + "pkg:golang/github.com/libp2p/go-libp2p-peerstore@v0.1.0", + "pkg:golang/github.com/libp2p/go-libp2p-secio@v0.1.0", + "pkg:golang/github.com/libp2p/go-libp2p-swarm@v0.1.0", + "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", + "pkg:golang/github.com/libp2p/go-libp2p-transport-upgrader@v0.1.1", + "pkg:golang/github.com/libp2p/go-libp2p-yamux@v0.2.0", + "pkg:golang/github.com/libp2p/go-maddr-filter@v0.0.4", + "pkg:golang/github.com/libp2p/go-stream-muxer-multistream@v0.2.0", + "pkg:golang/github.com/libp2p/go-tcp-transport@v0.1.0", + "pkg:golang/github.com/libp2p/go-ws-transport@v0.1.0", + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", + "pkg:golang/github.com/multiformats/go-multiaddr-dns@v0.0.2", + "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1", + "pkg:golang/github.com/multiformats/go-multistream@v0.1.0", + "pkg:golang/github.com/whyrusleeping/mdns@v0.0.0-20180901202407-ef14215e6b30" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "dependsOn": [ + "pkg:golang/github.com/btcsuite/btcd@v0.0.0-20190523000118-16327141da8c", + "pkg:golang/github.com/coreos/go-semver@v0.3.0", + "pkg:golang/github.com/gogo/protobuf@v1.3.1", + "pkg:golang/github.com/ipfs/go-cid@v0.0.7", + "pkg:golang/github.com/jbenet/goprocess@v0.1.3", + "pkg:golang/github.com/libp2p/go-flow-metrics@v0.0.1", + "pkg:golang/github.com/minio/sha256-simd@v1.0.0", + "pkg:golang/github.com/mr-tron/base58@v1.2.0", + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", + "pkg:golang/github.com/multiformats/go-multihash@v0.0.15", + "pkg:golang/github.com/spacemonkeygo/openssl@v0.0.0-20181017203307-c2dcc5cca94a", + "pkg:golang/golang.org/x/crypto@v0.0.0-20210220033148-5ea612d1eb83" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-libp2p-loggables@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/google/uuid@v1.1.1", + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-libp2p-netutil@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", + "dependsOn": [ + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-testutil@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", + "pkg:golang/golang.org/x/sys@v0.0.0-20210309074719-68d13333faf2" + ] + }, + { + "ref": "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", + "dependsOn": [ + "pkg:golang/github.com/multiformats/go-multihash@v0.0.15" + ] + }, + { + "ref": "pkg:golang/github.com/opentracing/opentracing-go@v1.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-libp2p-record@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/gogo/protobuf@v1.3.1", + "pkg:golang/github.com/ipfs/go-ipfs-util@v0.0.2", + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/multiformats/go-multihash@v0.0.15" + ] + }, + { + "ref": "pkg:golang/github.com/whyrusleeping/go-logging@v0.0.0-20170515211332-0457bb6b88fc", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/kr/text@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/kr/pty@v1.1.1" + ] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-ipfs-pq@v0.0.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/jbenet/go-cienv@v0.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-conn-security-multistream@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", + "pkg:golang/github.com/multiformats/go-multistream@v0.1.0" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-libp2p-autonat@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/gogo/protobuf@v1.3.1", + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/libp2p/go-libp2p-blankhost@v0.1.1", + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-swarm@v0.1.0", + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-libp2p-blankhost@v0.1.1", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", + "pkg:golang/github.com/multiformats/go-multistream@v0.1.0" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-libp2p-circuit@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/gogo/protobuf@v1.3.1", + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-blankhost@v0.1.1", + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-swarm@v0.1.0", + "pkg:golang/github.com/libp2p/go-libp2p-transport-upgrader@v0.1.1", + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", + "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-libp2p-discovery@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-cid@v0.0.7", + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/libp2p/go-libp2p-blankhost@v0.1.1", + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-swarm@v0.1.0", + "pkg:golang/github.com/multiformats/go-multihash@v0.0.15" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-libp2p-mplex@v0.2.1", + "dependsOn": [ + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", + "pkg:golang/github.com/libp2p/go-mplex@v0.1.0" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-libp2p-nat@v0.0.4", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/jbenet/go-cienv@v0.1.0", + "pkg:golang/github.com/jbenet/goprocess@v0.1.3", + "pkg:golang/github.com/libp2p/go-nat@v0.0.3", + "pkg:golang/github.com/whyrusleeping/go-notifier@v0.0.0-20170827234753-097c5d47330f" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-libp2p-peerstore@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/gogo/protobuf@v1.3.1", + "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", + "pkg:golang/github.com/ipfs/go-datastore@v0.3.1", + "pkg:golang/github.com/ipfs/go-ds-badger@v0.0.2", + "pkg:golang/github.com/ipfs/go-ds-leveldb@v0.0.1", + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-crypto@v0.1.0", + "pkg:golang/github.com/libp2p/go-libp2p-peer@v0.2.0", + "pkg:golang/github.com/multiformats/go-base32@v0.0.3", + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", + "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1", + "pkg:golang/github.com/multiformats/go-multihash@v0.0.15", + "pkg:golang/github.com/pkg/errors@v0.8.1", + "pkg:golang/github.com/whyrusleeping/go-keyspace@v0.0.0-20160322163242-5b898ac5add1", + "pkg:golang/github.com/whyrusleeping/mafmt@v1.2.8" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-libp2p-secio@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/gogo/protobuf@v1.3.1", + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", + "pkg:golang/github.com/libp2p/go-msgio@v0.0.2", + "pkg:golang/github.com/minio/sha256-simd@v1.0.0", + "pkg:golang/github.com/multiformats/go-multihash@v0.0.15", + "pkg:golang/golang.org/x/crypto@v0.0.0-20210220033148-5ea612d1eb83" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-libp2p-swarm@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/jbenet/goprocess@v0.1.3", + "pkg:golang/github.com/libp2p/go-addr-util@v0.0.1", + "pkg:golang/github.com/libp2p/go-conn-security-multistream@v0.1.0", + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-loggables@v0.1.0", + "pkg:golang/github.com/libp2p/go-libp2p-peerstore@v0.1.0", + "pkg:golang/github.com/libp2p/go-libp2p-secio@v0.1.0", + "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", + "pkg:golang/github.com/libp2p/go-libp2p-transport-upgrader@v0.1.1", + "pkg:golang/github.com/libp2p/go-libp2p-yamux@v0.2.0", + "pkg:golang/github.com/libp2p/go-maddr-filter@v0.0.4", + "pkg:golang/github.com/libp2p/go-stream-muxer-multistream@v0.2.0", + "pkg:golang/github.com/libp2p/go-tcp-transport@v0.1.0", + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", + "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1", + "pkg:golang/github.com/whyrusleeping/mafmt@v1.2.8", + "pkg:golang/github.com/whyrusleeping/multiaddr-filter@v0.0.0-20160516205228-e903e4adabd7" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-libp2p-transport-upgrader@v0.1.1", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/jbenet/go-temp-err-catcher@v0.0.0-20150120210811-aac704a3f4f2", + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-mplex@v0.2.1", + "pkg:golang/github.com/libp2p/go-maddr-filter@v0.0.4", + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", + "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1", + "pkg:golang/github.com/onsi/ginkgo@v1.8.0", + "pkg:golang/github.com/onsi/gomega@v1.5.0" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-libp2p-yamux@v0.2.0", + "dependsOn": [ + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", + "pkg:golang/github.com/libp2p/go-yamux@v1.2.2" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-maddr-filter@v0.0.4", + "dependsOn": [ + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", + "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-stream-muxer-multistream@v0.2.0", + "dependsOn": [ + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/multiformats/go-multistream@v0.1.0" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-tcp-transport@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-mplex@v0.2.1", + "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", + "pkg:golang/github.com/libp2p/go-libp2p-transport-upgrader@v0.1.1", + "pkg:golang/github.com/libp2p/go-reuseport@v0.0.1", + "pkg:golang/github.com/libp2p/go-reuseport-transport@v0.0.2", + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", + "pkg:golang/github.com/multiformats/go-multiaddr-fmt@v0.0.1", + "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1", + "pkg:golang/github.com/multiformats/go-multihash@v0.0.15" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-ws-transport@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/gorilla/websocket@v1.4.0", + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-mplex@v0.2.1", + "pkg:golang/github.com/libp2p/go-libp2p-testing@v0.0.3", + "pkg:golang/github.com/libp2p/go-libp2p-transport-upgrader@v0.1.1", + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", + "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1", + "pkg:golang/github.com/whyrusleeping/mafmt@v1.2.8" + ] + }, + { + "ref": "pkg:golang/github.com/multiformats/go-multiaddr-dns@v0.0.2", + "dependsOn": [ + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4" + ] + }, + { + "ref": "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1", + "dependsOn": [ + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", + "pkg:golang/github.com/multiformats/go-multiaddr-dns@v0.0.2" + ] + }, + { + "ref": "pkg:golang/github.com/multiformats/go-multistream@v0.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/whyrusleeping/mdns@v0.0.0-20180901202407-ef14215e6b30", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/btcsuite/btcd@v0.0.0-20190523000118-16327141da8c", + "dependsOn": [ + "pkg:golang/github.com/aead/siphash@v1.0.1", + "pkg:golang/github.com/btcsuite/btclog@v0.0.0-20170628155309-84c8d2346e9f", + "pkg:golang/github.com/btcsuite/btcutil@v0.0.0-20190425235716-9e5f4b9a998d", + "pkg:golang/github.com/btcsuite/go-socks@v0.0.0-20170105172521-4720035b7bfd", + "pkg:golang/github.com/btcsuite/goleveldb@v0.0.0-20160330041536-7834afc9e8cd", + "pkg:golang/github.com/btcsuite/snappy-go@v0.0.0-20151229074030-0bdef8d06723", + "pkg:golang/github.com/btcsuite/websocket@v0.0.0-20150119174127-31079b680792", + "pkg:golang/github.com/btcsuite/winsvc@v1.0.0", + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/jessevdk/go-flags@v1.4.0", + "pkg:golang/github.com/jrick/logrotate@v1.0.0", + "pkg:golang/github.com/kkdai/bstream@v0.0.0-20161212061736-f391b8402d23", + "pkg:golang/github.com/onsi/ginkgo@v1.8.0", + "pkg:golang/github.com/onsi/gomega@v1.5.0", + "pkg:golang/golang.org/x/crypto@v0.0.0-20210220033148-5ea612d1eb83" + ] + }, + { + "ref": "pkg:golang/github.com/coreos/go-semver@v0.3.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-flow-metrics@v0.0.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/spacemonkeygo/openssl@v0.0.0-20181017203307-c2dcc5cca94a", + "dependsOn": [ + "pkg:golang/github.com/spacemonkeygo/spacelog@v0.0.0-20180420211403-2296661a0572" + ] + }, + { + "ref": "pkg:golang/github.com/kr/pty@v1.1.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-mplex@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/libp2p/go-stream-muxer@v0.0.1" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-nat@v0.0.3", + "dependsOn": [ + "pkg:golang/github.com/huin/goupnp@v1.0.0", + "pkg:golang/github.com/jackpal/gateway@v1.0.5", + "pkg:golang/github.com/jackpal/go-nat-pmp@v1.0.1", + "pkg:golang/github.com/koron/go-ssdp@v0.0.0-20180514024734-4a0ed625a78b" + ] + }, + { + "ref": "pkg:golang/github.com/whyrusleeping/go-notifier@v0.0.0-20170827234753-097c5d47330f", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-ds-badger@v0.0.2", + "dependsOn": [ + "pkg:golang/github.com/AndreasBriese/bbloom@v0.0.0-20180913140656-343706a395b7", + "pkg:golang/github.com/Kubuxu/go-os-helper@v0.0.1", + "pkg:golang/github.com/dgraph-io/badger@v1.5.5-0.20190226225317-8115aed38f8f", + "pkg:golang/github.com/dgryski/go-farm@v0.0.0-20190104051053-3adb47b1fb0f", + "pkg:golang/github.com/dustin/go-humanize@v1.0.0", + "pkg:golang/github.com/golang/protobuf@v1.3.3", + "pkg:golang/github.com/ipfs/go-datastore@v0.3.1", + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/jbenet/goprocess@v0.1.3", + "pkg:golang/github.com/pkg/errors@v0.8.1" + ] + }, + { + "ref": "pkg:golang/github.com/ipfs/go-ds-leveldb@v0.0.1", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-datastore@v0.3.1", + "pkg:golang/github.com/jbenet/goprocess@v0.1.3", + "pkg:golang/github.com/syndtr/goleveldb@v1.0.0" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-libp2p-crypto@v0.1.0", + "dependsOn": [ + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-libp2p-peer@v0.2.0", + "dependsOn": [ + "pkg:golang/github.com/libp2p/go-libp2p-core@v0.0.2", + "pkg:golang/github.com/libp2p/go-libp2p-crypto@v0.1.0", + "pkg:golang/golang.org/x/sys@v0.0.0-20210309074719-68d13333faf2" + ] + }, + { + "ref": "pkg:golang/github.com/whyrusleeping/go-keyspace@v0.0.0-20160322163242-5b898ac5add1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/whyrusleeping/mafmt@v1.2.8", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-msgio@v0.0.2", + "dependsOn": [ + "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.2" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-addr-util@v0.0.1", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", + "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1", + "pkg:golang/github.com/whyrusleeping/mafmt@v1.2.8" + ] + }, + { + "ref": "pkg:golang/github.com/whyrusleeping/multiaddr-filter@v0.0.0-20160516205228-e903e4adabd7", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/jbenet/go-temp-err-catcher@v0.0.0-20150120210811-aac704a3f4f2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/onsi/ginkgo@v1.8.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/onsi/gomega@v1.5.0", + "dependsOn": [ + "pkg:golang/github.com/fsnotify/fsnotify@v1.4.7", + "pkg:golang/github.com/golang/protobuf@v1.3.3", + "pkg:golang/github.com/hpcloud/tail@v1.0.0", + "pkg:golang/github.com/onsi/ginkgo@v1.8.0", + "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", + "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", + "pkg:golang/golang.org/x/sys@v0.0.0-20210309074719-68d13333faf2", + "pkg:golang/golang.org/x/text@v0.3.3", + "pkg:golang/gopkg.in/fsnotify.v1@v1.4.7", + "pkg:golang/gopkg.in/tomb.v1@v1.0.0-20141024135613-dd632973f1e7", + "pkg:golang/gopkg.in/yaml.v2@v2.2.8" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-yamux@v1.2.2", + "dependsOn": [ + "pkg:golang/github.com/libp2p/go-buffer-pool@v0.0.2" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-reuseport@v0.0.1", + "dependsOn": [ + "pkg:golang/github.com/pkg/errors@v0.8.1", + "pkg:golang/github.com/stretchr/testify@v1.7.0", + "pkg:golang/golang.org/x/sys@v0.0.0-20210309074719-68d13333faf2" + ] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-reuseport-transport@v0.0.2", + "dependsOn": [ + "pkg:golang/github.com/ipfs/go-log@v0.0.1", + "pkg:golang/github.com/libp2p/go-reuseport@v0.0.1", + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", + "pkg:golang/github.com/multiformats/go-multiaddr-net@v0.0.1" + ] + }, + { + "ref": "pkg:golang/github.com/multiformats/go-multiaddr-fmt@v0.0.1", + "dependsOn": [ + "pkg:golang/github.com/multiformats/go-multiaddr@v0.0.4", + "pkg:golang/github.com/multiformats/go-multiaddr-dns@v0.0.2" + ] + }, + { + "ref": "pkg:golang/github.com/gorilla/websocket@v1.4.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/aead/siphash@v1.0.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/btcsuite/btclog@v0.0.0-20170628155309-84c8d2346e9f", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/btcsuite/btcutil@v0.0.0-20190425235716-9e5f4b9a998d", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/btcsuite/go-socks@v0.0.0-20170105172521-4720035b7bfd", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/btcsuite/goleveldb@v0.0.0-20160330041536-7834afc9e8cd", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/btcsuite/snappy-go@v0.0.0-20151229074030-0bdef8d06723", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/btcsuite/websocket@v0.0.0-20150119174127-31079b680792", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/btcsuite/winsvc@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/jrick/logrotate@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/kkdai/bstream@v0.0.0-20161212061736-f391b8402d23", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/spacemonkeygo/spacelog@v0.0.0-20180420211403-2296661a0572", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/huin/goupnp@v1.0.0", + "dependsOn": [ + "pkg:golang/github.com/huin/goutil@v0.0.0-20170803182201-1ca381bf3150", + "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", + "pkg:golang/golang.org/x/text@v0.3.3" + ] + }, + { + "ref": "pkg:golang/github.com/jackpal/gateway@v1.0.5", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/jackpal/go-nat-pmp@v1.0.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/koron/go-ssdp@v0.0.0-20180514024734-4a0ed625a78b", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/AndreasBriese/bbloom@v0.0.0-20180913140656-343706a395b7", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/Kubuxu/go-os-helper@v0.0.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/dgraph-io/badger@v1.5.5-0.20190226225317-8115aed38f8f", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/dgryski/go-farm@v0.0.0-20190104051053-3adb47b1fb0f", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/dustin/go-humanize@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/syndtr/goleveldb@v1.0.0", + "dependsOn": [ + "pkg:golang/github.com/golang/snappy@v0.0.0-20180518054509-2e65f85255db", + "pkg:golang/github.com/onsi/ginkgo@v1.8.0", + "pkg:golang/github.com/onsi/gomega@v1.5.0" + ] + }, + { + "ref": "pkg:golang/github.com/fsnotify/fsnotify@v1.4.7", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/hpcloud/tail@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/gopkg.in/fsnotify.v1@v1.4.7", + "dependsOn": [] + }, + { + "ref": "pkg:golang/gopkg.in/tomb.v1@v1.0.0-20141024135613-dd632973f1e7", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/huin/goutil@v0.0.0-20170803182201-1ca381bf3150", + "dependsOn": [] + }, + { + "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20180831171423-11092d34479b", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/golang/snappy@v0.0.0-20180518054509-2e65f85255db", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/libp2p/go-stream-muxer@v0.0.1", + "dependsOn": [] + } + ] +} \ No newline at end of file diff --git a/test/providers/tst_manifests/golang/go_mod_with_all_ignore/go.sum b/test/providers/tst_manifests/golang/go_mod_with_all_ignore/go.sum new file mode 100644 index 00000000..076565aa --- /dev/null +++ b/test/providers/tst_manifests/golang/go_mod_with_all_ignore/go.sum @@ -0,0 +1,322 @@ +github.com/AndreasBriese/bbloom v0.0.0-20180913140656-343706a395b7/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= +github.com/Kubuxu/go-os-helper v0.0.1/go.mod h1:N8B+I7vPCT80IcP58r50u4+gEEcsZETFUpAzWW2ep1Y= +github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= +github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/beevik/etree v1.1.0/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A= +github.com/btcsuite/btcd v0.0.0-20190213025234-306aecffea32/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= +github.com/btcsuite/btcd v0.0.0-20190523000118-16327141da8c/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= +github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= +github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= +github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= +github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= +github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/cskr/pubsub v1.0.2/go.mod h1:/8MzYXk/NJAz782G8RPkFzXTZVu63VotefPnR9TIRis= +github.com/cucumber/godog v0.8.1/go.mod h1:vSh3r/lM+psC1BPXvdkSEuNjmXfpVqrMGYAElF6hxnA= +github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +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/dgraph-io/badger v1.5.5-0.20190226225317-8115aed38f8f/go.mod h1:VZxzAIRPHRVNRKRo6AXrX9BJegn6il06VMTZVJYCIjQ= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-farm v0.0.0-20190104051053-3adb47b1fb0f/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/elastic/go-sysinfo v1.1.1/go.mod h1:i1ZYdU10oLNfRzq4vq62BEwD2fH8KaWh6eh0ikPT9F0= +github.com/elastic/go-windows v1.0.0/go.mod h1:TsU0Nrp7/y3+VwE82FoZF8gC/XFg/Elz6CcloAxnPgU= +github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.6.0/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +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.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gxed/hashland/keccakpg v0.0.1/go.mod h1:kRzw3HkwxFU1mpmPP8v1WyQzwdGfmKFJ6tItnhQ67kU= +github.com/gxed/hashland/murmur3 v0.0.1/go.mod h1:KjXop02n4/ckmZSnY2+HKcLud/tcmvhST0bie/0lS48= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= +github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= +github.com/ipfs/bbloom v0.0.1/go.mod h1:oqo8CVWsJFMOZqTglBG4wydCE4IQA/G2/SEofB0rjUI= +github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0= +github.com/ipfs/go-bitswap v0.1.0/go.mod h1:FFJEf18E9izuCqUtHxbWEvq+reg7o4CW5wSAE1wsxj0= +github.com/ipfs/go-block-format v0.0.1/go.mod h1:DK/YYcsSUIVAFNwo/KZCdIIbpN0ROH/baNLgayt4pFc= +github.com/ipfs/go-block-format v0.0.2/go.mod h1:AWR46JfpcObNfg3ok2JHDUfdiHRgWhJgCQF+KIgOPJY= +github.com/ipfs/go-block-format v0.0.3/go.mod h1:4LmD4ZUw0mhO+JSKdpWwrzATiEfM7WWgQ8H5l6P8MVk= +github.com/ipfs/go-blockservice v0.1.0/go.mod h1:hzmMScl1kXHg3M2BjTymbVPjv627N7sYcvYaKbop39M= +github.com/ipfs/go-cid v0.0.1/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= +github.com/ipfs/go-cid v0.0.2/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= +github.com/ipfs/go-cid v0.0.3/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= +github.com/ipfs/go-cid v0.0.4/go.mod h1:4LLaPOQwmk5z9LBgQnpkivrx8BJjUyGwTXCd5Xfj6+M= +github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= +github.com/ipfs/go-datastore v0.0.1/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= +github.com/ipfs/go-datastore v0.0.5/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= +github.com/ipfs/go-datastore v0.1.0/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= +github.com/ipfs/go-datastore v0.3.1/go.mod h1:w38XXW9kVFNp57Zj5knbKWM2T+KOZCGDRVNdgPHtbHw= +github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= +github.com/ipfs/go-ds-badger v0.0.2/go.mod h1:Y3QpeSFWQf6MopLTiZD+VT6IC1yZqaGmjvRcKeSGij8= +github.com/ipfs/go-ds-leveldb v0.0.1/go.mod h1:feO8V3kubwsEF22n0YRQCffeb79OOYIykR4L04tMOYc= +github.com/ipfs/go-ipfs-blockstore v0.0.1/go.mod h1:d3WClOmRQKFnJ0Jz/jj/zmksX0ma1gROTlovZKBmN08= +github.com/ipfs/go-ipfs-blockstore v0.1.0/go.mod h1:5aD0AvHPi7mZc6Ci1WCAhiBQu2IsfTduLl+422H6Rqw= +github.com/ipfs/go-ipfs-blocksutil v0.0.1/go.mod h1:Yq4M86uIOmxmGPUHv/uI7uKqZNtLb449gwKqXjIsnRk= +github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= +github.com/ipfs/go-ipfs-delay v0.0.1/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= +github.com/ipfs/go-ipfs-ds-help v0.0.1/go.mod h1:gtP9xRaZXqIQRh1HRpp595KbBEdgqWFxefeVKOV8sxo= +github.com/ipfs/go-ipfs-exchange-interface v0.0.1/go.mod h1:c8MwfHjtQjPoDyiy9cFquVtVHkO9b9Ob3FG91qJnWCM= +github.com/ipfs/go-ipfs-exchange-offline v0.0.1/go.mod h1:WhHSFCVYX36H/anEKQboAzpUws3x7UeEGkzQc3iNkM0= +github.com/ipfs/go-ipfs-pq v0.0.1/go.mod h1:LWIqQpqfRG3fNc5XsnIhz/wQ2XXGyugQwls7BgUmUfY= +github.com/ipfs/go-ipfs-routing v0.1.0/go.mod h1:hYoUkJLyAUKhF58tysKpids8RNDPO42BVMgK5dNsoqY= +github.com/ipfs/go-ipfs-util v0.0.1/go.mod h1:spsl5z8KUnrve+73pOhSVZND1SIxPW5RyBCNzQxlJBc= +github.com/ipfs/go-ipfs-util v0.0.2/go.mod h1:CbPtkWJzjLdEcezDns2XYaehFVNXG9zrdrtMecczcsQ= +github.com/ipfs/go-ipld-cbor v0.0.3/go.mod h1:wTBtrQZA3SoFKMVkp6cn6HMRteIB1VsmHA0AQFOn7Nc= +github.com/ipfs/go-ipld-cbor v0.0.5/go.mod h1:BkCduEx3XBCO6t2Sfo5BaHzuok7hbhdMm9Oh8B2Ftq4= +github.com/ipfs/go-ipld-format v0.0.1/go.mod h1:kyJtbkDALmFHv3QR6et67i35QzO3S0dCDnkOJhcZkms= +github.com/ipfs/go-ipld-format v0.0.2/go.mod h1:4B6+FM2u9OJ9zCV+kSbgFAZlOrv1Hqbf0INGQgiKf9k= +github.com/ipfs/go-ipld-format v0.2.0/go.mod h1:3l3C1uKoadTPbeNfrDi+xMInYKlx2Cvg1BuydPSdzQs= +github.com/ipfs/go-log v0.0.1/go.mod h1:kL1d2/hzSpI0thNYjiKfjanbVNU+IIGA/WnNESY9leM= +github.com/ipfs/go-merkledag v0.3.2/go.mod h1:fvkZNNZixVW6cKSZ/JfLlON5OlgTXNdRLz0p6QG/I2M= +github.com/ipfs/go-metrics-interface v0.0.1/go.mod h1:6s6euYU4zowdslK0GKHmqaIZ3j/b/tL7HTWtJ4VPgWY= +github.com/ipfs/go-peertaskqueue v0.1.0/go.mod h1:Jmk3IyCcfl1W3jTW3YpghSwSEC6IJ3Vzz/jUmWw8Z0U= +github.com/ipfs/go-verifcid v0.0.1/go.mod h1:5Hrva5KBeIog4A+UpqlaIU+DEstipcJYQQZc0g37pY0= +github.com/ipld/go-car v0.3.0/go.mod h1:dPkEWeAK8KaVvH5TahaCs6Mncpd4lDMpkbs0/SPzuVs= +github.com/ipld/go-codec-dagpb v1.2.0/go.mod h1:6nBN7X7h8EOsEejZGqC7tej5drsdBAXbMHyBT+Fne5s= +github.com/ipld/go-ipld-prime v0.9.0/go.mod h1:KvBLMr4PX1gWptgkzRjVZCrLmSGcZCb/jioOQwCqZN8= +github.com/jackpal/gateway v1.0.5/go.mod h1:lTpwd4ACLXmpyiCTRtfiNyVnUmqT9RivzCDQetPfnjA= +github.com/jackpal/go-nat-pmp v1.0.1/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jbenet/go-cienv v0.0.0-20150120210510-1bb1476777ec/go.mod h1:rGaEvXB4uRSZMmzKNLoXvTu1sfx+1kv/DojUlPrSZGs= +github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA= +github.com/jbenet/go-temp-err-catcher v0.0.0-20150120210811-aac704a3f4f2/go.mod h1:8GXXJV31xl8whumTzdZsTt3RnUIiPqzkyf7mxToRCMs= +github.com/jbenet/goprocess v0.0.0-20160826012719-b497e2f366b8/go.mod h1:Ly/wlsjFq/qrU3Rar62tu1gASgGw6chQbSh/XgIIXCY= +github.com/jbenet/goprocess v0.1.3/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= +github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak= +github.com/jonboulle/clockwork v0.2.0/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= +github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/koron/go-ssdp v0.0.0-20180514024734-4a0ed625a78b/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +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/labstack/echo/v4 v4.1.18-0.20201215153152-4422e3b66b9f/go.mod h1:Tn2yRQL/UclUalpb5rPdXDevbkJ+lp/2svdyFBg6CHQ= +github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/libp2p/go-addr-util v0.0.1/go.mod h1:4ac6O7n9rIAKB1dnd+s8IbbMXkt+oBpzX4/+RACcnlQ= +github.com/libp2p/go-buffer-pool v0.0.1/go.mod h1:xtyIz9PMobb13WaxR6Zo1Pd1zXJKYg0a8KiIvDp3TzQ= +github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= +github.com/libp2p/go-conn-security-multistream v0.1.0/go.mod h1:aw6eD7LOsHEX7+2hJkDxw1MteijaVcI+/eP2/x3J1xc= +github.com/libp2p/go-flow-metrics v0.0.1/go.mod h1:Iv1GH0sG8DtYN3SVJ2eG221wMiNpZxBdp967ls1g+k8= +github.com/libp2p/go-libp2p v0.1.0/go.mod h1:6D/2OBauqLUoqcADOJpn9WbKqvaM07tDw68qHM0BxUM= +github.com/libp2p/go-libp2p-autonat v0.1.0/go.mod h1:1tLf2yXxiE/oKGtDwPYWTSYG3PtvYlJmg7NeVtPRqH8= +github.com/libp2p/go-libp2p-blankhost v0.1.1/go.mod h1:pf2fvdLJPsC1FsVrNP3DUUvMzUts2dsLLBEpo1vW1ro= +github.com/libp2p/go-libp2p-circuit v0.1.0/go.mod h1:Ahq4cY3V9VJcHcn1SBXjr78AbFkZeIRmfunbA7pmFh8= +github.com/libp2p/go-libp2p-core v0.0.1/go.mod h1:g/VxnTZ/1ygHxH3dKok7Vno1VfpvGcGip57wjTU4fco= +github.com/libp2p/go-libp2p-core v0.0.2/go.mod h1:9dAcntw/n46XycV4RnlBq3BpgrmyUi9LuoTNdPrbUco= +github.com/libp2p/go-libp2p-crypto v0.1.0/go.mod h1:sPUokVISZiy+nNuTTH/TY+leRSxnFj/2GLjtOTW90hI= +github.com/libp2p/go-libp2p-discovery v0.1.0/go.mod h1:4F/x+aldVHjHDHuX85x1zWoFTGElt8HnoDzwkFZm29g= +github.com/libp2p/go-libp2p-loggables v0.1.0/go.mod h1:EyumB2Y6PrYjr55Q3/tiJ/o3xoDasoRYM7nOzEpoa90= +github.com/libp2p/go-libp2p-mplex v0.2.0/go.mod h1:Ejl9IyjvXJ0T9iqUTE1jpYATQ9NM3g+OtR+EMMODbKo= +github.com/libp2p/go-libp2p-mplex v0.2.1/go.mod h1:SC99Rxs8Vuzrf/6WhmH41kNn13TiYdAWNYHrwImKLnE= +github.com/libp2p/go-libp2p-nat v0.0.4/go.mod h1:N9Js/zVtAXqaeT99cXgTV9e75KpnWCvVOiGzlcHmBbY= +github.com/libp2p/go-libp2p-netutil v0.1.0/go.mod h1:3Qv/aDqtMLTUyQeundkKsA+YCThNdbQD54k3TqjpbFU= +github.com/libp2p/go-libp2p-peer v0.2.0/go.mod h1:RCffaCvUyW2CJmG2gAWVqwePwW7JMgxjsHm7+J5kjWY= +github.com/libp2p/go-libp2p-peerstore v0.1.0/go.mod h1:2CeHkQsr8svp4fZ+Oi9ykN1HBb6u0MOvdJ7YIsmcwtY= +github.com/libp2p/go-libp2p-record v0.1.0/go.mod h1:ujNc8iuE5dlKWVy6wuL6dd58t0n7xI4hAIl8pE6wu5Q= +github.com/libp2p/go-libp2p-secio v0.1.0/go.mod h1:tMJo2w7h3+wN4pgU2LSYeiKPrfqBgkOsdiKK77hE7c8= +github.com/libp2p/go-libp2p-swarm v0.1.0/go.mod h1:wQVsCdjsuZoc730CgOvh5ox6K8evllckjebkdiY5ta4= +github.com/libp2p/go-libp2p-testing v0.0.2/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= +github.com/libp2p/go-libp2p-testing v0.0.3/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= +github.com/libp2p/go-libp2p-transport-upgrader v0.1.1/go.mod h1:IEtA6or8JUbsV07qPW4r01GnTenLW4oi3lOPbUMGJJA= +github.com/libp2p/go-libp2p-yamux v0.2.0/go.mod h1:Db2gU+XfLpm6E4rG5uGCFX6uXA8MEXOxFcRoXUODaK8= +github.com/libp2p/go-maddr-filter v0.0.4/go.mod h1:6eT12kSQMA9x2pvFQa+xesMKUBlj9VImZbj3B9FBH/Q= +github.com/libp2p/go-mplex v0.0.3/go.mod h1:pK5yMLmOoBR1pNCqDlA2GQrdAVTMkqFalaTWe7l4Yd0= +github.com/libp2p/go-mplex v0.1.0/go.mod h1:SXgmdki2kwCUlCCbfGLEgHjC4pFqhTp0ZoV6aiKgxDU= +github.com/libp2p/go-msgio v0.0.2/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= +github.com/libp2p/go-nat v0.0.3/go.mod h1:88nUEt0k0JD45Bk93NIwDqjlhiOwOoV36GchpcVc1yI= +github.com/libp2p/go-reuseport v0.0.1/go.mod h1:jn6RmB1ufnQwl0Q1f+YxAj8isJgDCQzaaxIFYDhcYEA= +github.com/libp2p/go-reuseport-transport v0.0.2/go.mod h1:YkbSDrvjUVDL6b8XqriyA20obEtsW9BLkuOUyQAOCbs= +github.com/libp2p/go-stream-muxer v0.0.1/go.mod h1:bAo8x7YkSpadMTbtTaxGVHWUQsR/l5MEaHbKaliuT14= +github.com/libp2p/go-stream-muxer-multistream v0.2.0/go.mod h1:j9eyPol/LLRqT+GPLSxvimPhNph4sfYfMoDPd7HkzIc= +github.com/libp2p/go-tcp-transport v0.1.0/go.mod h1:oJ8I5VXryj493DEJ7OsBieu8fcg2nHGctwtInJVpipc= +github.com/libp2p/go-testutil v0.1.0/go.mod h1:81b2n5HypcVyrCg/MJx4Wgfp/VHojytjVe/gLzZ2Ehc= +github.com/libp2p/go-ws-transport v0.1.0/go.mod h1:rjw1MG1LU9YDC6gzmwObkPd/Sqwhw7yT74kj3raBFuo= +github.com/libp2p/go-yamux v1.2.2/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/miekg/dns v1.1.12/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= +github.com/minio/sha256-simd v0.0.0-20190131020904-2d45a736cd16/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= +github.com/minio/sha256-simd v0.0.0-20190328051042-05b4dd3047e5/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= +github.com/minio/sha256-simd v0.1.0/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= +github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= +github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= +github.com/mr-tron/base58 v1.1.1/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= +github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA= +github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM= +github.com/multiformats/go-multiaddr v0.0.1/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= +github.com/multiformats/go-multiaddr v0.0.2/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= +github.com/multiformats/go-multiaddr v0.0.4/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= +github.com/multiformats/go-multiaddr-dns v0.0.1/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= +github.com/multiformats/go-multiaddr-dns v0.0.2/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= +github.com/multiformats/go-multiaddr-fmt v0.0.1/go.mod h1:aBYjqL4T/7j4Qx+R73XSv/8JsgnRFlf0w2KGLCmXl3Q= +github.com/multiformats/go-multiaddr-net v0.0.1/go.mod h1:nw6HSxNmCIQH27XPGBuX+d1tnvM7ihcFwHMSstNAVUU= +github.com/multiformats/go-multibase v0.0.1/go.mod h1:bja2MqRZ3ggyXtZSEDKpl0uO/gviWFaSteVbWT51qgs= +github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc= +github.com/multiformats/go-multihash v0.0.1/go.mod h1:w/5tugSrLEbWqlcgJabL3oHFKTwfvkofsjW2Qa1ct4U= +github.com/multiformats/go-multihash v0.0.5/go.mod h1:lt/HCbqlQwlPBz7lv0sQCdtfcMtlJvakRUn/0Ual8po= +github.com/multiformats/go-multihash v0.0.10/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= +github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= +github.com/multiformats/go-multihash v0.0.14/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= +github.com/multiformats/go-multihash v0.0.15/go.mod h1:D6aZrWNLFTV/ynMpKsNtB40mJzmCl4jb1alC0OvHiHg= +github.com/multiformats/go-multistream v0.1.0/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg= +github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/polydawn/refmt v0.0.0-20190221155625-df39d6c2d992/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= +github.com/polydawn/refmt v0.0.0-20190807091052-3d65705ee9f1/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= +github.com/polydawn/refmt v0.0.0-20201211092308-30ac6d18308e/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= +github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/russellhaering/goxmldsig v1.1.0/go.mod h1:QK8GhXPB3+AfuCrfo0oRISa9NfzeCpWmxeGnqEpDF9o= +github.com/santhosh-tekuri/jsonschema v1.2.4/go.mod h1:TEAUOeZSmIxTTuHatJzrvARHiuO9LYd+cIxzgEHCQI4= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v0.0.0-20190222223459-a17d461953aa/go.mod h1:2RVY1rIf+2J2o/IM9+vPq9RzmHDSseB7FoXiSNIUsoU= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/spacemonkeygo/openssl v0.0.0-20181017203307-c2dcc5cca94a/go.mod h1:7AyxJNCJ7SBZ1MfVQCWD6Uqo2oubI2Eq2y2eqf+A5r0= +github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572/go.mod h1:w0SWMsp6j9O/dk4/ZpIhL+3CkG8ofA2vuv7k+ltqUMc= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +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.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= +github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/warpfork/go-wish v0.0.0-20180510122957-5ad1f5abf436/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= +github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= +github.com/whyrusleeping/cbor-gen v0.0.0-20200123233031-1cdf64d27158/go.mod h1:Xj/M2wWU+QdTdRbu/L/1dIZY8/Wb2K9pAhtroQuxJJI= +github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1/go.mod h1:8UvriyWtv5Q5EOgjHaSseUEdkQfvwFv1I/In/O2M9gc= +github.com/whyrusleeping/go-logging v0.0.0-20170515211332-0457bb6b88fc/go.mod h1:bopw91TMyo8J3tvftk8xmU2kPmlrt4nScJQZU2hE5EM= +github.com/whyrusleeping/go-notifier v0.0.0-20170827234753-097c5d47330f/go.mod h1:cZNvX9cFybI01GriPRMXDtczuvUhgbcYr9iCGaNlRv8= +github.com/whyrusleeping/mafmt v1.2.8/go.mod h1:faQJFPbLSxzD9xpA02ttW/tS9vZykNvXwGvqIpk20FA= +github.com/whyrusleeping/mdns v0.0.0-20180901202407-ef14215e6b30/go.mod h1:j4l84WPFclQPj320J9gp0XwNKBb3U0zt5CBqjPp22G4= +github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7/go.mod h1:X2c0RVCI1eSUFI8eLcY3c0423ykwiUdxLJtkDvruhjI= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.elastic.co/apm v1.11.0/go.mod h1:qoOSi09pnzJDh5fKnfY7bPmQgl8yl2tULdOu03xhui0= +go.elastic.co/fastjson v1.1.0/go.mod h1:boNGISWMjQsUPy/t6yqt2/1Wx4YNPSe+mZjlyw9vKKI= +golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190225124518-7f87c0fbb88b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/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/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190227160552-c95aed5357e7/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-20190522155817-f3200d17e092/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-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/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-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/sys v0.0.0-20180909124046-d0be0721c37e/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-20190219092855-153ac476189d/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190524122548-abf6ff778158/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191025021431-6c3a3bfe00ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/text v0.3.0/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/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +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/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +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/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +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.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20220521103104-8f96da9f5d5e/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= diff --git a/test/providers/tst_manifests/golang/go_mod_with_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/golang/go_mod_with_ignore/expected_sbom_stack_analysis.json index 39fc4b18..12c37085 100644 --- a/test/providers/tst_manifests/golang/go_mod_with_ignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_with_ignore/expected_sbom_stack_analysis.json @@ -1,8105 +1,2208 @@ { - "bomFormat": "CycloneDX", - "specVersion": "1.4", - "version": 1, - "metadata": { - "timestamp": "2023-08-07T00:00:00.000Z", - "component": { - "group": "github.com/RHEcosystemAppEng/SaaSi", - "name": "deployer", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0" - } - }, - "components": [ - { - "group": "github.com/RHEcosystemAppEng/SaaSi", - "name": "deployer", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0" - }, - { - "group": "github.com/davecgh", - "name": "go-spew", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1" - }, - { - "group": "github.com/emicklei/go-restful", - "name": "v3", - "version": "v3.9.0", - "purl": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0" - }, - { - "group": "github.com/gin-gonic", - "name": "gin", - "version": "v1.9.1", - "purl": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1" - }, - { - "group": "github.com/go-openapi", - "name": "jsonpointer", - "version": "v0.19.5", - "purl": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5" - }, - { - "group": "github.com/go-openapi", - "name": "jsonreference", - "version": "v0.20.0", - "purl": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0" - }, - { - "group": "github.com/go-openapi", - "name": "swag", - "version": "v0.19.14", - "purl": "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14" - }, - { - "group": "github.com/gogo", - "name": "protobuf", - "version": "v1.3.2", - "purl": "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.5.2", - "purl": "pkg:golang/github.com/golang/protobuf@v1.5.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.2" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.9", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.9", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.9" - }, - { - "group": "github.com/google", - "name": "gofuzz", - "version": "v1.1.0", - "purl": "pkg:golang/github.com/google/gofuzz@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/gofuzz@v1.1.0" - }, - { - "group": "github.com/google", - "name": "uuid", - "version": "v1.1.2", - "purl": "pkg:golang/github.com/google/uuid@v1.1.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/uuid@v1.1.2" - }, - { - "group": "github.com/imdario", - "name": "mergo", - "version": "v0.3.6", - "purl": "pkg:golang/github.com/imdario/mergo@v0.3.6", - "type": "library", - "bom-ref": "pkg:golang/github.com/imdario/mergo@v0.3.6" - }, - { - "group": "github.com/josharian", - "name": "intern", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/josharian/intern@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/josharian/intern@v1.0.0" - }, - { - "group": "github.com/json-iterator", - "name": "go", - "version": "v1.1.12", - "purl": "pkg:golang/github.com/json-iterator/go@v1.1.12", - "type": "library", - "bom-ref": "pkg:golang/github.com/json-iterator/go@v1.1.12" - }, - { - "group": "github.com/kr", - "name": "pretty", - "version": "v0.3.1", - "purl": "pkg:golang/github.com/kr/pretty@v0.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/pretty@v0.3.1" - }, - { - "group": "github.com/kr", - "name": "text", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/kr/text@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/text@v0.2.0" - }, - { - "group": "github.com/mailru", - "name": "easyjson", - "version": "v0.7.6", - "purl": "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "type": "library", - "bom-ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6" - }, - { - "group": "github.com/modern-go", - "name": "concurrent", - "version": "v0.0.0-20180306012644-bacd9c7ef1dd", - "purl": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "type": "library", - "bom-ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" - }, - { - "group": "github.com/modern-go", - "name": "reflect2", - "version": "v1.0.2", - "purl": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2" - }, - { - "group": "github.com/munnerz", - "name": "goautoneg", - "version": "v0.0.0-20191010083416-a7dc8b61c822", - "purl": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "type": "library", - "bom-ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822" - }, - { - "group": "github.com/rogpeppe", - "name": "go-internal", - "version": "v1.9.0", - "purl": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" - }, - { - "group": "github.com/spf13", - "name": "pflag", - "version": "v1.0.5", - "purl": "pkg:golang/github.com/spf13/pflag@v1.0.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.5" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.10.0", - "purl": "pkg:golang/golang.org/x/net@v0.10.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.10.0" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20220223155221-ee480838109b", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.8.0", - "purl": "pkg:golang/golang.org/x/sys@v0.8.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.8.0" - }, - { - "group": "golang.org/x", - "name": "term", - "version": "v0.8.0", - "purl": "pkg:golang/golang.org/x/term@v0.8.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/term@v0.8.0" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.9.0", - "purl": "pkg:golang/golang.org/x/text@v0.9.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.9.0" - }, - { - "group": "golang.org/x", - "name": "time", - "version": "v0.0.0-20220210224613-90d013bbcef8", - "purl": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.6.7", - "purl": "pkg:golang/google.golang.org/appengine@v1.6.7", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.7" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.30.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.30.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.30.0" - }, - { - "group": "gopkg.in", - "name": "inf.v0", - "version": "v0.9.1", - "purl": "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1" - }, - { - "group": "gopkg.in", - "name": "yaml.v2", - "version": "v2.4.0", - "purl": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0" - }, - { - "group": "gopkg.in", - "name": "yaml.v3", - "version": "v3.0.1", - "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1" - }, - { - "group": "k8s.io", - "name": "api", - "version": "v0.26.1", - "purl": "pkg:golang/k8s.io/api@v0.26.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/api@v0.26.1" - }, - { - "group": "k8s.io", - "name": "apimachinery", - "version": "v0.26.1", - "purl": "pkg:golang/k8s.io/apimachinery@v0.26.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/apimachinery@v0.26.1" - }, - { - "group": "k8s.io", - "name": "client-go", - "version": "v0.26.1", - "purl": "pkg:golang/k8s.io/client-go@v0.26.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/client-go@v0.26.1" - }, - { - "group": "k8s.io/klog", - "name": "v2", - "version": "v2.80.1", - "purl": "pkg:golang/k8s.io/klog/v2@v2.80.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/klog/v2@v2.80.1" - }, - { - "group": "k8s.io", - "name": "kube-openapi", - "version": "v0.0.0-20221012153701-172d655c2280", - "purl": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280" - }, - { - "group": "k8s.io", - "name": "utils", - "version": "v0.0.0-20221107191617-1a15be271d1d", - "purl": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d" - }, - { - "group": "sigs.k8s.io", - "name": "json", - "version": "v0.0.0-20220713155537-f223a00ba0e2", - "purl": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2" - }, - { - "group": "sigs.k8s.io/structured-merge-diff", - "name": "v4", - "version": "v4.2.3", - "purl": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3" - }, - { - "group": "sigs.k8s.io", - "name": "yaml", - "version": "v1.3.0", - "purl": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0" - }, - { - "group": "github.com/bytedance", - "name": "sonic", - "version": "v1.9.1", - "purl": "pkg:golang/github.com/bytedance/sonic@v1.9.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/bytedance/sonic@v1.9.1" - }, - { - "group": "github.com/gin-contrib", - "name": "sse", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/gin-contrib/sse@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/gin-contrib/sse@v0.1.0" - }, - { - "group": "github.com/go-playground/validator", - "name": "v10", - "version": "v10.14.0", - "purl": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0" - }, - { - "group": "github.com/goccy", - "name": "go-json", - "version": "v0.10.2", - "purl": "pkg:golang/github.com/goccy/go-json@v0.10.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/goccy/go-json@v0.10.2" - }, - { - "group": "github.com/mattn", - "name": "go-isatty", - "version": "v0.0.19", - "purl": "pkg:golang/github.com/mattn/go-isatty@v0.0.19", - "type": "library", - "bom-ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.19" - }, - { - "group": "github.com/pelletier/go-toml", - "name": "v2", - "version": "v2.0.8", - "purl": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", - "type": "library", - "bom-ref": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.8.3", - "purl": "pkg:golang/github.com/stretchr/testify@v1.8.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.8.3" - }, - { - "group": "github.com/ugorji/go", - "name": "codec", - "version": "v1.2.11", - "purl": "pkg:golang/github.com/ugorji/go/codec@v1.2.11", - "type": "library", - "bom-ref": "pkg:golang/github.com/ugorji/go/codec@v1.2.11" - }, - { - "group": "github.com/chenzhuoyu", - "name": "base64x", - "version": "v0.0.0-20221115062448-fe3a3abad311", - "purl": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", - "type": "library", - "bom-ref": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311" - }, - { - "group": "github.com/gabriel-vasile", - "name": "mimetype", - "version": "v1.4.2", - "purl": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2" - }, - { - "group": "github.com/go-playground", - "name": "locales", - "version": "v0.14.1", - "purl": "pkg:golang/github.com/go-playground/locales@v0.14.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-playground/locales@v0.14.1" - }, - { - "group": "github.com/go-playground", - "name": "universal-translator", - "version": "v0.18.1", - "purl": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1" - }, - { - "group": "github.com/klauspost/cpuid", - "name": "v2", - "version": "v2.2.4", - "purl": "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4" - }, - { - "group": "github.com/leodido", - "name": "go-urn", - "version": "v1.2.4", - "purl": "pkg:golang/github.com/leodido/go-urn@v1.2.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/leodido/go-urn@v1.2.4" - }, - { - "group": "github.com/pmezard", - "name": "go-difflib", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0" - }, - { - "group": "github.com/twitchyliquid64", - "name": "golang-asm", - "version": "v0.15.1", - "purl": "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1" - }, - { - "group": "golang.org/x", - "name": "arch", - "version": "v0.3.0", - "purl": "pkg:golang/golang.org/x/arch@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/arch@v0.3.0" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.9.0", - "purl": "pkg:golang/golang.org/x/crypto@v0.9.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.9.0" - }, - { - "group": "github.com/go-openapi", - "name": "swag", - "version": "v0.19.5", - "purl": "pkg:golang/github.com/go-openapi/swag@v0.19.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/swag@v0.19.5" - }, - { - "group": "github.com/mailru", - "name": "easyjson", - "version": "v0.0.0-20190626092158-b2ccc519800e", - "purl": "pkg:golang/github.com/mailru/easyjson@v0.0.0-20190626092158-b2ccc519800e", - "type": "library", - "bom-ref": "pkg:golang/github.com/mailru/easyjson@v0.0.0-20190626092158-b2ccc519800e" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.3.0", - "purl": "pkg:golang/github.com/stretchr/testify@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.3.0" - }, - { - "group": "github.com/go-openapi", - "name": "jsonpointer", - "version": "v0.19.3", - "purl": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.3" - }, - { - "group": "github.com/niemeyer", - "name": "pretty", - "version": "v0.0.0-20200227124842-a10e7caefd8e", - "purl": "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", - "type": "library", - "bom-ref": "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.6.1", - "purl": "pkg:golang/github.com/stretchr/testify@v1.6.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.6.1" - }, - { - "group": "gopkg.in", - "name": "check.v1", - "version": "v1.0.0-20200227125254-8fa46927fb4f", - "purl": "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" - }, - { - "group": "gopkg.in", - "name": "yaml.v3", - "version": "v3.0.0-20200615113413-eeeca48fe776", - "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200615113413-eeeca48fe776", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200615113413-eeeca48fe776" - }, - { - "group": "github.com/kisielk", - "name": "errcheck", - "version": "v1.5.0", - "purl": "pkg:golang/github.com/kisielk/errcheck@v1.5.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kisielk/errcheck@v1.5.0" - }, - { - "group": "github.com/kisielk", - "name": "gotool", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kisielk/gotool@v1.0.0" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20210106214847-113979e3529a", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20210106214847-113979e3529a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20210106214847-113979e3529a" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.5", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.5" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.26.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.26.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.26.0" - }, - { - "group": "github.com/docopt", - "name": "docopt-go", - "version": "v0.0.0-20180111231733-ee0de3bc6815", - "purl": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", - "type": "library", - "bom-ref": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815" - }, - { - "group": "github.com/kr", - "name": "pretty", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/kr/pretty@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/pretty@v0.2.0" - }, - { - "group": "github.com/stoewer", - "name": "go-strcase", - "version": "v1.2.0", - "purl": "pkg:golang/github.com/stoewer/go-strcase@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/stoewer/go-strcase@v1.2.0" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190524140312-2c0ae7006135", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20200804184101-5ec99f83aff1", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20201019141844-1ed22bb0c154", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154" - }, - { - "group": "gopkg.in", - "name": "check.v1", - "version": "v1.0.0-20190902080502-41f04d3bba15", - "purl": "pkg:golang/gopkg.in/check.v1@v1.0.0-20190902080502-41f04d3bba15", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20190902080502-41f04d3bba15" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210320140829-1e4c9ba3b0c4", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210320140829-1e4c9ba3b0c4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210320140829-1e4c9ba3b0c4" - }, - { - "group": "github.com/google", - "name": "gofuzz", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/google/gofuzz@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/gofuzz@v1.0.0" - }, - { - "group": "github.com/modern-go", - "name": "concurrent", - "version": "v0.0.0-20180228061459-e0a39a4cb421", - "purl": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180228061459-e0a39a4cb421", - "type": "library", - "bom-ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180228061459-e0a39a4cb421" - }, - { - "group": "github.com/creack", - "name": "pty", - "version": "v1.1.9", - "purl": "pkg:golang/github.com/creack/pty@v1.1.9", - "type": "library", - "bom-ref": "pkg:golang/github.com/creack/pty@v1.1.9" - }, - { - "group": "github.com/pkg", - "name": "diff", - "version": "v0.0.0-20210226163009-20ebb0f2a09e", - "purl": "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e", - "type": "library", - "bom-ref": "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.65.0", - "purl": "pkg:golang/cloud.google.com/go@v0.65.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.65.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20220127200216-cd36cc0744dd", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20220127200216-cd36cc0744dd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20220127200216-cd36cc0744dd" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.6.6", - "purl": "pkg:golang/google.golang.org/appengine@v1.6.6", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.6" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.6.0", - "purl": "pkg:golang/golang.org/x/tools@v0.6.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.6.0" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.8.0", - "purl": "pkg:golang/golang.org/x/mod@v0.8.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.8.0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.5.0", - "purl": "pkg:golang/golang.org/x/sys@v0.5.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.5.0" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.3.1", - "purl": "pkg:golang/github.com/golang/protobuf@v1.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.3.1" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190603091049-60506f45cf65", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.2", - "purl": "pkg:golang/golang.org/x/text@v0.3.2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.2" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.5.0", - "purl": "pkg:golang/github.com/golang/protobuf@v1.5.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.0" - }, - { - "group": "gopkg.in", - "name": "check.v1", - "version": "v0.0.0-20161208181325-20d25e280405", - "purl": "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.8.0", - "purl": "pkg:golang/github.com/stretchr/testify@v1.8.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.8.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.3.1-0.20221206200815-1e63c2f08a10", - "purl": "pkg:golang/golang.org/x/net@v0.3.1-0.20221206200815-1e63c2f08a10", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.3.1-0.20221206200815-1e63c2f08a10" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.5.0", - "purl": "pkg:golang/golang.org/x/text@v0.5.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.5.0" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.28.1", - "purl": "pkg:golang/google.golang.org/protobuf@v1.28.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.28.1" - }, - { - "group": "github.com/armon", - "name": "go-socks5", - "version": "v0.0.0-20160902184237-e75332964ef5", - "purl": "pkg:golang/github.com/armon/go-socks5@v0.0.0-20160902184237-e75332964ef5", - "type": "library", - "bom-ref": "pkg:golang/github.com/armon/go-socks5@v0.0.0-20160902184237-e75332964ef5" - }, - { - "group": "github.com/elazarl", - "name": "goproxy", - "version": "v0.0.0-20180725130230-947c36da3153", - "purl": "pkg:golang/github.com/elazarl/goproxy@v0.0.0-20180725130230-947c36da3153", - "type": "library", - "bom-ref": "pkg:golang/github.com/elazarl/goproxy@v0.0.0-20180725130230-947c36da3153" - }, - { - "group": "github.com/evanphx", - "name": "json-patch", - "version": "v4.12.0+incompatible", - "purl": "pkg:golang/github.com/evanphx/json-patch@v4.12.0%2Bincompatible", - "type": "library", - "bom-ref": "pkg:golang/github.com/evanphx/json-patch@v4.12.0%2Bincompatible" - }, - { - "group": "github.com/moby", - "name": "spdystream", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/moby/spdystream@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/moby/spdystream@v0.2.0" - }, - { - "group": "github.com/mxk", - "name": "go-flowrate", - "version": "v0.0.0-20140419014527-cca7078d478f", - "purl": "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f", - "type": "library", - "bom-ref": "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f" - }, - { - "group": "github.com/onsi/ginkgo", - "name": "v2", - "version": "v2.4.0", - "purl": "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0" - }, - { - "group": "github.com/onsi", - "name": "gomega", - "version": "v1.23.0", - "purl": "pkg:golang/github.com/onsi/gomega@v1.23.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/onsi/gomega@v1.23.0" - }, - { - "group": "github.com/pkg", - "name": "errors", - "version": "v0.9.1", - "purl": "pkg:golang/github.com/pkg/errors@v0.9.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/pkg/errors@v0.9.1" - }, - { - "group": "github.com/golang", - "name": "groupcache", - "version": "v0.0.0-20210331224755-41bb18bfe9da", - "purl": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da" - }, - { - "group": "github.com/gregjones", - "name": "httpcache", - "version": "v0.0.0-20180305231024-9cad4c3443a7", - "purl": "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7", - "type": "library", - "bom-ref": "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7" - }, - { - "group": "github.com/peterbourgon", - "name": "diskv", - "version": "v2.0.1+incompatible", - "purl": "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible", - "type": "library", - "bom-ref": "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible" - }, - { - "group": "golang.org/x", - "name": "term", - "version": "v0.3.0", - "purl": "pkg:golang/golang.org/x/term@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/term@v0.3.0" - }, - { - "group": "github.com/google", - "name": "btree", - "version": "v1.0.1", - "purl": "pkg:golang/github.com/google/btree@v1.0.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/btree@v1.0.1" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.3.0", - "purl": "pkg:golang/golang.org/x/sys@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.3.0" - }, - { - "group": "github.com/go-logr", - "name": "logr", - "version": "v1.2.0", - "purl": "pkg:golang/github.com/go-logr/logr@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-logr/logr@v1.2.0" - }, - { - "group": "github.com/NYTimes", - "name": "gziphandler", - "version": "v0.0.0-20170623195520-56545f4a5d46", - "purl": "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", - "type": "library", - "bom-ref": "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46" - }, - { - "group": "github.com/asaskevich", - "name": "govalidator", - "version": "v0.0.0-20190424111038-f61b66f89f4a", - "purl": "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a", - "type": "library", - "bom-ref": "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a" - }, - { - "group": "github.com/emicklei/go-restful", - "name": "v3", - "version": "v3.8.0", - "purl": "pkg:golang/github.com/emicklei/go-restful/v3@v3.8.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.8.0" - }, - { - "group": "github.com/go-openapi", - "name": "jsonreference", - "version": "v0.19.3", - "purl": "pkg:golang/github.com/go-openapi/jsonreference@v0.19.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.19.3" - }, - { - "group": "github.com/mitchellh", - "name": "mapstructure", - "version": "v1.1.2", - "purl": "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2" - }, - { - "group": "github.com/munnerz", - "name": "goautoneg", - "version": "v0.0.0-20120707110453-a547fc61f48d", - "purl": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20120707110453-a547fc61f48d", - "type": "library", - "bom-ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20120707110453-a547fc61f48d" - }, - { - "group": "github.com/onsi/ginkgo", - "name": "v2", - "version": "v2.1.4", - "purl": "pkg:golang/github.com/onsi/ginkgo/v2@v2.1.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/onsi/ginkgo/v2@v2.1.4" - }, - { - "group": "github.com/onsi", - "name": "gomega", - "version": "v1.19.0", - "purl": "pkg:golang/github.com/onsi/gomega@v1.19.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/onsi/gomega@v1.19.0" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.5.1", - "purl": "pkg:golang/github.com/stretchr/testify@v1.5.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.5.1" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.27.1", - "purl": "pkg:golang/google.golang.org/protobuf@v1.27.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.27.1" - }, - { - "group": "gopkg.in", - "name": "yaml.v3", - "version": "v3.0.0-20210107192922-496545a6307b", - "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20210107192922-496545a6307b", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20210107192922-496545a6307b" - }, - { - "group": "k8s.io", - "name": "gengo", - "version": "v0.0.0-20210813121822-485abfe95c7c", - "purl": "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c" - }, - { - "group": "k8s.io/klog", - "name": "v2", - "version": "v2.2.0", - "purl": "pkg:golang/k8s.io/klog/v2@v2.2.0", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/klog/v2@v2.2.0" - }, - { - "group": "k8s.io", - "name": "utils", - "version": "v0.0.0-20210802155522-efc7438f0176", - "purl": "pkg:golang/k8s.io/utils@v0.0.0-20210802155522-efc7438f0176", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/utils@v0.0.0-20210802155522-efc7438f0176" - }, - { - "group": "sigs.k8s.io", - "name": "yaml", - "version": "v1.2.0", - "purl": "pkg:golang/sigs.k8s.io/yaml@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/yaml@v1.2.0" - }, - { - "group": "github.com/PuerkitoBio", - "name": "purell", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1" - }, - { - "group": "github.com/PuerkitoBio", - "name": "urlesc", - "version": "v0.0.0-20170810143723-de5bf2ad4578", - "purl": "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578", - "type": "library", - "bom-ref": "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578" - }, - { - "group": "github.com/go-logr", - "name": "logr", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/go-logr/logr@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-logr/logr@v0.2.0" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.6.0-dev.0.20220106191415-9b9b3d81d5e3", - "purl": "pkg:golang/golang.org/x/mod@v0.6.0-dev.0.20220106191415-9b9b3d81d5e3", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.6.0-dev.0.20220106191415-9b9b3d81d5e3" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20220225172249-27dd8689420f", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20220319134239-a9b59b0215f8", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20220319134239-a9b59b0215f8", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20220319134239-a9b59b0215f8" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.7", - "purl": "pkg:golang/golang.org/x/text@v0.3.7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.7" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.1.10", - "purl": "pkg:golang/golang.org/x/tools@v0.1.10", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.1.10" - }, - { - "group": "gopkg.in", - "name": "yaml.v2", - "version": "v2.2.8", - "purl": "pkg:golang/gopkg.in/yaml.v2@v2.2.8", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.8" - }, - { - "group": "github.com/kr", - "name": "pretty", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/kr/pretty@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/pretty@v0.1.0" - }, - { - "group": "github.com/mailru", - "name": "easyjson", - "version": "v0.0.0-20190614124828-94de47d64c63", - "purl": "pkg:golang/github.com/mailru/easyjson@v0.0.0-20190614124828-94de47d64c63", - "type": "library", - "bom-ref": "pkg:golang/github.com/mailru/easyjson@v0.0.0-20190614124828-94de47d64c63" - }, - { - "group": "gopkg.in", - "name": "check.v1", - "version": "v1.0.0-20180628173108-788fd7840127", - "purl": "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127" - }, - { - "group": "gopkg.in", - "name": "yaml.v2", - "version": "v2.2.2", - "purl": "pkg:golang/gopkg.in/yaml.v2@v2.2.2", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.2" - }, - { - "group": "github.com/davecgh", - "name": "go-spew", - "version": "v1.1.0", - "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.0" - }, - { - "group": "github.com/stretchr", - "name": "objx", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/stretchr/objx@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/objx@v0.1.0" - }, - { - "group": "github.com/kr", - "name": "text", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/kr/text@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/text@v0.1.0" - }, - { - "group": "gopkg.in", - "name": "yaml.v3", - "version": "v3.0.0-20200313102051-9f266ea9e77c", - "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200619180055-7c47624df98f", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200619180055-7c47624df98f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200619180055-7c47624df98f" - }, - { - "group": "github.com/yuin", - "name": "goldmark", - "version": "v1.2.1", - "purl": "pkg:golang/github.com/yuin/goldmark@v1.2.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/yuin/goldmark@v1.2.1" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.3.0", - "purl": "pkg:golang/golang.org/x/mod@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.3.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20201021035429-f5854403a974", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20201020160332-67f06af15bc9", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20191204190536-9bdfabe68543", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190311183353-d8887717615a", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20190423024810-112230192c58", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.1", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.1" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20190313153728-d0100b6bd8b3", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.27.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.27.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.27.0" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.24.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.24.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.24.0" - }, - { - "group": "cloud.google.com/go", - "name": "storage", - "version": "v1.10.0", - "purl": "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/storage@v1.10.0" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.4.4", - "purl": "pkg:golang/github.com/golang/mock@v1.4.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.4.4" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.2", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.2" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.1", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.1" - }, - { - "group": "github.com/google/martian", - "name": "v3", - "version": "v3.0.0", - "purl": "pkg:golang/github.com/google/martian/v3@v3.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/martian/v3@v3.0.0" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20200708004538-1a94d8640e99", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99" - }, - { - "group": "github.com/googleapis/gax-go", - "name": "v2", - "version": "v2.0.5", - "purl": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5" - }, - { - "group": "github.com/jstemmer", - "name": "go-junit-report", - "version": "v0.9.1", - "purl": "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1" - }, - { - "name": "go.opencensus.io", - "version": "v0.22.4", - "purl": "pkg:golang/go.opencensus.io@v0.22.4", - "type": "library", - "bom-ref": "pkg:golang/go.opencensus.io@v0.22.4" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20200302205851-738671d3881b", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200822124328-c89045814202", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20200107190931-bf48bf16ab8d", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.3", - "purl": "pkg:golang/golang.org/x/text@v0.3.3", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.3" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200825202427-b303f430e36d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200825202427-b303f430e36d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200825202427-b303f430e36d" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.30.0", - "purl": "pkg:golang/google.golang.org/api@v0.30.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.30.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200825200019-8632dd797987", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200825200019-8632dd797987", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200825200019-8632dd797987" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.31.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.31.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.31.0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20211216021012-1d35b9e2eb4e", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20211216021012-1d35b9e2eb4e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20211216021012-1d35b9e2eb4e" - }, - { - "group": "golang.org/x", - "name": "term", - "version": "v0.0.0-20210927222741-03fcf44c2211", - "purl": "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20190308221718-c2843e01d9a2", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190215142949-d0b11bdaac8a", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.0", - "purl": "pkg:golang/golang.org/x/text@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.0" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20180917221912-90fa682c2a6e", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.26.0-rc.1", - "purl": "pkg:golang/google.golang.org/protobuf@v1.26.0-rc.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.26.0-rc.1" - }, - { - "group": "github.com/kr", - "name": "pty", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/kr/pty@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/pty@v1.1.1" - }, - { - "group": "github.com/yuin", - "name": "goldmark", - "version": "v1.1.27", - "purl": "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "type": "library", - "bom-ref": "pkg:golang/github.com/yuin/goldmark@v1.1.27" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.2.0", - "purl": "pkg:golang/golang.org/x/mod@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.2.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200226121028-0de0cce0169b", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20190911185100-cd5d95a43a6e", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20191011191535-87dc89f01550", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191119224855-298f0cb1881e", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20191011141410-1b5146add898", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20200622213623-75b288015ac9", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200930185726-fdedc70b468f", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.4.0", - "purl": "pkg:golang/github.com/google/go-cmp@v0.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.4.0" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.22.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.22.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.22.0" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190311212946-11955173bddd", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd" - }, - { - "group": "github.com/envoyproxy", - "name": "go-control-plane", - "version": "v0.9.1-0.20191026205805-5f8ba28d4473", - "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.1-0.20191026205805-5f8ba28d4473", - "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.1-0.20191026205805-5f8ba28d4473" - }, - { - "group": "github.com/envoyproxy", - "name": "protoc-gen-validate", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0" - }, - { - "group": "github.com/golang", - "name": "glog", - "version": "v0.0.0-20160126235308-23def4e6c14b", - "purl": "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/golang/mock@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.1.1" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.3.2", - "purl": "pkg:golang/github.com/golang/protobuf@v1.3.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.3.2" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/google/go-cmp@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.2.0" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20180821212333-d2e6202438be", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190819201941-24fa4b261c55", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200526211855-cb27e3aa2013", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.57.0", - "purl": "pkg:golang/cloud.google.com/go@v0.57.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.57.0" - }, - { - "group": "cloud.google.com/go", - "name": "bigquery", - "version": "v1.8.0", - "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.8.0" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.4.1", - "purl": "pkg:golang/github.com/google/go-cmp@v0.4.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.4.1" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200520182314-0ba52f642ac2", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200520182314-0ba52f642ac2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200520182314-0ba52f642ac2" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200523222454-059865788121", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200523222454-059865788121", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200523222454-059865788121" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200618134242-20370b0cb4b2", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200618134242-20370b0cb4b2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200618134242-20370b0cb4b2" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.28.0", - "purl": "pkg:golang/google.golang.org/api@v0.28.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.28.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200618031413-b414f8b61790", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200618031413-b414f8b61790", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200618031413-b414f8b61790" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.29.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.29.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.29.1" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190425150028-36563e24a262", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.23.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.23.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.23.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190628185345-da137c7871d7", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190628185345-da137c7871d7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190628185345-da137c7871d7" - }, - { - "group": "github.com/chzyer", - "name": "logex", - "version": "v1.1.10", - "purl": "pkg:golang/github.com/chzyer/logex@v1.1.10", - "type": "library", - "bom-ref": "pkg:golang/github.com/chzyer/logex@v1.1.10" - }, - { - "group": "github.com/chzyer", - "name": "readline", - "version": "v0.0.0-20180603132655-2972be24d48e", - "purl": "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "type": "library", - "bom-ref": "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e" - }, - { - "group": "github.com/chzyer", - "name": "test", - "version": "v0.0.0-20180213035817-a1ea475d72b1", - "purl": "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "type": "library", - "bom-ref": "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1" - }, - { - "group": "github.com/ianlancetaylor", - "name": "demangle", - "version": "v0.0.0-20181102032728-5e5cf60278f6", - "purl": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "type": "library", - "bom-ref": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20191204072324-ce4227a45e2e", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.19.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.19.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.19.0" - }, - { - "group": "github.com/golang", - "name": "groupcache", - "version": "v0.0.0-20190702054246-869f871628b6", - "purl": "pkg:golang/github.com/golang/groupcache@v0.0.0-20190702054246-869f871628b6", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20190702054246-869f871628b6" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.3.0", - "purl": "pkg:golang/github.com/google/go-cmp@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.3.0" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.4.0", - "purl": "pkg:golang/github.com/stretchr/testify@v1.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.4.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190620200207-3b0461eec859", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190502145724-3ef323f4f1fd", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190425155659-357c62f0e4bb", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.20.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.20.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.20.1" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200130002326-2f3ba24bd6e7", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200130002326-2f3ba24bd6e7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200130002326-2f3ba24bd6e7" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200323222414-85ca7c5b95cd", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.34.0", - "purl": "pkg:golang/cloud.google.com/go@v0.34.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.34.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190108225652-1e06a53dbb7e", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20181221193216-37e7f081c4d4", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.4.0", - "purl": "pkg:golang/google.golang.org/appengine@v1.4.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.4.0" - }, - { - "group": "github.com/yuin", - "name": "goldmark", - "version": "v1.1.32", - "purl": "pkg:golang/github.com/yuin/goldmark@v1.1.32", - "type": "library", - "bom-ref": "pkg:golang/github.com/yuin/goldmark@v1.1.32" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200625001655-4c5254603344", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200625001655-4c5254603344", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200625001655-4c5254603344" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20200625203802-6e8e738ad208", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.62.0", - "purl": "pkg:golang/cloud.google.com/go@v0.62.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.62.0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200803210538-64077c9b5642", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200803210538-64077c9b5642", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200803210538-64077c9b5642" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200804011535-6c149bb5ef0d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200804011535-6c149bb5ef0d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200804011535-6c149bb5ef0d" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200804131852-c06518451d9c", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200804131852-c06518451d9c", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200804131852-c06518451d9c" - }, - { - "group": "github.com/cncf/udpa", - "name": "go", - "version": "v0.0.0-20191209042840-269d4d468f6f", - "purl": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "type": "library", - "bom-ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f" - }, - { - "group": "github.com/envoyproxy", - "name": "go-control-plane", - "version": "v0.9.4", - "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.3.3", - "purl": "pkg:golang/github.com/golang/protobuf@v1.3.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.3.3" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20210615035016-665e8c7367d1", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20210615035016-665e8c7367d1", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210615035016-665e8c7367d1" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190404232315-eb5bcb51f2a3", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190412213103-97732733099d", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20190717185122-a985d3407aa7", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.0", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.0" - }, - { - "group": "github.com/census-instrumentation", - "name": "opencensus-proto", - "version": "v0.2.1", - "purl": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1" - }, - { - "group": "github.com/prometheus", - "name": "client_model", - "version": "v0.0.0-20190812154241-14fe0d1b01d4", - "purl": "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "type": "library", - "bom-ref": "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.23.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.23.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.23.0" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20190121172915-509febef88a4", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20190227174305-5b3e6a55c961", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190226205152-f727befe758c", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.0-20190102054323-c2f93a96b099", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.23.1-0.20200526195155-81db48ad09cc", - "purl": "pkg:golang/google.golang.org/protobuf@v1.23.1-0.20200526195155-81db48ad09cc", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.23.1-0.20200526195155-81db48ad09cc" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.0-20190523083050-ea95bdfd59fc", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - }, - { - "group": "cloud.google.com/go", - "name": "bigquery", - "version": "v1.4.0", - "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.4.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.4.0" - }, - { - "group": "cloud.google.com/go", - "name": "datastore", - "version": "v1.1.0", - "purl": "pkg:golang/cloud.google.com/go/datastore@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/datastore@v1.1.0" - }, - { - "group": "cloud.google.com/go", - "name": "pubsub", - "version": "v1.2.0", - "purl": "pkg:golang/cloud.google.com/go/pubsub@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/pubsub@v1.2.0" - }, - { - "group": "cloud.google.com/go", - "name": "storage", - "version": "v1.6.0", - "purl": "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/storage@v1.6.0" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.4.3", - "purl": "pkg:golang/github.com/golang/mock@v1.4.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.4.3" - }, - { - "group": "github.com/google", - "name": "martian", - "version": "v2.1.0+incompatible", - "purl": "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20200430221834-fc25d7d30c6d", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20200430221834-fc25d7d30c6d", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200430221834-fc25d7d30c6d" - }, - { - "name": "go.opencensus.io", - "version": "v0.22.3", - "purl": "pkg:golang/go.opencensus.io@v0.22.3", - "type": "library", - "bom-ref": "pkg:golang/go.opencensus.io@v0.22.3" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200501053045-e0ff5e5a1de5", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200501053045-e0ff5e5a1de5", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200501053045-e0ff5e5a1de5" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20200317015054-43a5402ce75a", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200501052902-10377860bb8e", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200501052902-10377860bb8e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200501052902-10377860bb8e" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200501065659-ab2804fb9c9d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200501065659-ab2804fb9c9d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200501065659-ab2804fb9c9d" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.22.0", - "purl": "pkg:golang/google.golang.org/api@v0.22.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.22.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200430143042-b979b6f78d84", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200430143042-b979b6f78d84", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200430143042-b979b6f78d84" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.1-2020.1.3", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - }, - { - "group": "cloud.google.com/go", - "name": "storage", - "version": "v1.8.0", - "purl": "pkg:golang/cloud.google.com/go/storage@v1.8.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/storage@v1.8.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200513185701-a91f0712d120", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200513185701-a91f0712d120", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200513185701-a91f0712d120" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200515095857-1151b9dac4a9", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200515095857-1151b9dac4a9", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200515095857-1151b9dac4a9" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200515010526-7d3b6ebf133d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200515010526-7d3b6ebf133d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200515010526-7d3b6ebf133d" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.24.0", - "purl": "pkg:golang/google.golang.org/api@v0.24.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.24.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200515170657-fc4c6c6a6587", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200515170657-fc4c6c6a6587", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200515170657-fc4c6c6a6587" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.1-2020.1.4", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.56.0", - "purl": "pkg:golang/cloud.google.com/go@v0.56.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.56.0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200331124033-c3d80250170d", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200331025713-a30bf2db82d4", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.6.5", - "purl": "pkg:golang/google.golang.org/appengine@v1.6.5", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.5" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200331122359-1ee6d9798940", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.28.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.28.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.28.0" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.26.0", - "purl": "pkg:golang/cloud.google.com/go@v0.26.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.26.0" - }, - { - "group": "github.com/BurntSushi", - "name": "toml", - "version": "v0.3.1", - "purl": "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/BurntSushi/toml@v0.3.1" - }, - { - "group": "github.com/client9", - "name": "misspell", - "version": "v0.3.4", - "purl": "pkg:golang/github.com/client9/misspell@v0.3.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/client9/misspell@v0.3.4" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.2.0", - "purl": "pkg:golang/github.com/golang/protobuf@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.2.0" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20181026193005-c67002cb31c3", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20181026193005-c67002cb31c3", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20181026193005-c67002cb31c3" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20180826012351-8a410e7b638d", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20180826012351-8a410e7b638d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20180826012351-8a410e7b638d" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20180314180146-1d60e4601c6f", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20180830151530-49385e6e1522", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20180830151530-49385e6e1522", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20180830151530-49385e6e1522" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190114222345-bf090417da8b", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190114222345-bf090417da8b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190114222345-bf090417da8b" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.1.0", - "purl": "pkg:golang/google.golang.org/appengine@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.1.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20180817151627-c66870c02cf8", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190213061140-3a22650c66bd", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20190227155943-e225da77a7e6", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.1.1-0.20191105210325-c90efee705ee", - "purl": "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20180724234803-3673e40ba225", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20180724234803-3673e40ba225", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20180724234803-3673e40ba225" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200707034311-ab3426394381", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200707034311-ab3426394381", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200707034311-ab3426394381" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200729194436-6467de6f59a7", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200729194436-6467de6f59a7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200729194436-6467de6f59a7" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.29.0", - "purl": "pkg:golang/google.golang.org/api@v0.29.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.29.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200729003335-053ba62fc06f", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200729003335-053ba62fc06f", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200729003335-053ba62fc06f" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.30.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.30.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.30.0" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.25.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.25.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.25.0" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.25.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.25.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.25.1" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.21.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.21.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.21.0" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20181108010431-42b317875d0f", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20181108010431-42b317875d0f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20181108010431-42b317875d0f" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.52.0", - "purl": "pkg:golang/cloud.google.com/go@v0.52.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.52.0" - }, - { - "group": "cloud.google.com/go", - "name": "storage", - "version": "v1.5.0", - "purl": "pkg:golang/cloud.google.com/go/storage@v1.5.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/storage@v1.5.0" - }, - { - "group": "github.com/golang", - "name": "groupcache", - "version": "v0.0.0-20200121045136-8c9f03a8e57e", - "purl": "pkg:golang/github.com/golang/groupcache@v0.0.0-20200121045136-8c9f03a8e57e", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20200121045136-8c9f03a8e57e" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20200119233911-0405dc783f0a", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20200119233911-0405dc783f0a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200119233911-0405dc783f0a" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200122134326-e047566fdf82", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200122134326-e047566fdf82", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200122134326-e047566fdf82" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200122220014-bf1340f18c4a", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200122220014-bf1340f18c4a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200122220014-bf1340f18c4a" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.15.0", - "purl": "pkg:golang/google.golang.org/api@v0.15.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.15.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200122232147-0452cf42e150", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200122232147-0452cf42e150", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200122232147-0452cf42e150" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.26.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.26.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.26.0" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20200207192155-f17229e696bd", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20200207192155-f17229e696bd", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200207192155-f17229e696bd" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200212091648-12a6c2dcc1e4", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200212091648-12a6c2dcc1e4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200212091648-12a6c2dcc1e4" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200212150539-ea181f53ac56", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200212150539-ea181f53ac56", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200212150539-ea181f53ac56" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.17.0", - "purl": "pkg:golang/google.golang.org/api@v0.17.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.17.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200212174721-66ed5ce911ce", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200212174721-66ed5ce911ce", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200212174721-66ed5ce911ce" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.27.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.27.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.27.1" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20200130185559-910be7a94367", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20200130185559-910be7a94367", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20200130185559-910be7a94367" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200202094626-16171245cfb2", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200202094626-16171245cfb2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200202094626-16171245cfb2" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200202164722-d101bd2416d5", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200202164722-d101bd2416d5", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200202164722-d101bd2416d5" - }, - { - "group": "golang.org/x", - "name": "time", - "version": "v0.0.0-20191024005414-555d28b269f0", - "purl": "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200204074204-1cc6d1ef6c74", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200204074204-1cc6d1ef6c74", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200204074204-1cc6d1ef6c74" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200204135345-fa8e72b47b90", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200204135345-fa8e72b47b90", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200204135345-fa8e72b47b90" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.53.0", - "purl": "pkg:golang/cloud.google.com/go@v0.53.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.53.0" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20200224162631-6cc2880d07d6", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200222125558-5a598a2470a0", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200222125558-5a598a2470a0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200222125558-5a598a2470a0" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200223170610-d5e6a3e2c0ae", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200223170610-d5e6a3e2c0ae", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200223170610-d5e6a3e2c0ae" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200224181240-023911ca70b2", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200224181240-023911ca70b2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200224181240-023911ca70b2" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.18.0", - "purl": "pkg:golang/google.golang.org/api@v0.18.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.18.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200224152610-e50cd9704f63", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200224152610-e50cd9704f63", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200224152610-e50cd9704f63" - }, - { - "group": "rsc.io/quote", - "name": "v3", - "version": "v3.1.0", - "purl": "pkg:golang/rsc.io/quote/v3@v3.1.0", - "type": "library", - "bom-ref": "pkg:golang/rsc.io/quote/v3@v3.1.0" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.38.0", - "purl": "pkg:golang/cloud.google.com/go@v0.38.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.38.0" - }, - { - "group": "github.com/hashicorp", - "name": "golang-lru", - "version": "v0.5.1", - "purl": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1" - }, - { - "name": "go.opencensus.io", - "version": "v0.21.0", - "purl": "pkg:golang/go.opencensus.io@v0.21.0", - "type": "library", - "bom-ref": "pkg:golang/go.opencensus.io@v0.21.0" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20190409202823-959b441ac422", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190503192946-f4e77d36d62c", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20190604053449-0f29369cfe45", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190507160741-ecd444e8653b", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.5.0", - "purl": "pkg:golang/google.golang.org/appengine@v1.5.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.5.0" - }, - { - "group": "github.com/google", - "name": "renameio", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/google/renameio@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/renameio@v0.1.0" - }, - { - "group": "github.com/rogpeppe", - "name": "go-internal", - "version": "v1.3.0", - "purl": "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.0.0-20190513183733-4bf6d317e70e", - "purl": "pkg:golang/golang.org/x/mod@v0.0.0-20190513183733-4bf6d317e70e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.0.0-20190513183733-4bf6d317e70e" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191130070609-6e064ea0cf2d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191130070609-6e064ea0cf2d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191130070609-6e064ea0cf2d" - }, - { - "group": "cloud.google.com/go", - "name": "bigquery", - "version": "v1.7.0", - "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.7.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.7.0" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200506145744-7e3656a0809f", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200506145744-7e3656a0809f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200506145744-7e3656a0809f" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200511232937-7e40ca221e25", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200511232937-7e40ca221e25", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200511232937-7e40ca221e25" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200512131952-2bc93b1c0c88", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200512131952-2bc93b1c0c88", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200512131952-2bc93b1c0c88" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200511104702-f5ebc3bea380", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200511104702-f5ebc3bea380", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200511104702-f5ebc3bea380" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.3.5", - "purl": "pkg:golang/github.com/golang/protobuf@v1.3.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.3.5" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20200229191704-1ebb73c60ed3", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20200229191704-1ebb73c60ed3", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200229191704-1ebb73c60ed3" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200324143707-d3edc9973b7e", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200324143707-d3edc9973b7e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200324143707-d3edc9973b7e" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.20.0", - "purl": "pkg:golang/google.golang.org/api@v0.20.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.20.0" - }, - { - "group": "github.com/yuin", - "name": "goldmark", - "version": "v1.1.25", - "purl": "pkg:golang/github.com/yuin/goldmark@v1.1.25", - "type": "library", - "bom-ref": "pkg:golang/github.com/yuin/goldmark@v1.1.25" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.0", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.0" - }, - { - "group": "github.com/envoyproxy", - "name": "go-control-plane", - "version": "v0.9.0", - "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.0" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.0-rc.4.0.20200313231945-b860323f09d0", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.4.0.20200313231945-b860323f09d0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.4.0.20200313231945-b860323f09d0" - }, - { - "group": "cloud.google.com/go", - "name": "bigquery", - "version": "v1.0.1", - "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.0.1", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.0.1" - }, - { - "group": "cloud.google.com/go", - "name": "datastore", - "version": "v1.0.0", - "purl": "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/datastore@v1.0.0" - }, - { - "group": "cloud.google.com/go", - "name": "pubsub", - "version": "v1.0.1", - "purl": "pkg:golang/cloud.google.com/go/pubsub@v1.0.1", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/pubsub@v1.0.1" - }, - { - "group": "cloud.google.com/go", - "name": "storage", - "version": "v1.0.0", - "purl": "pkg:golang/cloud.google.com/go/storage@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/storage@v1.0.0" - }, - { - "group": "github.com/golang", - "name": "groupcache", - "version": "v0.0.0-20191227052852-215e87163ea7", - "purl": "pkg:golang/github.com/golang/groupcache@v0.0.0-20191227052852-215e87163ea7", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20191227052852-215e87163ea7" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.3.1", - "purl": "pkg:golang/github.com/golang/mock@v1.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.3.1" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20191218002539-d4f498aebedc", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20191218002539-d4f498aebedc", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20191218002539-d4f498aebedc" - }, - { - "name": "go.opencensus.io", - "version": "v0.22.2", - "purl": "pkg:golang/go.opencensus.io@v0.22.2", - "type": "library", - "bom-ref": "pkg:golang/go.opencensus.io@v0.22.2" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20191227195350-da58074b4299", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20191227195350-da58074b4299", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20191227195350-da58074b4299" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20191125180803-fdd1cda4f05f", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20191125180803-fdd1cda4f05f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20191125180803-fdd1cda4f05f" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200114155413-6afb5195e5aa", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200114155413-6afb5195e5aa", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200114155413-6afb5195e5aa" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200113162924-86b910548bc1", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200113162924-86b910548bc1", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200113162924-86b910548bc1" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200117161641-43d50277825c", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200117161641-43d50277825c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200117161641-43d50277825c" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200115191322-ca5a22157cba", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200115191322-ca5a22157cba", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200115191322-ca5a22157cba" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.1-2019.2.3", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.50.0", - "purl": "pkg:golang/cloud.google.com/go@v0.50.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.50.0" - }, - { - "group": "cloud.google.com/go", - "name": "bigquery", - "version": "v1.3.0", - "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.3.0" - }, - { - "group": "cloud.google.com/go", - "name": "pubsub", - "version": "v1.1.0", - "purl": "pkg:golang/cloud.google.com/go/pubsub@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/pubsub@v1.1.0" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.3.1", - "purl": "pkg:golang/github.com/google/go-cmp@v0.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.3.1" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20191209160850-c0dbc17a3553", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20191209160850-c0dbc17a3553", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20191209160850-c0dbc17a3553" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20191202225959-858c2ad4c8b6", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20191202225959-858c2ad4c8b6", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20191202225959-858c2ad4c8b6" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20191228213918-04cbcbbfeed8", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20191228213918-04cbcbbfeed8", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191228213918-04cbcbbfeed8" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191227053925-7b8e75db28f4", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191227053925-7b8e75db28f4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191227053925-7b8e75db28f4" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20191230161307-f3c370f40bfb", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20191230161307-f3c370f40bfb", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191230161307-f3c370f40bfb" - }, - { - "group": "dmitri.shuralyov.com/gpu", - "name": "mtl", - "version": "v0.0.0-20190408044501-666a987793e9", - "purl": "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "type": "library", - "bom-ref": "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9" - }, - { - "group": "github.com/BurntSushi", - "name": "xgb", - "version": "v0.0.0-20160522181843-27f122750802", - "purl": "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "type": "library", - "bom-ref": "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802" - }, - { - "group": "github.com/go-gl/glfw/v3.3", - "name": "glfw", - "version": "v0.0.0-20191125211704-12ad95a8df72", - "purl": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72" - }, - { - "group": "golang.org/x", - "name": "image", - "version": "v0.0.0-20190802002840-cff245a6509b", - "purl": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b" - }, - { - "group": "golang.org/x", - "name": "mobile", - "version": "v0.0.0-20190719004257-d2bd2a29d028", - "purl": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.1.0", - "purl": "pkg:golang/golang.org/x/mod@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.1.0" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191012152004-8de300cfc20a", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190506145303-2d16b83fe98c", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190502173448-54afdca5d873", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.0-20190418001031-e561f6794a2a", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200207183749-b753a1ba74fa", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200207183749-b753a1ba74fa", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200207183749-b753a1ba74fa" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.4.0", - "purl": "pkg:golang/github.com/golang/mock@v1.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.4.0" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20200212024743-f11f1df84d12", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20200212024743-f11f1df84d12", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200212024743-f11f1df84d12" - }, - { - "group": "github.com/go-gl/glfw/v3.3", - "name": "glfw", - "version": "v0.0.0-20200222043503-6f7a984d4dc4", - "purl": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4" - }, - { - "group": "golang.org/x", - "name": "mod", - "version": "v0.1.1-0.20191107180719-034126e5016b", - "purl": "pkg:golang/golang.org/x/mod@v0.1.1-0.20191107180719-034126e5016b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mod@v0.1.1-0.20191107180719-034126e5016b" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20191001151750-bb3f8db39f24", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20191001151750-bb3f8db39f24", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191001151750-bb3f8db39f24" - }, - { - "group": "rsc.io", - "name": "sampler", - "version": "v1.3.0", - "purl": "pkg:golang/rsc.io/sampler@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/rsc.io/sampler@v1.3.0" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.2.0", - "purl": "pkg:golang/github.com/golang/mock@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.2.0" - }, - { - "group": "github.com/google", - "name": "btree", - "version": "v0.0.0-20180813153112-4030bb1f1f0c", - "purl": "pkg:golang/github.com/google/btree@v0.0.0-20180813153112-4030bb1f1f0c", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/btree@v0.0.0-20180813153112-4030bb1f1f0c" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20181206194817-3ea8567a2e57", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20181206194817-3ea8567a2e57", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20181206194817-3ea8567a2e57" - }, - { - "group": "github.com/googleapis/gax-go", - "name": "v2", - "version": "v2.0.4", - "purl": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.4" - }, - { - "group": "github.com/jstemmer", - "name": "go-junit-report", - "version": "v0.0.0-20190106144839-af01ea7f8024", - "purl": "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "type": "library", - "bom-ref": "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20190301231843-5614ed5bae6f", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20190301231843-5614ed5bae6f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190301231843-5614ed5bae6f" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20190226205417-e64efc72b421", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20190226205417-e64efc72b421", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20190226205417-e64efc72b421" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.1-0.20180807135948-17ff2d5776d2", - "purl": "pkg:golang/golang.org/x/text@v0.3.1-0.20180807135948-17ff2d5776d2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.1-0.20180807135948-17ff2d5776d2" - }, - { - "group": "golang.org/x", - "name": "time", - "version": "v0.0.0-20181108054448-85acf8d2951c", - "purl": "pkg:golang/golang.org/x/time@v0.0.0-20181108054448-85acf8d2951c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20181108054448-85acf8d2951c" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190312170243-e65039ee4138", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190312170243-e65039ee4138", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190312170243-e65039ee4138" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.4.0", - "purl": "pkg:golang/google.golang.org/api@v0.4.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.4.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190418145605-e7d98fc518a7", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190418145605-e7d98fc518a7", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190418145605-e7d98fc518a7" - }, - { - "group": "honnef.co/go", - "name": "tools", - "version": "v0.0.0-20190106161140-3f1c8253044a", - "purl": "pkg:golang/honnef.co/go/tools@v0.0.0-20190106161140-3f1c8253044a", - "type": "library", - "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190106161140-3f1c8253044a" - }, - { - "group": "github.com/hashicorp", - "name": "golang-lru", - "version": "v0.5.0", - "purl": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190307195333-5fe7a883aa19", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190307195333-5fe7a883aa19", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190307195333-5fe7a883aa19" - }, - { - "group": "gopkg.in", - "name": "errgo.v2", - "version": "v2.1.0", - "purl": "pkg:golang/gopkg.in/errgo.v2@v2.1.0", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/errgo.v2@v2.1.0" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20190510104115-cbcb75029529", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20190510104115-cbcb75029529", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190510104115-cbcb75029529" - }, - { - "group": "cloud.google.com/go", - "name": "pubsub", - "version": "v1.3.1", - "purl": "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/pubsub@v1.3.1" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.20.1-0.20200309200217-e05f789c0967", - "purl": "pkg:golang/google.golang.org/protobuf@v1.20.1-0.20200309200217-e05f789c0967", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.20.1-0.20200309200217-e05f789c0967" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.44.2", - "purl": "pkg:golang/cloud.google.com/go@v0.44.2", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.44.2" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.8.0", - "purl": "pkg:golang/google.golang.org/api@v0.8.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.8.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190801165951-fa694d86fc64", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.21.1", - "purl": "pkg:golang/google.golang.org/grpc@v1.21.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.21.1" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.44.1", - "purl": "pkg:golang/cloud.google.com/go@v0.44.1", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.44.1" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190624142023-c5567b49c5d0", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190624142023-c5567b49c5d0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190624142023-c5567b49c5d0" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.7.0", - "purl": "pkg:golang/google.golang.org/api@v0.7.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.7.0" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.6.1", - "purl": "pkg:golang/google.golang.org/appengine@v1.6.1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.1" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.45.1", - "purl": "pkg:golang/cloud.google.com/go@v0.45.1", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.45.1" - }, - { - "name": "go.opencensus.io", - "version": "v0.22.0", - "purl": "pkg:golang/go.opencensus.io@v0.22.0", - "type": "library", - "bom-ref": "pkg:golang/go.opencensus.io@v0.22.0" - }, - { - "group": "golang.org/x", - "name": "time", - "version": "v0.0.0-20190308202827-9d24e82272b4", - "purl": "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.9.0", - "purl": "pkg:golang/google.golang.org/api@v0.9.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.9.0" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.46.3", - "purl": "pkg:golang/cloud.google.com/go@v0.46.3", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.46.3" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20190911173649-1774047e7e51", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20190911173649-1774047e7e51", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190911173649-1774047e7e51" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191125144606-a911d9008d1f", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191125144606-a911d9008d1f", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191125144606-a911d9008d1f" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190621195816-6e04913cbbac", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190621195816-6e04913cbbac", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190621195816-6e04913cbbac" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20190515194954-54271f7e092f", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20191129062945-2f5052295587", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20191129062945-2f5052295587", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20191129062945-2f5052295587" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190724013045-ca1201d0de80", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190724013045-ca1201d0de80", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190724013045-ca1201d0de80" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190726091711-fc99dfbffb4e", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190726091711-fc99dfbffb4e", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190726091711-fc99dfbffb4e" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191216173652-a0e659d51361", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191216173652-a0e659d51361", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191216173652-a0e659d51361" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.14.0", - "purl": "pkg:golang/google.golang.org/api@v0.14.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.14.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20191216164720-4f79533eabd1", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20191216164720-4f79533eabd1", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191216164720-4f79533eabd1" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20191030013958-a1ab85dbe136", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20191030013958-a1ab85dbe136", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20191030013958-a1ab85dbe136" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20190930215403-16217165b5de", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20190930215403-16217165b5de", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190930215403-16217165b5de" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191113191852-77e3bb0ad9e7", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191113191852-77e3bb0ad9e7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191113191852-77e3bb0ad9e7" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.13.0", - "purl": "pkg:golang/google.golang.org/api@v0.13.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.13.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20191108220845-16a3f7862a1a", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20191108220845-16a3f7862a1a", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191108220845-16a3f7862a1a" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20191115202509-3a792d9c32b2", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20191115202509-3a792d9c32b2", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191115202509-3a792d9c32b2" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20191115194625-c23dd37a84c9", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20191115194625-c23dd37a84c9", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191115194625-c23dd37a84c9" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20190306152737-a1d7652674e8", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20190306152737-a1d7652674e8", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190306152737-a1d7652674e8" - }, - { - "group": "golang.org/x", - "name": "image", - "version": "v0.0.0-20190227222117-0694c2d4d067", - "purl": "pkg:golang/golang.org/x/image@v0.0.0-20190227222117-0694c2d4d067", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/image@v0.0.0-20190227222117-0694c2d4d067" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190312061237-fead79001313", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190312061237-fead79001313", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190312061237-fead79001313" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.0.0-20170915032832-14c0d48ead0c", - "purl": "pkg:golang/golang.org/x/text@v0.0.0-20170915032832-14c0d48ead0c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.0.0-20170915032832-14c0d48ead0c" - }, - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.54.0", - "purl": "pkg:golang/cloud.google.com/go@v0.54.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.54.0" - }, - { - "group": "cloud.google.com/go", - "name": "bigquery", - "version": "v1.5.0", - "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.5.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.5.0" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.3.4", - "purl": "pkg:golang/github.com/golang/protobuf@v1.3.4", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.3.4" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200312045724-11d5b4c81c7d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200312045724-11d5b4c81c7d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200312045724-11d5b4c81c7d" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200312145019-da6875a35672", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200312145019-da6875a35672", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200312145019-da6875a35672" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.0-rc.2", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.2" - }, - { - "group": "github.com/google", - "name": "btree", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/google/btree@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/btree@v1.0.0" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20190510132918-efd6b22b2522", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20190510132918-efd6b22b2522", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190510132918-efd6b22b2522" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190628153133-6cdbf07be9d0", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190628153133-6cdbf07be9d0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190628153133-6cdbf07be9d0" - }, - { - "group": "rsc.io", - "name": "binaryregexp", - "version": "v0.2.0", - "purl": "pkg:golang/rsc.io/binaryregexp@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/rsc.io/binaryregexp@v0.2.0" - }, - { - "group": "golang.org/x", - "name": "crypto", - "version": "v0.0.0-20190605123033-f99c8df09eb5", - "purl": "pkg:golang/golang.org/x/crypto@v0.0.0-20190605123033-f99c8df09eb5", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190605123033-f99c8df09eb5" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20190606165138-5da285871e9c", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20190606165138-5da285871e9c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190606165138-5da285871e9c" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190606124116-d0a3d012864b", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190606124116-d0a3d012864b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190606124116-d0a3d012864b" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20190501004415-9ce7a6920f09", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20190501004415-9ce7a6920f09", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20190501004415-9ce7a6920f09" - }, - { - "group": "golang.org/x", - "name": "exp", - "version": "v0.0.0-20190829153037-c13cbed26979", - "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20190829153037-c13cbed26979", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190829153037-c13cbed26979" - }, - { - "group": "golang.org/x", - "name": "lint", - "version": "v0.0.0-20190909230951-414d861bb4ac", - "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20190909230951-414d861bb4ac", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190909230951-414d861bb4ac" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190911174233-4f2ddba30aff", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190911174233-4f2ddba30aff", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190911174233-4f2ddba30aff" - }, - { - "group": "github.com/go-gl", - "name": "glfw", - "version": "v0.0.0-20190409004039-e6da0acd62b1", - "purl": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1" - }, - { - "group": "github.com/golang", - "name": "mock", - "version": "v1.4.1", - "purl": "pkg:golang/github.com/golang/mock@v1.4.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/mock@v1.4.1" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20200301022130-244492dfa37a", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20200301022130-244492dfa37a", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20200301022130-244492dfa37a" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.0.0-20200302150141-5c8b2ff67527", - "purl": "pkg:golang/golang.org/x/sys@v0.0.0-20200302150141-5c8b2ff67527", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200302150141-5c8b2ff67527" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200304193943-95d2e580d8eb", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200304193943-95d2e580d8eb", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200304193943-95d2e580d8eb" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200305110556-506484158171", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200305110556-506484158171", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200305110556-506484158171" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20200227222343-706bc42d1f0d", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20200227222343-706bc42d1f0d", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200227222343-706bc42d1f0d" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.19.0", - "purl": "pkg:golang/google.golang.org/api@v0.19.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.19.0" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20200228133532-8c2c7df3a383", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20200228133532-8c2c7df3a383", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200228133532-8c2c7df3a383" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v0.0.0-20200228230310-ab0ca4ff8a60", - "purl": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200228230310-ab0ca4ff8a60", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200228230310-ab0ca4ff8a60" - }, - { - "group": "golang.org/x", - "name": "mobile", - "version": "v0.0.0-20190312151609-d3739f865fa6", - "purl": "pkg:golang/golang.org/x/mobile@v0.0.0-20190312151609-d3739f865fa6", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mobile@v0.0.0-20190312151609-d3739f865fa6" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190312151545-0bb0c0a6e846", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190312151545-0bb0c0a6e846", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190312151545-0bb0c0a6e846" - }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20190816200558-6889da9d5479", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20190816200558-6889da9d5479", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190816200558-6889da9d5479" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.0-rc.1.0.20200221234624-67d41d38c208", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1.0.20200221234624-67d41d38c208", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1.0.20200221234624-67d41d38c208" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v0.0.0-20200221191635-4d8936d0db64", - "purl": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200221191635-4d8936d0db64", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200221191635-4d8936d0db64" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.4.0-rc.1", - "purl": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v0.0.0-20200109180630-ec00e32a8dfd", - "purl": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200109180630-ec00e32a8dfd", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200109180630-ec00e32a8dfd" - } - ], - "dependencies": [ - { - "ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "pkg:golang/github.com/gin-gonic/gin@v1.9.1", - "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/github.com/imdario/mergo@v0.3.6", - "pkg:golang/github.com/josharian/intern@v1.0.0", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/kr/pretty@v0.3.1", - "pkg:golang/github.com/kr/text@v0.2.0", - "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/term@v0.8.0", - "pkg:golang/golang.org/x/text@v0.9.0", - "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/protobuf@v1.30.0", - "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/k8s.io/api@v0.26.1", - "pkg:golang/k8s.io/apimachinery@v0.26.1", - "pkg:golang/k8s.io/client-go@v0.26.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", - "dependsOn": [ - "pkg:golang/github.com/bytedance/sonic@v1.9.1", - "pkg:golang/github.com/gin-contrib/sse@v0.1.0", - "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", - "pkg:golang/github.com/goccy/go-json@v0.10.2", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/mattn/go-isatty@v0.0.19", - "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", - "pkg:golang/github.com/stretchr/testify@v1.8.3", - "pkg:golang/github.com/ugorji/go/codec@v1.2.11", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/google.golang.org/protobuf@v1.30.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", - "pkg:golang/github.com/go-playground/locales@v0.14.1", - "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", - "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", - "pkg:golang/github.com/leodido/go-urn@v1.2.4", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", - "pkg:golang/golang.org/x/arch@v0.3.0", - "pkg:golang/golang.org/x/crypto@v0.9.0", - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/text@v0.9.0" - ] - }, - { - "ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "dependsOn": [ - "pkg:golang/github.com/go-openapi/swag@v0.19.5", - "pkg:golang/github.com/mailru/easyjson@v0.0.0-20190626092158-b2ccc519800e", - "pkg:golang/github.com/stretchr/testify@v1.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "dependsOn": [ - "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.3", - "pkg:golang/github.com/stretchr/testify@v1.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/kr/text@v0.2.0", - "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", - "pkg:golang/github.com/stretchr/testify@v1.6.1", - "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200615113413-eeeca48fe776" - ] - }, - { - "ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "dependsOn": [ - "pkg:golang/github.com/kisielk/errcheck@v1.5.0", - "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "pkg:golang/golang.org/x/tools@v0.0.0-20210106214847-113979e3529a" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.5.2", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.5.5", - "pkg:golang/google.golang.org/protobuf@v1.26.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.9", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/gofuzz@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/uuid@v1.1.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/imdario/mergo@v0.3.6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/josharian/intern@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/json-iterator/go@v1.1.12", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/google/gofuzz@v1.0.0", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180228061459-e0a39a4cb421", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/stretchr/testify@v1.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/kr/pretty@v0.3.1", - "dependsOn": [ - "pkg:golang/github.com/kr/text@v0.2.0", - "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" - ] - }, - { - "ref": "pkg:golang/github.com/kr/text@v0.2.0", - "dependsOn": [ - "pkg:golang/github.com/creack/pty@v1.1.9" - ] - }, - { - "ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "dependsOn": [ - "pkg:golang/github.com/josharian/intern@v1.0.0" - ] - }, - { - "ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", - "dependsOn": [ - "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e" - ] - }, - { - "ref": "pkg:golang/github.com/spf13/pflag@v1.0.5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.10.0", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/term@v0.8.0", - "pkg:golang/golang.org/x/text@v0.9.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/golang.org/x/net@v0.0.0-20220127200216-cd36cc0744dd", - "pkg:golang/google.golang.org/appengine@v1.6.6" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.8.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/term@v0.8.0", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.8.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.9.0", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.6.0", - "pkg:golang/golang.org/x/mod@v0.8.0", - "pkg:golang/golang.org/x/sys@v0.5.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.6.7", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65", - "pkg:golang/golang.org/x/text@v0.3.2" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.30.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.0", - "pkg:golang/github.com/google/go-cmp@v0.5.5" - ] - }, - { - "ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/k8s.io/api@v0.26.1", - "dependsOn": [ - "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "pkg:golang/github.com/stretchr/testify@v1.8.0", - "pkg:golang/k8s.io/apimachinery@v0.26.1", - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/golang.org/x/net@v0.3.1-0.20221206200815-1e63c2f08a10", - "pkg:golang/golang.org/x/text@v0.5.0", - "pkg:golang/google.golang.org/protobuf@v1.28.1", - "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.3.0" - ] - }, - { - "ref": "pkg:golang/k8s.io/apimachinery@v0.26.1", - "dependsOn": [ - "pkg:golang/github.com/armon/go-socks5@v0.0.0-20160902184237-e75332964ef5", - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/elazarl/goproxy@v0.0.0-20180725130230-947c36da3153", - "pkg:golang/github.com/evanphx/json-patch@v4.12.0%2Bincompatible", - "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/github.com/moby/spdystream@v0.2.0", - "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/github.com/stretchr/testify@v1.8.0", - "pkg:golang/golang.org/x/net@v0.3.1-0.20221206200815-1e63c2f08a10", - "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.3.0", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/kr/text@v0.2.0", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", - "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", - "pkg:golang/github.com/onsi/gomega@v1.23.0", - "pkg:golang/github.com/pkg/errors@v0.9.1", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/golang.org/x/text@v0.5.0", - "pkg:golang/google.golang.org/protobuf@v1.28.1", - "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1" - ] - }, - { - "ref": "pkg:golang/k8s.io/client-go@v0.26.1", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/evanphx/json-patch@v4.12.0%2Bincompatible", - "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7", - "pkg:golang/github.com/imdario/mergo@v0.3.6", - "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/github.com/stretchr/testify@v1.8.0", - "pkg:golang/golang.org/x/net@v0.3.1-0.20221206200815-1e63c2f08a10", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "pkg:golang/golang.org/x/term@v0.3.0", - "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "pkg:golang/google.golang.org/protobuf@v1.28.1", - "pkg:golang/k8s.io/api@v0.26.1", - "pkg:golang/k8s.io/apimachinery@v0.26.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.3.0", - "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "pkg:golang/github.com/google/btree@v1.0.1", - "pkg:golang/github.com/josharian/intern@v1.0.0", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "pkg:golang/github.com/moby/spdystream@v0.2.0", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "pkg:golang/github.com/pkg/errors@v0.9.1", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/golang.org/x/sys@v0.3.0", - "pkg:golang/golang.org/x/text@v0.5.0", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2" - ] - }, - { - "ref": "pkg:golang/k8s.io/klog/v2@v2.80.1", - "dependsOn": [ - "pkg:golang/github.com/go-logr/logr@v1.2.0" - ] - }, - { - "ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "dependsOn": [ - "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", - "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a", - "pkg:golang/github.com/emicklei/go-restful/v3@v3.8.0", - "pkg:golang/github.com/go-openapi/jsonreference@v0.19.3", - "pkg:golang/github.com/go-openapi/swag@v0.19.5", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.5", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", - "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20120707110453-a547fc61f48d", - "pkg:golang/github.com/onsi/ginkgo/v2@v2.1.4", - "pkg:golang/github.com/onsi/gomega@v1.19.0", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/github.com/stretchr/testify@v1.5.1", - "pkg:golang/google.golang.org/protobuf@v1.27.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20210107192922-496545a6307b", - "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c", - "pkg:golang/k8s.io/klog/v2@v2.2.0", - "pkg:golang/k8s.io/utils@v0.0.0-20210802155522-efc7438f0176", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.2.0", - "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1", - "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578", - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/go-logr/logr@v0.2.0", - "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/mailru/easyjson@v0.0.0-20190626092158-b2ccc519800e", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/golang.org/x/mod@v0.6.0-dev.0.20220106191415-9b9b3d81d5e3", - "pkg:golang/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f", - "pkg:golang/golang.org/x/sys@v0.0.0-20220319134239-a9b59b0215f8", - "pkg:golang/golang.org/x/text@v0.3.7", - "pkg:golang/golang.org/x/tools@v0.1.10", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/github.com/go-logr/logr@v1.2.0" - ] - }, - { - "ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "dependsOn": [ - "pkg:golang/gopkg.in/yaml.v2@v2.2.8", - "pkg:golang/github.com/google/gofuzz@v1.0.0", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" - ] - }, - { - "ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0" - ] - }, - { - "ref": "pkg:golang/github.com/bytedance/sonic@v1.9.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/gin-contrib/sse@v0.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/goccy/go-json@v0.10.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.19", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.8.3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ugorji/go/codec@v1.2.11", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-playground/locales@v0.14.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/leodido/go-urn@v1.2.4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/arch@v0.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.9.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-openapi/swag@v0.19.5", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/kr/pretty@v0.1.0", - "pkg:golang/github.com/mailru/easyjson@v0.0.0-20190614124828-94de47d64c63", - "pkg:golang/github.com/stretchr/testify@v1.3.0", - "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127", - "pkg:golang/gopkg.in/yaml.v2@v2.2.2" - ] - }, - { - "ref": "pkg:golang/github.com/mailru/easyjson@v0.0.0-20190626092158-b2ccc519800e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.3.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/objx@v0.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.3", - "dependsOn": [ - "pkg:golang/github.com/go-openapi/swag@v0.19.5", - "pkg:golang/github.com/mailru/easyjson@v0.0.0-20190626092158-b2ccc519800e", - "pkg:golang/github.com/stretchr/testify@v1.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", - "dependsOn": [ - "pkg:golang/github.com/kr/text@v0.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.6.1", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/objx@v0.1.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c" - ] - }, - { - "ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200615113413-eeeca48fe776", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/github.com/kisielk/errcheck@v1.5.0", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20200619180055-7c47624df98f" - ] - }, - { - "ref": "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20210106214847-113979e3529a", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.2.1", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", - "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.5", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.26.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.0", - "pkg:golang/github.com/google/go-cmp@v0.5.5" - ] - }, - { - "ref": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/kr/pretty@v0.2.0", - "dependsOn": [ - "pkg:golang/github.com/kr/text@v0.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/stoewer/go-strcase@v1.2.0", - "dependsOn": [ - "pkg:golang/github.com/stretchr/testify@v1.5.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - ] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0" - ] - }, - { - "ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20190902080502-41f04d3bba15", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210320140829-1e4c9ba3b0c4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/gofuzz@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180228061459-e0a39a4cb421", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/creack/pty@v1.1.9", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.65.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "pkg:golang/github.com/golang/mock@v1.4.4", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.5.1", - "pkg:golang/github.com/google/martian/v3@v3.0.0", - "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.4", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/text@v0.3.3", - "pkg:golang/golang.org/x/tools@v0.0.0-20200825202427-b303f430e36d", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "pkg:golang/google.golang.org/api@v0.30.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200825200019-8632dd797987", - "pkg:golang/google.golang.org/grpc@v1.31.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20220127200216-cd36cc0744dd", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20211216021012-1d35b9e2eb4e", - "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211", - "pkg:golang/golang.org/x/text@v0.3.7" - ] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.6.6", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65", - "pkg:golang/golang.org/x/text@v0.3.2" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.6.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.8.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.5.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.3.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.2", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.5.0", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.5.5", - "pkg:golang/google.golang.org/protobuf@v1.26.0-rc.1" - ] - }, - { - "ref": "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.8.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.3.1-0.20221206200815-1e63c2f08a10", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.5.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.28.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/armon/go-socks5@v0.0.0-20160902184237-e75332964ef5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/elazarl/goproxy@v0.0.0-20180725130230-947c36da3153", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/evanphx/json-patch@v4.12.0%2Bincompatible", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/moby/spdystream@v0.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/onsi/gomega@v1.23.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/pkg/errors@v0.9.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/term@v0.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/btree@v1.0.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-logr/logr@v1.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.8.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.19.3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20120707110453-a547fc61f48d", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/onsi/ginkgo/v2@v2.1.4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/onsi/gomega@v1.19.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.5.1", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/objx@v0.1.0", - "pkg:golang/gopkg.in/yaml.v2@v2.2.2" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.27.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20210107192922-496545a6307b", - "dependsOn": [] - }, - { - "ref": "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c", - "dependsOn": [] - }, - { - "ref": "pkg:golang/k8s.io/klog/v2@v2.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/k8s.io/utils@v0.0.0-20210802155522-efc7438f0176", - "dependsOn": [] - }, - { - "ref": "pkg:golang/sigs.k8s.io/yaml@v1.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-logr/logr@v0.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.6.0-dev.0.20220106191415-9b9b3d81d5e3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20220225172249-27dd8689420f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20220319134239-a9b59b0215f8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.7", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.1.10", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.8", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/github.com/kr/pretty@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/kr/text@v0.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/mailru/easyjson@v0.0.0-20190614124828-94de47d64c63", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v2@v2.2.2", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/stretchr/objx@v0.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/kr/text@v0.1.0", - "dependsOn": [ - "pkg:golang/github.com/kr/pty@v1.1.1" - ] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200619180055-7c47624df98f", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/github.com/yuin/goldmark@v1.2.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.3.0", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20201021035429-f5854403a974", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f", - "pkg:golang/golang.org/x/text@v0.3.3" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.1", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/protobuf@v1.22.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.27.0", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.1-0.20191026205805-5f8ba28d4473", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.24.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.57.0", - "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.4.1", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/net@v0.0.0-20200520182314-0ba52f642ac2", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200523222454-059865788121", - "pkg:golang/golang.org/x/tools@v0.0.0-20200618134242-20370b0cb4b2", - "pkg:golang/google.golang.org/api@v0.28.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200618031413-b414f8b61790", - "pkg:golang/google.golang.org/grpc@v1.29.1" - ] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.4.4", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.2", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/protobuf@v1.23.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.1", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/github.com/google/martian/v3@v3.0.0", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190628185345-da137c7871d7" - ] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "dependsOn": [ - "pkg:golang/google.golang.org/grpc@v1.19.0" - ] - }, - { - "ref": "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/go.opencensus.io@v0.22.4", - "dependsOn": [ - "pkg:golang/github.com/golang/groupcache@v0.0.0-20190702054246-869f871628b6", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/stretchr/testify@v1.4.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb", - "pkg:golang/google.golang.org/grpc@v1.20.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20200130002326-2f3ba24bd6e7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200822124328-c89045814202", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.34.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e", - "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4", - "pkg:golang/google.golang.org/appengine@v1.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.3", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200825202427-b303f430e36d", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.32", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200625001655-4c5254603344", - "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.30.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.62.0", - "pkg:golang/github.com/google/go-cmp@v0.5.1", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.4", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "pkg:golang/golang.org/x/sys@v0.0.0-20200803210538-64077c9b5642", - "pkg:golang/golang.org/x/tools@v0.0.0-20200804011535-6c149bb5ef0d", - "pkg:golang/google.golang.org/appengine@v1.6.6", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200804131852-c06518451d9c", - "pkg:golang/google.golang.org/grpc@v1.31.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200825200019-8632dd797987", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.31.0", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20211216021012-1d35b9e2eb4e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20210615035016-665e8c7367d1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20180917221912-90fa682c2a6e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.26.0-rc.1", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.5.5" - ] - }, - { - "ref": "pkg:golang/github.com/kr/pty@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.2.0", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200930185726-fdedc70b468f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.4.0", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.22.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a" - ] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.1-0.20191026205805-5f8ba28d4473", - "dependsOn": [ - "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.23.0" - ] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.3.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.23.1-0.20200526195155-81db48ad09cc", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.57.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.4.0", - "pkg:golang/cloud.google.com/go/datastore@v1.1.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.2.0", - "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "pkg:golang/github.com/golang/mock@v1.4.3", - "pkg:golang/github.com/golang/protobuf@v1.4.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20200430221834-fc25d7d30c6d", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/net@v0.0.0-20200501053045-e0ff5e5a1de5", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "pkg:golang/golang.org/x/sys@v0.0.0-20200501052902-10377860bb8e", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20200501065659-ab2804fb9c9d", - "pkg:golang/google.golang.org/api@v0.22.0", - "pkg:golang/google.golang.org/appengine@v1.6.6", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200430143042-b979b6f78d84", - "pkg:golang/google.golang.org/grpc@v1.29.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.57.0", - "pkg:golang/cloud.google.com/go/storage@v1.8.0", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200513185701-a91f0712d120", - "pkg:golang/golang.org/x/sys@v0.0.0-20200515095857-1151b9dac4a9", - "pkg:golang/golang.org/x/tools@v0.0.0-20200515010526-7d3b6ebf133d", - "pkg:golang/google.golang.org/api@v0.24.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200515170657-fc4c6c6a6587", - "pkg:golang/google.golang.org/grpc@v1.29.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.4.1", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200520182314-0ba52f642ac2", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200523222454-059865788121", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200618134242-20370b0cb4b2", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.28.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.56.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d", - "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4", - "pkg:golang/google.golang.org/appengine@v1.6.5", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940", - "pkg:golang/google.golang.org/grpc@v1.28.0", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200618031413-b414f8b61790", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.29.1", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.23.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190628185345-da137c7871d7", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/chzyer/logex@v1.1.10", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.19.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.26.0", - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/client9/misspell@v0.3.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20181026193005-c67002cb31c3", - "pkg:golang/golang.org/x/net@v0.0.0-20180826012351-8a410e7b638d", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f", - "pkg:golang/golang.org/x/sys@v0.0.0-20180830151530-49385e6e1522", - "pkg:golang/golang.org/x/text@v0.3.0", - "pkg:golang/golang.org/x/tools@v0.0.0-20190114222345-bf090417da8b", - "pkg:golang/google.golang.org/appengine@v1.1.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20190702054246-869f871628b6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/stretchr/testify@v1.4.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.0", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/objx@v0.1.0", - "pkg:golang/gopkg.in/yaml.v2@v2.2.2" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.20.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.26.0", - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/client9/misspell@v0.3.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd", - "pkg:golang/google.golang.org/appengine@v1.1.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200130002326-2f3ba24bd6e7", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.34.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.4.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20180724234803-3673e40ba225", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/yuin/goldmark@v1.1.32", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200625001655-4c5254603344", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.62.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/storage@v1.10.0", - "pkg:golang/github.com/golang/mock@v1.4.3", - "pkg:golang/github.com/golang/protobuf@v1.4.2", - "pkg:golang/github.com/google/go-cmp@v0.5.1", - "pkg:golang/github.com/google/martian/v3@v3.0.0", - "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.4", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/net@v0.0.0-20200707034311-ab3426394381", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/text@v0.3.3", - "pkg:golang/golang.org/x/tools@v0.0.0-20200729194436-6467de6f59a7", - "pkg:golang/google.golang.org/api@v0.29.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200729003335-053ba62fc06f", - "pkg:golang/google.golang.org/grpc@v1.30.0", - "pkg:golang/google.golang.org/protobuf@v1.25.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200803210538-64077c9b5642", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200804011535-6c149bb5ef0d", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.32", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200625001655-4c5254603344", - "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200804131852-c06518451d9c", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0" - ] - }, - { - "ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/google.golang.org/grpc@v1.25.1" - ] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "dependsOn": [ - "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.25.1" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.3.3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20210615035016-665e8c7367d1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.0", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/protobuf@v1.21.0" - ] - }, - { - "ref": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/sync@v0.0.0-20181108010431-42b317875d0f" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.23.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.26.0", - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/client9/misspell@v0.3.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/appengine@v1.1.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "pkg:golang/golang.org/x/sync@v0.0.0-20181108010431-42b317875d0f", - "pkg:golang/google.golang.org/appengine@v1.4.0" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.23.1-0.20200526195155-81db48ad09cc", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.4.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.52.0", - "pkg:golang/cloud.google.com/go/storage@v1.5.0", - "pkg:golang/github.com/golang/groupcache@v0.0.0-20200121045136-8c9f03a8e57e", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/exp@v0.0.0-20200119233911-0405dc783f0a", - "pkg:golang/golang.org/x/sys@v0.0.0-20200122134326-e047566fdf82", - "pkg:golang/golang.org/x/tools@v0.0.0-20200122220014-bf1340f18c4a", - "pkg:golang/google.golang.org/api@v0.15.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200122232147-0452cf42e150", - "pkg:golang/google.golang.org/grpc@v1.26.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/datastore@v1.1.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.52.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.2.0", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/exp@v0.0.0-20200207192155-f17229e696bd", - "pkg:golang/golang.org/x/sys@v0.0.0-20200212091648-12a6c2dcc1e4", - "pkg:golang/golang.org/x/tools@v0.0.0-20200212150539-ea181f53ac56", - "pkg:golang/google.golang.org/api@v0.17.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200212174721-66ed5ce911ce", - "pkg:golang/google.golang.org/grpc@v1.27.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/pubsub@v1.2.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.52.0", - "pkg:golang/cloud.google.com/go/bigquery@v1.4.0", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200130185559-910be7a94367", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200202094626-16171245cfb2", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/sys@v0.0.0-20200202164722-d101bd2416d5", - "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0", - "pkg:golang/golang.org/x/tools@v0.0.0-20200204074204-1cc6d1ef6c74", - "pkg:golang/google.golang.org/api@v0.15.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200204135345-fa8e72b47b90", - "pkg:golang/google.golang.org/grpc@v1.27.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.53.0", - "pkg:golang/cloud.google.com/go/datastore@v1.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", - "pkg:golang/golang.org/x/net@v0.0.0-20200222125558-5a598a2470a0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200223170610-d5e6a3e2c0ae", - "pkg:golang/golang.org/x/tools@v0.0.0-20200224181240-023911ca70b2", - "pkg:golang/google.golang.org/api@v0.18.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200224152610-e50cd9704f63", - "pkg:golang/google.golang.org/grpc@v1.27.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - ] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.4.3", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262", - "pkg:golang/rsc.io/quote/v3@v3.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200430221834-fc25d7d30c6d", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/go.opencensus.io@v0.22.3", - "dependsOn": [ - "pkg:golang/github.com/golang/groupcache@v0.0.0-20190702054246-869f871628b6", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/stretchr/testify@v1.4.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb", - "pkg:golang/google.golang.org/grpc@v1.20.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200501053045-e0ff5e5a1de5", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200501052902-10377860bb8e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200501065659-ab2804fb9c9d", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.22.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200430143042-b979b6f78d84", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3", - "dependsOn": [ - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/google/renameio@v0.1.0", - "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0", - "pkg:golang/golang.org/x/mod@v0.0.0-20190513183733-4bf6d317e70e", - "pkg:golang/golang.org/x/tools@v0.0.0-20191130070609-6e064ea0cf2d" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/storage@v1.8.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.57.0", - "pkg:golang/cloud.google.com/go/bigquery@v1.7.0", - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/net@v0.0.0-20200506145744-7e3656a0809f", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200511232937-7e40ca221e25", - "pkg:golang/golang.org/x/tools@v0.0.0-20200512131952-2bc93b1c0c88", - "pkg:golang/google.golang.org/api@v0.24.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200511104702-f5ebc3bea380", - "pkg:golang/google.golang.org/grpc@v1.29.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200513185701-a91f0712d120", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200515095857-1151b9dac4a9", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200515010526-7d3b6ebf133d", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.24.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.56.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d", - "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4", - "pkg:golang/google.golang.org/appengine@v1.6.5", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940", - "pkg:golang/google.golang.org/grpc@v1.28.0", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200515170657-fc4c6c6a6587", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.22.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", - "dependsOn": [ - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/google/renameio@v0.1.0", - "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0", - "pkg:golang/golang.org/x/mod@v0.0.0-20190513183733-4bf6d317e70e", - "pkg:golang/golang.org/x/tools@v0.0.0-20191130070609-6e064ea0cf2d" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.56.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.4.0", - "pkg:golang/cloud.google.com/go/datastore@v1.1.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.2.0", - "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "pkg:golang/github.com/golang/mock@v1.4.3", - "pkg:golang/github.com/golang/protobuf@v1.3.5", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20200229191704-1ebb73c60ed3", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/net@v0.0.0-20200324143707-d3edc9973b7e", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4", - "pkg:golang/google.golang.org/api@v0.20.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940", - "pkg:golang/google.golang.org/grpc@v1.28.0", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.25", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.6.5", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65", - "pkg:golang/golang.org/x/text@v0.3.2" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.28.0", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.26.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/client9/misspell@v0.3.4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20181026193005-c67002cb31c3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20180826012351-8a410e7b638d", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20180830151530-49385e6e1522", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190114222345-bf090417da8b", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20180724234803-3673e40ba225", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200707034311-ab3426394381", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200729194436-6467de6f59a7", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.32", - "pkg:golang/golang.org/x/mod@v0.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200625001655-4c5254603344", - "pkg:golang/golang.org/x/sync@v0.0.0-20200625203802-6e8e738ad208", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.29.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.56.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20200317015054-43a5402ce75a", - "pkg:golang/golang.org/x/sys@v0.0.0-20200331124033-c3d80250170d", - "pkg:golang/golang.org/x/tools@v0.0.0-20200331025713-a30bf2db82d4", - "pkg:golang/google.golang.org/appengine@v1.6.5", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200331122359-1ee6d9798940", - "pkg:golang/google.golang.org/grpc@v1.28.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200729003335-053ba62fc06f", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/google.golang.org/protobuf@v1.24.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.30.0", - "dependsOn": [ - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.25.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.1", - "pkg:golang/github.com/google/go-cmp@v0.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200526211855-cb27e3aa2013" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.25.1", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.0", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.21.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.4.0.20200313231945-b860323f09d0", - "pkg:golang/github.com/google/go-cmp@v0.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20181108010431-42b317875d0f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.52.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.0.1", - "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.0.1", - "pkg:golang/cloud.google.com/go/storage@v1.0.0", - "pkg:golang/github.com/golang/groupcache@v0.0.0-20191227052852-215e87163ea7", - "pkg:golang/github.com/golang/mock@v1.3.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20191218002539-d4f498aebedc", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20191227195350-da58074b4299", - "pkg:golang/golang.org/x/lint@v0.0.0-20191125180803-fdd1cda4f05f", - "pkg:golang/golang.org/x/net@v0.0.0-20200114155413-6afb5195e5aa", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/sys@v0.0.0-20200113162924-86b910548bc1", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20200117161641-43d50277825c", - "pkg:golang/google.golang.org/api@v0.15.0", - "pkg:golang/google.golang.org/appengine@v1.6.5", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200115191322-ca5a22157cba", - "pkg:golang/google.golang.org/grpc@v1.26.0", - "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/storage@v1.5.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.50.0", - "pkg:golang/cloud.google.com/go/bigquery@v1.3.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.1.0", - "pkg:golang/github.com/golang/groupcache@v0.0.0-20191227052852-215e87163ea7", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.1", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20191227195350-da58074b4299", - "pkg:golang/golang.org/x/net@v0.0.0-20191209160850-c0dbc17a3553", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20191202225959-858c2ad4c8b6", - "pkg:golang/golang.org/x/sys@v0.0.0-20191228213918-04cbcbbfeed8", - "pkg:golang/golang.org/x/tools@v0.0.0-20191227053925-7b8e75db28f4", - "pkg:golang/google.golang.org/api@v0.15.0", - "pkg:golang/google.golang.org/appengine@v1.6.5", - "pkg:golang/google.golang.org/genproto@v0.0.0-20191230161307-f3c370f40bfb", - "pkg:golang/google.golang.org/grpc@v1.26.0" - ] - }, - { - "ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20200121045136-8c9f03a8e57e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200119233911-0405dc783f0a", - "dependsOn": [ - "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.0", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200122134326-e047566fdf82", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200122220014-bf1340f18c4a", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.15.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "pkg:golang/google.golang.org/grpc@v1.20.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200122232147-0452cf42e150", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.26.0", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.1-0.20191026205805-5f8ba28d4473", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200207192155-f17229e696bd", - "dependsOn": [ - "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "pkg:golang/golang.org/x/tools@v0.0.0-20200207183749-b753a1ba74fa" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200212091648-12a6c2dcc1e4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200212150539-ea181f53ac56", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.17.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200212174721-66ed5ce911ce", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.27.1", - "dependsOn": [ - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.1-0.20191026205805-5f8ba28d4473", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20200130185559-910be7a94367", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20200130002326-2f3ba24bd6e7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200202094626-16171245cfb2", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200202164722-d101bd2416d5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200204074204-1cc6d1ef6c74", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200204135345-fa8e72b47b90", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.53.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.3.0", - "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.1.0", - "pkg:golang/cloud.google.com/go/storage@v1.5.0", - "pkg:golang/github.com/golang/groupcache@v0.0.0-20200121045136-8c9f03a8e57e", - "pkg:golang/github.com/golang/mock@v1.4.0", - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20200212024743-f11f1df84d12", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/exp@v0.0.0-20200207192155-f17229e696bd", - "pkg:golang/golang.org/x/lint@v0.0.0-20200130185559-910be7a94367", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200202094626-16171245cfb2", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200212091648-12a6c2dcc1e4", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20200212150539-ea181f53ac56", - "pkg:golang/google.golang.org/api@v0.17.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200212174721-66ed5ce911ce", - "pkg:golang/google.golang.org/grpc@v1.27.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", - "dependsOn": [ - "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191107180719-034126e5016b", - "pkg:golang/golang.org/x/sys@v0.0.0-20191001151750-bb3f8db39f24", - "pkg:golang/golang.org/x/tools@v0.0.0-20200207183749-b753a1ba74fa", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200222125558-5a598a2470a0", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200223170610-d5e6a3e2c0ae", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200224181240-023911ca70b2", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.18.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200224152610-e50cd9704f63", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/rsc.io/quote/v3@v3.1.0", - "dependsOn": [ - "pkg:golang/rsc.io/sampler@v1.3.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.38.0", - "dependsOn": [ - "pkg:golang/github.com/golang/mock@v1.2.0", - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/github.com/google/btree@v0.0.0-20180813153112-4030bb1f1f0c", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20181206194817-3ea8567a2e57", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.4", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190301231843-5614ed5bae6f", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190226205417-e64efc72b421", - "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "pkg:golang/golang.org/x/text@v0.3.1-0.20180807135948-17ff2d5776d2", - "pkg:golang/golang.org/x/time@v0.0.0-20181108054448-85acf8d2951c", - "pkg:golang/golang.org/x/tools@v0.0.0-20190312170243-e65039ee4138", - "pkg:golang/google.golang.org/api@v0.4.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190418145605-e7d98fc518a7", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190106161140-3f1c8253044a" - ] - }, - { - "ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/go.opencensus.io@v0.21.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190307195333-5fe7a883aa19", - "pkg:golang/google.golang.org/grpc@v1.19.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.34.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e", - "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4", - "pkg:golang/google.golang.org/appengine@v1.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.5.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20180724234803-3673e40ba225", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/renameio@v0.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0", - "dependsOn": [ - "pkg:golang/gopkg.in/errgo.v2@v2.1.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.0.0-20190513183733-4bf6d317e70e", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190510104115-cbcb75029529" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191130070609-6e064ea0cf2d", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.7.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.56.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", - "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "pkg:golang/github.com/golang/protobuf@v1.4.0", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/net@v0.0.0-20200501053045-e0ff5e5a1de5", - "pkg:golang/golang.org/x/sys@v0.0.0-20200501052902-10377860bb8e", - "pkg:golang/golang.org/x/tools@v0.0.0-20200501065659-ab2804fb9c9d", - "pkg:golang/google.golang.org/api@v0.22.0", - "pkg:golang/google.golang.org/appengine@v1.6.6", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200430143042-b979b6f78d84", - "pkg:golang/google.golang.org/grpc@v1.29.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200506145744-7e3656a0809f", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200511232937-7e40ca221e25", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200512131952-2bc93b1c0c88", - "dependsOn": [ - "pkg:golang/github.com/yuin/goldmark@v1.1.27", - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200511104702-f5ebc3bea380", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.3.5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200229191704-1ebb73c60ed3", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200324143707-d3edc9973b7e", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20200323222414-85ca7c5b95cd", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.20.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/github.com/yuin/goldmark@v1.1.25", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.0", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.0", - "dependsOn": [ - "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.23.0" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.4.0.20200313231945-b860323f09d0", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/protobuf@v1.20.1-0.20200309200217-e05f789c0967" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.0.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.44.2", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/google.golang.org/api@v0.8.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64", - "pkg:golang/google.golang.org/grpc@v1.21.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.44.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/sys@v0.0.0-20190624142023-c5567b49c5d0", - "pkg:golang/google.golang.org/api@v0.7.0", - "pkg:golang/google.golang.org/appengine@v1.6.1", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64", - "pkg:golang/google.golang.org/grpc@v1.21.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/pubsub@v1.0.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.45.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "pkg:golang/google.golang.org/api@v0.9.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.21.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/storage@v1.0.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.46.3", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/google.golang.org/api@v0.9.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190911173649-1774047e7e51", - "pkg:golang/google.golang.org/grpc@v1.21.1" - ] - }, - { - "ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20191227052852-215e87163ea7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.3.1", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262" - ] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20191218002539-d4f498aebedc", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/go.opencensus.io@v0.22.2", - "dependsOn": [ - "pkg:golang/github.com/golang/groupcache@v0.0.0-20190702054246-869f871628b6", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/stretchr/testify@v1.4.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb", - "pkg:golang/google.golang.org/grpc@v1.20.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20191227195350-da58074b4299", - "dependsOn": [ - "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.0", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20191125180803-fdd1cda4f05f", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20191125144606-a911d9008d1f" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200114155413-6afb5195e5aa", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200113162924-86b910548bc1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200117161641-43d50277825c", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200115191322-ca5a22157cba", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3", - "dependsOn": [ - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/google/renameio@v0.1.0", - "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "pkg:golang/github.com/rogpeppe/go-internal@v1.3.0", - "pkg:golang/golang.org/x/mod@v0.0.0-20190513183733-4bf6d317e70e", - "pkg:golang/golang.org/x/tools@v0.0.0-20190621195816-6e04913cbbac" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.50.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.0.1", - "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.0.1", - "pkg:golang/cloud.google.com/go/storage@v1.0.0", - "pkg:golang/github.com/golang/mock@v1.3.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20191129062945-2f5052295587", - "pkg:golang/golang.org/x/lint@v0.0.0-20191125180803-fdd1cda4f05f", - "pkg:golang/golang.org/x/net@v0.0.0-20190724013045-ca1201d0de80", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/sys@v0.0.0-20190726091711-fc99dfbffb4e", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20191216173652-a0e659d51361", - "pkg:golang/google.golang.org/api@v0.14.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20191216164720-4f79533eabd1", - "pkg:golang/google.golang.org/grpc@v1.21.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.3.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.46.3", - "pkg:golang/cloud.google.com/go/storage@v1.0.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/exp@v0.0.0-20191030013958-a1ab85dbe136", - "pkg:golang/golang.org/x/lint@v0.0.0-20190930215403-16217165b5de", - "pkg:golang/golang.org/x/tools@v0.0.0-20191113191852-77e3bb0ad9e7", - "pkg:golang/google.golang.org/api@v0.13.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20191108220845-16a3f7862a1a", - "pkg:golang/google.golang.org/grpc@v1.21.1" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/pubsub@v1.1.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.46.3", - "pkg:golang/cloud.google.com/go/storage@v1.0.0", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20191030013958-a1ab85dbe136", - "pkg:golang/golang.org/x/lint@v0.0.0-20190930215403-16217165b5de", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "pkg:golang/golang.org/x/tools@v0.0.0-20191115202509-3a792d9c32b2", - "pkg:golang/google.golang.org/api@v0.14.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20191115194625-c23dd37a84c9", - "pkg:golang/google.golang.org/grpc@v1.21.1" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.3.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20191209160850-c0dbc17a3553", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20191202225959-858c2ad4c8b6", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.34.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e", - "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4", - "pkg:golang/google.golang.org/appengine@v1.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191228213918-04cbcbbfeed8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191227053925-7b8e75db28f4", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191230161307-f3c370f40bfb", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "dependsOn": [ - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "dependsOn": [ - "pkg:golang/golang.org/x/exp@v0.0.0-20190306152737-a1d7652674e8", - "pkg:golang/golang.org/x/image@v0.0.0-20190227222117-0694c2d4d067", - "pkg:golang/golang.org/x/sys@v0.0.0-20190312061237-fead79001313" - ] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.1.0", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190510104115-cbcb75029529" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200207183749-b753a1ba74fa", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.4.0", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262", - "pkg:golang/rsc.io/quote/v3@v3.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200212024743-f11f1df84d12", - "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", - "pkg:golang/golang.org/x/sys@v0.0.0-20191204072324-ce4227a45e2e" - ] - }, - { - "ref": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/mod@v0.1.1-0.20191107180719-034126e5016b", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20191011191535-87dc89f01550", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20191001151750-bb3f8db39f24", - "dependsOn": [] - }, - { - "ref": "pkg:golang/rsc.io/sampler@v1.3.0", - "dependsOn": [ - "pkg:golang/golang.org/x/text@v0.0.0-20170915032832-14c0d48ead0c" - ] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/btree@v0.0.0-20180813153112-4030bb1f1f0c", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20181206194817-3ea8567a2e57", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.4", - "dependsOn": [ - "pkg:golang/google.golang.org/grpc@v1.19.0" - ] - }, - { - "ref": "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190301231843-5614ed5bae6f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20190226205417-e64efc72b421", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.34.0", - "pkg:golang/golang.org/x/net@v0.0.0-20190108225652-1e06a53dbb7e", - "pkg:golang/golang.org/x/sync@v0.0.0-20181221193216-37e7f081c4d4", - "pkg:golang/google.golang.org/appengine@v1.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.1-0.20180807135948-17ff2d5776d2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/time@v0.0.0-20181108054448-85acf8d2951c", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190312170243-e65039ee4138", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.4.0", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190301231843-5614ed5bae6f", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190226205417-e64efc72b421", - "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "pkg:golang/golang.org/x/tools@v0.0.0-20190312170243-e65039ee4138", - "pkg:golang/google.golang.org/appengine@v1.4.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190307195333-5fe7a883aa19", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190418145605-e7d98fc518a7", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/honnef.co/go/tools@v0.0.0-20190106161140-3f1c8253044a", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190307195333-5fe7a883aa19", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd", - "pkg:golang/golang.org/x/sync@v0.0.0-20190227155943-e225da77a7e6", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/gopkg.in/errgo.v2@v2.1.0", - "dependsOn": [ - "pkg:golang/github.com/kr/pretty@v0.1.0", - "pkg:golang/gopkg.in/check.v1@v1.0.0-20180628173108-788fd7840127" - ] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190510104115-cbcb75029529", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.54.0", - "pkg:golang/cloud.google.com/go/bigquery@v1.5.0", - "pkg:golang/github.com/golang/protobuf@v1.3.4", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0", - "pkg:golang/golang.org/x/tools@v0.0.0-20200312045724-11d5b4c81c7d", - "pkg:golang/google.golang.org/api@v0.20.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200312145019-da6875a35672", - "pkg:golang/google.golang.org/grpc@v1.28.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.20.1-0.20200309200217-e05f789c0967", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.2", - "pkg:golang/github.com/google/go-cmp@v0.4.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.44.2", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "pkg:golang/github.com/golang/mock@v1.3.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/btree@v1.0.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190510132918-efd6b22b2522", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "pkg:golang/golang.org/x/tools@v0.0.0-20190628153133-6cdbf07be9d0", - "pkg:golang/google.golang.org/api@v0.8.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64", - "pkg:golang/google.golang.org/grpc@v1.21.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a", - "pkg:golang/rsc.io/binaryregexp@v0.2.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.8.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "pkg:golang/google.golang.org/grpc@v1.20.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.21.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.26.0", - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/client9/misspell@v0.3.4", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/mock@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.2.0", - "pkg:golang/github.com/google/go-cmp@v0.2.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be", - "pkg:golang/golang.org/x/sync@v0.0.0-20180314180146-1d60e4601c6f", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd", - "pkg:golang/google.golang.org/appengine@v1.1.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20180817151627-c66870c02cf8", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.44.1", - "dependsOn": [ - "pkg:golang/github.com/golang/mock@v1.3.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/btree@v1.0.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190510132918-efd6b22b2522", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190624142023-c5567b49c5d0", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "pkg:golang/golang.org/x/tools@v0.0.0-20190628153133-6cdbf07be9d0", - "pkg:golang/google.golang.org/api@v0.8.0", - "pkg:golang/google.golang.org/appengine@v1.6.1", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190801165951-fa694d86fc64", - "pkg:golang/google.golang.org/grpc@v1.21.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a", - "pkg:golang/rsc.io/binaryregexp@v0.2.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190624142023-c5567b49c5d0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.7.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "pkg:golang/google.golang.org/grpc@v1.20.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.6.1", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/golang.org/x/crypto@v0.0.0-20190605123033-f99c8df09eb5", - "pkg:golang/golang.org/x/net@v0.0.0-20190603091049-60506f45cf65", - "pkg:golang/golang.org/x/sys@v0.0.0-20190606165138-5da285871e9c", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190606124116-d0a3d012864b" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.45.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.0.1", - "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "pkg:golang/github.com/golang/mock@v1.3.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190510132918-efd6b22b2522", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "pkg:golang/golang.org/x/tools@v0.0.0-20190628153133-6cdbf07be9d0", - "pkg:golang/google.golang.org/api@v0.9.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.21.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/go.opencensus.io@v0.22.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/golang.org/x/net@v0.0.0-20190501004415-9ce7a6920f09", - "pkg:golang/golang.org/x/sys@v0.0.0-20190502145724-3ef323f4f1fd", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190425155659-357c62f0e4bb", - "pkg:golang/google.golang.org/grpc@v1.20.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.9.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "pkg:golang/google.golang.org/grpc@v1.20.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.46.3", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.0.1", - "pkg:golang/cloud.google.com/go/datastore@v1.0.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.0.1", - "pkg:golang/github.com/golang/mock@v1.3.1", - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.0.0-20190106144839-af01ea7f8024", - "pkg:golang/go.opencensus.io@v0.22.0", - "pkg:golang/golang.org/x/exp@v0.0.0-20190829153037-c13cbed26979", - "pkg:golang/golang.org/x/lint@v0.0.0-20190909230951-414d861bb4ac", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190911174233-4f2ddba30aff", - "pkg:golang/google.golang.org/api@v0.9.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190911173649-1774047e7e51", - "pkg:golang/google.golang.org/grpc@v1.21.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2019.2.3" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20190911173649-1774047e7e51", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191125144606-a911d9008d1f", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190621195816-6e04913cbbac", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - ] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20190515194954-54271f7e092f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20191129062945-2f5052295587", - "dependsOn": [ - "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20191125211704-12ad95a8df72", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.0", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190724013045-ca1201d0de80", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190726091711-fc99dfbffb4e", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191216173652-a0e659d51361", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.14.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "pkg:golang/google.golang.org/grpc@v1.20.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191216164720-4f79533eabd1", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20191030013958-a1ab85dbe136", - "dependsOn": [ - "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.0", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "pkg:golang/golang.org/x/tools@v0.0.0-20191012152004-8de300cfc20a" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190930215403-16217165b5de", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191113191852-77e3bb0ad9e7", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.13.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/golang/protobuf@v1.3.1", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190506145303-2d16b83fe98c", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190502173448-54afdca5d873", - "pkg:golang/google.golang.org/grpc@v1.20.1", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190418001031-e561f6794a2a" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191108220845-16a3f7862a1a", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20191115202509-3a792d9c32b2", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20191115194625-c23dd37a84c9", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.2", - "pkg:golang/golang.org/x/exp@v0.0.0-20190121172915-509febef88a4", - "pkg:golang/golang.org/x/lint@v0.0.0-20190227174305-5b3e6a55c961", - "pkg:golang/golang.org/x/tools@v0.0.0-20190226205152-f727befe758c", - "pkg:golang/google.golang.org/grpc@v1.19.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190102054323-c2f93a96b099" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190306152737-a1d7652674e8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/image@v0.0.0-20190227222117-0694c2d4d067", - "dependsOn": [ - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190312061237-fead79001313", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.0.0-20170915032832-14c0d48ead0c", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.54.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/bigquery@v1.4.0", - "pkg:golang/cloud.google.com/go/datastore@v1.1.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.2.0", - "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "pkg:golang/github.com/golang/mock@v1.4.1", - "pkg:golang/github.com/golang/protobuf@v1.3.4", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/github.com/google/pprof@v0.0.0-20200229191704-1ebb73c60ed3", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/go.opencensus.io@v0.22.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", - "pkg:golang/golang.org/x/net@v0.0.0-20200301022130-244492dfa37a", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20200107190931-bf48bf16ab8d", - "pkg:golang/golang.org/x/sys@v0.0.0-20200302150141-5c8b2ff67527", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20200304193943-95d2e580d8eb", - "pkg:golang/google.golang.org/api@v0.20.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200305110556-506484158171", - "pkg:golang/google.golang.org/grpc@v1.27.1", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.3" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.5.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.53.0", - "pkg:golang/cloud.google.com/go/storage@v1.6.0", - "pkg:golang/github.com/golang/protobuf@v1.3.4", - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/tools@v0.0.0-20200227222343-706bc42d1f0d", - "pkg:golang/google.golang.org/api@v0.19.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20200228133532-8c2c7df3a383", - "pkg:golang/google.golang.org/grpc@v1.27.1" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.3.4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200312045724-11d5b4c81c7d", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200312145019-da6875a35672", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.2", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/protobuf@v0.0.0-20200228230310-ab0ca4ff8a60" - ] - }, - { - "ref": "pkg:golang/github.com/google/btree@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190510132918-efd6b22b2522", - "dependsOn": [ - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/golang.org/x/image@v0.0.0-20190227222117-0694c2d4d067", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190312151609-d3739f865fa6", - "pkg:golang/golang.org/x/sys@v0.0.0-20190312061237-fead79001313", - "pkg:golang/golang.org/x/tools@v0.0.0-20190312151545-0bb0c0a6e846" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190628153133-6cdbf07be9d0", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - ] - }, - { - "ref": "pkg:golang/rsc.io/binaryregexp@v0.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/crypto@v0.0.0-20190605123033-f99c8df09eb5", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20190606165138-5da285871e9c", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190606124116-d0a3d012864b", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20190501004415-9ce7a6920f09", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20190829153037-c13cbed26979", - "dependsOn": [ - "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", - "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "pkg:golang/golang.org/x/mod@v0.1.0", - "pkg:golang/golang.org/x/sys@v0.0.0-20190412213103-97732733099d", - "pkg:golang/golang.org/x/tools@v0.0.0-20190816200558-6889da9d5479" - ] - }, - { - "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20190909230951-414d861bb4ac", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190311212946-11955173bddd" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190911174233-4f2ddba30aff", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/mock@v1.4.1", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.0.0-20190425150028-36563e24a262", - "pkg:golang/rsc.io/quote/v3@v3.1.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20200301022130-244492dfa37a", - "dependsOn": [ - "pkg:golang/golang.org/x/crypto@v0.0.0-20190308221718-c2843e01d9a2", - "pkg:golang/golang.org/x/sys@v0.0.0-20190215142949-d0b11bdaac8a", - "pkg:golang/golang.org/x/text@v0.3.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.0.0-20200302150141-5c8b2ff67527", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200304193943-95d2e580d8eb", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.2.0", - "pkg:golang/golang.org/x/net@v0.0.0-20200226121028-0de0cce0169b", - "pkg:golang/golang.org/x/sync@v0.0.0-20190911185100-cd5d95a43a6e", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191204190536-9bdfabe68543" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200305110556-506484158171", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20200227222343-706bc42d1f0d", - "dependsOn": [ - "pkg:golang/golang.org/x/mod@v0.1.1-0.20191105210325-c90efee705ee", - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20191011141410-1b5146add898" - ] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.19.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.38.0", - "pkg:golang/github.com/google/go-cmp@v0.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", - "pkg:golang/go.opencensus.io@v0.21.0", - "pkg:golang/golang.org/x/lint@v0.0.0-20190409202823-959b441ac422", - "pkg:golang/golang.org/x/net@v0.0.0-20190503192946-f4e77d36d62c", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/sys@v0.0.0-20190507160741-ecd444e8653b", - "pkg:golang/golang.org/x/text@v0.3.2", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/appengine@v1.5.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20200228133532-8c2c7df3a383", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.3.3", - "pkg:golang/golang.org/x/lint@v0.0.0-20190313153728-d0100b6bd8b3", - "pkg:golang/golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135", - "pkg:golang/google.golang.org/grpc@v1.27.0", - "pkg:golang/honnef.co/go/tools@v0.0.0-20190523083050-ea95bdfd59fc" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200228230310-ab0ca4ff8a60", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1.0.20200221234624-67d41d38c208", - "pkg:golang/github.com/google/go-cmp@v0.4.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/mobile@v0.0.0-20190312151609-d3739f865fa6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190312151545-0bb0c0a6e846", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190311183353-d8887717615a" - ] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20190816200558-6889da9d5479", - "dependsOn": [ - "pkg:golang/golang.org/x/net@v0.0.0-20190620200207-3b0461eec859", - "pkg:golang/golang.org/x/sync@v0.0.0-20190423024810-112230192c58", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20190717185122-a985d3407aa7" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1.0.20200221234624-67d41d38c208", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.4.0", - "pkg:golang/google.golang.org/protobuf@v0.0.0-20200221191635-4d8936d0db64" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200221191635-4d8936d0db64", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1", - "pkg:golang/github.com/google/go-cmp@v0.3.1" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.4.0-rc.1", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.3.1", - "pkg:golang/google.golang.org/protobuf@v0.0.0-20200109180630-ec00e32a8dfd" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v0.0.0-20200109180630-ec00e32a8dfd", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.3.0" - ] - } - ] -} + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "group": "github.com/RHEcosystemAppEng/SaaSi", + "name": "deployer", + "version": "v0.0.0", + "purl": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", + "type": "application", + "bom-ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0" + } + }, + "components": [ + { + "group": "github.com/RHEcosystemAppEng/SaaSi", + "name": "deployer", + "version": "v0.0.0", + "purl": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", + "type": "application", + "bom-ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0" + }, + { + "group": "github.com/davecgh", + "name": "go-spew", + "version": "v1.1.1", + "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1" + }, + { + "group": "github.com/emicklei/go-restful", + "name": "v3", + "version": "v3.9.0", + "purl": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0" + }, + { + "group": "github.com/gin-gonic", + "name": "gin", + "version": "v1.9.1", + "purl": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1" + }, + { + "group": "github.com/go-openapi", + "name": "jsonpointer", + "version": "v0.19.5", + "purl": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5" + }, + { + "group": "github.com/go-openapi", + "name": "jsonreference", + "version": "v0.20.0", + "purl": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0" + }, + { + "group": "github.com/go-openapi", + "name": "swag", + "version": "v0.19.14", + "purl": "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14" + }, + { + "group": "github.com/gogo", + "name": "protobuf", + "version": "v1.3.2", + "purl": "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2" + }, + { + "group": "github.com/golang", + "name": "protobuf", + "version": "v1.5.2", + "purl": "pkg:golang/github.com/golang/protobuf@v1.5.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.2" + }, + { + "group": "github.com/google", + "name": "go-cmp", + "version": "v0.5.9", + "purl": "pkg:golang/github.com/google/go-cmp@v0.5.9", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.9" + }, + { + "group": "github.com/google", + "name": "gofuzz", + "version": "v1.1.0", + "purl": "pkg:golang/github.com/google/gofuzz@v1.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/gofuzz@v1.1.0" + }, + { + "group": "github.com/google", + "name": "uuid", + "version": "v1.1.2", + "purl": "pkg:golang/github.com/google/uuid@v1.1.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/uuid@v1.1.2" + }, + { + "group": "github.com/imdario", + "name": "mergo", + "version": "v0.3.6", + "purl": "pkg:golang/github.com/imdario/mergo@v0.3.6", + "type": "library", + "bom-ref": "pkg:golang/github.com/imdario/mergo@v0.3.6" + }, + { + "group": "github.com/josharian", + "name": "intern", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/josharian/intern@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/josharian/intern@v1.0.0" + }, + { + "group": "github.com/json-iterator", + "name": "go", + "version": "v1.1.12", + "purl": "pkg:golang/github.com/json-iterator/go@v1.1.12", + "type": "library", + "bom-ref": "pkg:golang/github.com/json-iterator/go@v1.1.12" + }, + { + "group": "github.com/kr", + "name": "pretty", + "version": "v0.3.1", + "purl": "pkg:golang/github.com/kr/pretty@v0.3.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/kr/pretty@v0.3.1" + }, + { + "group": "github.com/kr", + "name": "text", + "version": "v0.2.0", + "purl": "pkg:golang/github.com/kr/text@v0.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/kr/text@v0.2.0" + }, + { + "group": "github.com/mailru", + "name": "easyjson", + "version": "v0.7.6", + "purl": "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "type": "library", + "bom-ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6" + }, + { + "group": "github.com/modern-go", + "name": "concurrent", + "version": "v0.0.0-20180306012644-bacd9c7ef1dd", + "purl": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "type": "library", + "bom-ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" + }, + { + "group": "github.com/modern-go", + "name": "reflect2", + "version": "v1.0.2", + "purl": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2" + }, + { + "group": "github.com/munnerz", + "name": "goautoneg", + "version": "v0.0.0-20191010083416-a7dc8b61c822", + "purl": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "type": "library", + "bom-ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822" + }, + { + "group": "github.com/rogpeppe", + "name": "go-internal", + "version": "v1.9.0", + "purl": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" + }, + { + "group": "github.com/spf13", + "name": "pflag", + "version": "v1.0.5", + "purl": "pkg:golang/github.com/spf13/pflag@v1.0.5", + "type": "library", + "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.5" + }, + { + "group": "golang.org/x", + "name": "net", + "version": "v0.10.0", + "purl": "pkg:golang/golang.org/x/net@v0.10.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/net@v0.10.0" + }, + { + "group": "golang.org/x", + "name": "oauth2", + "version": "v0.0.0-20220223155221-ee480838109b", + "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b" + }, + { + "group": "golang.org/x", + "name": "sys", + "version": "v0.8.0", + "purl": "pkg:golang/golang.org/x/sys@v0.8.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/sys@v0.8.0" + }, + { + "group": "golang.org/x", + "name": "term", + "version": "v0.8.0", + "purl": "pkg:golang/golang.org/x/term@v0.8.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/term@v0.8.0" + }, + { + "group": "golang.org/x", + "name": "text", + "version": "v0.9.0", + "purl": "pkg:golang/golang.org/x/text@v0.9.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/text@v0.9.0" + }, + { + "group": "golang.org/x", + "name": "time", + "version": "v0.0.0-20220210224613-90d013bbcef8", + "purl": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8" + }, + { + "group": "google.golang.org", + "name": "appengine", + "version": "v1.6.7", + "purl": "pkg:golang/google.golang.org/appengine@v1.6.7", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.7" + }, + { + "group": "google.golang.org", + "name": "protobuf", + "version": "v1.30.0", + "purl": "pkg:golang/google.golang.org/protobuf@v1.30.0", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.30.0" + }, + { + "group": "gopkg.in", + "name": "inf.v0", + "version": "v0.9.1", + "purl": "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1" + }, + { + "group": "gopkg.in", + "name": "yaml.v2", + "version": "v2.4.0", + "purl": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0" + }, + { + "group": "gopkg.in", + "name": "yaml.v3", + "version": "v3.0.1", + "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1" + }, + { + "group": "k8s.io", + "name": "api", + "version": "v0.26.1", + "purl": "pkg:golang/k8s.io/api@v0.26.1", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/api@v0.26.1" + }, + { + "group": "k8s.io", + "name": "apimachinery", + "version": "v0.26.1", + "purl": "pkg:golang/k8s.io/apimachinery@v0.26.1", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/apimachinery@v0.26.1" + }, + { + "group": "k8s.io", + "name": "client-go", + "version": "v0.26.1", + "purl": "pkg:golang/k8s.io/client-go@v0.26.1", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/client-go@v0.26.1" + }, + { + "group": "k8s.io/klog", + "name": "v2", + "version": "v2.80.1", + "purl": "pkg:golang/k8s.io/klog/v2@v2.80.1", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/klog/v2@v2.80.1" + }, + { + "group": "k8s.io", + "name": "kube-openapi", + "version": "v0.0.0-20221012153701-172d655c2280", + "purl": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280" + }, + { + "group": "k8s.io", + "name": "utils", + "version": "v0.0.0-20221107191617-1a15be271d1d", + "purl": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d" + }, + { + "group": "sigs.k8s.io", + "name": "json", + "version": "v0.0.0-20220713155537-f223a00ba0e2", + "purl": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "type": "library", + "bom-ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2" + }, + { + "group": "sigs.k8s.io/structured-merge-diff", + "name": "v4", + "version": "v4.2.3", + "purl": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "type": "library", + "bom-ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3" + }, + { + "group": "sigs.k8s.io", + "name": "yaml", + "version": "v1.3.0", + "purl": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "type": "library", + "bom-ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0" + }, + { + "group": "github.com/bytedance", + "name": "sonic", + "version": "v1.9.1", + "purl": "pkg:golang/github.com/bytedance/sonic@v1.9.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/bytedance/sonic@v1.9.1" + }, + { + "group": "github.com/gin-contrib", + "name": "sse", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/gin-contrib/sse@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/gin-contrib/sse@v0.1.0" + }, + { + "group": "github.com/go-playground/validator", + "name": "v10", + "version": "v10.14.0", + "purl": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0" + }, + { + "group": "github.com/goccy", + "name": "go-json", + "version": "v0.10.2", + "purl": "pkg:golang/github.com/goccy/go-json@v0.10.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/goccy/go-json@v0.10.2" + }, + { + "group": "github.com/mattn", + "name": "go-isatty", + "version": "v0.0.19", + "purl": "pkg:golang/github.com/mattn/go-isatty@v0.0.19", + "type": "library", + "bom-ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.19" + }, + { + "group": "github.com/pelletier/go-toml", + "name": "v2", + "version": "v2.0.8", + "purl": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", + "type": "library", + "bom-ref": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8" + }, + { + "group": "github.com/stretchr", + "name": "testify", + "version": "v1.8.3", + "purl": "pkg:golang/github.com/stretchr/testify@v1.8.3", + "type": "library", + "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.8.3" + }, + { + "group": "github.com/ugorji/go", + "name": "codec", + "version": "v1.2.11", + "purl": "pkg:golang/github.com/ugorji/go/codec@v1.2.11", + "type": "library", + "bom-ref": "pkg:golang/github.com/ugorji/go/codec@v1.2.11" + }, + { + "group": "github.com/chenzhuoyu", + "name": "base64x", + "version": "v0.0.0-20221115062448-fe3a3abad311", + "purl": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", + "type": "library", + "bom-ref": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311" + }, + { + "group": "github.com/gabriel-vasile", + "name": "mimetype", + "version": "v1.4.2", + "purl": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2" + }, + { + "group": "github.com/go-playground", + "name": "locales", + "version": "v0.14.1", + "purl": "pkg:golang/github.com/go-playground/locales@v0.14.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-playground/locales@v0.14.1" + }, + { + "group": "github.com/go-playground", + "name": "universal-translator", + "version": "v0.18.1", + "purl": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1" + }, + { + "group": "github.com/klauspost/cpuid", + "name": "v2", + "version": "v2.2.4", + "purl": "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", + "type": "library", + "bom-ref": "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4" + }, + { + "group": "github.com/leodido", + "name": "go-urn", + "version": "v1.2.4", + "purl": "pkg:golang/github.com/leodido/go-urn@v1.2.4", + "type": "library", + "bom-ref": "pkg:golang/github.com/leodido/go-urn@v1.2.4" + }, + { + "group": "github.com/pmezard", + "name": "go-difflib", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0" + }, + { + "group": "github.com/twitchyliquid64", + "name": "golang-asm", + "version": "v0.15.1", + "purl": "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1" + }, + { + "group": "golang.org/x", + "name": "arch", + "version": "v0.3.0", + "purl": "pkg:golang/golang.org/x/arch@v0.3.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/arch@v0.3.0" + }, + { + "group": "golang.org/x", + "name": "crypto", + "version": "v0.9.0", + "purl": "pkg:golang/golang.org/x/crypto@v0.9.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/crypto@v0.9.0" + }, + { + "group": "github.com/niemeyer", + "name": "pretty", + "version": "v0.0.0-20200227124842-a10e7caefd8e", + "purl": "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", + "type": "library", + "bom-ref": "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e" + }, + { + "group": "gopkg.in", + "name": "check.v1", + "version": "v1.0.0-20200227125254-8fa46927fb4f", + "purl": "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" + }, + { + "group": "github.com/kisielk", + "name": "errcheck", + "version": "v1.5.0", + "purl": "pkg:golang/github.com/kisielk/errcheck@v1.5.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/kisielk/errcheck@v1.5.0" + }, + { + "group": "github.com/kisielk", + "name": "gotool", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/kisielk/gotool@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/kisielk/gotool@v1.0.0" + }, + { + "group": "golang.org/x", + "name": "tools", + "version": "v0.6.0", + "purl": "pkg:golang/golang.org/x/tools@v0.6.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/tools@v0.6.0" + }, + { + "group": "github.com/docopt", + "name": "docopt-go", + "version": "v0.0.0-20180111231733-ee0de3bc6815", + "purl": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", + "type": "library", + "bom-ref": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815" + }, + { + "group": "github.com/stoewer", + "name": "go-strcase", + "version": "v1.2.0", + "purl": "pkg:golang/github.com/stoewer/go-strcase@v1.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/stoewer/go-strcase@v1.2.0" + }, + { + "group": "golang.org/x", + "name": "xerrors", + "version": "v0.0.0-20200804184101-5ec99f83aff1", + "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + }, + { + "group": "google.golang.org", + "name": "genproto", + "version": "v0.0.0-20201019141844-1ed22bb0c154", + "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154" + }, + { + "group": "github.com/creack", + "name": "pty", + "version": "v1.1.9", + "purl": "pkg:golang/github.com/creack/pty@v1.1.9", + "type": "library", + "bom-ref": "pkg:golang/github.com/creack/pty@v1.1.9" + }, + { + "group": "github.com/pkg", + "name": "diff", + "version": "v0.0.0-20210226163009-20ebb0f2a09e", + "purl": "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e", + "type": "library", + "bom-ref": "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e" + }, + { + "group": "cloud.google.com", + "name": "go", + "version": "v0.65.0", + "purl": "pkg:golang/cloud.google.com/go@v0.65.0", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go@v0.65.0" + }, + { + "group": "golang.org/x", + "name": "mod", + "version": "v0.8.0", + "purl": "pkg:golang/golang.org/x/mod@v0.8.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/mod@v0.8.0" + }, + { + "group": "github.com/armon", + "name": "go-socks5", + "version": "v0.0.0-20160902184237-e75332964ef5", + "purl": "pkg:golang/github.com/armon/go-socks5@v0.0.0-20160902184237-e75332964ef5", + "type": "library", + "bom-ref": "pkg:golang/github.com/armon/go-socks5@v0.0.0-20160902184237-e75332964ef5" + }, + { + "group": "github.com/elazarl", + "name": "goproxy", + "version": "v0.0.0-20180725130230-947c36da3153", + "purl": "pkg:golang/github.com/elazarl/goproxy@v0.0.0-20180725130230-947c36da3153", + "type": "library", + "bom-ref": "pkg:golang/github.com/elazarl/goproxy@v0.0.0-20180725130230-947c36da3153" + }, + { + "group": "github.com/evanphx", + "name": "json-patch", + "version": "v4.12.0+incompatible", + "purl": "pkg:golang/github.com/evanphx/json-patch@v4.12.0%2Bincompatible", + "type": "library", + "bom-ref": "pkg:golang/github.com/evanphx/json-patch@v4.12.0%2Bincompatible" + }, + { + "group": "github.com/moby", + "name": "spdystream", + "version": "v0.2.0", + "purl": "pkg:golang/github.com/moby/spdystream@v0.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/moby/spdystream@v0.2.0" + }, + { + "group": "github.com/mxk", + "name": "go-flowrate", + "version": "v0.0.0-20140419014527-cca7078d478f", + "purl": "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f", + "type": "library", + "bom-ref": "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f" + }, + { + "group": "github.com/onsi/ginkgo", + "name": "v2", + "version": "v2.4.0", + "purl": "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0" + }, + { + "group": "github.com/onsi", + "name": "gomega", + "version": "v1.23.0", + "purl": "pkg:golang/github.com/onsi/gomega@v1.23.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/onsi/gomega@v1.23.0" + }, + { + "group": "github.com/pkg", + "name": "errors", + "version": "v0.9.1", + "purl": "pkg:golang/github.com/pkg/errors@v0.9.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/pkg/errors@v0.9.1" + }, + { + "group": "github.com/golang", + "name": "groupcache", + "version": "v0.0.0-20210331224755-41bb18bfe9da", + "purl": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "type": "library", + "bom-ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da" + }, + { + "group": "github.com/gregjones", + "name": "httpcache", + "version": "v0.0.0-20180305231024-9cad4c3443a7", + "purl": "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7", + "type": "library", + "bom-ref": "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7" + }, + { + "group": "github.com/peterbourgon", + "name": "diskv", + "version": "v2.0.1+incompatible", + "purl": "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible", + "type": "library", + "bom-ref": "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible" + }, + { + "group": "github.com/google", + "name": "btree", + "version": "v1.0.1", + "purl": "pkg:golang/github.com/google/btree@v1.0.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/btree@v1.0.1" + }, + { + "group": "github.com/NYTimes", + "name": "gziphandler", + "version": "v0.0.0-20170623195520-56545f4a5d46", + "purl": "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", + "type": "library", + "bom-ref": "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46" + }, + { + "group": "github.com/asaskevich", + "name": "govalidator", + "version": "v0.0.0-20190424111038-f61b66f89f4a", + "purl": "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a", + "type": "library", + "bom-ref": "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a" + }, + { + "group": "github.com/mitchellh", + "name": "mapstructure", + "version": "v1.1.2", + "purl": "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2" + }, + { + "group": "k8s.io", + "name": "gengo", + "version": "v0.0.0-20210813121822-485abfe95c7c", + "purl": "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c" + }, + { + "group": "github.com/PuerkitoBio", + "name": "purell", + "version": "v1.1.1", + "purl": "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1" + }, + { + "group": "github.com/PuerkitoBio", + "name": "urlesc", + "version": "v0.0.0-20170810143723-de5bf2ad4578", + "purl": "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578", + "type": "library", + "bom-ref": "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578" + }, + { + "group": "github.com/stretchr", + "name": "objx", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/stretchr/objx@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/stretchr/objx@v0.1.0" + }, + { + "group": "github.com/yuin", + "name": "goldmark", + "version": "v1.2.1", + "purl": "pkg:golang/github.com/yuin/goldmark@v1.2.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/yuin/goldmark@v1.2.1" + }, + { + "group": "golang.org/x", + "name": "sync", + "version": "v0.0.0-20201020160332-67f06af15bc9", + "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" + }, + { + "group": "golang.org/x", + "name": "lint", + "version": "v0.0.0-20200302205851-738671d3881b", + "purl": "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b" + }, + { + "group": "google.golang.org", + "name": "grpc", + "version": "v1.31.0", + "purl": "pkg:golang/google.golang.org/grpc@v1.31.0", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/grpc@v1.31.0" + }, + { + "group": "cloud.google.com/go", + "name": "storage", + "version": "v1.10.0", + "purl": "pkg:golang/cloud.google.com/go/storage@v1.10.0", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go/storage@v1.10.0" + }, + { + "group": "github.com/golang", + "name": "mock", + "version": "v1.4.4", + "purl": "pkg:golang/github.com/golang/mock@v1.4.4", + "type": "library", + "bom-ref": "pkg:golang/github.com/golang/mock@v1.4.4" + }, + { + "group": "github.com/google/martian", + "name": "v3", + "version": "v3.0.0", + "purl": "pkg:golang/github.com/google/martian/v3@v3.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/martian/v3@v3.0.0" + }, + { + "group": "github.com/google", + "name": "pprof", + "version": "v0.0.0-20200708004538-1a94d8640e99", + "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99" + }, + { + "group": "github.com/googleapis/gax-go", + "name": "v2", + "version": "v2.0.5", + "purl": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", + "type": "library", + "bom-ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5" + }, + { + "group": "github.com/jstemmer", + "name": "go-junit-report", + "version": "v0.9.1", + "purl": "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1" + }, + { + "name": "go.opencensus.io", + "version": "v0.22.4", + "purl": "pkg:golang/go.opencensus.io@v0.22.4", + "type": "library", + "bom-ref": "pkg:golang/go.opencensus.io@v0.22.4" + }, + { + "group": "google.golang.org", + "name": "api", + "version": "v0.30.0", + "purl": "pkg:golang/google.golang.org/api@v0.30.0", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/api@v0.30.0" + }, + { + "group": "github.com/kr", + "name": "pty", + "version": "v1.1.1", + "purl": "pkg:golang/github.com/kr/pty@v1.1.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/kr/pty@v1.1.1" + }, + { + "group": "github.com/envoyproxy", + "name": "go-control-plane", + "version": "v0.9.4", + "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", + "type": "library", + "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4" + }, + { + "group": "github.com/envoyproxy", + "name": "protoc-gen-validate", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0" + }, + { + "group": "github.com/golang", + "name": "glog", + "version": "v0.0.0-20160126235308-23def4e6c14b", + "purl": "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", + "type": "library", + "bom-ref": "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b" + }, + { + "group": "cloud.google.com/go", + "name": "bigquery", + "version": "v1.8.0", + "purl": "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go/bigquery@v1.8.0" + }, + { + "group": "github.com/chzyer", + "name": "logex", + "version": "v1.1.10", + "purl": "pkg:golang/github.com/chzyer/logex@v1.1.10", + "type": "library", + "bom-ref": "pkg:golang/github.com/chzyer/logex@v1.1.10" + }, + { + "group": "github.com/chzyer", + "name": "readline", + "version": "v0.0.0-20180603132655-2972be24d48e", + "purl": "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", + "type": "library", + "bom-ref": "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e" + }, + { + "group": "github.com/chzyer", + "name": "test", + "version": "v0.0.0-20180213035817-a1ea475d72b1", + "purl": "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", + "type": "library", + "bom-ref": "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1" + }, + { + "group": "github.com/ianlancetaylor", + "name": "demangle", + "version": "v0.0.0-20181102032728-5e5cf60278f6", + "purl": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", + "type": "library", + "bom-ref": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6" + }, + { + "group": "github.com/cncf/udpa", + "name": "go", + "version": "v0.0.0-20191209042840-269d4d468f6f", + "purl": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", + "type": "library", + "bom-ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f" + }, + { + "group": "github.com/census-instrumentation", + "name": "opencensus-proto", + "version": "v0.2.1", + "purl": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1" + }, + { + "group": "github.com/prometheus", + "name": "client_model", + "version": "v0.0.0-20190812154241-14fe0d1b01d4", + "purl": "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", + "type": "library", + "bom-ref": "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4" + }, + { + "group": "golang.org/x", + "name": "exp", + "version": "v0.0.0-20200224162631-6cc2880d07d6", + "purl": "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6" + }, + { + "group": "honnef.co/go", + "name": "tools", + "version": "v0.0.1-2020.1.4", + "purl": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "type": "library", + "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4" + }, + { + "group": "cloud.google.com/go", + "name": "datastore", + "version": "v1.1.0", + "purl": "pkg:golang/cloud.google.com/go/datastore@v1.1.0", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go/datastore@v1.1.0" + }, + { + "group": "cloud.google.com/go", + "name": "pubsub", + "version": "v1.3.1", + "purl": "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go/pubsub@v1.3.1" + }, + { + "group": "github.com/google", + "name": "martian", + "version": "v2.1.0+incompatible", + "purl": "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible" + }, + { + "group": "github.com/BurntSushi", + "name": "toml", + "version": "v0.3.1", + "purl": "pkg:golang/github.com/BurntSushi/toml@v0.3.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/BurntSushi/toml@v0.3.1" + }, + { + "group": "github.com/client9", + "name": "misspell", + "version": "v0.3.4", + "purl": "pkg:golang/github.com/client9/misspell@v0.3.4", + "type": "library", + "bom-ref": "pkg:golang/github.com/client9/misspell@v0.3.4" + }, + { + "group": "rsc.io/quote", + "name": "v3", + "version": "v3.1.0", + "purl": "pkg:golang/rsc.io/quote/v3@v3.1.0", + "type": "library", + "bom-ref": "pkg:golang/rsc.io/quote/v3@v3.1.0" + }, + { + "group": "github.com/hashicorp", + "name": "golang-lru", + "version": "v0.5.1", + "purl": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1" + }, + { + "group": "github.com/google", + "name": "renameio", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/google/renameio@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/renameio@v0.1.0" + }, + { + "group": "dmitri.shuralyov.com/gpu", + "name": "mtl", + "version": "v0.0.0-20190408044501-666a987793e9", + "purl": "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", + "type": "library", + "bom-ref": "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9" + }, + { + "group": "github.com/BurntSushi", + "name": "xgb", + "version": "v0.0.0-20160522181843-27f122750802", + "purl": "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", + "type": "library", + "bom-ref": "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802" + }, + { + "group": "github.com/go-gl/glfw/v3.3", + "name": "glfw", + "version": "v0.0.0-20200222043503-6f7a984d4dc4", + "purl": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4" + }, + { + "group": "golang.org/x", + "name": "image", + "version": "v0.0.0-20190802002840-cff245a6509b", + "purl": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b" + }, + { + "group": "golang.org/x", + "name": "mobile", + "version": "v0.0.0-20190719004257-d2bd2a29d028", + "purl": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028" + }, + { + "group": "rsc.io", + "name": "sampler", + "version": "v1.3.0", + "purl": "pkg:golang/rsc.io/sampler@v1.3.0", + "type": "library", + "bom-ref": "pkg:golang/rsc.io/sampler@v1.3.0" + }, + { + "group": "gopkg.in", + "name": "errgo.v2", + "version": "v2.1.0", + "purl": "pkg:golang/gopkg.in/errgo.v2@v2.1.0", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/errgo.v2@v2.1.0" + }, + { + "group": "rsc.io", + "name": "binaryregexp", + "version": "v0.2.0", + "purl": "pkg:golang/rsc.io/binaryregexp@v0.2.0", + "type": "library", + "bom-ref": "pkg:golang/rsc.io/binaryregexp@v0.2.0" + }, + { + "group": "github.com/go-gl", + "name": "glfw", + "version": "v0.0.0-20190409004039-e6da0acd62b1", + "purl": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1" + } + ], + "dependencies": [ + { + "ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", + "pkg:golang/github.com/gin-gonic/gin@v1.9.1", + "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", + "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/google/uuid@v1.1.2", + "pkg:golang/github.com/imdario/mergo@v0.3.6", + "pkg:golang/github.com/josharian/intern@v1.0.0", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/kr/pretty@v0.3.1", + "pkg:golang/github.com/kr/text@v0.2.0", + "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", + "pkg:golang/github.com/spf13/pflag@v1.0.5", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/term@v0.8.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/k8s.io/api@v0.26.1", + "pkg:golang/k8s.io/apimachinery@v0.26.1", + "pkg:golang/k8s.io/client-go@v0.26.1", + "pkg:golang/k8s.io/klog/v2@v2.80.1", + "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", + "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "pkg:golang/sigs.k8s.io/yaml@v1.3.0" + ] + }, + { + "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", + "dependsOn": [ + "pkg:golang/github.com/bytedance/sonic@v1.9.1", + "pkg:golang/github.com/gin-contrib/sse@v0.1.0", + "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", + "pkg:golang/github.com/goccy/go-json@v0.10.2", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/mattn/go-isatty@v0.0.19", + "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/github.com/ugorji/go/codec@v1.2.11", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", + "pkg:golang/github.com/go-playground/locales@v0.14.1", + "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", + "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", + "pkg:golang/github.com/leodido/go-urn@v1.2.4", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", + "pkg:golang/golang.org/x/arch@v0.3.0", + "pkg:golang/golang.org/x/crypto@v0.9.0", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/text@v0.9.0" + ] + }, + { + "ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "dependsOn": [ + "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/stretchr/testify@v1.8.3" + ] + }, + { + "ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", + "dependsOn": [ + "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "pkg:golang/github.com/stretchr/testify@v1.8.3" + ] + }, + { + "ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/kr/text@v0.2.0", + "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/github.com/kr/pretty@v0.3.1" + ] + }, + { + "ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "dependsOn": [ + "pkg:golang/github.com/kisielk/errcheck@v1.5.0", + "pkg:golang/github.com/kisielk/gotool@v1.0.0", + "pkg:golang/golang.org/x/tools@v0.6.0" + ] + }, + { + "ref": "pkg:golang/github.com/golang/protobuf@v1.5.2", + "dependsOn": [ + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/google.golang.org/protobuf@v1.30.0" + ] + }, + { + "ref": "pkg:golang/github.com/google/go-cmp@v0.5.9", + "dependsOn": [ + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + ] + }, + { + "ref": "pkg:golang/github.com/google/gofuzz@v1.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/google/uuid@v1.1.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/imdario/mergo@v0.3.6", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/josharian/intern@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/json-iterator/go@v1.1.12", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/stretchr/testify@v1.8.3" + ] + }, + { + "ref": "pkg:golang/github.com/kr/pretty@v0.3.1", + "dependsOn": [ + "pkg:golang/github.com/kr/text@v0.2.0", + "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" + ] + }, + { + "ref": "pkg:golang/github.com/kr/text@v0.2.0", + "dependsOn": [ + "pkg:golang/github.com/creack/pty@v1.1.9", + "pkg:golang/github.com/kr/pty@v1.1.1" + ] + }, + { + "ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "dependsOn": [ + "pkg:golang/github.com/josharian/intern@v1.0.0" + ] + }, + { + "ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", + "dependsOn": [ + "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e", + "pkg:golang/gopkg.in/errgo.v2@v2.1.0" + ] + }, + { + "ref": "pkg:golang/github.com/spf13/pflag@v1.0.5", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/net@v0.10.0", + "dependsOn": [ + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/term@v0.8.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/crypto@v0.9.0" + ] + }, + { + "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.65.0", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" + ] + }, + { + "ref": "pkg:golang/golang.org/x/sys@v0.8.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/term@v0.8.0", + "dependsOn": [ + "pkg:golang/golang.org/x/sys@v0.8.0" + ] + }, + { + "ref": "pkg:golang/golang.org/x/text@v0.9.0", + "dependsOn": [ + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/golang.org/x/sys@v0.8.0" + ] + }, + { + "ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", + "dependsOn": [] + }, + { + "ref": "pkg:golang/google.golang.org/appengine@v1.6.7", + "dependsOn": [ + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/crypto@v0.9.0", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/tools@v0.6.0" + ] + }, + { + "ref": "pkg:golang/google.golang.org/protobuf@v1.30.0", + "dependsOn": [ + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154" + ] + }, + { + "ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "dependsOn": [ + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" + ] + }, + { + "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "dependsOn": [ + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" + ] + }, + { + "ref": "pkg:golang/k8s.io/api@v0.26.1", + "dependsOn": [ + "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/k8s.io/apimachinery@v0.26.1", + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/github.com/spf13/pflag@v1.0.5", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/k8s.io/klog/v2@v2.80.1", + "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "pkg:golang/sigs.k8s.io/yaml@v1.3.0" + ] + }, + { + "ref": "pkg:golang/k8s.io/apimachinery@v0.26.1", + "dependsOn": [ + "pkg:golang/github.com/armon/go-socks5@v0.0.0-20160902184237-e75332964ef5", + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/elazarl/goproxy@v0.0.0-20180725130230-947c36da3153", + "pkg:golang/github.com/evanphx/json-patch@v4.12.0%2Bincompatible", + "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/google/uuid@v1.1.2", + "pkg:golang/github.com/moby/spdystream@v0.2.0", + "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f", + "pkg:golang/github.com/spf13/pflag@v1.0.5", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "pkg:golang/k8s.io/klog/v2@v2.80.1", + "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", + "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/kr/text@v0.2.0", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", + "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", + "pkg:golang/github.com/onsi/gomega@v1.23.0", + "pkg:golang/github.com/pkg/errors@v0.9.1", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1" + ] + }, + { + "ref": "pkg:golang/k8s.io/client-go@v0.26.1", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/evanphx/json-patch@v4.12.0%2Bincompatible", + "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/google/uuid@v1.1.2", + "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7", + "pkg:golang/github.com/imdario/mergo@v0.3.6", + "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible", + "pkg:golang/github.com/spf13/pflag@v1.0.5", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "pkg:golang/golang.org/x/term@v0.8.0", + "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/k8s.io/api@v0.26.1", + "pkg:golang/k8s.io/apimachinery@v0.26.1", + "pkg:golang/k8s.io/klog/v2@v2.80.1", + "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", + "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", + "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", + "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "pkg:golang/github.com/google/btree@v1.0.1", + "pkg:golang/github.com/josharian/intern@v1.0.0", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/moby/spdystream@v0.2.0", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "pkg:golang/github.com/pkg/errors@v0.9.1", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2" + ] + }, + { + "ref": "pkg:golang/k8s.io/klog/v2@v2.80.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", + "dependsOn": [ + "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", + "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a", + "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", + "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", + "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/google/uuid@v1.1.2", + "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", + "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", + "pkg:golang/github.com/onsi/gomega@v1.23.0", + "pkg:golang/github.com/spf13/pflag@v1.0.5", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c", + "pkg:golang/k8s.io/klog/v2@v2.80.1", + "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1", + "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578", + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + ] + }, + { + "ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/k8s.io/klog/v2@v2.80.1" + ] + }, + { + "ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "dependsOn": [ + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" + ] + }, + { + "ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0" + ] + }, + { + "ref": "pkg:golang/github.com/bytedance/sonic@v1.9.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/gin-contrib/sse@v0.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/goccy/go-json@v0.10.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.19", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/stretchr/testify@v1.8.3", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/github.com/stretchr/objx@v0.1.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0" + ] + }, + { + "ref": "pkg:golang/github.com/ugorji/go/codec@v1.2.11", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/go-playground/locales@v0.14.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/leodido/go-urn@v1.2.4", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/arch@v0.3.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/crypto@v0.9.0", + "dependsOn": [ + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/net@v0.10.0" + ] + }, + { + "ref": "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", + "dependsOn": [ + "pkg:golang/github.com/kr/text@v0.2.0" + ] + }, + { + "ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/kisielk/errcheck@v1.5.0", + "dependsOn": [ + "pkg:golang/golang.org/x/tools@v0.6.0" + ] + }, + { + "ref": "pkg:golang/github.com/kisielk/gotool@v1.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/tools@v0.6.0", + "dependsOn": [ + "pkg:golang/github.com/yuin/goldmark@v1.2.1", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", + "pkg:golang/google.golang.org/appengine@v1.6.7" + ] + }, + { + "ref": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/stoewer/go-strcase@v1.2.0", + "dependsOn": [ + "pkg:golang/github.com/stretchr/testify@v1.8.3" + ] + }, + { + "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "dependsOn": [ + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/google.golang.org/grpc@v1.31.0", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" + ] + }, + { + "ref": "pkg:golang/github.com/creack/pty@v1.1.9", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e", + "dependsOn": [] + }, + { + "ref": "pkg:golang/cloud.google.com/go@v0.65.0", + "dependsOn": [ + "pkg:golang/cloud.google.com/go/storage@v1.10.0", + "pkg:golang/github.com/golang/mock@v1.4.4", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/google/martian/v3@v3.0.0", + "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", + "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", + "pkg:golang/go.opencensus.io@v0.22.4", + "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", + "pkg:golang/google.golang.org/api@v0.30.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/google.golang.org/grpc@v1.31.0", + "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", + "pkg:golang/cloud.google.com/go/datastore@v1.1.0", + "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", + "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", + "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/github.com/google/btree@v1.0.1", + "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", + "pkg:golang/rsc.io/binaryregexp@v0.2.0" + ] + }, + { + "ref": "pkg:golang/golang.org/x/mod@v0.8.0", + "dependsOn": [ + "pkg:golang/golang.org/x/crypto@v0.9.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + ] + }, + { + "ref": "pkg:golang/github.com/armon/go-socks5@v0.0.0-20160902184237-e75332964ef5", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/elazarl/goproxy@v0.0.0-20180725130230-947c36da3153", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/evanphx/json-patch@v4.12.0%2Bincompatible", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/moby/spdystream@v0.2.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/onsi/gomega@v1.23.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/pkg/errors@v0.9.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/google/btree@v1.0.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/stretchr/objx@v0.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/yuin/goldmark@v1.2.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", + "dependsOn": [ + "pkg:golang/golang.org/x/tools@v0.6.0" + ] + }, + { + "ref": "pkg:golang/google.golang.org/grpc@v1.31.0", + "dependsOn": [ + "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", + "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", + "pkg:golang/github.com/golang/mock@v1.4.4", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", + "pkg:golang/cloud.google.com/go@v0.65.0", + "pkg:golang/github.com/BurntSushi/toml@v0.3.1", + "pkg:golang/github.com/client9/misspell@v0.3.4", + "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", + "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4" + ] + }, + { + "ref": "pkg:golang/cloud.google.com/go/storage@v1.10.0", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.65.0", + "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/google.golang.org/api@v0.30.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/google.golang.org/grpc@v1.31.0", + "pkg:golang/cloud.google.com/go/datastore@v1.1.0", + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", + "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", + "pkg:golang/go.opencensus.io@v0.22.4", + "pkg:golang/google.golang.org/appengine@v1.6.7" + ] + }, + { + "ref": "pkg:golang/github.com/golang/mock@v1.4.4", + "dependsOn": [ + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/rsc.io/quote/v3@v3.1.0" + ] + }, + { + "ref": "pkg:golang/github.com/google/martian/v3@v3.0.0", + "dependsOn": [ + "pkg:golang/golang.org/x/net@v0.10.0" + ] + }, + { + "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20200708004538-1a94d8640e99", + "dependsOn": [ + "pkg:golang/github.com/chzyer/logex@v1.1.10", + "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", + "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", + "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", + "pkg:golang/golang.org/x/sys@v0.8.0" + ] + }, + { + "ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", + "dependsOn": [ + "pkg:golang/google.golang.org/grpc@v1.31.0" + ] + }, + { + "ref": "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/go.opencensus.io@v0.22.4", + "dependsOn": [ + "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/google.golang.org/grpc@v1.31.0", + "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1" + ] + }, + { + "ref": "pkg:golang/google.golang.org/api@v0.30.0", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.65.0", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", + "pkg:golang/go.opencensus.io@v0.22.4", + "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/google.golang.org/grpc@v1.31.0", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2" + ] + }, + { + "ref": "pkg:golang/github.com/kr/pty@v1.1.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.9.4", + "dependsOn": [ + "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", + "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/google.golang.org/grpc@v1.31.0", + "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", + "pkg:golang/github.com/google/go-cmp@v0.5.9" + ] + }, + { + "ref": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", + "dependsOn": [] + }, + { + "ref": "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.65.0", + "pkg:golang/cloud.google.com/go/storage@v1.10.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/google.golang.org/api@v0.30.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/google.golang.org/grpc@v1.31.0", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b" + ] + }, + { + "ref": "pkg:golang/github.com/chzyer/logex@v1.1.10", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20181102032728-5e5cf60278f6", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20191209042840-269d4d468f6f", + "dependsOn": [ + "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/google.golang.org/grpc@v1.31.0" + ] + }, + { + "ref": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.2.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", + "dependsOn": [ + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" + ] + }, + { + "ref": "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "dependsOn": [ + "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", + "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", + "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4", + "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", + "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", + "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1" + ] + }, + { + "ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "dependsOn": [ + "pkg:golang/github.com/BurntSushi/toml@v0.3.1", + "pkg:golang/github.com/google/renameio@v0.1.0", + "pkg:golang/github.com/kisielk/gotool@v1.0.0", + "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/golang.org/x/tools@v0.6.0" + ] + }, + { + "ref": "pkg:golang/cloud.google.com/go/datastore@v1.1.0", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.65.0", + "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/google.golang.org/api@v0.30.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/google.golang.org/grpc@v1.31.0", + "pkg:golang/google.golang.org/appengine@v1.6.7" + ] + }, + { + "ref": "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.65.0", + "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.0.5", + "pkg:golang/go.opencensus.io@v0.22.4", + "pkg:golang/golang.org/x/lint@v0.0.0-20200302205851-738671d3881b", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/google.golang.org/api@v0.30.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/google.golang.org/grpc@v1.31.0", + "pkg:golang/cloud.google.com/go/storage@v1.10.0", + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6" + ] + }, + { + "ref": "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/BurntSushi/toml@v0.3.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/client9/misspell@v0.3.4", + "dependsOn": [] + }, + { + "ref": "pkg:golang/rsc.io/quote/v3@v3.1.0", + "dependsOn": [ + "pkg:golang/rsc.io/sampler@v1.3.0" + ] + }, + { + "ref": "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/google/renameio@v0.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/dmitri.shuralyov.com/gpu/mtl@v0.0.0-20190408044501-666a987793e9", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/BurntSushi/xgb@v0.0.0-20160522181843-27f122750802", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/go-gl/glfw/v3.3/glfw@v0.0.0-20200222043503-6f7a984d4dc4", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", + "dependsOn": [ + "pkg:golang/golang.org/x/text@v0.9.0" + ] + }, + { + "ref": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", + "dependsOn": [ + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", + "pkg:golang/golang.org/x/sys@v0.8.0" + ] + }, + { + "ref": "pkg:golang/rsc.io/sampler@v1.3.0", + "dependsOn": [ + "pkg:golang/golang.org/x/text@v0.9.0" + ] + }, + { + "ref": "pkg:golang/gopkg.in/errgo.v2@v2.1.0", + "dependsOn": [ + "pkg:golang/github.com/kr/pretty@v0.3.1", + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" + ] + }, + { + "ref": "pkg:golang/rsc.io/binaryregexp@v0.2.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", + "dependsOn": [] + } + ] +} \ No newline at end of file diff --git a/test/providers/tst_manifests/image/httpd:2.4.49.json b/test/providers/tst_manifests/image/httpd:2.4.49.json index da5d3ffe..47a7d52b 100644 --- a/test/providers/tst_manifests/image/httpd:2.4.49.json +++ b/test/providers/tst_manifests/image/httpd:2.4.49.json @@ -10773,7 +10773,7 @@ ] }, { - "bom-ref": "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=12ef1f27f6a6900d&upstream=perl", + "bom-ref": "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=b9e426935a3c0ab8&upstream=perl", "type": "library", "publisher": "Niko Tyni ", "name": "perl-base", @@ -10824,11 +10824,6 @@ "name": "Artistic" } }, - { - "license": { - "name": "Artistic-dist" - } - }, { "license": { "name": "BSD-3-clause-GENERIC" @@ -10908,6 +10903,11 @@ "license": { "name": "Unicode" } + }, + { + "license": { + "name": "Artistic-dist" + } } ], "cpe": "cpe:2.3:a:perl-base:perl-base:5.28.1-6\\+deb10u1:*:*:*:*:*:*:*", @@ -54707,7 +54707,7 @@ { "ref": "pkg:deb/debian/debconf@1.5.71?arch=all&distro=debian-10&package-id=fe38a53949ca2b50", "dependsOn": [ - "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=12ef1f27f6a6900d&upstream=perl" + "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=b9e426935a3c0ab8&upstream=perl" ] }, { @@ -54796,7 +54796,7 @@ { "ref": "pkg:deb/debian/init-system-helpers@1.56%2Bnmu1?arch=all&distro=debian-10&package-id=4a3347396c872902", "dependsOn": [ - "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=12ef1f27f6a6900d&upstream=perl" + "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=b9e426935a3c0ab8&upstream=perl" ] }, { @@ -55382,7 +55382,7 @@ ] }, { - "ref": "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=12ef1f27f6a6900d&upstream=perl", + "ref": "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=b9e426935a3c0ab8&upstream=perl", "dependsOn": [ "pkg:deb/debian/dpkg@1.19.7?arch=amd64&distro=debian-10&package-id=da9ff9a377f09d63", "pkg:deb/debian/libc6@2.28-10?arch=amd64&distro=debian-10&package-id=3885776e13200a70&upstream=glibc" diff --git a/test/providers/tst_manifests/image/httpd:2.4.49^^amd64.json b/test/providers/tst_manifests/image/httpd:2.4.49^^amd64.json index da5d3ffe..47a7d52b 100644 --- a/test/providers/tst_manifests/image/httpd:2.4.49^^amd64.json +++ b/test/providers/tst_manifests/image/httpd:2.4.49^^amd64.json @@ -10773,7 +10773,7 @@ ] }, { - "bom-ref": "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=12ef1f27f6a6900d&upstream=perl", + "bom-ref": "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=b9e426935a3c0ab8&upstream=perl", "type": "library", "publisher": "Niko Tyni ", "name": "perl-base", @@ -10824,11 +10824,6 @@ "name": "Artistic" } }, - { - "license": { - "name": "Artistic-dist" - } - }, { "license": { "name": "BSD-3-clause-GENERIC" @@ -10908,6 +10903,11 @@ "license": { "name": "Unicode" } + }, + { + "license": { + "name": "Artistic-dist" + } } ], "cpe": "cpe:2.3:a:perl-base:perl-base:5.28.1-6\\+deb10u1:*:*:*:*:*:*:*", @@ -54707,7 +54707,7 @@ { "ref": "pkg:deb/debian/debconf@1.5.71?arch=all&distro=debian-10&package-id=fe38a53949ca2b50", "dependsOn": [ - "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=12ef1f27f6a6900d&upstream=perl" + "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=b9e426935a3c0ab8&upstream=perl" ] }, { @@ -54796,7 +54796,7 @@ { "ref": "pkg:deb/debian/init-system-helpers@1.56%2Bnmu1?arch=all&distro=debian-10&package-id=4a3347396c872902", "dependsOn": [ - "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=12ef1f27f6a6900d&upstream=perl" + "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=b9e426935a3c0ab8&upstream=perl" ] }, { @@ -55382,7 +55382,7 @@ ] }, { - "ref": "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=12ef1f27f6a6900d&upstream=perl", + "ref": "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=b9e426935a3c0ab8&upstream=perl", "dependsOn": [ "pkg:deb/debian/dpkg@1.19.7?arch=amd64&distro=debian-10&package-id=da9ff9a377f09d63", "pkg:deb/debian/libc6@2.28-10?arch=amd64&distro=debian-10&package-id=3885776e13200a70&upstream=glibc" diff --git a/test/providers/tst_manifests/image/httpd@sha256:4b5cb7697fea2aa6d398504c381b693a54ae9ad5e6317fcdbb7a2d9b8c3b1364.json b/test/providers/tst_manifests/image/httpd@sha256:4b5cb7697fea2aa6d398504c381b693a54ae9ad5e6317fcdbb7a2d9b8c3b1364.json index da5d3ffe..47a7d52b 100644 --- a/test/providers/tst_manifests/image/httpd@sha256:4b5cb7697fea2aa6d398504c381b693a54ae9ad5e6317fcdbb7a2d9b8c3b1364.json +++ b/test/providers/tst_manifests/image/httpd@sha256:4b5cb7697fea2aa6d398504c381b693a54ae9ad5e6317fcdbb7a2d9b8c3b1364.json @@ -10773,7 +10773,7 @@ ] }, { - "bom-ref": "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=12ef1f27f6a6900d&upstream=perl", + "bom-ref": "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=b9e426935a3c0ab8&upstream=perl", "type": "library", "publisher": "Niko Tyni ", "name": "perl-base", @@ -10824,11 +10824,6 @@ "name": "Artistic" } }, - { - "license": { - "name": "Artistic-dist" - } - }, { "license": { "name": "BSD-3-clause-GENERIC" @@ -10908,6 +10903,11 @@ "license": { "name": "Unicode" } + }, + { + "license": { + "name": "Artistic-dist" + } } ], "cpe": "cpe:2.3:a:perl-base:perl-base:5.28.1-6\\+deb10u1:*:*:*:*:*:*:*", @@ -54707,7 +54707,7 @@ { "ref": "pkg:deb/debian/debconf@1.5.71?arch=all&distro=debian-10&package-id=fe38a53949ca2b50", "dependsOn": [ - "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=12ef1f27f6a6900d&upstream=perl" + "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=b9e426935a3c0ab8&upstream=perl" ] }, { @@ -54796,7 +54796,7 @@ { "ref": "pkg:deb/debian/init-system-helpers@1.56%2Bnmu1?arch=all&distro=debian-10&package-id=4a3347396c872902", "dependsOn": [ - "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=12ef1f27f6a6900d&upstream=perl" + "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=b9e426935a3c0ab8&upstream=perl" ] }, { @@ -55382,7 +55382,7 @@ ] }, { - "ref": "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=12ef1f27f6a6900d&upstream=perl", + "ref": "pkg:deb/debian/perl-base@5.28.1-6%2Bdeb10u1?arch=amd64&distro=debian-10&package-id=b9e426935a3c0ab8&upstream=perl", "dependsOn": [ "pkg:deb/debian/dpkg@1.19.7?arch=amd64&distro=debian-10&package-id=da9ff9a377f09d63", "pkg:deb/debian/libc6@2.28-10?arch=amd64&distro=debian-10&package-id=3885776e13200a70&upstream=glibc" From 3962c9146f9abf3e37f801e7b16d91b3ce426971 Mon Sep 17 00:00:00 2001 From: ruromero Date: Thu, 30 Oct 2025 09:26:11 +0000 Subject: [PATCH 023/102] build: updated package with v0.2.4-ea.12 [skip ci] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a1512c42..60012652 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.11", + "version": "0.2.4-ea.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.11", + "version": "0.2.4-ea.12", "license": "Apache-2.0", "dependencies": { "@babel/core": "^7.23.2", diff --git a/package.json b/package.json index e8a67257..29f9d806 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@trustification/exhort-javascript-api", - "version": "0.2.4-ea.11", + "version": "0.2.4-ea.12", "description": "Code-Ready Dependency Analytics JavaScript API.", "license": "Apache-2.0", "homepage": "https://github.com/trustification/exhort-javascript-api#README.md", From 06853eccab7b7ea3b96ca19a9e41881a2ec14b3a Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Mon, 10 Nov 2025 15:47:14 +0000 Subject: [PATCH 024/102] chore: rename trustification references to guacsec (#249) * chore: rename trustification references to guacsec * chore: remove building OCI image in stage pipeline * chore: rename EXHORT_ opts to TRUSTIFY_DA_ * chore: move test url to env var --- .github/ISSUE_TEMPLATE/config.yml | 2 +- .github/workflows/pr.yml | 12 +- .github/workflows/release.yml | 6 - .github/workflows/stage.yml | 32 +---- .idea/modules.xml | 4 +- CONTRIBUTING.md | 14 +- README.md | 127 +++++++++--------- catalog-info.yaml | 12 +- config/config.properties | 2 +- docker-image/Dockerfiles/Dockerfile | 16 +-- docker-image/README.md | 18 +-- docker-image/scripts/rhda.sh | 2 +- integration/run_its.sh | 25 +--- integration/testers/cli/package.json | 4 +- integration/testers/javascript/index.js | 4 +- integration/testers/javascript/package.json | 4 +- integration/testers/typescript/index.ts | 4 +- integration/testers/typescript/package.json | 4 +- package-lock.json | 16 +-- package.json | 15 +-- src/analysis.js | 32 ++--- src/cli.js | 2 +- src/cyclone_dx_sbom.js | 2 +- src/index.js | 124 ++++++++--------- src/oci_image/utils.js | 34 ++--- src/providers/golang_gomodules.js | 2 +- src/providers/java_gradle.js | 10 +- src/providers/java_maven.js | 6 +- src/providers/python_controller.js | 16 +-- src/providers/python_pip.js | 4 +- src/sbom.js | 4 +- src/tools.js | 10 +- test/analysis.test.js | 16 +-- test/get-exhort-url.test.js | 140 +++++++++++--------- test/it/end-to-end.js | 12 +- test/providers/golang_gomodules.test.js | 2 +- test/providers/java_maven.test.js | 6 +- test/providers/oci_images.test.js | 2 +- test/providers/python_pip.test.js | 8 +- test/tools.test.js | 8 +- 40 files changed, 358 insertions(+), 405 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 42604031..4d862e9d 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -2,5 +2,5 @@ blank_issues_enabled: false contact_links: - name: GitHub Discussions - url: https://github.com/trustification/exhort-javascript-api/discussions/ + url: https://github.com/guacsec/trustify-da-javascript-client/discussions/ about: You can also use Discussions for questions and ideas. diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 629f383a..fada235f 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -91,8 +91,10 @@ jobs: - name: Run unit tests env: - EXHORT_PYTHON3_PATH: "${{steps.python-location.outputs.python-bin-location}}/python3" - EXHORT_PIP3_PATH: "${{steps.python-location.outputs.python-bin-location}}/pip3" + TRUSTIFY_DA_PYTHON3_PATH: "${{steps.python-location.outputs.python-bin-location}}/python3" + TRUSTIFY_DA_PIP3_PATH: "${{steps.python-location.outputs.python-bin-location}}/pip3" + TRUSTIFY_DA_DEV_MODE: 'true' + DEV_TRUSTIFY_DA_BACKEND_URL: 'https://exhort.stage.devshift.net' run: npm run test - name: Compile project @@ -100,10 +102,16 @@ jobs: - name: Run integration tests run: npm run integration-tests + env: + TRUSTIFY_DA_DEV_MODE: 'true' + DEV_TRUSTIFY_DA_BACKEND_URL: 'https://exhort.stage.devshift.net' - name: Run integration tests cli working-directory: integration run: bash ./run_its.sh + env: + TRUSTIFY_DA_DEV_MODE: 'true' + DEV_TRUSTIFY_DA_BACKEND_URL: 'https://exhort.stage.devshift.net' - name: Upload coverage reports if: ${{ matrix.node == env.MAIN_NODE_VER }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8c6399f8..22b1331e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,12 +1,6 @@ --- name: Release -env: - # 🖊️ EDIT to change the image build settings. - IMAGE_NAME: exhort-javascript-api - IMAGE_REGISTRY: quay.io/ecosystem-appeng - DOCKERFILE_PATH: ./docker-image/Dockerfiles/Dockerfile.alpha - on: workflow_dispatch: inputs: diff --git a/.github/workflows/stage.yml b/.github/workflows/stage.yml index cbad2af5..ca0d108e 100644 --- a/.github/workflows/stage.yml +++ b/.github/workflows/stage.yml @@ -1,12 +1,6 @@ --- name: Stage -env: - # 🖊️ EDIT to change the image build settings. - IMAGE_NAME: exhort-javascript-api - IMAGE_REGISTRY: quay.io/ecosystem-appeng - DOCKERFILE_PATH: ./docker-image/Dockerfiles/Dockerfile - on: pull_request_target: types: @@ -29,7 +23,7 @@ jobs: stage: runs-on: ubuntu-latest # Branches that starts with `release/` shouldn't trigger this workflow, as these are triggering the release workflow. - if: github.repository_owner == 'trustification' && github.event.pull_request.merged == true && !startsWith(github.head_ref, 'release/') + if: github.repository_owner == 'guacsec' && github.event.pull_request.merged == true && !startsWith(github.head_ref, 'release/') environment: staging name: Stage the project steps: @@ -126,6 +120,8 @@ jobs: if: steps.test-check.outputs.retest-is-needed == 'true' env: TRIGGERING_FILE: ${{ steps.test-check.outputs.triggering-file}} + TRUSTIFY_DA_DEV_MODE: 'true' + DEV_TRUSTIFY_DA_BACKEND_URL: 'https://exhort.stage.devshift.net' run: | echo "Re-test was triggered!!, triggering changed file - $TRIGGERING_FILE" echo "Running Again Unit-tests =>" @@ -162,25 +158,3 @@ jobs: prerelease: true, generate_release_notes: true }) - - - name: Build Image With buildah - id: build-image - uses: redhat-actions/buildah-build@v2 - with: - image: ${{ env.IMAGE_NAME }} - tags: ${{ steps.bump.outputs.version }} - dockerfiles: | - ${{ env.DOCKERFILE_PATH }} - build-args: | - PACKAGE_REGISTRY_ACCESS_TOKEN=${{ secrets.PACKAGE_REGISTRY_ACCESS_TOKEN }} - EXHORT_JAVASCRIPT_API_VERSION=${{ steps.bump.outputs.version }} - context: docker-image - - - name: Push Image To Registry - uses: redhat-actions/push-to-registry@v2 - with: - image: ${{ steps.build-image.outputs.image }} - tags: ${{ steps.build-image.outputs.tags }} - registry: ${{ env.IMAGE_REGISTRY }} - username: ${{ secrets.IMAGE_REGISTRY_USER }} - password: ${{ secrets.IMAGE_REGISTRY_PASSWORD }} diff --git a/.idea/modules.xml b/.idea/modules.xml index aa96804a..b1018eea 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,7 @@ - + - \ No newline at end of file + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index be52e737..835af41f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,4 +1,4 @@ -# Contributing to *exhort-javascript-api*
![nodejs-version][10] +# Contributing to *trustify-da-javascript-client*
![nodejs-version][10] * Fork the repository * Create a new branch @@ -20,11 +20,11 @@ ### Good to know -* You can override the default backend url by setting another one in the _EXHORT_URL_ environment variable. +* You can override the default backend url by setting another one in the _TRUSTIFY_DA_URL_ environment variable. ### OpenAPI Specifications -The OpenAPI specification is located in the [`exhort-api-spec`](https://github.com/trustification/exhort-api-spec) where the Java and Javascript libraries are generated. +The OpenAPI specification is located in the [`trustify-da-api-spec`](https://github.com/trustify-da/trustify-da-api-model) where the Java and Javascript libraries are generated. ### Code Walkthrough @@ -86,7 +86,7 @@ scripts in [integration/testers](integration/testers).
We have 3 _testers_: * [integration/testers/cli](integration/testers/cli) is a _package.json_ used for installing the _ESM module_. - Invoking the CLI Script is done against the _@trustification/exhort-javascript-api/dist/src/cli.js_ in the tester's + Invoking the CLI Script is done against the _@trustify-da/trustify-da-javascript-client/dist/src/cli.js_ in the tester's _node_modules_. * [integration/testers/javascript](integration/testers/javascript) is a _javascript_ script invoking the _ESM module_. * [integration/testers/typescript](integration/testers/typescript) is a _typescript_ script invoking the _ESM module_. @@ -100,10 +100,10 @@ Run integration tests from the project's root: ``` Integration tests are executed against a mocked _Backend_ server.
-If you need to run against the actual _Backend_ server, use the _EXHORT_ITS_USE_REAL_API_ environment variable: +If you need to run against the actual _Backend_ server, use the _TRUSTIFY_DA_ITS_USE_REAL_API_ environment variable: ```shell -(cd integration/ && EXHORT_ITS_USE_REAL_API=true bash ./run_its.sh) +(cd integration/ && TRUSTIFY_DA_ITS_USE_REAL_API=true bash ./run_its.sh) ``` The mocked server implementation is [integration/server/mock_server.js](integration/server/mock_server.js). See the @@ -119,7 +119,7 @@ contribution. See the [DCO](DCO) file for details. [0]: https://www.conventionalcommits.org/en/v1.0.0/ -[1]: https://github.com/trustification/exhort/blob/0.1.x/src/main/resources/META-INF/openapi.yaml +[1]: https://github.com/guacsec/exhort/blob/0.1.x/src/main/resources/META-INF/openapi.yaml [10]: https://badgen.net/badge/NodeJS%20Version/18/68a063 diff --git a/README.md b/README.md index 7821aa92..55f6fea0 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # Exhort JavaScript API
![latest-no-snapshot][0] ![latest-snapshot][1] -* Looking for the OpenAPI Spec? Try [Exhort API Spec](https://github.com/trustification/exhort-api-spec) -* Looking for our Java API? Try [Exhort Java API](https://github.com/trustification/exhort-java-api). -* Looking for our Backend implementation? Try [Exhort](https://github.com/trustification/exhort). +* Looking for the OpenAPI Spec? Try [Exhort API Spec](https://github.com/trustify-da/trustify-da-api-model) +* Looking for our Java API? Try [Exhort Java API](https://github.com/guacsec/exhort-java-api). +* Looking for our Backend implementation? Try [Exhort](https://github.com/guacsec/exhort). The _Exhort JavaScript API_ module is deployed to _GitHub Package Registry_. @@ -31,10 +31,11 @@ See [GH Docs](https://docs.github.com/en/packages/working-with-a-github-packages

Usage

-Configuring NPM to look in GHPR for the trustification namespace is done by adding -@trustification:registry=https://npm.pkg.github.com to .npmrc in the project root or user home. +Configuring NPM to look in GHPR for the trustify-da namespace is done by adding +@trustify-da:registry=https://npm.pkg.github.com to .npmrc in the project root or user home. ```shell +echo "@trustify-da:registry=https://npm.pkg.github.com" >> .npmrc echo "@trustification:registry=https://npm.pkg.github.com" >> .npmrc ```

@@ -44,11 +45,11 @@ echo "@trustification:registry=https://npm.pkg.github.com" >> .npmrc Use as ESM Module from an ESM module ```shell -npm install @trustification/exhort-javascript-api +npm install @trustify-da/trustify-da-javascript-client ``` ```javascript -import exhort from '@trustification/exhort-javascript-api' +import exhort from '@trustify-da/trustify-da-javascript-client' import fs from 'node:fs' // Get stack analysis in JSON format @@ -65,14 +66,14 @@ let componentAnalysis = await exhort.componentAnalysis('/path/to/pom.xml') Use as ESM Module from Common-JS module ```shell -npm install @trustification/exhort-javascript-api +npm install @trustify-da/trustify-da-javascript-client ``` ```javascript async function loadExhort() { // dynamic import is the only way to import ESM module into commonJS module - const { default: exhort } = await import('@trustification/exhort-javascript-api'); + const { default: exhort } = await import('@trustify-da/trustify-da-javascript-client'); return exhort } const runExhort = (manifestPath) => { @@ -98,13 +99,13 @@ Use as CLI Script Click for help menu ```shell -$ npx @trustification/exhort-javascript-api help +$ npx @trustify-da/trustify-da-javascript-client help -Usage: exhort-javascript-api {component|stack} +Usage: trustify-da-javascript-client {component|stack} Commands: - exhort-javascript-api stack [--html|--summary] produce stack report for manifest path - exhort-javascript-api component [--summary] produce component report for a manifest type and content + trustify-da-javascript-client stack [--html|--summary] produce stack report for manifest path + trustify-da-javascript-client component [--summary] produce component report for a manifest type and content Options: --help Show help [boolean] @@ -113,16 +114,16 @@ Options: ```shell # get stack analysis in json format -$ npx @trustification/exhort-javascript-api stack /path/to/pom.xml +$ npx @trustify-da/trustify-da-javascript-client stack /path/to/pom.xml # get stack analysis in json format (summary only) -$ npx @trustification/exhort-javascript-api stack /path/to/pom.xml --summary +$ npx @trustify-da/trustify-da-javascript-client stack /path/to/pom.xml --summary # get stack analysis in html format format -$ npx @trustification/exhort-javascript-api stack /path/to/pom.xml --html +$ npx @trustify-da/trustify-da-javascript-client stack /path/to/pom.xml --html # get component analysis -$ npx @trustification/exhort-javascript-api component /path/to/pom.xml +$ npx @trustify-da/trustify-da-javascript-client component /path/to/pom.xml ``` @@ -130,21 +131,21 @@ $ npx @trustification/exhort-javascript-api component /path/to/pom.xml Use as Global Binary ```shell -npm install --global @trustification/exhort-javascript-api +npm install --global @trustify-da/trustify-da-javascript-client ``` ```shell # get stack analysis in json format -$ exhort-javascript-api stack /path/to/pom.xml +$ trustify-da-javascript-client stack /path/to/pom.xml # get stack analysis in json format (summary only) -$ exhort-javascript-api stack /path/to/pom.xml --summary +$ trustify-da-javascript-client stack /path/to/pom.xml --summary # get stack analysis in html format format -$ exhort-javascript-api stack /path/to/pom.xml --html +$ trustify-da-javascript-client stack /path/to/pom.xml --html # get component analysis -$ exhort-javascript-api component /path/to/pom.xml +$ trustify-da-javascript-client component /path/to/pom.xml ``` @@ -206,7 +207,7 @@ Excluding a package from any analysis can be achieved by marking the package for Golang users can add in go.mod a comment with //exhortignore next to the package to be ignored, or to "piggyback" on existing comment ( e.g - //indirect) , for example: ```go -module github.com/trustification/SaaSi/deployer +module github.com/trustify-da/SaaSi/deployer go 1.19 @@ -295,22 +296,22 @@ for various customization. However, ESM Module users, can opt for customizing programmatically: ```javascript -import exhort from '@trustification/exhort-javascript-api' +import exhort from '@trustify-da/trustify-da-javascript-client' 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', + 'TRUSTIFY_DA_MVN_PATH': '/path/to/my/mvn', + 'TRUSTIFY_DA_NPM_PATH': '/path/to/npm', + 'TRUSTIFY_DA_PNPM_PATH': '/path/to/pnpm', + 'TRUSTIFY_DA_GO_PATH': '/path/to/go', //python - python3, pip3 take precedence if python version > 3 installed - 'EXHORT_PYTHON3_PATH' : '/path/to/python3', - 'EXHORT_PIP3_PATH' : '/path/to/pip3', - 'EXHORT_PYTHON_PATH' : '/path/to/python', - 'EXHORT_PIP_PATH' : '/path/to/pip', - 'EXHORT_GRADLE_PATH' : '/path/to/gradle', + 'TRUSTIFY_DA_PYTHON3_PATH' : '/path/to/python3', + 'TRUSTIFY_DA_PIP3_PATH' : '/path/to/pip3', + 'TRUSTIFY_DA_PYTHON_PATH' : '/path/to/python', + 'TRUSTIFY_DA_PIP_PATH' : '/path/to/pip', + 'TRUSTIFY_DA_GRADLE_PATH' : '/path/to/gradle', // Configure proxy for all requests - 'EXHORT_PROXY_URL': 'http://proxy.example.com:8080' + 'TRUSTIFY_DA_PROXY_URL': 'http://proxy.example.com:8080' } // Get stack analysis in JSON format ( all package managers, pom.xml is as an example here) @@ -332,13 +333,13 @@ You can set the proxy URL in two ways: 1. Using environment variable: ```shell -export EXHORT_PROXY_URL=http://proxy.example.com:8080 +export TRUSTIFY_DA_PROXY_URL=http://proxy.example.com:8080 ``` 2. Using the options object when calling the API programmatically: ```javascript const options = { - 'EXHORT_PROXY_URL': 'http://proxy.example.com:8080' + 'TRUSTIFY_DA_PROXY_URL': 'http://proxy.example.com:8080' } ``` @@ -361,62 +362,62 @@ following keys for setting custom paths for the said executables. Maven mvn -EXHORT_MVN_PATH +TRUSTIFY_DA_MVN_PATH Maven maven -EXHORT_PREFER_MVNW +TRUSTIFY_DA_PREFER_MVNW NPM npm -EXHORT_NPM_PATH +TRUSTIFY_DA_NPM_PATH PNPM pnpm -EXHORT_PNPM_PATH +TRUSTIFY_DA_PNPM_PATH Yarn Classic / Yarn Berry yarn -EXHORT_YARN_PATH +TRUSTIFY_DA_YARN_PATH Go Modules go -EXHORT_GO_PATH +TRUSTIFY_DA_GO_PATH Python programming language python3 -EXHORT_PYTHON3_PATH +TRUSTIFY_DA_PYTHON3_PATH Python pip Package Installer pip3 -EXHORT_PIP3_PATH +TRUSTIFY_DA_PIP3_PATH Python programming language python -EXHORT_PYTHON_PATH +TRUSTIFY_DA_PYTHON_PATH Python pip Package Installer pip -EXHORT_PIP_PATH +TRUSTIFY_DA_PIP_PATH Gradle gradle -EXHORT_GRADLE_PATH +TRUSTIFY_DA_GRADLE_PATH Gradle gradle -EXHORT_PREFER_GRADLEW +TRUSTIFY_DA_PREFER_GRADLEW @@ -446,7 +447,7 @@ Two possible values for this setting: #### Golang Support -By default, Golang dependency resolution follows the [Minimal Version Selection (MVS) Algorithm](https://go.dev/ref/mod#minimal-version-selection). +By default, Golang dependency resolution follows the [Minimal Version Selection (MVS) Algorithm](https://go.dev/ref/mod#minimal-version-selection). This means that when analyzing a project, only the module versions that would actually be included in the final executable are considered. For example, if your `go.mod` file declares two modules, `a` and `b`, and both depend on the same package `c` (same major version `v1`) but with different minor versions: @@ -454,14 +455,14 @@ For example, if your `go.mod` file declares two modules, `a` and `b`, and both d - `namespace/c/v1@v1.1` - `namespace/c/v1@v1.2` -Only one of these versions — the minimal version selected by MVS — will be included in the generated SBOM and analysis results. +Only one of these versions — the minimal version selected by MVS — will be included in the generated SBOM and analysis results. This mirrors the behavior of a real Go build, where only one minor version of a given major version can be present in the executable (since Go treats packages with the same name and major version as identical). -The MVS-based resolution is **enabled by default**. +The MVS-based resolution is **enabled by default**. If you want to disable this behavior and instead include **all transitive module versions** (as listed in `go.mod` dependencies), set the system property or environment variable: ```bash -EXHORT_GO_MVS_LOGIC_ENABLED=false +TRUSTIFY_DA_GO_MVS_LOGIC_ENABLED=false ``` #### Python Support @@ -470,8 +471,8 @@ By default, For python support, the api assumes that the package is installed us Binaries passed to environment variables. In any case, If the package is not installed , then an error will be thrown. There is an experimental feature of installing the requirements.txt on a virtual env(only python3 or later is supported for this feature) - in this case, -it's important to pass in a path to python3 binary as `EXHORT_PYTHON3_PATH` or instead make sure that python3 is on the system path. -in such case, You can use that feature by setting environment variable `EXHORT_PYTHON_VIRTUAL_ENV` to true. +it's important to pass in a path to python3 binary as `TRUSTIFY_DA_PYTHON3_PATH` or instead make sure that python3 is on the system path. +in such case, You can use that feature by setting environment variable `TRUSTIFY_DA_PYTHON_VIRTUAL_ENV` to true. ##### "Best Efforts Installation" Since Python pip packages are very sensitive/picky regarding python version changes( every small range of versions is only tailored for a certain python version), I'm introducing this feature, that @@ -479,33 +480,33 @@ tries to install all packages in requirements.txt onto created virtual environme This increasing the chances and the probability that the automatic installation will succeed. ###### Usage -A New setting is introduced - `EXHORT_PYTHON_INSTALL_BEST_EFFORTS` (as both env variable/key in `options` object) -1. `EXHORT_PYTHON_INSTALL_BEST_EFFORTS`="false" - install requirements.txt while respecting declared versions for all packages. -2. `EXHORT_PYTHON_INSTALL_BEST_EFFORTS`="true" - install all packages from requirements.txt, not respecting the declared version, but trying to install a version tailored for the used python version. When using this setting, you must set setting `MATCH_MANIFEST_VERSIONS` to 'false'. +A New setting is introduced - `TRUSTIFY_DA_PYTHON_INSTALL_BEST_EFFORTS` (as both env variable/key in `options` object) +1. `TRUSTIFY_DA_PYTHON_INSTALL_BEST_EFFORTS`="false" - install requirements.txt while respecting declared versions for all packages. +2. `TRUSTIFY_DA_PYTHON_INSTALL_BEST_EFFORTS`="true" - install all packages from requirements.txt, not respecting the declared version, but trying to install a version tailored for the used python version. When using this setting, you must set setting `MATCH_MANIFEST_VERSIONS` to 'false'. ##### Using `pipdeptree` By default, The API algorithm will use native commands of PIP installer as data source to build the dependency tree. -It's also possible to use the lightweight Python PIP utility [pipdeptree](https://pypi.org/project/pipdeptree/) as data source instead. In order to activate this, you need to set the environment variable/option `EXHORT_PIP_USE_DEP_TREE` to 'true'. +It's also possible to use the lightweight Python PIP utility [pipdeptree](https://pypi.org/project/pipdeptree/) as data source instead. In order to activate this, you need to set the environment variable/option `TRUSTIFY_DA_PIP_USE_DEP_TREE` to 'true'. #### Toggle Red Hat Trusted Content recommendations -Both the HTML-based report and JSON response will by default contain recommendations for migrating to Red Hat-based Trusted Content repositories. This feature can be disabled by setting `EXHORT_RECOMMENDATIONS_ENABLED` to 'false' via environment variables or options. +Both the HTML-based report and JSON response will by default contain recommendations for migrating to Red Hat-based Trusted Content repositories. This feature can be disabled by setting `TRUSTIFY_DA_RECOMMENDATIONS_ENABLED` to 'false' via environment variables or options. #### Additional CLI arguments For some ecosystems we support passing additional CLI arguments to the underlying tools. The following table outlines the supported ecosystems and the environment variable/option that configures this. Note that the arguments are expected to be in the format of a JSON array. |Ecosystem|Key | |---------|---------------| -|Maven |EXHORT_MVN_ARGS| +|Maven |TRUSTIFY_DA_MVN_ARGS| -[0]: https://img.shields.io/github/v/release/trustification/exhort-javascript-api?color=green&label=latest -[1]: https://img.shields.io/github/v/release/trustification/exhort-javascript-api?color=yellow&include_prereleases&label=early-access +[0]: https://img.shields.io/github/v/release/guacsec/trustify-da-javascript-client?color=green&label=latest +[1]: https://img.shields.io/github/v/release/guacsec/trustify-da-javascript-client?color=yellow&include_prereleases&label=early-access ### Known Issues - For pip requirements.txt - It's been observed that for python versions 3.11.x, there might be slowness for invoking the analysis. - If you encounter a performance issue with version >= 3.11.x, kindly try to set environment variable/option `EXHORT_PIP_USE_DEP_TREE=true`, before calling the analysis. + If you encounter a performance issue with version >= 3.11.x, kindly try to set environment variable/option `TRUSTIFY_DA_PIP_USE_DEP_TREE=true`, before calling the analysis. - For maven pom.xml, it has been noticed that using java 17 might cause stack analysis to hang forever. diff --git a/catalog-info.yaml b/catalog-info.yaml index e3642967..2ef62c8e 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -2,15 +2,15 @@ apiVersion: backstage.io/v1alpha1 kind: Component metadata: annotations: - backstage.io/kubernetes-id: exhort-javascript-api - github.com/project-slug: trustification/exhort-javascript-api + backstage.io/kubernetes-id: trustify-da-javascript-client + github.com/project-slug: guacsec/trustify-da-javascript-client github.com/project-readme-path: README.md - backstage.io/view-url: https://github.com/trustification/exhort-javascript-api/blob/main/catalog-info.yaml - backstage.io/edit-url: https://github.com/trustification/exhort-javascript-api/blob/main/catalog-info.yaml - backstage.io/source-location: url:https://github.com/trustification/exhort-javascript-api + backstage.io/view-url: https://github.com/guacsec/trustify-da-javascript-client/blob/main/catalog-info.yaml + backstage.io/edit-url: https://github.com/guacsec/trustify-da-javascript-client/blob/main/catalog-info.yaml + backstage.io/source-location: url:https://github.com/guacsec/trustify-da-javascript-client rhda/manifest-file-path: package.json backstage.io/techdocs-ref: dir:README.md - name: exhort-javascript-api + name: trustify-da-javascript-client spec: lifecycle: production owner: ecosystem-appeng diff --git a/config/config.properties b/config/config.properties index 39940fa7..66bae57e 100644 --- a/config/config.properties +++ b/config/config.properties @@ -1 +1 @@ -EXHORT_DEV_MODE=false +TRUSTIFY_DA_DEV_MODE=false diff --git a/docker-image/Dockerfiles/Dockerfile b/docker-image/Dockerfiles/Dockerfile index d88f99d9..ec4b9f50 100644 --- a/docker-image/Dockerfiles/Dockerfile +++ b/docker-image/Dockerfiles/Dockerfile @@ -6,7 +6,7 @@ USER root # assign token for reading packages from github package registry ARG PACKAGE_REGISTRY_ACCESS_TOKEN='' -ARG EXHORT_JAVASCRIPT_API_VERSION='0.1.1-ea.55' +ARG TRUSTIFY_DA_JAVASCRIPT_API_VERSION='0.1.1-ea.55' # install Java RUN curl -kL https://download.oracle.com/java/21/archive/jdk-21.0.1_linux-x64_bin.tar.gz -o /tmp/java-package.tar.gz \ @@ -28,7 +28,7 @@ COPY configs/.npmrc . # replace placeholder with the actual environment variable RUN sed -i "s/__PACKAGE_REGISTRY_ACCESS_TOKEN__/${PACKAGE_REGISTRY_ACCESS_TOKEN}/g" ./.npmrc # install Exhort javascript API -RUN npm install --global @trustification/exhort-javascript-api@${EXHORT_JAVASCRIPT_API_VERSION} +RUN npm install --global @trustify-da/trustify-da-javascript-client@${TRUSTIFY_DA_JAVASCRIPT_API_VERSION} # add RHDA script COPY scripts/rhda.sh /rhda.sh @@ -38,7 +38,7 @@ RUN chmod +x /usr/jdk-21.0.1/bin/java \ && chmod +x /usr/apache-maven-3.9.6/bin/mvn \ && chmod +x /usr/go/bin/go \ && chmod +x /usr/bin/jq \ - && chmod +x /opt/app-root/src/.npm-global/bin/exhort-javascript-api \ + && chmod +x /opt/app-root/src/.npm-global/bin/trustify-da-javascript-client \ && chmod +x /rhda.sh # use default user @@ -47,16 +47,16 @@ USER default # second stage FROM registry.access.redhat.com/ubi9/nodejs-20-minimal -LABEL org.opencontainers.image.source=https://github.com/trustification/exhort-javascript-api +LABEL org.opencontainers.image.source=https://github.com/guacsec/trustify-da-javascript-client # assign rhda source for exhort tracking purposes ENV RHDA_SOURCE='' # contains pip feeze --all data, base64 encoded -ENV EXHORT_PIP_FREEZE='' +ENV TRUSTIFY_DA_PIP_FREEZE='' # contains pip show data for all packages, base64 encoded -ENV EXHORT_PIP_SHOW='' +ENV TRUSTIFY_DA_PIP_SHOW='' # indicate whether to use the Minimal version selection (MVS) algorithm to select a set of module versions to use when building Go packages. -ENV EXHORT_GO_MVS_LOGIC_ENABLED='true' +ENV TRUSTIFY_DA_GO_MVS_LOGIC_ENABLED='true' # Copy java executable from the builder stage COPY --from=builder /usr/jdk-21.0.1/ /usr/jdk-21.0.1/ @@ -76,7 +76,7 @@ ENV PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$GOLANG_HOME/bin # Copy jq executable from the builder stage COPY --from=builder /usr/bin/jq /usr/bin/jq -# Copy exhort-javascript-api executable from the builder stage +# Copy trustify-da-javascript-client executable from the builder stage COPY --from=builder /opt/app-root/src/.npm-global/ /opt/app-root/src/.npm-global/ # Copy RHDA executable script from the builder stage diff --git a/docker-image/README.md b/docker-image/README.md index b31e8b81..ffb617ba 100644 --- a/docker-image/README.md +++ b/docker-image/README.md @@ -1,6 +1,6 @@ # Exhort Javascript API Docker Images -These dockerfiles provides all nessesary components to generate images for Red Hat Dependency Analytics (RHDA). +These dockerfiles provides all nessesary components to generate images for Red Hat Dependency Analytics (RHDA). These images can be used as base images to set up the necessary environment and dependencies for running the Red Hat Dependency Analytics. ## Prerequisites @@ -13,27 +13,27 @@ Both Docker and Podman are container runtimes that can be used to build and run ## Images generated for Exhort Javascript API -Ecosystem | Version | IMAGE | TAG | +Ecosystem | Version | IMAGE | TAG | ------------------------------| ------------------------------------------------------------------ | ----------------------------------------------- |-------------------| -Maven, NPM, Golang | mvn 3.9.6,
npm 10.2.4,
go 1.21.5,
python \ | quay.io/ecosystem-appeng/exhort-javascript-api | 0.1.1-ea.26 | +Maven, NPM, Golang | mvn 3.9.6,
npm 10.2.4,
go 1.21.5,
python \ | quay.io/ecosystem-appeng/trustify-da-javascript-client | 0.1.1-ea.26 | ## Usage Notes -To perform RHDA analysis on a **Python** ecosystem, the data from both `pip freeze --all` and `pip show` commands should be generated for all packages listed in the requirements.txt manifest. This data should be encoded in base64 and passed through the `EXHORT_PIP_FREEZE` and `EXHORT_PIP_SHOW` environment variables, respectively. +To perform RHDA analysis on a **Python** ecosystem, the data from both `pip freeze --all` and `pip show` commands should be generated for all packages listed in the requirements.txt manifest. This data should be encoded in base64 and passed through the `TRUSTIFY_DA_PIP_FREEZE` and `TRUSTIFY_DA_PIP_SHOW` environment variables, respectively. Code example: ``` shell # Install requirements.txt pip3 install -r requirements.txt -# Generate pip freeze --all data +# Generate pip freeze --all data pip3 freeze --all > pip_freeze.txt -# Generate pip show data +# Generate pip show data SHOW_LIST=$(awk -F '==' '{print $1}' < pip_freeze.txt) pip3 show $(echo "$SHOW_LIST") > pip_show.txt # Encode data using base64 and export to environment variables -export EXHORT_PIP_FREEZE=$(cat pip_freeze.txt | base64 -w 0) -export EXHORT_PIP_SHOW=$(cat pip_show.txt | base64 -w 0) -``` \ No newline at end of file +export TRUSTIFY_DA_PIP_FREEZE=$(cat pip_freeze.txt | base64 -w 0) +export TRUSTIFY_DA_PIP_SHOW=$(cat pip_show.txt | base64 -w 0) +``` diff --git a/docker-image/scripts/rhda.sh b/docker-image/scripts/rhda.sh index bfeafb3b..5a53dad8 100644 --- a/docker-image/scripts/rhda.sh +++ b/docker-image/scripts/rhda.sh @@ -6,7 +6,7 @@ output_file_path="$2" printf "Analyzing the stack. Please wait..\n\n" # Getting RHDA stack analysis report using Exhort Javascript CLI. -report=$(exhort-javascript-api stack $manifest_file_path 2>error.log) +report=$(trustify-da-javascript-client stack $manifest_file_path 2>error.log) exit_code=$? diff --git a/integration/run_its.sh b/integration/run_its.sh index 48852ad7..1e1536d8 100755 --- a/integration/run_its.sh +++ b/integration/run_its.sh @@ -2,8 +2,8 @@ #!!!!! DO NOT FORGET 'npm run compile' on root prior to running this script !!!!# -# set EXHORT_ITS_USE_REAL_API=true to use the real backend -EXHORT_ITS_USE_REAL_API="${EXHORT_ITS_USE_REAL_API:=false}" +# set TRUSTIFY_DA_ITS_USE_REAL_API=true to use the real backend +TRUSTIFY_DA_ITS_USE_REAL_API="${TRUSTIFY_DA_ITS_USE_REAL_API:=false}" # utility function for wrapping up and exiting # takes an exit code @@ -73,7 +73,7 @@ rm -rf testers/cli/node_modules rm -f testers/cli/package-lock.json if ! npm --prefix testers/cli install --silent ; then RC="$?" - echo "- FAILED Installing exhort-javascript-api environment for testing" + echo "- FAILED Installing trustify-da-javascript-client environment for testing" cleanup $RC fi echo "- SUCCESSFUL" @@ -81,7 +81,7 @@ mkdir -p ./responses #### JAVA MAVEN echo "RUNNING JavaScript CLI integration test for Stack Analysis report in Html for Java Maven" -testers/cli/node_modules/.bin/exhort-javascript-api stack scenarios/maven/pom.xml --html > ./responses/stack.html +testers/cli/node_modules/.bin/trustify-da-javascript-client stack scenarios/maven/pom.xml --html > ./responses/stack.html RC="$?" if [ "$RC" -ne 0 ]; then echo "- FAILED, return $RC from invocation" @@ -96,7 +96,7 @@ echo "- PASSED" echo echo 'RUNNING JavaScript CLI integration test for Stack Analysis report summary of snyk provider for Java Maven' -testers/cli/node_modules/.bin/exhort-javascript-api stack scenarios/maven/pom.xml --summary > ./responses/stack-summary.json +testers/cli/node_modules/.bin/trustify-da-javascript-client stack scenarios/maven/pom.xml --summary > ./responses/stack-summary.json RC="$?" if [ "$RC" -ne 0 ]; then echo "- FAILED, return $RC from invocation" @@ -114,7 +114,7 @@ echo "- PASSED" echo echo "RUNNING JavaScript CLI integration test for Stack Analysis report in Json for Java Maven" -testers/cli/node_modules/.bin/exhort-javascript-api stack scenarios/maven/pom.xml > ./responses/stack.json +testers/cli/node_modules/.bin/trustify-da-javascript-client stack scenarios/maven/pom.xml > ./responses/stack.json RC="$?" if [ "$RC" -ne 0 ]; then echo "- FAILED, return $RC from invocation" @@ -134,7 +134,7 @@ matchConstant "200" "$StatusCodeTC" "Check that Response code from Trusted Conte #matchConstant "200" "$StatusCodeSnyk" "Check that Response code from Snyk Provider is OK ( Http Status = 200)..." echo "RUNNING JavaScript CLI integration test for Component Analysis report for Java Maven" -eval "testers/cli/node_modules/.bin/exhort-javascript-api component scenarios/maven/pom.xml" > ./responses/component.json +eval "testers/cli/node_modules/.bin/trustify-da-javascript-client component scenarios/maven/pom.xml" > ./responses/component.json RC="$?" if [ "$RC" -ne 0 ]; then echo "- FAILED, return $RC from invocation" @@ -149,16 +149,5 @@ fi StatusCodeTC=$(jq '.providers["trusted-content"].status.code' ./responses/stack.json) matchConstant "200" "$StatusCodeTC" "Check that Response code from Trusted Content is OK ( Http Status = 200)..." -#StatusCodeSnyk=$(jq '.providers.snyk.status.code' ./responses/stack.json) -#matchConstant "200" "$StatusCodeSnyk" "Check that Response code from Snyk Provider is OK ( Http Status = 200)..." - -echo "RUNNING JavaScript CLI integration test for Validate Token Function With wrong token, expecting getting 401 http status code " -answerAboutToken=$(testers/cli/node_modules/.bin/exhort-javascript-api validate-token snyk --value=veryBadTokenValue) -matchConstant "401" "$answerAboutToken" "Checking That dummy Token is Invalid, Expecting Response Status of Authentication Failure( Http Status = 401)..." - -echo "RUNNING JavaScript CLI integration test for Validate Token Function With no token at all, Expecting getting 400 http status code" -answerAboutToken=$(testers/cli/node_modules/.bin/exhort-javascript-api validate-token snyk ) -matchConstant "400" "$answerAboutToken" "Checking That Token is missing, Expecting Response Status of Bad Request( Http Status = 400)..." -echo "==>SUCCESS!!" cleanup 0 diff --git a/integration/testers/cli/package.json b/integration/testers/cli/package.json index 4e208f20..702d007a 100644 --- a/integration/testers/cli/package.json +++ b/integration/testers/cli/package.json @@ -1,11 +1,11 @@ { "name": "cli-it", "version": "0.0.1", - "description": "exhort-javascript-api cli integration tests", + "description": "trustify-da-javascript-client cli integration tests", "private": true, "type": "module", "license": "Apache-2.0", "dependencies": { - "@trustification/exhort-javascript-api": "file:../../../" + "@trustify-da/trustify-da-javascript-client": "file:../../../" } } diff --git a/integration/testers/javascript/index.js b/integration/testers/javascript/index.js index 80f10538..35b278e9 100644 --- a/integration/testers/javascript/index.js +++ b/integration/testers/javascript/index.js @@ -1,6 +1,6 @@ #!/usr/bin/env node -import exhort from '@trustification/exhort-javascript-api' +import exhort from '@trustify-da/trustify-da-javascript-client' import process from 'node:process' const [,, ...args] = process.argv @@ -22,7 +22,7 @@ if ('component' === args[0]) { if ('validateToken' === args[0]) { // args[1] - the token passed let tokens = { - "EXHORT_SNYK_TOKEN" : args[1] + "TRUSTIFY_DA_SNYK_TOKEN" : args[1] } let res = await exhort.validateToken(tokens) console.log(res) diff --git a/integration/testers/javascript/package.json b/integration/testers/javascript/package.json index eac4af4b..2097e25d 100644 --- a/integration/testers/javascript/package.json +++ b/integration/testers/javascript/package.json @@ -1,11 +1,11 @@ { "name": "js-it", "version": "0.0.1", - "description": "exhort-javascript-api javascript integration tests", + "description": "trustify-da-javascript-client javascript integration tests", "private": true, "type": "module", "license": "Apache-2.0", "dependencies": { - "@trustification/exhort-javascript-api": "file:../../../" + "@trustify-da/trustify-da-javascript-client": "file:../../../" } } diff --git a/integration/testers/typescript/index.ts b/integration/testers/typescript/index.ts index 3e5ac38c..738ddbd2 100644 --- a/integration/testers/typescript/index.ts +++ b/integration/testers/typescript/index.ts @@ -1,8 +1,8 @@ #!/usr/bin/env node -import exhort from '@trustification/exhort-javascript-api' +import exhort from '@guacsec/trustify-da-javascript-client' import process from 'node:process' -import { AnalysisReport } from '@trustification/exhort-api-spec/model/v4/AnalysisReport' +import { AnalysisReport } from '@trustify-da/trustify-da-api-model/model/v5/AnalysisReport' const [,, ...args] = process.argv diff --git a/integration/testers/typescript/package.json b/integration/testers/typescript/package.json index 2e93e718..a3b052fd 100644 --- a/integration/testers/typescript/package.json +++ b/integration/testers/typescript/package.json @@ -1,7 +1,7 @@ { "name": "ts-it", "version": "0.0.1", - "description": "exhort-javascript-api typescript integration tests", + "description": "trustify-da-javascript-client typescript integration tests", "private": true, "type": "module", "license": "Apache-2.0", @@ -10,7 +10,7 @@ "compile": "tsc -p tsconfig.json" }, "dependencies": { - "@trustification/exhort-javascript-api": "file:../../../" + "@trustify-da/trustify-da-javascript-client": "file:../../../" }, "devDependencies": { "typescript": "^5.1.3" diff --git a/package-lock.json b/package-lock.json index 60012652..af932268 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "@trustification/exhort-javascript-api", + "name": "@trustify-da/trustify-da-javascript-client", "version": "0.2.4-ea.12", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@trustification/exhort-javascript-api", + "name": "@trustify-da/trustify-da-javascript-client", "version": "0.2.4-ea.12", "license": "Apache-2.0", "dependencies": { @@ -20,11 +20,11 @@ "yargs": "^17.7.2" }, "bin": { - "exhort-javascript-api": "dist/src/cli.js" + "trustify-da-javascript-client": "dist/src/cli.js" }, "devDependencies": { "@babel/core": "^7.23.2", - "@trustification/exhort-api-spec": "^1.0.18", + "@trustify-da/trustify-da-api-model": "^2.0.1", "@types/node": "^20.17.30", "@types/which": "^3.0.4", "babel-plugin-rewire": "^1.2.0", @@ -862,10 +862,10 @@ "dev": true, "license": "(Unlicense OR Apache-2.0)" }, - "node_modules/@trustification/exhort-api-spec": { - "version": "1.0.18", - "resolved": "https://npm.pkg.github.com/download/@trustification/exhort-api-spec/1.0.18/b7f6dc02d979899c009edbc0bf3d9bdee137f151", - "integrity": "sha512-ft9oRpItc9LDe/fzcrQiLYJBd3Tpmx0nMl9VMMSfajVDuy3Ot+vMqI3OvhytnzlSb3rY8UUg3+m7xqhi4U/zJw==", + "node_modules/@trustify-da/trustify-da-api-model": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@trustify-da/trustify-da-api-model/-/trustify-da-api-model-2.0.1.tgz", + "integrity": "sha512-lY383PH8JvcIBmkRVXvsyVu9hWiQy7AtknnM5LhG/ymLZtKPy2+pztTunLdF66w3hL+cPryidzls2O8ADBoBcA==", "dev": true, "license": "Apache-2.0" }, diff --git a/package.json b/package.json index 29f9d806..a8dddf65 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,11 @@ { - "name": "@trustification/exhort-javascript-api", + "name": "@trustify-da/trustify-da-javascript-client", "version": "0.2.4-ea.12", "description": "Code-Ready Dependency Analytics JavaScript API.", "license": "Apache-2.0", - "homepage": "https://github.com/trustification/exhort-javascript-api#README.md", - "bugs": "https://github.com/trustification/exhort-javascript-api/issues", - "repository": "github:trustification/exhort-javascript-api", - "publishConfig": { - "registry": "https://npm.pkg.github.com" - }, + "homepage": "https://github.com/guacsec/trustify-da-javascript-client#README.md", + "bugs": "https://github.com/guacsec/trustify-da-javascript-client/issues", + "repository": "github:guacsec/trustify-da-javascript-client", "keywords": [ "analysis", "codeready", @@ -35,8 +32,6 @@ "lint": "eslint src test --ext js", "lint:fix": "eslint src test --ext js --fix", "test": "c8 npm run tests", - "localtest": "EXHORT_PIP3_PATH=/home/zgrinber/python3.9/bin/pip3 EXHORT_PYTHON3_PATH=/home/zgrinber/python3.9/bin/python3 c8 npm run tests", - "postlocaltest": " git status | grep src/providers/ | grep rewire | xargs -i git clean -f {}", "tests": "mocha --config .mocharc.json --grep \"Integration Tests|.*analysis module.*\" --invert", "tests:rep": "mocha --reporter-option maxDiffSize=0 --reporter json > unit-tests-result.json", "integration-tests": "mocha --grep \"Integration Tests\"", @@ -56,7 +51,7 @@ }, "devDependencies": { "@babel/core": "^7.23.2", - "@trustification/exhort-api-spec": "^1.0.18", + "@trustify-da/trustify-da-api-model": "^2.0.1", "@types/node": "^20.17.30", "@types/which": "^3.0.4", "babel-plugin-rewire": "^1.2.0", diff --git a/src/analysis.js b/src/analysis.js index 780b7c62..8eddf6bf 100644 --- a/src/analysis.js +++ b/src/analysis.js @@ -22,7 +22,7 @@ const rhdaPackageManagerHeader = "rhda-pkg-manager" * @returns {RequestInit} The fetch options with proxy agent if applicable */ function addProxyAgent(options, opts) { - const proxyUrl = getCustom('EXHORT_PROXY_URL', null, opts); + const proxyUrl = getCustom('TRUSTIFY_DA_PROXY_URL', null, opts); if (proxyUrl) { options.agent = new HttpsProxyAgent(proxyUrl); } @@ -36,7 +36,7 @@ function addProxyAgent(options, opts) { * @param {string} url - the backend url to send the request to * @param {boolean} [html=false] - true will return 'text/html', false will return 'application/json' * @param {import("index.js").Options} [opts={}] - optional various options to pass along the application - * @returns {Promise} + * @returns {Promise} */ async function requestStack(provider, manifest, url, html = false, opts = {}) { opts["source-manifest"] = Buffer.from(fs.readFileSync(manifest).toString()).toString('base64') @@ -46,7 +46,7 @@ async function requestStack(provider, manifest, url, html = false, opts = {}) { opts[rhdaOperationTypeHeader.toUpperCase().replaceAll("-", "_")] = "stack-analysis" let startTime = new Date() let endTime - if (process.env["EXHORT_DEBUG"] === "true") { + if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { console.log("Starting time of sending stack analysis request to exhort server= " + startTime) } opts[rhdaPackageManagerHeader.toUpperCase().replaceAll("-", "_")] = provided.ecosystem @@ -62,7 +62,7 @@ async function requestStack(provider, manifest, url, html = false, opts = {}) { }, opts); const finalUrl = new URL(`${url}/api/v4/analysis`); - if (opts['EXHORT_RECOMMENDATIONS_ENABLED'] === 'false') { + if (opts['TRUSTIFY_DA_RECOMMENDATIONS_ENABLED'] === 'false') { finalUrl.searchParams.append('recommend', 'false'); } @@ -74,7 +74,7 @@ async function requestStack(provider, manifest, url, html = false, opts = {}) { } else { result = await resp.text() } - if (process.env["EXHORT_DEBUG"] === "true") { + if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { let exRequestId = resp.headers.get("ex-request-id"); if (exRequestId) { console.log("Unique Identifier associated with this request - ex-request-id=" + exRequestId) @@ -100,7 +100,7 @@ async function requestStack(provider, manifest, url, html = false, opts = {}) { * @param {string} manifest - path for the manifest * @param {string} url - the backend url to send the request to * @param {import("index.js").Options} [opts={}] - optional various options to pass along the application - * @returns {Promise} + * @returns {Promise} */ async function requestComponent(provider, manifest, url, opts = {}) { opts["source-manifest"] = Buffer.from(fs.readFileSync(manifest).toString()).toString('base64') @@ -108,7 +108,7 @@ async function requestComponent(provider, manifest, url, opts = {}) { let provided = provider.provideComponent(manifest, opts) // throws error if content providing failed opts["source-manifest"] = "" opts[rhdaOperationTypeHeader.toUpperCase().replaceAll("-", "_")] = "component-analysis" - if (process.env["EXHORT_DEBUG"] === "true") { + if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { console.log("Starting time of sending component analysis request to exhort server= " + new Date()) } opts[rhdaPackageManagerHeader.toUpperCase().replaceAll("-", "_")] = provided.ecosystem @@ -124,7 +124,7 @@ async function requestComponent(provider, manifest, url, opts = {}) { }, opts); const finalUrl = new URL(`${url}/api/v4/analysis`); - if (opts['EXHORT_RECOMMENDATIONS_ENABLED'] === 'false') { + if (opts['TRUSTIFY_DA_RECOMMENDATIONS_ENABLED'] === 'false') { finalUrl.searchParams.append('recommend', 'false'); } @@ -132,7 +132,7 @@ async function requestComponent(provider, manifest, url, opts = {}) { let result if (resp.status === 200) { result = await resp.json() - if (process.env["EXHORT_DEBUG"] === "true") { + if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { let exRequestId = resp.headers.get("ex-request-id"); if (exRequestId) { console.log("Unique Identifier associated with this request - ex-request-id=" + exRequestId) @@ -155,7 +155,7 @@ async function requestComponent(provider, manifest, url, opts = {}) { * @param {Array} imageRefs * @param {string} url * @param {import("index.js").Options} [opts={}] - optional various options to pass along the application - * @returns {Promise>} + * @returns {Promise>} */ async function requestImages(imageRefs, url, html = false, opts = {}) { const imageSboms = {} @@ -165,7 +165,7 @@ async function requestImages(imageRefs, url, html = false, opts = {}) { } const finalUrl = new URL(`${url}/api/v4/batch-analysis`); - if (opts['EXHORT_RECOMMENDATIONS_ENABLED'] === 'false') { + if (opts['TRUSTIFY_DA_RECOMMENDATIONS_ENABLED'] === 'false') { finalUrl.searchParams.append('recommend', 'false'); } @@ -186,7 +186,7 @@ async function requestImages(imageRefs, url, html = false, opts = {}) { } else { result = await resp.text() } - if (process.env["EXHORT_DEBUG"] === "true") { + if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { let exRequestId = resp.headers.get("ex-request-id"); if (exRequestId) { console.log("Unique Identifier associated with this request - ex-request-id=" + exRequestId) @@ -216,7 +216,7 @@ async function validateToken(url, opts = {}) { }, opts); let resp = await fetch(`${url}/api/v4/token`, fetchOptions) - if (process.env["EXHORT_DEBUG"] === "true") { + if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { let exRequestId = resp.headers.get("ex-request-id"); if (exRequestId) { console.log("Unique Identifier associated with this request - ex-request-id=" + exRequestId) @@ -248,11 +248,11 @@ function getTokenHeaders(opts = {}) { let supportedTokens = ['snyk', 'oss-index'] let headers = {} supportedTokens.forEach(vendor => { - let token = getCustom(`EXHORT_${vendor.replace("-", "_").toUpperCase()}_TOKEN`, null, opts); + let token = getCustom(`TRUSTIFY_DA_${vendor.replace("-", "_").toUpperCase()}_TOKEN`, null, opts); if (token) { headers[`ex-${vendor}-token`] = token } - let user = getCustom(`EXHORT_${vendor.replace("-", "_").toUpperCase()}_USER`, null, opts); + let user = getCustom(`TRUSTIFY_DA_${vendor.replace("-", "_").toUpperCase()}_USER`, null, opts); if (user) { headers[`ex-${vendor}-user`] = user } @@ -263,7 +263,7 @@ function getTokenHeaders(opts = {}) { setRhdaHeader(rhdaPackageManagerHeader, headers, opts) setRhdaHeader(rhdaTelemetryId, headers, opts); - if (process.env["EXHORT_DEBUG"] === "true") { + if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { console.log("Headers Values to be sent to exhort:" + EOL) for (const headerKey in headers) { if (!headerKey.match(RegexNotToBeLogged)) { diff --git a/src/cli.js b/src/cli.js index 956d76a2..c24797c6 100644 --- a/src/cli.js +++ b/src/cli.js @@ -48,7 +48,7 @@ const validateToken = { let opts={} if(args['tokenValue'] !== undefined && args['tokenValue'].trim() !=="" ) { let tokenValue = args['tokenValue'].trim() - opts[`EXHORT_${tokenProvider}_TOKEN`] = tokenValue + opts[`TRUSTIFY_DA_${tokenProvider}_TOKEN`] = tokenValue } let res = await exhort.validateToken(opts) console.log(res) diff --git a/src/cyclone_dx_sbom.js b/src/cyclone_dx_sbom.js index e699dccc..7e6efaad 100644 --- a/src/cyclone_dx_sbom.js +++ b/src/cyclone_dx_sbom.js @@ -159,7 +159,7 @@ export default class CycloneDxSbom { delete this.sbomObject.metadata.properties } - if (process.env["EXHORT_DEBUG"] === "true") { + if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { console.log("SBOM Generated for manifest, to be sent to exhort service:" + EOL + JSON.stringify(this.sbomObject, null, 4)) } return JSON.stringify(this.sbomObject) diff --git a/src/index.js b/src/index.js index dfd87d57..cb19c279 100644 --- a/src/index.js +++ b/src/index.js @@ -12,37 +12,32 @@ export { ImageRef } from "./oci_image/images.js"; export default { componentAnalysis, stackAnalysis, imageAnalysis, validateToken } -export const exhortDevDefaultUrl = 'https://exhort.stage.devshift.net'; - -/** @type {string} The default production URL for the Exhort backend. */ -export const exhortDefaultUrl = "https://rhda.rhcloud.com"; - /** * @typedef {{ - * EXHORT_DOCKER_PATH?: string | undefined, - * EXHORT_GO_MVS_LOGIC_ENABLED?: string | undefined, - * EXHORT_GO_PATH?: string | undefined, - * EXHORT_GRADLE_PATH?: string | undefined, - * EXHORT_IMAGE_PLATFORM?: string | undefined, - * EXHORT_MVN_PATH?: string | undefined, - * EXHORT_PIP_PATH?: string | undefined, - * EXHORT_PIP_USE_DEP_TREE?: string | undefined, - * EXHORT_PIP3_PATH?: string | undefined, - * EXHORT_PNPM_PATH?: string | undefined, - * EXHORT_PODMAN_PATH?: string | undefined, - * EXHORT_PREFER_GRADLEW?: string | undefined, - * EXHORT_PREFER_MVNW?: string | undefined, - * EXHORT_PROXY_URL?: string | undefined, - * EXHORT_PYTHON_INSTALL_BEST_EFFORTS?: string | undefined, - * EXHORT_PYTHON_PATH?: string | undefined, - * EXHORT_PYTHON_VIRTUAL_ENV?: string | undefined, - * EXHORT_PYTHON3_PATH?: string | undefined, - * EXHORT_RECOMMENDATIONS_ENABLED?: string | undefined, - * EXHORT_SKOPEO_CONFIG_PATH?: string | undefined, - * EXHORT_SKOPEO_PATH?: string | undefined, - * EXHORT_SYFT_CONFIG_PATH?: string | undefined, - * EXHORT_SYFT_PATH?: string | undefined, - * EXHORT_YARN_PATH?: string | undefined, + * TRUSTIFY_DA_DOCKER_PATH?: string | undefined, + * TRUSTIFY_DA_GO_MVS_LOGIC_ENABLED?: string | undefined, + * TRUSTIFY_DA_GO_PATH?: string | undefined, + * TRUSTIFY_DA_GRADLE_PATH?: string | undefined, + * TRUSTIFY_DA_IMAGE_PLATFORM?: string | undefined, + * TRUSTIFY_DA_MVN_PATH?: string | undefined, + * TRUSTIFY_DA_PIP_PATH?: string | undefined, + * TRUSTIFY_DA_PIP_USE_DEP_TREE?: string | undefined, + * TRUSTIFY_DA_PIP3_PATH?: string | undefined, + * TRUSTIFY_DA_PNPM_PATH?: string | undefined, + * TRUSTIFY_DA_PODMAN_PATH?: string | undefined, + * TRUSTIFY_DA_PREFER_GRADLEW?: string | undefined, + * TRUSTIFY_DA_PREFER_MVNW?: string | undefined, + * TRUSTIFY_DA_PROXY_URL?: string | undefined, + * TRUSTIFY_DA_PYTHON_INSTALL_BEST_EFFORTS?: string | undefined, + * TRUSTIFY_DA_PYTHON_PATH?: string | undefined, + * TRUSTIFY_DA_PYTHON_VIRTUAL_ENV?: string | undefined, + * TRUSTIFY_DA_PYTHON3_PATH?: string | undefined, + * TRUSTIFY_DA_RECOMMENDATIONS_ENABLED?: string | undefined, + * TRUSTIFY_DA_SKOPEO_CONFIG_PATH?: string | undefined, + * TRUSTIFY_DA_SKOPEO_PATH?: string | undefined, + * TRUSTIFY_DA_SYFT_CONFIG_PATH?: string | undefined, + * TRUSTIFY_DA_SYFT_PATH?: string | undefined, + * TRUSTIFY_DA_YARN_PATH?: string | undefined, * MATCH_MANIFEST_VERSIONS?: string | undefined, * RHDA_SOURCE?: string | undefined, * RHDA_TOKEN?: string | undefined, @@ -53,13 +48,13 @@ export const exhortDefaultUrl = "https://rhda.rhcloud.com"; /** - * Logs messages to the console if the EXHORT_DEBUG environment variable is set to "true". + * Logs messages to the console if the TRUSTIFY_DA_DEBUG environment variable is set to "true". * @param {string} alongsideText - The text to prepend to the log message. * @param {any} valueToBePrinted - The value to log. * @private */ function logOptionsAndEnvironmentsVariables(alongsideText,valueToBePrinted) { - if (process.env["EXHORT_DEBUG"] === "true") { + if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { console.log(`${alongsideText}: ${valueToBePrinted} ${EOL}`) } } @@ -86,56 +81,43 @@ function readAndPrintVersionFromPackageJson() { } let packageJson = JSON.parse(fs.readFileSync(path.join(dirName, "..", "package.json")).toString()) - logOptionsAndEnvironmentsVariables("exhort-javascript-api analysis started, version: ", packageJson.version) + logOptionsAndEnvironmentsVariables("trustify-da-javascript-client analysis started, version: ", packageJson.version) } /** * This function is used to determine exhort theUrl backend according to the following logic: - * If EXHORT_DEV_MODE = true, then take the value of the EXHORT BACKEND URL of dev/staging environment in such a way: + * If TRUSTIFY_DA_DEV_MODE = true, then take the value of the EXHORT BACKEND URL of dev/staging environment in such a way: * take it as environment variable if exists, otherwise, take it from opts object if exists, otherwise, use the hardcoded default of DEV environment. - * If EXHORT_DEV_MODE = false , then select the production theUrl of EXHORT Backend, which is hardcoded. - * EXHORT_DEV_MODE evaluated in the following order and selected when it finds it first: + * If TRUSTIFY_DA_DEV_MODE = false , then select the production theUrl of EXHORT Backend, which is hardcoded. + * TRUSTIFY_DA_DEV_MODE evaluated in the following order and selected when it finds it first: * 1. Environment Variable * 2. (key,value) from opts object * 3. Default False ( points to production URL ) - * @param {{}} [opts={}] - optional various options to override default EXHORT_DEV_MODE and DEV_EXHORT_BACKEND_URL. + * @param {{TRUSTIFY_DA_DEBUG?: string | undefined; TRUSTIFY_DA_BACKEND_URL?: string | undefined}} [opts={}] * @return {string} - The selected exhort backend * @private */ -function selectExhortBackend(opts = {}) { - let result - if (process.env["EXHORT_DEBUG"] === "true") { - let packageJson = readAndPrintVersionFromPackageJson(); +export function selectExhortBackend(opts = {}) { + if (getCustom("TRUSTIFY_DA_DEBUG", "false", opts) === "true") { + readAndPrintVersionFromPackageJson(); } - let exhortDevModeBundled = "false" - let exhortDevMode = getCustom("EXHORT_DEV_MODE", exhortDevModeBundled, opts) - if(exhortDevMode !== null && exhortDevMode.toString() === "true") { - result = getCustom('DEV_EXHORT_BACKEND_URL', exhortDevDefaultUrl, opts); + + let url; + if (getCustom('TRUSTIFY_DA_DEV_MODE', 'false', opts) === 'true') { + url = getCustom('DEV_TRUSTIFY_DA_BACKEND_URL', undefined, opts); } else { - result = exhortDefaultUrl + url = getCustom('TRUSTIFY_DA_BACKEND_URL', undefined, opts); } - logOptionsAndEnvironmentsVariables("Chosen exhort backend URL:", result) + if (!url) { + throw new Error(`TRUSTIFY_DA_BACKEND_URL is unset`) + } - return result; -} + logOptionsAndEnvironmentsVariables("Chosen exhort backend URL:", url) -/** - * Test function for selecting the Exhort backend URL. - * Primarily used for testing the backend selection logic. - * @param {object} [opts={}] - Optional configuration, similar to `selectExhortBackend`. - * @return {string} The selected exhort backend URL. - */ -export function testSelectExhortBackend(opts) { - return selectExhortBackend(opts) + return url; } -/** - * @type {string} The URL of the Exhort backend to send requests to. - * @private - */ -let theUrl - /** * @overload * @param {string} manifest @@ -150,7 +132,7 @@ let theUrl * @param {string} manifest * @param {false} html * @param {Options} [opts={}] - * @returns {Promise} + * @returns {Promise} * @throws {Error} */ @@ -160,12 +142,12 @@ let theUrl * @param {string} manifest - path for the manifest * @param {boolean} [html=false] - true will return a html string, false will return AnalysisReport object. * @param {Options} [opts={}] - optional various options to pass along the application - * @returns {Promise} + * @returns {Promise} * @throws {Error} if manifest inaccessible, no matching provider, failed to get create content, * or backend request failed */ async function stackAnalysis(manifest, html = false, opts = {}) { - theUrl = selectExhortBackend(opts) + const theUrl = selectExhortBackend(opts) fs.accessSync(manifest, fs.constants.R_OK) // throws error if file unreadable let provider = match(manifest, availableProviders) // throws error if no matching provider return await analysis.requestStack(provider, manifest, theUrl, html, opts) // throws error request sending failed @@ -175,11 +157,11 @@ async function stackAnalysis(manifest, html = false, opts = {}) { * Get component analysis report for a manifest content. * @param {string} manifest - path to the manifest * @param {Options} [opts={}] - optional various options to pass along the application - * @returns {Promise} + * @returns {Promise} * @throws {Error} if no matching provider, failed to get create content, or backend request failed */ async function componentAnalysis(manifest, opts = {}) { - theUrl = selectExhortBackend(opts) + const theUrl = selectExhortBackend(opts) fs.accessSync(manifest, fs.constants.R_OK) opts["manifest-type"] = path.basename(manifest) let provider = match(manifest, availableProviders) // throws error if no matching provider @@ -200,7 +182,7 @@ async function componentAnalysis(manifest, opts = {}) { * @param {Array} imageRefs * @param {false} html * @param {Options} [opts={}] - * @returns {Promise>} + * @returns {Promise>} * @throws {Error} */ @@ -210,12 +192,12 @@ async function componentAnalysis(manifest, opts = {}) { * @param {Array} imageRefs - OCI image references * @param {boolean} [html=false] - true will return a html string, false will return AnalysisReport * @param {Options} [opts={}] - optional various options to pass along the application - * @returns {Promise>} + * @returns {Promise>} * @throws {Error} if manifest inaccessible, no matching provider, failed to get create content, * or backend request failed */ async function imageAnalysis(imageRefs, html = false, opts = {}) { - theUrl = selectExhortBackend(opts) + const theUrl = selectExhortBackend(opts) return await analysis.requestImages(imageRefs, theUrl, html, opts) } @@ -226,6 +208,6 @@ async function imageAnalysis(imageRefs, html = false, opts = {}) { * @throws {Error} if the backend request failed. */ async function validateToken(opts = {}) { - theUrl = selectExhortBackend(opts) + const theUrl = selectExhortBackend(opts) return await analysis.validateToken(theUrl, opts) // throws error request sending failed } diff --git a/src/oci_image/utils.js b/src/oci_image/utils.js index 4b95a30d..c57e2941 100644 --- a/src/oci_image/utils.js +++ b/src/oci_image/utils.js @@ -6,14 +6,14 @@ import { ImageRef } from './images.js'; import { Platform } from './platform.js'; // Constants -const EXHORT_SYFT_CONFIG_PATH = "EXHORT_SYFT_CONFIG_PATH"; -const EXHORT_SYFT_IMAGE_SOURCE = "EXHORT_SYFT_IMAGE_SOURCE"; -const EXHORT_IMAGE_PLATFORM = "EXHORT_IMAGE_PLATFORM"; -const EXHORT_IMAGE_OS = "EXHORT_IMAGE_OS"; -const EXHORT_IMAGE_ARCH = "EXHORT_IMAGE_ARCH"; -const EXHORT_IMAGE_VARIANT = "EXHORT_IMAGE_VARIANT"; -const EXHORT_SKOPEO_CONFIG_PATH = "EXHORT_SKOPEO_CONFIG_PATH"; -const EXHORT_IMAGE_SERVICE_ENDPOINT = "EXHORT_IMAGE_SERVICE_ENDPOINT"; +const TRUSTIFY_DA_SYFT_CONFIG_PATH = "TRUSTIFY_DA_SYFT_CONFIG_PATH"; +const TRUSTIFY_DA_SYFT_IMAGE_SOURCE = "TRUSTIFY_DA_SYFT_IMAGE_SOURCE"; +const TRUSTIFY_DA_IMAGE_PLATFORM = "TRUSTIFY_DA_IMAGE_PLATFORM"; +const TRUSTIFY_DA_IMAGE_OS = "TRUSTIFY_DA_IMAGE_OS"; +const TRUSTIFY_DA_IMAGE_ARCH = "TRUSTIFY_DA_IMAGE_ARCH"; +const TRUSTIFY_DA_IMAGE_VARIANT = "TRUSTIFY_DA_IMAGE_VARIANT"; +const TRUSTIFY_DA_SKOPEO_CONFIG_PATH = "TRUSTIFY_DA_SKOPEO_CONFIG_PATH"; +const TRUSTIFY_DA_IMAGE_SERVICE_ENDPOINT = "TRUSTIFY_DA_IMAGE_SERVICE_ENDPOINT"; const MEDIA_TYPE_DOCKER2_MANIFEST = "application/vnd.docker.distribution.manifest.v2+json"; const MEDIA_TYPE_DOCKER2_MANIFEST_LIST = "application/vnd.docker.distribution.manifest.list.v2+json"; const MEDIA_TYPE_OCI1_MANIFEST = "application/vnd.oci.image.manifest.v1+json"; @@ -98,8 +98,8 @@ function execSyft(imageRef, opts = {}) { const docker = getCustomPath("docker", opts); const podman = getCustomPath("podman", opts); - const syftConfigPath = getCustom(EXHORT_SYFT_CONFIG_PATH, "", opts); - const imageSource = getCustom(EXHORT_SYFT_IMAGE_SOURCE, "", opts); + const syftConfigPath = getCustom(TRUSTIFY_DA_SYFT_CONFIG_PATH, "", opts); + const imageSource = getCustom(TRUSTIFY_DA_SYFT_IMAGE_SOURCE, "", opts); // Confirm image source exists, this will throw an error if not getImageSource(imageSource); @@ -173,19 +173,19 @@ function getSyftEnvs(dockerPath, podmanPath) { * @returns {Platform|null} - The platform information or null */ export function getImagePlatform(opts = {}) { - const platform = getCustom(EXHORT_IMAGE_PLATFORM, null, opts); + const platform = getCustom(TRUSTIFY_DA_IMAGE_PLATFORM, null, opts); if (platform) { return Platform.fromString(platform) } - const imageSource = getCustom(EXHORT_SYFT_IMAGE_SOURCE, "", opts); + const imageSource = getCustom(TRUSTIFY_DA_SYFT_IMAGE_SOURCE, "", opts); const source = getImageSource(imageSource); - let os = getCustom(EXHORT_IMAGE_OS, null, opts); + let os = getCustom(TRUSTIFY_DA_IMAGE_OS, null, opts); if (!os) { os = source.getOs(opts); } - let arch = getCustom(EXHORT_IMAGE_ARCH, null, opts); + let arch = getCustom(TRUSTIFY_DA_IMAGE_ARCH, null, opts); if (!arch) { arch = source.getArch(opts); } @@ -194,7 +194,7 @@ export function getImagePlatform(opts = {}) { return Platform.fromComponents(os, arch, null); } - let variant = getCustom(EXHORT_IMAGE_VARIANT, null, opts); + let variant = getCustom(TRUSTIFY_DA_IMAGE_VARIANT, null, opts); if (!variant) { variant = source.getVariant(opts); } @@ -443,8 +443,8 @@ function getSingleImageDigest(imageRef, opts = {}) { function execSkopeoInspect(imageRef, raw, opts = {}) { const skopeo = getCustomPath("skopeo", opts); - const configPath = getCustom(EXHORT_SKOPEO_CONFIG_PATH, null, opts); - const daemonHost = getCustom(EXHORT_IMAGE_SERVICE_ENDPOINT, null, opts); + const configPath = getCustom(TRUSTIFY_DA_SKOPEO_CONFIG_PATH, null, opts); + const daemonHost = getCustom(TRUSTIFY_DA_IMAGE_SERVICE_ENDPOINT, null, opts); const args = [ "inspect", diff --git a/src/providers/golang_gomodules.js b/src/providers/golang_gomodules.js index 90bb2dd8..676e9832 100644 --- a/src/providers/golang_gomodules.js +++ b/src/providers/golang_gomodules.js @@ -282,7 +282,7 @@ function getSBOM(manifest, opts = {}, includeTransitive) { const mainModule = toPurl(root, "@") sbom.addRoot(mainModule) - const exhortGoMvsLogicEnabled = getCustom("EXHORT_GO_MVS_LOGIC_ENABLED", "true", opts) + const exhortGoMvsLogicEnabled = getCustom("TRUSTIFY_DA_GO_MVS_LOGIC_ENABLED", "true", opts) if(includeTransitive && exhortGoMvsLogicEnabled === "true") { rows = getFinalPackagesVersionsForModule(rows, manifest, goBin) } diff --git a/src/providers/java_gradle.js b/src/providers/java_gradle.js index e47f2581..443abb13 100644 --- a/src/providers/java_gradle.js +++ b/src/providers/java_gradle.js @@ -17,8 +17,8 @@ import Base_java, { ecosystem_gradle } from "./base_java.js"; const ROOT_PROJECT_KEY_NAME = "root-project"; -const EXHORT_IGNORE_REGEX_LINE = /.*\s?exhortignore\s*$/g -const EXHORT_IGNORE_REGEX = /\/\/\s?exhortignore/ +const TRUSTIFY_DA_IGNORE_REGEX_LINE = /.*\s?exhortignore\s*$/g +const TRUSTIFY_DA_IGNORE_REGEX = /\/\/\s?exhortignore/ /** * Check if the dependency marked for exclusion has libs notation , so if it's true the rest of coordinates( GAV) should be fetched from TOML file. @@ -215,7 +215,7 @@ export default class Java_gradle extends Base_java { let content = this.#getDependencies(manifest, opts) let properties = this.#extractProperties(manifest, opts) // read dependency tree from temp file - if (process.env["EXHORT_DEBUG"] === "true") { + if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { console.log("Dependency tree that will be used as input for creating the BOM =>" + EOL + EOL + content) } let sbom = this.#buildSbom(content, properties, manifest, opts) @@ -381,9 +381,9 @@ export default class Java_gradle extends Base_java { #getIgnoredDeps(manifestPath) { let buildGradleLines = fs.readFileSync(manifestPath).toString().split(EOL) let ignored = - buildGradleLines.filter(line => line && line.match(EXHORT_IGNORE_REGEX_LINE)) + buildGradleLines.filter(line => line && line.match(TRUSTIFY_DA_IGNORE_REGEX_LINE)) .map(line => line.indexOf("/*") === -1 ? line : line.substring(0, line.indexOf("/*"))) - .map(line => line.trim().substring(0, line.trim().search(EXHORT_IGNORE_REGEX))) + .map(line => line.trim().substring(0, line.trim().search(TRUSTIFY_DA_IGNORE_REGEX))) let depsToIgnore = new Array ignored.forEach(depToBeIgnored => { diff --git a/src/providers/java_maven.js b/src/providers/java_maven.js index 269697b2..c7f43a9e 100644 --- a/src/providers/java_maven.js +++ b/src/providers/java_maven.js @@ -75,7 +75,7 @@ export default class Java_maven extends Base_java { #createSbomStackAnalysis(manifest, opts = {}) { const manifestDir = path.dirname(manifest) const mvn = this.selectToolBinary(manifest, opts) - const mvnArgs = JSON.parse(getCustom('EXHORT_MVN_ARGS', '[]', opts)); + const mvnArgs = JSON.parse(getCustom('TRUSTIFY_DA_MVN_ARGS', '[]', opts)); if (!Array.isArray(mvnArgs)) { throw new Error(`configured maven args is not an array, is a ${typeof mvnArgs}`) } @@ -116,7 +116,7 @@ export default class Java_maven extends Base_java { } // read dependency tree from temp file let content = fs.readFileSync(tmpDepTree) - if (process.env["EXHORT_DEBUG"] === "true") { + if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { console.error("Dependency tree that will be used as input for creating the BOM =>" + EOL + EOL + content.toString()) } let sbom = this.createSbomFileFromTextFormat(content.toString(), ignoredDeps, opts); @@ -151,7 +151,7 @@ export default class Java_maven extends Base_java { */ #getSbomForComponentAnalysis(manifestPath, opts = {}) { const mvn = this.selectToolBinary(manifestPath, opts) - const mvnArgs = JSON.parse(getCustom('EXHORT_MVN_ARGS', '[]', opts)); + const mvnArgs = JSON.parse(getCustom('TRUSTIFY_DA_MVN_ARGS', '[]', opts)); if (!Array.isArray(mvnArgs)) { throw new Error(`configured maven args is not an array, is a ${typeof mvnArgs}`) } diff --git a/src/providers/python_controller.js b/src/providers/python_controller.js index a0c115e3..31170129 100644 --- a/src/providers/python_controller.js +++ b/src/providers/python_controller.js @@ -6,7 +6,7 @@ import {environmentVariableIsPopulated,getCustom, invokeCommand} from "../tools. function getPipFreezeOutput() { try { - return environmentVariableIsPopulated("EXHORT_PIP_FREEZE") ? new Buffer.from(process.env["EXHORT_PIP_FREEZE"], 'base64').toString('ascii') : invokeCommand(this.pathToPipBin, ['freeze', '--all']).toString(); + return environmentVariableIsPopulated("TRUSTIFY_DA_PIP_FREEZE") ? new Buffer.from(process.env["TRUSTIFY_DA_PIP_FREEZE"], 'base64').toString('ascii') : invokeCommand(this.pathToPipBin, ['freeze', '--all']).toString(); } catch (error) { throw new Error('Failed invoking \'pip freeze\' to list all installed packages in environment', {cause: error}) } @@ -14,7 +14,7 @@ function getPipFreezeOutput() { function getPipShowOutput(depNames) { try { - return environmentVariableIsPopulated("EXHORT_PIP_SHOW") ? new Buffer.from(process.env["EXHORT_PIP_SHOW"], 'base64').toString('ascii') : invokeCommand(this.pathToPipBin, ['show', ...depNames]).toString(); + return environmentVariableIsPopulated("TRUSTIFY_DA_PIP_SHOW") ? new Buffer.from(process.env["TRUSTIFY_DA_PIP_SHOW"], 'base64').toString('ascii') : invokeCommand(this.pathToPipBin, ['show', ...depNames]).toString(); } catch (error) { throw new Error('fail invoking \'pip show\' to fetch metadata for all installed packages in environment', {cause: error}) } @@ -102,12 +102,12 @@ export default class Python_controller { getDependencies(includeTransitive) { let startingTime let endingTime - if (process.env["EXHORT_DEBUG"] === "true") { + if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { startingTime = new Date() console.log("Starting time to get requirements.txt dependency tree = " + startingTime) } if(!this.realEnvironment) { - let installBestEfforts = getCustom("EXHORT_PYTHON_INSTALL_BEST_EFFORTS","false",this.options); + let installBestEfforts = getCustom("TRUSTIFY_DA_PYTHON_INSTALL_BEST_EFFORTS","false",this.options); if(installBestEfforts === "false") { try { invokeCommand(this.pathToPipBin, ['install', '-r', this.pathToRequirements]) @@ -121,14 +121,14 @@ export default class Python_controller { else { let matchManifestVersions = getCustom("MATCH_MANIFEST_VERSIONS","true",this.options); if(matchManifestVersions === "true") { - throw new Error("Conflicting settings, EXHORT_PYTHON_INSTALL_BEST_EFFORTS=true can only work with MATCH_MANIFEST_VERSIONS=false") + throw new Error("Conflicting settings, TRUSTIFY_DA_PYTHON_INSTALL_BEST_EFFORTS=true can only work with MATCH_MANIFEST_VERSIONS=false") } this.#installingRequirementsOneByOne() } } let dependencies = this.#getDependenciesImpl(includeTransitive) this.#cleanEnvironment() - if (process.env["EXHORT_DEBUG"] === "true") { + if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { endingTime = new Date() console.log("Ending time to get requirements.txt dependency tree = " + endingTime) let time = ( endingTime - startingTime ) / 1000 @@ -164,7 +164,7 @@ export default class Python_controller { #getDependenciesImpl(includeTransitive) { let dependencies = new Array() - let usePipDepTree = getCustom("EXHORT_PIP_USE_DEP_TREE","false",this.options); + let usePipDepTree = getCustom("TRUSTIFY_DA_PIP_USE_DEP_TREE","false",this.options); let freezeOutput let lines let depNames @@ -336,7 +336,7 @@ function bringAllDependencies(dependencies, dependencyName, cachedEnvironmentDep } let record = cachedEnvironmentDeps[dependencyName.toLowerCase()] if(record == null) { - throw new Error(`Package ${dependencyName} is not installed in your python environment, either install it (better to install requirements.txt altogether) or set the setting EXHORT_PYTHON_VIRTUAL_ENV=true to automatically install it in virtual environment (please note that this may slow down the analysis)`) + throw new Error(`Package ${dependencyName} is not installed in your python environment, either install it (better to install requirements.txt altogether) or set the setting TRUSTIFY_DA_PYTHON_VIRTUAL_ENV=true to automatically install it in virtual environment (please note that this may slow down the analysis)`) } let depName let version; diff --git a/src/providers/python_pip.js b/src/providers/python_pip.js index 062da21a..9edf7b6e 100644 --- a/src/providers/python_pip.js +++ b/src/providers/python_pip.js @@ -174,9 +174,9 @@ function getPythonPipBinaries(binaries,opts) { */ function handlePythonEnvironment(binaries, opts) { let createVirtualPythonEnv - if (!environmentVariableIsPopulated("EXHORT_PIP_SHOW") && !environmentVariableIsPopulated("EXHORT_PIP_FREEZE")) { + if (!environmentVariableIsPopulated("TRUSTIFY_DA_PIP_SHOW") && !environmentVariableIsPopulated("TRUSTIFY_DA_PIP_FREEZE")) { getPythonPipBinaries(binaries, opts) - createVirtualPythonEnv = getCustom("EXHORT_PYTHON_VIRTUAL_ENV", "false", opts); + createVirtualPythonEnv = getCustom("TRUSTIFY_DA_PYTHON_VIRTUAL_ENV", "false", opts); } // bypass invoking python and pip, as we get all information needed to build the dependency tree from these Environment variables. else { diff --git a/src/sbom.js b/src/sbom.js index 4f4da826..b837e84e 100644 --- a/src/sbom.js +++ b/src/sbom.js @@ -5,7 +5,7 @@ export default class Sbom { #startTime #endTime constructor() { - if (process.env["EXHORT_DEBUG"] === "true") { + if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { this.#startTime = new Date() console.log("Starting time to create sbom = " + this.#startTime) } @@ -57,7 +57,7 @@ export default class Sbom { * @return String sbom json in a string format */ getAsJsonString(opts = {}){ - if (process.env["EXHORT_DEBUG"] === "true") { + if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { this.#endTime = new Date() console.log("Ending time to create sbom = " + this.#endTime) let time = (this.#endTime - this.#startTime) / 1000 diff --git a/src/tools.js b/src/tools.js index 82b2fee3..b3e9a320 100644 --- a/src/tools.js +++ b/src/tools.js @@ -3,7 +3,7 @@ import { EOL } from "os"; import { PackageURL } from "packageurl-js"; -export const RegexNotToBeLogged = /EXHORT_.*_TOKEN|ex-.*-token/ +export const RegexNotToBeLogged = /TRUSTIFY_DA_.*_TOKEN|ex-.*-token/ /** * * @param {string} key to log its value from environment variables and from opts, if it exists @@ -35,7 +35,7 @@ export function logValueFromObjects(key,opts, defValue) { * default supplied */ export function getCustom(key, def = null, opts = {}) { - if (process.env["EXHORT_DEBUG"] === "true" && !key.match(RegexNotToBeLogged)) { + if (process.env["TRUSTIFY_DA_DEBUG"] === "true" && !key.match(RegexNotToBeLogged)) { logValueFromObjects(key, opts, def) } return key in process.env ? process.env[key] : key in opts && typeof opts[key] === 'string' ? opts[key] : def @@ -43,7 +43,7 @@ export function getCustom(key, def = null, opts = {}) { /** * Utility function for looking up custom variable for a binary path. - * Will look in the environment variables (1) or in opts (2) for a key with EXHORT_x_PATH, x is an + * Will look in the environment variables (1) or in opts (2) for a key with TRUSTIFY_DA_x_PATH, x is an * uppercase version of passed name to look for. The name will also be returned if nothing else was * found. * @param name the binary name to look for, will be returned as value in nothing else found @@ -52,7 +52,7 @@ export function getCustom(key, def = null, opts = {}) { * original name supplied */ export function getCustomPath(name, opts = {}) { - return getCustom(`EXHORT_${name.toUpperCase()}_PATH`, name, opts) + return getCustom(`TRUSTIFY_DA_${name.toUpperCase()}_PATH`, name, opts) } /** @@ -63,7 +63,7 @@ export function getCustomPath(name, opts = {}) { * @returns {boolean} whether to prefer the wrapper if exists or not */ export function getWrapperPreference(name, opts = {}) { - return getCustom(`EXHORT_PREFER_${name.toUpperCase()}W`, 'true', opts) === 'true' + return getCustom(`TRUSTIFY_DA_PREFER_${name.toUpperCase()}W`, 'true', opts) === 'true' } export function environmentVariableIsPopulated(envVariableName) { diff --git a/test/analysis.test.js b/test/analysis.test.js index c0404d9d..70b0e980 100644 --- a/test/analysis.test.js +++ b/test/analysis.test.js @@ -121,7 +121,7 @@ suite('testing the analysis module for sending api requests', () => { }), async () => { let options = { - 'EXHORT_SNYK_TOKEN': 'good-dummy-token' + 'TRUSTIFY_DA_SNYK_TOKEN': 'good-dummy-token' } // verify response as expected let res = await analysis.validateToken(backendUrl, options) @@ -136,7 +136,7 @@ suite('testing the analysis module for sending api requests', () => { }), async () => { let options = { - 'EXHORT_SNYK_TOKEN': 'bad-dummy-token' + 'TRUSTIFY_DA_SNYK_TOKEN': 'bad-dummy-token' } // verify response as expected let res = await analysis.validateToken(backendUrl, options) @@ -172,7 +172,7 @@ suite('testing the analysis module for sending api requests', () => { isSupported: () => {} // not required for this test }; - afterEach(() => delete process.env['EXHORT_SNYK_TOKEN']) + afterEach(() => delete process.env['TRUSTIFY_DA_SNYK_TOKEN']) test('when the relevant token environment variables are set, verify corresponding headers are included', interceptAndRun( // interception route, will return ok response if found the expected token @@ -183,7 +183,7 @@ suite('testing the analysis module for sending api requests', () => { return res(ctx.status(400)) }), async () => { - process.env['EXHORT_SNYK_TOKEN'] = 'dummy-snyk-token' + process.env['TRUSTIFY_DA_SNYK_TOKEN'] = 'dummy-snyk-token' let res = await analysis.requestStack(fakeProvider, fakeManifest, backendUrl) expect(res).to.deep.equal({ok: 'ok'}) } @@ -215,7 +215,7 @@ suite('testing the analysis module for sending api requests', () => { }; afterEach(() => { - delete process.env['EXHORT_PROXY_URL'] + delete process.env['TRUSTIFY_DA_PROXY_URL'] }) test('when HTTP proxy is configured, verify agent is set correctly', interceptAndRun( @@ -226,7 +226,7 @@ suite('testing the analysis module for sending api requests', () => { async () => { const httpProxyUrl = 'http://proxy.example.com:8080' const options = { - 'EXHORT_PROXY_URL': httpProxyUrl + 'TRUSTIFY_DA_PROXY_URL': httpProxyUrl } let res = await analysis.requestStack(fakeProvider, fakeManifest, backendUrl, false, options) expect(res).to.deep.equal({ok: 'ok'}) @@ -241,7 +241,7 @@ suite('testing the analysis module for sending api requests', () => { async () => { const httpsProxyUrl = 'https://proxy.example.com:8080' const options = { - 'EXHORT_PROXY_URL': httpsProxyUrl + 'TRUSTIFY_DA_PROXY_URL': httpsProxyUrl } let res = await analysis.requestStack(fakeProvider, fakeManifest, backendUrl, false, options) expect(res).to.deep.equal({ok: 'ok'}) @@ -254,7 +254,7 @@ suite('testing the analysis module for sending api requests', () => { return res(ctx.json({ok: 'ok'})) }), async () => { - process.env['EXHORT_PROXY_URL'] = 'http://proxy.example.com:8080' + process.env['TRUSTIFY_DA_PROXY_URL'] = 'http://proxy.example.com:8080' let res = await analysis.requestStack(fakeProvider, fakeManifest, backendUrl) expect(res).to.deep.equal({ok: 'ok'}) } diff --git a/test/get-exhort-url.test.js b/test/get-exhort-url.test.js index f511391f..9fff03d3 100644 --- a/test/get-exhort-url.test.js +++ b/test/get-exhort-url.test.js @@ -1,117 +1,127 @@ import { expect } from 'chai' -import {exhortDefaultUrl, exhortDevDefaultUrl, testSelectExhortBackend} from "../src/index.js" +import { selectExhortBackend } from '../src/index.js' -suite('testing Select Exhort Backend function when EXHORT_DEV_MODE environment variable is True', () => { +const testProdUrl = 'https://exhort.example.com'; +const testDevUrl = 'https://dev.exhort.example.com'; - test('When Dev Mode environment Variable= true, default DEV Exhort Backend Selected ', () => { - let testOpts = { - "EXHORT_DEV_MODE" : "true" +suite('testing Select Exhort Backend function when TRUSTIFY_DA_DEV_MODE environment variable is True', () => { + test('When Dev Mode environment Variable= true, default DEV Exhort Backend Selected', () => { + let testOpts = { + 'TRUSTIFY_DA_DEV_MODE': 'true' } - let selectedUrl = testSelectExhortBackend(testOpts); - expect(selectedUrl).not.to.be.equals(exhortDefaultUrl) - expect(selectedUrl).to.be.equals(exhortDevDefaultUrl) + let selectedUrl = selectExhortBackend(testOpts); + expect(selectedUrl).not.to.be.equals(testProdUrl) + expect(selectedUrl).to.be.equals(testDevUrl) }); - test('When Dev Mode environment Variable= true, and despite option Dev Mode = false , default DEV Exhort Backend Selected ', () => { + test('When Dev Mode environment Variable= true, and despite option Dev Mode = false, default DEV Exhort Backend Selected', () => { let testOpts = { - "EXHORT_DEV_MODE" : "false" + 'TRUSTIFY_DA_DEV_MODE': 'false' } - let selectedUrl = testSelectExhortBackend(testOpts); - expect(selectedUrl).not.to.be.equals(exhortDefaultUrl) - expect(selectedUrl).to.be.equals(exhortDevDefaultUrl) + let selectedUrl = selectExhortBackend(testOpts); + expect(selectedUrl).not.to.be.equals(testProdUrl) + expect(selectedUrl).to.be.equals(testDevUrl) }); - test('When Dev Mode environment Variable= true, And option DEV_EXHORT_BACKEND_URL contains some url route that client set , default DEV Exhort Backend Not Selected ', () => { - const dummyRoute = "http://dummy-exhort-route"; + test('When Dev Mode environment Variable= true, And option DEV_TRUSTIFY_DA_BACKEND_URL contains some url route that client set, default DEV Exhort Backend Not Selected', () => { + const dummyRoute = 'http://dummy-exhort-route'; + delete process.env['DEV_TRUSTIFY_DA_BACKEND_URL'] let testOpts = { - "DEV_EXHORT_BACKEND_URL" : dummyRoute + 'DEV_TRUSTIFY_DA_BACKEND_URL': dummyRoute } - let selectedUrl = testSelectExhortBackend(testOpts); - expect(selectedUrl).not.to.be.equals(exhortDevDefaultUrl) + let selectedUrl = selectExhortBackend(testOpts); expect(selectedUrl).to.be.equals(dummyRoute) }); -}).beforeAll(() => process.env["EXHORT_DEV_MODE"] = "true" ).afterAll(() => delete process.env['EXHORT_DEV_MODE']); +}).beforeAll(() => { + process.env['TRUSTIFY_DA_DEV_MODE'] = 'true' + process.env['TRUSTIFY_DA_BACKEND_URL'] = testProdUrl + process.env['DEV_TRUSTIFY_DA_BACKEND_URL'] = testDevUrl +}).afterAll(() => delete process.env['TRUSTIFY_DA_DEV_MODE']); -suite('testing Select Exhort Backend function when EXHORT_DEV_MODE environment variable is false', () => { +suite('testing Select Exhort Backend function when TRUSTIFY_DA_DEV_MODE environment variable is false', () => { - test('When Dev Mode environment Variable= true, default DEV Exhort Backend Selected ', () => { + test('When Dev Mode environment Variable= true, default DEV Exhort Backend Selected', () => { let testOpts = { - "EXHORT_DEV_MODE" : "false" + 'TRUSTIFY_DA_DEV_MODE': 'false' } - let selectedUrl = testSelectExhortBackend(testOpts); - expect(selectedUrl).not.to.be.equals(exhortDevDefaultUrl) - expect(selectedUrl).to.be.equals(exhortDefaultUrl) + let selectedUrl = selectExhortBackend(testOpts); + expect(selectedUrl).not.to.be.equals(testDevUrl) + expect(selectedUrl).to.be.equals(testProdUrl) }); - test('When Dev Mode environment Variable= false, and despite option Dev Mode = true , default Exhort Backend Selected (production) ', () => { - let dummyRoute = "http://dummy-dev-route-exhirt" + test('When Dev Mode environment Variable= false, and despite option Dev Mode = true, default Exhort Backend Selected (production)', () => { + let dummyRoute = 'http://dummy-dev-route-exhort' let testOpts = { - "EXHORT_DEV_MODE" : "true", - "DEV_EXHORT_BACKEND_URL" : dummyRoute + 'TRUSTIFY_DA_DEV_MODE': 'true', + 'DEV_TRUSTIFY_DA_BACKEND_URL': dummyRoute } - let selectedUrl = testSelectExhortBackend(testOpts); + let selectedUrl = selectExhortBackend(testOpts); expect(selectedUrl).not.to.be.equals(dummyRoute) - expect(selectedUrl).to.be.equals(exhortDefaultUrl) + expect(selectedUrl).to.be.equals(testProdUrl) }); - test('When Dev Mode environment Variable= false, environment variable DEV_EXHORT_BACKEND_URL=dummy-url , option EXHORT_DEV_MODE=true , default Exhort Backend Selected anyway ', () => { - const dummyRoute = "http://dummy-url" - process.env["DEV_EXHORT_BACKEND_URL"] = dummyRoute + test('When Dev Mode environment Variable= false, environment variable DEV_TRUSTIFY_DA_BACKEND_URL=dummy-url, option TRUSTIFY_DA_DEV_MODE=true, default Exhort Backend Selected anyway', () => { + const dummyRoute = 'http://dummy-url' + process.env['DEV_TRUSTIFY_DA_BACKEND_URL'] = dummyRoute let testOpts = { - "EXHORT_DEV_MODE" : "true", - "DEV_EXHORT_BACKEND_URL" : dummyRoute + 'TRUSTIFY_DA_DEV_MODE': 'true', + 'DEV_TRUSTIFY_DA_BACKEND_URL': dummyRoute } - let selectedUrl = testSelectExhortBackend(testOpts); - delete process.env["DEV_EXHORT_BACKEND_URL"] + let selectedUrl = selectExhortBackend(testOpts); + delete process.env['DEV_TRUSTIFY_DA_BACKEND_URL'] expect(selectedUrl).not.to.be.equals(dummyRoute) - expect(selectedUrl).to.be.equals(exhortDefaultUrl) + expect(selectedUrl).to.be.equals(testProdUrl) }); -}).beforeAll(() => process.env["EXHORT_DEV_MODE"] = "false" ).afterAll(() => delete process.env['EXHORT_DEV_MODE']); +}).beforeAll(() => { + process.env['TRUSTIFY_DA_DEV_MODE'] = 'false' + process.env['TRUSTIFY_DA_BACKEND_URL'] = testProdUrl + process.env['DEV_TRUSTIFY_DA_BACKEND_URL'] = testDevUrl +}).afterAll(() => delete process.env['TRUSTIFY_DA_DEV_MODE']); -suite('testing Select Exhort Backend function when EXHORT_DEV_MODE environment variable is not set', () => { +suite('testing Select Exhort Backend function when TRUSTIFY_DA_DEV_MODE environment variable is not set', () => { test('When Dev Mode Option = false, default Exhort Backend Selected (production)', () => { let testOpts = { - "EXHORT_DEV_MODE" : "false" + 'TRUSTIFY_DA_DEV_MODE': 'false' } - let selectedUrl = testSelectExhortBackend(testOpts); - expect(selectedUrl).not.to.be.equals(exhortDevDefaultUrl) - expect(selectedUrl).to.be.equals(exhortDefaultUrl) + let selectedUrl = selectExhortBackend(testOpts); + expect(selectedUrl).not.to.be.equals(testDevUrl) + expect(selectedUrl).to.be.equals(testProdUrl) }); - test('When Dev Mode Option Variable= true, default dev Exhort Backend Selected ', () => { + test('When Dev Mode Option Variable= true, default dev Exhort Backend Selected', () => { let testOpts = { - "EXHORT_DEV_MODE" : "true" + 'TRUSTIFY_DA_DEV_MODE': 'true' } - let selectedUrl = testSelectExhortBackend(testOpts); - expect(selectedUrl).not.to.be.equals(exhortDefaultUrl) - expect(selectedUrl).to.be.equals(exhortDevDefaultUrl) + let selectedUrl = selectExhortBackend(testOpts); + expect(selectedUrl).not.to.be.equals(testProdUrl) + expect(selectedUrl).to.be.equals(testDevUrl) }); - test('When Dev Mode option = true, option DEV_EXHORT_BACKEND_URL=some dummy-url , then some dummy-url Selected ', () => { - let dummyRoute = "http://dummy-dev-route-exhirt" - process.env["DEV_EXHORT_BACKEND_URL"] = dummyRoute + test('When Dev Mode option = true, option DEV_TRUSTIFY_DA_BACKEND_URL=some dummy-url, then some dummy-url Selected', () => { + let dummyRoute = 'http://dummy-dev-route-exhort' + process.env['DEV_TRUSTIFY_DA_BACKEND_URL'] = dummyRoute let testOpts = { - "EXHORT_DEV_MODE" : "true", - "DEV_EXHORT_BACKEND_URL" : dummyRoute + 'TRUSTIFY_DA_DEV_MODE': 'true', + 'DEV_TRUSTIFY_DA_BACKEND_URL': dummyRoute } - let selectedUrl = testSelectExhortBackend(testOpts); - expect(selectedUrl).not.to.be.equals(exhortDefaultUrl) + let selectedUrl = selectExhortBackend(testOpts); + expect(selectedUrl).not.to.be.equals(testProdUrl) expect(selectedUrl).to.be.equals(dummyRoute) - delete process.env["DEV_EXHORT_BACKEND_URL"] - }); - - test('When Nothing set, Choose default backend (production) ', () => { - let selectedUrl = testSelectExhortBackend({}); - expect(selectedUrl).to.be.equals(exhortDefaultUrl) + delete process.env['DEV_TRUSTIFY_DA_BACKEND_URL'] }); - + test('When Nothing set, throw error', () => { + let selectedUrl = selectExhortBackend({}); + expect(selectedUrl).to.be.equals(testProdUrl) + }) +}).beforeAll(() => { + process.env['TRUSTIFY_DA_BACKEND_URL'] = testProdUrl; + process.env['DEV_TRUSTIFY_DA_BACKEND_URL'] = testDevUrl }); - diff --git a/test/it/end-to-end.js b/test/it/end-to-end.js index a73db28d..946eb463 100644 --- a/test/it/end-to-end.js +++ b/test/it/end-to-end.js @@ -46,11 +46,11 @@ suite('Integration Tests', () => { ].forEach(packageManager => { test(`Stack Analysis json for ${packageManager}`, async () => { if(packageManager === "pip") { - process.env["EXHORT_PYTHON_VIRTUAL_ENV"] = "true" + process.env["TRUSTIFY_DA_PYTHON_VIRTUAL_ENV"] = "true" } else { - process.env["EXHORT_PYTHON_VIRTUAL_ENV"] = "" + process.env["TRUSTIFY_DA_PYTHON_VIRTUAL_ENV"] = "" } - process.env["EXHORT_DEV_MODE"] = "true" + process.env["TRUSTIFY_DA_DEV_MODE"] = "true" let manifestName = packageManagersDict[packageManager] let pomPath = `test/it/test_manifests/${packageManager}/${manifestName}` let providedDataForStack = await index.stackAnalysis(pomPath) @@ -70,9 +70,9 @@ suite('Integration Tests', () => { let pomPath = `test/it/test_manifests/${packageManager}/${manifestName}` let html = await index.stackAnalysis(pomPath,true) if(packageManager === "pip") { - process.env["EXHORT_PYTHON_VIRTUAL_ENV"] = "true" + process.env["TRUSTIFY_DA_PYTHON_VIRTUAL_ENV"] = "true" } else { - process.env["EXHORT_PYTHON_VIRTUAL_ENV"] = "" + process.env["TRUSTIFY_DA_PYTHON_VIRTUAL_ENV"] = "" } let reportParsedFromHtml let parsedSummaryFromHtml @@ -111,4 +111,4 @@ suite('Integration Tests', () => { }); -}).beforeAll(() => process.env["EXHORT_DEV_MODE"] = "true"); +}).beforeAll(() => process.env["TRUSTIFY_DA_DEV_MODE"] = "true"); diff --git a/test/providers/golang_gomodules.test.js b/test/providers/golang_gomodules.test.js index 32063f97..1a4d2df2 100644 --- a/test/providers/golang_gomodules.test.js +++ b/test/providers/golang_gomodules.test.js @@ -68,7 +68,7 @@ suite('testing the golang-go-modules data provider', () => { let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/golang/${testCase}/expected_sbom_stack_analysis.json`,).toString() // expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) // invoke sut stack analysis for scenario manifest - let providedDataForStack = golangGoModules.provideStack(`test/providers/tst_manifests/golang/${testCase}/go.mod`,{"EXHORT_GO_MVS_LOGIC_ENABLED" : "true"}) + let providedDataForStack = golangGoModules.provideStack(`test/providers/tst_manifests/golang/${testCase}/go.mod`,{"TRUSTIFY_DA_GO_MVS_LOGIC_ENABLED" : "true"}) // 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\\-\\:]+\"","") diff --git a/test/providers/java_maven.test.js b/test/providers/java_maven.test.js index 4e4ea337..1f8b9b7b 100644 --- a/test/providers/java_maven.test.js +++ b/test/providers/java_maven.test.js @@ -68,12 +68,12 @@ suite('testing the java-maven data provider', async () => { test(`verify tool selection with "${testCase.mvnPath}" and${testCase.preferWrapper ? ' ' : ' not '}preferring wrapper`, () => { let javaMvnProvider = new Java_maven() expect(javaMvnProvider.selectToolBinary(`test/providers/tst_manifests/maven/pom_with_mvn_wrapper/pom.xml`, { - 'EXHORT_PREFER_MVNW': testCase.preferWrapper.toString(), - 'EXHORT_MVN_PATH': testCase.mvnPath, + 'TRUSTIFY_DA_PREFER_MVNW': testCase.preferWrapper.toString(), + 'TRUSTIFY_DA_MVN_PATH': testCase.mvnPath, })).to.eq(testCase.preferWrapper ? path.resolve(`test/providers/tst_manifests/maven/pom_with_mvn_wrapper/mvnw`) + (platform === 'win32' ? '.cmd' : '') : testCase.mvnPath) - }) + }).timeout(10000) }); [ diff --git a/test/providers/oci_images.test.js b/test/providers/oci_images.test.js index 9001aa1f..2942936f 100644 --- a/test/providers/oci_images.test.js +++ b/test/providers/oci_images.test.js @@ -20,7 +20,7 @@ suite('testing the OCI image data provider', () => { providedSbom['metadata'] = null providedSbom['serialNumber'] = null expect(JSON.stringify(providedSbom, null, 4).trimEnd()).to.deep.equal(expectedSbom) - }).timeout(10000) + }).timeout(40000) }); [ diff --git a/test/providers/python_pip.test.js b/test/providers/python_pip.test.js index 0c455349..07ef64c5 100644 --- a/test/providers/python_pip.test.js +++ b/test/providers/python_pip.test.js @@ -13,7 +13,7 @@ function sharedComponentAnalysisTestFlow(testCase, usePipDepTreeUtility) { let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/pip/${testCase}/expected_component_sbom.json`).toString().trim() expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) // invoke sut stack analysis for scenario manifest - let opts = { "EXHORT_PIP_USE_DEP_TREE" : usePipDepTreeUtility } + let opts = { "TRUSTIFY_DA_PIP_USE_DEP_TREE" : usePipDepTreeUtility } let providedDatForComponent = pythonPip.provideComponent(`test/providers/tst_manifests/pip/${testCase}/requirements.txt`, opts) // verify returned data matches expectation expect(providedDatForComponent).to.deep.equal({ @@ -34,7 +34,7 @@ function sharedStackAnalysisTestFlow(testCase, usePipDepTreeUtility) { } catch (error) { throw new Error('fail installing requirements.txt manifest in created virtual python environment', {cause: error}) } - let opts = { "EXHORT_PIP_USE_DEP_TREE" : usePipDepTreeUtility } + let opts = { "TRUSTIFY_DA_PIP_USE_DEP_TREE" : usePipDepTreeUtility } let providedDataForStack = pythonPip.provideStack(`test/providers/tst_manifests/pip/${testCase}/requirements.txt`, opts) // new(year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): Date @@ -94,8 +94,8 @@ suite('testing the python-pip data provider with virtual environment', () => { test(`verify requirements.txt sbom provided for stack analysis using virutal python environment, with scenario ${scenario}`, () => { // load the expected sbom stack analysis let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/pip/${testCase}/expected_stack_sbom.json`,).toString() - process.env["EXHORT_PYTHON_VIRTUAL_ENV"] = "true" - // process.env["EXHORT_DEBUG"] = "true" + process.env["TRUSTIFY_DA_PYTHON_VIRTUAL_ENV"] = "true" + // process.env["TRUSTIFY_DA_DEBUG"] = "true" expectedSbom = JSON.stringify(JSON.parse(expectedSbom), null, 4) // invoke sut stack analysis for scenario manifest let providedDataForStack = pythonPip.provideStack(`test/providers/tst_manifests/pip/${testCase}/requirements.txt`) diff --git a/test/tools.test.js b/test/tools.test.js index 969fa852..89d2e8fb 100644 --- a/test/tools.test.js +++ b/test/tools.test.js @@ -43,17 +43,17 @@ suite('testing the various tools and utility functions', () => { }) suite('test the getCustomPath utility function', () => { - afterEach(() => delete process.env['EXHORT_DUMMY_PATH']) + afterEach(() => delete process.env['TRUSTIFY_DA_DUMMY_PATH']) test('when exists as environment variable and opts, return environment variables value', () => { - process.env['EXHORT_DUMMY_PATH'] = 'dummy-env-value' - let opts = { 'EXHORT_DUMMY_PATH': 'dummy-opts-value' } + process.env['TRUSTIFY_DA_DUMMY_PATH'] = 'dummy-env-value' + let opts = { 'TRUSTIFY_DA_DUMMY_PATH': 'dummy-opts-value' } let fetchedValue = getCustomPath('dummy', opts) expect(fetchedValue).to.equal('dummy-env-value') }) test('when no environment variable but exists as opts, return opts value', () => { - let opts = { 'EXHORT_DUMMY_PATH': 'dummy-opts-value' } + let opts = { 'TRUSTIFY_DA_DUMMY_PATH': 'dummy-opts-value' } let fetchedValue = getCustomPath('dummy', opts) expect(fetchedValue).to.equal('dummy-opts-value') }) From 4fe9424e9f4a2b41b06f54243830b247772ea0e4 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Wed, 12 Nov 2025 15:32:10 +0000 Subject: [PATCH 025/102] chore: fix-up & tidy-up workflows and remove references to .npmrc registry changes (#260) --- .github/workflows/integration.yml | 1 + .github/workflows/pr-validation.yml | 10 +++------ .github/workflows/pr.yml | 8 +------ .github/workflows/release.yml | 17 +++++---------- .github/workflows/stage.yml | 13 +++--------- README.md | 33 ----------------------------- docker-image/Dockerfiles/Dockerfile | 8 +------ docker-image/configs/.npmrc | 2 -- 8 files changed, 14 insertions(+), 78 deletions(-) delete mode 100644 docker-image/configs/.npmrc diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index af7a30f6..e8462a37 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=https://www.schemastore.org/github-workflow.json --- name: Integration diff --git a/.github/workflows/pr-validation.yml b/.github/workflows/pr-validation.yml index 072b699d..4badd9a9 100644 --- a/.github/workflows/pr-validation.yml +++ b/.github/workflows/pr-validation.yml @@ -1,3 +1,5 @@ +# yaml-language-server: $schema=https://www.schemastore.org/github-workflow.json +--- name: Validate PR on: @@ -14,6 +16,7 @@ jobs: - uses: amannn/action-semantic-pull-request@v5 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + commit-message-validation: name: Validate commit messages runs-on: ubuntu-latest @@ -27,13 +30,6 @@ jobs: uses: actions/setup-node@v4 with: node-version: 20 - registry-url: 'https://npm.pkg.github.com' - env: - NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Create .npmrc - run: | - echo "@trustification:registry=https://npm.pkg.github.com" >> .npmrc - name: Install commitlint run: | diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index fada235f..3dace7d9 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=https://www.schemastore.org/github-workflow.json --- name: Pull request build @@ -29,13 +30,6 @@ jobs: with: node-version: ${{ matrix.node }} cache: npm - registry-url: 'https://npm.pkg.github.com' - env: - NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Create .npmrc - run: | - echo "@trustification:registry=https://npm.pkg.github.com" >> .npmrc - name: Enable Corepack run: corepack enable diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 22b1331e..d234bbde 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=https://www.schemastore.org/github-workflow.json --- name: Release @@ -23,7 +24,6 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 with: - ssh-key: ${{ secrets.DEPLOY_KEY }} fetch-depth: 0 - name: Install node 18 @@ -31,13 +31,6 @@ jobs: with: node-version: 18 cache: npm - registry-url: 'https://npm.pkg.github.com' - env: - NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Create .npmrc - run: | - echo "@trustification:registry=https://npm.pkg.github.com" >> .npmrc - name: Configure git run: | @@ -74,7 +67,7 @@ jobs: - name: Publish package env: - NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} run: npm publish - name: Commit and push package modifications @@ -93,10 +86,10 @@ jobs: uses: actions/github-script@v6 id: release-notes with: - github-token: ${{ secrets.STAGING_PAT }} + github-token: ${{ secrets.GITHUB_TOKEN }} script: | const repo_name = context.payload.repository.full_name - const response = await github.request('POST /repos/' + repo_name + '/releases' + '/generate-notes', { + const response = await github.request('POST /repos/' + repo_name + '/releases/generate-notes', { tag_name: '${{ steps.bump.outputs.version }}', previous_tag_name: '${{ steps.fetch-tag.outputs.oldest-tag != '' && steps.fetch-tag.outputs.oldest-tag || steps.last-release.outputs.base-tag }}' }) @@ -105,7 +98,7 @@ jobs: - name: Create a release uses: actions/github-script@v6.4.1 with: - github-token: ${{ secrets.STAGING_PAT }} + github-token: ${{ secrets.GITHUB_TOKEN }} script: | const repo_name = context.payload.repository.full_name const response = await github.request('POST /repos/' + repo_name + '/releases', { diff --git a/.github/workflows/stage.yml b/.github/workflows/stage.yml index ca0d108e..afc55496 100644 --- a/.github/workflows/stage.yml +++ b/.github/workflows/stage.yml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=https://www.schemastore.org/github-workflow.json --- name: Stage @@ -22,7 +23,7 @@ on: jobs: stage: runs-on: ubuntu-latest -# Branches that starts with `release/` shouldn't trigger this workflow, as these are triggering the release workflow. + # Branches that starts with `release/` shouldn't trigger this workflow, as these are triggering the release workflow. if: github.repository_owner == 'guacsec' && github.event.pull_request.merged == true && !startsWith(github.head_ref, 'release/') environment: staging name: Stage the project @@ -30,7 +31,6 @@ jobs: - name: Checkout sources uses: actions/checkout@v4 with: - ssh-key: ${{ secrets.DEPLOY_KEY }} fetch-depth: 0 - name: Install node 18 @@ -38,13 +38,6 @@ jobs: with: node-version: 18 cache: npm - registry-url: 'https://npm.pkg.github.com' - env: - NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Create .npmrc - run: | - echo "@trustification:registry=https://npm.pkg.github.com" >> .npmrc - name: Enable Corepack run: corepack enable @@ -131,7 +124,7 @@ jobs: - name: Publish package env: - NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} run: npm publish - name: Commit and push package modifications diff --git a/README.md b/README.md index 55f6fea0..7ee49159 100644 --- a/README.md +++ b/README.md @@ -4,41 +4,8 @@ * Looking for our Java API? Try [Exhort Java API](https://github.com/guacsec/exhort-java-api). * Looking for our Backend implementation? Try [Exhort](https://github.com/guacsec/exhort). -The _Exhort JavaScript API_ module is deployed to _GitHub Package Registry_. - -
-Click here for configuring GHPR registry access. -

Configure Registry Access

-

-Create a -token -with the read:packages scope
- -> Based on -> GitHub documentation, -> In Actions you can use GITHUB_TOKEN -

-

- -Add the following line to the .npmrc file in your user home ( -See [GH Docs](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm-registry#authenticating-with-a-personal-access-token)): - -```text -//npm.pkg.github.com/:_authToken= -``` -

-
-

Usage

-Configuring NPM to look in GHPR for the trustify-da namespace is done by adding -@trustify-da:registry=https://npm.pkg.github.com to .npmrc in the project root or user home. - -```shell -echo "@trustify-da:registry=https://npm.pkg.github.com" >> .npmrc -echo "@trustification:registry=https://npm.pkg.github.com" >> .npmrc -``` -

  • diff --git a/docker-image/Dockerfiles/Dockerfile b/docker-image/Dockerfiles/Dockerfile index ec4b9f50..c85bc379 100644 --- a/docker-image/Dockerfiles/Dockerfile +++ b/docker-image/Dockerfiles/Dockerfile @@ -4,9 +4,7 @@ FROM registry.access.redhat.com/ubi9/nodejs-20 AS builder # use privilaged user USER root -# assign token for reading packages from github package registry -ARG PACKAGE_REGISTRY_ACCESS_TOKEN='' -ARG TRUSTIFY_DA_JAVASCRIPT_API_VERSION='0.1.1-ea.55' +ARG TRUSTIFY_DA_JAVASCRIPT_API_VERSION='0.2.4-ea.12' # install Java RUN curl -kL https://download.oracle.com/java/21/archive/jdk-21.0.1_linux-x64_bin.tar.gz -o /tmp/java-package.tar.gz \ @@ -23,10 +21,6 @@ RUN curl -kL https://go.dev/dl/go1.21.5.linux-amd64.tar.gz -o /tmp/golang-packag # install jq JSON formating tool RUN curl -kL https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux64 -o /usr/bin/jq -# copy the .npmrc file -COPY configs/.npmrc . -# replace placeholder with the actual environment variable -RUN sed -i "s/__PACKAGE_REGISTRY_ACCESS_TOKEN__/${PACKAGE_REGISTRY_ACCESS_TOKEN}/g" ./.npmrc # install Exhort javascript API RUN npm install --global @trustify-da/trustify-da-javascript-client@${TRUSTIFY_DA_JAVASCRIPT_API_VERSION} diff --git a/docker-image/configs/.npmrc b/docker-image/configs/.npmrc deleted file mode 100644 index 6a001f2e..00000000 --- a/docker-image/configs/.npmrc +++ /dev/null @@ -1,2 +0,0 @@ -//npm.pkg.github.com/:_authToken=__PACKAGE_REGISTRY_ACCESS_TOKEN__ -@trustification:registry=https://npm.pkg.github.com From fefbd250fe09aa3398a90610e0ea70108088efb3 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Fri, 14 Nov 2025 13:25:34 +0000 Subject: [PATCH 026/102] chore: publish to npm only from 'trusted publisher' pipeline (#261) --- .github/workflows/release.yml | 43 ++++++++++++++++++++------ .github/workflows/stage.yml | 57 ++++++++--------------------------- 2 files changed, 46 insertions(+), 54 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d234bbde..5dce0eaf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,6 +3,13 @@ name: Release on: + workflow_call: + inputs: + version_type: + description: 'Type of version bump' + required: true + type: string + workflow_dispatch: inputs: version_type: @@ -15,6 +22,10 @@ on: - minor - major +permissions: + contents: write + id-token: write + jobs: release: runs-on: ubuntu-latest @@ -31,6 +42,7 @@ jobs: with: node-version: 18 cache: npm + registry-url: 'https://registry.npmjs.org' - name: Configure git run: | @@ -52,12 +64,16 @@ jobs: - name: determine semver component to bump id: bump-decision run: | - echo "bump-part=${{ github.event.inputs.version_type }}" >> "$GITHUB_OUTPUT" + echo "bump-part=${{ inputs.version_type }}" >> "$GITHUB_OUTPUT" - name: Update package with new version id: bump run: | - echo "version=$(npm version ${{ steps.bump-decision.outputs.bump-part }} --no-git-tag-version )" >> "$GITHUB_OUTPUT" + if [[ "${{ inputs.version_type }}" == "prerelease" ]]; then + echo "version=$(npm version prerelease --no-git-tag-version --preid ea)" >> "$GITHUB_OUTPUT" + else + echo "version=$(npm version ${{ steps.bump-decision.outputs.bump-part }} --no-git-tag-version )" >> "$GITHUB_OUTPUT" + fi - name: Install project modules run: npm ci @@ -66,8 +82,6 @@ jobs: run: npm run compile - name: Publish package - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} run: npm publish - name: Commit and push package modifications @@ -83,6 +97,7 @@ jobs: git push origin ${{ steps.bump.outputs.version }} - name: Create release notes for ${{ steps.bump.outputs.version }} release + if: inputs.version_type != 'prerelease' uses: actions/github-script@v6 id: release-notes with: @@ -101,11 +116,19 @@ jobs: github-token: ${{ secrets.GITHUB_TOKEN }} script: | const repo_name = context.payload.repository.full_name - const response = await github.request('POST /repos/' + repo_name + '/releases', { + const isPrerelease = '${{ inputs.version_type }}' === 'prerelease'; + const releaseConfig = { tag_name: '${{ steps.bump.outputs.version }}', name: '${{ steps.bump.outputs.version }}', - draft: false, - body: ${{ steps.release-notes.outputs.result }}, - prerelease: false, - make_latest: 'true' - }) + prerelease: isPrerelease + }; + + if (isPrerelease) { + releaseConfig.generate_release_notes = true; + } else { + releaseConfig.draft = false; + releaseConfig.body = ${{ steps.release-notes.outputs.result }}; + releaseConfig.make_latest = 'true'; + } + + const response = await github.request('POST /repos/' + repo_name + '/releases', releaseConfig); diff --git a/.github/workflows/stage.yml b/.github/workflows/stage.yml index afc55496..1df60aaa 100644 --- a/.github/workflows/stage.yml +++ b/.github/workflows/stage.yml @@ -20,13 +20,15 @@ on: - ".github/workflows/stage.yml" - "docker-image/**" +permissions: + contents: write + id-token: write + jobs: - stage: + test: runs-on: ubuntu-latest - # Branches that starts with `release/` shouldn't trigger this workflow, as these are triggering the release workflow. if: github.repository_owner == 'guacsec' && github.event.pull_request.merged == true && !startsWith(github.head_ref, 'release/') - environment: staging - name: Stage the project + name: Test before staging steps: - name: Checkout sources uses: actions/checkout@v4 @@ -38,6 +40,7 @@ jobs: with: node-version: 18 cache: npm + registry-url: 'https://registry.npmjs.org' - name: Enable Corepack run: corepack enable @@ -69,21 +72,10 @@ jobs: repo: anchore/syft platform: linux arch: amd64 - # tag: the latest one, so we can catch changes - name: Setup skopeo run: sudo apt update && sudo apt-get -y install skopeo - - name: Configure git - run: | - git config user.name "${{ github.actor }}" - git config user.email "${{ github.actor }}@users.noreply.github.com" - - - name: Update package with new version - id: bump - run: | - echo "version=$(npm version prerelease --no-git-tag-version --preid ea)" >> "$GITHUB_OUTPUT" - - name: Install project modules run: npm ci @@ -104,6 +96,7 @@ jobs: with: python-version: '3.9' cache: 'pip' + - name: get Python location id: python-location run: | @@ -122,32 +115,8 @@ jobs: echo "Running Again Integration tests =>" npm run integration-tests - - name: Publish package - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - run: npm publish - - - name: Commit and push package modifications - run: | - git add package.json - git add package-lock.json - git commit -m "build: updated package with ${{ steps.bump.outputs.version }} [skip ci]" - git push - - - name: Create and push new tag - run: | - git tag ${{ steps.bump.outputs.version }} -m "${{ steps.bump.outputs.version }}" - git push origin ${{ steps.bump.outputs.version }} - - - name: Create a release - uses: actions/github-script@v6.4.1 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const repo_name = context.payload.repository.full_name - const response = await github.request('POST /repos/' + repo_name + '/releases', { - tag_name: '${{ steps.bump.outputs.version }}', - name: '${{ steps.bump.outputs.version }}', - prerelease: true, - generate_release_notes: true - }) + publish-prerelease: + needs: test + uses: ./.github/workflows/release.yml + with: + version_type: prerelease From be76688d44760f5c616223e68f1a063d55000d24 Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Fri, 14 Nov 2025 14:53:32 +0100 Subject: [PATCH 027/102] chore: publish public package with provenance (#264) Signed-off-by: Ruben Romero Montes --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5dce0eaf..081a025e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -82,7 +82,7 @@ jobs: run: npm run compile - name: Publish package - run: npm publish + run: npm publish --access public --provenance - name: Commit and push package modifications run: | From b427266ca6689dec5e1425b60e082140f568cdcf Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Fri, 14 Nov 2025 15:46:09 +0100 Subject: [PATCH 028/102] chore: trigger upon release.yml change (#265) Signed-off-by: Ruben Romero Montes --- .github/workflows/stage.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/stage.yml b/.github/workflows/stage.yml index 1df60aaa..4d9982cd 100644 --- a/.github/workflows/stage.yml +++ b/.github/workflows/stage.yml @@ -18,6 +18,7 @@ on: - "package.json" - "tsconfig.json" - ".github/workflows/stage.yml" + - ".github/workflows/release.yml" - "docker-image/**" permissions: From 7b7b21f021b13193446c7e91ad326b17644fb736 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Fri, 14 Nov 2025 15:05:12 +0000 Subject: [PATCH 029/102] chore: use newer node & npm versions (#267) --- .github/workflows/release.yml | 7 +++++-- .github/workflows/stage.yml | 7 +++++-- package.json | 4 ++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 081a025e..04212051 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,13 +37,16 @@ jobs: with: fetch-depth: 0 - - name: Install node 18 + - name: Install node 20 uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 cache: npm registry-url: 'https://registry.npmjs.org' + - name: Update npm + run: npm install -g npm@11.5.1 + - name: Configure git run: | git config user.name "${{ github.actor }}" diff --git a/.github/workflows/stage.yml b/.github/workflows/stage.yml index 4d9982cd..41feaa2d 100644 --- a/.github/workflows/stage.yml +++ b/.github/workflows/stage.yml @@ -36,13 +36,16 @@ jobs: with: fetch-depth: 0 - - name: Install node 18 + - name: Install node 20 uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 cache: npm registry-url: 'https://registry.npmjs.org' + - name: Update npm + run: npm install -g npm@11.5.1 + - name: Enable Corepack run: corepack enable diff --git a/package.json b/package.json index a8dddf65..e9f52e2e 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,8 @@ "vulnerability" ], "engines": { - "node": ">= 18.0.0", - "npm": ">= 9.0.0" + "node": ">= 20.0.0", + "npm": ">= 11.5.1" }, "type": "module", "bin": "dist/src/cli.js", From a92f21498da2b43afdb06da7ea2346d922d14759 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Fri, 14 Nov 2025 15:20:47 +0000 Subject: [PATCH 030/102] fix: pass --tag prerelease for prerelease publishing (#268) --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 04212051..03bae7f0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -85,7 +85,7 @@ jobs: run: npm run compile - name: Publish package - run: npm publish --access public --provenance + run: npm publish --access public --provenance ${{ inputs.version_type == 'prerelease' && '--tag prerelease' || '' }} - name: Commit and push package modifications run: | From e0f6df3dfceaeb6bd1543b7b989a71ba042cde86 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Fri, 14 Nov 2025 16:11:54 +0000 Subject: [PATCH 031/102] fix: use 'switch' workflow for trusted publishing to npm (#269) --- .github/workflows/publish-prerelease.yml | 82 +++++++++++++++ .github/workflows/publish-release.yml | 113 ++++++++++++++++++++ .github/workflows/publish-switch.yml | 34 ++++++ .github/workflows/release.yml | 125 ++--------------------- .github/workflows/stage.yml | 4 +- 5 files changed, 238 insertions(+), 120 deletions(-) create mode 100644 .github/workflows/publish-prerelease.yml create mode 100644 .github/workflows/publish-release.yml create mode 100644 .github/workflows/publish-switch.yml diff --git a/.github/workflows/publish-prerelease.yml b/.github/workflows/publish-prerelease.yml new file mode 100644 index 00000000..bf9ebea7 --- /dev/null +++ b/.github/workflows/publish-prerelease.yml @@ -0,0 +1,82 @@ +# yaml-language-server: $schema=https://www.schemastore.org/github-workflow.json +--- +name: Publish Prerelease + +on: + workflow_call: + inputs: + ref: + description: 'Git ref to publish' + required: true + type: string + +jobs: + publish: + runs-on: ubuntu-latest + environment: staging + name: Publish prerelease to NPM + permissions: + contents: write + id-token: write + steps: + - name: Checkout sources + uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref }} + fetch-depth: 0 + + - name: Install node 20 + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + registry-url: 'https://registry.npmjs.org' + + - name: Update npm + run: npm install -g npm@11.5.1 + + - name: Configure git + run: | + git config user.name "${{ github.actor }}" + git config user.email "${{ github.actor }}@users.noreply.github.com" + + - name: Update package with new version + id: bump + run: | + echo "version=$(npm version prerelease --no-git-tag-version --preid ea)" >> "$GITHUB_OUTPUT" + + - name: Install project modules + run: npm ci + + - name: Compile project + run: npm run compile + + - name: Publish package + env: + NPM_CONFIG_PROVENANCE: true + run: npm publish --tag prerelease + + - name: Commit and push package modifications + run: | + git add package.json + git add package-lock.json + git commit -m "build: updated package with ${{ steps.bump.outputs.version }} [skip ci]" + git push + + - name: Create and push new tag + run: | + git tag ${{ steps.bump.outputs.version }} -m "${{ steps.bump.outputs.version }}" + git push origin ${{ steps.bump.outputs.version }} + + - name: Create a release + uses: actions/github-script@v6.4.1 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const repo_name = context.payload.repository.full_name + const response = await github.request('POST /repos/' + repo_name + '/releases', { + tag_name: '${{ steps.bump.outputs.version }}', + name: '${{ steps.bump.outputs.version }}', + prerelease: true, + generate_release_notes: true + }) diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml new file mode 100644 index 00000000..1e6b67ba --- /dev/null +++ b/.github/workflows/publish-release.yml @@ -0,0 +1,113 @@ +# yaml-language-server: $schema=https://www.schemastore.org/github-workflow.json +--- +name: Publish Release + +on: + workflow_call: + inputs: + ref: + description: 'Git ref to publish' + required: true + type: string + version_type: + description: 'Type of version bump' + required: true + type: string + +jobs: + publish: + runs-on: ubuntu-latest + environment: staging + name: Publish release to NPM + permissions: + contents: write + id-token: write + steps: + - name: Checkout sources + uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref }} + fetch-depth: 0 + + - name: Install node 20 + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + registry-url: 'https://registry.npmjs.org' + + - name: Update npm + run: npm install -g npm@11.5.1 + + - name: Configure git + run: | + git config user.name "${{ github.actor }}" + git config user.email "${{ github.actor }}@users.noreply.github.com" + + - name: Get previous released annotated tag + id: last-release + run: | + echo "base-tag=$(git describe | awk -F '-' '{print $1}')" >> "$GITHUB_OUTPUT" + echo "full-tag=$(git describe)" >> "$GITHUB_OUTPUT" + + - name: Get first tag in current development iteration + id: fetch-tag + if: contains(steps.last-release.outputs.full-tag , '-ea.') + run: | + echo "oldest-tag=$(git for-each-ref --sort=creatordate --format '%(refname:lstrip=2)' refs/tags | grep ${{ steps.last-release.outputs.base-tag }} | head -n 1)" >> "$GITHUB_OUTPUT" + + - name: Update package with new version + id: bump + run: | + echo "version=$(npm version ${{ inputs.version_type }} --no-git-tag-version )" >> "$GITHUB_OUTPUT" + + - name: Install project modules + run: npm ci + + - name: Compile project + run: npm run compile + + - name: Publish package + env: + NPM_CONFIG_PROVENANCE: true + run: npm publish + + - name: Commit and push package modifications + run: | + git add package.json + git add package-lock.json + git commit -m "build: updated package with ${{ steps.bump.outputs.version }} [skip ci]" + git push + + - name: Create and push new tag + run: | + git tag ${{ steps.bump.outputs.version }} -m "${{ steps.bump.outputs.version }}" + git push origin ${{ steps.bump.outputs.version }} + + - name: Create release notes + uses: actions/github-script@v6 + id: release-notes + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const repo_name = context.payload.repository.full_name + const response = await github.request('POST /repos/' + repo_name + '/releases/generate-notes', { + tag_name: '${{ steps.bump.outputs.version }}', + previous_tag_name: '${{ steps.fetch-tag.outputs.oldest-tag != '' && steps.fetch-tag.outputs.oldest-tag || steps.last-release.outputs.base-tag }}' + }) + return response.data.body + + - name: Create a release + uses: actions/github-script@v6.4.1 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const repo_name = context.payload.repository.full_name + const response = await github.request('POST /repos/' + repo_name + '/releases', { + tag_name: '${{ steps.bump.outputs.version }}', + name: '${{ steps.bump.outputs.version }}', + draft: false, + body: ${{ steps.release-notes.outputs.result }}, + prerelease: false, + make_latest: 'true' + }) diff --git a/.github/workflows/publish-switch.yml b/.github/workflows/publish-switch.yml new file mode 100644 index 00000000..24dc2155 --- /dev/null +++ b/.github/workflows/publish-switch.yml @@ -0,0 +1,34 @@ +# yaml-language-server: $schema=https://www.schemastore.org/github-workflow.json +--- +name: Publish Switch + +on: + workflow_call: + inputs: + ref: + description: 'Git ref to publish' + required: true + type: string + is_prerelease: + description: 'Whether to publish as prerelease' + required: true + type: boolean + version_type: + description: 'Type of version bump (patch/minor/major/prerelease)' + required: false + type: string + default: 'prerelease' + +jobs: + prerelease: + if: inputs.is_prerelease == true || inputs.is_prerelease == 'true' + uses: ./.github/workflows/publish-prerelease.yml + with: + ref: ${{ inputs.ref || github.ref }} + + release: + if: inputs.is_prerelease == false || inputs.is_prerelease == 'false' + uses: ./.github/workflows/publish-release.yml + with: + ref: ${{ inputs.ref || github.ref }} + version_type: ${{ inputs.version_type || 'patch' }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 03bae7f0..d74886e4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,13 +3,6 @@ name: Release on: - workflow_call: - inputs: - version_type: - description: 'Type of version bump' - required: true - type: string - workflow_dispatch: inputs: version_type: @@ -22,116 +15,10 @@ on: - minor - major -permissions: - contents: write - id-token: write - jobs: - release: - runs-on: ubuntu-latest - environment: staging - name: Release the project - steps: - - name: Checkout sources - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Install node 20 - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: npm - registry-url: 'https://registry.npmjs.org' - - - name: Update npm - run: npm install -g npm@11.5.1 - - - name: Configure git - run: | - git config user.name "${{ github.actor }}" - git config user.email "${{ github.actor }}@users.noreply.github.com" - - - name: get previous released annotated tag - id: last-release - run: | - echo "base-tag=$(git describe | awk -F '-' '{print $1}')" >> "$GITHUB_OUTPUT" - echo "full-tag=$(git describe)" >> "$GITHUB_OUTPUT" - - - name: get first tag in current development iteration according to base - id: fetch-tag - if: ${{ contains(steps.last-release.outputs.full-tag , '-ea.') }} - run: | - echo "oldest-tag=$(git for-each-ref --sort=creatordate --format '%(refname:lstrip=2)' refs/tags | grep ${{ steps.last-release.outputs.base-tag }} | head -n 1)" >> "$GITHUB_OUTPUT" - - - name: determine semver component to bump - id: bump-decision - run: | - echo "bump-part=${{ inputs.version_type }}" >> "$GITHUB_OUTPUT" - - - name: Update package with new version - id: bump - run: | - if [[ "${{ inputs.version_type }}" == "prerelease" ]]; then - echo "version=$(npm version prerelease --no-git-tag-version --preid ea)" >> "$GITHUB_OUTPUT" - else - echo "version=$(npm version ${{ steps.bump-decision.outputs.bump-part }} --no-git-tag-version )" >> "$GITHUB_OUTPUT" - fi - - - name: Install project modules - run: npm ci - - - name: Compile project - run: npm run compile - - - name: Publish package - run: npm publish --access public --provenance ${{ inputs.version_type == 'prerelease' && '--tag prerelease' || '' }} - - - name: Commit and push package modifications - run: | - git add package.json - git add package-lock.json - git commit -m "build: updated package with ${{ steps.bump.outputs.version }} [skip ci]" - git push - - - name: Create and push new tag - run: | - git tag ${{ steps.bump.outputs.version }} -m "${{ steps.bump.outputs.version }}" - git push origin ${{ steps.bump.outputs.version }} - - - name: Create release notes for ${{ steps.bump.outputs.version }} release - if: inputs.version_type != 'prerelease' - uses: actions/github-script@v6 - id: release-notes - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const repo_name = context.payload.repository.full_name - const response = await github.request('POST /repos/' + repo_name + '/releases/generate-notes', { - tag_name: '${{ steps.bump.outputs.version }}', - previous_tag_name: '${{ steps.fetch-tag.outputs.oldest-tag != '' && steps.fetch-tag.outputs.oldest-tag || steps.last-release.outputs.base-tag }}' - }) - return response.data.body - - - name: Create a release - uses: actions/github-script@v6.4.1 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const repo_name = context.payload.repository.full_name - const isPrerelease = '${{ inputs.version_type }}' === 'prerelease'; - const releaseConfig = { - tag_name: '${{ steps.bump.outputs.version }}', - name: '${{ steps.bump.outputs.version }}', - prerelease: isPrerelease - }; - - if (isPrerelease) { - releaseConfig.generate_release_notes = true; - } else { - releaseConfig.draft = false; - releaseConfig.body = ${{ steps.release-notes.outputs.result }}; - releaseConfig.make_latest = 'true'; - } - - const response = await github.request('POST /repos/' + repo_name + '/releases', releaseConfig); + publish-release: + uses: ./.github/workflows/publish-switch.yml + with: + ref: ${{ github.ref }} + is_prerelease: false + version_type: ${{ inputs.version_type }} diff --git a/.github/workflows/stage.yml b/.github/workflows/stage.yml index 41feaa2d..2289c1c5 100644 --- a/.github/workflows/stage.yml +++ b/.github/workflows/stage.yml @@ -121,6 +121,8 @@ jobs: publish-prerelease: needs: test - uses: ./.github/workflows/release.yml + uses: ./.github/workflows/publish-switch.yml with: + ref: ${{ github.sha }} + is_prerelease: true version_type: prerelease From 3c78f63fe413d715a39d459d69079e8e16c03bbd Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Fri, 14 Nov 2025 17:10:22 +0000 Subject: [PATCH 032/102] fix: remove explicit registry from npm publish workflows (#270) --- .github/workflows/pr-validation.yml | 2 +- .github/workflows/pr.yml | 2 +- .github/workflows/publish-prerelease.yml | 3 +-- .github/workflows/publish-release.yml | 3 +-- .github/workflows/stage.yml | 3 +-- package-lock.json | 8 ++++---- package.json | 2 +- 7 files changed, 10 insertions(+), 13 deletions(-) diff --git a/.github/workflows/pr-validation.yml b/.github/workflows/pr-validation.yml index 4badd9a9..1f84bd28 100644 --- a/.github/workflows/pr-validation.yml +++ b/.github/workflows/pr-validation.yml @@ -27,7 +27,7 @@ jobs: fetch-depth: 0 - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: node-version: 20 diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 3dace7d9..da740afb 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -26,7 +26,7 @@ jobs: uses: actions/checkout@v4 - name: Install node ${{ matrix.node }} - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: node-version: ${{ matrix.node }} cache: npm diff --git a/.github/workflows/publish-prerelease.yml b/.github/workflows/publish-prerelease.yml index bf9ebea7..1623396a 100644 --- a/.github/workflows/publish-prerelease.yml +++ b/.github/workflows/publish-prerelease.yml @@ -26,11 +26,10 @@ jobs: fetch-depth: 0 - name: Install node 20 - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: node-version: 20 cache: npm - registry-url: 'https://registry.npmjs.org' - name: Update npm run: npm install -g npm@11.5.1 diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index 1e6b67ba..253678fb 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -30,11 +30,10 @@ jobs: fetch-depth: 0 - name: Install node 20 - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: node-version: 20 cache: npm - registry-url: 'https://registry.npmjs.org' - name: Update npm run: npm install -g npm@11.5.1 diff --git a/.github/workflows/stage.yml b/.github/workflows/stage.yml index 2289c1c5..1b1352ac 100644 --- a/.github/workflows/stage.yml +++ b/.github/workflows/stage.yml @@ -37,11 +37,10 @@ jobs: fetch-depth: 0 - name: Install node 20 - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: node-version: 20 cache: npm - registry-url: 'https://registry.npmjs.org' - name: Update npm run: npm install -g npm@11.5.1 diff --git a/package-lock.json b/package-lock.json index af932268..5ef7b454 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@trustify-da/trustify-da-javascript-client", - "version": "0.2.4-ea.12", + "version": "0.2.4-ea.13", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@trustify-da/trustify-da-javascript-client", - "version": "0.2.4-ea.12", + "version": "0.2.4-ea.13", "license": "Apache-2.0", "dependencies": { "@babel/core": "^7.23.2", @@ -42,8 +42,8 @@ "which": "^5.0.0" }, "engines": { - "node": ">= 18.0.0", - "npm": ">= 9.0.0" + "node": ">= 20.0.0", + "npm": ">= 11.5.1" } }, "node_modules/@aashutoshrathi/word-wrap": { diff --git a/package.json b/package.json index e9f52e2e..fb65925f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@trustify-da/trustify-da-javascript-client", - "version": "0.2.4-ea.12", + "version": "0.2.4-ea.13", "description": "Code-Ready Dependency Analytics JavaScript API.", "license": "Apache-2.0", "homepage": "https://github.com/guacsec/trustify-da-javascript-client#README.md", From f96b0919d04a065dc93c75815ea0d44f9875ea9d Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Fri, 14 Nov 2025 17:34:23 +0000 Subject: [PATCH 033/102] chore: verbose npm publish output for debugging (#271) --- .github/workflows/publish-prerelease.yml | 2 +- .github/workflows/publish-release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish-prerelease.yml b/.github/workflows/publish-prerelease.yml index 1623396a..af15b551 100644 --- a/.github/workflows/publish-prerelease.yml +++ b/.github/workflows/publish-prerelease.yml @@ -53,7 +53,7 @@ jobs: - name: Publish package env: NPM_CONFIG_PROVENANCE: true - run: npm publish --tag prerelease + run: npm publish --verbose --tag prerelease - name: Commit and push package modifications run: | diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index 253678fb..1983c811 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -69,7 +69,7 @@ jobs: - name: Publish package env: NPM_CONFIG_PROVENANCE: true - run: npm publish + run: npm publish --verbose - name: Commit and push package modifications run: | From f741363b71cc05ccb0cb013c004c048790a548fb Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Mon, 17 Nov 2025 11:04:46 +0100 Subject: [PATCH 034/102] chore: build and publish container image to ghcr.io (#263) * chore: build and publish container image to ghcr.io Signed-off-by: Ruben Romero Montes * chore: add provenance and trigger on tag Signed-off-by: Ruben Romero Montes --------- Signed-off-by: Ruben Romero Montes --- .github/workflows/push-to-registry.yml | 95 ++++++++ docker-image/Dockerfiles/Dockerfile | 44 ++-- docker-image/README.md | 12 +- docker-image/scripts/rhda.sh | 4 +- .../scenarios/maven/expected_stack_html | 4 +- .../redhat-dependency-analytics-report.json | 219 ++++++++++++++++++ 6 files changed, 355 insertions(+), 23 deletions(-) create mode 100644 .github/workflows/push-to-registry.yml create mode 100644 integration/scenarios/maven/redhat-dependency-analytics-report.json diff --git a/.github/workflows/push-to-registry.yml b/.github/workflows/push-to-registry.yml new file mode 100644 index 00000000..0f5c3798 --- /dev/null +++ b/.github/workflows/push-to-registry.yml @@ -0,0 +1,95 @@ +# yaml-language-server: $schema=https://www.schemastore.org/github-workflow.json +--- +name: Push to registry + +on: + push: + branches: + - main + - 'release/*' + tags: + - '*' + workflow_dispatch: + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + build-and-push: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v5 + + - name: Install node 18 + uses: actions/setup-node@v6 + with: + node-version: 18 + cache: npm + + - name: Install project modules + run: npm ci + + - name: Compile project + run: npm run compile + + - name: Get package version + id: package-version + run: | + # Use git tag if available (for tag-triggered builds), otherwise use package.json + if [ -n "${{ github.ref_type }}" ] && [ "${{ github.ref_type }}" = "tag" ]; then + # Remove 'v' prefix if present (e.g., v1.0.0 -> 1.0.0) + VERSION="${{ github.ref_name }}" + VERSION="${VERSION#v}" + else + VERSION=$(node -p "require('./package.json').version") + fi + echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "Package version: $VERSION" + + - name: Get image metadata + id: image-meta + run: | + echo "revision=${{ github.sha }}" >> $GITHUB_OUTPUT + echo "created=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to Container Registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=raw,value=latest,enable={{is_default_branch}} + type=raw,value=${{ steps.package-version.outputs.version }} + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + file: ./docker-image/Dockerfiles/Dockerfile + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build-args: | + IMAGE_VERSION=${{ steps.package-version.outputs.version }} + IMAGE_REVISION=${{ steps.image-meta.outputs.revision }} + IMAGE_CREATED=${{ steps.image-meta.outputs.created }} + cache-from: type=gha + cache-to: type=gha,mode=max + provenance: true + sbom: true diff --git a/docker-image/Dockerfiles/Dockerfile b/docker-image/Dockerfiles/Dockerfile index c85bc379..5837821d 100644 --- a/docker-image/Dockerfiles/Dockerfile +++ b/docker-image/Dockerfiles/Dockerfile @@ -4,8 +4,6 @@ FROM registry.access.redhat.com/ubi9/nodejs-20 AS builder # use privilaged user USER root -ARG TRUSTIFY_DA_JAVASCRIPT_API_VERSION='0.2.4-ea.12' - # install Java RUN curl -kL https://download.oracle.com/java/21/archive/jdk-21.0.1_linux-x64_bin.tar.gz -o /tmp/java-package.tar.gz \ && tar xvzf /tmp/java-package.tar.gz -C /usr/ @@ -19,20 +17,27 @@ RUN curl -kL https://go.dev/dl/go1.21.5.linux-amd64.tar.gz -o /tmp/golang-packag && tar xvzf /tmp/golang-package.tar.gz -C /usr/ # install jq JSON formating tool -RUN curl -kL https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux64 -o /usr/bin/jq +RUN curl -kL https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-linux64 -o /usr/bin/jq -# install Exhort javascript API -RUN npm install --global @trustify-da/trustify-da-javascript-client@${TRUSTIFY_DA_JAVASCRIPT_API_VERSION} +# Copy RHDA script (before changing WORKDIR) +COPY docker-image/scripts/rhda.sh /rhda.sh -# add RHDA script -COPY scripts/rhda.sh /rhda.sh +# Copy project files and install Exhort javascript API locally +WORKDIR /app +COPY package.json package-lock.json ./ +COPY dist ./dist +COPY config ./config +RUN npm install --production \ + && mkdir -p /app/node_modules/.bin \ + && ln -s /app/dist/src/cli.js /app/node_modules/.bin/trustify-da-javascript-client # assign executable permissions to all installed binaries RUN chmod +x /usr/jdk-21.0.1/bin/java \ && chmod +x /usr/apache-maven-3.9.6/bin/mvn \ && chmod +x /usr/go/bin/go \ && chmod +x /usr/bin/jq \ - && chmod +x /opt/app-root/src/.npm-global/bin/trustify-da-javascript-client \ + && chmod +x /app/dist/src/cli.js \ + && chmod +x /app/node_modules/.bin/trustify-da-javascript-client \ && chmod +x /rhda.sh # use default user @@ -41,10 +46,23 @@ USER default # second stage FROM registry.access.redhat.com/ubi9/nodejs-20-minimal +# Build arguments for metadata +ARG IMAGE_VERSION +ARG IMAGE_REVISION +ARG IMAGE_CREATED + +# Open Container Initiative (OCI) metadata labels LABEL org.opencontainers.image.source=https://github.com/guacsec/trustify-da-javascript-client +LABEL org.opencontainers.image.description="Trustify Dependency Analytics JavaScript Client - Container image for dependency analysis and vulnerability scanning supporting Maven, NPM, Golang, and Python ecosystems" +LABEL org.opencontainers.image.licenses=Apache-2.0 +LABEL org.opencontainers.image.title="Trustify Dependency Analytics JavaScript Client" +LABEL org.opencontainers.image.vendor="guacsec" +LABEL org.opencontainers.image.url=https://github.com/guacsec/trustify-da-javascript-client +LABEL org.opencontainers.image.documentation=https://github.com/guacsec/trustify-da-javascript-client#README.md +LABEL org.opencontainers.image.version="${IMAGE_VERSION}" +LABEL org.opencontainers.image.revision="${IMAGE_REVISION}" +LABEL org.opencontainers.image.created="${IMAGE_CREATED}" -# assign rhda source for exhort tracking purposes -ENV RHDA_SOURCE='' # contains pip feeze --all data, base64 encoded ENV TRUSTIFY_DA_PIP_FREEZE='' # contains pip show data for all packages, base64 encoded @@ -65,13 +83,13 @@ COPY --from=builder /usr/go/ /usr/go/ ENV GOLANG_HOME=/usr/go # Update PATH -ENV PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$GOLANG_HOME/bin +ENV PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$GOLANG_HOME/bin:/app/node_modules/.bin # Copy jq executable from the builder stage COPY --from=builder /usr/bin/jq /usr/bin/jq -# Copy trustify-da-javascript-client executable from the builder stage -COPY --from=builder /opt/app-root/src/.npm-global/ /opt/app-root/src/.npm-global/ +# Copy trustify-da-javascript-client from the builder stage +COPY --from=builder /app /app # Copy RHDA executable script from the builder stage COPY --from=builder /rhda.sh /rhda.sh diff --git a/docker-image/README.md b/docker-image/README.md index ffb617ba..3fa44fc6 100644 --- a/docker-image/README.md +++ b/docker-image/README.md @@ -1,7 +1,7 @@ -# Exhort Javascript API Docker Images +# Trustify Dependency Analytics Javascript Client Container Images -These dockerfiles provides all nessesary components to generate images for Red Hat Dependency Analytics (RHDA). -These images can be used as base images to set up the necessary environment and dependencies for running the Red Hat Dependency Analytics. +These dockerfiles provides all nessesary components to generate images for Trustify Dependency Analytics. +These images can be used as base images to set up the necessary environment and dependencies for running the Trustify Dependency Analytics. ## Prerequisites Before getting started, ensure that you have one of the following prerequisites installed on your system: @@ -9,13 +9,13 @@ Before getting started, ensure that you have one of the following prerequisites - Docker: [Installation Guide](https://docs.docker.com/get-docker/) - Podman: [Installation Guide](https://podman.io/docs/installation) -Both Docker and Podman are container runtimes that can be used to build and run the Red Hat Dependency Analytics images. You can choose either Docker or Podman based on your preference and the compatibility with your operating system. +Both Docker and Podman are container runtimes that can be used to build and run the Trustify Dependency Analytics images. You can choose either Docker or Podman based on your preference and the compatibility with your operating system. -## Images generated for Exhort Javascript API +## Images generated for Trustify Dependency Analytics Javascript Client Ecosystem | Version | IMAGE | TAG | ------------------------------| ------------------------------------------------------------------ | ----------------------------------------------- |-------------------| -Maven, NPM, Golang | mvn 3.9.6,
    npm 10.2.4,
    go 1.21.5,
    python \ | quay.io/ecosystem-appeng/trustify-da-javascript-client | 0.1.1-ea.26 | +Maven, NPM, Golang | mvn 3.9.6,
    npm 10.2.4,
    go 1.21.5,
    python \ | ghcr.io/guacsec/trustify-da-javascript-client | 0.2.4-ea.12 | ## Usage Notes diff --git a/docker-image/scripts/rhda.sh b/docker-image/scripts/rhda.sh index 5a53dad8..96d24c54 100644 --- a/docker-image/scripts/rhda.sh +++ b/docker-image/scripts/rhda.sh @@ -19,11 +19,11 @@ then # Print stderr message to console error_message=$(sed -n '/^Error:/p' error.log) - printf "\n[ERROR] Red Hat Dependency Analytics failed with exit code $exit_code.\n$error_message" + printf "\n[ERROR] Trustify Dependency Analytics failed with exit code $exit_code.\n$error_message" exit 1 else # In case of success print report summary into console -printf "\nRed Hat Dependency Analytics Report\n" +printf "\nTrustify Dependency Analytics Report\n" printf "=%.0s" {1..50} printf "\n" printf "Dependencies\n" diff --git a/integration/scenarios/maven/expected_stack_html b/integration/scenarios/maven/expected_stack_html index b1249f67..24592baa 100644 --- a/integration/scenarios/maven/expected_stack_html +++ b/integration/scenarios/maven/expected_stack_html @@ -196,7 +196,7 @@ # Transitive Highest CVSS Highest Severity - Red Hat remediation available + Remediation available @@ -563,7 +563,7 @@
@@ -68,11 +76,12 @@ Use as CLI Script ```shell $ npx @trustify-da/trustify-da-javascript-client help -Usage: trustify-da-javascript-client {component|stack} +Usage: trustify-da-javascript-client {component|stack|image|validate-token} Commands: trustify-da-javascript-client stack
[--html|--summary] produce stack report for manifest path trustify-da-javascript-client component [--summary] produce component report for a manifest type and content + trustify-da-javascript-client image [--html|--summary] produce image analysis report for OCI image references Options: --help Show help [boolean] @@ -91,6 +100,22 @@ $ npx @trustify-da/trustify-da-javascript-client stack /path/to/pom.xml --html # get component analysis $ npx @trustify-da/trustify-da-javascript-client component /path/to/pom.xml + +# get image analysis in json format +$ npx @trustify-da/trustify-da-javascript-client image docker.io/library/node:18 + +# get image analysis in json format (summary only) +# Note: summary returns an object with imageRef as key +$ npx @trustify-da/trustify-da-javascript-client image docker.io/library/node:18 --summary + +# get image analysis in html format +$ npx @trustify-da/trustify-da-javascript-client image docker.io/library/node:18 --html + +# analyze multiple images +$ npx @trustify-da/trustify-da-javascript-client image docker.io/library/node:18 docker.io/library/python:3.9 + +# specify architecture using ^^ notation (e.g., httpd:2.4.49^^amd64) +$ npx @trustify-da/trustify-da-javascript-client image httpd:2.4.49^^amd64 ``` @@ -113,6 +138,22 @@ $ trustify-da-javascript-client stack /path/to/pom.xml --html # get component analysis $ trustify-da-javascript-client component /path/to/pom.xml + +# get image analysis in json format +$ trustify-da-javascript-client image docker.io/library/node:18 + +# get image analysis in json format (summary only) +# Note: summary returns an object with imageRef as key +$ trustify-da-javascript-client image docker.io/library/node:18 --summary + +# get image analysis in html format +$ trustify-da-javascript-client image docker.io/library/node:18 --html + +# analyze multiple images +$ trustify-da-javascript-client image docker.io/library/node:18 docker.io/library/python:3.9 + +# specify architecture using ^^ notation (e.g., httpd:2.4.49^^amd64) +$ trustify-da-javascript-client image httpd:2.4.49^^amd64 ``` @@ -288,6 +329,13 @@ let stackAnalysisHtml = await exhort.stackAnalysis('/path/to/pom.xml', true, opt // Get component analysis in JSON format let componentAnalysis = await exhort.componentAnalysis('/path/to/pom.xml', options) + +// Get image analysis in JSON format +let imageAnalysis = await exhort.imageAnalysis(['docker.io/library/node:18'], false, options) +// Get image analysis in HTML format in string +let imageAnalysisHtml = await exhort.imageAnalysis(['docker.io/library/node:18'], true, options) +// Specify architecture using ^^ notation (e.g., httpd:2.4.49^^amd64) +let imageAnalysisWithArch = await exhort.imageAnalysis(['httpd:2.4.49^^amd64'], false, options) ``` **_Environment variables takes precedence._**

diff --git a/src/cli.js b/src/cli.js index c24797c6..a453bf43 100644 --- a/src/cli.js +++ b/src/cli.js @@ -55,6 +55,64 @@ const validateToken = { } } +// command for image analysis takes OCI image references +const image = { + command: 'image ', + desc: 'produce image analysis report for OCI image references', + builder: yargs => yargs.positional( + 'image-refs', + { + desc: 'OCI image references to analyze (one or more)', + type: 'string', + array: true, + } + ).options({ + html: { + alias: 'r', + desc: 'Get the report as HTML instead of JSON', + type: 'boolean', + conflicts: 'summary' + }, + summary: { + alias: 's', + desc: 'For JSON report, get only the \'summary\'', + type: 'boolean', + conflicts: 'html' + } + }), + handler: async args => { + let imageRefs = args['image-refs'] + if (!Array.isArray(imageRefs)) { + imageRefs = [imageRefs] + } + let html = args['html'] + let summary = args['summary'] + let res = await exhort.imageAnalysis(imageRefs, html) + if(summary && !html) { + let summaries = {} + for (let [imageRef, report] of Object.entries(res)) { + for (let provider in report.providers) { + if (report.providers[provider].sources !== undefined) { + for (let source in report.providers[provider].sources) { + if (report.providers[provider].sources[source].summary) { + if (!summaries[imageRef]) { + summaries[imageRef] = {}; + } + if (!summaries[imageRef][provider]) { + summaries[imageRef][provider] = {}; + } + summaries[imageRef][provider][source] = report.providers[provider].sources[source].summary + } + } + } + } + } + res = summaries + } + console.log(html ? res : JSON.stringify(res, null, 2)) + } +} + // command for stack analysis takes a manifest path const stack = { command: 'stack
[--html|--summary]', @@ -112,9 +170,10 @@ const stack = { // parse and invoke the command yargs(hideBin(process.argv)) - .usage(`Usage: ${process.argv[0].includes("node") ? path.parse(process.argv[1]).base : path.parse(process.argv[0]).base} {component|stack|validate-token}`) + .usage(`Usage: ${process.argv[0].includes("node") ? path.parse(process.argv[1]).base : path.parse(process.argv[0]).base} {component|stack|image|validate-token}`) .command(stack) .command(component) + .command(image) .command(validateToken) .scriptName('') .version(false) From 43218693e561dae44c18f998adc6d64258cd03d5 Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Wed, 19 Nov 2025 13:21:32 +0100 Subject: [PATCH 042/102] fix: simplify workflow triggers (#282) Signed-off-by: Ruben Romero Montes --- .github/workflows/integration.yml | 2 +- .github/workflows/publish.yml | 22 +++++++++------------- .github/workflows/push-to-registry.yml | 25 +++++-------------------- 3 files changed, 15 insertions(+), 34 deletions(-) diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 3afcb184..8f70d507 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -23,4 +23,4 @@ jobs: with: language: javascript repo-url: ${{ github.repository }} - commit-sha: ${{ github.event.workflow_run && github.event.workflow_run.head_sha || github.sha }} + commit-sha: ${{ github.event_name == 'workflow_dispatch' && github.sha || github.event.workflow_run.head_sha && github.event.workflow_run.head_sha != github.event.workflow_run.base_sha && github.event.workflow_run.head_sha ||github.sha }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 598a5853..45595159 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -3,11 +3,10 @@ name: Publish on: - workflow_run: - workflows: ["Integration Tests"] - types: - - completed + workflow_dispatch: push: + branches: + - main tags: - 'v*.*.*' @@ -17,17 +16,14 @@ permissions: jobs: publish-ea: - if: | - github.event_name == 'workflow_run' && - github.event.workflow_run.event == 'push' && - github.event.workflow_run.head_branch == 'main' + if: startsWith(github.ref, 'refs/tags/') == false runs-on: ubuntu-latest name: Publish EA release to NPM steps: - name: Checkout sources uses: actions/checkout@v4 with: - ref: ${{ github.event.workflow_run.head_branch }} + ref: ${{ github.ref_name }} fetch-depth: 0 - name: Install node 24 @@ -45,9 +41,9 @@ jobs: git config user.name "${{ github.actor }}" git config user.email "${{ github.actor }}@users.noreply.github.com" - - name: Reset to workflow run commit + - name: Reset to commit run: | - git reset --hard ${{ github.event.workflow_run.head_sha }} + git reset --hard ${{ github.sha }} - name: Get current version id: current-version @@ -65,13 +61,13 @@ jobs: - name: Publish package run: | - SHORT_SHA=$(git rev-parse --short "${{ github.event.workflow_run.head_sha }}") + SHORT_SHA=$(git rev-parse --short "${{ github.sha }}") EA_VERSION="${{ steps.current-version.outputs.base-version }}-ea.${SHORT_SHA}" npm version "$EA_VERSION" --no-git-tag-version npm publish --verbose --tag ea --access public --provenance publish-release: - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + if: startsWith(github.ref, 'refs/tags/') runs-on: ubuntu-latest name: Publish release to NPM steps: diff --git a/.github/workflows/push-to-registry.yml b/.github/workflows/push-to-registry.yml index 1bf89b2d..f72d467a 100644 --- a/.github/workflows/push-to-registry.yml +++ b/.github/workflows/push-to-registry.yml @@ -3,14 +3,12 @@ name: Push to registry on: - workflow_run: - workflows: ["Integration Tests"] - types: - - completed + workflow_dispatch: push: + branches: + - main tags: - 'v*.*.*' - workflow_dispatch: env: REGISTRY: ghcr.io @@ -18,19 +16,6 @@ env: jobs: build-and-push: - if: | - ( - github.event_name == 'workflow_run' && - github.event.workflow_run.event == 'push' && - github.event.workflow_run.head_branch == 'main' - ) - || - ( - github.event_name == 'push' && - startsWith(github.ref, 'refs/tags/') - ) - || - github.event_name == 'workflow_dispatch' runs-on: ubuntu-latest permissions: contents: read @@ -55,7 +40,7 @@ jobs: - name: Determine package version id: version run: | - if [ "${GITHUB_EVENT_NAME}" = "push" ] && [[ "${GITHUB_REF}" =~ refs/tags/ ]]; then + if [[ "${GITHUB_REF}" =~ refs/tags/ ]]; then # Release tag VERSION="${GITHUB_REF#refs/tags/v}" EA_BUILD=false @@ -107,7 +92,7 @@ jobs: tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | - IMAGE_VERSION=${{ steps.package-version.outputs.version }} + IMAGE_VERSION=${{ steps.version.outputs.version }} IMAGE_REVISION=${{ steps.image-meta.outputs.revision }} IMAGE_CREATED=${{ steps.image-meta.outputs.created }} cache-from: type=gha From 2eeeebad3f722cbc1a895b64f76f401d41170f77 Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Wed, 19 Nov 2025 15:41:07 +0100 Subject: [PATCH 043/102] chore: rename Exhort to Trustify DA (#280) * chore: rename Exhort to Trustify DA Signed-off-by: Ruben Romero Montes * feat: update tests Signed-off-by: Ruben Romero Montes --------- Signed-off-by: Ruben Romero Montes --- .github/workflows/test.yml | 11 +- CONTRIBUTING.md | 2 - README.md | 63 ++++++----- integration/testers/javascript/index.js | 8 +- integration/testers/typescript/index.ts | 12 +- package.json | 4 +- src/analysis.js | 26 ++--- src/cli.js | 10 +- src/index.js | 32 ++---- src/providers/java_maven.js | 2 +- src/providers/python_controller.js | 2 +- src/providers/python_pip.js | 4 +- test/get-exhort-url.test.js | 144 +++++++----------------- test/it/end-to-end.js | 2 +- 14 files changed, 130 insertions(+), 192 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d8b4eb6b..7b9c5839 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,7 +20,7 @@ jobs: name: Lint and test project strategy: matrix: - node: ['18', '20', '24', 'latest'] + node: ['24', 'latest'] env: MAIN_NODE_VER: '24' steps: @@ -88,8 +88,7 @@ jobs: env: TRUSTIFY_DA_PYTHON3_PATH: "${{steps.python-location.outputs.python-bin-location}}/python3" TRUSTIFY_DA_PIP3_PATH: "${{steps.python-location.outputs.python-bin-location}}/pip3" - TRUSTIFY_DA_DEV_MODE: 'true' - DEV_TRUSTIFY_DA_BACKEND_URL: 'https://exhort.stage.devshift.net' + TRUSTIFY_DA_BACKEND_URL: 'https://exhort.stage.devshift.net' run: npm run test - name: Compile project @@ -98,15 +97,13 @@ jobs: - name: Run integration tests run: npm run integration-tests env: - TRUSTIFY_DA_DEV_MODE: 'true' - DEV_TRUSTIFY_DA_BACKEND_URL: 'https://exhort.stage.devshift.net' + TRUSTIFY_DA_BACKEND_URL: 'https://exhort.stage.devshift.net' - name: Run integration tests cli working-directory: integration run: bash ./run_its.sh env: - TRUSTIFY_DA_DEV_MODE: 'true' - DEV_TRUSTIFY_DA_BACKEND_URL: 'https://exhort.stage.devshift.net' + TRUSTIFY_DA_BACKEND_URL: 'https://exhort.stage.devshift.net' - name: Upload coverage reports if: ${{ matrix.node == env.MAIN_NODE_VER }} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 835af41f..6cd6389d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -119,7 +119,5 @@ contribution. See the [DCO](DCO) file for details. [0]: https://www.conventionalcommits.org/en/v1.0.0/ -[1]: https://github.com/guacsec/exhort/blob/0.1.x/src/main/resources/META-INF/openapi.yaml - [10]: https://badgen.net/badge/NodeJS%20Version/18/68a063 diff --git a/README.md b/README.md index abd94f41..56e6f5d5 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,14 @@ -# Exhort JavaScript API
![latest-no-snapshot][0] ![latest-snapshot][1] +# Trustify Dependency Analytics JavaScript Client
![latest-no-snapshot][0] ![latest-snapshot][1] -* Looking for the OpenAPI Spec? Try [Exhort API Spec](https://github.com/trustify-da/trustify-da-api-model) -* Looking for our Java API? Try [Exhort Java API](https://github.com/guacsec/exhort-java-api). -* Looking for our Backend implementation? Try [Exhort](https://github.com/guacsec/exhort). +* Looking for the OpenAPI Spec? Try [Trustify Dependency Analytics API](https://github.com/guacsec/trustify-da-api-spec) +* Looking for our Java API? Try [Trustify Dependency Analytics Java Client](https://github.com/guacsec/trustify-da-java-client). +* Looking for our Backend implementation? Try [Trustify Dependency Analytics](https://github.com/guacsec/trustify-dependency-analytics).

Usage

+Prerequisites: The TRUSTIFY_DA_BACKEND_URL environment variable must be set to the URL of the Trustify Dependency Analytics backend service. You can set it as an environment variable or pass it in the options object (see Customization section). +

  • Use as ESM Module from an ESM module @@ -15,24 +17,29 @@ Use as ESM Module from an ESM module npm install @trustify-da/trustify-da-javascript-client ``` +```shell +# Set the mandatory backend URL +export TRUSTIFY_DA_BACKEND_URL=https://trustify-da.example.com +``` + ```javascript -import exhort from '@trustify-da/trustify-da-javascript-client' +import client from '@trustify-da/trustify-da-javascript-client' import fs from 'node:fs' // Get stack analysis in JSON format -let stackAnalysis = await exhort.stackAnalysis('/path/to/pom.xml') +let stackAnalysis = await client.stackAnalysis('/path/to/pom.xml') // Get stack analysis in HTML format (string) -let stackAnalysisHtml = await exhort.stackAnalysis('/path/to/pom.xml', true) +let stackAnalysisHtml = await client.stackAnalysis('/path/to/pom.xml', true) // Get component analysis in JSON format -let componentAnalysis = await exhort.componentAnalysis('/path/to/pom.xml') +let componentAnalysis = await client.componentAnalysis('/path/to/pom.xml') // Get image analysis in JSON format -let imageAnalysis = await exhort.imageAnalysis(['docker.io/library/node:18']) +let imageAnalysis = await client.imageAnalysis(['docker.io/library/node:18']) // Get image analysis in HTML format (string) -let imageAnalysisHtml = await exhort.imageAnalysis(['docker.io/library/node:18'], true) +let imageAnalysisHtml = await client.imageAnalysis(['docker.io/library/node:18'], true) // Analyze multiple images -let multipleImagesAnalysis = await exhort.imageAnalysis(['docker.io/library/node:18', 'docker.io/library/python:3.9']) +let multipleImagesAnalysis = await client.imageAnalysis(['docker.io/library/node:18', 'docker.io/library/python:3.9']) // Specify architecture using ^^ notation (e.g., httpd:2.4.49^^amd64) -let imageAnalysisWithArch = await exhort.imageAnalysis(['httpd:2.4.49^^amd64']) +let imageAnalysisWithArch = await client.imageAnalysis(['httpd:2.4.49^^amd64']) ```
@@ -45,16 +52,16 @@ npm install @trustify-da/trustify-da-javascript-client ``` ```javascript -async function loadExhort() +async function loadTrustifyDa() { // dynamic import is the only way to import ESM module into commonJS module - const { default: exhort } = await import('@trustify-da/trustify-da-javascript-client'); - return exhort + const { default: client } = await import('@trustify-da/trustify-da-javascript-client'); + return client } -const runExhort = (manifestPath) => { +const runTrustifyDa = (manifestPath) => { return new Promise(async ( resolve, reject) => { try { - let stackAnalysisReport = await (await loadExhort()).stackAnalysis(manifestPath,false) + let stackAnalysisReport = await (await loadTrustifyDa()).stackAnalysis(manifestPath,false) resolve(stackAnalysisReport) } catch (error) @@ -64,7 +71,7 @@ const runExhort = (manifestPath) => { }); }; -runExhort("./path/to/manifest").then(resp => console.log(JSON.stringify(resp,null,4))) +runTrustifyDa("./path/to/manifest").then(resp => console.log(JSON.stringify(resp,null,4))) ``` @@ -297,17 +304,21 @@ All of the 5 above examples are valid for marking a package to be ignored

Customization

-There are 2 approaches for customizing Exhort JavaScript API. Whether you're using this API as a +There are 2 approaches for customizing Trustify Dependency Analytics JavaScript Client. Whether you're using this API as a Global Module, a Remote Script, or an ESM Module, you can use Environment Variables for various customization. +Note: The TRUSTIFY_DA_BACKEND_URL environment variable is mandatory and must be set to the URL of the Trustify Dependency Analytics backend service. Without this variable, the API will throw an error. + However, ESM Module users, can opt for customizing programmatically: ```javascript -import exhort from '@trustify-da/trustify-da-javascript-client' +import client from '@trustify-da/trustify-da-javascript-client' import fs from 'node:fs' let options = { + // Mandatory: Backend URL for Trustify Dependency Analytics service + 'TRUSTIFY_DA_BACKEND_URL': 'https://api.trustify.dev', 'TRUSTIFY_DA_MVN_PATH': '/path/to/my/mvn', 'TRUSTIFY_DA_NPM_PATH': '/path/to/npm', 'TRUSTIFY_DA_PNPM_PATH': '/path/to/pnpm', @@ -323,19 +334,19 @@ let options = { } // Get stack analysis in JSON format ( all package managers, pom.xml is as an example here) -let stackAnalysis = await exhort.stackAnalysis('/path/to/pom.xml', false, options) +let stackAnalysis = await client.stackAnalysis('/path/to/pom.xml', false, options) // Get stack analysis in HTML format in string ( all package managers, pom.xml is as an example here) -let stackAnalysisHtml = await exhort.stackAnalysis('/path/to/pom.xml', true, options) +let stackAnalysisHtml = await client.stackAnalysis('/path/to/pom.xml', true, options) // Get component analysis in JSON format -let componentAnalysis = await exhort.componentAnalysis('/path/to/pom.xml', options) +let componentAnalysis = await client.componentAnalysis('/path/to/pom.xml', options) // Get image analysis in JSON format -let imageAnalysis = await exhort.imageAnalysis(['docker.io/library/node:18'], false, options) +let imageAnalysis = await client.imageAnalysis(['docker.io/library/node:18'], false, options) // Get image analysis in HTML format in string -let imageAnalysisHtml = await exhort.imageAnalysis(['docker.io/library/node:18'], true, options) +let imageAnalysisHtml = await client.imageAnalysis(['docker.io/library/node:18'], true, options) // Specify architecture using ^^ notation (e.g., httpd:2.4.49^^amd64) -let imageAnalysisWithArch = await exhort.imageAnalysis(['httpd:2.4.49^^amd64'], false, options) +let imageAnalysisWithArch = await client.imageAnalysis(['httpd:2.4.49^^amd64'], false, options) ``` **_Environment variables takes precedence._**

diff --git a/integration/testers/javascript/index.js b/integration/testers/javascript/index.js index 35b278e9..a10b161e 100644 --- a/integration/testers/javascript/index.js +++ b/integration/testers/javascript/index.js @@ -1,6 +1,6 @@ #!/usr/bin/env node -import exhort from '@trustify-da/trustify-da-javascript-client' +import client from '@trustify-da/trustify-da-javascript-client' import process from 'node:process' const [,, ...args] = process.argv @@ -8,13 +8,13 @@ const [,, ...args] = process.argv if ('stack' === args[0]) { // arg[1] = manifest path; arg[2] = is html boolean let html = args[2] === 'true' - let res = await exhort.stackAnalysis(args[1], html) + let res = await client.stackAnalysis(args[1], html) console.log(html ? res : JSON.stringify(res, null, 2)) process.exit(0) } if ('component' === args[0]) { // arg[1] = manifest path - let res = await exhort.componentAnalysis(args[1]) + let res = await client.componentAnalysis(args[1]) console.log(JSON.stringify(res, null, 2)) process.exit(0) } @@ -24,7 +24,7 @@ if ('validateToken' === args[0]) { let tokens = { "TRUSTIFY_DA_SNYK_TOKEN" : args[1] } - let res = await exhort.validateToken(tokens) + let res = await client.validateToken(tokens) console.log(res) process.exit(0) } diff --git a/integration/testers/typescript/index.ts b/integration/testers/typescript/index.ts index 738ddbd2..7d6d8493 100644 --- a/integration/testers/typescript/index.ts +++ b/integration/testers/typescript/index.ts @@ -1,21 +1,21 @@ #!/usr/bin/env node -import exhort from '@guacsec/trustify-da-javascript-client' -import process from 'node:process' -import { AnalysisReport } from '@trustify-da/trustify-da-api-model/model/v5/AnalysisReport' +import client from '@trustify-da/trustify-da-javascript-client'; +import process from 'node:process'; +import type { AnalysisReport } from '@trustify-da/trustify-da-api-model/model/v5/AnalysisReport'; -const [,, ...args] = process.argv +const args = process.argv.slice(2); if ('stack' === args[0]) { // arg[1] = manifest path; arg[2] = is html boolean let html = args[2] === 'true' - let res = await exhort.stackAnalysis(args[1], html) + let res = await client.stackAnalysis(args[1], html) console.log(html ? res as string : JSON.stringify(res as AnalysisReport, null, 2)) process.exit(0) } if ('component' === args[0]) { // arg[1] = manifest path - let res = await exhort.componentAnalysis(args[1]) + let res = await client.componentAnalysis(args[1]) console.log(JSON.stringify(res as AnalysisReport, null, 2)) process.exit(0) } diff --git a/package.json b/package.json index de3902f8..33f758cf 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,9 @@ "exhort", "secure", "supply-chain", - "vulnerability" + "vulnerability", + "trustify", + "dependency analytics" ], "engines": { "node": ">= 20.0.0", diff --git a/src/analysis.js b/src/analysis.js index 8eddf6bf..4e8a98ee 100644 --- a/src/analysis.js +++ b/src/analysis.js @@ -18,7 +18,7 @@ const rhdaPackageManagerHeader = "rhda-pkg-manager" /** * Adds proxy agent configuration to fetch options if a proxy URL is specified * @param {RequestInit} options - The base fetch options - * @param {import("index.js").Options} opts - The exhort options that may contain proxy configuration + * @param {import("index.js").Options} opts - The trustify DA options that may contain proxy configuration * @returns {RequestInit} The fetch options with proxy agent if applicable */ function addProxyAgent(options, opts) { @@ -47,7 +47,7 @@ async function requestStack(provider, manifest, url, html = false, opts = {}) { let startTime = new Date() let endTime if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { - console.log("Starting time of sending stack analysis request to exhort server= " + startTime) + console.log("Starting time of sending stack analysis request to the dependency analytics server= " + startTime) } opts[rhdaPackageManagerHeader.toUpperCase().replaceAll("-", "_")] = provided.ecosystem @@ -80,15 +80,15 @@ async function requestStack(provider, manifest, url, html = false, opts = {}) { console.log("Unique Identifier associated with this request - ex-request-id=" + exRequestId) } endTime = new Date() - console.log("Response body received from exhort server : " + EOL + EOL) + console.log("Response body received from Trustify DA backend server : " + EOL + EOL) console.log(console.log(JSON.stringify(result, null, 4))) - console.log("Ending time of sending stack analysis request to exhort server= " + endTime) + console.log("Ending time of sending stack analysis request to Trustify DA backend server= " + endTime) let time = (endTime - startTime) / 1000 console.log("Total Time in seconds: " + time) } } else { - throw new Error(`Got error response from exhort backend - http return code : ${resp.status}, error message => ${await resp.text()}`) + throw new Error(`Got error response from Trustify DA backend - http return code : ${resp.status}, error message => ${await resp.text()}`) } return Promise.resolve(result) @@ -109,7 +109,7 @@ async function requestComponent(provider, manifest, url, opts = {}) { opts["source-manifest"] = "" opts[rhdaOperationTypeHeader.toUpperCase().replaceAll("-", "_")] = "component-analysis" if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { - console.log("Starting time of sending component analysis request to exhort server= " + new Date()) + console.log("Starting time of sending component analysis request to Trustify DA backend server= " + new Date()) } opts[rhdaPackageManagerHeader.toUpperCase().replaceAll("-", "_")] = provided.ecosystem @@ -137,14 +137,14 @@ async function requestComponent(provider, manifest, url, opts = {}) { if (exRequestId) { console.log("Unique Identifier associated with this request - ex-request-id=" + exRequestId) } - console.log("Response body received from exhort server : " + EOL + EOL) + console.log("Response body received from Trustify DA backend server : " + EOL + EOL) console.log(JSON.stringify(result, null, 4)) - console.log("Ending time of sending component analysis request to exhort server= " + new Date()) + console.log("Ending time of sending component analysis request to Trustify DA backend server= " + new Date()) } } else { - throw new Error(`Got error response from exhort backend - http return code : ${resp.status}, ex-request-id: ${resp.headers.get("ex-request-id")} error message => ${await resp.text()}`) + throw new Error(`Got error response from Trustify DA backend - http return code : ${resp.status}, ex-request-id: ${resp.headers.get("ex-request-id")} error message => ${await resp.text()}`) } return Promise.resolve(result) @@ -191,13 +191,13 @@ async function requestImages(imageRefs, url, html = false, opts = {}) { if (exRequestId) { console.log("Unique Identifier associated with this request - ex-request-id=" + exRequestId) } - console.log("Response body received from exhort server : " + EOL + EOL) + console.log("Response body received from Trustify DA backend server : " + EOL + EOL) console.log(JSON.stringify(result, null, 4)) - console.log("Ending time of sending component analysis request to exhort server= " + new Date()) + console.log("Ending time of sending component analysis request to Trustify DA backend server= " + new Date()) } return result } else { - throw new Error(`Got error response from exhort backend - http return code : ${resp.status}, ex-request-id: ${resp.headers.get("ex-request-id")} error message => ${await resp.text()}`) + throw new Error(`Got error response from Trustify DA backend - http return code : ${resp.status}, ex-request-id: ${resp.headers.get("ex-request-id")} error message => ${await resp.text()}`) } } @@ -264,7 +264,7 @@ function getTokenHeaders(opts = {}) { setRhdaHeader(rhdaTelemetryId, headers, opts); if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { - console.log("Headers Values to be sent to exhort:" + EOL) + console.log("Headers Values to be sent to Trustify DA backend:" + EOL) for (const headerKey in headers) { if (!headerKey.match(RegexNotToBeLogged)) { console.log(`${headerKey}: ${headers[headerKey]}`) diff --git a/src/cli.js b/src/cli.js index a453bf43..b105773a 100644 --- a/src/cli.js +++ b/src/cli.js @@ -5,7 +5,7 @@ import * as path from "path"; import yargs from 'yargs' import { hideBin } from 'yargs/helpers' -import exhort from './index.js' +import client from './index.js' // command for component analysis take manifest type and content @@ -22,7 +22,7 @@ const component = { ), handler: async args => { let manifestName = args['/path/to/manifest'] - let res = await exhort.componentAnalysis(manifestName) + let res = await client.componentAnalysis(manifestName) console.log(JSON.stringify(res, null, 2)) } } @@ -50,7 +50,7 @@ const validateToken = { let tokenValue = args['tokenValue'].trim() opts[`TRUSTIFY_DA_${tokenProvider}_TOKEN`] = tokenValue } - let res = await exhort.validateToken(opts) + let res = await client.validateToken(opts) console.log(res) } } @@ -87,7 +87,7 @@ const image = { } let html = args['html'] let summary = args['summary'] - let res = await exhort.imageAnalysis(imageRefs, html) + let res = await client.imageAnalysis(imageRefs, html) if(summary && !html) { let summaries = {} for (let [imageRef, report] of Object.entries(res)) { @@ -144,7 +144,7 @@ const stack = { let summary = args['summary'] let theProvidersSummary = new Map(); let theProvidersObject ={} - let res = await exhort.stackAnalysis(manifest, html) + let res = await client.stackAnalysis(manifest, html) if(summary) { for (let provider in res.providers ) { diff --git a/src/index.js b/src/index.js index cb19c279..9cdc0ba2 100644 --- a/src/index.js +++ b/src/index.js @@ -85,35 +85,27 @@ function readAndPrintVersionFromPackageJson() { } /** - * This function is used to determine exhort theUrl backend according to the following logic: - * If TRUSTIFY_DA_DEV_MODE = true, then take the value of the EXHORT BACKEND URL of dev/staging environment in such a way: - * take it as environment variable if exists, otherwise, take it from opts object if exists, otherwise, use the hardcoded default of DEV environment. - * If TRUSTIFY_DA_DEV_MODE = false , then select the production theUrl of EXHORT Backend, which is hardcoded. - * TRUSTIFY_DA_DEV_MODE evaluated in the following order and selected when it finds it first: + * This function is used to determine the Trustify DA backend URL. + * The TRUSTIFY_DA_BACKEND_URL is evaluated in the following order and selected when it finds it first: * 1. Environment Variable * 2. (key,value) from opts object - * 3. Default False ( points to production URL ) + * If TRUSTIFY_DA_BACKEND_URL is not set, the function will throw an error. * @param {{TRUSTIFY_DA_DEBUG?: string | undefined; TRUSTIFY_DA_BACKEND_URL?: string | undefined}} [opts={}] - * @return {string} - The selected exhort backend + * @return {string} - The selected Trustify DA backend URL + * @throws {Error} if TRUSTIFY_DA_BACKEND_URL is unset * @private */ -export function selectExhortBackend(opts = {}) { +export function selectTrustifyDABackend(opts = {}) { if (getCustom("TRUSTIFY_DA_DEBUG", "false", opts) === "true") { readAndPrintVersionFromPackageJson(); } - let url; - if (getCustom('TRUSTIFY_DA_DEV_MODE', 'false', opts) === 'true') { - url = getCustom('DEV_TRUSTIFY_DA_BACKEND_URL', undefined, opts); - } else { - url = getCustom('TRUSTIFY_DA_BACKEND_URL', undefined, opts); - } - + let url = getCustom('TRUSTIFY_DA_BACKEND_URL', null, opts); if (!url) { throw new Error(`TRUSTIFY_DA_BACKEND_URL is unset`) } - logOptionsAndEnvironmentsVariables("Chosen exhort backend URL:", url) + logOptionsAndEnvironmentsVariables("Chosen Trustify DA backend URL:", url) return url; } @@ -147,7 +139,7 @@ export function selectExhortBackend(opts = {}) { * or backend request failed */ async function stackAnalysis(manifest, html = false, opts = {}) { - const theUrl = selectExhortBackend(opts) + const theUrl = selectTrustifyDABackend(opts) fs.accessSync(manifest, fs.constants.R_OK) // throws error if file unreadable let provider = match(manifest, availableProviders) // throws error if no matching provider return await analysis.requestStack(provider, manifest, theUrl, html, opts) // throws error request sending failed @@ -161,7 +153,7 @@ async function stackAnalysis(manifest, html = false, opts = {}) { * @throws {Error} if no matching provider, failed to get create content, or backend request failed */ async function componentAnalysis(manifest, opts = {}) { - const theUrl = selectExhortBackend(opts) + const theUrl = selectTrustifyDABackend(opts) fs.accessSync(manifest, fs.constants.R_OK) opts["manifest-type"] = path.basename(manifest) let provider = match(manifest, availableProviders) // throws error if no matching provider @@ -197,7 +189,7 @@ async function componentAnalysis(manifest, opts = {}) { * or backend request failed */ async function imageAnalysis(imageRefs, html = false, opts = {}) { - const theUrl = selectExhortBackend(opts) + const theUrl = selectTrustifyDABackend(opts) return await analysis.requestImages(imageRefs, theUrl, html, opts) } @@ -208,6 +200,6 @@ async function imageAnalysis(imageRefs, html = false, opts = {}) { * @throws {Error} if the backend request failed. */ async function validateToken(opts = {}) { - const theUrl = selectExhortBackend(opts) + const theUrl = selectTrustifyDABackend(opts) return await analysis.validateToken(theUrl, opts) // throws error request sending failed } diff --git a/src/providers/java_maven.js b/src/providers/java_maven.js index c7f43a9e..4e6d724b 100644 --- a/src/providers/java_maven.js +++ b/src/providers/java_maven.js @@ -88,7 +88,7 @@ export default class Java_maven extends Base_java { } // create dependency graph in a temp file - let tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'exhort_')) + let tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'trustify_da_')) let tmpDepTree = path.join(tmpDir, 'mvn_deptree.txt') // build initial command (dot outputType is not available for verbose mode) let depTreeCmdArgs = ['-q', 'org.apache.maven.plugins:maven-dependency-plugin:3.6.0:tree', diff --git a/src/providers/python_controller.js b/src/providers/python_controller.js index 31170129..e89c770f 100644 --- a/src/providers/python_controller.js +++ b/src/providers/python_controller.js @@ -49,7 +49,7 @@ export default class Python_controller { } prepareEnvironment() { if(!this.realEnvironment) { - this.pythonEnvDir = path.join(path.sep, "tmp", "exhort_env_js") + this.pythonEnvDir = path.join(path.sep, "tmp", "trustify_da_env_js") try { invokeCommand(this.pathToPythonBin, ['-m', 'venv', this.pythonEnvDir]) } catch (error) { diff --git a/src/providers/python_pip.js b/src/providers/python_pip.js index 9edf7b6e..08d2a543 100644 --- a/src/providers/python_pip.js +++ b/src/providers/python_pip.js @@ -212,7 +212,7 @@ function createSbomStackAnalysis(manifest, opts = {}) { }) let requirementTxtContent = fs.readFileSync(manifest).toString(); handleIgnoredDependencies(requirementTxtContent, sbom, opts) - // In python there is no root component, then we must remove the dummy root we added, so the sbom json will be accepted by exhort backend + // In python there is no root component, then we must remove the dummy root we added, so the sbom json will be accepted by the DA backend // sbom.removeRootComponent() return sbom.getAsJsonString(opts) } @@ -237,7 +237,7 @@ function getSbomForComponentAnalysis(manifest, opts = {}) { }) let requirementTxtContent = fs.readFileSync(manifest).toString(); handleIgnoredDependencies(requirementTxtContent, sbom, opts) - // In python there is no root component, then we must remove the dummy root we added, so the sbom json will be accepted by exhort backend + // In python there is no root component, then we must remove the dummy root we added, so the sbom json will be accepted by the DA backend // sbom.removeRootComponent() return sbom.getAsJsonString(opts) } diff --git a/test/get-exhort-url.test.js b/test/get-exhort-url.test.js index 9fff03d3..ed850d8d 100644 --- a/test/get-exhort-url.test.js +++ b/test/get-exhort-url.test.js @@ -1,127 +1,65 @@ import { expect } from 'chai' -import { selectExhortBackend } from '../src/index.js' +import { selectTrustifyDABackend } from '../src/index.js' -const testProdUrl = 'https://exhort.example.com'; -const testDevUrl = 'https://dev.exhort.example.com'; +const testUrl = 'https://trustify-da.example.com'; +const testUrl2 = 'https://dev.trustify-da.example.com'; -suite('testing Select Exhort Backend function when TRUSTIFY_DA_DEV_MODE environment variable is True', () => { +suite('testing Select Trustify DA Backend function', () => { - test('When Dev Mode environment Variable= true, default DEV Exhort Backend Selected', () => { - let testOpts = { - 'TRUSTIFY_DA_DEV_MODE': 'true' - } - let selectedUrl = selectExhortBackend(testOpts); - expect(selectedUrl).not.to.be.equals(testProdUrl) - expect(selectedUrl).to.be.equals(testDevUrl) - }); - - test('When Dev Mode environment Variable= true, and despite option Dev Mode = false, default DEV Exhort Backend Selected', () => { - let testOpts = { - 'TRUSTIFY_DA_DEV_MODE': 'false' - } - let selectedUrl = selectExhortBackend(testOpts); - expect(selectedUrl).not.to.be.equals(testProdUrl) - expect(selectedUrl).to.be.equals(testDevUrl) + test('When TRUSTIFY_DA_BACKEND_URL is set in environment variable, should return that value', () => { + process.env['TRUSTIFY_DA_BACKEND_URL'] = testUrl; + let selectedUrl = selectTrustifyDABackend({}); + expect(selectedUrl).to.be.equals(testUrl); + delete process.env['TRUSTIFY_DA_BACKEND_URL']; }); - test('When Dev Mode environment Variable= true, And option DEV_TRUSTIFY_DA_BACKEND_URL contains some url route that client set, default DEV Exhort Backend Not Selected', () => { - const dummyRoute = 'http://dummy-exhort-route'; - delete process.env['DEV_TRUSTIFY_DA_BACKEND_URL'] + test('When TRUSTIFY_DA_BACKEND_URL is set in opts (but not in env), should return that value', () => { + delete process.env['TRUSTIFY_DA_BACKEND_URL']; let testOpts = { - 'DEV_TRUSTIFY_DA_BACKEND_URL': dummyRoute - } - let selectedUrl = selectExhortBackend(testOpts); - expect(selectedUrl).to.be.equals(dummyRoute) + 'TRUSTIFY_DA_BACKEND_URL': testUrl + }; + let selectedUrl = selectTrustifyDABackend(testOpts); + expect(selectedUrl).to.be.equals(testUrl); }); -}).beforeAll(() => { - process.env['TRUSTIFY_DA_DEV_MODE'] = 'true' - process.env['TRUSTIFY_DA_BACKEND_URL'] = testProdUrl - process.env['DEV_TRUSTIFY_DA_BACKEND_URL'] = testDevUrl -}).afterAll(() => delete process.env['TRUSTIFY_DA_DEV_MODE']); - -suite('testing Select Exhort Backend function when TRUSTIFY_DA_DEV_MODE environment variable is false', () => { - - test('When Dev Mode environment Variable= true, default DEV Exhort Backend Selected', () => { - + test('When TRUSTIFY_DA_BACKEND_URL is set in both environment and opts, environment variable should take precedence', () => { + process.env['TRUSTIFY_DA_BACKEND_URL'] = testUrl; let testOpts = { - 'TRUSTIFY_DA_DEV_MODE': 'false' - } - let selectedUrl = selectExhortBackend(testOpts); - expect(selectedUrl).not.to.be.equals(testDevUrl) - expect(selectedUrl).to.be.equals(testProdUrl) + 'TRUSTIFY_DA_BACKEND_URL': testUrl2 + }; + let selectedUrl = selectTrustifyDABackend(testOpts); + expect(selectedUrl).to.be.equals(testUrl); + delete process.env['TRUSTIFY_DA_BACKEND_URL']; }); - test('When Dev Mode environment Variable= false, and despite option Dev Mode = true, default Exhort Backend Selected (production)', () => { - let dummyRoute = 'http://dummy-dev-route-exhort' - let testOpts = { - 'TRUSTIFY_DA_DEV_MODE': 'true', - 'DEV_TRUSTIFY_DA_BACKEND_URL': dummyRoute - } - let selectedUrl = selectExhortBackend(testOpts); - expect(selectedUrl).not.to.be.equals(dummyRoute) - expect(selectedUrl).to.be.equals(testProdUrl) + test('When TRUSTIFY_DA_BACKEND_URL is not set, should throw error', () => { + delete process.env['TRUSTIFY_DA_BACKEND_URL']; + expect(() => selectTrustifyDABackend({})).to.throw('TRUSTIFY_DA_BACKEND_URL is unset'); }); - test('When Dev Mode environment Variable= false, environment variable DEV_TRUSTIFY_DA_BACKEND_URL=dummy-url, option TRUSTIFY_DA_DEV_MODE=true, default Exhort Backend Selected anyway', () => { - const dummyRoute = 'http://dummy-url' - process.env['DEV_TRUSTIFY_DA_BACKEND_URL'] = dummyRoute - let testOpts = { - 'TRUSTIFY_DA_DEV_MODE': 'true', - 'DEV_TRUSTIFY_DA_BACKEND_URL': dummyRoute - } - let selectedUrl = selectExhortBackend(testOpts); - delete process.env['DEV_TRUSTIFY_DA_BACKEND_URL'] - expect(selectedUrl).not.to.be.equals(dummyRoute) - expect(selectedUrl).to.be.equals(testProdUrl) - }); - -}).beforeAll(() => { - process.env['TRUSTIFY_DA_DEV_MODE'] = 'false' - process.env['TRUSTIFY_DA_BACKEND_URL'] = testProdUrl - process.env['DEV_TRUSTIFY_DA_BACKEND_URL'] = testDevUrl -}).afterAll(() => delete process.env['TRUSTIFY_DA_DEV_MODE']); - -suite('testing Select Exhort Backend function when TRUSTIFY_DA_DEV_MODE environment variable is not set', () => { - - test('When Dev Mode Option = false, default Exhort Backend Selected (production)', () => { - - let testOpts = { - 'TRUSTIFY_DA_DEV_MODE': 'false' - } - let selectedUrl = selectExhortBackend(testOpts); - expect(selectedUrl).not.to.be.equals(testDevUrl) - expect(selectedUrl).to.be.equals(testProdUrl) + test('When TRUSTIFY_DA_BACKEND_URL is empty string in environment, should throw error', () => { + process.env['TRUSTIFY_DA_BACKEND_URL'] = ''; + expect(() => selectTrustifyDABackend({})).to.throw('TRUSTIFY_DA_BACKEND_URL is unset'); + delete process.env['TRUSTIFY_DA_BACKEND_URL']; }); - test('When Dev Mode Option Variable= true, default dev Exhort Backend Selected', () => { + test('When TRUSTIFY_DA_BACKEND_URL is empty string in opts, should throw error', () => { + delete process.env['TRUSTIFY_DA_BACKEND_URL']; let testOpts = { - 'TRUSTIFY_DA_DEV_MODE': 'true' - } - let selectedUrl = selectExhortBackend(testOpts); - expect(selectedUrl).not.to.be.equals(testProdUrl) - expect(selectedUrl).to.be.equals(testDevUrl) + 'TRUSTIFY_DA_BACKEND_URL': '' + }; + expect(() => selectTrustifyDABackend(testOpts)).to.throw('TRUSTIFY_DA_BACKEND_URL is unset'); }); - test('When Dev Mode option = true, option DEV_TRUSTIFY_DA_BACKEND_URL=some dummy-url, then some dummy-url Selected', () => { - let dummyRoute = 'http://dummy-dev-route-exhort' - process.env['DEV_TRUSTIFY_DA_BACKEND_URL'] = dummyRoute + test('When TRUSTIFY_DA_BACKEND_URL is null in opts, should throw error', () => { + delete process.env['TRUSTIFY_DA_BACKEND_URL']; let testOpts = { - 'TRUSTIFY_DA_DEV_MODE': 'true', - 'DEV_TRUSTIFY_DA_BACKEND_URL': dummyRoute - } - let selectedUrl = selectExhortBackend(testOpts); - expect(selectedUrl).not.to.be.equals(testProdUrl) - expect(selectedUrl).to.be.equals(dummyRoute) - delete process.env['DEV_TRUSTIFY_DA_BACKEND_URL'] + 'TRUSTIFY_DA_BACKEND_URL': null + }; + expect(() => selectTrustifyDABackend(testOpts)).to.throw('TRUSTIFY_DA_BACKEND_URL is unset'); }); - test('When Nothing set, throw error', () => { - let selectedUrl = selectExhortBackend({}); - expect(selectedUrl).to.be.equals(testProdUrl) - }) -}).beforeAll(() => { - process.env['TRUSTIFY_DA_BACKEND_URL'] = testProdUrl; - process.env['DEV_TRUSTIFY_DA_BACKEND_URL'] = testDevUrl +}).afterAll(() => { + delete process.env['TRUSTIFY_DA_BACKEND_URL']; }); diff --git a/test/it/end-to-end.js b/test/it/end-to-end.js index 946eb463..8fad6cf7 100644 --- a/test/it/end-to-end.js +++ b/test/it/end-to-end.js @@ -58,7 +58,7 @@ suite('Integration Tests', () => { let providers = ["rhtpa"] providers.forEach(provider => expect(extractTotalsGeneralOrFromProvider(providedDataForStack, provider)).greaterThan(0)) // TODO: if sources doesn't exist, add "scanned" instead - // python transitive count for stack analysis is awaiting fix in exhort backend + // python transitive count for stack analysis is awaiting fix in the DA backend if(packageManager !== "pip") { expect(providedDataForStack.scanned.transitive).greaterThan(0) } From c368bb8c381d3c04227a7ba43a7c13891bd3206b Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Tue, 25 Nov 2025 16:41:52 +0000 Subject: [PATCH 044/102] chore: remove local integration tests (#285) --- .eslintrc.json | 4 +- .github/workflows/test.yml | 11 - .gitignore | 1 - CONTRIBUTING.md | 43 +- integration/run_its.sh | 153 - .../scenarios/maven/component_request_json | 1 - .../scenarios/maven/expected_component | 234 -- .../scenarios/maven/expected_stack_html | 598 ---- .../scenarios/maven/expected_stack_json | 234 -- .../maven/expected_stack_json_summary | 22 - integration/scenarios/maven/pom.xml | 18 - .../redhat-dependency-analytics-report.json | 219 -- .../scenarios/maven/stack_request_dot_graph | 3 - integration/server/mock_server.js | 133 - integration/server/mock_server_config.json | 30 - integration/testers/cli/package.json | 11 - integration/testers/javascript/index.js | 33 - integration/testers/javascript/package.json | 11 - integration/testers/typescript/index.ts | 24 - integration/testers/typescript/package.json | 18 - integration/testers/typescript/tsconfig.json | 17 - package.json | 3 +- test/it/end-to-end.js | 114 - test/it/test_manifests/go/go.mod | 10 - test/it/test_manifests/go/go.sum | 301 -- .../test_manifests/gradle-groovy/build.gradle | 29 - .../gradle-kotlin/build.gradle.kts | 29 - test/it/test_manifests/maven/pom.xml | 30 - test/it/test_manifests/npm/package-lock.json | 96 - test/it/test_manifests/npm/package.json | 16 - test/it/test_manifests/pip/requirements.txt | 6 - test/it/test_manifests/pnpm/package.json | 16 - test/it/test_manifests/pnpm/pnpm-lock.yaml | 62 - .../yarn-berry/.yarn/install-state.gz | Bin 218246 -> 0 bytes test/it/test_manifests/yarn-berry/.yarnrc.yml | 1 - .../it/test_manifests/yarn-berry/package.json | 33 - test/it/test_manifests/yarn-berry/yarn.lock | 2741 ----------------- .../test_manifests/yarn-classic/package.json | 30 - test/it/test_manifests/yarn-classic/yarn.lock | 1447 --------- test/it/tsconfig.json | 17 - testers/cli/package-lock.json | 6 + 41 files changed, 10 insertions(+), 6795 deletions(-) delete mode 100755 integration/run_its.sh delete mode 100644 integration/scenarios/maven/component_request_json delete mode 100644 integration/scenarios/maven/expected_component delete mode 100644 integration/scenarios/maven/expected_stack_html delete mode 100644 integration/scenarios/maven/expected_stack_json delete mode 100644 integration/scenarios/maven/expected_stack_json_summary delete mode 100644 integration/scenarios/maven/pom.xml delete mode 100644 integration/scenarios/maven/redhat-dependency-analytics-report.json delete mode 100644 integration/scenarios/maven/stack_request_dot_graph delete mode 100644 integration/server/mock_server.js delete mode 100644 integration/server/mock_server_config.json delete mode 100644 integration/testers/cli/package.json delete mode 100644 integration/testers/javascript/index.js delete mode 100644 integration/testers/javascript/package.json delete mode 100644 integration/testers/typescript/index.ts delete mode 100644 integration/testers/typescript/package.json delete mode 100644 integration/testers/typescript/tsconfig.json delete mode 100644 test/it/end-to-end.js delete mode 100644 test/it/test_manifests/go/go.mod delete mode 100644 test/it/test_manifests/go/go.sum delete mode 100644 test/it/test_manifests/gradle-groovy/build.gradle delete mode 100644 test/it/test_manifests/gradle-kotlin/build.gradle.kts delete mode 100644 test/it/test_manifests/maven/pom.xml delete mode 100644 test/it/test_manifests/npm/package-lock.json delete mode 100644 test/it/test_manifests/npm/package.json delete mode 100644 test/it/test_manifests/pip/requirements.txt delete mode 100644 test/it/test_manifests/pnpm/package.json delete mode 100644 test/it/test_manifests/pnpm/pnpm-lock.yaml delete mode 100644 test/it/test_manifests/yarn-berry/.yarn/install-state.gz delete mode 100644 test/it/test_manifests/yarn-berry/.yarnrc.yml delete mode 100644 test/it/test_manifests/yarn-berry/package.json delete mode 100644 test/it/test_manifests/yarn-berry/yarn.lock delete mode 100644 test/it/test_manifests/yarn-classic/package.json delete mode 100644 test/it/test_manifests/yarn-classic/yarn.lock delete mode 100644 test/it/tsconfig.json create mode 100644 testers/cli/package-lock.json diff --git a/.eslintrc.json b/.eslintrc.json index 6b62fc08..465e6716 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -38,7 +38,5 @@ } } }, - "ignorePatterns": [ - "integration" - ] + "ignorePatterns": [] } diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7b9c5839..b8e9782d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -94,17 +94,6 @@ jobs: - name: Compile project run: npm run compile - - name: Run integration tests - run: npm run integration-tests - env: - TRUSTIFY_DA_BACKEND_URL: 'https://exhort.stage.devshift.net' - - - name: Run integration tests cli - working-directory: integration - run: bash ./run_its.sh - env: - TRUSTIFY_DA_BACKEND_URL: 'https://exhort.stage.devshift.net' - - name: Upload coverage reports if: ${{ matrix.node == env.MAIN_NODE_VER }} uses: actions/upload-artifact@v4 diff --git a/.gitignore b/.gitignore index 8afaeecf..5291ecd7 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,6 @@ node_modules dist http_requests json_responses -integration/**/package-lock.json unit-tests-result.json .gradle build diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6cd6389d..adbb4648 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -67,49 +67,10 @@ excluded from both linting and coverage. to the _Backend_. Use [java_maven.js](src/providers/java_maven.js) as an example to get you started. * Import the new _Provider_ and list in the in _availableProviders_ array in [provider.js](src/provider.js). -* Update the _choices_ configuration for the _manifest-name_ positional argument in [cli.js](src/cli.js). -* Add Integration Test scenarios for the added provider in [integration/scenarios](integration/scenarios). - Use the [java scenarios](integration/scenarios/maven) as an example. +* Update the _choices_ configuration for the _manifest-name_ positional argument in [cli.js](src/cli.js). +* Add Integration Test scenarios for the added provider in the [trustification/integration](https://github.com/trustification/exhort-integration-tests/) repository. * Update the documentation. This document and [README.md](README.md). -### Integration Tests - -Integration tests are performed with a _bash_ script executing _node_ scripts.
-In [integration/run_its.sh](integration/run_its.sh) we start with a function called _match_ taking 2 arguments: -* `$1` is a file name for the holding the expected result (scenarios) -* `$2` is a command execution for evaluation (testers) - -The _match_ function will match the content of the file to the output of the command. -Typically, test cases in [integration/run_its.sh](integration/run_its.sh) will invoke the _match_ function with -a scenario from the [integration/scenarios](integration/scenarios) and a _node_ command invoking one of the _node_ -scripts in [integration/testers](integration/testers).
- -We have 3 _testers_: -* [integration/testers/cli](integration/testers/cli) is a _package.json_ used for installing the _ESM module_. - Invoking the CLI Script is done against the _@trustify-da/trustify-da-javascript-client/dist/src/cli.js_ in the tester's - _node_modules_. -* [integration/testers/javascript](integration/testers/javascript) is a _javascript_ script invoking the _ESM module_. -* [integration/testers/typescript](integration/testers/typescript) is a _typescript_ script invoking the _ESM module_. - -Run integration tests from the project's root: - -> Don't forget to run `npm run compile` before running the integration tests. - -```shell -(cd integration/ && bash ./run_its.sh) -``` - -Integration tests are executed against a mocked _Backend_ server.
-If you need to run against the actual _Backend_ server, use the _TRUSTIFY_DA_ITS_USE_REAL_API_ environment variable: - -```shell -(cd integration/ && TRUSTIFY_DA_ITS_USE_REAL_API=true bash ./run_its.sh) -``` - -The mocked server implementation is [integration/server/mock_server.js](integration/server/mock_server.js). See the -[integration/server/mock_server_config.json](integration/server/mock_server_config.json) for configuring the mock -server. - ## Certificate of Origin By contributing to this project you agree to the Developer Certificate of diff --git a/integration/run_its.sh b/integration/run_its.sh deleted file mode 100755 index 1e1536d8..00000000 --- a/integration/run_its.sh +++ /dev/null @@ -1,153 +0,0 @@ -#!/usr/bin/env bash - -#!!!!! DO NOT FORGET 'npm run compile' on root prior to running this script !!!!# - -# set TRUSTIFY_DA_ITS_USE_REAL_API=true to use the real backend -TRUSTIFY_DA_ITS_USE_REAL_API="${TRUSTIFY_DA_ITS_USE_REAL_API:=false}" - -# utility function for wrapping up and exiting -# takes an exit code -cleanup() { - # PID is set when we start the mock server - if [ -n "${PID}" ]; then - echo "STOPPING Mock HTTP Server" - if ! kill "$PID"; then - echo "- FAILED Killing PID $PID" - else - echo "- SUCCESSFUL" - fi - fi - exit "$1" -} - -matchConstant() { - TEST_MESSAGE="$3" - sleep 1 - echo "$TEST_MESSAGE" - if [[ "$1" != "$2" ]]; then - echo "- FAILED" - echo "expected = $1, actual= $2" - cleanup 1 - fi - echo "- PASSED" - echo -} - -########################################## -###### Verify Required Tools Exists ###### -########################################## -echo "VERIFYING Node and NPM availability" -if ! node --version > /dev/null 2>&1; then - RC="$?" - echo "- FAILED Node not found" - cleanup $RC -fi - -if ! npm --version > /dev/null 2>&1; then - RC="$?" - echo "- FAILED NPM not found" - cleanup $RC -fi -echo "- SUCCESSFUL" - -echo "VERIFYING Java and Maven availability" -if ! java --version > /dev/null 2>&1; then - RC="$?" - echo "- FAILED Java not found" - cleanup $RC -fi - -if ! mvn --version > /dev/null 2>&1; then - RC="$?" - echo "- FAILED Maven not found" - cleanup $RC -fi -echo "- SUCCESSFUL" - - -########################################## -###### Preparing CLI Tests ###### -########################################## -echo "PREPARING JavaScript CLI tests environment" -rm -rf testers/cli/node_modules -rm -f testers/cli/package-lock.json -if ! npm --prefix testers/cli install --silent ; then - RC="$?" - echo "- FAILED Installing trustify-da-javascript-client environment for testing" - cleanup $RC -fi -echo "- SUCCESSFUL" -mkdir -p ./responses -#### JAVA MAVEN -echo "RUNNING JavaScript CLI integration test for Stack Analysis report in Html for Java Maven" - -testers/cli/node_modules/.bin/trustify-da-javascript-client stack scenarios/maven/pom.xml --html > ./responses/stack.html -RC="$?" -if [ "$RC" -ne 0 ]; then - echo "- FAILED, return $RC from invocation" - cleanup $RC -fi -RESPONSE_CONTENT=$(grep -i "DOCTYPE html" ./responses/stack.html) -if [[ -z "${RESPONSE_CONTENT}" ]]; then - echo "- FAILED, response is not valid html: $RESPONSE_CONTENT" - cleanup 1 -fi -echo "- PASSED" -echo - -echo 'RUNNING JavaScript CLI integration test for Stack Analysis report summary of snyk provider for Java Maven' -testers/cli/node_modules/.bin/trustify-da-javascript-client stack scenarios/maven/pom.xml --summary > ./responses/stack-summary.json -RC="$?" -if [ "$RC" -ne 0 ]; then - echo "- FAILED, return $RC from invocation" - cleanup $RC -fi - -if ! RESPONSE_CONTENT=$(jq . ./responses/stack-summary.json); then - RC="$?" - echo "- FAILED, response is not a valid json: $RESPONSE_CONTENT" - cleanup $RC -fi -echo -echo "$RESPONSE_CONTENT" -echo "- PASSED" -echo - -echo "RUNNING JavaScript CLI integration test for Stack Analysis report in Json for Java Maven" -testers/cli/node_modules/.bin/trustify-da-javascript-client stack scenarios/maven/pom.xml > ./responses/stack.json -RC="$?" -if [ "$RC" -ne 0 ]; then - echo "- FAILED, return $RC from invocation" - cleanup $RC -fi - -if ! RESPONSE_CONTENT=$(jq . ./responses/stack.json); then - RC="$?" - echo "- FAILED, response is not a valid json: $RESPONSE_CONTENT" - cleanup $RC -fi - -StatusCodeTC=$(jq '.providers["trusted-content"].status.code' ./responses/stack.json) -matchConstant "200" "$StatusCodeTC" "Check that Response code from Trusted Content is OK ( Http Status = 200)..." - -#StatusCodeSnyk=$(jq '.providers.snyk.status.code' ./responses/stack.json) -#matchConstant "200" "$StatusCodeSnyk" "Check that Response code from Snyk Provider is OK ( Http Status = 200)..." - -echo "RUNNING JavaScript CLI integration test for Component Analysis report for Java Maven" -eval "testers/cli/node_modules/.bin/trustify-da-javascript-client component scenarios/maven/pom.xml" > ./responses/component.json -RC="$?" -if [ "$RC" -ne 0 ]; then - echo "- FAILED, return $RC from invocation" - cleanup $RC -fi - -if ! RESPONSE_CONTENT=$(jq . ./responses/component.json); then - RC="$?" - echo "- FAILED, response is not a valid json, got $RC from parsing the file" - cleanup $RC -fi - -StatusCodeTC=$(jq '.providers["trusted-content"].status.code' ./responses/stack.json) -matchConstant "200" "$StatusCodeTC" "Check that Response code from Trusted Content is OK ( Http Status = 200)..." - -cleanup 0 diff --git a/integration/scenarios/maven/component_request_json b/integration/scenarios/maven/component_request_json deleted file mode 100644 index ab352940..00000000 --- a/integration/scenarios/maven/component_request_json +++ /dev/null @@ -1 +0,0 @@ -[{"name":"log4j:log4j","version":"1.2.17"}] \ No newline at end of file diff --git a/integration/scenarios/maven/expected_component b/integration/scenarios/maven/expected_component deleted file mode 100644 index 77da1fa6..00000000 --- a/integration/scenarios/maven/expected_component +++ /dev/null @@ -1,234 +0,0 @@ -{ - "summary": { - "dependencies": { - "scanned": 1, - "transitive": 0 - }, - "vulnerabilities": { - "direct": 1, - "total": 7, - "critical": 1, - "high": 3, - "medium": 2, - "low": 1 - }, - "providerStatuses": [ - { - "ok": true, - "provider": "snyk", - "status": 200, - "message": "OK" - } - ] - }, - "dependencies": [ - { - "ref": "pkg:maven/log4j/log4j@1.2.17", - "issues": [ - { - "id": "SNYK-JAVA-LOG4J-572732", - "title": "Deserialization of Untrusted Data", - "source": "snyk", - "cvss": { - "attackVector": "Network", - "attackComplexity": "Low", - "privilegesRequired": "None", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "High", - "integrityImpact": "High", - "availabilityImpact": "High", - "exploitCodeMaturity": "Proof of concept code", - "remediationLevel": null, - "reportConfidence": null, - "cvss": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:P" - }, - "cvssScore": 9.8, - "severity": "CRITICAL", - "cves": [ - "CVE-2019-17571" - ], - "unique": false - }, - { - "id": "SNYK-JAVA-LOG4J-2342645", - "title": "SQL Injection", - "source": "snyk", - "cvss": { - "attackVector": "Network", - "attackComplexity": "High", - "privilegesRequired": "None", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "High", - "integrityImpact": "High", - "availabilityImpact": "High", - "exploitCodeMaturity": null, - "remediationLevel": null, - "reportConfidence": null, - "cvss": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H" - }, - "cvssScore": 8.1, - "severity": "HIGH", - "cves": [ - "CVE-2022-23305" - ], - "unique": false - }, - { - "id": "SNYK-JAVA-LOG4J-2342646", - "title": "Deserialization of Untrusted Data", - "source": "snyk", - "cvss": { - "attackVector": "Network", - "attackComplexity": "High", - "privilegesRequired": "None", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "High", - "integrityImpact": "High", - "availabilityImpact": "High", - "exploitCodeMaturity": null, - "remediationLevel": null, - "reportConfidence": null, - "cvss": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H" - }, - "cvssScore": 8.1, - "severity": "HIGH", - "cves": [ - "CVE-2022-23307" - ], - "unique": false - }, - { - "id": "SNYK-JAVA-LOG4J-2342647", - "title": "Deserialization of Untrusted Data", - "source": "snyk", - "cvss": { - "attackVector": "Network", - "attackComplexity": "High", - "privilegesRequired": "None", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "High", - "integrityImpact": "High", - "availabilityImpact": "High", - "exploitCodeMaturity": null, - "remediationLevel": null, - "reportConfidence": null, - "cvss": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H" - }, - "cvssScore": 8.1, - "severity": "HIGH", - "cves": [ - "CVE-2022-23302" - ], - "unique": false - }, - { - "id": "SNYK-JAVA-LOG4J-2316893", - "title": "Arbitrary Code Execution", - "source": "snyk", - "cvss": { - "attackVector": "Network", - "attackComplexity": "High", - "privilegesRequired": "High", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "High", - "integrityImpact": "High", - "availabilityImpact": "High", - "exploitCodeMaturity": "Proof of concept code", - "remediationLevel": null, - "reportConfidence": null, - "cvss": "CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H/E:P" - }, - "cvssScore": 6.6, - "severity": "MEDIUM", - "cves": [ - "CVE-2021-4104" - ], - "unique": false - }, - { - "id": "SNYK-JAVA-LOG4J-3358774", - "title": "Denial of Service (DoS)", - "source": "snyk", - "cvss": { - "attackVector": "Network", - "attackComplexity": "High", - "privilegesRequired": "None", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "None", - "integrityImpact": "None", - "availabilityImpact": "High", - "exploitCodeMaturity": null, - "remediationLevel": null, - "reportConfidence": null, - "cvss": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H" - }, - "cvssScore": 5.9, - "severity": "MEDIUM", - "cves": [ - "CVE-2023-26464" - ], - "unique": false - }, - { - "id": "SNYK-JAVA-LOG4J-1300176", - "title": "Man-in-the-Middle (MitM)", - "source": "snyk", - "cvss": { - "attackVector": "Network", - "attackComplexity": "High", - "privilegesRequired": "None", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "Low", - "integrityImpact": "None", - "availabilityImpact": "None", - "exploitCodeMaturity": null, - "remediationLevel": null, - "reportConfidence": null, - "cvss": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N" - }, - "cvssScore": 3.7, - "severity": "LOW", - "cves": [ - "CVE-2020-9488" - ], - "unique": false - } - ], - "transitive": [], - "recommendation": null, - "remediations": {}, - "highestVulnerability": { - "id": "SNYK-JAVA-LOG4J-1300176", - "title": "Man-in-the-Middle (MitM)", - "source": "snyk", - "cvss": { - "attackVector": "Network", - "attackComplexity": "High", - "privilegesRequired": "None", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "Low", - "integrityImpact": "None", - "availabilityImpact": "None", - "exploitCodeMaturity": null, - "remediationLevel": null, - "reportConfidence": null, - "cvss": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N" - }, - "cvssScore": 3.7, - "severity": "LOW", - "cves": [ - "CVE-2020-9488" - ], - "unique": false - } - } - ] -} diff --git a/integration/scenarios/maven/expected_stack_html b/integration/scenarios/maven/expected_stack_html deleted file mode 100644 index 24592baa..00000000 --- a/integration/scenarios/maven/expected_stack_html +++ /dev/null @@ -1,598 +0,0 @@ - - - Combined Shape - - - - - - - - - - - - - - - - - - - - - - - - - - Dependency Analysis - - - -
-
- - - - - - - - -   Security Issues - -
-
-
-
-

Below is a list of dependencies affected with CVE, as well as vulnerability only found using Snyk's vulnerability database.

-
-
-

Dependencies with security issues in your stack.

-

Dependencies with high common vulnerabilities and exposures (CVE) score.

-

- - - - - - - - - Total Vulnerabilities: 7 -

-

- - - - - - - - - Vulnerable Dependencies: 1 -

-
-
-
-
- -
-
Commonly Known Vulnerabilities
-
-
-
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#Dependencies# Direct# TransitiveHighest CVSSHighest SeverityRemediation available
-
-

Details of the dependency: - log4j:log4j -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SeverityExploit MaturityDescriptionCVSSCVERemediation
- - CRITICAL - - - Proof of concept codeDeserialization of Untrusted Data -
-
9.8/10
-
-
-
-
- -
- CVE-2019-17571 - - - SNYK-JAVA-LOG4J-572732 - -
- - HIGH - - - No known exploitSQL Injection -
-
8.1/10
-
-
-
-
- -
- CVE-2022-23305 - - - SNYK-JAVA-LOG4J-2342645 - -
- - HIGH - - - No known exploitDeserialization of Untrusted Data -
-
8.1/10
-
-
-
-
- -
- CVE-2022-23307 - - - SNYK-JAVA-LOG4J-2342646 - -
- - HIGH - - - No known exploitDeserialization of Untrusted Data -
-
8.1/10
-
-
-
-
- -
- CVE-2022-23302 - - - SNYK-JAVA-LOG4J-2342647 - -
- - MEDIUM - - - Proof of concept codeArbitrary Code Execution -
-
6.6/10
-
-
-
-
- -
- CVE-2021-4104 - - - SNYK-JAVA-LOG4J-2316893 - -
- - MEDIUM - - - No known exploitDenial of Service (DoS) -
-
5.9/10
-
-
-
-
- -
- CVE-2023-26464 - - - SNYK-JAVA-LOG4J-3358774 - -
- - LOW - - - No known exploitMan-in-the-Middle (MitM) -
-
3.7/10
-
-
-
-
- -
- CVE-2020-9488 - - - SNYK-JAVA-LOG4J-1300176 - -
-
- -
- - - - - - - - - - - - - - -
DependenciesSeverityExploit MaturityDescriptionCVSSCVERemediation
-
-
-
-
- - - - - - - - - - diff --git a/integration/scenarios/maven/expected_stack_json b/integration/scenarios/maven/expected_stack_json deleted file mode 100644 index 77da1fa6..00000000 --- a/integration/scenarios/maven/expected_stack_json +++ /dev/null @@ -1,234 +0,0 @@ -{ - "summary": { - "dependencies": { - "scanned": 1, - "transitive": 0 - }, - "vulnerabilities": { - "direct": 1, - "total": 7, - "critical": 1, - "high": 3, - "medium": 2, - "low": 1 - }, - "providerStatuses": [ - { - "ok": true, - "provider": "snyk", - "status": 200, - "message": "OK" - } - ] - }, - "dependencies": [ - { - "ref": "pkg:maven/log4j/log4j@1.2.17", - "issues": [ - { - "id": "SNYK-JAVA-LOG4J-572732", - "title": "Deserialization of Untrusted Data", - "source": "snyk", - "cvss": { - "attackVector": "Network", - "attackComplexity": "Low", - "privilegesRequired": "None", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "High", - "integrityImpact": "High", - "availabilityImpact": "High", - "exploitCodeMaturity": "Proof of concept code", - "remediationLevel": null, - "reportConfidence": null, - "cvss": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:P" - }, - "cvssScore": 9.8, - "severity": "CRITICAL", - "cves": [ - "CVE-2019-17571" - ], - "unique": false - }, - { - "id": "SNYK-JAVA-LOG4J-2342645", - "title": "SQL Injection", - "source": "snyk", - "cvss": { - "attackVector": "Network", - "attackComplexity": "High", - "privilegesRequired": "None", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "High", - "integrityImpact": "High", - "availabilityImpact": "High", - "exploitCodeMaturity": null, - "remediationLevel": null, - "reportConfidence": null, - "cvss": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H" - }, - "cvssScore": 8.1, - "severity": "HIGH", - "cves": [ - "CVE-2022-23305" - ], - "unique": false - }, - { - "id": "SNYK-JAVA-LOG4J-2342646", - "title": "Deserialization of Untrusted Data", - "source": "snyk", - "cvss": { - "attackVector": "Network", - "attackComplexity": "High", - "privilegesRequired": "None", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "High", - "integrityImpact": "High", - "availabilityImpact": "High", - "exploitCodeMaturity": null, - "remediationLevel": null, - "reportConfidence": null, - "cvss": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H" - }, - "cvssScore": 8.1, - "severity": "HIGH", - "cves": [ - "CVE-2022-23307" - ], - "unique": false - }, - { - "id": "SNYK-JAVA-LOG4J-2342647", - "title": "Deserialization of Untrusted Data", - "source": "snyk", - "cvss": { - "attackVector": "Network", - "attackComplexity": "High", - "privilegesRequired": "None", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "High", - "integrityImpact": "High", - "availabilityImpact": "High", - "exploitCodeMaturity": null, - "remediationLevel": null, - "reportConfidence": null, - "cvss": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H" - }, - "cvssScore": 8.1, - "severity": "HIGH", - "cves": [ - "CVE-2022-23302" - ], - "unique": false - }, - { - "id": "SNYK-JAVA-LOG4J-2316893", - "title": "Arbitrary Code Execution", - "source": "snyk", - "cvss": { - "attackVector": "Network", - "attackComplexity": "High", - "privilegesRequired": "High", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "High", - "integrityImpact": "High", - "availabilityImpact": "High", - "exploitCodeMaturity": "Proof of concept code", - "remediationLevel": null, - "reportConfidence": null, - "cvss": "CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H/E:P" - }, - "cvssScore": 6.6, - "severity": "MEDIUM", - "cves": [ - "CVE-2021-4104" - ], - "unique": false - }, - { - "id": "SNYK-JAVA-LOG4J-3358774", - "title": "Denial of Service (DoS)", - "source": "snyk", - "cvss": { - "attackVector": "Network", - "attackComplexity": "High", - "privilegesRequired": "None", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "None", - "integrityImpact": "None", - "availabilityImpact": "High", - "exploitCodeMaturity": null, - "remediationLevel": null, - "reportConfidence": null, - "cvss": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H" - }, - "cvssScore": 5.9, - "severity": "MEDIUM", - "cves": [ - "CVE-2023-26464" - ], - "unique": false - }, - { - "id": "SNYK-JAVA-LOG4J-1300176", - "title": "Man-in-the-Middle (MitM)", - "source": "snyk", - "cvss": { - "attackVector": "Network", - "attackComplexity": "High", - "privilegesRequired": "None", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "Low", - "integrityImpact": "None", - "availabilityImpact": "None", - "exploitCodeMaturity": null, - "remediationLevel": null, - "reportConfidence": null, - "cvss": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N" - }, - "cvssScore": 3.7, - "severity": "LOW", - "cves": [ - "CVE-2020-9488" - ], - "unique": false - } - ], - "transitive": [], - "recommendation": null, - "remediations": {}, - "highestVulnerability": { - "id": "SNYK-JAVA-LOG4J-1300176", - "title": "Man-in-the-Middle (MitM)", - "source": "snyk", - "cvss": { - "attackVector": "Network", - "attackComplexity": "High", - "privilegesRequired": "None", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "Low", - "integrityImpact": "None", - "availabilityImpact": "None", - "exploitCodeMaturity": null, - "remediationLevel": null, - "reportConfidence": null, - "cvss": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N" - }, - "cvssScore": 3.7, - "severity": "LOW", - "cves": [ - "CVE-2020-9488" - ], - "unique": false - } - } - ] -} diff --git a/integration/scenarios/maven/expected_stack_json_summary b/integration/scenarios/maven/expected_stack_json_summary deleted file mode 100644 index 62359470..00000000 --- a/integration/scenarios/maven/expected_stack_json_summary +++ /dev/null @@ -1,22 +0,0 @@ -{ - "dependencies": { - "scanned": 1, - "transitive": 0 - }, - "vulnerabilities": { - "direct": 1, - "total": 7, - "critical": 1, - "high": 3, - "medium": 2, - "low": 1 - }, - "providerStatuses": [ - { - "ok": true, - "provider": "snyk", - "status": 200, - "message": "OK" - } - ] -} diff --git a/integration/scenarios/maven/pom.xml b/integration/scenarios/maven/pom.xml deleted file mode 100644 index 20f8bdfc..00000000 --- a/integration/scenarios/maven/pom.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - 4.0.0 - - pom-with-deps-no-ignore - pom-with-dependency-not-ignored-for-tests - 0.0.1 - - - - log4j - log4j - 1.2.17 - - - - diff --git a/integration/scenarios/maven/redhat-dependency-analytics-report.json b/integration/scenarios/maven/redhat-dependency-analytics-report.json deleted file mode 100644 index f467d5bd..00000000 --- a/integration/scenarios/maven/redhat-dependency-analytics-report.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "report": { - "scanned": { - "total": 1, - "direct": 1, - "transitive": 0 - }, - "providers": { - "trusted-content": { - "status": { - "ok": true, - "name": "trusted-content", - "code": 200, - "message": "OK" - }, - "sources": {} - }, - "osv": { - "status": { - "ok": true, - "name": "osv", - "code": 200, - "message": "OK" - }, - "sources": { - "osv": { - "summary": { - "direct": 6, - "transitive": 0, - "total": 6, - "dependencies": 1, - "critical": 3, - "high": 3, - "medium": 0, - "low": 0, - "remediations": 0, - "recommendations": 0, - "unscanned": 0 - }, - "dependencies": [ - { - "ref": "pkg:maven/log4j/log4j@1.2.17", - "issues": [ - { - "id": "CVE-2022-23307", - "title": "Deserialization of Untrusted Data in Apache Log4j", - "source": "osv", - "cvss": { - "attackVector": "Network", - "attackComplexity": "Low", - "privilegesRequired": "None", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "High", - "integrityImpact": "High", - "availabilityImpact": "High", - "cvss": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H" - }, - "cvssScore": 9.8, - "severity": "CRITICAL", - "cves": [ - "CVE-2022-23307" - ], - "unique": false, - "remediation": {} - }, - { - "id": "CVE-2022-23305", - "title": "SQL Injection in Log4j 1.2.x", - "source": "osv", - "cvss": { - "attackVector": "Network", - "attackComplexity": "Low", - "privilegesRequired": "None", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "High", - "integrityImpact": "High", - "availabilityImpact": "High", - "cvss": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H" - }, - "cvssScore": 9.8, - "severity": "CRITICAL", - "cves": [ - "CVE-2022-23305" - ], - "unique": false, - "remediation": {} - }, - { - "id": "CVE-2019-17571", - "title": "Deserialization of Untrusted Data in Log4j", - "source": "osv", - "cvss": { - "attackVector": "Network", - "attackComplexity": "Low", - "privilegesRequired": "None", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "High", - "integrityImpact": "High", - "availabilityImpact": "High", - "cvss": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H" - }, - "cvssScore": 9.8, - "severity": "CRITICAL", - "cves": [ - "CVE-2019-17571" - ], - "unique": false, - "remediation": {} - }, - { - "id": "CVE-2022-23302", - "title": "Deserialization of Untrusted Data in Log4j 1.x", - "source": "osv", - "cvss": { - "attackVector": "Network", - "attackComplexity": "Low", - "privilegesRequired": "Low", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "High", - "integrityImpact": "High", - "availabilityImpact": "High", - "cvss": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H" - }, - "cvssScore": 8.8, - "severity": "HIGH", - "cves": [ - "CVE-2022-23302" - ], - "unique": false, - "remediation": {} - }, - { - "id": "CVE-2021-4104", - "title": "JMSAppender in Log4j 1.2 is vulnerable to deserialization of untrusted data", - "source": "osv", - "cvss": { - "attackVector": "Network", - "attackComplexity": "High", - "privilegesRequired": "Low", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "High", - "integrityImpact": "High", - "availabilityImpact": "High", - "cvss": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H" - }, - "cvssScore": 7.5, - "severity": "HIGH", - "cves": [ - "CVE-2021-4104" - ], - "unique": false, - "remediation": {} - }, - { - "id": "CVE-2023-26464", - "title": "Apache Log4j 1.x (EOL) allows Denial of Service (DoS)", - "source": "osv", - "cvss": { - "attackVector": "Network", - "attackComplexity": "Low", - "privilegesRequired": "None", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "None", - "integrityImpact": "None", - "availabilityImpact": "High", - "cvss": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H" - }, - "cvssScore": 7.5, - "severity": "HIGH", - "cves": [ - "CVE-2023-26464" - ], - "unique": false, - "remediation": { - "fixedIn": [ - "2.0" - ] - } - } - ], - "transitive": [], - "highestVulnerability": { - "id": "CVE-2022-23307", - "title": "Deserialization of Untrusted Data in Apache Log4j", - "source": "osv", - "cvss": { - "attackVector": "Network", - "attackComplexity": "Low", - "privilegesRequired": "None", - "userInteraction": "None", - "scope": "Unchanged", - "confidentialityImpact": "High", - "integrityImpact": "High", - "availabilityImpact": "High", - "cvss": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H" - }, - "cvssScore": 9.8, - "severity": "CRITICAL", - "cves": [ - "CVE-2022-23307" - ], - "unique": false, - "remediation": {} - } - } - ] - } - } - } - } - }, - "exit_code": "0" -} diff --git a/integration/scenarios/maven/stack_request_dot_graph b/integration/scenarios/maven/stack_request_dot_graph deleted file mode 100644 index 660153e8..00000000 --- a/integration/scenarios/maven/stack_request_dot_graph +++ /dev/null @@ -1,3 +0,0 @@ -digraph "pom-with-deps-no-ignore:pom-with-dependency-not-ignored-for-tests:jar:0.0.1" { - "pom-with-deps-no-ignore:pom-with-dependency-not-ignored-for-tests:jar:0.0.1" -> "log4j:log4j:jar:1.2.17:compile" ; - } \ No newline at end of file diff --git a/integration/server/mock_server.js b/integration/server/mock_server.js deleted file mode 100644 index 9052e618..00000000 --- a/integration/server/mock_server.js +++ /dev/null @@ -1,133 +0,0 @@ -import fs from 'fs' -import http from 'http' -import path from 'path' - -let args = process.argv.slice(1) - -let scenarios = path.resolve(args[0], '..', '..', 'scenarios') -let config = JSON.parse(fs.readFileSync(args[1]).toString()) - -function listener (req, res) { - // reject non-POST requests - if ('POST' !== req.method) { - res.writeHead(405) - res.end(`${req.method} not allowed`) - return - } - // reject requests without a body - if (!req.headers['content-length']) { - res.writeHead(411) - res.end('payload required') - return - } - // reject if unknown endpoint - let stripEcosystem = req.url.slice(0, req.url.lastIndexOf('/')) - if (!Object.values(config['endpoints']).includes(stripEcosystem)) { - res.writeHead(404) - res.end(`unknown endpoint ${req.url}`) - return - } - // iterate over all supported ecosystems - let accept = req.headers['accept'] - for (let ecosystem in config['ecosystems']) { - // handle component analysis for current ecosystem - if (`${config['endpoints']['component']}/${ecosystem}` === req.url) { - // reject unsupported media types requests - if (!'application/json' === accept) { - res.writeHead(415) - res.end(`${accept} is not supported`) - return - } - // load expected request from file - let requestBodyFile = config['ecosystems'][ecosystem]['component']['request']['body'] - let expectedRequestBody = fs.readFileSync( - path.resolve(scenarios, ecosystem, requestBodyFile) - ) - // load return response from file - let responseFile = config['ecosystems'][ecosystem]['component']['response']['json'] - let componentResponse = fs.readFileSync( - path.resolve(scenarios, ecosystem, responseFile) - ) - // operate on body - req.on('data', data => { - if (expectedRequestBody.toString().replace(/\s+/g, '') - === data.toString().replace(/\s+/g, '')) { - // if body as expected - res.setHeader('ContentType', 'application/json') - res.end(componentResponse.toString()) - return - } - res.writeHead(400) - res.end('payload not as expected') - }) - } - // handle stack analysis for current ecosystem - if (`${config['endpoints']['stack']}/${ecosystem}` === req.url) { - // reject unsupported media types requests - if (!['application/json', 'text/html'].includes(accept)) { - res.writeHead(415) - res.end(`${accept} is not supported`) - return - } - // if requested stack json report - if ('application/json' === accept) { - // load expected request from file - let requestBodyFile = config['ecosystems'][ecosystem]['stack']['request']['body'] - let expectedRequestBody = fs.readFileSync( - path.resolve(scenarios, ecosystem, requestBodyFile) - ) - // load return response from file - let responseFile = config['ecosystems'][ecosystem]['stack']['response']['json'] - let stackResponse = fs.readFileSync( - path.resolve(scenarios, ecosystem, responseFile) - ) - // operate on body - req.on('data', data => { - if (expectedRequestBody.toString().replace(/\s+/g, '') - === data.toString().replace(/\s+/g, '')) { - // if body as expected - res.setHeader('ContentType', 'application/json') - res.end(stackResponse.toString()) - return - } - res.writeHead(400) - res.end('payload not as expected') - }) - } - // if requested stack html report - if ('text/html' === accept) { - // load expected request from file - let requestBodyFile = config['ecosystems'][ecosystem]['stack']['request']['body'] - let expectedRequestBody = fs.readFileSync( - path.resolve(scenarios, ecosystem, requestBodyFile) - ) - // load return response from file - let responseFile = config['ecosystems'][ecosystem]['stack']['response']['html'] - let stackResponse = fs.readFileSync( - path.resolve(scenarios, ecosystem, responseFile) - ) - // operate on body - req.on('data', data => { - if (expectedRequestBody.toString().replace(/\s+/g, '') - === data.toString().replace(/\s+/g, '')) { - // if body as expected - res.setHeader('ContentType', 'text/html') - res.end(stackResponse.toString()) - return - } - res.writeHead(400) - res.end('payload not as expected') - }) - } - } - } -} - -// create and start the server -let server = http.createServer(listener) -server.listen(config['port'], config['host']) -// close server after configured seconds -server.close(async () => { - await new Promise(resolve => setTimeout(resolve, config['up_for'] * 1000)) - process.exit(0) -}) diff --git a/integration/server/mock_server_config.json b/integration/server/mock_server_config.json deleted file mode 100644 index 6d8c2349..00000000 --- a/integration/server/mock_server_config.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "host": "localhost", - "port": 9432, - "up_for": 300, - "endpoints": { - "component": "/api/v3/component-analysis", - "stack": "/api/v3/dependency-analysis" - }, - "ecosystems": { - "maven": { - "component": { - "request": { - "body": "component_request_json" - }, - "response": { - "json": "expected_component" - } - }, - "stack": { - "request": { - "body": "stack_request_dot_graph" - }, - "response": { - "html": "expected_stack_html", - "json": "expected_stack_json" - } - } - } - } -} diff --git a/integration/testers/cli/package.json b/integration/testers/cli/package.json deleted file mode 100644 index 702d007a..00000000 --- a/integration/testers/cli/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "cli-it", - "version": "0.0.1", - "description": "trustify-da-javascript-client cli integration tests", - "private": true, - "type": "module", - "license": "Apache-2.0", - "dependencies": { - "@trustify-da/trustify-da-javascript-client": "file:../../../" - } -} diff --git a/integration/testers/javascript/index.js b/integration/testers/javascript/index.js deleted file mode 100644 index a10b161e..00000000 --- a/integration/testers/javascript/index.js +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env node - -import client from '@trustify-da/trustify-da-javascript-client' -import process from 'node:process' - -const [,, ...args] = process.argv - -if ('stack' === args[0]) { - // arg[1] = manifest path; arg[2] = is html boolean - let html = args[2] === 'true' - let res = await client.stackAnalysis(args[1], html) - console.log(html ? res : JSON.stringify(res, null, 2)) - process.exit(0) -} -if ('component' === args[0]) { - // arg[1] = manifest path - let res = await client.componentAnalysis(args[1]) - console.log(JSON.stringify(res, null, 2)) - process.exit(0) -} - -if ('validateToken' === args[0]) { - // args[1] - the token passed - let tokens = { - "TRUSTIFY_DA_SNYK_TOKEN" : args[1] - } - let res = await client.validateToken(tokens) - console.log(res) - process.exit(0) -} - -console.log(`unknown action ${args}`) -process.exit(1) diff --git a/integration/testers/javascript/package.json b/integration/testers/javascript/package.json deleted file mode 100644 index 2097e25d..00000000 --- a/integration/testers/javascript/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "js-it", - "version": "0.0.1", - "description": "trustify-da-javascript-client javascript integration tests", - "private": true, - "type": "module", - "license": "Apache-2.0", - "dependencies": { - "@trustify-da/trustify-da-javascript-client": "file:../../../" - } -} diff --git a/integration/testers/typescript/index.ts b/integration/testers/typescript/index.ts deleted file mode 100644 index 7d6d8493..00000000 --- a/integration/testers/typescript/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env node - -import client from '@trustify-da/trustify-da-javascript-client'; -import process from 'node:process'; -import type { AnalysisReport } from '@trustify-da/trustify-da-api-model/model/v5/AnalysisReport'; - -const args = process.argv.slice(2); - -if ('stack' === args[0]) { - // arg[1] = manifest path; arg[2] = is html boolean - let html = args[2] === 'true' - let res = await client.stackAnalysis(args[1], html) - console.log(html ? res as string : JSON.stringify(res as AnalysisReport, null, 2)) - process.exit(0) -} -if ('component' === args[0]) { - // arg[1] = manifest path - let res = await client.componentAnalysis(args[1]) - console.log(JSON.stringify(res as AnalysisReport, null, 2)) - process.exit(0) -} - -console.log(`unknown action ${args}`) -process.exit(1) diff --git a/integration/testers/typescript/package.json b/integration/testers/typescript/package.json deleted file mode 100644 index a3b052fd..00000000 --- a/integration/testers/typescript/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "ts-it", - "version": "0.0.1", - "description": "trustify-da-javascript-client typescript integration tests", - "private": true, - "type": "module", - "license": "Apache-2.0", - "scripts": { - "precompile": "rm -rf ./dist", - "compile": "tsc -p tsconfig.json" - }, - "dependencies": { - "@trustify-da/trustify-da-javascript-client": "file:../../../" - }, - "devDependencies": { - "typescript": "^5.1.3" - } -} diff --git a/integration/testers/typescript/tsconfig.json b/integration/testers/typescript/tsconfig.json deleted file mode 100644 index 7b63ca9a..00000000 --- a/integration/testers/typescript/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "include": [ - "index.ts" - ], - "exclude": ["node_modules", "dist"], - "compilerOptions": { - "baseUrl": "./", - "esModuleInterop": true, - "lib": ["esnext"], - "moduleResolution": "Node", - "rootDir": ".", - "types": ["node"], - "module": "esnext", - "outDir": "dist", - "target": "esnext" - } -} diff --git a/package.json b/package.json index 33f758cf..44626fb2 100644 --- a/package.json +++ b/package.json @@ -38,9 +38,8 @@ "lint": "eslint src test --ext js", "lint:fix": "eslint src test --ext js --fix", "test": "c8 npm run tests", - "tests": "mocha --config .mocharc.json --grep \"Integration Tests|.*analysis module.*\" --invert", + "tests": "mocha --config .mocharc.json --grep \".*analysis module.*\" --invert", "tests:rep": "mocha --reporter-option maxDiffSize=0 --reporter json > unit-tests-result.json", - "integration-tests": "mocha --grep \"Integration Tests\"", "precompile": "rm -rf dist", "compile": "tsc -p tsconfig.json" }, diff --git a/test/it/end-to-end.js b/test/it/end-to-end.js deleted file mode 100644 index 8fad6cf7..00000000 --- a/test/it/end-to-end.js +++ /dev/null @@ -1,114 +0,0 @@ -import { expect } from 'chai' - -import index from "../../src/index.js" - -const packageManagersDict = - { - "maven" : "pom.xml", - "npm" : "package.json", - "pnpm": "package.json", - "yarn-berry": "package.json", - "yarn-classic": "package.json", - "go" : "go.mod", - "pip" : "requirements.txt", - "gradle-groovy" : "build.gradle", - "gradle-kotlin" : "build.gradle.kts" - } - -function getParsedKeyFromHtml(html, key,keyLength) { - let beginSummary = html.substring(html.indexOf(key)) - let summary = beginSummary.substring(keyLength , beginSummary.indexOf("}") + 1); - return JSON.parse(summary); -} - -function extractTotalsGeneralOrFromProvider(providedDataForStack, provider) { - if(providedDataForStack.providers[provider].sources && Object.keys(providedDataForStack.providers[provider].sources).length > 0) { - // Get the first source (e.g., "osv") and return its summary total - const firstSource = Object.keys(providedDataForStack.providers[provider].sources)[0]; - return providedDataForStack.providers[provider].sources[firstSource].summary.total; - } else { - return providedDataForStack.scanned.total; - } -} - -suite('Integration Tests', () => { - [ - "gradle-groovy", - "gradle-kotlin", - "maven", - "npm", - "pnpm", - "yarn-berry", - "yarn-classic", - "go", - "pip" - - ].forEach(packageManager => { - test(`Stack Analysis json for ${packageManager}`, async () => { - if(packageManager === "pip") { - process.env["TRUSTIFY_DA_PYTHON_VIRTUAL_ENV"] = "true" - } else { - process.env["TRUSTIFY_DA_PYTHON_VIRTUAL_ENV"] = "" - } - process.env["TRUSTIFY_DA_DEV_MODE"] = "true" - let manifestName = packageManagersDict[packageManager] - let pomPath = `test/it/test_manifests/${packageManager}/${manifestName}` - let providedDataForStack = await index.stackAnalysis(pomPath) - console.log(JSON.stringify(providedDataForStack,null , 4)) - let providers = ["rhtpa"] - providers.forEach(provider => expect(extractTotalsGeneralOrFromProvider(providedDataForStack, provider)).greaterThan(0)) - // TODO: if sources doesn't exist, add "scanned" instead - // python transitive count for stack analysis is awaiting fix in the DA backend - if(packageManager !== "pip") { - expect(providedDataForStack.scanned.transitive).greaterThan(0) - } - providers.forEach(provider => expect(providedDataForStack.providers[provider].status.code).equals(200)) - }).timeout(120000); - - test(`Stack Analysis html for ${packageManager}`, async () => { - let manifestName = packageManagersDict[packageManager] - let pomPath = `test/it/test_manifests/${packageManager}/${manifestName}` - let html = await index.stackAnalysis(pomPath,true) - if(packageManager === "pip") { - process.env["TRUSTIFY_DA_PYTHON_VIRTUAL_ENV"] = "true" - } else { - process.env["TRUSTIFY_DA_PYTHON_VIRTUAL_ENV"] = "" - } - let reportParsedFromHtml - let parsedSummaryFromHtml - let parsedStatusFromProvider - let parsedScannedFromHtml - try { - reportParsedFromHtml = JSON.parse(html.substring(html.indexOf("\"report\" :") + 10, html.search(/([}](\s*)){5}/) + html.substring(html.search(/([}](\s*)){5}/)).indexOf(","))) - parsedSummaryFromHtml = getParsedKeyFromHtml(html,"\"summary\"",11) - expect(parsedSummaryFromHtml.total).greaterThanOrEqual(0) - } catch (e) { - let startOfJson = html.substring(html.indexOf("\"report\" :")) - reportParsedFromHtml = JSON.parse("{" + startOfJson.substring(0,startOfJson.indexOf("};") + 1)) - reportParsedFromHtml = reportParsedFromHtml.report - } finally { - parsedStatusFromProvider = reportParsedFromHtml.providers["rhtpa"].status - expect(parsedStatusFromProvider.code).equals(200) - parsedScannedFromHtml = reportParsedFromHtml.scanned - expect( typeof html).equals("string") - expect(html).include("html").include("svg") - expect(parsedScannedFromHtml.total).greaterThan(0) - expect(parsedScannedFromHtml.transitive).greaterThan(0) - } - }).timeout(60000); - - test(`Component Analysis for ${packageManager}`, async () => { - let manifestName = packageManagersDict[packageManager] - let manifestPath = `test/it/test_manifests/${packageManager}/${manifestName}` - const analysisReport = await index.componentAnalysis(manifestPath) - - expect(analysisReport.scanned.total).greaterThan(0) - expect(analysisReport.scanned.transitive).equal(0) - let providers = ["rhtpa"] - providers.forEach(provider => expect(extractTotalsGeneralOrFromProvider(analysisReport, provider)).greaterThan(0)) - providers.forEach(provider => expect(analysisReport.providers[provider].status.code).equals(200)) - }).timeout(20000); - - - }); -}).beforeAll(() => process.env["TRUSTIFY_DA_DEV_MODE"] = "true"); diff --git a/test/it/test_manifests/go/go.mod b/test/it/test_manifests/go/go.mod deleted file mode 100644 index c6911e8a..00000000 --- a/test/it/test_manifests/go/go.mod +++ /dev/null @@ -1,10 +0,0 @@ -module github.com/test-golang-namespace/test-golang-app - -go 1.19 - -require( - - github.com/gin-gonic/gin v1.6.0 - github.com/ipld/go-car v0.3.0 - go.elastic.co/apm v1.11.0 -) diff --git a/test/it/test_manifests/go/go.sum b/test/it/test_manifests/go/go.sum deleted file mode 100644 index eb339779..00000000 --- a/test/it/test_manifests/go/go.sum +++ /dev/null @@ -1,301 +0,0 @@ -github.com/AndreasBriese/bbloom v0.0.0-20180913140656-343706a395b7/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= -github.com/Kubuxu/go-os-helper v0.0.1/go.mod h1:N8B+I7vPCT80IcP58r50u4+gEEcsZETFUpAzWW2ep1Y= -github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= -github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/btcsuite/btcd v0.0.0-20190213025234-306aecffea32/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= -github.com/btcsuite/btcd v0.0.0-20190523000118-16327141da8c/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= -github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= -github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= -github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= -github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= -github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/cskr/pubsub v1.0.2/go.mod h1:/8MzYXk/NJAz782G8RPkFzXTZVu63VotefPnR9TIRis= -github.com/cucumber/godog v0.8.1/go.mod h1:vSh3r/lM+psC1BPXvdkSEuNjmXfpVqrMGYAElF6hxnA= -github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -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/dgraph-io/badger v1.5.5-0.20190226225317-8115aed38f8f/go.mod h1:VZxzAIRPHRVNRKRo6AXrX9BJegn6il06VMTZVJYCIjQ= -github.com/dgryski/go-farm v0.0.0-20190104051053-3adb47b1fb0f/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/elastic/go-sysinfo v1.1.1/go.mod h1:i1ZYdU10oLNfRzq4vq62BEwD2fH8KaWh6eh0ikPT9F0= -github.com/elastic/go-windows v1.0.0/go.mod h1:TsU0Nrp7/y3+VwE82FoZF8gC/XFg/Elz6CcloAxnPgU= -github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.6.0/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= -github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -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.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gxed/hashland/keccakpg v0.0.1/go.mod h1:kRzw3HkwxFU1mpmPP8v1WyQzwdGfmKFJ6tItnhQ67kU= -github.com/gxed/hashland/murmur3 v0.0.1/go.mod h1:KjXop02n4/ckmZSnY2+HKcLud/tcmvhST0bie/0lS48= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= -github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= -github.com/ipfs/bbloom v0.0.1/go.mod h1:oqo8CVWsJFMOZqTglBG4wydCE4IQA/G2/SEofB0rjUI= -github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0= -github.com/ipfs/go-bitswap v0.1.0/go.mod h1:FFJEf18E9izuCqUtHxbWEvq+reg7o4CW5wSAE1wsxj0= -github.com/ipfs/go-block-format v0.0.1/go.mod h1:DK/YYcsSUIVAFNwo/KZCdIIbpN0ROH/baNLgayt4pFc= -github.com/ipfs/go-block-format v0.0.2/go.mod h1:AWR46JfpcObNfg3ok2JHDUfdiHRgWhJgCQF+KIgOPJY= -github.com/ipfs/go-block-format v0.0.3/go.mod h1:4LmD4ZUw0mhO+JSKdpWwrzATiEfM7WWgQ8H5l6P8MVk= -github.com/ipfs/go-blockservice v0.1.0/go.mod h1:hzmMScl1kXHg3M2BjTymbVPjv627N7sYcvYaKbop39M= -github.com/ipfs/go-cid v0.0.1/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= -github.com/ipfs/go-cid v0.0.2/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= -github.com/ipfs/go-cid v0.0.3/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= -github.com/ipfs/go-cid v0.0.4/go.mod h1:4LLaPOQwmk5z9LBgQnpkivrx8BJjUyGwTXCd5Xfj6+M= -github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= -github.com/ipfs/go-datastore v0.0.1/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= -github.com/ipfs/go-datastore v0.0.5/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= -github.com/ipfs/go-datastore v0.1.0/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= -github.com/ipfs/go-datastore v0.3.1/go.mod h1:w38XXW9kVFNp57Zj5knbKWM2T+KOZCGDRVNdgPHtbHw= -github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= -github.com/ipfs/go-ds-badger v0.0.2/go.mod h1:Y3QpeSFWQf6MopLTiZD+VT6IC1yZqaGmjvRcKeSGij8= -github.com/ipfs/go-ds-leveldb v0.0.1/go.mod h1:feO8V3kubwsEF22n0YRQCffeb79OOYIykR4L04tMOYc= -github.com/ipfs/go-ipfs-blockstore v0.0.1/go.mod h1:d3WClOmRQKFnJ0Jz/jj/zmksX0ma1gROTlovZKBmN08= -github.com/ipfs/go-ipfs-blockstore v0.1.0/go.mod h1:5aD0AvHPi7mZc6Ci1WCAhiBQu2IsfTduLl+422H6Rqw= -github.com/ipfs/go-ipfs-blocksutil v0.0.1/go.mod h1:Yq4M86uIOmxmGPUHv/uI7uKqZNtLb449gwKqXjIsnRk= -github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= -github.com/ipfs/go-ipfs-delay v0.0.1/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= -github.com/ipfs/go-ipfs-ds-help v0.0.1/go.mod h1:gtP9xRaZXqIQRh1HRpp595KbBEdgqWFxefeVKOV8sxo= -github.com/ipfs/go-ipfs-exchange-interface v0.0.1/go.mod h1:c8MwfHjtQjPoDyiy9cFquVtVHkO9b9Ob3FG91qJnWCM= -github.com/ipfs/go-ipfs-exchange-offline v0.0.1/go.mod h1:WhHSFCVYX36H/anEKQboAzpUws3x7UeEGkzQc3iNkM0= -github.com/ipfs/go-ipfs-pq v0.0.1/go.mod h1:LWIqQpqfRG3fNc5XsnIhz/wQ2XXGyugQwls7BgUmUfY= -github.com/ipfs/go-ipfs-routing v0.1.0/go.mod h1:hYoUkJLyAUKhF58tysKpids8RNDPO42BVMgK5dNsoqY= -github.com/ipfs/go-ipfs-util v0.0.1/go.mod h1:spsl5z8KUnrve+73pOhSVZND1SIxPW5RyBCNzQxlJBc= -github.com/ipfs/go-ipfs-util v0.0.2/go.mod h1:CbPtkWJzjLdEcezDns2XYaehFVNXG9zrdrtMecczcsQ= -github.com/ipfs/go-ipld-cbor v0.0.3/go.mod h1:wTBtrQZA3SoFKMVkp6cn6HMRteIB1VsmHA0AQFOn7Nc= -github.com/ipfs/go-ipld-cbor v0.0.5/go.mod h1:BkCduEx3XBCO6t2Sfo5BaHzuok7hbhdMm9Oh8B2Ftq4= -github.com/ipfs/go-ipld-format v0.0.1/go.mod h1:kyJtbkDALmFHv3QR6et67i35QzO3S0dCDnkOJhcZkms= -github.com/ipfs/go-ipld-format v0.0.2/go.mod h1:4B6+FM2u9OJ9zCV+kSbgFAZlOrv1Hqbf0INGQgiKf9k= -github.com/ipfs/go-ipld-format v0.2.0/go.mod h1:3l3C1uKoadTPbeNfrDi+xMInYKlx2Cvg1BuydPSdzQs= -github.com/ipfs/go-log v0.0.1/go.mod h1:kL1d2/hzSpI0thNYjiKfjanbVNU+IIGA/WnNESY9leM= -github.com/ipfs/go-merkledag v0.3.2/go.mod h1:fvkZNNZixVW6cKSZ/JfLlON5OlgTXNdRLz0p6QG/I2M= -github.com/ipfs/go-metrics-interface v0.0.1/go.mod h1:6s6euYU4zowdslK0GKHmqaIZ3j/b/tL7HTWtJ4VPgWY= -github.com/ipfs/go-peertaskqueue v0.1.0/go.mod h1:Jmk3IyCcfl1W3jTW3YpghSwSEC6IJ3Vzz/jUmWw8Z0U= -github.com/ipfs/go-verifcid v0.0.1/go.mod h1:5Hrva5KBeIog4A+UpqlaIU+DEstipcJYQQZc0g37pY0= -github.com/ipld/go-car v0.3.0/go.mod h1:dPkEWeAK8KaVvH5TahaCs6Mncpd4lDMpkbs0/SPzuVs= -github.com/ipld/go-codec-dagpb v1.2.0/go.mod h1:6nBN7X7h8EOsEejZGqC7tej5drsdBAXbMHyBT+Fne5s= -github.com/ipld/go-ipld-prime v0.9.0/go.mod h1:KvBLMr4PX1gWptgkzRjVZCrLmSGcZCb/jioOQwCqZN8= -github.com/jackpal/gateway v1.0.5/go.mod h1:lTpwd4ACLXmpyiCTRtfiNyVnUmqT9RivzCDQetPfnjA= -github.com/jackpal/go-nat-pmp v1.0.1/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= -github.com/jbenet/go-cienv v0.0.0-20150120210510-1bb1476777ec/go.mod h1:rGaEvXB4uRSZMmzKNLoXvTu1sfx+1kv/DojUlPrSZGs= -github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA= -github.com/jbenet/go-temp-err-catcher v0.0.0-20150120210811-aac704a3f4f2/go.mod h1:8GXXJV31xl8whumTzdZsTt3RnUIiPqzkyf7mxToRCMs= -github.com/jbenet/goprocess v0.0.0-20160826012719-b497e2f366b8/go.mod h1:Ly/wlsjFq/qrU3Rar62tu1gASgGw6chQbSh/XgIIXCY= -github.com/jbenet/goprocess v0.1.3/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= -github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak= -github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= -github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/koron/go-ssdp v0.0.0-20180514024734-4a0ed625a78b/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -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/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/libp2p/go-addr-util v0.0.1/go.mod h1:4ac6O7n9rIAKB1dnd+s8IbbMXkt+oBpzX4/+RACcnlQ= -github.com/libp2p/go-buffer-pool v0.0.1/go.mod h1:xtyIz9PMobb13WaxR6Zo1Pd1zXJKYg0a8KiIvDp3TzQ= -github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= -github.com/libp2p/go-conn-security-multistream v0.1.0/go.mod h1:aw6eD7LOsHEX7+2hJkDxw1MteijaVcI+/eP2/x3J1xc= -github.com/libp2p/go-flow-metrics v0.0.1/go.mod h1:Iv1GH0sG8DtYN3SVJ2eG221wMiNpZxBdp967ls1g+k8= -github.com/libp2p/go-libp2p v0.1.0/go.mod h1:6D/2OBauqLUoqcADOJpn9WbKqvaM07tDw68qHM0BxUM= -github.com/libp2p/go-libp2p-autonat v0.1.0/go.mod h1:1tLf2yXxiE/oKGtDwPYWTSYG3PtvYlJmg7NeVtPRqH8= -github.com/libp2p/go-libp2p-blankhost v0.1.1/go.mod h1:pf2fvdLJPsC1FsVrNP3DUUvMzUts2dsLLBEpo1vW1ro= -github.com/libp2p/go-libp2p-circuit v0.1.0/go.mod h1:Ahq4cY3V9VJcHcn1SBXjr78AbFkZeIRmfunbA7pmFh8= -github.com/libp2p/go-libp2p-core v0.0.1/go.mod h1:g/VxnTZ/1ygHxH3dKok7Vno1VfpvGcGip57wjTU4fco= -github.com/libp2p/go-libp2p-core v0.0.2/go.mod h1:9dAcntw/n46XycV4RnlBq3BpgrmyUi9LuoTNdPrbUco= -github.com/libp2p/go-libp2p-crypto v0.1.0/go.mod h1:sPUokVISZiy+nNuTTH/TY+leRSxnFj/2GLjtOTW90hI= -github.com/libp2p/go-libp2p-discovery v0.1.0/go.mod h1:4F/x+aldVHjHDHuX85x1zWoFTGElt8HnoDzwkFZm29g= -github.com/libp2p/go-libp2p-loggables v0.1.0/go.mod h1:EyumB2Y6PrYjr55Q3/tiJ/o3xoDasoRYM7nOzEpoa90= -github.com/libp2p/go-libp2p-mplex v0.2.0/go.mod h1:Ejl9IyjvXJ0T9iqUTE1jpYATQ9NM3g+OtR+EMMODbKo= -github.com/libp2p/go-libp2p-mplex v0.2.1/go.mod h1:SC99Rxs8Vuzrf/6WhmH41kNn13TiYdAWNYHrwImKLnE= -github.com/libp2p/go-libp2p-nat v0.0.4/go.mod h1:N9Js/zVtAXqaeT99cXgTV9e75KpnWCvVOiGzlcHmBbY= -github.com/libp2p/go-libp2p-netutil v0.1.0/go.mod h1:3Qv/aDqtMLTUyQeundkKsA+YCThNdbQD54k3TqjpbFU= -github.com/libp2p/go-libp2p-peer v0.2.0/go.mod h1:RCffaCvUyW2CJmG2gAWVqwePwW7JMgxjsHm7+J5kjWY= -github.com/libp2p/go-libp2p-peerstore v0.1.0/go.mod h1:2CeHkQsr8svp4fZ+Oi9ykN1HBb6u0MOvdJ7YIsmcwtY= -github.com/libp2p/go-libp2p-record v0.1.0/go.mod h1:ujNc8iuE5dlKWVy6wuL6dd58t0n7xI4hAIl8pE6wu5Q= -github.com/libp2p/go-libp2p-secio v0.1.0/go.mod h1:tMJo2w7h3+wN4pgU2LSYeiKPrfqBgkOsdiKK77hE7c8= -github.com/libp2p/go-libp2p-swarm v0.1.0/go.mod h1:wQVsCdjsuZoc730CgOvh5ox6K8evllckjebkdiY5ta4= -github.com/libp2p/go-libp2p-testing v0.0.2/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= -github.com/libp2p/go-libp2p-testing v0.0.3/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= -github.com/libp2p/go-libp2p-transport-upgrader v0.1.1/go.mod h1:IEtA6or8JUbsV07qPW4r01GnTenLW4oi3lOPbUMGJJA= -github.com/libp2p/go-libp2p-yamux v0.2.0/go.mod h1:Db2gU+XfLpm6E4rG5uGCFX6uXA8MEXOxFcRoXUODaK8= -github.com/libp2p/go-maddr-filter v0.0.4/go.mod h1:6eT12kSQMA9x2pvFQa+xesMKUBlj9VImZbj3B9FBH/Q= -github.com/libp2p/go-mplex v0.0.3/go.mod h1:pK5yMLmOoBR1pNCqDlA2GQrdAVTMkqFalaTWe7l4Yd0= -github.com/libp2p/go-mplex v0.1.0/go.mod h1:SXgmdki2kwCUlCCbfGLEgHjC4pFqhTp0ZoV6aiKgxDU= -github.com/libp2p/go-msgio v0.0.2/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= -github.com/libp2p/go-nat v0.0.3/go.mod h1:88nUEt0k0JD45Bk93NIwDqjlhiOwOoV36GchpcVc1yI= -github.com/libp2p/go-reuseport v0.0.1/go.mod h1:jn6RmB1ufnQwl0Q1f+YxAj8isJgDCQzaaxIFYDhcYEA= -github.com/libp2p/go-reuseport-transport v0.0.2/go.mod h1:YkbSDrvjUVDL6b8XqriyA20obEtsW9BLkuOUyQAOCbs= -github.com/libp2p/go-stream-muxer v0.0.1/go.mod h1:bAo8x7YkSpadMTbtTaxGVHWUQsR/l5MEaHbKaliuT14= -github.com/libp2p/go-stream-muxer-multistream v0.2.0/go.mod h1:j9eyPol/LLRqT+GPLSxvimPhNph4sfYfMoDPd7HkzIc= -github.com/libp2p/go-tcp-transport v0.1.0/go.mod h1:oJ8I5VXryj493DEJ7OsBieu8fcg2nHGctwtInJVpipc= -github.com/libp2p/go-testutil v0.1.0/go.mod h1:81b2n5HypcVyrCg/MJx4Wgfp/VHojytjVe/gLzZ2Ehc= -github.com/libp2p/go-ws-transport v0.1.0/go.mod h1:rjw1MG1LU9YDC6gzmwObkPd/Sqwhw7yT74kj3raBFuo= -github.com/libp2p/go-yamux v1.2.2/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= -github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/miekg/dns v1.1.12/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= -github.com/minio/sha256-simd v0.0.0-20190131020904-2d45a736cd16/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= -github.com/minio/sha256-simd v0.0.0-20190328051042-05b4dd3047e5/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= -github.com/minio/sha256-simd v0.1.0/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= -github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= -github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= -github.com/mr-tron/base58 v1.1.1/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= -github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= -github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= -github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= -github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA= -github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM= -github.com/multiformats/go-multiaddr v0.0.1/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= -github.com/multiformats/go-multiaddr v0.0.2/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= -github.com/multiformats/go-multiaddr v0.0.4/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= -github.com/multiformats/go-multiaddr-dns v0.0.1/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= -github.com/multiformats/go-multiaddr-dns v0.0.2/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= -github.com/multiformats/go-multiaddr-fmt v0.0.1/go.mod h1:aBYjqL4T/7j4Qx+R73XSv/8JsgnRFlf0w2KGLCmXl3Q= -github.com/multiformats/go-multiaddr-net v0.0.1/go.mod h1:nw6HSxNmCIQH27XPGBuX+d1tnvM7ihcFwHMSstNAVUU= -github.com/multiformats/go-multibase v0.0.1/go.mod h1:bja2MqRZ3ggyXtZSEDKpl0uO/gviWFaSteVbWT51qgs= -github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc= -github.com/multiformats/go-multihash v0.0.1/go.mod h1:w/5tugSrLEbWqlcgJabL3oHFKTwfvkofsjW2Qa1ct4U= -github.com/multiformats/go-multihash v0.0.5/go.mod h1:lt/HCbqlQwlPBz7lv0sQCdtfcMtlJvakRUn/0Ual8po= -github.com/multiformats/go-multihash v0.0.10/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= -github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= -github.com/multiformats/go-multihash v0.0.14/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= -github.com/multiformats/go-multihash v0.0.15/go.mod h1:D6aZrWNLFTV/ynMpKsNtB40mJzmCl4jb1alC0OvHiHg= -github.com/multiformats/go-multistream v0.1.0/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg= -github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= -github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/polydawn/refmt v0.0.0-20190221155625-df39d6c2d992/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= -github.com/polydawn/refmt v0.0.0-20190807091052-3d65705ee9f1/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= -github.com/polydawn/refmt v0.0.0-20201211092308-30ac6d18308e/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= -github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/santhosh-tekuri/jsonschema v1.2.4/go.mod h1:TEAUOeZSmIxTTuHatJzrvARHiuO9LYd+cIxzgEHCQI4= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20190222223459-a17d461953aa/go.mod h1:2RVY1rIf+2J2o/IM9+vPq9RzmHDSseB7FoXiSNIUsoU= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/spacemonkeygo/openssl v0.0.0-20181017203307-c2dcc5cca94a/go.mod h1:7AyxJNCJ7SBZ1MfVQCWD6Uqo2oubI2Eq2y2eqf+A5r0= -github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572/go.mod h1:w0SWMsp6j9O/dk4/ZpIhL+3CkG8ofA2vuv7k+ltqUMc= -github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -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.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/warpfork/go-wish v0.0.0-20180510122957-5ad1f5abf436/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= -github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= -github.com/whyrusleeping/cbor-gen v0.0.0-20200123233031-1cdf64d27158/go.mod h1:Xj/M2wWU+QdTdRbu/L/1dIZY8/Wb2K9pAhtroQuxJJI= -github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1/go.mod h1:8UvriyWtv5Q5EOgjHaSseUEdkQfvwFv1I/In/O2M9gc= -github.com/whyrusleeping/go-logging v0.0.0-20170515211332-0457bb6b88fc/go.mod h1:bopw91TMyo8J3tvftk8xmU2kPmlrt4nScJQZU2hE5EM= -github.com/whyrusleeping/go-notifier v0.0.0-20170827234753-097c5d47330f/go.mod h1:cZNvX9cFybI01GriPRMXDtczuvUhgbcYr9iCGaNlRv8= -github.com/whyrusleeping/mafmt v1.2.8/go.mod h1:faQJFPbLSxzD9xpA02ttW/tS9vZykNvXwGvqIpk20FA= -github.com/whyrusleeping/mdns v0.0.0-20180901202407-ef14215e6b30/go.mod h1:j4l84WPFclQPj320J9gp0XwNKBb3U0zt5CBqjPp22G4= -github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7/go.mod h1:X2c0RVCI1eSUFI8eLcY3c0423ykwiUdxLJtkDvruhjI= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.elastic.co/apm v1.11.0/go.mod h1:qoOSi09pnzJDh5fKnfY7bPmQgl8yl2tULdOu03xhui0= -go.elastic.co/fastjson v1.1.0/go.mod h1:boNGISWMjQsUPy/t6yqt2/1Wx4YNPSe+mZjlyw9vKKI= -golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190225124518-7f87c0fbb88b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190227160552-c95aed5357e7/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-20190522155817-f3200d17e092/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-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/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-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/sys v0.0.0-20180909124046-d0be0721c37e/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-20190219092855-153ac476189d/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190524122548-abf6ff778158/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191025021431-6c3a3bfe00ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -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/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -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/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -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.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= diff --git a/test/it/test_manifests/gradle-groovy/build.gradle b/test/it/test_manifests/gradle-groovy/build.gradle deleted file mode 100644 index ae7fc99f..00000000 --- a/test/it/test_manifests/gradle-groovy/build.gradle +++ /dev/null @@ -1,29 +0,0 @@ -plugins { - id 'java' -} - -group = 'org.acme.dbaas' -version = '1.0.0-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - implementation "io.quarkus:quarkus-hibernate-orm:2.13.5.Final" - implementation "io.quarkus:quarkus-agroal:2.13.5.Final" - implementation "io.quarkus:quarkus-resteasy:2.13.5.Final" - implementation "io.quarkus:quarkus-resteasy-jackson:2.13.5.Final" - implementation "io.quarkus:quarkus-jdbc-postgresql:2.13.5.Final" - implementation "io.quarkus:quarkus-vertx-http:2.13.5.Final" - implementation "io.quarkus:quarkus-kubernetes-service-binding:2.13.5.Final" - implementation "io.quarkus:quarkus-container-image-docker:2.13.5.Final" - implementation "jakarta.validation:jakarta.validation-api:2.0.2" - implementation "io.quarkus:quarkus-resteasy-multipart:2.13.7.Final" - implementation "io.quarkus:quarkus-hibernate-orm-deployment:2.0.2.Final" - implementation "log4j:log4j:1.2.17" - implementation group: 'log4j', name: 'log4j' -} -test { - useJUnitPlatform() -} diff --git a/test/it/test_manifests/gradle-kotlin/build.gradle.kts b/test/it/test_manifests/gradle-kotlin/build.gradle.kts deleted file mode 100644 index 4a2aba94..00000000 --- a/test/it/test_manifests/gradle-kotlin/build.gradle.kts +++ /dev/null @@ -1,29 +0,0 @@ -plugins { - id("java") -} - -group = "org.acme.dbaas" -version = "1.0.0-SNAPSHOT" - -repositories { - mavenCentral() -} - -dependencies { - implementation("io.quarkus:quarkus-hibernate-orm:2.13.5.Final") - implementation("io.quarkus:quarkus-agroal:2.13.5.Final") - implementation("io.quarkus:quarkus-resteasy:2.13.5.Final") - implementation("io.quarkus:quarkus-resteasy-jackson:2.13.5.Final") - implementation("io.quarkus:quarkus-jdbc-postgresql:2.13.5.Final") - implementation("io.quarkus:quarkus-vertx-http:2.13.5.Final") - implementation("io.quarkus:quarkus-kubernetes-service-binding:2.13.5.Final") - implementation("io.quarkus:quarkus-container-image-docker:2.13.5.Final") - implementation("jakarta.validation:jakarta.validation-api:2.0.2") - implementation("io.quarkus:quarkus-resteasy-multipart:2.13.7.Final") - implementation("io.quarkus:quarkus-hibernate-orm-deployment:2.0.2.Final") - implementation("log4j:log4j:1.2.17") -} - -tasks.test { - useJUnitPlatform() -} diff --git a/test/it/test_manifests/maven/pom.xml b/test/it/test_manifests/maven/pom.xml deleted file mode 100644 index 423c98bc..00000000 --- a/test/it/test_manifests/maven/pom.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - 4.0.0 - - pom-with-deps-no-ignore - pom-with-dependency-not-ignored-for-tests - 0.0.1 - - - - log4j - log4j - 1.2.17 - - - - org.projectlombok - lombok - 1.16.6 - - - - com.fasterxml.jackson.core - jackson-databind - 2.14.0 - - - - diff --git a/test/it/test_manifests/npm/package-lock.json b/test/it/test_manifests/npm/package-lock.json deleted file mode 100644 index cbb3d399..00000000 --- a/test/it/test_manifests/npm/package-lock.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "name": "test-app", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "test-app", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "@hapi/joi": "^17.1.1", - "axios": "^0.19.0" - } - }, - "node_modules/@hapi/address": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-4.1.0.tgz", - "integrity": "sha512-SkszZf13HVgGmChdHo/PxchnSaCJ6cetVqLzyciudzZRT0jcOouIF/Q93mgjw8cce+D+4F4C1Z/WrfFN+O3VHQ==", - "deprecated": "Moved to 'npm install @sideway/address'", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@hapi/formula": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-2.0.0.tgz", - "integrity": "sha512-V87P8fv7PI0LH7LiVi8Lkf3x+KCO7pQozXRssAHNXXL9L1K+uyu4XypLXwxqVDKgyQai6qj3/KteNlrqDx4W5A==", - "deprecated": "Moved to 'npm install @sideway/formula'" - }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "node_modules/@hapi/joi": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-17.1.1.tgz", - "integrity": "sha512-p4DKeZAoeZW4g3u7ZeRo+vCDuSDgSvtsB/NpfjXEHTUjSeINAi/RrVOWiVQ1isaoLzMvFEhe8n5065mQq1AdQg==", - "deprecated": "Switch to 'npm install joi'", - "dependencies": { - "@hapi/address": "^4.0.1", - "@hapi/formula": "^2.0.0", - "@hapi/hoek": "^9.0.0", - "@hapi/pinpoint": "^2.0.0", - "@hapi/topo": "^5.0.0" - } - }, - "node_modules/@hapi/pinpoint": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.1.tgz", - "integrity": "sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==" - }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/axios": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "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", - "dependencies": { - "follow-redirects": "1.5.10" - } - }, - "node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "dependencies": { - "debug": "=3.1.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } -} diff --git a/test/it/test_manifests/npm/package.json b/test/it/test_manifests/npm/package.json deleted file mode 100644 index 7e26367d..00000000 --- a/test/it/test_manifests/npm/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "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/pip/requirements.txt b/test/it/test_manifests/pip/requirements.txt deleted file mode 100644 index fded9502..00000000 --- a/test/it/test_manifests/pip/requirements.txt +++ /dev/null @@ -1,6 +0,0 @@ -anyio==3.6.2 - # fakepackage==11.69 -click==8.0.4 - # sample comment that should definitely not be resolved -Flask==2.0.3 -# another sample comment diff --git a/test/it/test_manifests/pnpm/package.json b/test/it/test_manifests/pnpm/package.json deleted file mode 100644 index 3be1563f..00000000 --- a/test/it/test_manifests/pnpm/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "test-app", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "start": "node app.js", - "server": "nodemon server.js" - }, - "keywords": [], - "license": "ISC", - "dependencies": { - "axios": "^0.19.0", - "node-json-converter": "0.0.1-security" - } -} diff --git a/test/it/test_manifests/pnpm/pnpm-lock.yaml b/test/it/test_manifests/pnpm/pnpm-lock.yaml deleted file mode 100644 index 8be47c95..00000000 --- a/test/it/test_manifests/pnpm/pnpm-lock.yaml +++ /dev/null @@ -1,62 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - axios: - specifier: ^0.19.0 - version: 0.19.2 - node-json-converter: - specifier: 0.0.1-security - version: 0.0.1-security - -packages: - - 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==} - - node-json-converter@0.0.1-security: - resolution: {integrity: sha512-KxZvcO/m1dly7F8QvHKHq/kTXC/NtEzprCDCEt6ipJasWbT9YetNt0y7kSOblgR/l5sIS1455WQNtzSyu9Qe1Q==} - -snapshots: - - 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: {} - - node-json-converter@0.0.1-security: {} diff --git a/test/it/test_manifests/yarn-berry/.yarn/install-state.gz b/test/it/test_manifests/yarn-berry/.yarn/install-state.gz deleted file mode 100644 index 9b2420682c314c6867290fada09a704d1fd470c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218246 zcmV(&*yjd$KU+;KYp3}zyC7-<{$2_|Je*E`8{_Xw! zuRs0r^N+vb|NEC8|HZF=_~rNaZ-4xUzo=yK6B={&(|7osTWm$zMzvQG`uT7F=AZre7r*xJfBMHi{Q9?l^Uwb2FMs^!zx(Oe{^iHN`up?i|M=6- z^V83N_rL!8fBawm=`a52FMs@pzmUBSZ42`ZdHinjUW1QRyH|=4$Gdf(#eU_plH_{Y zB73=()m|^pO`^5D(rDMydXo52jgfxqQteWXd9iD&ZRx`EN-C$Lby9VTTW8-|N$i)$ZBFf&wd=$a314yj?zO5G6P|l5;$yZ&={CjQm%1n;hny@$a?hE~mfx;lFO|CmrSheW z>r(1bw1w(XY<|}!?yjP<`BZmGW9<@8?wHlBdHdd3Za3$d(C*psP~XBQ9Grn0Ut6x|h?QaAK2V#d_XzcjV2t>#w=?gw-u)owVl1zGmMz5xgYCW7(^a z^<1OacFZy2oz3<#qL1un88WS0g-5_-x_5Zob#>ID&+X&q$-eSd*5(-7wu--9|Jyr6 zgI-#mR?a+KHJg{4ziHk*L64MP3+c6*~xR10eiEd5L4850GUdEHiYsUFxzTQ7A5o&`ahb+_%FUoeNZHKy69@}&FZ1vbA z7H)Cu*(sH!z45*Ade`TwQ_{}(cKy3A-+W%>N4u2o-orMschL5?bv#;1P2%&Pigq!) zH9e2;BKM(=n`(QHzb+fAq_rlP?iJqrq}o{?u9eT8Jg+DDwSWEoW^oPgt@Lci4N*Jf zp){U{#fe%swO^x$M;yxO$i^5WnC@jsJHR9)N;JB+b)G)>A8>A+Hyw^uX$Ei zazx(xY{!X>>h(!@?wYN4_%wI2-t2R~-aj*WPd>g|Bki(l)~3cWee}kABC4s2md?>f zv1*w!>3!6ak7F)ArZTKL>ln7HY8Fw_4xMd>RrZjUz{jUsFH9H&NZz^p?z7=j;wUtaV(4 zG^po|W`uQ!_D#md->1q+Pn~t-kl2ur}6_a(bemDwlY1nI9pRR9R0d}=1c7L@|1)<+I2IZyhPVM zYU(d8_Jpxy*-n`nJGx1u>Sc+@i)P=CO<(KY?yd8p;wraY7#kA?C5 zetrIzwXP#2ye+P9yt#UubK9a?OMF{et_ak~)LvG{Dr;2znfU7Rdd&Lbpj1w|la&!` z-|^Mk%d*drw%5;CuXT0#46a*lVxycuB0I-~c#d($*^Yx@p;#QJ!B z4*zbaJ}>ThH2XBF|KXaQ{A!u>&2v1A?#<-VSNtgA<&jt`o9^=O>j!?Tl~{J%+k5Wh z771zzJ=j^cYK>W(BM)yS8}GJ-&mXhmR6lgj);Hv8mzN5#C?5&ZUG5Z8cT>pjN0}B&i!ZB|ymPVa-rYQW zUr^yv$h&$eI?)y4{iy;s>8;CePg&l4`+WWU>D{U6;S)i0+fNue?J_yFt4wT@Y+W=H z*HQ-fP%L6wlE1ZMRvzyiJ(aAXlJxHB(YbagT4>{hvsBtTY46G5Gr}aI->yH_>`H(4 z-d9_1(b^us4f2_CNRlx>?Ly6y_r<$m$C$X{t~iUxv`{0H=$TzS8T-;PsT6#v$%|R1 zxg~5}54Q(+?g_20@2}^YzP6%@QB=0UechRxaHn~`O)u`795F7TH0BHF=HXT|+@*In zSHDL@Y*AypZu63C_qF*1;{i?Y<2%(8rJJ48R{k}9)!K5}ELHjJ)RszJCpyxOB*lHw zC=Z5jiQe86ssJb+p|Q#-j(uuLaP30-zc!B3HA^17>8|NoeO=o)_PfR>^qqF~@A01) zMKeo^W8&WD-7M>I>oSYdGR-c&mqw2;ujky}FL1!DM>sd>puyp#=2<`*x|l7*{0 zrQ-$L@!R<%<6N2Ti?#Xd{yoXhb9xc{d=KB<4>+qIYuP6C&bfC=_IZcXR~YFq31={q z`^}AJJ+L+=dZ&(%JU-MbR@K$*<%y2^_Fi_=&Bpob`iB|7sum~3_PY)ag*S3* zDbG2irB{-@_tDL$4rJSVca7Q}cZp?o_A_cmZ_@p8U4Q+~TO&4v7pzwHDZzHy>2JIq z*=hRv`74{-OovdRE85F%T-?2$=hdsEA`*$N_I+1YHR;(WSFRlcTzTJm?lcy0^=iE_ zljalR>k`k|izQBX1m6!PeaxNx4S$VaNhT*#y432lyXIZ8_m~z$Dk!`^>s+p318{mhTOX1BUr}|1&P9d$>w6G>Dz|FrT(fJ0e)y z^!TQ6Em;)kTvT7)2_9xq!1?)EmJ$8dotN`t>$_epdD&?ZbNUcpp`osEJ{v8=*Y$$~ z6uDW%Zr7=AT<;`iy}@IEI>iI<^JTlLxB=p5QXlYf;64id;(Pm?^1j>M)lXjLJe;YK z03x=%Tdt3-o@S4bDiM8u|Eg*{G^yAxQl4*0CqX)1TOFBwL7P9+IynbDJKLKxC-UE4z7^ z&KpwC=}TuAMe&X;_Y8Hft?T;GJJ?RgUKb#Vl`N$<#5(0RX!?%cv^b?%NO#KzVc$Xe zXL$a$CrEHA(m8gQg*_kJa_s=V1R<*8@p)q(C25#-o@Zt%jMCpH&z@*%sp#g zN}0FcVQs&z)>d@u6g6sjJAQhA3FXba z@9h;yU!R}zKrb9nwQFxJP|%y3w$JO;d<*gmbMRWMEZu2qa+571OWYBtANWW*R7Lsk1&O*DkdyqeQb3Yl|yBV82GX&j%njua?YS zcIwEBxfVo^_xbwyZ;(`UeY_2bNF9k*APygBYHf|^*czje!TZp=Q6V5&w21Eb;Xdu_ zHO_mxJ3lQZ7;hdHQC@w!1sAkzS#zpPb?jYJtUgsHfdQXYRu;v3st+&HH=)Lc4O_ ztzJ0Mgx2$1)gpr(p0y7bwmQ+1t-N<_v?;Unk>7dZ%O)0&MMd4cBxUIp2i`Nj(`=&y zrPl6q^J%VK#Cl(%p!=G?xU&y8dZqP9Pv0iM^m_BmEt=Wq2s90b4kej3L;$5({uXWB zxx2T_*t(lm$y`}fm-9krHqYy|>bmKhnPTn`k2CaKy1(wtT&ZlyC_N*V!2?H^jnauZLAF}P6XWdYj2=Gw1JnMLr=UuTL zn_MVu*8ckWv&8B+C+qP|;dRfFI9qhsD;kWR+q0eECP#u(_k~;lJoFM^hDs2*N)@T9 zw|W=|zwGB5(kPIue(I`sU7A!0BZyaYea~O>*;oqvUyUt-Vm!H-N1` zsgqR?l|Q|6*0aS@w?V+HW5?qN%8YD3ZTIs9$*PIxYoQIuIPYfe`*bq;>+|!`(k<_0 z(!9RuohUflZzb@hRe3&4fW=$SsxH9Nr*mSBXzHu}jj-R7Cm?G5d^FJd*A{)a5Y>}t z2sFd?@{W7_vh2~X>mN2FXgc>fPj+LV=Z(U(1)zatW z;`&qtQssKCPoFsBr?leM&;cXCZK&>R`Ft*32y$Q72;`s9p1P-bk#BH%{ch9i_`d#E zIb0C-<_Z$&L2q$ZYK;rp!qTnPgf1SsQwZHY65SImOnv0j!a$a^N=cusezhK?HBaw( zwd+FEC3(-}y02~R-L}>p|DHdxr19}f zzuKov>Xr!fVZ`TcS#}N$t$E?{awhglK)8=j5#xUY^2z)4`wNPe(=X9j`A4TsSyIY+ zjG*f~{uWNnPYF+2F{K+kq>y9>zA0#%9_U=?X zt+8NRJI8tM`%v_*`7C!i-Q*0d@9Y0XC342WrP(=<%OAz61~ND7{WxG*8kz!76?k{gNEho0SVwI)jiIG{tP&F-B!_iN>4zL4|$Y-e}C-<3Wc+_-}=yZ zu!u;_6a*t%OEY~^lou!37y`S6o~j+(oK zI^m4j#q{<0iNayc-3tnor)r5p(gobk_`0pJ500N_yb}%PoPDY@>_G6mj?q?qWM%8r zma7W;U4)cw@Z{TB_BPYx;2cidGs9T>#z2miXh@ zw6$(sBi(r*J+zb~_4WC`@<34$C0ftWZ)dMoIU0s;N$-_j0cQ9*f5f!~K83E@!R2e! z)dpNGCtGi?ekpbmB5(i}`bI71rS`D!UMFX=1umri8h=K8OJLUN)!|$xR`J6V241|5 zt+l9nlfBL}HRx1n^QM6QFx5W|`>{6>-VhRF0~Q1b8_jdf*XO6vLBq>&E>1Vz zD1M`TABA%ZXkyjM2ls@%Xk5f`CeGbXXNX?6e@L`^-Wvor6lUf#sfXoWNLzNTI33~; zb1Cg@+ELv7NAN4G_jmWlKkt9|>979JU;pMW|1>q$d))8zk`aKKvaKodvjzBbZa@^b zHH1}j7Ie}LQ8z(m<69x>cz3n-no65sgH+P;B6gB0?&R$kOL5`r)1iPz}FfnrE5 zJ{_Ltu6Z;NQ-D=+n*iIc5Wr_<}i$M|#1aC7Lvx zSuO-SP`0K&nuWh2J@{^my`-0a&t~^JSAl(?T2%C1Ooq~eJlYwK>O$%4dKg@|^>bpJqR@O@q zjyw-?I}>*)Mtyprn%RbvmdYruTje>ndrs3M>e(QAGZnf}I7p7RrOtVfhz#+wOMTn! zeegYe6wF_*f5kS`V~O>wmJ2Rsl*#4T3LhcazH|Z{fEmgoh-r?}zT`POT&Dx7Qkg7z z7lfZv^?I)x@N?5s3B1%rw7>)oJd~OD>)W`@L#~HzcQ`KGHjGZO-%Yg?pbm1f7OSZeDg;k$8Yar>xM!0LvWD8 zfwIl`tQ9YSv)CK^x|%5csAME!;6mlvY4^e!tIu0hUuyZ;naL-2we2@&wXS)Gpa_N> zcn5m?v%Pn%+2>J%Y6K!X>UWz2;5)$;Ktj14#C7T=wKq#GHl9i=4^>|nP*#?$Bv|?8 z>u$cdN}sd%yZi+ZY1RulMM?_STuFpHaMCi3 zUxAuTcIVl7xuBB1*Wdu%xEf}U6BD-!$+_Xu->V5AOob})Km`G7&dB9mAXNAAk~mNJ zBNCXH3)`&-6vb<{t{U}Sr9qcmMYO{>OjySAShU{ruOz{pwHaYHEr}>@L+810Ht-m{A9~zs}?qGU~2l7tIJA ze5%*Mhi|M=6gWiPSsr^pdlXF0N>t1SwaZ3j4!x9p%tU#(UlaJl_4Ql*ERiqsiPp%+ zYXS|gE!(;F45V>SO^z#qIa5J!KwMFgC1b*w>^n$+ti(_=wVy5)(z1w>cq8PIjA zL`~~60H}o)4+OIN=JEhhGmD{ngg3R4A#u&wU$6hxF1iEH&Gv_MnaQIW7oj>+E(2HB zdOH9;L-oN=A*H-e23E4W4TZAnU0b?QmCw6*dmvEkbZFQiqDao7*#eq)h zx@dWKZB`$a`zoF*&0#iL4J^O1qf{9Nn25nzRs3wAbb8FLUWyN|aA6EGy-Hf-7bN^X zw0CY~y}T3dS4%eWC)(rW*ZaSU2>uF4P(Pr@&Uw2$QINszXix*~PyE8UirNVMJ~n_< znw<0<=h;=`S8$*F69k_sw` z+&iPkz|1_`NA`Tqe_dw=?S!DC(~CHT9VQQ`HaD1qH|guDlhJ1@$MmqVIpyy3G#u>27eO*=ehW+(fi{fD4(0{!ir`$@r^S(RzfpAI_YR^t+ zqjwHiakzof_Szk61dD_RIHy9ppohyt( zgdp~CTh^6db4<6Xm#+N)b-!Y0QPW_=R)p*UK7)1+^wR|^f$wESLqSuJCmSa~9)vnc z@`daME;i|NZ`Iz2>w^{I&`EdC-NmqTKm&!`r>`}BZ*BQaHiECXUC{^Ds{kT?*IwEe z@kL;LL2${OH%}XGje8KWb>^}=rQc8dh9Jt4XCmuUPOntR7uTL>q<&B@LXPES()oV> zbn>XS!z~*WFC=vXM7-yQ8hB~!X+sfb4hNyn4d%0~5OVb@Wa<~{ zi7}dbN4S|F7K$g1G`|&n>T6UEH#@ByFz4Q{d4fA+U77A~+`<%1hHjFA57pS({bF5Z zeuyxDBQ;8Hg2RJF!UjephL~QS$AYY&H(f#G+FF(`p-?w^^}WY`r(6gtVY5Q0SEB}X zde1hv_C+68!+lqG-3XK20jJawE8lsroS{N0NiTgTfJ9u7s{|n9@(zcc8{&cvGjUL~ z3xRoH(!S5wJSnhkA{LY_?}Fu@KX5b}r9H=>9%XJpYy={u262_y8K{BC)`~qaDml)f zy?FT^2;UBxFis|kO} z?&lUWV!4n=ngGGS*Em55kiLv^!8p3^B6$dEf+uWCSleBZZS+oyr==+nY=Wr-*${Uf zL0DHIWnmR;_U66ZD+cP9SeI+vlc*|qiS_e9W=a|0((f}u?N~1ci+ES2)!HuF&!k9n zrJeGFIO6TUMQ+S~ZS8(x#+C)fTETlicX&Dst`hTg9s)#D)ATaaE;HUfge zA*d)nNglU!5kkGJ>+O#e{`ETFvod=IEfkJ$z?l+@n`eCQ_v9jlsdLZhXw{s3Ft%+LbH>RV7W#ZYO@3SPItu~x^ZVgq66t>F2sRpHoS5M zWP3t)3KAd7zGh|ay-E7QpsMkCu#-HviNeU>AFk__ZG+%JwsbjJrwKXM8=y-x*yPG^ zq)=UiQ?@h$4dNhs& zr0EBKct+aFEhhj090&nHY*#L9{fIhbwN@QdpS*2C9N3Jr{5@L0q{C`6&nmGwvZ#~=UV=U?Xj?w6l`{5QYRGXL?H zf3o0=TYwtucy&vGXd&w1lY?$)ok*e8hA}UURTmrle7*s?QBd&cdG{S6ujf!-peIgw zA8y8E4aDOn#WsC&CkYA>u$F zza0Z#e*iR-wOT=1tx%$g0OT4M&``P{R5wX#nq+V$5aj_8P(<;3A75jN82@pHV8C8x zOtds7*trMNV%~vJ`bv}dU5HVxmU zpRE4SnGufA#_!`p15&~aqt3g1-DN`w8^>zr9Y<(U+*7{-AiaATRtC1utaMQ8B~>ClIfij zXB%?M>@&_m-5K*frwKe0a{Y{tSY@ zC!gYSDyC!YBN2=dA7GS*w;QGJdoL3!AVqL=`5s~M?;$&g7V0FZ1`~5P5S?-Wk1az! zWG(b-?VoWXNWX`XAP)l4Sig_|ed`8NHZap7*<{26Cq2+ajJ{AqGb5jVyrH6tm&4N9Cl7F3mGipZ_2fGW5D&n+P?>)$K$4zy!6AUTCZ71-PCK zdmS<8ZIqd5J!BM6J?H7y+jG@tT!3cy!1Pw`*9pZDLZtFhd?TPT@cX@Mz zaXn-$qi}Cy6bTG74sSj0PoVTCROp6bw#w_}aT4#!#!WT9_0&i}lM4-aLYnD+M6med zU*azQAO7y&|KpE;{h#h;{Q6J6oE;I3E;}H}YCmd^-iOsaw4GhI$H6Vzh&hOqWh~~5 z6!3)}#_$I?3hb1vE9G#o3e01<4Z#|Q`gY~K1z*8YC{eNDQnr0R8-xH=$3_72(I@Bh zifOy>c*@X~dr_xl&T$%$*RUT0bL0Zy0bCKYHwrTz5>a>~DxYfHu+0eBU~SuoAnV_+ zmWM*)a)kA3+#T|1lQg&f0Z zmYM(v55}+f`H@dp``JhVTbuZJlCKxU7cDq|kgto24UQYKs&xlRDCcZj@D`8PDJW); zcZpnd?qU|C{pG+clzbK^T0KNXY)wd`Rv?u8GleKI5Qj^V1m(5|NpcYRqN+vE8FaPv zy*J46dhUd3ng=<*c&1zj2!lCeI@H-1vO>s~BO(Aq6wl2O8ezJG*Fxs_lLzr7d1ei3OkkeCd6()o#1VYwwCs>svmfLtn_(zAx1Tw}Oux^@7Rc1Q z|D#s}QE_{sNQ*I$3%{q-M@8px*xssXu(@94#!#sM8+8z%Az*NDOB{Uwc!4JG*^jXQ zR0Jb+M(DuEzgMe;f1gdVML)6h*O3j6$ZI*7Mz?P8W{4C=LbqLhCpjN-kL)2SBlq(} zMgwA3jzjGNDb&6Ooem@VPsL~Z9!~|q9FS|`#G;wA6@>5C>xa*z_eZTgH6s`fM)|1G zLa}FourG2(F!#}Q7yPw})_#izBGW5A$spjA1CF__s#Ul?3a|U(@w^%DZD8WZS06Sz z7~J&r^Jma-6^6kS4J_y&!5vmt7gMFT5;Z6yOnBnthG84A)(ZjUIW*mhYb!U)_67hu z%M{}$z=zJE1o&F^iFzj7(EjcoK`PVtZj>$a$=O8bcrX5)tJiuEfh^>6;1&H$!I=c> zifAXVRD>2vX&`!5fRG&oEw;z|jM}?*7eb`Z8{{}_hAB$BGX?s!*>HE=J>NH%u@Y=M zFlHEPG0{M9T!&%U62EX8ppEND*n!@I&JD@|=m1;FKmgJk;S^R=52F1|&>A$+-tTf3 zfDynKa-QJ*SO|03A3OHfxDk}=GJ+)B?SzqMu=i)F;ndg&2g4J@5QjKO_+ylt3{DkZ zKaPEk8M&>5`29pC)yDP-sXZ8PHynU}ClN{%2k(p@T)<@K`}=DSF3sS$+hsxVT={lm zRuSW%wp+D!C(O+ItQbtLQh=Wd|L6_>Oq_WK&;WeJ86Wptb+2*vl=9+P;fw%0q(^R_=xfQP9=P4BTn4v~+8%RQSJ6#sOu3n*@C zU`W6Og`gd9*D!fsf%4nmfvCL#X2s<%3p4jP!V>X9?BDY?qF~!$9$Rpfz_PZ*^0BU1 z$M;1kt?)jGU5LE(dGN{9LtS+<><9X z7JsCE`2W=S|LQ+!@&Dwuau$S_r&pd8ZY3CZb{?;VEZXPyz~uLtlj$Qq7s1kD$S_tg zS(oYc8}SRQ(O}<0yPT|;e06)hlMi(i9}p7A9EE)H5-c|6-@g_|!Sb@<;z4%Ldz%^= z+8}`+e5mLEk;IteA5nN?2p>X_ktcSR6O!ust>ssCmU|RDV{?wgS$QnYTJO-XHIs`sz!>e(Y-iZwa!)D(Km`T?Sgwwhg(Pp5)f>Z&k&^!U? zJLiObE}Sf!;yK9YMdUjuVfb;7f(z6Kp#9eu2If5s61A2rh#99Cxjq*|-!}ffG(B*e ztr-fIq^rIc;Lr!XwEK&d7<-`@zk}>5xR^`f+F}f!g8la*cx(eg{Uk6Uz7FCS`#y|? zuGu}odm*&>f(%9q9aR}ZFOTHWt(W@r>{`pM3sSCxBB6T0OYo8@%=V0jSCq4k-VyjL z^CkugHsPMwpJ`dJ-R#e7xj#b~)W_(t5&~0E!jQtc$gn(K7n57!3Fc=MCI$`O4TR!- z*s^?d-(3~I9j*x)$1kvZw)mKl=Q+vVhlpVcFN(|Uh?E6PgVc!c?W2+KHjE*Z8P(Bo zDD4Hxbmfl)kT4n(0Er+&YfBrVFzAR~40sSAd`K^+UV~|w-PIUOiwQKwRt!5bMo(dm z9}mNd@2Ce5^87W?%$va0q4zzQ&*>N^bGGd>vcoa;HK~wEvbI9o!LV^5O^X`2h z=Zgu<_hEnUAqY@S21Ai<9kWluhOH>ponCM?UX#q7f23gj@n3$>(|`B(KlR`L|GCcJ ze&N=+mY(Zs!#iS10x=SqR1C(Ks-^aES zV@VedWO(=WB1L!b-8SjNB+HG#Pz7h<*Ko{&w#6+l9Q`&h3>nV5Hc|y(NAFyAkqHG| z*GD1C7>^Do!gl>=*sfib5rjqS#f&dxFHfu3L8R&%@S%e3)*K3vfy!Pre}+-HDpo*v z13(=HXX+KC>%u9zF;fj;9tS*NeAJJ@O-MInbf6Pa0JtH>hJaXW>x`LxP^PzKc3=n~ zP>srh^Ew??Ry-+5(eGuP53G%ujRr(?3W*mK%kz+a37P{lp*v{Rfm+H_IGh}UsJ+ji zFYb#Wa+4E={74KfcCL{lv@t9x8N+iiXR8zRMX-7b#K-q*87M;I7d~`k&25YM~g(4iL^I{4KVv|GdK7;h@zLvx!S##cnV5W}*9Vws@0s|_^ zSzrWKwI@-c|mHRz+^(m8h_e0YCyGI<>gZaT*?dK2iVe27JI*j|wt zttZw~DNJw}WPonyR%zh>LgE5IWSFcELFg$W_txuC{eIMG8UyKCxbZLMK^dl7Eq%miu@qu=HAuq70^ON>=L zWB|Q2f%yzilg@$1;Pyv4BeyWNkM^X`oh6>)@sU)am(|boh?QSgclC^v7t6XyyzkB9 z%z_d1RT=lRZ&0i3tB_9wE*C^dTzS7mPv?TIIQ%!DNIxl=mInDD-Wz0&7jl$(Mo$Ei zrSChkqV34na8k41T2`}aKc>t@iyvAPfGWUCTNj*7EZ0;7^VIYp^T{v{arTAD4;+-v znwla^_z;L^dCb;CK~C`c^mc9SFnrm)!7?&^z5lPh15RHNJ`J58CYu9bQfNK?U)J7k zSGV3suR{PQfn&r0666B%o#Z4)$YK>)>_Z>>z_-9+vF!Gb)X=9GFpS({t|=IEyPX)& ziL%;1?Ut;T_Fn6K=OnA1XAGHawL@ImA%TtBXrDtgk5#6Pi0e{g-Rl4;$GuJuJ3A7O z2&N>kMEcp$y|n?4bA|$t`p{WFe*P@V-i~=5saKdO?}7$C#a&X7SaN2;6Y{mfvAIq< zpddW`)!2Fai$SoH)nc7v?Z z43ZUlU1vW&ET^-@7Q6Jij(BH8${7KAJX^Ng@^uyjo)nnh`3}42eJPf}HF<|}V4q~Q zcdhy2f{XH>$7oMZ{CsArF#XHc6@Z64@YfmSLeQlVNgCET_{4)DORvS|epe@Auq`t^ z`n&oD+40n8UQHL)i+3PaoV%T`641IJ0oT>{&)3OH-Av`K7`wyl*F2d*19lg|%P(oL z5yj#x>U+g<*7?}C=~|3&PD)BG#_cbriTji&!;QrlQM~$(n+6f6gQ0p zKI{SYj8Hm?xz6NeRqwO`W}ZQ#_15D%WSrG>#)M~EosgbDA=+Qv>q0D>lxK$p4b3Ix z;lPc5oK;KC|EqPUzrNlBe^tEJk)&?&Yx?&_a3hZ z^(o}#TP=>vZmP4CdOppTpi8xbMh_0ypVxRXjnv!fhOk&!|8am=B{C0^*|yIF@Uu_c zUypbpsFiOa{q*1@KS6I1eX41G9&_$I`yAV|Q7DH^x(uo;j5SR6`wB#apQ~CAm-M~3 zBd+;%8x|%_;M!QDpi;-Wb_*Z{Bk6Y2?)3%Ixr_)PT^#(6tJVE%)+@L)koHuoGuc5b zoVMZoPh7+%^bn-CAD`d)`T{t!_7|PJ(b!k4apLO7oz&g^+bXTQ=eKi8goDOqanpDS z7Z&9GrlR&13H$n@ug-y)08JrUEpI%BZ1&yZ?~6pcKUWPN8%)X6HgrfPh&vz|$S5*n zt+Oat)#&X?&IVR{uP^4Z%bT33Ek7jz>I+_GMX)46axM9FWqVVy)fap5y~f)R`-aMi z@pIMM9R0ZKv;YO>R55K&weHMJ#vuSd`IMiX!BH6k=7x_f?VKJvny%Wm+#s*6IP=JE z+0uBZ;nw-++CVE*`+6`jA^&7TefaUu|FF{@AB-`v2oQaP07J?e{=WxRX1@c>@!SB-~ zwwUeP28KwV2IcG?ILU1uxX^m|6>uU9z{4nK3Sy z5^WPF5P)6%KASA5l<ZE!K3Wqo0YCRS&=-}p4I<@y9s~^3Ss1zU3uphsF zLwWqaO*LtK>1|qOa_H;fZVH_qW3$4$K&VZ23tG5~WezoP;??4;S~uO50-fLA{zlWn zLbHEOu2)m_WsK}}zB433UQBtI9Ila3{;(I%~w{EU=9_9to5Q)92&CX}wl>H`ptIvn!M5q&KF z5=^z^=c+;elb#XcyPVlAhO+aDWqGa#3L*NdV+~OAjcQBVpyhfaB$O$wPmL+$;|9Y# zJT=w_6KCc?GxH1Y+oOw56>^lkRrpTTe|~<*h=f8rDneLxk8O@($x{L2Fgs&vAn&Z; zgqD%Q99a^}tnr9>248S&z>uS|n$^X(phlTg4|Ow3o1=~mn?qV^7qWnR$5(J4Al zIVzpXmU!t|SCe}G&%eL2j9$4w$CtZj1P{SyH}sAf^VX2G_}HkmZ*<;T=j`39sgmtG z6Atg%!jy0=hK0wobziX#sh!SO0`_}>*xEUviY2b@L1sbXb#1Qd)AH> zm_aGGVnTKHzs>r3;5}(Crf$nL0BtdQfiG|FcRadL);VhOy;`6@XLW|Qi!jpL@MOjN z-S%?~<5q%1b3Y8{f#50FZ{g1gjcl8TZUPXV!BKDw8@L3-n;aDHnuCipqiK>uLMNqqfb@8 zTy+lxWV3s@Kdea+?Sok03myU*83L^{SLs^SK`^0_$?p*b10sC%{`0h5?*;{jfS1eg z?I%sfi*7PV0}4rs;&HP)=e^L*`EtZ$yxSRaM%7qG>5Gcl+G*AMd&S`u<~iPL71CWm z>~_1ukZtYz{sG48^Ycqh=&A5kAJm7<+xP4}kRzOITcu)HJFm3k^PLQTBh-QXOqgVV zO)n-cBxfBK^tl7lTXj-y38B8NS$PK)5?c;5^VE+&KcLb2=mQS#s?-iwdQGpr(ph$s z@M9uAM-Pij(NY#csNKgTYKrsbrSm$0p>8Bp9Ri(oEuNq_U0brdY$vAFbaO%=Jga{k z9=fk*x5tKlx>H06tv*2DZ#j*~#Em=l8tQNZJzY^1qjTc#cxihVn7UR+ZdfcDnSxoj zlU5z`1PPhf=^!=mQMk^A!nFVSdca8_kClU}@TTmfd!Qv8!)$n*GP!IVMd=cN%oe}p zKEG=)8uC_tV8(3O?aRxb$qLLP&*>;uyN)sQ)~Tvx=kz=oebZ|G2T1FOAG9unIwQoZ(?;&QudBelT9bPN2o2++7|nLV)nw}845#;r zbI<9IehbvSpPL}tOrNDg#^w@y*r#GM?g*(|0xC>veIAbU`0ggDf@+aN6G3{3EXC#= zcYgdjIb5@epjX=WERqzNfo7e)m2s0PcvDOBO%>H@>thL7{6iD}~;JoJKnF?+F(#kUCV?OP~USfI3jZ-b2Z!uKVB~Z z`&y%R=(t1?5@YYBt50hXe7(q;M~)>PY1J0jzwS28^~d2kUy!J{iu3gg?!tE4fP$$T(soVyOHr*64VwZd;F6)zeZ$j~y zv=zo|WDb5D{#(L(D?aCZ=A!I<_MHJos~NfV-S@Z+9M>ZlKlOgK!?gz;ORp`V`)a@nR_TD4ErXJ{n={jcE+Rif}X_NEY4u<=Nq#=D31Z%ZYZd_Y}pqQ zcjjw--XBlAY@q;~Fxg(m9nF88a@Ha8^ce{$ z*0tT|*`6p1d8;>a1So#| z`LT1xegTw+ATqtCfFh0sDG{rTRm^~2G;djOBBJt7Hjt(Qk+w1Nv!L8&8-?kzKA}yonlb4EQr`g+tJ}svB$4yAvMC}Xc?&rsi1-it;@=;n5 zI~?-9Y0^VTVtK2GdaxK=?n0@x_>peByLzP8XyP?LupJa& z&vmdp=7A!9&5ihhuSX9Yz}GRz8mXAWxH`w~IG?Bmxh(x?(x7bS4C<2Aysp1~e|}u5 zZH?3AVZoU9&B(k*mTr_u!+W@Be>~j1#)T0zCjrf@VZshErA(DqS`)x)0QsrkJ#Y82 zSvhc`(z+(bJ)F0yAt!kx{P^>~{2gkdri-j+e|-_u%bB+c)yzBf}u%zGh?CaW0$=(DvO@FRRQtp0xH!P#@1M;r; z$ecGOp zH_PfnIJ|MQ9@o7a1mb*;zs4=R#D17X)z7!dh!>>C;@?~!W@YaF4x^$DE9Em#P`7;k zg)EdN*<~%zV`Xg@Noqfp)1N|wAPBpAqz6Zksd?b9y^aEA;pm|^+1BL^CO;nc{sP|G zN7TG>atK%!q%H5tG*XEirh8Z$*}Xlbv=i?tt^4k;(2H+Ca^Q9A@yR>&QFW^`mRvobRc{ zEtH~{r)h7b!VYddy1F+w3bj+XN%@Dn+R*hhYK~yi#7FDrZ4Q5a8_2CUu2GBY6H2ZC z(wzC6T-rkcSdk~jl9Mpe%laE{3L4KgKj}Gug-@f1wIe9R_Blo)h|RiZe!xmV7pq6N zUTxQ37`OcAa`pf4|5cs+)d$l~jRB9urBTui%7MVG)~m_iH2hsIWla~Vqa=Ze)VPzK zeI9j2Z||Ok)$krZ`~vWT*I9!Vyg00&u^YS00VWvhmE&OCe*9qS-?E}!v))%{UHQI} zcW)F)pE}EaQI&nO=v+#xr}=RZW%kF1y!Gc8!B(_v8`rym0>Z|o> z17?cikL*|(X_*%FR6sdLTP9w~Gh$tbwkv

y?`^!)jc|L6Tzbgcir!}$FZfBl;9 z<5lfpEO(G03k4Qmq!gQGTaT@Gu_WO@v5j-KNHF>6VK<;d4~hPiB>FsZFt$~XLvw{| zAZOxcN6vR#htE!0537#vACD;&M?~kx%mRa&T)*6M7NjX)V>0yixp-Muu0A`61m55w zp%oX@1x0P&D{SoDhL2YlQ=0i=6~W9^v(^Pze(jYtqXNm({O9fcVo+?%EWFQZeVJyf zL(Lx1j7op2+M5GGNN#b#nX?_185le)puoP@P*(igGiQzUbbm997-T(9ree~|CdczD zE%hL;{&Se|oKitfQ_eg7l#lgxTW=mmiXoACIQ;oW+eV}} zp0a@6%32L#E7w%GjL)b9JiTBopF3dW@pGBU<8kzsN#H7rSHrthkBIk4^AhVSM1Z*T z>mGfwY&LoL1jizFDfA<-;7IS@uasG#wHW^Nd^(5&J0?aa`UQ<0TCn+FT=V?)U!VKO zKmFmif6N#A`)~isDdmlKg>`doqw6yld4*x?_A}aTUrJ}$>^@7L4tT)F8*xy}*4*^f zeb5}4lMi!Pkh0Edv+Ob{Pv%MIj2NFo;o|;bf$qGKemo^B52jVk&y_}ZixgS}_6c^A zx~lXxpQ-gIP>e2mCf*4kc;;&_y=(V3QCzgq^&Hyz&74-JN#0713DIU;_X0qV(^@yV z@1OU2t%Xi9jjSGq_QgK!0HmBfZpTTzTYB6!Hy!8cGPL)V>z-Xg(L;@6{87Z#@d~zHae5l@P#{%&^~oPk_dKK_6ky8T z`${2V(0YG5x+=9V_sBrg^P=pz#`I79DY_@)cke!#TS&d$R_2USJ9D*paizC;y7UU- zp5vaEEzz=(a=ky#s#?sxJ`dQLU11LNi|x=`680kAYxKYPTiEKd#-4KZitreEx7l}) z?cF9Jpfv)_`c81+NWNdS(A&`?_|OB&@sqsUjSYGy^YaHVf9%y z8E-uEH_Ot;A$CjnrCV0JYJ2y&fdW0BBbe8>YxC|Kt8*JKq2x<0^29(u`*L|1Pz>$w z-u~maG%CYRQ4RWA)>ig%*T&@V?BC=F!b8WY_j1i*4Bulw_9Rs125Fw~Z zeDB)erEwv*C@x;Tj+v}x4aS*6puN-=|9*N(#=1hMq&-0z2#h0%LjPRZ^*~3BcBeNq zwF7GChaZaqaHa3-@jIkLHA-n8zdvJ0XE&~W@6EP0_$!K1pun9BsAWQ~%Gv7cJo{_i zm5JXg1=ED4N`4#$t0p~qJDAH&$b>;k?53QGRoz_HoGaRqHOQhf@g7&-oIsl&XoSvD zI*Li)h4>TS`tS+y$ALl$0Ed>n1W&^-8h?jw89!IH7)0VPO>%b5sSm|L)HM!B7-IeV zumc_B9{Kj-v&|jNrS>;yx2A(|`t^jvfBbYUX7x8s875OyE;d3A%cf_N-00p2_5K{) zO_8!K=pY@;&}>?oTy<>jE=1?==%?`2QE}}{!5q(rhx8HLXsCkp99zk(veC|bjm-*z zuU_dBdjGx%z4<*(KW|S)ihn8V|J#4}e*c&65ARRs&+oVY>DR&N|NUqF_kaESZ~yrH ze*c*7U%o&5{Vn@H{}bG@|IuGH1mR`OW5wSLa$s#V)S=X{Ynoodn{CVoSBl+wwq!Ba zDS$Q%v?y!m0gr6ttIOBL;l>BmVa=Hsx9fd?)SLQ*nQuW5eC1!-oc_1(_rE)T`u+Vq z2I)WjL;mLf-TVFDpMU$e`Ct5K{{El&tN-q}3$(oE5J8|z*@{EJT(1r(r_6LaXObJ( zEIyFt1}3y`Lgy*{yCy#5G^@<$K>{>=Evzlf!l0)-m0KXm0Hutvc4%HV3jp20aF) zl3EZcmbY`p1)tRK{W&)Cj7j>TPfLbXb2u_$zC;&;F?7IV3l77YcqXXVkC_1f1v&Dq zYfo2Ote=keJ3R<`%OSzCplcJHcj&iGI5a-ryA{2{-F`ekOnJVWt+axjz|QO5sdaZ! z{4u~uF88goMNXl+sl0p8+`cSRNnCI+u(u}9HO`uXcur0nq||m@GX0};0JL2I5$T2A^}+73Q~tCh}j3!cX}NH_uVjIW94 z@q30-Zo~n@Vq43dFr|&Mm>1@-PM~P{Z3rfgWUjlGD zt1m+sYZYfy@FT*>REY&$?$3snVtx_SNqdg_EYNHU38 z-yHhZnL5m$g_fftmx6xiASU(@R42w-@WC_o}U0b(SU&NxS20 z5cvnZn>>RJ<+~azU}d%KC2`W<*>dn&Up{Hr?Isc=>&eYo6< zw_tSbRNz2x6F2ZQVcjbUJEMZ?9MOn%F$`@+lzpB?wto3EgEl(fF0gw_f32N7el|R& zGhP+Qjjr?O6w*Nft2$*wP7fBMV1@g}@>L|ubjf@=HPO^Wr409(BSi5pZuX{W!%cqTMQ->Z!b#OCg>qezyQ zPlgb?e}V~k^ydhSC0D{AKmPOcA!fc+o*_>=)e?+%uL<$$%e&Ih@qFuwOZ!|wDBi5E z{5z3_?w(UkC1$*9o67LY;fa$l(?FQ9M2yV@=2~N2lu+f+5UA79Y#4M$!&#$zfc2 z;w2^2pFe-li^2c~MMd%v(mAQVwx37KQM{dBFfeK`+A#D~s4*Vt**tt~icYr{#_Y8~ z{7fnDJnZo_t9T?K5p9{⋙K$d5&DE<=qbKUFbPiw^$ zWW=f69PB%r(MtS3r|p@oh2}hmr_WwYzWY^MjXKpqPLtNgEC*(C@Iak${H#u9t-G%r zgm|%84dze)-Hcd~{rvM^4{#7#}15w+wpBkh`1mm=`0eOfz*E65idmo2y z2n%0Ub>n=nLIWerhvwp(AJFeGkH=WM-WdQ4$q za+r{fIT=AvS%(0-&(Di|Z>_uQD_Bfs(<^inwU}8vR?gAcWV|t^ z*}C(_T4EUQHcl1VY^hTabk43Tk17JYV>xi~OyWv&aoQibW;J9e$ z1p@fvWU((qYQ`+-y%zoKCEl_=GU&VISMUt#J7nQ(?&;$+2~c6VhXX{uZ;ouVh1X@> ze(A|CwlYKo9xgG_auQ1ecz)YkY>K|hAD{m-R$~wTk;+ihMN#N`WvFF31>A?NJ#I;U@i#Ykki2E|XzxTw7CF8UYra z7W3L=={U0v2(j9&|M<_}7>G$tS=nNUx{rS|7e1`8IzlD%qRwQ@r1+$%B?6mzZY5SH6?28 z`^US_4945t0+GQ!cUiJx{>rqsjKxQ5SSaGN2af`udYwy7OCkIT%{B(DlpsFSh**td zxj^Jhw3jhu>?OMam&bL*pKmPWI^Y7kofAibF_`~1* zyMO+-fA}}=PrvZ^r-i$KU?x-B=rgGDN+uz1|vQq%$cl zy+8SF%WS`PvmR%S{-Ld6B0Pl`K+fVtCsX`*-=Z0WN!5W}7*J$yN3&Bz8R5c|QO~z? zAfaEMPrT^g@1c2D5{8JKbEIUk3R1iTG2)DyE3Mn)r@&*-i^DM$qJ30%?n7c$`fj$1 zpD*B3+!{IZ6MT8WW0yEy1fDx2Ug>DxN8@iFy^S-csI_++bEI~oZM1Q#O)xi-WFF?` z;tCUaO>f)AYun$)kYU%MEsBW^>SRvi?Cs&6-mQ!-L%sBYkb6N{_+?*{%kN}ak>aH_ z`sc|~KIb31m2A{>EO
9jDr!_BfctYe;@d<7KR(0Kig&Sfp_#k~Qg`c7*mvGbt^A5@4~mB^gnMVtJ8G=X zQVgVi|LV;hF)O%8^B5Bt2U+-i2cAd2)CMQi$_qB0zr|?S?a0)3j7QV&p&@WeVe3+V z9iAA!V(@4Zal{z4p%4&~K9o9SbOzaZhg@ET&00}({8qSw+<_={Ef|mm<@y2v5Kc38 z@*JoU>ogQ6luUXc_+Wj{WXE}-9nJCD;}Z0GZ~f>(M8=sl^*-+;X!mKM{0?43#eMJI zW3V(E>tgf-qX5Op>0@maDd;AQY+@YRSjxIq4b%4CZtsnuwY}8$n{({a>>ni<{h3VY#++? zpgs3n1Z`Vjetcy^KA{p@Ndh*gGnyV4cYHx{jMaJc*6y9F#tOUrquaf=KBvvJ+uH`D zF60QJ182@72x1(%IM>~SgCI;l%>m2yUT-B(f=%Z9v%bJ+u7z~eZrFI}2xh9#nqMWB z%P&Jk_3wX&-=!>)^)l>kL(rT1+jK8;)eSIKWC6j*z6Y?TH0~N&JZ`>U?)f4&OlSBk z#0UTd1{l|gJIvF#Ugg?nU^5{XbJv48d!xHS@dTQY)XN+7rD^g(tw7x9BDWS39ZV82 z?yZwtU+0|pv2t8c-WS=wXWt(IZQfY@?$~tc?DC?pUBJ$HBM0jp{SLb&G2gt)ZHF|> z^8MKJDpj)$=G^jp-q+}JjZZ{Kx_cs0fhNQ64V(2Ye2YyAGq~8%Hu$ym_JCT@&*{xE z7>;Aj`D_X6+Ww!!|9pQ0OJZjg`NDck-pN!`9@~4_cxOX42QRCz^nm*r)F{Q zysf(CVM>2}9zb@>2#2?u1#-uU4cL8q@F9>Bv4}*Re)O~tHqGR&_3C$je}t_EG+WNm z03rzx^xb(Tl{2{hn(BCik}IlI>l=`HTYc_?-2;bj*8LC;8J%)9snsc^QSZ5)`&}yr zluKAZxRT_4B#Hh-45IV>;)Ez1Ld?)}`LZ{$Iko{rZ@s=qoPPhJCIEeutj>%?gj`W&;8hXxs4{})st=Z;rpv}&?Dfv;NjTm8u?q9#($D%PVll*R-ZNU zO`H^^TZvtpA3ppq_IVfQ@+R~(y?3gxBZ)m3X5gV<(x~XmTJe%1=4zOYYn}nA& zrT7(vbjD{jK?+b>n?om)uvPx};X)#dDH|c|XQncz0u`zX5qp720DCL4mdn0%0y7I~ z*RvtaoOaPIH|*)xYY_jt#dCohY(E-0gc|Db%4cVdEt5er($Kjl`6gb-?Jj^3Gj^oe zDjb%VaMu`C6gZ}DeYs;h0ES#07|7iBfI>!oeqO+u=eG<0q;YmUaLSsnWEjrCY~8_$ z{lnxw%;VFxiQOg0!-m!9-$UVE=H=xW1d{%+jc;lzdsJ{=dn`A6Qia=?G-6b9&~1de z_ic|&J->+R*TAg%dkklCi>kK^*oI%x?9p>h$6CUNY!Exb(SGm)F=ExTf>Ygu)}Z_O zx9Ktjb1!YhW4PIB;RXS_-^4iv+?pAsd?V(>>bOpON361O?HS#;myeZ7FCkDxK=^E~ z+%xx{4jcy!VQ3vNrSHnUBgZRm!NY>(Yd4O7-4zy-6YI4Xz$BY{)j(G_@6XCVcU9vCAQIa`}I)I0}R*8BoM zSI?c$(Q&TY)!4>%+1VuS2D=tr#mxb)=3QxS#t|Fz{^1)oT+UZ52nkNVUHFc6^1iL| z-pCvMK8RH$Zm}-A6|;`@-6P1DHC`ipaNnzS?=Q3m^DxKMXZyyWxo@-#d#%BA#QDhg zFI{gRLz>UunCf~^uUcADlqepM!=;IzrEfQsZiY{T#1IC5`o z>X8s2!IxlPrIQWrM)|$q8DSOKAo=rCurUD>(LxH&GSb)c$CGhw)a|ibv<6I;zV+*y z`ZwKGV2`cQmu?&E#8?K8KaHfz$2|KXB3cTOS5Qxi{Dg4qk8AyPn2D(r4745aXO`Qys!m%I;SQ6XO0G6&r zd`M33-Nw6G|QSyoHeTohV+!)Vh(;_ zTI8TGI-GDXsxgGeX1(!Fvyb85hApZFTaWkb-In}3eIFAcIi_#*)Csxv+s={UNu7)}mk zTXWC@@Zw^0o+x8|Mso5s#h)*9Z_Id>^AjkF%5vEr4ZqQk6_>;=_6pnk%rcBQq{fPV z7I%U99o$~VgKegyyc_(&90MXOJ}i2VU^1lTve4d~!-`q$mrmVBVJ&@$#kpr|zYeFd zMvZyj*9j{)i0*mrY2#_jc2P4N;fTQldT}y;JK9*2ef{&d?rvjzRYu|wgv7X5zcHT~ zPX<4>+dYi07>@)8wJJFjlAho$Uu^rvJ_DuD<|vJSEtb`oQMPX?gWJ}=r=yuUo~FqU zUSsXbfIvrad-hAN{4q2w-UmC+#}=KH$%&AE)1I7i=$FNTEHmu%y5ijEs!um=|M?nV zyFR8;3Z_FlW*u$c!R>xL-hOM{?7f^dPl4b)qv5S26n9_ygazF6MBmAFZ^wMGD6aE+ zIkRqXsQwi&eXjF<0JvFft_cQgy?_tdiE;fGTrA&DVM=;K(tF!E^Y!Vo7K8{~Utre@ z`pfd~16Yl`9;?<PHM2y6zgjh8!qz1UIn_ed*fbLSAy+w|+0{7t`@b(KdMNklC)(xRKhHWh zxm)bF_oMU2xnXgJ;HU?FsQ~tU)Yk7&Q3e=g@DuQ&L8w za)(xCykLqw*=@_9=6bO!Y-w;;=H}VK19}|YtL-utWn>epgJ>-J0;s~?d5Y;{f#B-( zjhEhj@7I(CDV@L%`L;WH#(m>#{1?iwVZN?`f#}QR9?Efkcnk6W&l`i}+^hG^UiS2< zKKx6`pEuNl*u#acGvT?|9v%!>Cpqvji-TLMH*s2%d->idO*RabyBqrxX)_oIav1r( z9)Ks?49P(HC|VLmSJ)a11pe)TbW;(l{MfGCo3T&m-nUO03FY~ww^l>WN9JK5)S!7? zjD|hVmjZv4-z}w!xnCFaG~Z5~qn-o11SB7=JqTa-kd3}P2MC&dXFGh`kJt6 zV2@w^p75lsZ7n|4zFWLwEzIQPRB<-+eWDpI8S;%d>;h7JaXViVZ69Pbu3{yhx&vkk zzjhMXVgo`6Cld_QZ9S4loy9ZazVLX`bt@j!#l0byY#bHQm>u4W*U&J#wefkO%J@>s z!*~ZIl;oa$jz-1+cy9AW%f!RUTzPUR`7j-Cy`ZpFy@|p1zoMC#wOS8!o4v&&m49(X zd>e8ULZo5we`OoF23sBzj;}KxhRzKym*+IlvBT|#fXTFF&;VNE0t#QZ$lb~XhA;%i zdwZi#RGal6g0z_2YPi)gksNhQ_-!elnfKLDU}8+}j!c!ALHk^^xxlYuNn#UVeTw_w z5Xte~$0KmpPu@)2hI<8>W*k>{j=|bFt=%~v&wyVkNpP$tZS%5Wd6GRVerbls=)Oni zuk+%5Xna({PLBhYg{*wrTH>+5Ec2kkkVJAea^H4kdDekcj+nUlcN7OvRq#u|essuMd_7{(SRb_2oV#Vt1;J z=X*5QgbvF2dNR%1dw*zw+2@$@_UX@UsXGIshfU-x$1K}Pe@uO>4Z7SfmqEhmoEU>vHTx}m3aMH4Xmk)HVPf-6?*0mAq1@TA z!+e7t+GGoyWVV~S!p9uWKx%Qkc%@d(LZUE651D*)E>rkTbrj#~vRsEYP9JBMoAMRl zjDiJmEm>#VT22g>mG(815Nhv$t0RrT#$|nvCMgCbV*?$GZ`wsxL?bg8or@uVsPmm7 z?&kh%>uu#`*Vvmuv?Z6fcx~|7B85e=7fB>TG|^$>j8bR!JpdrwP0HmXNqx{3Rz6QU zv-q+P(>32xhA_GMyM}wHZ5qV_^S9Gxio1Oh^p1WI3R)3w>L-LEAh#*`DCQ8ubrF$T zG~DMRo628oA$MnU^>x?YG!tLaN6W_6Z1n6cxn1JZxCqMqFxH_}q{VAm+9s|gJGCdr zC=?I-Jd!z&(bzZ98**jk^)Ibslr%b5llhI&W`+5+FaEnm9v-_+K>eGw@l!hjq?*^u zDMo)TplF~>UXpo4e-)j0di|<$!t~Yy-QlqT(eM54gC=MoYyx=V*FYFe&N%k)P&gAwns=;XgQ*DxiNm82{V>pV98CM#L#qj*X|sFh z$c;y9l2^p>r9)7@=DrAv{kE@!t-MvnZWU*sY40&0*Mm*|s4^XTuC$K=FQsGfgCJ?% zguEUn0U+9+*O7Y>k+gTP~LSQhWyL{0qt~kolqn}>zk~;`j zBBiqxe6WZ9iYe2PZ2O}%VPl`*;y!Tu!K$u8l|&PCATf(Vr}f|i+PZaolb8aKSAIZ3 zpN>B7epPxlt9q5Q5?023wtXO}(%@u$-%@+6vYvzc^NsCu~NAz7}FlPDX zG3h5A6A&@^R`;%NV6|&qVK&O@XrdpqGxR-%{1V;IbzQ7@tO?0ck8yARwlY=Y*7CgC4TyMb~VJ#asd4}Q~*8`$+!x_Wzz(E6HXbO=aiXFU!rRKTc zAd3HbIaM@1ipl9lm%<<&b#7)XAI1KL7@!hT{!UFesw?i%C8Xf_f;T}-;fT0vRqqsa zICLsMqS6&@Jj3jWi4q&?nfup;I1Lb&U z3RmA*4B<`c?0b>+#&w5;fv1VR(B3`U1I=r*&I? z*C4qWyqVW{pLvGaC92HL*k9LBE+MWKeq{i!yN0S>*hQW7q54@!(4nE;S^5q+t1Bba zE%+l4Im>BFfD63Xz+!axr=}h@buEqY(Z3k_3!<>qVm62906aQi_0#^w~TieA=en(VX;pK<3U%I?6ai(X_!5I)H`7zAzWofN}21 zijBkP<}&?#DOs-75i(kxo0e{iyP`TqDHwc^Pt z9;;dpXDZSvk)aD*A@}>YgP0M#!G;ksO3IqNZd=36TMZ zn>iMmq?+z$!htIi`6B1s>RjMDXE6%%pZPG7OxZVpIfc(7*^KP8^<*lV(o!A`4M+51%DL?|LyTaE)BA{P zpW5}2J?R@gVIvxr9A9CJTCJh0-l*hTw@P{his`W{plcKS(z1RRudgXL6c|GHPMVQt zK6-Rs$rFpgXzGtA61sXq#g!C~R^v3u(kNR)!>88T#|=Ohx<0~Z33U`gg5#e3(jM5^ z0uf3ECQsEbih%Ol9;6iD6wYKJY>&m)Wtu^Hgm~R-+JGu}Boqs7qcU^Xl6WIKfWq-P zuzJ0>cE8d@K6488PPu(L^NjK2t!)jO@MVsMV3s@Q7}1#{_I?Kv*#m7jGS{J6)7PYs z7Et*)Y)h`&FRKQUR^4uXH1RKloE~QgSI*v)a2bgTIn~FOeu+UaRjhB<&A}rdiRC=p zcu-IBupnqSTCS%ohE(nb!asst_AkXi2#<`Eq}Dm^(gyiq>HP-4Y&}`_9cIsDW0E=| z5Py0tp^mHgo9m`06ws~8(zvHskF+Hb<}J+`ReX!&*O^SLOJ4^l-eZZz1%yW7j&%$3 zIyr}L1|1orVQ@Dqr@Vv`)Px8Hm8!j|{LFSKS3OP|?eIsa>*I{)J&nhGYxiydrpeSJ z$XpuD^D&v}3om@uEAz|k>@#j%%eVGh?nY=gF2%E)EwOIdhp^McM#sP|3 zYSF{*Hz^~~KH@q~*1=M+zdc$FBGALr|tMFRZ@(jv2mpMS} z>$E)ysyM6~&;;uM)ebvzK6@ZZ&Ec>fo%XC5^()4!a+=5%;`w!aEjT^W#up+#o6kZ- zYa}q(WPYb=*;x{6^M)a=HrYJLmrp+L!-#UQ);t?Yy2&S=y%ZJ-+2!ymACH-hICkQ^#pGsaN>w4I;=#J zMrBVc^LB9Nzd5e zh|c~_TZWCOzA-p}z+H2FKTzV7sJwVu0)yE%*us7rtHtz=_u+hr&2!0=RU~;Z9xpuld+vdJApfG zu08Cmm;pV868v@H%1-n<+UGxxU#ePA-Kj-H|@7 z>;J>vyX^{^99MewjAY3kV=Tjd0^ayWZe(O;WJZqR8^agA@G}_5$cU6$BD)ASH5$V& zeM_>(Ip^?=BqDxLuoX<}9z*K6CaJAm1j6Y0 z%zG}zStu|Du(Z}t3G_QnnE9Sc2!@s}q$Mr(_M=>X^4m)OG2)Tw1Aorpw4CMMQJJDj zd7_EDsnyfKkQ_rABz-t6CjN<090~goz1ygolWAX}=+0JcA`oTrdu)t8nHdT`Fy>Rw z%(z!aIfsR^4P5D)=p|Ze%9|P+=lg06e>`AbQl5zBIm0y3?s|i_0neOX|6ESVSM> zN>ebQCwM(2tC0y%S&-jJO6hQ_6dhCTHqJ<~bw;`S^tlM9q6;r5N6n6^T|=`q;#)_nGo0J4vG&^?%=aTSP$5-- znbp)wZHU7IyEx2QmQkzf3xp{t_$?hq+?kM5PzVc4@F{Jr+};+K{6h@nLBLpln(=g% zfdg**iG7L5wq3{KJX6i^2-x*hmN2dm+|h3G+>TZOBn~> zbZ-rgDJ4PIH4pmtBbFVEg09;YMB7d~4739M7GL>i_3nwto7SyM!%+d#KHn(%C4`RV zv(IeH#>$6^hTB+HM1c$rv*6+Le(_2e0 zn%sE^=$L5wPxHcUELBcTCa;0EnKxi-}GutlhYVXO~a zxe$!_E)@AR7m9PI@QoQu>&!-c1Gert#BQ-xIv+zzgYCfP1&`KwMmo@& zHg~~On$y#*Rzz84%Q%D>wKBa}9RwbfH{w|I089-klC}eLjd`#!#+`EM3Z%x}B#p|} zm7ooW%$;l}McGtB>OTbe%JZC2FQ8qjsf)_3?(R!;4>a}5O>p?eDNvxhTU>G zdG1K~FugIv+esr`*bYKZCwxe7c1dXq6?;|)`QxmV72;Mz&v1@V4*P4opgm6_a@bO# z=uFC=nr9bZ{_MS{Q`}a&p00E-XqKOOek^i_C(~?nTQ-`iwDA%CLZ4KuSOYzqcb78# zP6pZ(jjP``W*J?ArTYxc ztvgF^m-FUvAY8n+=chDwXYfnU$~q;5SZ>rDa%QWxyNexctTgmGT5qibWt?pug1dAV zgVC>DhE}{&f*fJ?R0>@wSKe{BVO_uH15D@9+MkvuBy^z?)x1s4;l&>sG+?6Ct z5^inRfmLWcDuwpD&>-jbJ^D+~yD&ys@df?C7>r^+q0-QBE#{9wKlt z1c?BJN-$bKdiL7%urIF9Z%z`?l)j7BzZW0#Nooi%C-U!EGzh^2p`k~ILSH3ffMFS^ zbmP=p<3t(7ST(PG?y2KcQhBTZ6CcGF7TajA=<8+8r>|q9Z|z`#$~vnx(HCAn(46Ge z8q>zxM?5YL>B{6=m5Vq6ZSPq`5rd{ooOuhzBhW74(281~0Gp%kFA%^sfoLp}&e<`~By(V25P64L;4b6z zP(+{5MNqFygt4tY=k;?dw$)`cU`P1Uh4N$Y7kGHb_95AQqUY-fmsTCqL4{k}pu5(5mrJy^g*JYYApNDA88NrfzkTXeyIqA*-4dp^YIU-#d52_XE zP!{@?ivJ0;g~IRjy3_@;o1I3~HJv_#E^l}4{!IM4V$6|R+Md8kua%aRp_Jr&petie z)+3UEf*p`DbScQFV&o@W)Jf=OQNvS>_wJkNCD6FF~IqMA#8LXz6!8560>GWpX&>@G8LLD9_<_aHE_82Mom znZ7_jBf>R&s{nOx4iiBw^0C7N$zpl*@v~jY#jm`MG?6k6i@)t!(Fb_W!A@z9F!x&x*L*G+MtvB0o zN^}b8zHjGQ5k&a)sXXZ;*wXjtIAQB7kf2b|E>{wdwc^*|_W^Fg2pr7D+1D88q4sK4 zbF_wIw7@r57*s0v!MfLgy%o*qZewAru+8%`H=oBc_WLx&=96ZGNE2~zQheQd0OmAa z;E`lcfkH=bEEaHxl*Ukz;-$?;Yq^`^7p>#6C&hvT*ObkNhIi!GvPnhX3BC`-aJff6 zn){VF&b+RxRlFQ_7ha|!-SgH^P$iR;2K5h7u?+?h?xCcg<-rLhx>)+8bqW@Clv%X! zF)G`*^71|$<}Vn5+~{Vq_q!2F-YM4hCou3CFQO-T?)j;(@$gjnU6C)gs;o@*;#jEe zVjD9X9-L)f1~V>0E^1-27K0B{D3{QA4F8_4h=Qfh=0pX+OSuS8lhwwN3IJv*xd+&~ zOJVzdgs!C_oWO5crd=tc7ow>T>v~-Z{bU#qG+o`@>kXd6eVxjPh(+2VXuIw>_NKb4 zO7F#<8ax)yNS%K7Yyn*rbSfQnlvD0)%4m7rX3ghZr!@w(VC0kDDM*Kt3n+qQ9kea2 z%#)qP`MjG2z8m^8nRmhAtj!FpXw5d?l%*>(Q)Enn7zF)O?PJ}hVzOsV&TU07(MPf) z2m9WhgfUt!U&Z{;WwYFym?nr?be*ki+D^)R5|uk$;pJUFd~Y`CMP(Qt=n&R{q}u@j zCH&b}*|&+{SiLhh>aNF+Bh(-gH?<8c!^(^(TOsJa&!mwfJN%W6tC7(&^2puma;UV; zgaSh)8^J6nS;l;f|poquDNdY3Asp(qD!7(#JlmDj=Kkp&c?;6!N2IWf^v(gEQj0 zfc*jQKh%*%fzY;8gczHgF{_l+BWi-t1!iCvRp%s$6&iLUz?(u@*EZVl74Vq(t`LFR zA2>AvXFuab#4R{tUwSe<(~FBnfe)^%3tPDGhEE}(Q&oP+8oH4&Nkp;Mfz;1RzRJ9; zp69$K3uJ}@lfjpQY|<4iQG02w4iGcCRvO9Y>%eKnbbdTde918q{;ObSPG*A`ri%N( zF}VBMT9qKZ6V(aDI?mo@G3oUqNEC>evoYZK+H@l&IW(gqW?Q*Hh@Hacpgxol%9i>d zSRXEtr{a*sezGfx6fpC7%%&#<6uTXKhJ&yPo(3#fZ(y|Ui;Q>scmWsVm6?nJ+OVg7 z45E%}-K8|Npk6H7nRrtv{ZTtVnVl_E4>2$+b0F-=_Mcb@cBd%3NG&sp?vBN!_Cwla zDd3SIOLW>V9PZ@^36%u09T0`USjcW_=pTU!f&FTP{zaR7d@(<-N3$!8qbLJ6fVl}- zW!F)6^lB6S-y&n35OHO4-H;q%b}5ZHFm4Qcm&X9kw0ZBvIi}<FCZ#om_RjlafNJIBw`pIMwz}q55K$*h2&j*vVJQ$=<$^$M~S7>Aq19N*`8UlLOl8 zXX++kOwqG!oS>>#XJ z-WIe$IYq)yNwO60IbM_pHfc>LNm!QSXou9C;|5c?&Yd~Ul-aKKDjpwXL+!)qRE<6f zFr1Pg0@uHIg$;#zdo#+ix0oaN3eQ@jRtqzy*Jg9go>vJniZS%H7q|AP1{I7#+Lymr zf{Cb)-)vu9->2y^FBxM5(SVex?G$#yaWMxnod9QftcY(mA9M9)vrLv7weFw@JPFS# zR@lIs2kCJ(Cn=U(A|I>4Is|ic79$I5I#*{$obt$qb+XF>qH<)9J9-y)4n{(TNa| zEyRA*Ft0iR@*=B0DB09BEG7T&yPgEPbOir*d_)(J&V8CzB`7p$114F@2^+=t!)T&W|b>FiD zvFf-TFk!!yx0OIDD{pUXC=hd<(T`KGUMKfV-417JVV&l9XG~_P*}1Hh0pF{XY9_`@wAyP5PiMgR@Rat z?NVJ(iqkY66+}8jglq3`p>$*Z7*NWhCfY5gI~o!mUO;$s7Njl4kT7S!d(S>~>d|9^ zOMWU-v{rZ)a@@_7RdG(UzXDK7XQ7O->tIOf)oR(Ss{!Jyz1deWZG(1utll=yG0cAC zn4sAVfzshlVUBoQHiH0+AQ!MTrTgIO=XPMaGTSFlK~+WAHlRO@CnI)pdA>##hY z2o&t!KqH4q(egH;ypnv)Sgg6z0|9WHeqIzi<#xO@gEJHomSHX}1sT|Qpv~<`y2{Sp zpwffSb|%hi9%B~TG=?#;ta?xx?P@}w$VV6_KO?A9B87>81xm@>@8AWfh%N*zdXfMP zwPFFWnVmSq6!Qtche!G)=hjg1che0Io=9!$H4m*a5o#BPeRM2WfW1GLhr zBg`caL9T(RA=OB^fr*i%nPDa}9xEJF&bmput?@ByI;{TB^tJ?w0SNM_i2T-Nt@mcT zq*fG2H?Xm%F?|K!iO!<6Q!|(vYOkqnJamO_?c6Qw;g)_XJy7qB!V1h`XYt?Pj{qYH zr>puzKk3*=)@&6;(PdOd@m+4|G8J`;stts{mu{B;KwW)f=Q+@>;9CofRO2CiJc)6t z1OhTZtWbGxjY%LfI-61-i$j6J7Shmpb!e>}4`2acM91tP-N^uGXi3=iI8;hKm<~W$ zgSXgSd&w*4<+bNoMu2xAv4is$GyN51n$Gr%?N;di1>_oMMt(~gRCly)gDCWf5E zw&>nbkHy@B@6gR%8kT=LIFPjdzT$h9K78O_y~0wfVuV;ve01;t4fKH|Ikr(|y++Js zylrhzFU%q&RoWcqR3yki)28r!-Wx+o##wbLbv}T-i+Xm|G}2HOl7KO1W+tDGZlki| zFL!c2oAy3#M-z*-#E}IpM-~Gt@QDqff!ti(6v|^~yu}xK-de{7C|E!&CuOalk5|94 zQi+^!>C8F#2Tm9^9CxT~*vfRjMBt5reiQ@cR1ByXkHE&R1Ec%NY53N)Sd-#xj;Cvw zkm4|RL;S%~?UV2>6wx%z<&cJA6EpKwwq6KYAgj&tFzAMvhr%x0yWTw*N=*2LZv2V^ zd;|eQmBKLvB^mMRU2kW1yfA~9(AfKP`1K|B<~8%I@uoQeL`X4- z@kVW&HsLBQadUI_h0RNLvSSA-ta%9)AaP@jXJDK7?cS6LgI5nWaZ%p1%PTxztUqUC zFD_%_i0+#U!4XPZdKwh4=pC(!Jn{}^`;gds35{UFaTIiq1xW<%`}wM-WUC9K zbOhq9G7)qb2)<#pob@RA3(L>g!V2r2u(`UlJ{>jRx~<{Q#0OjO27nDsNc0&MnE!%) zbp;mO#SjD6^~Fh`LT(>2yVdsU>RXS#>1D*x1(;fy*ejJ?^|Bb?R$Mi5QU_C^&gfs) zW!bf)_klDIcK{!`S;Wb5El#m>J6Xl8P5}nYx`cb}Y9Gc{yaNlB&3ub&WJ`4;!vfml zeV7A9FP)eaEb~OGYzQOOQGK$eCbqrWLRfMk5lF7rR#!%G@^nRcNADTlNO49VILR=7 zI1tG6z!J&15YEh|-eCy$ro)XRIM}9u5`p-f!MLndopoR~MuY`;z3gyWEyhS?Q-q!Y z0Cso|`eWt12F@d$Eu|n7L`UXO+PUro|-@t0qhHaxi#m7 zs@Ls(pu;_IptkE?nRm9O23yCX;}xJ2qVBD^r*jYm`afuA#YTx5nr=kR{zy>O5 z#?G6Sdb}Tk#?Nge20usUU5AjZvG-m}Zs|nG#va&c=c=@AbJD$Si$bo|-0Td5$0mnP z-{_JU?@N2hc5l#g3En}9*d{J7#5LZCS6MzCcpdsZczecVv8c?%&WNro`qBu+j^slw zmiA(HTA~0_;ZWomn^+wOky{Cq^9n)0tdZp`eIB|6=68;jfJz-)DLCwUcey4MV9d4f z0Wdt`%Z5Du8RG!9Xe`Z2SrCMvkkB~q1yUtXDP5xQq}&0g8UV5?f?GzDg~PJT4^ zh*flvhxzyweVdfJ3YgjFfjLE!90+TKsm_^Iw6X_ z+Z7f{0UV&rK}rnL5S@mxaNqi_0whpr_+;meE_k5lFaYAlAe5CB{rG6&>IVf|g$G}j zw84@Rf=h<+9l^2QgluEz6chLPxFpewRN4>+;7>DzQ=R?U!h$aKrVTMM;`;`Vj zVAWliJRd)8&DIS+nT2%#j(~djF%Rm^i*c&l4Yb%NQnw1}P}p;}v7K>$3L>3?eFUOY z>)-_5d;!8S%XNb7@5&cXK!$p>rrON+)p{7B)t8QdL%Z6!2B>}41#7fi+lcHJp}y?? z_h6o6P6idEJ|X%rz+~S$b#JnxTo%&F5AlH8hH%2BDf;b;3;`dOaceYM1&#~e8o?J| z3%5n?CVb%%NDUr)o{q()lzNV%+NZC8EWhH>g?&^)^4i+I&)$+qPq1=5h*}w81Rd43 zs1P?(J{XUZFM@?|I`AfAbH0Pe8q9r(-f2AmnO?G7z*PDf&rwx3H7L9I8~WZ3(m95M zLq&zQhmzUU{I(AY#Uy5ptB~!jI@vuO9dU!y9;v(aHQ6Fnppu&k(GT`mWIoe-V_R_t zjvJlee)pCZ8f710(M`Y)DS+4 zunFpzJM>xL#vVZ-;L&D%F}WAvnqLSc80NX zqOQ8DRP@^5=RAoKL^KlrV5O#{xd!T=4qc9cTk37I9$seILVxsHZi$H<% z7%21PlGRSZ6q79Z2g!0Y@(X%36lW_gUlwy@V#IcF~rF;wzr-T@GFW97ZIjIxUbT|UBEGSrf3ACBiz z5S7j9O?MmfCJhmwNsRt|FII62wvWl{DO-Fcho&MJCVl>LvmG! z$Ymdelzk8uGa0i4&I+`QP_VKNHyAI89aSPu?YnjSfKXC(c|hI_Y_ zj;DZ4F+v^3dJbU7tK&p5uV|;C=TojaT>4?HJ@&VEe+)6hUdM!)6ocOMYLG2l_Q;oP z!HJfRR$e&c7ERbkq6+Qjkjx#vDs#?2Iit8_!G&RxAVDkxuSAg?#^}*udKmHU1&q@r za_1&bh&smridvRss2|uawHA*wa*8gvcvEHIuFekUlj(RB;n>|UD9*p1Xk!V`%5kqXQ)ip{%a^6j>ryXRhj+hxj! zV`%yn4~J|Nv*lLlEP$}q2ggzHK{Nas55M&Cr?N7;s(gg>)ELkAhsv=FBtSMh@V841 zDBd_=$=+GWjO(nu4A_Zyson>Aq9`}lNE9U%0Ke?lML8+_=sTB+89t(Hr9s6U%(>iMR#06e86KcapQ<71WV&dnSP0m zTM4;mIi9jhaKp|^4BAVTLx)$Ar0pJ8TIC#~%xuR@6fbXN@{^nkyU{jH%6)T3Fb`Fn zVRLb8P*$W}`H{#-sFW7=fHMnL)t=8NaX3(vM=~M{&11vIkS_|;Itsz zqo?Aqv{Nv-WIL)46OPlh;vOVHloe6J^tv9~+l176Va`jo92Lx584p#8iulpVfNhXP zbY!$vSa&mq8PENPrkdCzm0Q+}KNBPl@FfnK4^b4m6~}Zx9S}cEheK6VI{Dxy*#7}+ z6!xcSes_~XBrHI&L*T)xNT~TB6`Z+~k3Qh5M%p6cUuAN#4VTh=77gYQH;al)VRDvF zyD0^!U3OyzTRXXuLBx~Sa+Bms%&kL``&uN)s0DZ(q=b=(4IO~IvKMVm0mso_Z(Gf@ zkTSOOuK9tOEP3#8AtJqN*6vVQhtk)WL#uu zL(bj-s0mCnba)p5A7+5vO9Wsw2(`yB#@5IBd>)e3l-UX-$BKpoIElU|*?XVlT?HeV7_TdP3$zXzC;+GGYngW2QG zgCqTDk_~`5jaU6?UoVZVQX!L7Tx4n|D+ZA&z?5D|@hUkQe2!Sv>Pt^BTs}Chpv_?g zpRF@mT^2FO;_2&E%-&cfZXyk^^p(0To_a@|1^u)4j!`f0?NWDc%g#MqrZdMjfELvw zAjQ8>%TaEv7fi|l_E*4YZYn*#qGbWiYT21cuKt3FlGK@oi6>K0B4j5(rlc8G;TL}f z5s33uA0WDV-eyv-xO+Z8R>0UpEb9l+RiaReqJ!t1kVj(U>EkU>{bZq@y;h!Y}}f?;j`UV*ez-l z;^)cZ!zxE3-qbMK)wyRGR}Zat&@t@Yygf(*LCxT4w(;SimAU4$6vZ~U;~dHw#~sK7 zL$N;ZCFp*DK}Rdmr1nkhx#6l(;v~oolpK&ON+W>&zkO&^XL;MI3%T>bslmS85H_eo=e7{ziHP7`(7KCXvK|#pi zMM$dJ0PY~??oJM?u^hvs&2sHo%pWGGlL3jQyaMX69+Wx8;tF7fwowAfm)*izt-lni zBb#s$t)+>>b{q8}nmc+5z02FC@-bUTzKY;)*^&dQI?5ad?MZcIF`o7{fP#UjJmAO% zEVlQxL`8iHFks-9{SlUo!E0^kn*%H$Avy$CAYp{Ehj^Zxn{2B`zXL%yV_&4@-I^}e zqT=)L&F-hKc!YGEG<4AmTqL1nE~qV$A-B;m(q#IW@yKsF-6hX?0m5Lx1W^;dqqyX0l~M;a!S!R?_^pRZLEkVPD)vCA!|w zk7}S1=gPiq?6OLkO4nuhaH5_yx8h?7q{^rt-dE50a2z!7{Y9l7gQ;|(37cw&Y$ia4(#LzOiT3H{b~|~b?Bm@ zYV=jxBa$et-8To{i*U^Zr9d_k2L=c~dp9267_}EEKV2#{lU1^GR$U5u-=`i6NCVrp z5Qs9)3GH;jh#fDJ8AJ9j5e%%w3Om_n^+teJCi-u|yf8|?u-ZA0msA${r^&t`s}SfB zUhM|4lY7Cux`32P zF`rHanJ)2;H8KDJdu>3JdKkHAg+I9Kn_X=Tb_@SmeNYrJQwphZAe?9!Yhh5J_H@@t zB++8iA~Zj9_7})dPrqTzYLHyNDs?;F93Gk4x1HS#Nf-nY#*Y2IgubU3^ddmZ`;bC6 z6)!S@oldLS6Iy&2<4U@Qs=d^M|G=iqio@D#PUr|^p*Gj^u(xPiITa@f?^jxe*%fFO zh?opA<2+H9Zrqg@>;!hEu|HIwjGNgpR8?7=FN6^^H7K>$02++ITwg0Gf@Ey^`T&)z+)$m27Tam+Re!ia$8A!%&B^ z5WfWnK6@f_rVfaN04~rNY&#AC1F%#X&$JZuIdQW;_i?;rU07ZW4MwGU?$`#~c@bQ2 z)f)Cb=u2)rblsNr5RX%k%ufh%^I|x@=h`I_lt_q5k)xM+IHi@S4hPQtNXU$z6e{0d zAR>{zYiHVi85x`pCVI)?^O8vx4K_8(WNpGMuWUA!-o(HFVPx442GYpL1xr~wXgVd# zjqxO2LXIoQM3*07USVlLL=zZktLH#JXwn7A5}s>DvKCsI zAyK}~Hf^Y4S{%79HZ0|P|*(#JD1Hk3S9kZ|#NR<9jPtt{9>m#s{n z1P6^p0pUg#ARk#WGkc$Q7$Me*U@^$GS|kxchn$8LuhumWkz+Pb1pz@IjFN#l6$sb^ z_8UQTXpWdOHWnQfGRTB~SL!}Zkk&*L@ZF>9M$|@C=wTxdN*moPbm7ZibH)U^Q+DUK zp6m}c>6Ohk85U2UU8fKtU-a#!kcjE!I{*#|OOu@ooU~|dqm4zpHaoVea^O~W6C6hk z*&15UoYd*wqsf}31u5X&UgTP!?9Xz(E#H|uwv;i<2lu4i9cYn4Y93gDkK z;<$$gG57o&{Q>nJTd7>Cj^_KWVp!pswB3O5vdbD#ig)tacpnzoBPOToBtE8X&?lj# z4I#Y?65&~%$VK%v(ojLqO%7~Yp@(iY=g+FQ4 z!t&+sy+%7AE{xfev(3S*N;hI&MYc}7&h<27fnB5#{(N)X<tsVrC@JR}Oi1#I%Oq`Y204?#GIAJG z6e6l=dK%^;Z`H^IGv-RM4;dhkSkf*tsJjUrRZ^Ic>&bl;^jg*l5SP-0EQ$a>kZ9fZ{V!h?+pAU9?ih$=pkrj~b9trwEU;08+xMdq!+uSX| zl08z<-9&DTAQfQyszVX1*Jd>+Na`t1Da(+f`XakNt9f5z%|%j24HKe)?jp{FMAB#o z9hw(Cq!y0KTmwKYXda4a^r4tN*M8Efob#;v)DA@D1>kLl$s;Zg`rbX>szgqo0~Kjm zlv3kRRDmQX>Y7KaBrh>uKte_DO#rR3Y9~!4u{*Mx!p(9|y$|}H&)CX_Yv4UX*LmSn zGh7SL)&}vbqCAEfk|mAGKlp;vpAiTy{h{)__Z09lK1dX83?l4xsgo zXPC+8L03woL}xIY;E!s*#(ttf3n*(hYnk}Yfus$FC_GvQ@ ziCJh04})@y^4h#Go1u-?3ONZJ1`#QfuH6F>J(W(cEg`ts3v8A_vUDBvuzqxo&Ugm* z;!q!iv=Le#cVnZutH^y43LKO&+1ShryMydX4QrfrYjF7{D^(Iz%l1eaj5(P1G=mhuD?$=7jGkil#{b#<8Ll|imIo=r2Z zqvw(a9WwDV7Y?zJZj&g~#^Ml1I`?|Efij<4Fw1>!`Mbiozj>n z`Uem;AN8fj7o19Qt(swa>44P!_W%7izxp4}m!IOt-~agKr~T{y^UK-4|MI(^|EEtt zUHses@>hQoKmNS^*BO8Kx&HRQ_|?Dv^4pIe_J8}QAAcS1M_q5eio{;pQhF95_(*vi zTV`83m^LmRzqw!=m_Jl1>?FKb;cyowA0Z|5wO-=saVleg2j}jU=(x2eWt^;W)RDde zEkA6?)CKlj=?(MJvi3y`r27rgv0(CsB1z^t--p6VODAzJuN+9$kVuco~?q1UY95`w_SzJP5 z8kGeX(nC0f(`zemlB*ii$sF%-99S|(scj~MztG7Hc@TnCm}-#oxGb}?NAtDf0>u|8 zv13{vXlYgk#_9>*WuZ}Mhh^+EehGj>c?-Fmh48&+4J9*P1-7k}fy2HLD&CKj9kced>}`{}$1cAQUgo0v z#4TAqiQnh@+toh-GWE}P_4+w*`=0>d@CoP%pTMsE2`tK=fUxr!*fQTA?D7eW+Mj@) z@EMXozCZBk&yIQj9FZ)aAPM9X@I*cV%;OUv&^|*v&nL*n`Tj8+pCB9O6R_w$K^Vy= zNCNo;jLJ{IANvGRO`jkSC&F&k)=7xBjdD{^#F+`CZ2Uo&43R#4Xs8ey@^)rPVM{|B_h1iu50OQGj5OP+>`2L)hBDFqC~+fEln=wzuCeCJ_3 zr0Lv1VSm&n0uG;o_krSx-z`?2FTeV)e~kR;_y5QK`R}<-TLN$v!i~j2aKQlFQ#+G2 z3m~9_b&pTIe4EB`K~KVrvyN)Wg?FvUn)%y>p>q1J2k+^ockR9GhjZaPkaHcltUw;C zVZZvzpU;=yX8F}${Iq|QzxpfR=O6Q@_|?CUKU}t7e$wxK;ePd(zuQ0kUHKDMp;)g6tni#48cA-kG&Fk0IxEq6nD zx^FR+Idf0!Ds(%M>TC|n#Ai7#CWq6@ghS?iA;(;0%!`ctMF_kpC=%FaC~Rk#5??Uq z-M`$?U;V}3@8ACT%WeI)|M2Cgi)~2N?!BT?7p3QKigKeB8*B-_vr_M5|UGP8Moz}NUKf(1-x6s3KzF;*bj9^ z$bcP*G~71($KJoXr9Anx2?3QEw6zHEPdKg$oY zekdQWsMtz{w6wjfwOC_X?K;s&;9{ZLN<8P~N*$-$T~d5ixNhSSQ88DQz~VLNPO832 zq(h#b1>6lU4yCnM*p&O?-19twZ~ys@hoXB#y@9*s32haxF&*UGS--P*E=d+MT!*~x5nK^Jz5GQYZ`|5beXeg5W&k?jsJVzp>g$M1Gu zi)Q;ypg6rO5D^8wce|?l#trmLF?u#c_T9qjWfI(vjj!)#vYNOZO;OzgLORR!8jUl> zgeej@f?~ZovxM#|4ifNEko85P2Vk%mb0A-_ircT@7&fi$TJ&PL&gg#lZQh~c#;Qzg zt@iaNH~-Ubf0sXh>jnMZ7w(S_(f$Kv(Z@G;#<@*yM|HI4F6H5Mx1L*PX+zNRL3035 zQ=VrF*=_=ZX>l(mh{gFi z!F_AqF-k7}STZCOFSP<$Hj0n=V-$$ zkt4W&UE~IKc(sQ}nxL}atHGq|N21}JEC|+Y!QaAwOoTkZCkTSHa+i1q z@|Ko74SIORrltdlRTQm}QTTv2gHC#TJE5q>Sn4&#Bxl*3$Z6MtL!8J27lWyR=SH*v zKW-3F*2B*4GtpUMH4G5PIva8f|C7q7i65;u6FyFT&SiEtt*+4;5dQNZG$X7+Wf(DH znX$Btm(hcfv8}V#!JqZyVkO`lpb9M*5uaDKm|08Rkf)fEDP)=X^o{cTS`YNIB9ollzA(1 zSXE~lpI|^D6ax5KRwhD(vj&t`$GOo<$Iy)W=hA|(wRGR(t6O@Y3C*FB+7jteOJa@+ zn$OwS#VU+vA^kLn=Dmu>NWHhLniTp`C#HP7$U0puf>b2jeKD~@j&c2BlHLdg$3db{ z7RX4f179DdKYfY(&6jVzqu=|&eO>F8ANsqY9*J68C)M;`N-11bJfin98{_lUiy|g_~TujERJ|2KuxZOrvjQYlv>rp)*50QbYbnY*s+fOnWY)& zQd`oNlae~$>#d88BCLKd`C8?aNswE_yCNB&$d}$W9=8%3Ea$VyWpIRE%m|eUjU40-oepdaA{e6G;;m6C&@im zjlD^!!}ZKbt@;A=zAlsyG!h3Oux$u4GWI4&AlpVO*H0-ui02y>aXSj_HE*9~^*hP$ z0Rg0k45NXUA9)bnVw?$=HKO-et=@_%tPpJ3t69)OUfKTjFe%di>F>TZ?fuS|?T>Ef z|Jr_#Uv8&fWkVboSWUdPaT?imk5 zxyms|VA;_V6$bDyRXc%b0HlfOgRzla|3uZ0H!!{fd~st1rYAPcB1EO1ZA;xbAtaRJB4K5IV0CvsC zz%vj9zsVkWT~!6+3~K-StkO*5y6=9@5{C&$9!ZDFaI<`MGd=LqCGc)Om-w3EBxOVm zz*zkvKBp8J_09utF{PG`w6~GiN$Z2SYbFVD!#CMWxSR>Iyr&28bEkJApvZJf?|I=| zVye0M)y@3xe*Go(&wu~Jk3XGX|5N0*ZtVBIfM549?U%Ro_BnC4&rOyUbmlExcCE7b zlwZjTWd?=J4P>WdIO83)$6q@PPVe+u$qAM|@6a8w&2B!HYjU!Ta@bER&<{X^k}D%H z1AYC`4YGge1fuU!NO=N`F;y9^F#R-My2cTRs`{+u9Scxf5b&=psI5u9wt_jpp@o~j zHso|LG^I{idaz zRaBmWQuL)lU=sngT~Du_Hvp+Vxd|7Ub?+oaBXuLAZ2^fK3ux3x6@B3%fwvr1uo3lh zRdCs@-pF>#3@PpU7#n2WpY$^1J@j#bW)Jf{Wt<}}CklS>3oi0DG8`&9t@K?;G9CwM zGU1D@LtZLn5cUE9JT&=->@g3tM|Fj5NXk#74LZ~@VSq7p`uaHi&v*96pMIZzm%sa# zcI7)?!9Sfne9Q_r{uQaUU~zl#fIPhoK_c*<(_jXGpajc{BzKSIBg#QqJ2A2o&$7E8 z(1=kXHW3vt7|GGrGpV$>Z)^`>^&1)FfnT`b0(`x7%MGZ?5wkzQQgvQ{<>SS4CSLaK zNpunFSCdr_Jvz{#ntF-4nd{-9yW#0QD1JN0LwlKyg;+Aon-m;+1n-OA7j9N%el1=3 z!^imNpZ@7L{>>Zvy)WRu_R8){$_HsQGwPTN^+zKnx9038l|d@j?m$3M>$w?Wv4_~LEMO+*fw$|qB}pzn#6Dr`ZC{TcCTyDd_NaT2iaaN9 zaUrT@d$%z`&7Vo&dmZ!ZjWh(u*Kp$!gi_(9 zPozzqkZmFb=oZVhvBq;*c12t{MP-1dIAoO1x<@BuLis4>=r1F>3=W1~c&M`&G1VJ) zk3DCrw#%oLu{ zbH>Tu&PI;#r{7~aRh%)|&CZLs(RTp3h8?=m=94!w&zK`Jb>rp1f`?HXtH=kIJOUMT zo#i96iuiVwfINU*xwi{uUjRn8s!1mAE`$x;uW#(X`{l-d`RROX#rnN3-k;voUkc;3 zCK?Pj7}*j(P+0`+!ZzEstEgxAX6W-V-Ggof;K%%U`M zc^I3jWdyqTS^{Q$qp-3LJV=J6f0$9D;21UFLuiI}SYwUgU*FV!^P6urIp6u3eLXDv z7wvY(8~gBjG=l{Y#jXI!n3L>7?6EfG%Ce8lp>?!b8?5F*9@dp6=~a-*`6#5Twv=&v z#8s^2ea(~?Of>IWoQH$7?_%ZZw#Dren*C38}?6$h|H`$7K@}v zmb%Lr=(ihdldK-@a|mC)C_xwcsIFq=es}K7h$q$>U*1iah18gtQJniyKWRl$EzoDP zTY{kKt4kuTK}TZOoIO<-hDfDjdO>KZ;&IXC5Za$hJZb%<$T+-K~bqN3Kl?;y*D7% zen3+aDCta#9g3&F(c15$m+fV_P(C-^BCPKvg&Gy{V!+ryrE`I8g&fV$$zc(_CaOSX ztxSnz1KWl?gD%s~#cWQn8fQKwPz1TPq{$`@#xZe{Ep>8QEwllEuJayGn$52&FHFj- z0M{nbqu4nW6cRvKWUY}12>=XrY^G--bKd}fK!3j(TV8Xfi3RFdN}6=%fu>nj@xoP* zI2a))XV^DqM>(HrX?8~R+vEJl=O5p``>>z}VLXL*DEmL!c-K?~vt{6y0?v9$01WE_8UgN^9I%gi- zZF2%QMf7LSG5Q=O)goi0zD(;yHE=`*NxGD%0R^`rOQ|`H+oS#cPtR|kf3i>Uhu4m} z4_>@zAZJ4*_k;qFT?F(E3V#)*kB8BKnMM>zcDiR5JmmF@ECGDh(=fdwcUM%ek)b zmdj!2!?o_V61fVmamfUR%$-*A(>u7jTy)pnfT3dgh9Oa}(Ip#YiN3g${$|d+k6yR? znfL3c#TebE&oS3&2u-yzbH#K3*Sk6(*~ijj-ZiBQbhi`62yDx6PB-`-6R2FcV#!{X z!ney|HXS5t`~a=yaecH9=b_qxNg`cd6n$xzLK-M}N3^Tt)^xe~RTFP*4cQeOj4X*& z>Qz8%)P{TMlIdh5AHK?g_IrBjyGH}lc9^=@4Zmy$%VRU0)@RpIqd}{Pb04+%FCU+O zdjDoW{rrB}r~UNy-KXdC{Oa?4^g6!$u6{l;$th&0`$Xe%U^PKIMy=H-isBOM12Q;H z$<1J>Zw$VGmw}Zby@2WAjKnRDm`)YVKWlM9K&e*`97<)EzSBY~^| zzwKD$fO5{38;;)^gL;j~eSGonKK}gv{kspJK0d{}H}771u8&^7`+M8J){z`fB`C1& zfLLcg1wcuZF1VAHpasjomeQs^QW!LF#|XHQQcvguqe7m{Lq@rj1g(!DX?ZvxB}d|ek8aMA1ov?} zQcEfMQjg#qNzLVW7!F3V#7LQu7bghq;rNQvMa_TFtoe&i?|y#utn}z*dwEv+l4|i- zl^8syhs^~p;U>s{TA@4_3MK|%;?0x1n z=bvpNr1R9kzSv#mMdwWpN#a$Fm84xwwg8*0x5bme|l`u)#u*FGQZyjJOb z^wPbI687tn;=-cdFQAH1fHR0c^Tds3C_qzL+no~n=2C`jCBbTg7FG{ho?^L*0y6}L z*FAv(y>9g(oyv7rQJsBnm<2jdn@k>7J#DSuVx{-dYxeb7{+?&~=Tzw7AGMFEfidGt zZ%xk9-Wx(TQ@jutW{4RDOe4r?%Q+RH@j*^CI+(a@ibc;zbXMuE4@nZjJU=<0^- zwIPeIGHS+cE%(c56v%0PLpE~`vvXdZW6ZuH4Y%I0sDbBFZ|uKmNt1U*7MJUt^*E@zu$wN3Y%2 zNBR$+=V$)(PyhA5{uAw(KYgB}S>!1g$d=JYqyqC`sp2ld_Dst@!4=*f8UAa^#xSh3 z(p2Gs@0QlZklmA!kR?M5y4I2lrWw?(wa?6}go`P(=ZslSynDZ=32U-zi4>N3!i?7# zlcCyqqRlIIe}JQ5*BCJyGv9fo@L0Ip3n~olfSPv&qrV5Ga&(GRA{ZsdT0L-!KqhJ% zgSd7(ZP&eCeX@UfO)@TjZH(r@%lGXd<5lfNC|TONqK^@jGNLs!;|-G>i6E&N3Yt;qQjRd#u@|35rV3#bDVUp!+C-c-d$7D z(HZ-|mesN76rHh#ScMC3tt=dusWV&&S-M^NzTLHzf-nnSdmP=O74|CNbVZrF6yCivpT2DM<#TGhnlKK}3TXMb377Ksp(k%7wStui;go zIqj4RnVUaP6b1ed%I@H=Yinz{*L{EY&-P*O*MI4>ag}7p}7G zN^7nYzE+`;v>2_bNM8>p6oEs_)OJnY0+U8T6TINVdZv+;&&(+rbm-c+pWttXgGlwT$O{ z(S)XF0xrp2Pn} z*sDDuwU@=LB>B6VMjLhzY~y#r|J?i=DuQ^}$&JYwfL5t>u-)W-M&8r1 zt({dxf_a)YTp*A^Ig{iNB0n`px=hLoOsBr6HlX%tGn_wD^OT|lu>QnH z7EE*+)%0rAAgkbnh-B=7(MT>U=UxYMae6gK7417^WSLiI3(a;iw1{QnP4m{wXIvo? z*DUuZ{1-pHw@xE-#pFq!~F8THkw<#&SGPZ!VH*;QiEEVOxhSSYwq(lDQi<=WyNY?cD$Ri@iEp}tA{muM`cke$vzk6$Mo<8h<`T6<7Yah@@ui%Rh=;u0v4z-azaZ!RA&}J$dt<)m5 zQ?t}S?J7GXZU@#glmKm{qSYh9sCuvJZSJ59G69@7gZWl=O(S;{ZG|bXD%H<`wQ5*m z)IILeGE%nlEXxf)=qbIPrDIjJ*nCUqs+P$-MLNewx|XXUo(^+I*ZHJRAjzBD){egF z+=P3}s94E*RaNXzr_8)hbLz8~nB?rF``%{z+YkH4{ipX&@#fvz*BOlTl&6@?a(mL`O_yVATsk(5vT5uRa19 zE~GHfn=Q4fy1bl1bmg)k`^+_fU^_pKv{+d7U1iI@u7eC75lg!V9H`en`OoLP-VlHA z;(hZ>`w!(yKfJ?;?u;T!n==vr)ecq)Q{n8Sy~==>2fT7fs~bMztkv@HRCFE;g_FK+ zLAqJXn*AL7)&sBJnTvrHHodq^O*WbI8=I1~`8{G*aoElgnE_j@lpS5L@(4fV&4B4gWuUj`!%e2vM4mLZvA3-*utuxV^=LvUuf%C<4j(TH zM<1WhYpJqFuiCeer2i)W*|9j4XxeQPoRkzrQ;{)IbaX%1)3`z{{>qFx=aLdjUBfTg z+$zLXC$CEj!~jHBM{4c#psaO#)fKUJo}O1EY-@L|2fy+|MuP6@{qbsh_&iyl_L8%M26EJcoG={7);=@|sno zon~<&m?3Q5qG}=9R_ZeACzfX5KfB1$b!0*%GL3$a6DhlfRO{+-uHW$s=2b=9e45)x z*Q5bolF$IXA-J<98?uy(@4pT;H1rq!tmp$J9aYh3r!^!mI;2Z%3iLfi_D*O|@l!LP zlm-ePBV5*L*`ya$-M{w_7W--c>Ak)E`21>t_t6XZvcUVfT)(86fZ|ERYdfpcFUQP- zKgnYR{!->SX9Z<55o4y)wIA+>eFed4)iKk|fueq>O5I|9V)o=|mO2)MnBLAjJy^(z zy;@q&{oX76&7{g6y>8z;&wrC&PewZg4l1UXnUoA9LZn&B4Nt?&S>e7u;Z2J~&z@E<`)nV)x8@!f9gTK7B6} z!@>vedQUkO*BSA~MpwS%xsa|c2Q9VEv9+|0BXb{o;gikZqL4=R+{zAhx(iI<*L#uS zQt&O&Y%sodsvH+q+Q7-pT3S?U&qy%>Gx<4TDVuD`l))$IFebfEDZOV0IPTG^j*LB+ zIpovP0_ycWt!WjHInb*f%PX%}uq&_e=pMaj_wBZQ`HtoWy`@JJJ~{1-pb5u6YY|-| zLD6d&szit#rw!cx(dt?gLi=V=mrzq{6V~a$o0mB|n(Q=-77>tL9WCIY)IP>!?%pD| z?RU)UZ|man=*4@U?K#<}>PX zDVvPkPoyiV5XLD|Gd5&NvLag0yUygplC+UXO4?$?nu1XBqkMVa77R zCbuP(3#XPq;OUG49$K#AB*>ziw3EN(Yxo%eSm}z<#6l~(Q%Q?2#&t-%Cjx&{nWIOq z-D{6?me4wSw>m!a{@3iOGdmVJ#L5y!S33h2>*#%Z+P-_%6u_=K-+2b;QYV;5w3(A> z?Ao23b=y5%62{Uq z@-Un92N0tS#%sosp~KzSdE@X z@_El;|8=~38}{kxCwu?OGkx^h-P)tSRvB`JP&0bh8hQ7jp$&x#BdowihqkqH>N1U9 zQQLW#L<@AZ;(j8<1UazOtCNMsSbl7CR0A%++qP|_i#|}dCSd1hx7-#(-SDt%TK<;xh z25xVE`QA(V=#~5SI{N2H#MD!7%ncDU9h;c}KI=(W-HbS2 zh2(mo8D57dDn=x+SX8N}B>`6-#Sh5Yol{18uB8>!);rhiNm}U^`AiTM-PcOOc4won z7vEB^>@+)^XlyC66H|L3ZMBZjV8V^p+_Cqb$abRW9_gAKa|J2HUuE?)QZ9^|;)3!r zHo$uW=M~+sW5#Juz>RRJ5I( zmx#c11|-Zl(ClOR6j{5nZiP=-+j34#6>C6oTT?&{bH?6LdZ{5f56{y)D=F6!`e72~{) z7RXhtR;`&Yo#OF0d%F1)1ZoW7jM;KcWK@y=&TM&HjQ^3X&f5{!rf#`*~@G*OBK^l5X!t*i8 z*2#7z*+};yRyU5n^g;}-yDD^x|$r;a#^(|(au+jbSB5N9os0`p*)1S7sCrf?L7_wjvQ0dX&4Jq z2O*!j*`5#<`#@lM=FC;j6paD_f6OwD-FNENe3p^Cfs2|@s;%$AC#aCQs;4q<(DB%S z5#m#NG%z>0V0lV&>uPy0g6ZkncY>h23~6RQDFNmVZ|yKU0p0k8hbB@-&z8y1!pvEH ztCNBrGjCki8yY3ej^80ES~;GK!GKcamQyJWBXm}; z3yI!<^1J&Ucg^izK7V}TeSI|$`q+j0_JRI4a5_1?rdVwa%phbzm`bh#%4M`DIn79X z(0X4h%_wz?`fyKWjSO0OmJZrJyhgraZv^t_sMN7q)nx)u?zjSax>SNmGURJg*!SI6 z;SNDO&ONV8zUXN73I@3^+se1OmymJTh*C`(xosI$M~8sD9iFkxTrUn_cq$YKvHaL1 z<&Cwdu>X~Fc260i39}X&C-r;i?C;*b`|#71@%`S5`snq0d9+GjpDSkqT9Z>Ck1}1N z!r0BmH5E?ApE@;D>CV7<&t(?4Hl=3b#*^^{B#DtWL(>Hy_^K5CrtSbxoo%O`82c;p-$_c@K#L0>DI5F~!fao2EXMtUXGmvUXAT zdASTV)r*XrFImroqdw7r=aDi{4SY5Y=?yc!FOF6pwypL2;kDcBqgU?!M88ta01GcK zx>k;=OsDuBG5S^X>B&xQ7D7pOC6hIE?=yOoK6QgTSRPCBApOt>Q;MgbWDBmvjt&!fHPgW4-3OH1vY4@^P*_{WD8akDi#C*Af}fj) zxJ;F)Dk#sh z4j@sYeiD-`_i4r73a0MS%XWL3U(dP=f4#X?v}3(5D7e!qm}`E@sh zMcwy(mwD4tCWtDL$<<6ZlPJEkn_FYpxNYtQ*b#O5*jr9fKw(@4TU}d}^hhoZNt&7o zuSU-Xb$b*hLOaZy*68BQM5>s)mkoVU7yj=*KhCH9FF)Ixr+D}F<0pIj>FLw+Pp`eV zk6z2~MMj6r1`4>)URqN|seS7#CwJLxwITfszW*7Q>#^0G5wx{i8a*mk=ClY>PttPf z^lF1Kq0);L>OsdfY-keNigh-&s!lXJ&n)-Tugshv?yVEs%yy#{uum}%gEk6TfuWnR z-orNs7hwZ5nfSgP5@ zoJp$K0$A64q|t@IT`K%(S}^9HYUl2wP*vsZWUBb1<3uTpB=6PoaozixZ1qIWVh;6M z_afctj0dJ>cCs`e^a&y3-9Y~D{LO3c>4Vqoj!XJFcu|j$bKg>A$6EdDu~LoR%_g2L zirh^GgpkA#=+3F{mWiS7nUH{b^|Q;^8Q?e0E!QI~XGYLasswd}Rcr29YbVx66mRF# ztG~b{$*xY+L6%rAAQ_n91md_mG-JjarTZWPI#QHcmKjAP2J*MeRq27WE55g@RV>3} z$`R8x@qUVwoby2Uc7sH z^y^W$=1jMd8dOcE8ta4 zIGOiWk@C4noz+r9PI}mB^T>--exqr6ETRzzmzMBwtzfWh4zlAlO~g{y7xi9K`e+~D zy#KIYtNT8B<-T`eb;qFOIcoD=5`PjSmTCjyA^oHrT$~Yr#}rJIjwd@)$ae5*NVU(2 zRd)E0>z9k?Ve}>qh+|iS``G%@;sYAy_ERJ$WKQ>!FMNX|og0UNe$sI6?v38qprQ-? zsPZjJWz88=4|sizzPop$J~(A4LFtw7eKlq)R+N;~)9OP;(^%O$16HZfe%my*GD?Dd zZ@K;L&u`arJU@MolfH7~eemjiLpJ-j@k9AqT~ZiM)2YZMJ~=9zHfHV(_qA-zp;|mL zlRU6E;R6L9xY4g{AeFeRTO&u$fMJq{I0@Zh#}PWzg>I#VOssU)&^NcWSWmg1lYS#) zvq!Jms{wDOaU;#vE~0?#wtBlLVTrR_L4nSvr%n|ypLw?2xn+A>n)ASswzRfZO$_=s zFV@;;#nif(5y}}c0YRTCkpe@PQ3CJWLGPbYITu04`i0HTm`+=cc1E&NTBXvbxiA5@ zLm~q+>oDVan00szY%FbgwiKfHLlF2JRJ76c&==774M3P>xN2V;{MJ=bHTT8C|Fn3QH zsTR#w?l8cJ^^&X&{zX!Z<~^?ap%pDBvd4-#@?=^fh=1=9ClZlBu8iSsM;J8J`=RJR zSiJl2_R2Wen^zTI4_>}+AM5z@N0iX8WA6k8lN2vfKk9TG5!d)6;kX#`oW-wc&+DG9 z6B%fWQv>IX#+H1b94yAMk2Y}E8RcuP;OCDs!%b&moe<05i|cv;WO4U>!glgnj64Y{ zGr-lI|4TpH>pT~hu$a@ zKNT6Oxyd=|7os6rqU~JoS+**IG^jDyd$GmsMuUwIUPUwaavRd92`41XL!p;~PvF1{+fMjqMyGt%-Bw`0?YXU*5cmNqX?g-9MvWz3~AD4VCLP zi8IdeEPdxVOdLT)%`;TuQYW=h`?TmB*}81oBT7Ho#VC1O)ILek2ijflm(MEBN^4h# z#t#JEt&bA(%b9bI`xAw=uqd8*X}ImmalsX^JAZMVS_bl`t5q{F@XbBzSeXcQ5VYHPc7`(_d2nrlT+FlSj><@09o%kF zEqi6bc4uIKzbK`(dcGJqjvP5MJ&Mh&3)s@(fSVeqOIPD^|AJ=*Jq8Y_Hd)BAoR_Jb zN{%(p%rNh0xnQF7}am;$CK$FwUQ8N3o$t;_CL z)%@hI;|TfT+9Q4R(!IQweqq$j6@V|e-nJ|lvO=<) z!6+!h&}bB(soLD547fw?b4n0*LdFh_$||RWCMxA8}HWh+aI4k zzJ2~qC+5-1_&w6j&fq8qU5#=o`BC>(CRtTJY?d`y1`4PJDjpF5AHmIffIDufEF{al z&zi@Etg8~caM?(?<$m?<(XTl!OBtt43t1v2sY$xG*K$3@dp1HmqgXu)IC0*!rfFkb zgD&G#*Whn40BCkC6=35D;wPQ5{aRUSIk>@wO559|(-u#A<;_@J1&t?Fed0zq$L5%I zwtRnM|KSgxKD~c>|KZ)AetEJVUmtFJ^a{Qtw0ue8FOA)k)S4jCU#QxVjt>B80hE+X zhWQ{YHy{uh%#e}~<2(rhqD{(wRK}c-#)}A{ zugu?oz{)Q9=uWA8PQ+$oDi=WG_T6l!n%2oxTlTy(iTCN-)ATbK7au(jb}u_M<2of= zS}gT#-kgE&ENymg@X&Ut{2QvYd-dTTd9ok>e;)0lm+*U!wn1DI3N{iK`7iBckQa>E zqTzk{rgwZrkx47}T_a{8|K**T0eTXvwmoVfq2LcN8=o&`4pIyoBNwkL@4C#P$w`uw z3%y;tCkfe3=T*Q>8&bY|lhwRhq9Ktxu4lG5R6K!d>2#re<7EhFG4n_%9VYiFGu68K zUWgJ@M{eqq#B24?e=K@>G|W+`*)xA+fUCV34i|h>D^CH`_2Ao zzy0*|d0^^gPU*ob`aMzgm@)v7%LccQHPtw$jMDl@GtPA-Q*cJ23rVmsZ~(C}Y+Rek zxz6Zk*HIa*J*{ema$9GkwE_&FHkUN`g;P;SbYI9oLgTn!XUEF$kGIm_&sh&D5Du4B zW?74bUR!_yfS}A$B>4tT*(bLfsv5})UZ^dlaxt_#Eq3*@c>9Yio$S}my6vFS+||f_ zty;*3-E&HB|M=0~Kfg9{{NQzanLGRZ=7LY`)}TRy{}FnCW}ma`lWPRo%f*?!t#nA# zmgC3yV-L@Z>`B$`qs9@A2qK*IMmaNc)zTzcERQxeZ;33Y4vslMpkurkj|!vYNBd%l zl{{zm?mI;w@!3(`-Ed~^3T`#qO4W9zqLUz0=E%0XGL*|`*pl~dJw;a+8^u$R?zLyx$D=N=PuWxU zRE~0EY__xzIz>5=*Q5t_{c?&`aTM7UM=ZhSrAU%cSz?x5i)ua7gf6Ebi`;7pzV~AN zMNHpV+HO|cp}jv7QzVmT$4wksnI{WJ_pIhYE@UAl$SIPgo(3t!ZteOREOj@q+}2WW%Z2r1>vR6i3EE3dJ+{hT}`)l`|G z=!mH$#zi6Rd^?wENsL2E?x;WdVf44ltfTcyoa=QU3fD!mMMiy5JpA~s=6?bOaL(iCvE0%CP3;Mn@)o7Z#q zUOUrXoY77ujkDvZ(krI2aB@4@6_INcDDy4)9PJ)V3eT+t_^(xRg3|!FY`{KKPt)8O z<6q^PplJ2ds`oQ##nrSgTb^X4{xh8rh?2bXvuLl@_Px){zoSw#dEvtUKRFjZ2>mxVn4Rt944v zX71A=?8X(c&#iavcJy8PaN8XQ&6#~`&9jfDF6n6D6l_k^nNwu!#HI4G!|1Agt=!5) zQs6!)!j^nQ@28`Ghv$p-@Oqu;u}k>9I#Y1qm_C>e+CYSqT`Y>rhz_0q z3PGn1@QGYrotBlM-YqS`VjS~imW3<9I-#XliW*4O`kXpj7t$(xW)|DXaY@C=SD!QL zi}$rJ+51SjdU1z4W$I|gg^ypVEv=L{X4t|&`O20sr-8JXHChcIb0<@dNcrqiqhHy> zeUWoN|BpBl@>TEaUP&x?PTjnXH150bfBfV2=XH&}{px0+u+h_Y{{(7HG zYe``$dNzLf*f>0oMM6%`w0U7guGH}vM%pIM-h%y3aN&45GZXphoC~b%S!RO$ehN^0 z&)2@n09PlMtyVKLzm+D;eqnf{mbA)HmpZe<4fE?1-?oDa9al&jcwNN{>*zx<3p97l zXE8rNEBei2Ln+xb0LHgaO{U85epZ@scuSMe5 zUfKsQ;P=`&+V-&k1CISq2)_f_J5x@AcdpQAgZXz7#?Cb58V$HpOMT>ac~%;tP^(%| ztAJz}d*zhsa_Ep~%X+OKg6e@xsG|ly%9P?os5|c%rx95a#|sf@)OI!I5ZlVUMz|TM zX284wvN*A?&5z1tv`ysQmoOFd)F&qLC+@DEMn z^syIbgOnuah3jwwpg7CBoYfE!&zAg18yl?yKHumfW4X|vQBNHt_Y0U(@5NW+x>`nC z!yQTNOc(A#bTC$$W^Wnhw88U0m$Ix#i0b{)s?WKD@2qt^-N#!ISO8T>)qKz`n9(bI|@@Z+{Nz`+*-QuIg1 z)>fu3W}M16F}i}^ZsrZ-d?oP?v_0iIH}}D{lI1MduYfL1H7&DvZMp^*UgpLMPJ;xI zWu4AOStB*@vh$?qLsoR^arfiWpMH9CRq~(y)!sZW`}FR$qwu5G@OxL+n#W`yr!d~! zXYFNdkOX$}Om)yi8CUSiS{BA+Ee}d~YE~wNXs*kO;M-TNJAv13K!ieVA61&&Qm5M0 zK%`n{g?T+Mrt0&aX0qwj3qS*tb?K{mtAHpU;V+}5Iu~)3y~7bNZJE;e=2v~uM*r;)Cm+3VFJICxkSyzQauHMoQkKEa?MQNX z9d;~Xl6{$N*GmsPLT9b(fXbwZO6B9^6kDqAjZv}W&9uAtk%jl21T$SjZk98S7A zz-pQ=KBkt($RwGxPCsB>y$>BS-GFtMEi$&IdcBxmHhq5+gE z^91K*^|@Oj$}-Ac7fgaaGgyFVc`=NLbx+Unt&6^0AJbp#zt10etlxQEAH8<>XZm&j z#Tv+`rdcBkU+|n`$>RWLzT1jzz^*kDYtCffB*AZ-y81fG(Ucw$XFT!P;KVY>>JBO< zW>j3GLyuP(smw#b^;r0ZTsH3eZ<;MjI#EmqeezZaf~0U1q*2>Sg}>2mBNNEeWnIM& zl{iS1hyKjkYfoKi*=nB~&TEh_9_Y(Vy5SM(#-M>Fr z)X=!Me1sw4R+)${*Wcfv1kI4KOPe(_@~!tBm{jm8s6)$WmU{9LvoJUXCVljkRjt>U zMNQ8pV^(}fSq&R-ZZzq%IM9U3aE{ecn-~TtS+%yVp?&5wW-xo4YprF@5qk;M`uoJ{ zU*VQ|`tg@nO(zdtxo@868~e0Be)@b!vN)-(Xj*`t$k1I*2jFC*p+pMr6}MTe64=vy zN)($V=#~|+egSwhREj!n)gD2_)yu#?2Yt9Few4I&3r!bIF^?kWQ7gZBiu0q_?|apx zq;x?#Ljp^ua=*G{DkbYF^qS7Zn;s-awjm@YYT$TG)Ks z$WRr=OhbEH5x%c;OSGV@mW|2Hd`R6EE34{WGA~e6O+Z?&Suk@YH+PsDw`ww@Yv}_L zlHL=B+lOSFOO1i3q17kKC3y2gdP~fPQT(ZL!B}HtODWYeRFk#XK@4$F(g97Vr5U%O z!JMgK@kB+oYRf4`>2s!*+U`LzI9X2Z#TeBWjM9_6mKuHZ+P&LB>*gA~RB8{n$#_xHl|n+A3X3Oi`6g zT{X4Fo~luGq&qYq3IE!X80oFtGi5BaSwdg3Q~C=k;kIgX!`yWJ?;Efz5Z>;I@rAy@ z?DkPcYn!SaYnoPCYhE?fF&OOkv^GhD+4`J?3Fvj-e*gaC6+V0N=TGN(zj=-4{OARI zx&PKLSqKqo<=k+IO~WVWZy7GR!B;0NXFNdCes-#d>a5yO^B5?roat+$rfgZ5qfHa|`G|=-WGS>pp#~SxkCJ zJ-hPhiBpWJT^W7!OIxmItV8m!z|f^*0$!)qSD5fO)i#u z#95s$1PwBfu32_xth5f)m}l?VEPU3Ms>oW^vg$rjVjw_$f%jOY=Glr7`^M0rSk**O+wJqaQ^`Tp2&HGK5rLhpT_uk$HxtzO(|Hw6n(?lFB#$&quF1 zxe#9!3cdH;{)2t^V85WW{`Be9>9|KP-wh7?^^O|idA3*>bIPXS*SmS1()UPlda5-> zmJRciImA@pRg|2N>dh>tO+TfZu%|7K^8!AjhemEuHh~SlzJK@e`Fj(} z4_?HZnzMgB1TQZ(+Ukj{z?QmG9b*+e95B+FP!Wf3mRQLPhH^=hN_051YdYAsG%1SNb>2`L;n2Bfv=9(kQT+v%#DF!Ppl!A?g8 zj}wf_XB#HdVEvnhSm3DJwKt@&M>62uqoySQw>xT zqnW`K;GCN(lpQX2d5^s5QJ$U%BAHzC5C|vwFg`>HR7guY7!t1{vZUoPk~(BDj~TO0 ziF6-m{fEya_>rc#Sf@T936DB5foHD!4QL@C`_WAJH?=iHfb*8*# z8ReSNPWz;j#klz$?Iu+)wy(BYu{LHZxmLsNlQGoD7|544`B@o#)L*=xqte}N_!8)y$AiOHf7uvXJ z#p}2mg-)X8W#{3&HpW@J*upbyt!&pw>Ks|KmQJV(I8_n?I(dz&^-%dHCTgKIV!wd% z{8ltIk6yNKo@V)B{GeaV2zViyH*C_oQ4ZO>1Ink_b7pct2Nt6ZTbvIm19jAEYQR~|vPw|l|&aKzip7Ias) zuoW?xl%KY2Tk1K@u5pGEG0G#-u6ysgQZ}R!IbE&G<@KVG$(prr*CEQkDc40FyOfh_ zzJ}Io8JG|n2kq|XCAo#9?|wZ!_~@m(Ti$-91@s!%rbNz5`Mghxl{pC|W2L{>7CM16 z;g+6`mW=qYa~kkrD-+yo-o_F-)t+mcg*M^D{f<>ooyKTCnGI0%ouiAXA0E&HR(O2 zBd6Mh&ODXc!P@s%bj;K@TrhZzFpqH|EHGeX?GhvQrPT>Zw}X46OUfTACvlq zyR>{o+u17aEs_;mZaM4dwKN!TSClcz0tybCfG8AKWtfjztgU${Q)lk`WzL3EP`mrA zQa7iQF)O3L3$^5N_hdp*U5g9ZIGx?&{)+Cjh6G5fQD*H|d%IAcnY{yx_r5B%(Y{xo z)mu#ow#{05=yu6%OeAlzTqx zkFSPS9=vQXDn?(t76+1fZH0~ke+K2omZI^IuHplv%^1_H0aVjEDx9E5mPx#MEx=3p zXAZ*8O*fU-h%Sr28{=7pJK~Wva!Pw9y_e8LGCvzz+-!A@nNHMdNd~{&Qg;Js*iui;89QnshZ*`fNQOpjbzLxwRO+Tq zyynzXLRQMyZ`VC8_>VvB4?pgwKR?XZp6sKS@I}Gs^YLifY(>atNz8?dpkv*stFxWV zed3s{j54J6VoW9QdtAgaPvqTFDTVTB+MwV=1vqxe0aUDwxcs4qJ7Pff>0kt=9ezA;ib?6h7|iXkwPGiu7J?HU@Y4d-DyEqOsf+NsCS`TtS( zZaZ@&$(1J1-8z*H-901Bwb1u0n7f<1xdSuvDg!%K{#}`5iey%)-oCLmNojINaON_Q zfFM9ERVQ-?BeuKQTHnW8TG*j}MpLlm5YALMyAiCNgqd$ua@#3U_#-AkGJQWD{moDL z`G*hj6cqd72X{XqebWlzG>lf)-s7tFX7{ohAjLWN#a61B5PxdvIMVi_83RJ5Jq9p| z2YEQ!sv@mbKPo;G!vf;MuV&lLu+|1RsFmV}3TJ*_RPVU49nSe$4K>a4fwO zFQ7>Y2+c|K^n4emw&XE@_%c?*z-9xSx*3nu4^0ewmr@?z!`42ts*TG}&Uopfi!1w# zT}Dv8;}U_5^KjaPM2YJ|4D?!cQeYd+XV$=3G~$Rd@jFg4_$@ zs7@Hzj1EL&3+)QO1DellO&9e!p&DFGucq&0bOG`A3EOC#NGQ5Uu3EA-_rl>b8K8!C zr|bwwMzvbUF<~&MU;_{{B(pfT?(G;ptv1+= z_TFRdwVQ*Wy-}%Jw9Am)4~I=^qPlyJfg=3*?(>ItU(D6d&b}{xe!u!$3Gs$6zrN&( z^(szl_}gy?tFfNB2Mze~+OUC6;4yT4ka2cv>WZ%sZMjH0wZRZZPPb!9TDA6!zy(6%94mgiNB$ry36Kn zv!iG;dqN$J94wwu(=|rHd@y`qun)f->e`7O4%nZx1z1lst^iHGX9mBbCL^BRPG9}( z9>;?61?@1FtO%?U4GhQLBsW&9iO!vs9Wo+DCeNj3J7$OnbOkP^<4m__Pb(3MwRfU3 zSP(w?fY0#Sc`6J+Tiy2_c^0l@OJqPl_i#Ps(p|9(q+i+#*T5lXH6WdLDEhk-661rT z)E4v^^~%>3t&yPfE#cmeriljzJDYma|Ud&yCVfZ@Bl+$IoO`7pNsPyhPt zboAE+}N6m9_2SaUG0ls2s1Oet-zF z#e-!9-d>x1cbFx$!$_W-Oe@Yr;C|e)_p|T!Cg8-e0llwd z4%z8G-a$n2&M*SbxE6xiyru(bDa~HVY)05 z5XkD&RuoT%IXVYY8)SxzHe!&QnQM(Nu?I(>Stn740hlPiTz^Q7XRk93>M?D>&J;1n zXqfaEa1qT;Hu3w}=pR1i$3Nw}PoMSkn?L*Ieeu(~g#_FBdM~9)_~>EN+IYi=Zm=Wp zbD-9t4_TeK&xY7~uEVh=+z~YJX3J&B$C>OZooZ)HU^56e=a_Mw%>AmR4Ri{q&p4}! zb!ae31NTA0mNxsTiIoORtr&AA(G>Lg5?2n{t@SQD7D8O3CD#4Z_Xy7IG)6y)9Od?; z$wD-yBV!0{0it8`AUE54QiahOz4OjyDE~&glR5tBQ-1#Ww)98W_)wWaXg2d5vW^^04iDm6VVRj7~IF)a0peTYc!l1U|EEDHa z0bSdn)IJZ2fD_Gbh9pw3us9NkFSq*(b?n+HbD-VZ`#_%>qk)JT0EDIMq}I2CWQXI) zbUHPt9l;H>O*TS}Y&%SgxWb`hmV@R2{_*%B#a|D!TMSBa1>D*egarbQt3xdBnO2KR9WEs5QCqS} zkxv2j+#?e#RYNEfByG${Auia*vQOS%elFZxB;%56O}g0lyJUcb(I#vt8BN)TV@U#y zsfX2s6a-|ti?U#pJW$HHPXvGY{PyFgch?C2*+S;U5AR`Y|CP0ZK6M{C8ZKIA$C?4% z`UxSe?gxAV95rIEWphOjh+S!$ODxozxo4BkmTI;=;f6eL4T8JJZJotL5MUjmk#uN@ zi9t8gNap=cDp!3Ezo-+{uPfdl)Kt#8Du4JlZUie-&t;ep%3u&hkv5s=v+X2q``}M^ zr~%)xNFAL;h%amLgbe}^zaGoVW}s7nF%QC;_Y?1*^y6Qi?Of-zQN%Zzemj zR&cf5&jN`?wew*3)^S%H^E#UJoQipxlk~M&#sDK*!hAt4m_5Usrwm`Jim`0(#W<6L zE{9PjSH&0aWEa1GLuZ6ip}@VjMyp*57mdVLn@-KSBf#>N!R1OVQX9z2EHM!EM1zC` zz53;hi~rI&+r$?Lf8dFnEzMejfB}JM7SV!~yCZ6HUzz^bkC(3KM;v-Trasf9zWM<^ z$~C_@ss{~xA10^aRuF*87ytsC2P(OKEswe$(}ISzNmSxC@g)TUQeVs2w}SPwa*NL* zB*rlUf@BU{c+_|tcmF^+WM54O%wbLMhu+DM0AN10H>)D7(&_Rixx3?jHWtjYD6w_% z-NBRFxt0&<%-Wk`)p5dbmt{av{o<_-FExaM(7QfkV-p5d2!5&ucmR3@e;;7#TKUd? z`Hn8?)erAZ$p6-1!$fp-8jgAYSzJjn{5ZZHPACH9%s$#AP;DSXQ=o9!7VqUd5!q|! z%&{j6x*jMI?rU2s+&LG^_AD{H-%N%B=;QeJ3beoP-`3xX()iVn?bkoP5Nm#^Or*Bf zNjtFYqpfxQUJUrNRy*xNtzM^RN^UpS$4jA!`BM2a%_HEC4HEQacOa^Ceq$ z_sm18wa}iGolZgnLCgRr?EZ1Cp2m};Bc4F09hL2K@P}jUA9<1@KHZXzrZQkeCr&Vi zZ1ANX4Du(w>T3+@W1z4)I#qS;HXtv70=EHq%oD|2;3(Tn-%<}0^}qeMpMLZo^l7Bw z)lcqwf|*q*F{(iMYG`cE<`&*n4Z{(UbJ-;32)EsGMc=S*v;zmuoSp?Tm+GdRqP1E% zuy6Zn%pF*SZDYKO4?;?0FG6uQeZrr#?L;%^achu1igTinu3gINh*OalL zF>0-BL27e1tfB&1ti3)$D>F^We*z-8PoZfnoZAxpQm;%N@~! z>@;z5ERcV8HGyT~G;!RWI^pGK^G5T^$}ME5{K?*92o^8n~o zHzapR@NATqPF2&vLSjp?8l#Cy{E{4ftTCob4A52>g9Ba4K+QGu_XlR@JP;<^SsQ0y zq6)DFgSBE%>;8qdJEi|~k?!&n_V%ThWH7RE#?38m3 z^u(aNUkynnpy}r}-WyuV*n}}8x18QbFTn<6bl^>R2bqs~E#aXB*#nWOGrRATx)Sw* zfTE6L&xbLRZZ=zeL6lf|bSo~Ch8j!pI*}H8m?RH$PLcna{XlriT@D=v-3Xaxth+g- z_XK!-z?O{q;Q^G!DN^^8VGYrP0R6eTH_3;Y@9)$ic>9{!5o@>QwK=-xYFw`7pwU}sgbfHj8F$qyPo)jRvfMLRy!WJ-9 zGy*3u?$Crj+zq|aI?@T{E z`_+B*v-|d${?)Y(|MKmOE7ZJr75C%hnGFp(*sE~u-!WxO3FU@dII`mC-J*!z;oXHA z7`w=UZnbSf&A0VP*hu#jcP<$1TXWIF7y{(j{8vzWTBK>XZCZ=I?tS zz;OGtM5HNq4V|FF<1dTQ!ajuOLB;v>13$71(4bK@11x6i!_&QOkiSYPdF?T!j|oBxJlBP$2B5+@&j7j7 zG1+SS08Y)eah`Org)#>n95?WW53((Rg-P5e_EYNUBIMSsqjWpTxH;D%?VZQiU>kKQ zd=lcVAF_#x%-(a4Wxfs)?O{#Hah2=vIakf@)8{Fq|GH|JQ?n_9#-y6VU2q$$hm4Av zK4UGv`l&s#A=kI6@QKwDXJp2hGo>6HwbY9z!v-4>(ZRHp0%JK?NIL?FhM5d8S}N2J z?4N5g9|vs$D(nWXW59y4vK%FCfv5@<0Y9*7jB^Jw{HEkFuYPtndCY&z6)=@tj!>ERHESrjLN>ogtIB5PxxHjS}ZxCf-vZq{}P8(kEr2MchwI zOv@HDBOHzG%vq!NtLb7f1T?qY(*!SS&xYnL8_rTdO?~}P|Ht2d{_x?m{`lj2{hZ&v zt{>j}Q{K^wpWv@fM_+eqzmCR18v&q@Kxzw+wcrL7J(EZSg)TZ4Oipshi+)r7`UY}g^G z8MX~DH-sr1q=M9g;~ogY8-+Z0)DR(W9r3(wxq!g!Hjqp8lv+E*+#VwKwI{f0EVwzI z9K58`I>@MjGsoga`^sD`TeH(Ng%M_GY;qi&aQj={aF}&yb;ujKYFbyItd%m3P*}%; ze>>MabPz>ULvZaLB>P={`utHLP<;0NeD$-tACA6F>?hHI7!vXI=m2_HHbXbMPexJI zjgah-RBE6n6=9Ht_M8Ov8srpEPYuMrTooW_+|wp{9&IXcBBNyEGuqvEhuJ;Q2OXX1 ze(2Ry&!t8?Pw%CJarC8dF~_OZvtbs-mLcecwhe!;kxX0;7)JHAKImnDg2ALEQ*(m4exK<6O@6vUD$mlMFMe>3=cBI{Tgbn9v;)~IL6$HZ z7!RXQVAbOwDN^9J9U9WB6CmO^w!rDpBq=SS0$!wZ!r{F~uF-?`ms&z#c2d|lbeqw0 zOE7XLeBcLbV~qkLF+i`(>(Z6=KASgy#tChc zfp@HQa=_?N9%7#Y?Fa5IyO?F|vjli*;9ZL*@bmXC>8B6BeDr+xlRoPt}8s$WF7kTq~nC zrFcazOiz$U_KQ5w`vzqdu|<8$tn@Cb%tnKcin&v1%p(YJdo#4Q|y5+G!a*PAcU(0b)>XOxIQ@Za6x+bl;h1Tp*h`@2~ z=KDY>dWg1mq;1EScpO%I`{?X7Wua*hjb)z6OXKu4tWK`?}7!2djIWyAH>CFSzUlOaq9CNhUtv=}w9 zDt`#?{#XC-lfAvq_Z#SgXfi`98M{8p#JZI18cKX>Z3R}8 z0EEM*f}HMXM@AQD+3lEhQE8YE4oAp?TC8eA!}h9?xHybH$naJh5_reOgO}nz|NQCM zAnDZ)?KVjIef$0Rl4c-KhRp!pA5+(*G=A@M^~Sn~?SYFZ?s0s2s$&p4 zr45PEbHSS3QE+RZwQZ%oy-o%1?JSu1nyLo3?S#JpJvHEt#s3yvusQRz4$%RnorPl= z#vAgQZ3}j-jhQ49NNGcn3m?6+$kG? zemH?go`!7Jyo5HVzC@G~?n@8;otVrtCSvM6rjhOt#({-V?`k zE@~cot_FiBfrRcQrAuey*oFr%cg0>Rg(NJfBXzWL*w&82hHzdbJ{pd|As(KRnG8in zZH+c3ZTL59G*Hd%oy1?>zhUH{Kfcwo-2JPc-u?XhZS26EM5Ju#+0nW$BUGxV0@i{A zS8v0pnYFekptUaRR!E*|3)47>9HCxaZ8z$`lWoES|tJy^y1D!1P1PwB9YuGimOY2x? zLd31g<^Y$aG=dzq8K5N6u(||Ep}6H3&7o#*+WpeP-oL0nl zGmiD9HrItTu>p?;d`Fvf*#v21ERRj#kXl2a^PXA3OU|(?i9u!5*OGm`O0BixT`>e0 zsQ^`_`Hr*DMX-Uci(xJ|7-WP~pw$RZjEZ_=gE|jwH34&e*9I^kiu-o5>x+QA$+%xo z|KZbHkPEK7=E+HNlb!x zV(RsOEtjvOt(_~9xTfr3?j)8ON8Ev9im{x**IWl0-h|@_HiqBw)%4ZR?$`BUoP5Vu zS4>O-dt4f-2x;im9Q;M+ZO|-ugGk=V;oF_l+?P{bNiNmyd+C^_FjQXM-imqP^xZr? z&j3uTtC`SL)20yZuFi(i7PV@A--;`OtkI=so*v1kk8!~8=K^qbmdssl(y?i0Q%f9xr;Un1j#P_HV1|e2@~ps#;wJXLb$p&^iV0)*&kRO ze^(zq{#if9Q$pmcAKmQ}{dSXS2lpM>#?xx;Lx%U%WSx5{AeEVnq*OLdx#}fhSdI{2 zj28H%cXRA%qMRDF?irm8+gGGkL~yQ5%$~MRCeE8Au*fH zd2bBIqK_bODsndiDv@_HkY?7|9ggOiqhD>bmPE80?a(^e1<*`D_yBO|r3;MSnMzUE zWC1ML7Jx2eJ$#~XKZ7~<`~UeA%=_X;cRL}SZ|e6YFketj!aPge485Pd2cmK~vZ0n? zXlCJDLT96QDs9R#$?2oewNiNF6T<4v!Z>9gP6S3kVlxAYr*PEO_S28jGZn#;mR zvm=(=@jKz0@+4(j?vbRe;VRbm3d~^V;hDkYIEZev6$EoEPTc{j&z8QW6U=}y+(a?Y zLq^iJ@4mF(x8lF4^Uopr%UL_L6kKtr8PZ_5u+#BFwQPd7n+=yqKGf7TH6`|H3{>AP$)W z8PGn_5pFfI$x>r0(~SY4I~{@&XxmP`4h;A{=E3#~T?~qxe`9|6l)deX#%XfBwsV1oDYng5MGl z3E}TJ12n)`W_nvZgK;&+4g_Hlc$8_(2~m&t1Mvm2n1|thER0#@$_v3o4@%+&ZR5_Ay(LZHS?c-diG^~^)q`M<9}Vu zSjuw3e3_F5{#nteYPob|4+UWA_o zE803!53fSyr|&Uh!`-B|&xnV;c$2zZ_S+5$C200T*X$G2EhLsO%OZ11E7r z88Nap8SY&tn`2HpPunaWvYpWZG&BUm*1_CG@9)%RQaEBPj+GeltuhEXxN`Xz-3Od9 zhnh90!C~PcjXnn?U)Z1$f|6<*SEAlg(6l(^iS`Vx`|KyT3?ySr4=lklP}`WUV29mD zgKzJD$d7MN&F`;%at{EyFYnV53>2~ID>UYo?%@f7wO;~GIn}9l7MK@n7-k-0WPr;9 z_w~ZIFS`%JMhlaaZ5KHK)xhH-Q0#8dtHCo;=?4k>p>wJFGPz$)8K)vxp>@w%3iNel zV$ue!G)1C8Z4jq*INP!1AG#+uM@GAB!KSA>>2hSP*0U~<1*BI7GF(AVs|(YgfR>p$ z2lGI#8aUtk`}FgN>reMqZ%@CbuYP*p;gw-kK}|4aJjbNE(NS#Di?FT3sTxPOg0pU& z*3a%^1IHKJG_VE|gf3#ZfI@maSMjI{6ukyQoOFt>?b9|O#L{89h%{}nWQ_49kQ>wT@v%ppj0MDI;o8#T~>h05$0 zpb(HJ^*SnCV9d_K&C&L@B*88d>*eap89_`9&mKVF@?n@n6Lszh_Q3URLAj+c(ga7S zuF~{<-Bt*_f<)I2f>{EqVdO~wIDp}8m?&ZYeE^QPgM)64)`A;kGRSE;u%4YksR05@ z7#nuf#>NVy8isqDEeestgxzrAI=k89!LIi=*NrBg7296@;BJ`S`E8KofxZZ>D65St z@cBY@InAoHC&tT$E$ot!u@IEP#W}bKw^7?-ZpZ5YyDp>~m0BLzy#o9#pMW~%I(p(1 z617|UXw`NTC=q|d(Un&}xkm=wm!IA~m=Aeh%x%!d-;-|Q6ZIViC;}#|lrYqN1PIHf zeE}8?HUtvVYXU)Dg`P@qnekP)6h}3avlaO7tI=pkM;Uet{UlOW6#YILTsS$1csU<9 zm22dNEwS3WY80I&~(x_9q3^#WQ*m^Jvz0&H?q{1V43MI+h}Iklc}g zJ`NN2Inxgl+GEk~@6&(!*I)AEU%uo(pNCgo{rtWcNdogV!)o^_Vq5*#vRNmgFF%L1 z19B4R_;uOqV3iLxqoIo3Gr64u0!(a%-x;A2TbNxVp8@uM_LZ1t&RKgXmPJEy?BlpE z>iu(_AjbHN((MEfdm}#5d%HBk(HJHO;T+?fA%~i4uv14@mz2&pk!K6ywgJH4Li`u( zt9j59H~xrH)?ubZG@tLU)PMY#|N6_@$Nco}=MNvBEyiE{_`V0Xnz+mx z6!NWbPMoa>#SKDVYr?xg$C$ehL>sRc&)6{To;|10r7OgLzBMReyE^0QKlcRtAqEffzZvMXvu%g##h;nz3~QJ}8< zaH7D93~4~Vwjh&PixSl*M&`TbSUL_JZ#EA@{FM#-ZhS!;(3{)G`q#g_|M~6bXFtEM zes148AQwJ*KUF5`ja0&pKQI3gIBmq4)g;LMF; zzT2J?+U96*G>{zh?^dp{P60A^yq}Xp?!ABNdz|Ff(}+;|!E*=mV(lTvk>E{;_oAhv z^o0<_I2aj`xQrT!Vhk{FbyyZ4sSuYjiYa}Ct~16E)LV20Ufp`uy0|Q6^T3#20t)!~0+KV&fnuP=|Q5&WQ>5guR$aTU(egCDjveY4{z(*^ zxo2eBrqdl%k3Ci=Ur;xof7O;IoX1_HxsC?so6!j{L9~rvxLVSC);ebl(t}eSKyj-` z8Z;3(r9qQ3Ds>#LdlxE;tgX_s-F9G*VwkL;8qV02;;l$6*f;6*JqW2ob`7@Etc^Tr z3HM%lo5uj>oMXiRY-JSMDjkBEiG+xW?6H|IolNJ&_Rtf5`=lQ~>a+9Fs~_C=zM|Sn zwfZP3Zqr)pXm0MA30RBggtpMm)W&c=CX8UvoS`efSdV69)9E}%pytfT@F8xw+J=#J zJN6QiIfFLx#u|D&&*@kmo%_`k9g>q^TQtfuCxbOJG2mqUyPOW{~h`uqOi|MnV0BS4teUks%B5S|;;r;qU{SUJC zSz8L+pd>8ojs)ICcyS>)iHY*exew6urRVU}++)sBTdF&HoCcCCG-v~P<3s|EPF6y(NZTg=nO4n__m?kD_1_aM+&b+8P|Fgek%-omf4yf7tbq~@T`elGhiND4WMF} zIr<>6QJe#Rlsbu67FCW7k9;4NJJxaO+o$#h*_%m2BYDmO9?5a9d2j?>x77b95)+80 zakCdczem5pm(La8$%SYtsj4zB6Wrd_?dqOPOiSQQY0Hh#{V-#f1P>vmENE+ybO*G>9ZPoJ0E9BA=J)|zDt;c^ zPuKA`^5>7~`V`vx>gV_Piv2c%5W=B(OyDa)DF;gUwB)I0I8ttQu@n@^MR2My4Ko{3 z_zQ*kNWp?!4fPagcNTv2I@A#kIuuYh#K&5V5|ObXOSVxP_F;MeZG(+241?mraS+!v zbBqJcz@DQu+nA-Q2I&?2wkm<}N4de~g^a*#aa9|_qCmmd2{w6P=PtW=Av}7(rejh# zpEGu%FeUb|PR;j!dIyv3)A#C&AKmxZ>D^+sD7vEXvCXap;R{a4b4`;uxh9}+ z?8+Vhu{0i_J4}QP9*_Y4d;Z(cAKqjAra!(j^*?^7XRfwaKg2s*^4~{>=}U4+!Xw3m z&<>mmhPiZL3!j3V%m72p1HToUn8vas7=l6M3eGyxmKW}T%r=c=1cU^WVBwgGVJ)yZ zP3rjEj^P3gh@tPl!)+AF9>CR|v+(k2)O1ZcjW@o#tp#|3@CZ=(?0pwrx>427>`Ram zuyffha=I)u9}j+Pb4l&vR0F#2VS)dnld{OS*-_u|;1U1(KYUcr`sK%W_4FJ2;)i$V zVfAnRieR{6Ed#J7&$SkJt1jvTvlgDRlhS?K5rQ@vJ@*(|ko7EQkdcDSYAV+<~G0{U`ln zzN`G~KfL=vfBre2A-7-s2yaDl{`a9oh*~SqbKS6yLiXZFH_z5e0%f1o0Z(k( zT1~}58Z3BZebx@#&SLX2wyQlkm)W-T=p_^2%trkZvh{MB*KmN3MEL!)JxW&D2EMdu zz$*iMnx~U7hP#-(Vp9VyJgq|qORtJm3XH&9t7V!zF$oiZU=VZ49jpA9lXNm*k3r{V6ig>AVwd92xCtvZ{o;w;48Rlc3w&ctS zA3U@OfrfawpuN(ffzb%KE@w0;SafMcMu(8}zO4C_KmFF(cp|K8#pvtRp4BnF0p2ahGn(^59?8@IykK zcXZ#jBJt`Xz1}yR4_&vZ%C527oG>^|VW7%Te6wKuU=g+-eJ6I9e6C~BhOBr*or|hl z6LnQ7{P&6kth(X-<2v*ltGzn(>?LLcIb4&R49>an@cRJbKY!L|ALgqc+Wo`iuP;vz z@Q(#3R30M~9bX$zm>c{GvQbFFD|~rdsPq(RfKF4rAEe;v`ioebuvAD8#G9#r)fC$| zN?BzD<>)FySsEJ>89kxn$aDWN(ZlpSP}229sYsXEY7_+T&QvO2vs~eI!N3hFC@|@9JPpuu`^HFlxQ=QFP3z|S&+YF%zrFvSy=s6A^lDUqMOzit7PfD9B(cZTx`snm9{!o5)6!gI9_u!lm-q3y1QJt`?6# z_LO(4(@zbzjcm|fy~P;1Y!${?0~&A4*(Y>7N*APea#G!EQDE7+hL7rik8GXOk(ckX z5apQ>gF&ciRl)`TPY)UurZr~w2BIG#0?ZhEZ*NHo8rp&lw&l)g%@DX8I_8`>;c``r z7Uo^+zE1tCKmYLNKRmmUzWA|y?*)ngMw?2#SM4=*JAe68W4WqfR{!#)1)wc*PbNy#pZSOnAS#y}}-RK%y9GjJfvSct+R)g0U7WMe_`aY#19 zq(LcifSx|a6d_=r;Tn)E5k4gTgH-DOAdF|u7f2`le3}k4W z3=p$6>q0<6H$1x1fGb2}g}^GU0?IA)BtgqQ*CKcp$h*~;<*R5eT?$z8=9=UqktkqH z*4J2@Co}5r!3#&%Y=bHH1KS~5FEoF~fjv|RRp|YzT11zizjV>+y zJV!P{DB2mM>p7tLJ8gSl$f)M2dZ(eIlG-BFAdmJyRu@#-u z39uA$?g*f9w$>Y<&9bcxpER&APOKBLX*=O4mkdNz!JxCj7 zGz8Ce%QRWnLkZE#Rh-)vX*l`y)N2+;~$tIg^(I}{A z;my00-b-M8E;#R&@~j*Kp!QMZb)WP8w_km<&!PFReu9sm?AMhWWC3VnrDA2UX3PW8 z+^9~yz*=*>etNU5*GVJtgc6LCvB)4p_5f*x{8CwKzdI6IyOjibOaG;i2H*BIEPC4tl1+Uz(?Qt#FwdS#xrb@YwtU$2^H zmNP+gVr>>T4B=$CjkAaL^o=6J0^6|dFG{!j5aOSI^~wG@^^ea#-B&-w@133c#$V}y z2{*#dvAU72E^XBaguJ>JAB;g_Za8vU+CdB*GLR;WW8XAO)L<6$?UXa+D5`li z;jNpPmFejtBu3_fjaldYU8}K0%@J4Oj*>P>4aM(MaciLn@ekEL;ySq~cix*k0g%E^ zcFXK8L&$sQ>~Q~}KPJ;{X(>F1VK}xftZpJq7^8g@MLPxGyET7hfBF2B1d9&+s;5}1Mti~AENq*n6*P=NfX5fk~0RLK*#SJmZ5^r;6P4u z3@m^Xe61tfkg5q@^OOvz_;N;E?%@=V4EWU#?p7uL_lD}c67cKHITU9>c65&U9|@!(l~gUr-~iGWmX zhixlBR*souYjeuo74^F}|M31#?|yuH8YF!6v-{O|6dszd3?5eDcweFH3(Xbd`voTyJ=v<675?Ht#uD{}Tc0g74c zrG#(koSKa%ciSj`=S2Kt);U;VBDO2nEBih({M(QE=XdrYo_$GQ{p4;CkNNFjl(6Yy zWVNxSR8J>Oc?LZu?-Sb*2q{~#+6+|h9ke^dKy;^}V5&=}%RT2#7+6lj-o|VS?UXDVp zdMEqb7~&}waK1}cZ4FJO*=SEx6b_QiZNWDV7i>_|NN6$VI+9^yDex?@$JJ7vu%E8h zwzriC;f+SrEk<8Wcrk{FATm7$eUZq2Zo7T;qkB9Seffqi(ma#KMuBhb(Yv?4UHT`+lyk-_PAJz$o>`!HL0H zUrzf>@xlea6;K)6=f-^M1lWihssBauAdHA##HfTPt%V(E=z0BDCVA-4Spm&s7+)x4$&OPvg$3H2h*-i(gkI!6Vtp@z&-{#50{0xOTA|q1 z!<1Mawz{s9GjmIdZi5LY_@WR~lJwR5!AjB#wAYK4x_yqgGJ{4sk<>}_g}Zk{i9`@) zAVc17ChQ$6uSpFzIQ_810+~9nxwH^a&hR~1^9omDhZ2WJ)@a4TOS%U=6x;q<%|7Oz zp6y~@{M_zEif`wkJl+J%(TN@ZM%|oD4M4Px`RU#Vre+klW1J(5=sSuX(P&)cpqfV+JO)~a|D0+8@5!WWXKHa=e z7~h?F%IvU<3ISTj1)WxF&PPLS&55NX0FHKz`jgUOmTAaX>OL7YaTMAJtnlPPrj4`m z&cy$#w@>+R&)%M|er(_C#ViMF3A-kgOQ4#ZQb(qM)}F+Y3plYot9JFwmY_r!gaL?= zOb9B+Y>Fo28DJgiz$y|X-i=1xAgpXbc*k>_vo)LeuZwJP?(3KBGX*YD+xXE`_v5;w zF>>nLJUM|vSRLC+aLP> zQ=|pMy`>v+^~1t5TCCj`*#Xlv(CRvTaBrD}P`cONN-K=;8+^`A?`?F(Hsb=kEmd55 z&X!S$Zc4^l*Q@&MPJ}oTL;~}k6#U2f<-LD?`|$pqy}f@XI(YTtyML_ThV-Y{&$6c0 zY_!vb3~L?I=}U0?14Uo~f?!HeATO%ukRd~A9-3@eRGl+XG9fh6Ax~R?y=!0GfNIkm zXSIO|^;B;GMYvtP?gw+wtQr-q_AGP8?R(==c?@6AZFv8nUzp{4EP&{{tg{#hof6tIxO#Yzqrtbz_%Rm32W_ecQz-tp=~+3W*t^>7$^m|8K5-9 zQ0Bxa7x=G@GDPkJG6zl*Nw}lyz^`LDWaZ7Ws)Gfvn6g6`JE&xH)P3dhcR#=RhoAKG z(@5{DAKkr=_-(KtpaPJL(kb}s-yw7cPfMq5h$3VhnsR)#VXFrZWg%M~dE~0ttWYH@ zN5vKfv0bAU&VU=IG!RaXC3?@hGI(YMg%5%*hU_k@ujbev@246#Sw4O+fA?rLfnPVcg z!Zt?(1n|pX4?|!jMdXWCqW?J+AO1ScSR+nDMI6OckZqLLx82MC`0KY%s{ZNQd8t0V z`|0id+t2#xDbno4&+zek`*p9jdkpqY* zXwg<^6YNuY#gda0W|ZsJ~G^ z@i7=Qh7KwF{f_ECeE9SGXW!UYKezAQQ9CYBJ=GRhC}>T`U}XAV)Sca~oyl>YkwCI7 z$+qmkiIJ1Qh>t0BRdrQY2MFLR0J=a$zcEl<*Io72^Q=)D{o4VM3F5S!lG~Ktmt$*!yJSs99gE-&_Nd7v5p%om zUNFU6K`p$8ppGGw(j^6|bQvp%C!KlM_m+hJ7y2KeF)=bSdG)Ei9Wc;QglH`VN?<}e z#qx~im&zH#iiS*VCA>Y#gyba#HH}ArW7ZRQ!giDZ$~J0^HjinC6R+_oC<8t7F&oyL!1rtD4iB=ujp79Qa_2{MASjSZS@Ag#nino4~Ui3M8R<& z86_^GjY@)#>1v9B^9RQHSqo-mxI9|}kRX9UwVZ29-V32R1ZoopxMa|KeeN}IP7ACX z4IJB>i`&ZP%Pg+1BV#C~0Ysvcw!q29S%F_GrO{S!02VvU_7c#mSJvY z*xfYSpM3Y5{rbamdB8`n+l$u|Sm(GP9!_&Z!@LH~(lH5xeyf+@Tei{AY6&bb?||zr z)*QpL&Mc%04sKS@Zai7}sv5Y}tcj6YOpRHI?!g8B_Xwac%IKD!V^>{<7wneC=vPmW zUokj{HxXFV9ou}Kjm;x9eB{E6L6#uBn<3EC?piZ9BGSQopU8vB|BV{dp}7(1!9e!F z+xkorS1sdxTj%}L-^ZJmg4qvVxR>S=*-E47Ip&Ol&Dh)!*z$>7omL^=&S07dV`I^D z;#h%*MfHI>UqnjJB|Jp^Cbf6GZv4bN-I~o1wn;dckaH2F&)(b-NUb{@{%AIi@v4ay zTf)=UX4PqZJCKjkA*Ei3>cH>}usn}hYfA?TId-EZb8P7Y{?LpGmzv=(959&3tl3r) zgiUyUJceEfFpYh*-N{cg-n@CW-u>`w1?kai_flwAF@gfGBkwb8dJ z1qYo;NHR7PF#s4y1-Gs?i1)%w7|P;jqWK6Q=V*Au666Bx9*|^bKP$x=wJSiQ9c{1M zL(Eq!azz-FWp6yXN!(T{fObmSmLdLls2G# zAkLV6!0xXz%C)bW+G8w;meXl4YS!KvIg>=j8*p$2 ztvPQm>)$>-s;}SfSMmP+o8Q0sw%)w2X9tTPy^t?Gw{6Ff7VtZ-1Wl{00)1<+Vq+rS zqypBs&KU9By`j%1i<}S8xMOT62#(8{Es-L3KPN>GoauD}r@$)+38g21Hh@1Oz05-! z-zHW(hHZ^N>O{`ChTmZ>voT#9SkIVzMqJ!0NjW&sYU4eT?Ts~12&PE6r11=5de}^v zfU)X0j=($Q2m+b#6-TgaG2Nm@x7*Fqf2fbIcAeL6>(%=Y@7~vk@1KhcK6(vb8k1SG z=nN>u5>bm|4$saWBh_gi&&Zu;TtObB`-NvUkrQZ0*O^JUi*_;TUYc3H6q8Fjue*0o z1kf)^gZ9+Dx5LpqcZA1 z@c2mChL2wth{F7c;~lt0^`5+Swq=-0y7n>1bc0>gF-^e`NxR*KdVg6TUwxWejPKt) zn`U|R0^YZ4o-XW}=wYrIQjlz*ho{7GQWFH4ny5{7Vr`xFR)n&0Bz_eiy-Fv%b3xT; zBGobAUqgD_8_xD(sK~dS4ZUs}j3$^$n_;ll8Q)FF;N~WW6ddl6bO#o7iCC}136BzG zCEnC2LD4a99BEBp6{iFqXKiyYa@yS?8CUXv#V~pG5qR0{voEPs?zP+@HO8iMn%>4) zeuj_j`w#EFfA<_%{lQE3(zB`)&{LZ+48!mRq6Fs*qBfa%nf_O$(xUl%tBJaKA?9n?Zw7yGr4V?E5W~gsFaOd=q=Zw+!3aae$ za)9^6V-m15%@ml8Jy+GaVnFC*iW`q5L+yGz_8!px(!v-v(v_HXSTyqpLc(D0iaDr; z>?g)tn|JS@+YLW@)$X@VPbZun2P9J5vbJTm#fI&uUSuwam0DV>!#yVI zI4FlXV&LE)SN8_U`9mbfUquj`WTJd$|=F3D|;D6h9=I?V#3*a>(P=HD36`7LFjX1 zP3tl*U8)%9x_G540(uy>1G7zg0r?IFn+4y(I%ac@zML+mBe2QSqOFuks?>dK)SQku zH^B`5Jfd5XN;62#*2dV;k#o2!G0abMbZuwy@rCkRwLbTZIEG(gMWARf@SAAkJEp@g zzl-m`{qc|t%sLLhqS0ZAA&_=!S*J8JL%{#PEMLa=rt)3?sNo2!5{=?qCUyEB^iw2nT@ z5~w4qY{-04tvE=XjSbXFvt{@YIa$qhWI=q~AoM~1 zGN{IE`%4M)Z?A0mE4D zAfj#rFeSiwa0D2y?c5>eQH-1b(_|wO<#Lcy3{5SGZPF1YZ;mJy3VoH0WNM5`ZEMhN zMZ$X}!q%80VVw2SK@`Ur^-L%s6dI3s$|ki_AmTW!F=azXL-S;#HWdh(h11~KaB1=o zW43egC1D8$381obo!KmB(_nZI?%XpO8TswA<1!CkxEof-{LyzCwI?=S5XkA3e^ok; zl6v3agD^zTjbIo9&?hnYJV!zqSZ zp3pNvr>8a!-dGxFFK<#h)COS~w@u^?)$)i8-s4;#9HcQ<6}UTK>ntzeJa*nrxBcbk z*6I^>`&sgS+S#*Uf+1ge39~Fo-J>(#=72d=p^_Y)7LzW3jsb?xE6_BZ zdScQXBO!Z+85b%Z;4{nC=yUWfJw^;P%T{AKNo_*Fl)L0<=D01`X-Kz}pm8^1L+c{w zqr7}w-~90Lx$FAq^}9c@K9z=PW46c+6O**L1K=po5HSIb%1E3+f{|Ssycf%i(lfjo zk8$ATEe!7>m8*z3p5R!AqUol!3;SlZYqrPaQEtqE zK&Maw^{^2!Foa1IaH*iP-2_*CHSo+^+pf^HFVoia>?2&8)(8%Pehoz>J(~c5gjjg! z2zU^ddhUu^x255~{&HP0l=|lN+vmQtk6yz2!yDq8@ziZt84B6l9?lcpPz{6mKhrqfg!Zgx%iNCyUJFvG7v` zDavgJz7VXh%_Y&XC4#v+FJY5W3j*&Y8)XnRI+!paAOo{9V%}?Z1 zXU{~DoUU4!#KeTq1nIQ)9Feg4=-4P>4@K!Zkw^z&X6xldcW7V(IrqB(8~C2D_=3}J zqZTvKf|V^97f^PTlW%4%#=c}bwW1^2q?s&h6x1+w4G{9Y(iI@)76uq)jT#GlkG#Bk zs>SUrd};mcDS$lRwp`zTc=z4wkM-(9egENE63c^^?;bVzskl$jYK(=0ekUXoY#+sL zQJUwb*oTFN9X&vl_Hk?^btY))bR*5hySZ(mj`zrhpo$C-F5Th>!_Oe};Z(Lyl2mqB zej`>xp5rdPuNe9oEpmA@!R&5WNc#50D$A9C#W&%`@P0sBU@p>kwZe?*$m~5~{Ubuc zWrpXq<>Iwmq9glPT@g0+Hc7xT++mn4q<(vD{mI9VA6`FK*MIP;-5gqfbZQQdi~$bcF~(-Itkqn4)4c;4 z#A7+NPVpjJ5yw?PskV}K0xkzFAiM_juT8$@X!nCx?xhN_Hf=WG8yjZ59YA5K>?9I- z1o9zTe}kcoaPrd&s74dC?&s015F9PsIuJ{nA0Ey!5-=5%>$+gdjC`)M28w~F8^O7v zMi%5`Y{f`#|ae7UWTg zih*zz_b|!*!`odSUd%o`di7q)KIG*rKCZ zpA4%K5s)WDA;@BkU~0NE@Q)vzx-~$EPwGCIB3`9L0TyB;d@y_m^7#64N{?Q^mrke< zb_4J?T0yQMHqeZY2AEzW1IKUE^(knB2ly$om})o?WG=&i!<#S-7hNxCeEa7CWtHv^0B2WMVI#he`eub+MJs*X5^qD z1h8?_0@IkIdIC=Fvf9vgp|^d+1Z@zIBP?MM9;aUY6rnoPDy}^IAHRU>!-rR3oIMv8 zeelY?H?X4sP#f25)nL2p1)rt!24L zIDp4s{JH_sYuw?68f#Bo1639tl3r~r5n%II%PHB~jIN6DIKXQ_4lruL9S&(4+;ZN| zmH*krAbkDyIrGe;SMKhT{)#@0lk=4{wbk2MeL51CeF0;zK-6RLX1+xgKI9={f>Z*g zyc`OgPB`re2A%pgY;Jo@a zT~dkItaXD0Z4q?rn|U=~)bNMQN0W8HA|AE27c+oV(1h+jma-u_1Qj8-D??Sc@iQ67 z2S74tv`5e-wGH2>%ukzD(E%+7#ad{K&+2(FQcrPN-X@r#(abGDBb)j(s)`{Mi1IKX z3Mo%wJ`&1-VARlimjW!s?n?MqJn7YnkI#KhAH8<>!^cmr-?&6#AoeRE+eXqh^hKOa z^0eLqbRvVLOeHI$AHfzJ$|Cr-j-VN>#F#v^Bd4(EEM4#*E)S&tCgQd>n$N@-Zf+TI z0=(Y1J1y3&gapidn#7t~S>ZwGVnPPe6`zq%4F??1fz-S1z$ls&j4Z#Uo)ZVyej*4PF4c=f0zZ6A`^Y0;i- zEcJ!*4CWu9hgGOaRpSV4sGv94oSy`94_+Q>ePgz}XnIDPfAmsD6@;z7?Kq@j959tzD( z-9V7RoG+t!skHL)GE9qFDjHiGPU9!;T#VH_-jNfwfNcxhzR_W?U7E6{B~ETS6#nfZ z+hZV3tHMi9`QjeqkO^}{dFb@$7p+QK&x32*iu)DjMnaf7KEFKBd3FLYgBMvb$2@jB$oGe4NHL z=4~(auRp%a-~3yT>!X+Oj~`e6vTuSeZNPSu8yXfdTi!wJ55P`=nby>GZ3KX>#|+b? zMi4W22LEnNqjA8pm2B++Bfc6M8oE@0GmyDLI`J@|k}FWgIk zLO2Eho~L4MJmw%Lj3DV4tHTlpFvS35Ewmy#AqD4Av?G0hGIvBIU1U#+s+c1s%pob( zX+T0*D0Tn}tnyXltl6d@b1i&(LBHOa$i*u`IU@0{w3nhWS*5`#8XXMMHOq;1nRJKJJ1o zUz3dH(QEg|*R=i0J`+Z%Gy26RG1I-O#kp#wKwhU9Y~3EiC(nJFK-C){(_2$m@w_7y z(i$Ol?VA_Q_8Zbrg1t_UU!tv!A~-&DQx!#Z_yO{)bx#;&*4;oKM0%y8BXcsTtWN|| zTst7m8>xL`fW(e6&2jo@vmY$wyg=$HgrN=K6;9i#2OF=BnT_51hHaJ?7$188dhd>^ zGXk2oDd3;(T0cBjWqS0o-M)k6QwE}IW(Lqh8-9!81d+}dx?a$ z6CNd;f{1v+)R-+5>{*P@t<`L0$0O04c%uK<^2DyeHgvk5rCUHr)w5?m8!Q9DNYjo4 z9;zS*KYhw5f#D#@6u@1@bobh~xPXH42lyH<^hGChN=tTjGm$aO;bLb)v1KNZHQWT} zO_7mgd%7K^#2f_5_9Ng;D@$u9MzWY(<;;P2@y0jb2F>MqDA%Tm&-{kW z3c4)}Qlpwa)kibg?gnA_K=UNoc%-d!`zfVB;siviv1nBn?{a2g!tt;=#vJpUPK+#z zqOp-o6Gc`zlYS87@{ufx z0BtPW1h;_+9b|)_nn@4_Vz5x!$a#b?8xwebq4Q~7z}Qzi6J^-77As0Qm^oe&6Or+) zCby-BzxvXz$#-wwJTI4j^a{R||6ZK!>B*^htn`pWY7oo10G!Np+t&y#taie!D+{gQt$R0T67? z?i0U-PxMHER;?O*+BK&#IvWPVn5-Y}>B^^?#zM2yCnn(*P@$$YCVB)jK#%|`Bid*> ztgUXryrV^Wjp=s#G5zHaZ(sk9AL`Y4{idEet@o3R4_?3*A>E>dsppL^4E)_1eQf~h zTMyp35SkeyD$T%xl$JX5EFcsMg*uf4jdeAQGBwIVZ$Sd%`GlzSIL!faolsweHq81m zaX0wP__p{9uy)6Z1}QTE|9)LUV5^0G^xA{ZoVg(;u}OO2CE;^%aCQ`dLsMXE*h>#i z0E{7C-0?#|Z;gE*LB{A+7q-K-YV2B|_qyGt3V(VPf1gX8J$Tt}U%UQU_BJmNLcc0* zu@6ym4AMJ<$_&msYjp4M=%MF(fK6E_kZ0ENJ&o)_w2cXTY9%sYaLZr}6mXp2DX`8) zPSm0+tTXzf*S>Y%eo)s{?{1ZPNtoHq`WjY9HK>D{9vvgvHq!yE*+NFia}h*hQs%4$ zNgT2uadv_g?A=8AIb)AtWJ-a>VN5eeH$0|vnQ>3b-KO``bNcbkvjvAoFWyVc*k$`L z-uk%oGO{79#Ru&yM6!%Qx~c8Uvni~BI93V9_ZudEV+`4QVWJSWxs73bzyZ6KGC@B# z(M`k`qmbVWSUyNWH1W!L2jAgoJ)!19loAoLjaCOr?BE4lzp$|rAC;v9Zx$raB_+JQ zQT2$o>l9q@3YQy+M_%I8l(oeBVI1x?VN=FoMN8b{N zVnRx`CxN-)r)2C4^HySXtRbZxaIX6b;dYyTK=~)&Bca(+820DxIC3+0UZSV<=wnyE zRE4=VepqcmaA7!7!mD-ZYXyLi=pfItM4`{5I49Y`oK( z4I1Yt>nKJ-uE%0!D@iM5MhD+lLaOAVPW09E^*8LRWr1{V{AU`=U{7CljMopYC;vN=%X z#p4qprpdSSi+^?AeW-6ffbRS%zkU7YxdhsySMc8G_o?tu2z(FB^Wbmf(r`Ke#cTLh zpp5$UCnh>YxG9fP@7Sr+5n*c5R!x=$mOW--vyLszK1aeU;_B#-&6z@OTLvW>7)X&Y zYI3*pG$|ANAWkwe8zOVSrbJd3jFWvnmQvHVlBQY7I>^!jNFj%>0s?ug-p>dp zIsj~d_J3BFZF7LU+uGfkMsS3Ti?3s~5rqzwCR$2vBYExC{0!BxFoGP8aoh!)u*3M* z8C+`^aiNrVGvGchP!GhaF=b(JVQnRx_y;Gd{4FKNETMK=OZpj#4=<_09=&w;U)4|W z4nIp)woPao>&0Sq(CPc>c!w>8?z<7{Y*2?D(?QmKv9G72SS{0)2CcY;!Kc(O!TnYBp zM%zqJe`Qg~P@&@pA!zN6b0jqb+`52>Q20_74h+;CQN=lU_ueA;Hq!l{-bel>zNuHg z{`l_gtMlRAcdz#I@rOsR<4Z#|ItH}#1*Si!p681EfW|hL_>#s6fUVIoQR+EDYVfuI zivcYmo(dNP?5(le)>LUDP80Ao zb3s~&iMMQwdAI5mTX%!*CoYR4Og_D)I0Si^ZA743oDU+RRof{}ZDqyQ6s5g!3dm6= z$K#J^VfD>?7uo;CdtfL(<_{m99mII_;@wn%e?_0^XB}`=s1cK6`9W9~oZ8SLY_7F0 z1Z1bfY>(TAn3-)458Ocq#Jx(uPt>T>l&ee|vz7E2{cO4(BVOyG6(PsT>!`MsAf?=K z*lS`tAkl)^qA!;;Gl^ZeDYz22a--yK?CfA_I15?=-Q%~XYGf`CReo(

s3v#u|}@I54M;W;q|st^Xrf6?Xy&@$FADvtNAlr z%^xYTXKp^@LP^s)O~_{}u57mRR9r;QhP@Uf3e< z+N@@+HNEY<{c?SXtXK8B_wn}Q>vzvSs}Eklms)Qa%IR<}3_=IGaSj~UbMoj}Mbwa6 z1cW$O0RpsnM3ZTl<5v_x6P`V!qce$PTdA&c2+&Rys^)Dkf@Wzo2_pp&6znlrrt|i~ zHjhAtn~x%A(%0-$rPV$MC%HZPLS*L>U4>i>B~#=+nnTo$fXhB(vIK@?0-iBC#LcvF?hYqc zxJydvl7YR`o;c*Jy@7MoNr-C_UVyWi@UjW6+--*N7aw1L^ETeRs^7hSHqHIu#k+65 z(I-6YG3Ium>X8Pgfq{2oI4OzF0&=%sA!11Bws8*L(#*B@kN_4AB5{&aT~L_o-teCo zg@+VCbmuwfTcV%RkRhSsBHjBS@^`yOnqi1AumUGKnLF7Pw*oT^lO}QabZ1@1qsx#% z?i31-tBN*$#!%32qjW=}kml{H9 z!6MR~&oUfLk1#7=)%&h&8%&ch%52gwC}pcb1X7MfbRrE6wCu<&XHV_el`b8jBC}!I zPW;PN{ptJPeDmwi7xicFsU8#)Dg#3Pp}+*sH64uI*kv~48E3Yq3=6U->wvxpvT966A^QS}~RpmRUA z%5I<6uW9=2(M$JC1nm=|dxRa`P<`$ZVrK%_W4;2uW#gb#r@~f0^j^WOM{1t(+9=&p(FX?~zv0eUm z|MD+?_m74*@%6uc97(PMGVjz%nnNLL2S22T2p?df5S~_y1yaKVLs3h>?7`>42$P}a z1*wE*mekpWQo0;r=@mFuY&0MXvuf)sn+)#fJjQ~Xmv5h3h)U4y2+ZN1-sfnceUq+* zNymQSLC;(nJ3y)df2^VKrx+rlN{@z!mystLlml;N;L5}qHRZ9JHp1hJYR{o=VPe^V!z?ZrQSA93J9P<0v0)E125OISz!ii4rJ&%HY`Bj z(CF8XuYDYtfo>bVV+!~tiib~R z%uy`2C!OGIm>7nsaQX32%>y0juuR#yxAe*oI%o9LassLH1k2CKPR z_)JsTbYxZ+!(_V?e*xN+fZ@+#0yaMCF%l1+=0=O>1i0d_8HL8jE z2*McIW!wP3U~Wm#!?IpHk$WAOOsb?inMvNuyPMk%2hxc^XefwJfYZHp$3 z;H!vRZsa;|yR5r*7hmU!w(GHBv_cn#%)p;I3vVq~^1}$hh!FOLX9~Bu9a9;Bm`Ds+ z5#}Qu2tW+F5a{0*XDwx{cD5}x%wWN>$H+DIx(x#V)knZ$zj^iB*Zcc#U*)p}#7D2- z=PUcSxUzrv^ZvshBwyf4ft!mHFFq6D8oE5O(Ol$2!>$==+f8O!lWP*9BUdt4(CV1X z!^$OLBop97-f$+`q7FGgo4POM2)Ntq!N*-|3~%IdZhJU7Wn)eX=T33>_;MIS0ta;j zD#NX)HS%VB);V*bB}uCXwj;Z9ANY<%k(ulY@Z1{{@_(euz&7d!EZ{DgV-Uu0XkoKc zG`Vh{+CTrpWqS^J_u$pLO&)%ZNC>LVRs>A)Sd%CfCL`g!@a~&>wflf@J4G9#vNOS^ z&vueHsbzH^2*SZ{;5vr(L+t>3+^*@u?nz81*;Xp*qa`?BfMS(=n`d%?YHL`80#7wc z2&~qQ82si1y228VzElQ|@3=6W@c+4vqcTPcAXQq^s(K(F-oa5DWoOG%fyk%z(=YE{ zKdP#%I3SKXx9Q-rL&3I*a99^FT;-{-_LECUqyc|A%v^R0MS8*qc%FRjm<`H##!h^4tJxBHfRsfT?7HaSvlZY_Kxd7yAxd1V1MIE`XY|Jq1Ho!Rg8tu-G@!JpauRgVpUcS$l^>1)l zzx=TO@CV0PqoZIIxVCM=lRWzH&U@I!r!FZltk$kHjC^@_M`%46Ih|6dFT2m)CFzp? zV!sf>V2EF0~0q24gntL;`;HkIA*|j!D)nd_WG>UAW;JJ%b6d&7@ zZS4e>%$7EwQ_^=|$7S@xZBuAp#nQ}TOac@MRRZnXM5fx_Iq+s%_}HEh+$ordxh+I} zS+i%AosV6*+p6*B^K3#o?Yl#=GPM;i9b$7g*bo8KoaG?ONB7Oz+;S3V#I=qr!YQ6yC|Y1T&8 zWuvP-7o)d%*-W{egI%ey8>Tg&2L#pI$d2OGI&9CKYo|}0g_6*`X1>p8w5O0679cmm z<9ZAJ_>0fy*$?$i{qDJeoCh!8O9RWW=D~$nyTFlNz1pZmNH4LOL@+KeuC0Xu1Bifd zCLcJ6q{Nvg3&MEF(Hczv1shpq#8TxJfb_Lhh7Nbf#lg z^WQXV3XOphXD|F);|x#b?%w0Hfx$0r=YVWLJ|~J|Q5fQ%-Pi+zn=a=JcrD{D2vc(` z1RE?iw;4Gh1BZl*I#3|+!3P^vpxN4rMoU`=j62SOTlUder8ROmNNF`X6}Xq~m%>yp z)Bt2v(ZmI)ciseP6aZYeFW#SDAJrEh(Fd>H{dm=<3dPZhz2+od+4YPLiMsCrro7LY zop9S9-eaJSbFj6<=N~T*n>#Pw?rO&x5XjzHVi_VHy~9{s8qg`(A=L0-veksAX4_np zaa(Zus;=py*Y1z6>5r$Hqwx4N;9A9Gz+Q<-OyI(eWhcg^5fN%vgnmzhu7YGIA(iQE zfDE*Kj#Vny1wbh28nwyW?n463Q1TWWJXT~^fa;)gPQ0&f>-|0j5LH?bymeKy*=^bm zH^nI7C~dT8qIo?~+8KcOpjU}4t+Op)y@|}0I)ue0S=t~LJJivK0r9bf=W-xBu7_d- z8n?T}?GE@C_1(K)zkE?2y?FPH^-t;V(^I)NC~AA-9nKYrEyVItUd-Fh5?+V=l;cPz z4MVkEt8(GQZ)-7>(|n*npqd8H#V@Vd-}{;SIW3U&1Y> z?B<|>UAYi=|5j{P72h)a-0>2@|0d>WNghhMu(j8Pe57S={! zrd@;l!la@zwd^&6`i9#CN-1y?^)mSzP6#7xJaelI*rt?sm-;Iy%*3 zE16=#m!ZzVm;v?Lt-BF$o;x*r0j;{{i8Q1Ez(9r@$!z0AidlsT#8D$T8ZM$>!a?E1 z4Pen&)mpZB*NgqCY7viKyO-X?9jIjvSbQe>_Q_efugJ~{8H~u(LhoY^pay%aJPgSw z_qH1Gf_?z` zZXpYekdD$s9E@4@%XrL^qe6N@j7Xm_|fZkoA3WJ>U#ECwGN{13DA*!ir693m>b42 zywFN()qxvR;R(p$OiNJh?u;y`VZ5}o3b}NOvB0?U(XrN&91*k;md2!lBKuKm_FQ$_ zfBm|?u#aB6+xfZAJSH$4H(|`~xMH$jYcghrF}G4@`7x8h76$>aF0SWb?rEmzn2Bx! zK7@(><*Jdr&8X@_e4cjYBHh@KW&ukF1H|4*UCTO%C3ko&CcWHFY@JOEWr7gI>A9^{ zc%#M{V`MB$ej@sdz%(Y!xt{>~1jj(hn!Oq?p#kRWKD0TOG%QvCt^P{@T%+C-bpj z`ava?`otI}w&1=1AcR_{&&@ke*J-2}A>NF?QGo!^8pA*fddm*5#BBNP(A-znntSx> z-Cor%Swun5U9w4t+eVT$vJDK9fN8`Bba2CIdUeGYo42ZPlZJV0voUD*hF%3eEn5#V zS{?&`s%#*7lX|fL#uGYMhk!ogK^r)PuX(TZ=(W4wD}8!W$JKr}yudY55#Or=5Fh|= zD4KV$#xcyNysJKm+j~&n?q0qRFbzA4aJvnkwt&zyP;usc%s5TX7NnqmY zfh5@WYH_N;*L9@;FmaoPp>NyPW9D(&c=rfa8~6sQYum%?_E7Vcy?!6PdM_0X5sqKU zFgwg$N4qayCZKErZqP}1bB}iVS|(EzxXd9?DJshuPK~SUBqtu(;qc*r9#c*n9K4PP zB!&!vvjxUcM-8Y00+NH^%QPZixYQ4k>^6on;%*2fNPQ{+isSM5sZ$7m;p$L zmNcf92Zq-cW)Qn=K-`mI$pF&@LuR(*n*EiG-e)?_Nv3?JHeIR)-Y4vi<4CM=ZqsT% zf4ZzMAPyhBc7JqD|0jK!M6ca(|7)+Ut}dGB8#f%E76C)n_9jM>bLhHUlDszrPr4C7 zm=p9HEO|pq$pKvUHBcbEW~kdiuQU;00N!{t#di)M%q- zG){LYsbZL|zB?qCol#z$5cF}O@iuBt)lkbGyBUcCQoz7&_;q9Puk2Uz6Ymi?XdnbJ zkGY#7_X!%^n%xJ(M6YXjlY`mz#R=CNFt9ykY`i9$K(Vs-K2sVW&zhwj72nkwpEEPZ z2C355k_E0$(N-a)rFRX^Jqid*=rJ8Q5Fd6%AG~W^|I!9$8w!0q zaU{;{yYGg(7Ko2!ebvIs$!QV?L%9)cH-ZDBA3%YV%(7LCE$`>d|)%kt9MymSQ_9?42xi z4eJ|c8}Q9TFoIlD)aa}I4nBC=GesI!p>U=V} z74rO@$mW^44G+$`&5>Y)4464co1*7vgUfpWCbJM{Undr2tF;Y10nu#a78EX=Y`I0S zg+|zo9J(&d<8Gi2H1;*5xz`-kgB0*w41y!Uxu#fXoViRrb8v!Pg{PZ`Km|BH(%g@(zy!h7ahRsEEmGEfYhNd?BH*w=;Bp zMGQp;9*1aQz;5b@1}NOghJ~i~>CPITN)1ymrFZ>97$wqd80s91Ohwm0N2Mw8J~3hh zh0co02RfoUnm^iUvrh^P0yRSWWAu%sTFh`5qV*h*Iw;`r&~G|~LR{3F-QxFc0f8n~ zzF;L-Lu&7iP7QV`gsktx^MQeEuA(eu} z_SFu-WEKicL@~@A>ED|>>px$2*1M1O>P>wU`TJMz-~8|)-n{#h3#9A3 z&a0svcpk^kq0TABh&1P9N=000 z|NV{MvXE+=7@OR3u*EA3Y@M?*vv?Qg$z>I&`J|IwWSpMO4TCfw%1re=Cau+k_h@Z~ zqLy~h7>3tnO>>XE0i!AKZ4)ETbBZjc`fBT?4_>yz1+1H8h!&z;9VqpOpLA_{ERao zZN>olM!WdBv7YWJKNFvnNgHWaNmCiK!==<@v^fHpsowBXt~G1f#AXKbJ9+%T%Ua4v zC<>m%4mUH(wwM{SOvYJS?3N0oZkjdcO40?8+FoZgL8@Vb0ZT8u%r4?9n@eGTlNi?)PlI zguut+Uf31bB>)>Xts6}BvSjn_`0IdC)2$P8?I(bSY&9rqrSCR#odcfH+y5T*^l?|CwG0&VYIjb<93b`)KH6ex;jPn?WEzhW?1 z@F1_+TN!X9m~efCJ8TE4M{&1V%}bO4umyDph0@8$s$zZm2->gur~3+$1_@E}vyvKXj*$a(=iO|r37?;^FpMOE5`R_l?IPkB=)3%)l z1z;WCt=WRz`oK1|z&uqi_6(V@qVQ7MaNvxcqdKaCqbHaimK#HIeIl15T?hq)wGbMG zC!{)lW?vw@4ZyfMnAfnW)1AUVcnRcXh0**4i3sX?%mgUpIFem@x~$8;+%b<`$oLFCa6Wyz@ng48~sUKeUmz{}|dDBnPj#A(uTp?km0!~gWxANRZOp4+xR zc-cPRSpWCSjdhgR!cylTKe2#B)Ke2Go7nKMqMhj4C)D(f2RfRwYv>iQQf(-DmNacv z9dkEK2|&qCtp!>xT%RV_i2E9JF7UMq>pYeIRD}OWnm;n`+#^xZI|Ch3rm+Vs;I+V9 zgvtrkI-yWVTgt2*%%)$19lAQCv}$W52!5R~?vOTfFZ1dbHGT>>o6svwn*+dgIx|{F z89K*pBL8c7Wj%V??)U8-$_dt(0=c_NY-g_jN8P#Q+ScRN83>RDqzg_5DC$Bn?uC0m zN+J*-Z~-nG?q6DFd~^GuVEg@S*NaiE|FX_nb4t97@r`67@CxC}=?xjwy>dsPcnp@C zFGTY0^}r?e8Gfe|6yQd@crF6FUP(Ne2GLDB0-S-^GN!A2{1KVa|E6wlg|ZbDM-l&G z$D)c*H~tlgzUWPLktv&aIEl>kNn;Wdx$}A=1WxIPyGLWID>_x_lURg<^K*p@_+-bJ zehLcc-2DLnU_hV0F#T`(O#SJv?LR+LMmDUr1hpZp6Ir=Fk?mk*6dFjjU)y)8lOcOs z9ipx8OgMISI%ecMPP7%Wfj=`vepr#8*Xf5-p2zFP4wtz>DpXBkqsJP5`%GDsoO=aO zf16O{WBbv`CZ;ZP0^>eh2$U|l!^Mszz0e)OMKvAuE^YKRYu}+=y znkF{Xoo{2;X>2q_`hVBK)t~;_{;PB9u32Opy)IoMYoF4~A)yo&AZsxw^jV_(3Z~NHG+v=?H zZy00|vf7ShsMH?kKl;7jocIXQwdxv|f-zccfnPh#zeK{XG&pUy@N|H;#eChwnwhP! zv)l9c$^jX40HLuXkY^uJ%SlYCXw+Tg@Vs20MBBY}VN#}edq7|L=b{oGTG2|L6bz&%gU$fBomb{L{Pt@c#Oj|MxHd{D1%Q zkAMC9&maG1E5G0I5n{Y9?|4T-=|z&qj`J#1!Bce48@a_->^<+hc4Ln(aO^!E7XBWK zm#%%rDSk6jlh(_p`D}Rv9-=pH+Yz-|e?!6448#zwUkqU%7JF{&QnR8*yzDDwo+a7t zT?kA8_Pkge;@d zAmti-_XsXqHPTLoY(H<*CJ?8O@nPWKp6=V{s*QN$u3hdhK?c|(TMv9Y6 zsskI4A(MJ*SoS$zkse%4*BP5w@N|7p!uC6sV;%oOYS*g!$YnmkKV>C`6ULE!T0AUe zJ?%yvd?4=-!P5C5#@@hAcH4WjF+na=J=ji?7tTb}Hl!IG)HULb zW+kchs+hU7rT%6SaBB@!bG^G**_(`(-se!WCsL@)Lh~Lq%WqYw^CxaQV<2!mZP(Y% zlP5pzC9E_V(TOJud*#HnJ@0p)v#h%1JT2Ff`<{I}q%}_yKh{N8Fb41-PF=4~+X^Dq z){X`1c8)f`?bhq9p54bHf`gc)Gwefr=<6o-oG+s6-dBJxC5;T9mKuaDG#{OWht?+^ zGuVIA=DE_BJl@?|vsg%M4EYV68(5OH7^~(WdvOu91KXT`>^{Y}prFS6@U*RlRNyep54m@Z?2oiZ29Q4+_-Q+#yZ28tZyf6sa?Yo;pmY7WY0r(3{a_bv~v z2hmVxPU|)Cjn-Yk{Wf0TmKadC*5U6yd)0?J__J!R4>xvCk#5CmD2!~=c22}Rr5r}U zfm({(`X0M#gIFHL1iP1T?IT&rd-7Y4DdE&aM{F`)_V)w4QuXX)k+w!wNW~QjN8o|n zlwu15lOxJ*-{an2yS_)eyD;^wE9jE!Woz0D2lB|5A$GTk^cV7}QLfTxT6F{RU zta-|u8h!*@VstW80VZz#+lvz)KraY-6KqnetTZ4Atj$kO7zlU75h3(2xoq~vFQL|! zb)L@&4{hpl(pV?wQmUVL6>qh*G=h-GzTTUcji$^;_MVdkzHe+B!YkzzBgJM3#Gmc{ z_$k{s&1T{dey11suG6@xv@QBBy%0(2A|%1EH~KfELnTXtBrlHdvM#6LEc{4TYx%7{ z)`N#I$&3BU%;_ga?--$Wo<)3sldMYwXIDPLpH^^iKszM)btcg6)tYu_D@eDM_=BBy zU3f`QUqSp9dB|vZtrUsCoSELp3vO{Qlg`DQ+UOCE1HwCO`X&Z2(ai#<%9jyBni-4J z@efbLzaQeyI(dG_M`%P|Xl$ym$tn&RrBIlFVzi}XM!r+FZ5vrA^C2`bZ>^^R+Z@Z= z@xIU4zO&C-_l@h8!)$3%dffYFZ0^EM;kWh5!KHW2zp;7?QBFVK@Nk}YM*kK&^)yz0 zohSje|B6MlxeR)(CP?7hN@bS$T%~28? zeHVuotd${egiZi($B7r-E3BLO(j~4v=eChM*4S;N@3ppbSWy$CKOw(Xb|R6c2Iuc= zIpCvTvRP?_WM)$-!Ui?SxoUibWl8m!#|Mg;^RUx)d&I@vNZmN!+l@P$TW*PQTWha+ zZrw(wL=qYnM+`~Jd&%tOoe|LWwMY70>~_(G#5h=0JC3FcqiL=$N?OL^2m3xjM^fSa zPG-7up0#hcqpi^(5AuFC6c`v=Om!;S+n)7mTO*gQ(?>VysD3tyUrnO-&d=7jV_8bq zvJH~p*nIYQ7KTx+eJVLwixXrvCzu<=5aBVKxUf|pzZxCjB{N~7D5slp(5olM4T$vN zs7=-*3r^pC+^Otvql9auI=fvFvKWl)@6Hc_<#+ca6h=&?-)X}LvpR3FR_;cc%A7x< zswS`EjQu*C-RueHdZ5^m^Z+!z`)Q^G%*JyZ1Dz&G$nUO|FK_94a6F%1fZTen?iv(?n_N>`_HQ<6<_}oxI%~?6 zSNVxoCnOz$sIv&%o;vR;nT4M6A7|125Baf$rNJON7(Ksj_Y|{XO2s$B%byZ zpZRRWjW(s2CN^!0F0vf$9Z=mhH$Q}z#5w7nt>acziiLsYW<|5^aZR3jIT@Fyq1wxO zdow&ex3>$ss}Y@O^l6(`r!F*8=70?`giv(SsU%OUQ49Do)sA4*r+7{$TY zcwqQ^L{v>a!f8NNSz*v(<5%mb(07XMW1UG!PGQ3LF5N@*m1?`w@Ypc+#}RvwXQ6$! zWoLf5f(T&X1V-klxq!a2jjHj&-1&=%JjnctcohTSK|oOf9oTz)wd5S@yj4C!RuCE7 zW9N=~TxSv~3_-y9`fFEuC@zK0q1xu*$;VA^AB?|91RUo$Zoc86F-MV2`M$y}v=+my z6Vjf$V!|OGX?i+TF_KGt&W86O`+e+UxD?xyhI%R5e*CSIjK!lMoL2Qx@)h4#@S1Qh zVBFBPNT%F?q@otB-Upa6yKS)~qFEWD(MAg;3WS%vJtbv|nO)h^S z$*HwM+ptdVv+NA` z_#ehU`WSuPZgIYTZO0O;g_cdp8$8u;@Qyl@$+Guic-zeJ)-J`pOE&DIk}0-b)Wc`k z*UA7EXCKhyV#+gzhvg7r^$ZUDnFL-SuuFzaCMp(HA(FC-c%RY>T>)xAuOK zXMQe}=1mqoC3%{&tPiW#>+<3oqn#9;jReuq$3ePA&34Q*=F*d6mG-vVm17kg+bk*G^vI7S0+I3Eha+#2BsZm%E*b8kV@7v@@XIzra%T>I_CiExc1TUF+V> zhN2nKrM{Vz^%MT?d@Lktlk_KkZdC0N;(hSucd18jJs6a|If*rmL-3*Pg=3*D8FKoq zop*1><@e~~4~qbbT+XLoD?_BY=kAY19&I+++K-{j3}ZezP_4_h54|M?4v9m%#vInm z+QcciaiaETpQN;hPmPebpkWS`#W?^dYs?1*t6HD~-S*yBz9I)TZ%0Knll&{XgG1OV z;bu>t`GhmyPQK3A)LB%LAw6_QYp1t6TYv!1dzlsKYIHG&rbw>u70Q8hNO0XF4yZ)M z^7K_rFXNPDOhR;6y5il90p>TllZC8 zS;A&>UbaQr?Q1+f&~3lqU=&V2Z^YdhT@ija8Dx|bN~BSZ?7y>U12%EPN1+fA14xN= zqj93oI75)n5`b|Hv>5q~$AeuQrw=iZ5H0~3v7$HW(vJ~U^tO%j-4X7_L@k^=l_vx; z`j}1wlnnFlBU#2HSlwUU=VPj0xJ_)wh-Dz${4%b!c7;s2!YoWj+fLqK#NMJb^JsQQ zyE{;wj9r^=VS^Gs6{ivVH|`v|IJ7@YF-*@pby;cH97ZmP|isI_Kin{lb!N z!te|&A=E*nox9gK(t8d)#qg~S=NxG}NYQLe+(zh9dazygnaQ-MQc)07(zSSP_Bre9 zf`hcCLT2oxBUV^>HAu@O(SO0nJLQm|%NQ77!&1Vh+GCh%<$m{R>vVh`!H~Os{-ym` z1x1K@khOcq>rm3;AUk8OG)TPw4SN~MII|{e4bfRLG|8M>?j%)R7ChP4C;*LzbJeJN zeav|6;@jGuc4~Qz55vu~z`TX#XyqbjFsiwCyDe<5^p+vFV`-m;r$y;J;lHL3X84jd z+cM&@oJFx7++px7%#_LXq74ehhYo8vPy(M=$dmV-`Ms3=0IS@(3B;L<>(<`)Ym1hz zNLcSbz~2uA43R&=4|qrQ>bVupKf*`4ns|HB(Wj?VKl z$Lr2zjm9Qfm=kIEl7LFXBw1icB)_*+hx$D+9*=F(y7shut_*RveYtsKLW7f=9FHvs zV5LoFDR4}{+-rE?tY=6ilEXK!cgC0-3V=kYBf0NtWuwy!JmzFWaj6U`Xn0xm$AFwxd} zGVL97g%j2(-@<;;B>DblY}7_3Z`o!4sa2gKEv`Eflm^PHjn~M)Vp6;MAQ{?$adf>{ zq{bJ3!*d-myWG;w!1EEaGpMWebAM<#1e!qzVCPO;E$QQw`OVqh28`ue! z5O$gF*V-gPI(Zvm^;zIxf6bNUk-9QI3&x#OEf%js7BIi!t>0dFeVYR;Eq2ardh6@# z%l0hiMZQh^v~9?2{p5@zz-IM(Dls&Ity?kH+olyGPvWATMw! zf4kY17zf&xH*(Lle9f?|D_y?a0iFAGVk`zK@bMT}zkwI2X4zchoVv0fsOLLx@xiB>05)O|sCsuKiAkkzeh*3XwxZUVKh#z>pyD=Z=$wK1Y&-fL zT;r4SX^E(l50fOgq{h_V0z&fX!l2a%0eNrCJjER0Xk!#x&qvUBAeTIuH>SY7Q{%rn zn|*sDYxTTV^X$!KZKYeL5m{2F$faMRz=9BqZ^nQ=SJ0D3t5-)ssLXgV*`!|Lh75U$ zU6R{(<0J zJE%`&Sh}2hnE30=w!-CY^3a;FZJ@t8QO8`DW-vizDsFal2Ic2B-+Bk9X(mUp>ET?c z6cUpryd%s%dzR{he>)AA%{88<_Mlro>PYg;H1k>VvElE<|8WX-1qU?5Ei-vis!m zs&*}yZ&O_g4prAI>(J>Bmo#R8b13xs+!7anDcP08&kYD2;EtsG^?i? zFN zA#2<0CAywQ>qdb182K*9QOWq^uLrinWNPaqT0VqMzH4l}B^`Fv{T&~n_{To(;D&i+ zCI?TkDIKrY$7y0JQ$j)7r|;H!Q;HeNuv*N%s7ZPYXkIr?uvwi*riZc;*fevO5z8^C zP=p8S>fl`E6Ot6Q0zbf1v5fedi7vb?q|z{XydK(uI!b7!}Gr9TQypNL_iQ4;N62-yvzkl04YM-Hgw1^v#Xg7P!-a zRtftWp8Iub)(1+i8%u*2J;J^3YId18kCV+@_i1Iv;KCrGfTTQ$?y0WlQa&}fw;er~ zB!kiS@kj8cVd0np0+grvl`Y!ajH}!d!&|P2lxE#`3 zHO@EmJLK&>eUNI79ZK@rQ1aGA+bF&!n@N{k)2^%fKG>H#GNc$_5K=&U+{^rYTtFUg zI^rzazVT(5zp?AOwKs=1gD5g-INR^|2oLQKk3Iu{eEP-2k_WnPoxE3Ry03iKQUq#h zWP)vYMv^=@PUak%cp(kZWTUca(0&gQ9-W~`Qj9(zM^DI-0+A1_w@iP>N6^Z9gCU~~ z?6**a-IiVC3GepNWsMc3XJ@-8*1_iyFI28VrOIaxBML+Ay<$x@RDYh^~H7RUMjR|V=Hpr%9U>`EX?;!fl3GZ;x>Wtc4aG{ z2dx>DONoz?vV7=E@A(#tfC0tld0_*dKofJg`ZwZWm^OZ3s2pu*T!?uk-!7aoqLIy~ z=+dr%w;W7NYC>t44^asuoo+xjurBn6BmMS!x93+xVX_(}Ed9??YjT?49>7y^zX}@p z3tpLq%uj0Uk1ZT=@r3ne{UpAa*MhVG2rG`S;E3WFJ;+dzE$7(pP&{tg$4Ag2>+7=G z>>^#6uTr$tdgT(U`}WM^zvCm| zKzP$w|L$M%5g2ci~ zVu5Xt^3nJRCmJcTeGe-6 zS|y(weIxed-Koz)8XGO%P3MPUKt}XQ4u(A1_RZe=O~wCFg+8aR!jYb1<>vhhHVY^O zhQ8xTk7vk;zVfx2-vwUMHYlyEFN4>kto6Bu*~q@uql2ocq=6cRB8a{8AgTApkrE-r z2}K(S^X3`0j6z}^nt%ReL_r3Vtl8Nd zv3p5eoOsLDpeDf&MR3bwm^#MBS5ShYWf&vjCtF?35X{aD(}Ma*6mjZiQU7xNj+^pj zXzc7m2`23e8jBy9jy!3N?y6R!?!A1gO{xB<8hc9G>$@WZW!LmhoL<#xpvhtV&EKnq z96S%YH|8j-<>ZNMv4@m*z6EAi7qG^)h>;g9=J)B5@Af>qvF4agx9wdxlhuF|ja98* z2Ft~m7E|UadiyTlV1SeSHBNqm*aCG5ht6w#kJl6!NP4l2`C;WoX7rd zCuY!@BJj5)fO4JF)W6_1N2;jaYsE&ZfxV8|;27PzFln+cnKYc0L9I6z>tzo?%)G%2 z@fPXcs5L|$g4mO+G?2ZrE(^&zpPWXIlb;>1yWj}jJ!NX+%{Yb{D8mQdW<|Hdo%Zt0 z=5oS~9qADE^q@39heKP3Nqe6@{1u`Bv11>WXb`LU+Q;>0anL_$RZQ{#*O&kt5_g?L zW{VFI`cxX5O)H^s(7V_@z<5z<;zjPw8iJqpFkENC-U@TlMcHP0MsM_)dZlW3keS|} z+a1z}Ms~i1J*l@7vu%t=_MkoH51^5w)E$k$3c0v|*O()%&-2W7OQP&HY2Jg$A4HmG zV__cx^05Y+E`q5yOR9*+B%DC{`=l%dn=jQlaqq5B|vr|Uu9+d zb6KMU$U2V|EzCHW1<||r<^>#+ckk_t+(z&=8^*=fL>R!oKzkBxea0&C;BY0OR6)hp zP!FH};`5ojfz7X`1j}CT8BZ6^1yQ`Py80-AgK+482re7RJ#qp!d9m^9&*soh%u#=> z=K>Kmpl^H0)XglCe8Y~3W;+AfwVS@WdSzQhGqmrYp8v5wyssHE=rL;pd05)|o!;5y zHNCxy`9$diNS@OT9@Is-+?pU6K5WB{onbK%YG=FD00|`%7n02Q^o0Bh<7L#|ty^vL zqYe7P)>UC2^0wXatxDB!5@4RVC-w18NAae73fDbXBmDeLR7P=IE!h`Ca7SJ>$!uH) z>2vQ845ldzg@H2PCw83Xi(2_(zE!czXZOV4JaBs!@Oj{~mR9%RI z8whcZ2%m(=4cHKV)ZR)94xIfQN-kUflw+-}6Ntf=eb5M$h;5>St>{Ju+D9J9ZCNdE zQj%QjFJ_|%3)T)7%G?#8c^nd--C^V7ddh*X%*N({q{G7wTz9l;{Dr+%D@AK`U1`C| zC-r^aP}3o65DhPlhVB_S^mE5uvs1?ZXf66e2M&n3!R1eu_VdE%S0Zh4q1C>tIeuuJ zb|Oyp)4nO^)bvs9;hXP%!%!+!I-|4}i%(=KDy!aSBVb#!*YR1SolhCNF$IqP z^DVdmInmgLlD&hjF_wuB`|C+IIW!L_Q}WB}ZMwC9Gxf&kf8%HXf_Ma~RVkL33t<^@ z$H8^d;>i4-z{;szaFG+pwg&AZ^)Fi zPt|qdz0NV-@F#!=7xQZ?tY~u17%hXd@Xj_a?Z`rXI})n~XFhL)H@m5RZ#&)3LxhI0 zYIDOOhUp`YWu;#UyBo&PnnHYn!k2QoSoPi^TS*tA6iIAijnq&q1+H;u8JeaR&O)56wf#)-wl|mqdVlSo#=rlLkMIi&Y`@?m zT$nVG(XkZIc}+*`=xTN*77-7Cw1Fyu$5}od6qrT4Wi#of2%tC|c@x!9;|$PwhmC;- zwP$F1I+Nyv9G&64W$MH2uz$%i;3$aaT4zi;H6;?U&NUW5qKLNM^=}@L6OU9<5iO^y zJbNt5z$LH=#6A#H7#5Rhr?oDVHS#p9AqLK7N|ZOL_oIIy@EPNGe1w69oVUpt+_W>` z@^1tHHevx28Ukx}k_vy@T7p~G!Y~M$W8=3> zk*2cRMMvWP&hPjLxoi*Y3ra6{_m=?vd~3C7Z``qL*5aUQNM|eVNaG5BL)JW5i z*JTnbHG3>pj5;-xTp_4E@g)zSawc(`vBfJAn{EG&k1&uOud$g``qGf`@hwZ&+{`hh zI*E^X&s5lc_E>W)x>?Z}l%X4;UsaN#EhV##4bL$v;(LGT30PLnO&>`mDYuq~f->Qb zP#=#mo05#HRzy6LfBV5E83?QA*?;Su}XcqJgX7NRX#-5Q>@N9=v& z+mK0HQo-pWlj5*k@970ZfEuqY?Wik7ZYLg3bX*C1-K#aNJ11wjO^}$m|r&1`E^JBW5Fa@!Qkr^pO4Jc$8kNMGf zh-ALS_gA=4ZU86fyKR^DWud__X>yO>j;IdJcOAeUt2>h7RuQen9f)xBrONUqylpdK zW8M-gq1-uF8i&3C0(#eM$8~@?=dLy8`)vPMRuFlk-0O&XwlvE9b>wR!ait7<*tEVC z&Kx|1PrXC-YIk(-7Qq29H9>v6O`bi92EiiRUi!pfF>>L%9JWO{3tl|@iF0c_XK+sLBeur|_%9{L_%?=B{%1bK^Y(w2jD69VIG zxxWKC+v0gTedJT&&m9cYgC_@7_iKkLX|^-YwnUQ&e*{FQCkj_!B?Xe~9qc?jTR76z z95yy7%N}ntr=`DL2*zI)Qi>S;`v@;Jg;3uJSo9E4Jf`mlg5(kn{}KWnSg>VlIQ24C zmj_dBj_*_oLkZfHz=(rC==nSM9a)D#V^b`_&d+ugz4cZ+m!rw|I6C6Oogjfl64c{c z?3?C*DPj-)j%z}vvc7jY61)?bDCQG)ddzD6{9qDCS0)LROAA?AVma#<@8LMMF=ofW zzXp0t@!2}3!La698IZ_+-I|j#;%h&jC15h_)k4F(wjJd4*%oM-{#~=zNd+wG;-nyTPdc-Y3Al#0(dl-2t3Z@+F zVn6F`s}4cq!$i-*zyt5w20hNp_3iT;dlrThXX&9{2x3{VV$ACkwC=JU`;z$EIFylm z4V+JHuhKU<6PEyDhshTWC($$b+t++d>382g)WT%dJeYZJjM*YOJGe5Y*arbaY-}js zHDziEWB?VJxIbzwPvp1QA9FKfzOcbRVDOx8`A6P`SuhTn63TDzNEsa+FHCvF<4K+~2Qcr3-C?nj zPUH!os32q@ZqwFwJ6dy=jCuNgBX;ZD?Wb2VPctMC!4!XDKltE^0FGZ$LVO-JwNas? z?)yf+EA9Y@620LIFc$&<&i;5}OZhopec9ib%-SbaYh7!1P)dD2vD@Cc-? z6>t8fjUvd@0V+k}Ygy;R91`>riZ*Qpied(7CJ*2TZ zCl8M?-`;LB7*=lI(cTi9_ZG|-(RaSBH0J`01#!Mkh|7m~9k3~&{75}IHIQL)RKGI?mkN@+=eci_$wLCK+0rY5d z>^>dLOG`UQ8patP-|;6VUR!;u#8s7z8|PG=X{laqAGgyiFE!lUaVFOVF$@nAV}S|; z=t6G8c5m~*rO5f2aj`IRKH-wWX_OyFV{1O`OuYFPsHbE~Zxqk1+0~(6Jir@p>EmAI zMM@WC96R4;j{j|Kb@)1Of5Bl)6t!LxgPmMs#xhw4bc=k~US%6RqQFQm+Nt&`Ph-}! zlc=A%HyeD6F<;3Ec~8a|<6Y$X&6LIAVn_;^cx!94bW69k67)GE&uUtCeNKk>z%Ftg zm?y{!8~g+d=n;cQ6?}5wzMDUopq5Pn1LV|h_}jj_8s7I9dv3M03}lt{x1_V9U?INN zND$yNLGyLb!iNjamH+qPSoDvLE+1VE4ag(h=#F}-e6B`ON%U+)0G#3v>ZbI5&Ri*drem4^_)b14EHbzstV_TulI!ug@%Qm@$@zm~U z3|H4VcMe9@p>c|R*0vLnw)v^r25a{rqsn_u;4j}S28;r=-#D~94hiy>3e_%>l?7d! z>2W+x;(XtSzPWBp90;F^s-bq-Yy(gP)O-z}KI1gVqpi+7NX_`C&CjkQXn4fNT-9z@ zT92Y?`Qkg_Zss|?MXiCn{DVk9;m>4@UDyD2LQ|7qiPWtU+VrC;qA?c$O~HE^%~JhuY6s16o|%`Q}9Kq34k# zs8K9zK2~n|SZ5E)XQ4IPw%c;<#<4gQf_A_GKm z(xhaU1%Q_Bv9;*ShRf~B5|y!^ZDc&Bu;Q;B#kNY^6Iwf?!n%h^$ifq^)Ga937dt-5oKgwfI>e?)R~!AH%kE;^k^<$ znYmmM(uy2~(ML?ko#8|D0_m7@_qJd)2~k1-pBvoE`Hi6*D25KY(Hf8)$!au#P5qgi z|7--zH|TLdpVqsOK>Zm7NcLXHR}VvNMsdLNX`ony1zIg_#lki|F>0Q`j~|pf z9RZ@g!Im#`aQJC0I3LGYM}xM0lg?S*Sj+mkwYoukVdQ>_$5&xaz5+H&swm|*Xmx{$ zY@aWkG`Q2=6ZDr<^xwjG+d>s;?|ooZ>4y|q9dmtw%+w2x2;2N_bObEZ=2~*_a?PgZ;C2=0hP6lAP5Dam0nsHMst=%|> zoH&_iYpkbk-7d*_i8IPjP{nWg2ypRYp>i$ddc%gSI2`5mb}K zS23=9x~9D|$xj^Czxh<-59s8#%w`9nHXwl)?mM3D_F)fNTv5^UhJz?RlFZhjV7I=7q=rsO;_zV`=;I+@gG2Ahi3p0)hkSGd@?TEiVNzv=m0E zfoH5cLpVM5wwB#@yO+Wf){ZVzByeP%Tj)@7FNnMTbi4rW`=R_z*@rzR2m~2J3p2P3 za2tb^^@7OvSvrXoI%nq>php&MOMGVYebJEzdFR+o(R0VNbqf^GhEpw#TuF8)<#~Hv zGEYuhwLU=OJbitkS{KX%8DQH`NxBANwY5i9qQ+Hl?nY6v7_z_Q^NbVSsLD z$`gj1Hi%9h-XNx!B6OWwz8u4uvriV?Tnmf_cD+;XOlN8zFA94AUz4V4!t0-V4cgjm za35#8P7{~yQ}oI$h6xM-Hf%k=;{|Y%N%nLP(L_XYQPJLc&RaMuJ9vGPVNcQ7!|2EKSKDc&qFuau|r|XleLFo=flH$hUYp5J(}NW2qQLzMj0mrHW*L; zet@$Nbp#YU2r~Bz#xa`Yc?_d}LXy&PY67Ix^R``Kc!1`lfBT5$aN-1;iyTHlD|8|_ zKT32(uBoJ7m#hnP$7m3kS@jy##?bz-D4-ELAX)EjN;1|;?Lg z=%rm6Wy)N51tm2E^xbtv`a zkWgS`E%+YO@F)J>bGKX_dt5Z&q>vBQ{5cDI$_R z*mq%HOGt`Gp=QPY#BJZ+rB*OyJU}VQ%>(%h%wf0F@=VUo(6@C9t|0DeBt=Z!arWv& z%<927Wsr@{%HcCDL6HJL4HKf{bVHDfny&!PoFBTUpeHQDZ`*-#005q7sUA4R<10H0 zB61jz6*9Z;v3SZB(iEN()?6UI7#48Qk@#Nw!-v5<$KZl38|8UN)LYw%r7`fm?9?KS z1xq3lxN9K!95PoMpNnrm2Z-(+<6ih#3&bt8Y_QQ9U1#rTAnB0mFh%Ei5jmfYFIThA z@Ji4N{aHI$tha!*c+7ex?iMCa(_n1-QbdSKQpYW-ea;47t3!yF!lSq?x7Ng1L)(iuSa57o&rNM!5{-+ z1)Zf1P&jXEb4`(kCx=-S4oGEwn7z}A>~}Cv zdHdLWsMaoKJ_Uzww?0pl%MIQE{@bdttS|bgT$nU+=2K>_F**8LNuHq`83U31_HQ@k zH@K~r%&hvRu0||F|5yb`Kd>p>{i7`D%Ab%i|9Y3>lQ5nJOo%>Yk#sh#?s$3EhVpJC zr5wHAH8{=IO^aR#PNt3f9ngJ!w!GnRZ-O^-ujyNP>`_`-#6qNDo@wJDuCDO=MM7W; zr6ED5Uwh_({L(*d82XDA+PJq}35gnj#O#nz4U2G1a5moz`i*keK6+WO=`^M!4cZUI z0DkUN2GlXdm0*XMvZgt|@YzlJ7v#D9tT$N|X?z;5#>$pVG)hpggL$<LVZZAF@s4^SD+8~hl>H{BXh`h(6rc>?nfZY zmm3e9FZ$H|15w+2UUc1-yH0OJ&^?}W)C(|(O51%sI#{(9LR6XWAWw4k6Z4S9#F91` zlWkVR@>N=#mI@hpgZtayFL#*&611c5&LRI)qz;9*_%cP`}Z zjK=qxx3R*&6Vd`2tq|OHzd7MG+=y&vkoKLqNn2~%o?c{4$o)pr;{ne{2%Fx3gu|lw z=%;`ih*exGa~&24b&w^*k4prc;w9Irp6G+ge&4)+zA>e#nK15f++q-CM&YM$> zli^z!*Ae)=LC9TGcqW@LlSSkD#yynp^_YS{Jjco*jVY(!d2#5rqF3hrFk)B)4=`~( zsO!!KluFWTWj6w+ie&^4-51m&-y2~YQZpsY@uw)r7UN6)NyoZEp>O*<`D|r-u0Hzb zb6*B{l?`$T!=jp_t*HY*QwdelMHQ7iFQ^@0#wY%FIbCXgt9)d0qGNYf-QL^aw&rh_7 z8;HJ+-6{Ffe{M=VMMd}kWM#I~h!f8tWWoIH5d|*g05%I*XWW@*CV4>#xi#RKd=Yts zww+*Q2chyb+u@v~3iJ2^N!|2zZ9J7v1~=~)@WXk}`1=cm6~-?Qvq9k~fTrhoIlmM| z$mg3(9Xm?m=OxycZ1VP&HB?@G2O+?ReMIWQMvXgU3Xct!6xm~#-oVd+lLqAHnQ_C*BLftKI5}`Qdx8 z$#|MDOOrHbCI5B#j|k&X><-12ybpOa>D!Jea^Qv(Ef6M#U18GE309Ccr5Ow>v`NIa zcU00}AAvd2nfoG!I+oiBZ6I!wT_`iUG71yDsroKmH`3EPmM`!Wj50_ylYqa>HZ=&D z%JHz(Z2A%hVg#1|9W5E-R=J-}Sl>^*Ak4xXNn-*VJp0V$2xz>c{$S4N2ds139nv%j zIgH3|4mtAmk2bx%L9J*@=6>61C z@8(R(Umu;5^fNx;eFXJU=Yt^MZ1^1!M=Y(8^*G|sSG#w!i=@OImM~iv`_$mS;3Gia zqO-zTibLgb)@0i@-;z^PdOxe#L$Xg(FN(}d8=2PR$^o}6onh-M^E#=kdSQ^AHjX~# zaP}am#$0DWjBcIlnZ5S$(g<>Fd%V`+#BRbo@7vq<27mkkBuCta z^kd=5dVRjdH;m65dC_XCFMVKSk*os^YC_UW1`BUgr>*)LkJ#y^=XZPr62N1PJIN7} z2Qap;b=8Y;hTP3+N#|Q$|4kq;1=YWJz*4jQQPI{R;*-7+w<9B?7 zf)y~hxd>~1xM~eFq_Mp4wGbfTcRb9RYb9~*sIhPC#tsYp$s(q?Cqg4l=NS-;~W0FKV-NazVH?_Y{1=pT68cE`v6!ZDEGg<^tF|< z6Z6HI^6qIBAII>JN2u1DGb@8SglnCFWxMO^F}qM0(v5UhDf&A;0*i_kl+y~&gR1e7 z5bPW&aAZy4ad8+e-*PNh25I$3b83yRF3swF7E0ztQ14yJsDOlP>HJ&VTs(GG8Ya_cSGAZhh365xq@eigus3D+NXs*c?YPbeaxp`20I4&l`-v+I{SkkI0^M$fud^5Ll9A{kT2=+IU#M&BGl+5@1a?0PV^UXUt#*oZ zf;(=JLYbPxq43uQ`O0;EU?QzyXZxCamuqD8Tu>C2yD$3gRfae0+4mnL@6ZQdsV@TW z&bR|`6@Yw=Tq9r7Lo!lDMblPL1cdFA3v{}EoxfY*QOH@<|GMwChbo$RGLy%l@d`8R`S zX`b-OfwV|)bULH>v{iFlZd}^ugpY-dl=%dKy#hfjeH4eo1ufui)VsaS>(h2;K0V(O zebZ{iO2tF2P&M0-k;YnNKUh*1vXCK|78a`((*FGOok4e&ZWjg|(HHa=W;SoT1O*^bo_jAB*DyUxLaee2>C9QG#Afe|&q%y%j!?w0DxnNN{wW zmUz;!>1L-dbd*-}Xq6}O0WL?=ty^ES(ILIh)H9#3rPX#Y9Sk-o+!vqW{R3aZSOZiu zAkr9FSF_ez!R^K`<~TR*TB+F9TeGFqfQLl(b#a)TDrT5EOb*?tn4}8RGDF0}9CrSAOZ`*SWVbR^c*6uFH;-a#zJ9+uWwYCvsE{yTSEn45LpUFrZ=XYcN z3fnDu;Tz?21SWrq5>csQUaO^*Rq$-cl|mdMz);2OD7_|OU$@KUFYcD_Ye0jJ5T}~g zeb)lx&Vq5#10IevR%&^UH`3yare&;!jq2K5J=#g+YxR~Tp+gag8j(q0_RlkUW`}Y8 z3Tz+v5-#VAnGp+kSD#4PU60xZIIkJJG}e1SPewS$)Q-t* z(Cp~m)Iu(gK_UAG-qqI&xH$Y>wkX|^YpGk8KRlf{tATCxv{p$*o!7`g6V@x_Jemlw zVXN^=-q9nTqx~CSf&_fu&Et4&ADh83vp*b8D#lKsV7Qr^b?#&+zjejJ$3{h#z_af< z>aL)w!PilUYORpMS|Z%x_j)Tw|-_;oK9*6Dsapc10OYG4>BscaOHBX~5m z;@vap;6bT8ru__NAcyV!esp`0%0D)`9fjxe%uU4oj7Rrq22Qdw_Z_F5#z*3Ldq?eh zq$E)a3IQ=$*#POyaa zsW%V^a<jaU>P_R2v}qS_QPL*lU9Z#4@xQLjXog*pt_xMxjHKcZ7`<_ zrS65D6n&-16TI22r4&g3To>;p{^`ArV-?}LLR;@P++_R0zL=8-X(X%bb%AIyg^kmU zN6S!q<%HQ8op*{5dh>1Lyt&aslS|F_C@Qf-GcIMm@+O84cWsK54%6QCYUG$PjIzAm za`zx{x6gSN-Z4q-m3#|y2z)RKevY9JdT$kmU!(OU&2tByZy3G+XmrR?G5VoM6EXJ6ffmAP~+`PUeY8zyh!1l zHI@<-1UHW>NNlQKAAM=v)_PPc|*8-}n;l>ui_ayzuB9ZH73Q z(86|{zCIhbNxXa7NrCh-vQF@&Z?(4G^%SSBY(>C{8dEu6rTE9(aQu5-!1@B+D*)KS6a z+)C$~#$I1u44t-~Knz2Nd(}xh9C&LEDjPl~)4_+H{lJ&-(qL9j zQQq1UAy-z#Lf!?@)g<$D%OHK_0CtUz=9aMoXE&;P3Y@4l37>(8x&V&~d?scc)2op3 z)+yNdrg$fgxO}PfAE^l7@f(^MQB$jXub}?bwCo#u3pLi^m!kwehFNONXlpGs_otHI zrPc;in_?PBOC?QkqnBZ&q3krr!gia%A|>1#mug%*rS_PIgpO{k(omz;9yT3C=~`A< z2T69S(Cs{g#%Y*_YDhO9wU>g#w&xC~hkxwkj@llwc%d#i25Ar=pB3k_QSZ$k)xi35 zm7?>k!Ef!@tI%Ms3v4wBVu0?J%V8Lm5|sz$Mu|Ymg;EJFIw56YxuKuo6oDh!joKf* z!@WQ=;G*Vy@CG)=sW}YDe$ifjL0)RI;r6Yy=C(of{2k(HklVX)8@Y)KMM69Ho9IAo zisJo)cg^{>Vh|af77t6Jy9WF?M&NvZDxly@mW>1bb2kg!t9^sl1W3?LN^swsPaWS& z;BV^^(zT*~GzQrKS+^WVt9okQnrWwhE^U-ohd?JeL$ucUw!;`Ut%V#^YQ z9Rb75JiXTaZc{cDZS0+kU@%1j1sF z55j8Mr_*<_zC>GxQl69mYeYK1cgHyH)kVDz5=-QD7D)e0=0ZWQYsRX1+VK~&<6STG zqD6wY#UFfnitNfH%4=H_2H;RWcoNTELI|h{pExuS%XyZTh4UJBJO}qI zGwY;EUucZfIkEwnZ@*UQJw404x1Uu0zNWD=Y*F&3a}NM`C56;I^my8!Y^aFr2xOm2 zK$a@+X&lq_g0t)6ZO5St?>z{$$vV`L`grGkJJG20j@J@Fv@)bU>VK_?d=Z8HZ9W;R zb}A4~|K^tS`l%@b-e``wij|%FN?;k&%m2Go?GQ`Cx?B-xgEH;6Q)dTcdQKS-Xm|q2 zquE*AW39u#N>|p0VbQUDoV>)f;3uG{rO*T`-=r;P*k8!XQwHW{*Mk#)iCDzG;h}_| zinPgXY(i`!lFpV9v8^6{giMM*@+Fk6TXv4x1g@0uo_Y>B@27>6g04%2L)JCzB-)-NI*bbM8`GRj}qJ?4GL{L4) zu`Dr(EmOKZ90w=8(^94=qr^0M6WU9(O$iVOs)5EIh32x2I)Za{4myg1No$PYT0Tx$ zH>^lTS8!`jZBsMLZptx!)sqMJO>2b^7_cH&hP8|;+Ca*SA}>LC+*S3ouwu7gw8F?n zU=qlV(%v}jeS`~B;n|FGClCQq2FRnM>v+f4hN=WY?O0r&k2l}#?j2okt-_}8!rpbp zYHNUsu(~{Xrw3V%K6wREA99%rvS2aDtkOoyby&>ZMB}u@cZ_kt6@UV*ljAwxg_V#6 zc)#C>=9DpO{dKn>Q*&T-WCY7q)G(>jThb(I31%r5*BfCzUYjH-M&a>4n-`A1cF(GW z&)^cQRVGSNxuyFo{%Cf$HrW+}^6F43OO74l6A13|AZUkRe%Kl6 zeOBD!0^RRDt>~!gD0Bt-Fz%zP5|~1Vl-Ij0a)(_begIww-&Ny@qIGZR)MxlUyF-Uz z{51enEdyY%9sAYhUK-(6DI`qKv+k4U_LswCLUMSMcg0*(q9?euO*VyuX&YcMnDol| z@fQYR7T!hpmQht@3JcB ziGyZfwQl9t;<33_t-k^nId>!}biUNk{~Gv%remccTN^*1Rd z13uD=4o`k##w>ea=N|et?&dUspfW-?!%;IUh$g`DPw>;-?_>J;xre|!150=SL@;rv zB$GC}mn720ITbF`o-;3pT!Q&4`>2k(Y@Q?^$Vyq}&8{W*W$A;z1ufXV7ydH`7)~U< z^ZIgKZU0C`(+k;EGO`!IU|GCfjGt{6@2%{L#jOEF0I>4R>+3>sfZ3(+0{E;~m^Yj< zD}|+01nk{;ErUm}s2r|r@RvaQCX+~{zrJGTwK8I-OcZ^*GFBuEBH>n$ zr3U1%SAc4D-Prf^Sq{e?IM}CF+1}qyg00IwXs|iHmaQ*2+gH8#vkxT{t`4{b;Npai z?#=H41TqRAutr?)W%*fsQl&X<7ODXZHKFL594dk77GY;T)+~+|lyOwq(n!nkjVrIJbVEmO&R}qaD+vj(^N7eT;etbt>QP1t1%N|EU@uP9{ z)>F3EYkb5M5WR?d+`S|xJJ6P7hk$Mk6RHOt71tMXA^ZQqB07y#hL@;(83`HCIew&&b%NG6auU9rQ{WtW^8Fx`3nCA#!L1ed zMiHE)K1qVL8WWyvao9JVD>z#d*P+_Z+i6t%6XblD4ia}8L?+e2-T|6o`%m$3lK-e& zsySD-H|**8x-w03RfkKejtraI*Tc{P(kU!rWskMH6km+5Xv>y8_8MInE(Y;1v_%VG z-t|EU0cjE2JB2)K(7dSguqWrY6W;eYeaC(qIw>{?&v`Ker?Yuas=^Jr%f`;k9BnOv zdGj}O)-krk>d)3WdL}KX(Z&I=U0L~H5(4~~yeJP@DevT&37 zYvdY0*<@^{Ri#dAmFNd%ub)Cml-wu#HHAm;nQS%hgv*_M#amR%!!SrJZ3Fu!f{=e*9{@1aPAkPGi@-fT|Y&zmVsx(e}!j z(bg5?qfFo$IDUmVxHZr+9^8E3@LU$v@RU)QAf^nk>NIB0?w1R>?FP868!$)y7zo$i zhVE^0w|dKk&IYm+>W#f$s*TJe(T$>t>gyf&V85IkZZF$&gW-g96g+F7l-p*o|IehT zgnCO*(_|T9j91Q>Q!XpXDbMgOqdH+KsSFKKK$0)gdVFmZnTw zplkPTorLC`UPDPz_FmsO-Gb8@^{&%su;Dq7$VS3nOb|Btvc{0>?nK*8Cpp@mqq6G;BC!8H<~85wJH|9Js^1pS6`Wh zo~eBD!7Idrf)l}oIMHba@UzK*4T2P*wmHy1vw8+i6c7=D4UCgoeW1-nYmlgXEWc<5 zUy+%&9&pxM?ue?4IWDg__AYl%l3O{`kV1l9S{{q= z#?tP!Ug@Mdc{h!gDEE9oI?e?qfRQ7vqGE$+17@xbV)wRDhvh-0{i=Uskbl#uI9l#| zQ;PaSGl(T&s)wBjXd?3rt=8s@ajI*cxe8;mbz+qq3!i2}ut0YiJE>_`P4eQ%kfH*X zw!6vsAgJ)cF2+XQS?VpjO~3=ME5mIpDqP;#e908)4Lrcu*)1(5znEZ%s=KdN?jxUX z#xRj*z6;MKJi_Y&Pfr+ZMh?&S9m(suI86*Dj2zlb)XNyOxB9j+v&y(STWz*pfm*Zk ziENS!$un{L*bDh+t0o7C6%sylw&fOmxX4K;v%7pTkM<1bB%1nS|QAR&)cvID~nAJ0|1SMW*Lm+~jLHK6GGMv6g z_27#LGHz`pl3t3gSSpARFJ0q|mS>g2Jo62Dr1yTeFCL^=Cy7^;wulO9VbfVa`)yU1 z1U+-NK^!%mcIjARRTf#yieLRB(*LrX^RCAj@x4DC4-#lh^ z!^_UwW1$EtgR4CgdKzt*dh!e-~`Z;;CEyr>YGo5$d#hk45#9Kegmd2@u5!ppm zIgx)jM~23;Jw}=9y{6Kb?u=T=jS+VPcGuTCu$Rt;;5JeK(Csc9UuADERj@#zcRq5V zrUQPhnM_bSVwX};V-~7Q^iW9RFElER1z@bv2LJTuHm5NER)=}aC-_G6CKMrUV?kDBr%Jlxv4*r!O%@6sb@HhK(`HZ3>FDOOIX|j8-bU*p%;n)5aVMgYxa;B| zO?gHZ#k^W?!W-!qx}x|B$!~lKOCg8Ck*GBFCnJo-A$f9I*n#%x^hV8o-kw~5>?}rm zcCuB7QAXr;?7gk>-rZ|Ax=B5Dp?*nUc*yeI7$X)3sY^9s>pc${Rp-RK#&k;2z`Urc z-%A`^GmrBh-+-`CPE^}$-a5h1mjn?))JYl;oQyo>3?SP;-s7EzO}))`$z3}&7J`8n z5Aw0YQkpmA0FR1x9&l>$(;0P~b`<8?el=J4;nZkqw9>R5snVIYpY{IgUS;}KAID+- z-PQ+^Jn8$KoIQfXX%@!@H~ zS#51cc*ui)z!Q$)t2B&(@AHU0q0PZEyS6y95U{nicjp4MbO9`3-Oiq0^y(7=e&9>+ z+8>~}v;h$GMNY}kFGH!!(tq9cOb@KVp$DZC$c(|!$-}UyRt-`(u?l0ZK$|uizf6&? zwOi9*&Qnp3ya3hT0a>wB30pJL?BzhLO_Tq*|3ZOQNU)G=8@GDhv*VrMH!p^qdE_WAh9gUrvxN=Md)yk0m85x+ zk>h8PA3iEeRYI79ktbS#hRg?uI{5p-GmV`3vht0mdKuCl&%QSK`neu?m=leu@>^|W+q;4b@T zU~56klH|}j=k|yncngN>*v$85>~fA|!#fB-B_7DI!>ebKiMk>>79*nJt$KQ=VY{`e z)pTy!h@VzxlwM&v*JR;KSBu+J)k9P;DgXNEy^`Om*N{YdZCN>s;7;j}`g)EO)EENl&}4fI4PUqy0!`21HQ<<4ct})|>ufja!1$c30OV!s~KBgF;3mrs~$ z<_xqPnv3|xJr0^{7dLpE=4RwFc`+SE~dJaY{l zt$oV1+zwRR-rD>FU&2LstIQEDn|SA&cX}@+9{8cpYjP=Dal0>@V9QD@dy4g z%DyJNATG`WR5x>289JjSvUP6EooQQ^=#&v=9KW^Pi_QpEEd3_jPg3vL)Uyb9R93N# z$j}Rtv{eHygtexVl{@KXtQ!27#|m~55mW4~0myh(aO|>9DpL;nvff|*ye{r#MksIH zQ2>0+zD#QA!S`hcFRVqzA$Z5Et1pDyO4oD(?1Uo0H8z4n16zzz%AuG#SEs6HWELFg z?ATz{Xtf7FLL4hS+RB&9!ZbYVxCBASW|M28ZqJ$=Hyh_UllyWq-}n+BFCTWN$TvBA z%wM8$>b`f`;g$qSmPQ=X&v96-HGI2O%OyWFf{)`2#_0H0^vpgG%m>7r169!HnmI4Y z*wL-%MWI~0ua8XJjJ2MGd97N6^^L-zZ!Bpmv8`35p_F2&+sWnYGN;NzQcF=TwP1>V zrvsV3d)JqC=s_-`9);vS@NOzo*Uh!kCZan_mYGsNi2j2wn8b~(x9(>0-tzwEgu)KseW`#6u7vZv=!P$|f z#>st$wchtw80uH&GKz)S1o!e_hW#%2fmL@l2hA+Z$#_N*3p^M$sKps z!gY>>TFaVX{wk>;nv1-NW}7tgTeHoNl@cH>`l#v$Z_>@)DiVo#%EOJu>J>%76v1(i zThltd1i56~**ed@fI}j-+;RhAp;L!BD+kl#T5{1(FNYMDCfSEv4&OWWI^^$Y^%jg> zbR_5%R0Y-1=Mw@Rxp#2ntOtre(^X!@qY1l4zQxheTtq$a9?+;3kY;Nyq)T=$<%l%pz#WJ`SPlK<%Cb1nh@@k=92ZiDgD_46%q-w!Sf`5 zDJDN4^>u)qSnnE(D5mRv)~~ylmaNLYl}d^OmJ_(?GiD3$Y+a)nDSLf^y?bcR-Zuu{ z^|so(iQpA|r(mPkO>gu{dA?Pu5Zr}`{FZ6}%NKdc#vr>cVAwBWNisTBfm25H5s9gKi96O1K z^#=VdYAZ>MrB;CWdeU`3%0OP(u~{|n&ES1=%>bjuEqlK60ziyT7)Wt?Dx^`=U@exo zQAWWSKEvg%AdUM_z8OLa&DPf6roo;gPjyq(cEqB6k7SB92xyVF2{@nl3U5aS+qa+n zf~T8tMWvxrpxaMnFLRT~F^04ZXCyrFyv%YCmhJ4awZ}nh1<5}yQN+Vz8GIt~IYL|_ zIn%TP!M4KN*~VCp#?qffI5YCoCA#|+;?PQs72+gwd{Oc%$? zB{2}iuf}JY&3g>~b-fKxKkqI_`F=9@m1myhignHa6Ht2H=KFVK@zLSxuOr<5XHT;{ zrA@iR1|O=%!{xF+U2|5pMy0iaX2YT&!lnL^Gl77ub(la42v;4?tr?@xglbTA9=bbY zfO3W+eqNvQyd<|4I&Vkk^sUxwi|cj&j`5563?ugbyB4HTfav`c9FNMaxpDWtz1O+9 zW1i(*7kaCluvJbeV%xpEqFd#oKi3;mzGxL$250pk3sF>sh5^t&wspQ1j+4|))q_tS zEUPL>$TODOQ8CD1HfSmK#?yjqmbIFlcDyhLAOu@D=ptB-d&?LU-X5^)CH?qNnUV#! z(=JsG*o;B&DOM+LPs(bK+27EMG%Yrg&Poz80mcF8%9?O(9ybi)>q9BM%)Ui2CK8gao9 zfsr!?P?*AzVH6b2)Q|JI$BytTL&Shv!mVos4`xiLykF(;@=_>exw_=jsfk1@faJ`w z^r6)+m|{_R;F4xlx)uu{e@pq@?h|{S#ziG z`_@-|m(*n_MAW1#wB-B{%fZ~lgXT2}vtCNQCy8^$arbKbTF0U~(tDxZD6rORI}IfF z(Ne5nSx=%0tyi=KJ?2@>PZb*P7x@j^ITdPMR=CeMvjW8(`Va{*nt1O*w+j=3spqkR zaEwy<%j_HLIZEGS?3D^Z&UywaG8PoGEG<*1mL%E4$pIdDuv@}9nsy}0Zf9ZZvOG%~ zm+ZZ}1uD08&Xy;8T3fI4quf!9!2O=xb{w$!SVo`ejT(oM57)8vwx#zpidLq*aa3t& z3Lz8jmrH04sg=m-#oHu2Mb~0md_!8fDkSqWA4H98*MT`kbaZ*qCry#PC$+{{vq2}S zKAw1-#Gx2iCUIFZGO#~|i)?BP>oNH+!Ld=hZQKWVR_5@Dmy?^opU6#jy|w z6EpIibY(fM)yc!;bfx=vz3>Z{WrLw*4GwD(5NEr$W>DpcDzBx*8~X$aCLIvQw4*6q zJ{seRo>$mNl2}EUvhU>Au}agYv#uq&mkQt@CRBayBSjY@|CX&+j(m-3&GhAb*K=p- z_C$VzrW%chudhNFE{Yev6Y;qq&-2nyw&RKg8=|#HC<53B?vTihi}>LhKOG>TVf&5IXQ!l z#ml-PFzk%yR63ui>sEc<(sbzRcKC3##;JgM$|cV_N;_sd3zfeI09dES&4;nXUBT|&HeQw8sHkbC*@dl8+wAm3Z!(h@r z=+V`YXf!I6Hbg=c1&E9y87b=fOuns~4~SSDY2b~M8gb(a;Iy#c!kC?E>P4=%H%GQo zW<%>(MpolralMi;H^NesZnGSALM0jfXepG*xC#4ZZb}*aZW3g*cPcaJZpH*^13N!; zTl5;U6M1MYe-pRcOJ6XQ;p)%nWfvGYo4Oo++s63}OC!a!ix4^e>ZPH}(fa+qTrhH4 z4^1Q8s}t~~(8)^W5?`kTz1f}|%BRH+eZ({0cL7ryyMiJFW}mb+fG=epfp2B(FxR>z z3-I5`q;`V^?>1Izqv?b(+w2fSde-?h$Q^g~M|7?H%t0_%O+u?&(5&j}=d7J?#DPwV zq;@C1vShGP!%aS(JCHyN@Gbmv$Z*HL!+CKI*2T3Xx6?ZGPJ77H5xy75*2X) z(Y;RC*c1CPDB|~V-RPs6pRuN+Zml*Z-lGv$@Ssh+$0eQa2<@&bxFBfpyIN zJaiWa++@zvk|FSBRgJ?sM+P%wNbo@r^*kxek*SmtxZ)4|a=09<7E(P(&p|ul%Bv-r zUj-&haF^gt6VYg;1BVN08Px4JaZB~WaR}@}@#if^c%fyzx^Zj_k%cH7O#Zo@-DmOI zv@=hvXlW31^jm5l4yS)FqoyPf8p#P}p`PNa$?EMu<0{nH7R_id6UmVl*6u*oc*D1|>dHE}c|VU9 zE%^%jv}dt>Z|S1^1ULAfF&26JQm?pQ)EQ-Lzs5nX!&WXeIWb zLG~`9`vNjC){x*sIpiLXIR$Yq_Syd8*wOzlh9+Ey#vsFYlcz?$-nhZaeccY*99pvp zb;C`^@6?_&N3(Jo9ecPxIOGfx1*_hX$A=Kre5_B$9J*uddf`m0-DjUN&cF+bLvcBO z=xmZ3gF}(Egx0&Z#Rvq6PuucXKyA*BgS#lTGlYxI$j~)t-_JlLN@D~=;MsGIccH5X zKExbC&3Pc6lz!X}%EGzDVxx3q-hnWul@rc~ew=fXCx7b-YV*?3tj3jyv4iZo5(9{N@31Q#j%|OP6`3@;ReF_X@Hb__Fk=EGOF{=?&N+KttVZw zm3P97R?DWQzT1UAK?@_cbb#f0CHX1?j*$7zHT%7>PIID!UU-n!i=efUuGwQ;T9s(T z`~p*d-P&%fi4YpKEjSh;T45Y*6Zhjnq{ASkno{QQiWtLTzc6&0HFfR+&-xB3i=1w%|aqVf3y>R}b^Wurl7mV~$(#POW9YDE}R9i>*=-0va# z8L#yk_vV<2Tlzkc`YTtRb+mKZhNMiL25CC`ZX((!gbBg1z z?_j6u)mBq`NqH#_F0g2_XQ$l~v*16?(hl09*B)P&j|>984j+eQASa_uwSMdA5UHp> z*Wi;6Q64wSWg13i?l7$cVVquVpu1KlvU;u9LrlIWM=iV#3a@qyHY9-z$h39!TbO=? z#jTUGVYWf5RL`DltLXV?ue?Uu-e)aSZ*aNJLv^yfXM+M!u8v%jrCAnc2%Cf7{>GP( zc%+@AX#mP`IIs+aCg}DuTN@x=3bQiZh}CL1LKnOh9Xd`jk|R=Yk6`uzuZ%B%I0AmRmq8G`M;RpZiJ%^KWZtlJAvbGR=-cbd z*nyskbq64hG=gU3x#n$_yVYx)30T+Vu-2r*Rj!P2DNZP_W<+Qo`4XbR5OkjuG;Fr0 z8`?HPAXEb~&c*Y4BMYbZ6DFfIO*>cKXcy@ptC2b|IZimxKo^>(@@OOlh@2rX#XzID zTxtiEvfldL-}n+}h~+&ybYEj$bsvbl)@0E%nfh)vP9nEbw6G0zn3Cef;CgFkxuPX~ zyz!^f(WdEop2@-{55+A^OA+kN+oswUI;k^ntKaw%KCm|bz?VR2f>;%>GbYY?Alr<9 z3Q;N7kywGyd>Y&o8?0NpLNvhed*1c&Kr#TKByu`dP7Tp%SAnJLW2V@C8leekXN-c= z`Rw}Qw|B7eu2CuK79CC3Y^&jEtefvnphiD(^D?<6e3lD_0(uGfcn5eW8A?XgYwz|3 zs5~8K>#vQx{1Pb%0!}2W2~J)kL_PB1MsYwlDPtYr;RWCz5*B-i8fFZ0qg**UF<1sJ z3(!3f$7rU>4I-2$_q;ufdoPQ1@5xBE)Wc@qZ0lGtU@r-lVr;L)AC zja0hL>d_ekTiHZ|8rJY9t>og8?2eJFuN zm=$u4u`_IxlwnO&i^hOS@Xx+G76#CI43SJ#KmiOCU@rK3sab%2Hnm2^;+(3E_kH&s7m9+L9W4w$A>*XWO zTqr?+wzq-p?3o`nt=vk+yl_!ut;(frkNWDpA>zaUb0ZDjmh%?yF{Eb%mbDk*8tw6{ zh(5p$?8-V5bfo~ry$H$fVJ6!)Azb!;yaMW8?!$Ev?i`D;BL6+phGvg~ z_B^iBhu2ZYBTlSSDoJIjQLi!nXS-PjlbGVFi`!p?X-X=G3mnAU0C!G zwC=a?McQK*m7B#U$XWcLZC1SYT2xthH&=fqL|e8k5(JwhkKdn7T{#PUZXeWx_9&Q6Q- z85_7)U>j`ukh4fgMJ{K4EJm>>L1S6YTJr*ZBxkC=SuWHqhnZHV5^Cdc1Nj99Id?* z^r)SHqUIj;sZ$<@hQHTOornAGac}M3Hy|d-ISBP!2GO%$!-;%`ztLwWXe1q)Iux91 z>@gpvy=~^fqn9a-pN^L8mbKu#*lw(D81_^kZcbD=5vK1(VF1R;8oU)sK$1EnUB-Pd zT5@c-pHHxQ`$lgHx@Xd*nHyRUne}N8UDkPH?1P(qKvHVtq9z5YCG$w~n2gR`vX(WA z0gvJ1P_0RZ!>uJd<-x>b7G@J04h~PoHZA3zK3=P|cU&-|LMv*xmgj($%zHLHy-Wjc zCgc%rgVOHvVKJZ(mP25aiMcS}1Dyz*VwE1{S8uyrOi?SMxgVgULf*kpT$F@8B z&vQC~)UJd`5#N?t_vjAG2KoHsqbZA|vB0U61sZo`J>bkMRR%s!_uQegpDa;;+myZ+ z%ZEGpP%`B->gf4K;dsd3Qq@^sgS8v<{+I4mXLcKwV2)9kN}_pQN`PB2p=&?Y=I%XM zj+CBVu&8w3uYD<$D5X~aafQm-`@ADdhXmPP{^eM1R)6boyrI4{+44Wt69?gIO!ChQ zDn_?xsHRzqGV55XtU5}RQJWEj^1GrzIDn3cUVtqKRnFfb?2@&3{fNuHQ=2G2RYodP zciFKzWIB!q*y|T_*ukWrX+MQeM-0->sTCCD<{OY{Ko#+xmRz1D%br3>Zn*EXR=NZub_=Or#-KI6Gm>Gs2@_7)j zwTqw9vIBB!r?1U8-=Fwv^kSLwYQTA{2J=;D_7Y-y6P1B*IoY%h#&i9$y@d!ju&1;) z*3~5jJBvYGDs+~C^UXI{g2So!9;k|yIddg_;gH>bl}>ZyQSDwIHY?_2lgk@&5}Ir0 zXbFrYpl%wI39NJ48F?MplS1jrFDnh21zd6}pQCY6t#J2Sg`-a4>^bb{9;Xd{Z4>&+ z^HVnF#pQ9#c@Lu{b0+MQ9ro57Z`DcpE)a8FoyV7!Fu`c94N{*)ORO|ijvnlO zLn!8`CC%2+flAK4?py_!znj4nozBCzTyE|JcU@H82(Z;BLjK0)o**?MA4a`-`7DA( zen`Ya@^_p@+Bj~O)+|>K<;X>=D37X&c#Ak_W{D&H{_BSTz?kT)f{|>rAq0L%!h{=iGzj0`9>}&6-xsRu(dc&3MJNDu3823pu?zQ8 zev^B-#pCGRTJMbMV<4lFa;l^RZ}Mg6O}X3)RU2@N{G41!wi!nQeg@zQ=HbWA$?C9#1JQ&!Dr_I?-Ka-fQXoq!m}G3lgZB3YC|^LlNy zkM|^aCy+tndZ8z1wY)oTqI@ocYuMpV;>d}(Ie6i^><#>7EgXvaJJL6)_2{;Dxd%gf zZBJ-k0}MuOO>LpcE$c<49Qv>|shZh3N%oF_6YBptZ9XFpsM5*Q4r=1t2mveYqac*$ z1&3y+YPUiO1~fEUz~lDv3t8mXup(wlygKd%YH?dK=n6Tv4uIn_}st<(sv5!1w#cM$K9Crn*+c42}DureND za0VwDC?(epQvfMAveosnMWCYhpsRI(hnjiwc$O*K9NKq#QCRrw5-#Uuhp}&P#vZJ9 zsz^JOGdEGcE`8L?of~rfzT8d95O~`f1O+;UoZsif0LPHB9YtQ`@&mIbe!6vf097U7 z2NK&JQQjE#7QX#dY&zVHm~A)~27R7mdb)3L>LRRxxN%KMT|yXv-c7#8u4 zX@vPU1Bp=YLRH6g^iohJRQ5qKnBs~#q9rXLXiqfRUEir`(mz$i3M6!I?X59I@01#u zbOa>MUYgT$u3NYdiC5vu9FqM2)a9~2fH=<7eb+oXTZ6(D*n1`f`tUWyRtA)S7}K=! zr9G=R&~oL(sBCeIKJ+1>?wV_KJZPO)EnbT&Ey$P59(3G6^1vM6S7xd49#~cGJSVXo zD5wKwXuN7-HR1$rtN7k0AS=L-<99*dKc5O-^h?ejhn5fAiQ^2s#ZIcLdePl>sD~St zE16o}@&mrr$yZZ+0L@*Pbgdap>t%$%_L_l4Hyp)w9k62bH>`M{h`BGXL2_i9&QrDH z(IHjuskbhDg{IDyD`ABsY5PuNEC>Vh0_9ExZ>oE=>s)I}t$9as{INn~mZ3z0;KP+x z6-2W^50fW#(bUEb)qOBcm0hnEpO^+|m_SsGGJC0`(H7282{fW}<~tR!I9)eYxm*U@ z?q_B-a!xwmv3>2cjk(`N4Ocr`sK z3JMyUJqYIcFbP^N_mPd#ABT}$;pnq!sbue2;-cz6cdkwDmPsJwH1uXk(xE$y3+dymQQkbx^BWU4>w_KjkOX8+C%s-pp-Ah9{uDNAx0mU6J);ki+WRUE z(>(!tP^+hquO5KDwn^(462pYcB7Y*EVE5`+Eeh|ZrkWi3%XzHNceTR6cFJq~Y=q{` z^QN_1)mEvq1Ayej@hpI{gDJ3%+X&an)_r}}!w8!t>QqeTN2IiRf>&iTQC&(0CNii3 zns*#bFYgF0$oQG9mm&Zax_BPzdwR)MdnL*hm1?uIVW6wR5l`QNx~$1scXC|=?Fm{d z8Wi4g*}X_W8LFMUASNtj*e~ZfyUM%Dj1C<@baQABdRe7W8wkO9Ig8WSpT1_EK>gRDOS=Z1Mt-nmN@0E7<1=e&`K$__BbK zE@soqLT492qqOo`(GEhMq<`&~QhzlbHN20Pfjl3cs+EsL(&prR@0hh7^+||UbBy3x z0J#;W$6A1)-o$P8kkgow#u#iIO5LGj_m(ThzLSmHxrLI(+rAJ`;YqGfN)TXl6bY{Vo@Bxbk zf(hWqciq4Bn4m|cRo!vMUV?q+_|x4@C34O1pxeSU2b=pGaQcNg6Jrq6j1Tt&fQvx3 z_3=1a&Venh!eSR4bMscehr|yP^4o5KU+|4j1g)peYil`(=`vy+R2RK31v|EhHELD` z1&x8PBl+z`&umQN#ZkoEbJ`_nmI}vMV-iJXi%x@y2+h57DifBP{AG0i3dK%7lql_o z&D?l(PG5P5^vkSo99)oiaozPTXRj^6{@GVwkxHof%!vR@K(oJc7(f*3zci$iD<>!m zJMZQ4DigQ8GADEUR9ktk>6r4iwP_RUGq?ApzJoF@Q?)M79(7odDxHpU*4@FqoWa+$ z+6xdceCoOileWH$n`iKve75j4g2oqPp&b&%5p zEfS726`Xo&av)Pg$XQ^dT*1A$QJcg~sK0|7!$VX&y>k#ZCfzz-h1g43Je3Z;hZohF z5KU2OPC^CS=Tlt~JTBhmEWP4^(iU~FPtZB^)L4e=Qq-2dH|+v?!_54=t_&~Qe)ns; zWpx-^Vo!9lFkwWlITpXBQ@T*q)%2CZCom(tQ_oSD62mjrfmD|3KqgqZg+Jy zSohiuJ4WsE6e3IfI`)>qLx>HsLKL69B?|;*^OzCd)qmcsbu}p~v)=9u$WY7p<9P8c zc@+dAgRZ{F!{AJ33??;-gwuc$k$c;f)TEfS!~2Wh+R{;aQiNnUK^vriYbd~g#$LBs zwEcD#OdVL)5QG}^HvysTE_cxFJ{&#|6THP72sGka3TRquDab?@&g!<7=E|)Q4SseV zdrJiHEtlO;l)Pj@k73-T(I(F8wSg1qrFf}F`6`{PyESs|0g(+-&Va=TF1!mNp1OE^o!_!jQCI@U+sCq@i5g3YBMw$V+C$ zBM#n;mH4XZP}5>pXr$iC>|0wL2JTzNR^cylk~ql1O!~nJZU&VBjziYIn~|u25#}au z278#kGV}G*?Sjf?4E{joy5=bBU@2Dd%f)G!7T*oPg|!t|SurV5sXA9`mNpU-rmuTs zpP*J#PC{Q8H8t%jIt`?YG>5KJ{(KRN^@`CHx0*6d)`E61p2Z{x%q*0#PV2hi>|FI0 zUXAo)(FlP9sH}yFt~i9zLwCPz^iX?X1+(ThQe1VDJ2SGkX zczVB!XXB_>R==}yVlx_{~#J~pnMj${)75>aE8XiRv>5YkV$Yb z8nCKqrCR4q&HAYUxYeeHup0o__6JrLSa|(DQaJ#g*SYV}%RqX+o{h7|LXN|YhIR8H zCFvq?ub8;fG1u5o)XgX~lffx0H3Qt^z0ZQP`BO2FVoqz6RI9%i@FYqK`;#V3hiLzJ zP5IiwRBFz9!fUAF^-_JEMkV9RpK5LvcT2$7w>M+h2%BJxUw9r_N_3X*8%7pnjfwG* z7m$_J*}()RYGQFl-{M$4{=(RdzzOaqDH)({qteep--^@}``mty%3Rlv2R=)R>l3+a z*1Sz$H30#f7NYyi`iE?65Zv~FZ-IHUjt4R2IUNHMfxlDJu5cjF#QW2qRTyxcEsa0+ z-lW&lB+JvHt24WXNL3e7gM`E?mPi?G(>Z3Ay#c9(dcz>-^_A?{IhN&>5$-{FL>EPE znBh~ff(?8NJ^`bcLClkwXNgIV-N>$tzk4-;isIgssuoq{5grlO|M$J`YwtO~-}BfV zZ38K?I(a47bb*9f40y(#`AXTTwlpz)vLQ^Pa^9jPwNtuq`W~6MLXD%X1$Of+6CPqm zSb0B%vK_B(=0sNDERGz9hHJM*N1QlUC&IfV7T8j5#0!$o9vwF;?mfVLKJ$uL6G@#S z0539;a~&n^O&T5&C~p}t)2ud+*K%G*ii6$NAk#Qm;cikFhVnjoW-qU5u+ccA1;vi- z2fP>q9bPVqR(|$R9}04M&tNHUCGkqY7CV)K4zaQ|COx|n@7bBo8U(Svp9y9IWH=eQ zhzzHMe+by|bel*-=7Z(+?)3#QgXVhX`| z2N$?(?X@zyXQFwPZ^X>_&LIAPkg?z?vTEgz zm~ab41f3V>HH7E(RDnfZXnHdIIL51nIoL~VOcvSGFvgUp2|T_G-XV=U;vYPcQO!+w zrMdQ%cw+C!p)cd%y46L}@`I$x(w*g+UIGQwvL2n@OEQ`-RJZyu>V&E z5`mu)Ucks3Nm}xGmD-+p>jnhBkjYz9n`xbzGXq5|>y4CvBJ%RqoqzKju+lb=-oz|# zA07oAOI^@y+GG<2y$tQYH4ks{-Ls<-?x%!noi1xEMsvp*#;&O5 zIM27HS?(NcNIfJh^<5ZSog z*RkRF33pFMiRqw@hk`-}xbp*q#rTBq6B8>6$+FxLa&bR}+ql_aFG8x?3_q82Mr$a_ z=U9gVnee*XrzZmzSg0-@Z>YI0)334t_o3XT321l6Bv%g>U0w}(NrR)9x0Kvw;GI=% zm82s!>w87CH0djqa!VdCwTEe1cY1jhx?}YTy}zoaLi3_5$Q-vfh1TG5?5u*HfNbjN z{ykdT*(pt6~esEVMl9lsR$ghl4 z*qnQdjA|;aCgXr2BgzJ^L4jN@?8(5GvhavL!q&bGO59FZ6Ub9;&v3)*vqt$#j1s~Z zIh(W?T3H#E`R^bMBwq$8LdPJoBFyuGMUMxp^0Xb@Rq7)XZNx8G79aV{6ps#}6ZGED zQ|p#7Cfj(MJY3s7vg~{j@l0(9QwswxfH`!KXpcjpnww2~&9|%BT-!oDDYAFUNPcQh z>q4`c(N;!wq~jrO8M*cdnT&3z(a%oIfS}C_@ zJ?RD8m8z;kQ)vK7hw{VB){%}-$FK;4ZnTnC5TG+aakPU9+{D7dT+Qty=ipXT;uZu* zpmLQl=MPxM%?oM#aXIYe0{cOA$c%>9hNWcAX^^A=i4Cl;Rpecx$=QQp%h8p{B%BO$GN!!yvYSP$)6Qcdbohm03krurn$n$9l%(C`z2<<0g6}k=ECFkk$|wkV4N& z3ITH_HI@!NsLliza16u+4nxjVMEf(zOd$6{Qti|4e2F&!@`Ikp`?hC%;mn*>NGP{F zcdT|_WfVLfwOzi^eJ8+7^t5|7N8&1{j__gVT`Sj^+A z`RKI;BZaZ+D8ZmO@g{H#q&Df%?c{5V`!WRgtISM@f};sDiM}|(C%uCnUPM6_f~>UX z_hUPAT#x%gb9j<9K4or0*+*I#R?vVv4p=9OWR5ixphI22rm0Z-1Z2L(3C5~~i!o3h zi1^gG4>iM8OS+@awd_7OcAV*OUlLzGPyuDN|DkGYB&TXxKJCq$iv`BYEIX%@65i?ShZq z&pzNfZs!B%NMZEc9QR!hMYc`vv=_M7wzCAt)YeN^$skl)OE^)+M9$Zy5QI)Wab7SA z!HhFnkz5(E)kW*V>dHcX23WWvIvb*`=NROg`*Wj)UPc4Tp*CbL@XKd9CgVh$l|b{F zVlK(+!sc$CF*Qt`Lah%G%88J_JNnSw03_7Typ5i`$%q$M`u2@ z79PMBNP%%qkki&0z3m^Evw8Bl@)1 z(Poo-YO;p&Xa>-1W{Y?d^uVUR2f+iLsmO!0W|C5 z($6x^&}9wB`N&Y`hR_>3H^4kQgpHKia}Js@OXpA8weg4U$ayJmvvTx95M;yI*L4ra zX}f@dp2ll;g>3;s^txUSvz3tvVQhAv)XJ9f^1-(i)yt8(+ti#PH0H!lgu;2X>pFw# zIKcmp&Wipt#K$K6#=`o!oAZ8DdL{vq)~Zf8WVkDCNwXbL6M%@8vZmTize-5 zqDv?5x4OiHD0d^5q&e3ZO~qC!X{@T)4w~fA45onz=>kjnZjbr-=;TzlZK|``&});j z??b?qbi3P{F(->@LYz2Vq@{&J=sBG`?zLQLgc=O0z%jPaSIy588&ScK&v~lO;+mGubzEtnB{_u>o9yn5MoPKX4S+C!01<^dKNeu1;W#<4ZUbqW!JHWW0Ce8lq6S@~d--yhq|@epi3_ zUVy?+*kD7AZ=I9KSg2!eFc#PW5ugO2hZ_}J&$XdhZ^}LB?etR6dtct~4SGIfPRcwS zwWwkBai4T$J+DXZJAM-=6C{&;uz9D_E_;qnAlzma5JD&DV(gPqT_s6Om(pUp*7IFn zLHkds#wK}?*SaU@oHOFq=0Xm{P{J#4xDWWg8!*d7F9M z!%yE+@6pKVmWmIpz{$4_QfW1B6mw8jNRu_eTeFy|s?V@=`bgP37VTV8I}6b(Q5o2$mW@_5Ec{51H*zf$~T%8M?zs zIbA7Op71JUAi@MRI>s`ZS$4f8VPrYHNm;d1c!dLx-Noy-C1*kdFm@5wWhT${ICYLd zxV}|lGWHTe_(*>`CzaR@`9k;8$EaKvFy&S~DV>$m{eIt1R>T`yO!zIL{n#RMF-k-Y zqS03-t@!|41D}g?f<{F1I^&klKuz18SpmQ-1X2ms9~kn9`KNTb%B@f`A=h1_ihkOoMZ%o#hRd>xWpEL3E0ib-vEt3tcnwd`KJ zCLKVo>wbCm2WJ-B zzNAXo2df$!w=#Eyyl=~;({Uw4+-=1m$iOQyM-|>)_#tV9Qc&v^xN&2YZ#t_Nj<9j| z>@!&P^x0fwM}E#P(9JV;-{myO8l&Vi^DJu+I7oRP6s{fb%gH!8xlQx(6NeVRK_fzu zw3OHKwV^uO-84;-S}hn`*t$JHHeT!+GkAQCna=^UMTNW#)HS^1DElau$)_UO?D-Bj`r$mKS<8)<^*AcLyTxQk%R4ZQ3nHgoy4->3V20eDy`twlSGN{v zOI$J?q%^10L+-7zGc1-ak!&y)k_2BSFJ>}*n+k>GyM=X_V@4sAdj)%)NR#j=R}-dF zuwR)mBplf_n%{Je#a$AHh{f&ou0&oz>NA1_^W}|B62*{^ z>S|O`4rx&Kdg6B`(P#DGp3GneE{WfFUK?j7#YIx%cm##~gM=v9E*)M2XBg3!W6G4H z0b?qpGraI65WJ%|QZlV_pmyCEFBymSmR6ffibUFXu$yz&%|GcA$r$N*AuCZ6yb||5 zI&JwXEEj2W}>EJ+M+%0(sjL+cnBuwRX`51u-L63Pbdin&^yva~Y!)yX1lUgO@L9 zze!qlmIdgO)h&=$kJB)A84^nbKx0I1TYJ|i`(8-j|Im_bile(UBC2$b0c<^OtvVN0S9Q_U=O^Q4)VmdO+3&SRiz0(j_ zoqGl#eR#lwvm%vA9*1q(S=^1-jnuUAjc8%XxqBgYER!b-|HC(;HRnaU?8P6k;=N%N zMw8j{;HU7$R}|6>E0eTKo^1h}vjuOLYI5FnXJQS+yrBZJ^v{iUSz^V+(X7ZNl9w}v z08&XAIl$dVD0rFLhE!fK1j7y2beXKwD7m6g^6@iT5M{ z40PyfMF*jEVZzoZSGda>qcSi$s}Ul8ot0b_kd$*Y{JQW*^+s5%NcQ!x}_(XQ% z8FQy&Wv8?Gxk@`4?=!QMZkXHq_01j*_6ZkHpdKldHq^H85(3+54L8v5>)Ly91#D}n zVS+oUAZ;p9{qQEA34uZap}!K8u>f-=v%I+9*^0TfZn33#!v<)*5IY~W)9K`O5aAS& zXX!IZ!eH4zH`&=P!Z#ubA>Z9w@d<;s4h!2GCb3S4UQHkkRD5Ha;L$HPMMR?4K+v-V z$1C25+sq)nTj%6Znh5Mo&eww&Zlm`TiMEe}1gl_vA93pRox^Ch-Xm4ux+rLq_lyz+MVH?+=T^zME7Iv`(1-_I z7;{(97=7SsgD22e0hQG7l)^Gx5V$tOHS|ZdoCDKBr6>N8f-2`&Sg+hB*(MOx=C}@Q z5%9z8MY6*q?LDO`x%jCs&59tg~kY+d`j$MV*ShWa{ zm2f?D27A^_mlKp`4px2eFw%EEfIF<4XW!u&C$2d41ZTHX1=IJkALu9ywXT1xDPJxeV-h|4zM zCZ!?VfeC*row{xlqCB&GCNFfn_w+QPM{vl*EE^VmWM@z^d~@iJWdYJ^wjj)8TK^>8Z8@i@8pmiKi|c zYLW(~AG#i49RG2)#JXl0l&MlsUvy9)6CkhW#eH)G&mEX!MJm&esvAVeNw>x~_|4mS zeML&rSH~vNwgzbAaQ-~f2PVaK`l+SSo+v4;reUq~(wz>7Q~0vMHgemBL&i0!RS9rU z#V~MSd3i0Y1OOYrYnk_la?%5l@SxOUEjV}RMCc9m9Ee71gj86;X+kiId>#%FTg0HURh2WP9th?Gagn%_6U507kPZp2}v6c1v!cg)mnN6RV2X#&tseh}HI35@<@C&v279ppwri$#%PB z!;NPrsUxL^cDpn;Yn7Q26p%)`E4NgE)hZekomU{a?_DUhkahZiIW)!%SFp5}bPge= zJm%yeytQAOxI_CaNW)mAd%Zl+y4!@+ne5<&QYoV8&NX3vP7Azylf_-YqbtjL^TOx5o za=-T|ibX|J>04lbmbLLyUHnqlu-#b|U5MI|$fl_p2OT^pgg&*=_0hWo2-YlJ646=l zsXH)8JE96IB%L%PvRDg#h*2v08M4CjNZvZjz!Q0-1&q_yZs120Fv;d8kh^0BR+m_D z<(r^U-=#TEFo`l=NCDfh#r1L%GLUMZk4cKCR%LjbR8}mHR3~ z=xcjQD-#g8Z~Bsn)1agC!qEU~gC~A+p-4iSY(b;I=UFfrGcOi8e~ZXijh>`>>N^oV_5dZP`P) z74L#3yWX|AA2(QJqm8roAP(?6l4fYWG318J3PiPWa2WH`J8A!CtGtM{f(=Jo^Q#A7 z4V3R>z-;s;&{}p`wAR@5u+x(}7`NHB-4O>Jj6FQbIP{7jnCT+dA#}rw*5upDD2cYT z;u@P5PTDbgOEudA<=@_;(2(AH;GcCg%VC&y4|Bx4xH?m+xL=iI3LgcMv^xOy?U_Y7 z=k{bSG0TDGmD-47gY={+nByvnk$ggj(O4@ybmqf zxLj@$zmX7-A)$@D+q#)}*;q1mw>tA|n30zQFj(|yw3RDwpNWNLuPM)NJe=u2E)?=w z>n=e6Ii!`4s#jPh3!Y1<`9K6Spe)2m7^ot-J`HeXo6qC{AxlcTr}a#ODLLs%Ycm4( zJ560CxJ-w#j&8;Z1$tSVBolZLVx>UuHkk|-->1pEkADWa{ENbvYoxn37Yv7sBrWli z*D+rJ%o7xG>Z$`rbjoX|&Sp|8k3(i*%Bcy}6VXqk%H-%s!Kn70z2Wo-ZY>VeKI&MV z-xb;!5MGBp`p(<7kX}joA=Dt_^g8a2v)=)b@)Im;3*yFLU`3RRNrg0eLagqkC0Gxl zNwWo@GbMs8w1ISXKLET&Yg2^^Q3pxH^ZeA*42)IN)m^~?avmv3N_-qY@0WEV(nrv;B7}my^xrZrgbBfrS+t3mS$xi3n&+D-slA?7% zyGRfsjf5yVuS>1M6fn9k>av{j?I<~;1AE}Y;xICJMxh{JVhtsQ7B-O6Fg|tVxQxL4sqA5JwvRF2$>Rh%BLT zLMf9@V=z9Mf&jJS_ARB}fOUxmSBwlwqn%n-G71Hfu)7Z+;lh1qzOpisDJ)Oio#akq~^RK!N0YFf5csxi9Z5*e;U^rD8SG4y~ zcyWp&2wXIAJ8H`NfDg6}?EfzOfOnIO4rNa`0#Oyf$S#d?utaW`SuR#_jFfT?Kx0vo|Q!=C2EFqkwNarnY`X2Q5R>u&COZ=O{97cUMQw1E1<>6^&Iu3ghQCfxjAvvWx4_0Ov$$txUtn%^PK{$YKIy5f(E!3) z=gs5>N79+nY{NK5c2M;w-_d*f>*?I;)+yi>M>-SefK&$YW_|%l2p((M%*Yb{B?wu{ zW}%#^rBTwSuynW%HZQxyPTELL7?K$w0}8&m8E;GU|9Ju(N_Rp@xWW*fYY)hX6Ts<-lOWmBu3S65TJbG@fJ z*#P_9l9e-d%n-f9ACkwAgxB9sbu9igr9Qidx1E#JE0I_KH%47cl+^*APTM z4v^35_!KtCYlT-_>4BV6LlmJU+h_tVaJp+U1&gk0Ts&j6LV#23rt)e94lV; zrt}$KUfvWlw^&ykC96}bSvAJG4+YJyN9_@}_Wug*j?1mk zsHbbx_t_OK&}ccDUqq}c?@CGYrWsmSy1|WoMh+p-)U<2|&)#Ape}rhQc`-hNffrb$kgEk=GmF_Jzx;37M8GiO|EuMA{X+rgmB*=BjC^yVA|CUt9Y_d zu#APKc&St7^P6>7wMNVd;P#@DJfXD{cdL1|?CoZ(>OqNeC~E5AE&;`1mZ1fiE1_&0 zt}qgHqTqzljg_$ULMiP)FWGBH<;d&43Rx_>BMxHnyr|O0VSu{a#yPh4j^c6O<1Hw` zV2K*F_S1G6x~>~8>y+Wxb`3yMPl@0Op(zI2nH4Ube*i}-Nn{^=6Bd}W*1J)99iIZE zEt<*MuX|>zRL1smXsR8;KJqIPC3A<(Fr5_NSzhfk4*mI%!tAkfg)}ND6qyUz*Ini) zb8-nLY)-?sdTicBY|N0PBb%KDNO7Da>Vu$f3G`BClOMG(f29IvfH(B&FF1?xuRn33(RRV3^LaCHUW3 zR$mMl8h}q4hH0jti;xENi(NYKHm%Mb1^PKEUJfcl&nj_CDIPrb&M4`!o~a>{cFX_| z&9CJz%k!7OcEFK}9vJ`4Y3Q;AfS@q0PK^w$&LMcqP7!L7Xe(h@Av}~`D~uJYQD`*h z-XxC_&JVVV%uENg{Cj!SePp&gZ%c$*ciy!Pc-6!@^RC(#keKbg7E;t%>2yPW zCtqCvZtr8o8b7s3CK0~BG51LZHbK2*vH`<99d7wT^g1YYT+Uz?=$Y8(3-`ElOVoM>j7jRaDV3h zyori7^lFp#4i>RCuY-`j^8mAiauGbp!aEC2!gz=084+U;FST+yN3e_O5x7rWV@;0? z&N>yQc>~#_>9BjhYX(r6MV6@9CLzh#0wz5sMIG3P9r6reS$cL;XWtPgpSe=w$hmua z9ruNdLUZtHd}vEu%iz(>z~lR|JaewCC9xsIXfp=vrv{tlC;$8pKmE=3U%&e*{O?}-XX~f&{x94; zHjz-Jf0@T&>rs}RKr*u-)X$aU;5C)z1J%p`vF%nK(z36Gcy3ttrmb{53`xeNp zZ2@&qYP&J4=c551vocrXkN57=Uw`BA_Upg2-v2feIV{-xVD1q!T?GkEsSQ&t=iz5+ z$5^94k-1;#wv4J1z(CQ$8zr5Yefs_F8OBN2C5-Tr&*{3QrJC9yERpxIkP|sIR6OI; zAHLu3zKrzg58kdX;?rNXwSN|G{nJlAf4A4y@4ou>%Y5li?bBcXDo%VAZ+Cq9$?v}V z>Syo2Tswa9*{8qySK_PpZ{EHA^oRMg^jZ4!N1v~^KmBI?H2%)}$NA>%&)&ZK-M63q z+UIZH{_HRR-k0&|5B}c2>u>+dpZ>;v_txKh{pQ`<_vzCgd3+gfJ>Kp&&)10iILab- z>3urSotR8a^kj8$_&yj}dJpav9>lFZ#9&vZK7%#7Lnmknlr5N2#N{*5qA|UG$9kLN z5vx6%lA71bR=KP$h0UHq`<-jblh-Bmlf>j=|CWW|2$BCd1Kie z?53a9D1MR&Wwn*5ENX)4lpmBo)U~UprmJg`d2@>adxX9IpRpK6nWCd(+5U-6arghHv`f_d~0&0W1P5l zsH&%vchnQ7T&g-P&tL#XB#XAgQEZs}yXxTF-dcb9=YI2=Mjh0=HT*d#n&Q_4qStmN z+aC?RXdAOs8e)Y`XDs?Bz1*L!99V-O-;|ktA(n22xS{CfxZdO}%DFPB=a-@!% zhbmA1+Vj;}0a?-<1Rqzx#so3mTBcTT-+Ti~5A{)O8H+ogW2_sNa@wzR5&=Q-NvaYu z5wXBr==DHQ<)$h)X-VEM@HT88Wfw5jPyae!#ZDv1#XSg;gCaGG&y-+C_BKy}6GSH1 zb_H&u9*{^Bp*P=E5*efnF!c!&Kv;_Jm<{Bw`L^XGr#PurWff8i&8-S6`a-favh zKm$`dur^F0CrFwmbMA<=hEncK7O%+^Zxwp*c{|o_D+=GZmg<3ZM9O4yx`HeKo)w9a z3qSDl%;=yXlL6<5Benc;KCWN-Q~Slo^{>DE@{6CO`*8k)hjseM!}S{A)d_xv;+9s||Bfn*y`hH$X6W=X>?w-gj2e*xOsN8k+2U_2~${fqba!oF>Vd zqKlg$T}NMq*5+U#Jo=3+>N06JLj?>apXeTp+IS^?xY}O&srPWT{hIBse(%e#f9L(< z<@VAa+Xt6h`K*0bf8la_{`IT7+^z(3-n8?Qjm4EjntChf4Eib1=yx+w$_8yT8@o4U zL9_iNO||TmxD_$(2A^YBHOm|Ns3`)V`f2yA^{jR*S?h_&#DwcoA1=3-KHfZBZhyw# zeI0NA%HzfM(jVFf7u)zuzjJSU{`IT7*n%FwoMbpIhtORSEz1P91TaT8G@s(I>tWyV zem^n`Sk%*99VYsq8FnU;*tN^yabg9Jq94SGr7D!Lz3AyAFde1!2ye$9FSZwcyLq_S zez^YrH}5{UvAy(X_KVlrZ#+Lo^Zcy*!NvAxzWob-#H)>G4c0hWS@B|-%)yvbFowy+ zWVe<3q6dCb5kY4@TS1^&Dh2)x%gBruTc}EUMnZ@rZMtaAm_Q~sGtf0lpYvj6rkd=HoX7J#m6d!+?`YLX)>jV`bkZ@DKW9V4AQ z)RrToU9|&xbQ<$*6BhIX#1=ctq$odWtiaP5+U~a;;sA(&H7SvzG@E(hpOB}2i&wX~ zSEOnfFr@NMAQ`>31Gl`@LsE+;^}{f}2(%vPRhU>$@6Ky>S;)W+ITDc@k4$ts-~mDL z_nnx_ve?1nks%KGoGIT#!qdNfzlw9+FTH`tm&{x5N^)*BlRa2%c_=;~UJ6o~P|_k4;dN`c1;{_bA+7+hiNP@@i*~Yp8g%a3a?il*1W`c6#?m`{SDr)T81 zq^MvyPpsUy7;5&Xf0wUf_y)$i5MU*O(D>cE$kD9>Eg`5dfN?SDGoO)r_g3%Zyg_d` z039~<7HPg3*`2l=3hb6qVXY1BryY8T$;PiVR@*_4T4O!^d!PK|H@^4Vp$C#3>DZVT z`tiffyTl;2n~4Oo!m}%~m0?wJ<#1x6^mXPKd$mHNxjEPbNFk7Pq?Ca_9%_RkSKF(v z(+C)lD6PX`McdA&l`Sx*1=Za&|AX5*;Mj`H%d8B z)`q7vnae|z02|}A>?!0@IZ3hHoZGO6WI(!Dpp+My0~UOw5#^+_P;tARN_ak{R)=+v zruFdv`qEGMk6m&<`0aP`v&ZZ0r9Zb1uDAJF{m%9F{Oi|uz4@9x&NilRF@O|Ihja?i zbS9Z6;m_`)_qhCUkNYFP^L+o;+)ijql6CbB z!E%h!v-ZmIPGDU~Va(i%q~0eQ))i+3s#Zh-5aBd}AH;Ezggb%qwAb)85EPt(3TtwL z$owZ}A2o`OlH1N*?D3j=;g#USsq#m^^Zwo2-wpfv-Ou9f2YZ?q{^&k3%are2a?ij1 zqn{^J93P}5!_2JuCV{Pn5nB~V6xgN3SvV@>?gC{onK%K=1K}eZ?mPJClBBapC_n-S zajH5*VL3)S-M2_qFr`U&t}T$u^XcFJz=;611AoI?S1qUS z0<$WYv_L6=J1mR{sEc<5cdmx|Z<21Wp7reJBi7ulB`v^^JgfyX5X1xh#M6IpUvMX) zf<158I)N2gDJS|Zd*bT$!5^*iRtV!}1M7pZUD=Z4Gp5YTZj&v@abd7Sj4btBsC9{4 zdY-ZY>=Fw-rBQ2HXmN+<`t%<@zwA>*ZF(RF6MXEMVWwfP1tfXMgr3^Fg1IX>Y$b6K z-H?W2T+wG){0XS(wN|Q2@Gn`~_s-MB*+taBL^sAknXi*bT^fxE*AQ> z7bMh7>!d?TWX`=86?lN}XsK&jfOC5fR38xGlOyk5Y0btPY1GovNmjea;;Wi@5w11T z?uhY{KmDhC6?qqs@?)N8{OQ&LZn6U$r!GqW!*}mnJ8X5iBReYM2oK+*9n)B0wrHD_w6&?Aw)^e}2MQRfj1+6NlcOms{dTOzC^5Jjm2JC@2^3NUl5CL^ z&bju$sMMVu30<`Ay@ls~KxP44@{-5OPyfXqL!zPt@(ahSGh!NcaPDKymzY{wK`c5| z19oQ1R^C}S5~n)nNE$>Rs_q$iIG&8Rb46M$QRv3_MJwSYVo+}%ougdQH( zFP&O>OjPi2`{LaPPwJQc)ION~a2PDVxC#39FMJQPpA3neo_Jk~VO55e$yE#Wjuk)& zOzeuoC`%);GOrs`?XZu9y26b)Eu<^GQyVi7!}lSkx54g9bzP|2T(f)4a9)$m(Dn3R ze)1Y7Q2*>b+m2@Ugo0WUY%a`#gOx6)qB*Xxpu20@D0sY08>f~7h+;;rG?@)(S4Sk5 z(oCSVOY+jaSn;vQpWmMWBj%8^71b*YT}QV({a2qn6Ga%EAV14W8F-$B&QV};K&diM z>=lGkOyzg#rErZ_$H>ZaEhpp^Odn&Y3JLRCItos*{1=yEE;NRz_tkw+^K5obIqB1X zee-3WqGNDCKtCsyY#|}uk)RY|J-(*Evp1Sn9a&4^4w-IzsLiUa)^h!5BM(+oi!V9G znW1zauLg6&KPg1yj|Ux~ehD3UKm9ka;-389KA&4SuY&t1IreVD@F`6khlc&8HCI5w z83;t*Ug|(r**M+^yvSp{BvX`i*oo=&1co$Qnj8}8@@$^63ufmrO zZXn!tXCH@-UsMi{y6Md8u7%5}U^yFQ2F0>$S1rbNepV^gkvp~q$JzI?A&?7w40szU z<#6je#Td$ZwBenc=HNf})BpH=KCA!WIrN+M=Ix*V_7|W1&ikMI%JZBD*lE$BeGVi| zF)PViBn)L|T7MPDHRktntb3lRQMcl*J#$ttK6AxPDKpg2g!aZxoBUP*|9NuIB7-@7 zM!ALBwvCPO?CWu^_|jX{kB+jJ`&aS)gDuWWe{>(bbGOg(cSeiPzy6~?$6tEb`%5!> z{!Nef`>Qu!{=qeZBM(Zf-)%<)RXlmUT~t}FZV>Bcruo=a;@GKpPOH|+6;;RF_|fQn4G><)<9dAh!>`ucpMHDNdz$Pve*cHx|3VB> zUGF;XCzhc$t~pn zms`k$`?ifZdWF1IkXE$3^3j!hoy&WQGS8$0%5iuYv$sKU7ST5Kmyx@ox3JX)>Z0S| zqd`7qkOPIW^_-ZZHBTTuD40*GWBX&B@}=JzA5*0s_RUWpZyzuHnSF5ks1LV~`aRt~ zUVMu8KYct?dSC2qNu3#yGEri7a};5u;z+`uu*)gh12w|QY#qR67jK5+aZ0OslCsFB zgUIu<Mt|ji9h%>+cmVc#{=|Be>p$Dv;FYv-}^G&e|z=*=KF8H z{PNvbU%&tHe)sviuRd~KAv6{=|)qm&`$=h-^<}4o0+-X+09n!bvpWo#E)Zg;^KYRu6!w=uo zm;Q1dZbtvl-%bnKoRD;?HWn;{E+QL(UE;z@i<}KOgz!765;39{pFid+t)eX^?usgw+3W8%*RtNLu{G*&G=AaR`I8^~zj-P>{^8zz`fKmLb4|M|bxZ~Dm(9+<2NL1J>p zinZ(JsLz2xTOlAPo$ArFavHqH-Ya?*T5$l109xUOLGyXw_^#GvTOYp2D6oc*+|_d$ zPyh36=-0GVY^-@uSI%5^W4f~UVkbTBk@vv!_sW2CG#6xH-ZejCa7uS;uK3R*|OR*@mhir7<6*(%S)Sx!uwM&I^ON9V4Ye;_jUq5-4 zDQ&w&+amLNtm7mO@S^~cjd|h5**6qxI=Q;bQBn|-BeD#nJaZ$_fxJl9k6|mC!E=ObV6416kml7CITyJ}ySlkqoL-R`xdR*kO&aMxQ!LL*MKQZ8;YQ zQ=^2%<~?ddg&!;c`q%)DQY*y1`;ii>5S3`lz`)8$Hgm5}|NA93cy($fXIo7P0c*er z#%^KBC-}}f@qtE;uC?dm4E9>L~>aB4G`GE+%6mfoh9iyt5wU4W{i(d?1%%&FDst@FTM&A0OR<|(9;I0yaUm< z4%y&a2Wy@(NPDDnR!IeMY};6*a+EcfAd@KgDzs~C@j8OwLD3p@On7QjjSSStahg#p zxB^KasL`MP!5>}rZW=b4wT_`^wF$upUR#0kDFso{G)nPeg&*rxU|y(h1RrfNOGc+j zp|7xD!=neovTi6j#-AqntOI%Do_sI;GBfwOFPcyP(2uT>aPK;FXRMGtO9-x4gqn4t z#hR^+oi19mi?-fbb$gnJP}nlxXJ(MzT8kk!JN%s1%G$Z?SZOKNVS2oEEl;cU0ARIG z^P#5s=^wtI#aJP+=gRyvRb0;Fvcr_L$& zxl@6ATf7y8{%m+@w<@a1-TGrB_JtFNk43AWUv=;8-Mi0YeGs;J>5uOt1G4lTp2YL7 zU)^Qb%5tCA;H8CUD{I-aQb9@APAWs!nyZi)$zA{@CV;{*r%PuI!t?5Iej(H}OTY3? z30~_xi;lu~16N$Kjs4p4G}I>1w)^^nrO(=T z?sok8)m?U0&E(KLKT(fMLQY*^O_%#>XA7RgnA(oy-FsQ0Wn<|qHIEyJkv&W5(e`2J z*K4nMvq~&osSvj!Xk=~m1dY1Q-5iGX)+Xt3RPxf9;y>&e`~K}WU)YCN-AjLZzpOVq z?{(JRTcHnGv`k7tqwaMLu|S2-V5gVn_I1u^E6v(CebjV<_C!B9|AU*DzIk)Q=4xspmT>y{3|Af%))j%t+XQ<4^TaZ%x-O?bn#T5e^moOjJGkbqk< z_fD8!bJv0hGez<_bQSMA@5su#>Bgp57zcgOvU};`z#n?Ud;j%UZ{B{e{(R|A@1s{; zez@vhVb9LTo%Y9agocNql+ChEuEZLZ3iZepEEkfv(XkthL`iB%m&G6g6d>}a{19Q8%;80}IKD_uNjBBj zDwu;u#Xokl#`=OMj5drKO)0kdVKnD#r?_`AIwW$`UCq&g*ZQe5c6w1 z%gs6{chVUtbCtHb^Wd@F)<#CbhLBLUM)BcPaTtlNo--;6qby@4Be@KWtQuV;a_pJ< zPF?l1bD}m`k)1WinAZ1UC3W@WkGHm$?if6R5Z}iaf91m$hnN1)K9WN0zsRQh;q$Lw z&&BpvKgi!8Q~&(`f19T#gr1XaX&r@Wj@(md=i!7#u*%l9eA4^jsn=^JYNPeA;?~+m zlSI-`YVkD+A#ecqfp*f5^4*b|{9s7a9|fKh>STiW9V_|mnbhYRqpfAiC~@4kv3 z+wc9@58<6?EldIS!?bj9oO zO!wvcufK};?5p_V_dY0OzVIjakt;5LHokMk@#|N2#nlwR7E%Of?OvJ%Mj7A9@I~!q zvr8k8W2p@$NDa~xLXJ@k*;VDUgLRTJ0=AYqzBJ8D0cdd^m&Ss#u9n#2r?RT`J!-U3 zJ|GgkaCz)8u>1A9Z}xA0um*eK&+Mat-TV;PeNA__Pk){N`15D^TR$(b-CzDeg>7sU zaI;F|*#w6?%c)pXQ%>X#BG29qxi`{nQy8k1!VtD*6H-FC*J3%E;9*~7%}O!ZR&IR) z-$fpgWR=y(Q%jy|jj2LQV?Ks8U%Ef|a3TKsH*Y=8`*l8enSJTc?W33?dB7COE4mne zKD3jD4}qbqv_3o*viIhLpR$R#FtDEFa*&ud)bT8?N!L|KxNFT(b3RN*tIq7!R7dHp z^EVLKZXYxOr_AAbuQk$ca@bRC-;dYZFGW+~r9ZQe-1y38{W~{4e*MeeRCxW9jt|q~ zXU?82C9+t4vt6vt2pV)6yNxs2cNCOxbHFBz0c01 z8%u<;O>+49ciNQT@&qY>QHWHlT9kToF-5OZKc}RS^TSZQJSccpaZC{ z!;=`i-_fC{(DKr}`gz>0yfE_R@i_X$o40SiSYLnmZuHWh+ehDx%EPBrqRT6Q_UMVT3t#X0XZ%(STQr0<|vA!%omydAH| zQC0J#v*<0q6rmTABtQM5Kl)>+??N7zJXZC_9zj@}WObNA?(xkHwe9>O5Taf8+Z% zUwrv_{P>$MeSIB2e*5n0H|Nbq2JtWaA%1iel^#Y>-$$SKrS~FF|JWbHk3b%EZK)mp z>)HJG)+oKV*>>XuE=Ci=>2-9Q9CGF`4merYOfifjYl7KNB5SX+`z%^)_0}Z~i{8D+ zV!wQAPO)>7WyYMmm;HF-f8~dWhfDvZKfI6ZpyYvsA>YfTA9Xj&wh5+6i_~JItV@UR z{%W~nQn#I`h|O8Ht!BNLro$AuldozcZJrJLtd-M3Cq7yWNz2ZNJai(zC_rx&wV&~t zvtz4Dm8XCFkKxkad4)`BRQMwMb#iN!VX2SZE3O_Bjt4coCz6TWheky>)LTdJy4Gl7 zW0y*{a*M0XGAcK;l$TjMqD&E}&z%;l&&hALHpCwJFE0%Vez^4i^zZ!c2Mhj}{=_~y z5GfA>k?-TQQx~J8KJ$V_5~&V3$5SjLlhBe=0X&+v?%al-LqlZsU<_$(aC0FMdrA?> z{Gr@-t5dV>F^NPTX|2V)m7vPY?H;OlRn)Wo$sh4v@;#rqBIlG>>shq) ztsA54$fMUY*Od(x4>PhG|I}g&pdW(7A}@XvUNv%yG!CIG`Vaf zqSkiiIBj5GuJbhiC73lmp08f`1N&u_kEEV0WJ`%t%XW698A(h<#F`AJOl`x`o`jNf z*_|5fDtT5<;ue!ec`BLXN7U)sYVs*wv#s5=6K=BQR$|t)sB=mOVKkij%_E!Vr5oZ8 z7upZ({fC&}m;T5;dX(3Pqx>sOL|ffznxX`C_uV&Xj>Gy33`NwGrV4zknM|cS9Imll z`>N?^S*`fRK1g1?H_zPeeK=&Ib;ak=CcuYiNn%>{Ss<9p;wV*nllTt8c1 zMSSsL^W$Ydw2$1^>URzk&%b_k7h5@$%xQq9CVASFB(rPxTxyl>!mph4;S0t z^m8=Jk3Wx}uKjyI{_^v0zFMEZ`3FAOB)|0M_|ec-c?fO&@mzoRR53`Lx9NUbtt%aY z<7j4Ubmi?kco*kpG3J&$+L|yU8HlgBESEL3FrR9yWR$(^7<1lM>6kzsd#xOd4t6$8 z%PX`U-2)5Khe4Q^{c=9K5&8qn&xgx{6`|Fu>GW9R46h?K&Q7IL#gL+=eX8_PrL


y#RwEAtR$kPOLIA1Ye|x486~aLNBHhj;4^E>g3od^ z74m?!7tY)pqk0-0@=ZTt5hM4+P;aF&kP!WU-va&FZ}&Vu|Io0?=@X_0eg z@7?LCR46IFQ}-Eb&BtlSOM`J910Y{~xxW5jyYteY*$0n^^x61MCHnc-ukMIKqAN=- z=bWU+YTB}=j&tjsKF=9GF_PrtF|6)1i;%O4a;&80T4(Q47W>m#gE4A8=54PCvrQ?2{~AR^Mn-0|Kz@{$$jFGCtz~z0Z&&rs4E7VqTL|)ol=t3yQQkn_d;c+n z=T!G>*L&|QXEELTRtp$l=H9Bgb?!O&=824Wp5OC68n%$9%7IuxW}%~#q}pC9p*(Cn z+Kx5)C|+efy^f*FIyQ;7*n2OCu@hbG+I}J@&F#7{K9y>itT&=2+!pe^<5)pwV$CN+ zO!p4xN5jPKGao;%AJmUNd$B+M^wpCk_vl;q?2@CqCHEe7Gn-Dv^u*&dloMQd+)K1) z8v!VK)TNfinIjWU@-F3|wulDnU_SjicW4Cl-pB4^LSol^pCM>4gKr5oNFO_}5pO;)`>h>JuJ)=bjnT$~*Rjw_m?^E3R)4`}-ba=$r)2sdvQB z%~}OBk+9h4)575D zfj|hJFb~{|V;)QiyzigCetDkw03UtJp2XyF`+om=9rwYP-+2EP8&nh|TfMJ>u7A)L zCjp6oa`rfcyOYd`zsWj6!TmdjWwK6W%e@m?gEm#E zR{Aiu9e&@xcr*<1i3R%Om%H-Ga(nPi`>xtf4+NXUSMH1>D19n7M4*VXWTH2Cy6M6R z9XRP2=*yWid($gz{dlQE1fiR*I+teY-lG*P#p6sn6|hR>+PhGPbUU!3pVOD!tKlEa z(SEk~`Rsh~(Kqf{c1^!y*Zkb(E4a)Cj0b)0SSumB@dE;+wvZJk9A)O&bV0-S!iUS5 z8T6Ntdtd3|o#Az(p+->eqCH&|6b<*nx@kXC51|h@i#kX$-gr+CH0t)3d<%M~3jnkU zbBcmEZA@dN?My*%t6>^_L<+JUXxO6-S-`sa>9D7o$ly*E$0pzlaxo)!Zz}@r3v2Ci z!)S*@Z-}W6<-x(75Ba%2EI(RK`Lkgr9(~iEEctPFUK#J%dF3ZJ^7sE1X5zPOuZ++` zK7~A|!Lnr30CS%yD57+FrirTf&U1>iBr#_tn)Ea|qQFSF`J^P;tu+fwV*sRxakJyI5l z_!aGZ)*PdHs89@$8%a7q9VA##21vWAELQ!%X|WeP6z|=sx)J8~;B@ zGWknCd=H9_d#>VxFX#EP^m@8ar??eM){Lg8C#YGJr6YWI&MedBBID@E%)UVY_Y-cD zdkczDZ8jd%7yKuC?RE|y1rT(C+y|QWiNz6nWiH6$jH6?ZSlbtcD<+{eYRd*o5TId<-vFFX=et8 zZT@;^=IuAW0W&{gdj>jYZ>Sf1*q)5^PloJb_ep(KClsPXI&Y~GCd{=>#n0|z^{cp< zyT)SQ9Z#Z@U*`3GYGbIdb->czVMhb^elBk4<;U$WdmE=wHXOu~5UK(IG4v_CaB?;L0M)AIDbMnP{CHi2U3k+B98Wjx#tvOn`^Z$N*A z2*sSYzx-R!uD7k2E66-i(IEq{ITNFQGPmtHeD$3gG_Cc{&03zTsy{`OX3M@#okcX_ z44!gzT3pYS?*)GC1Wh}8?Z6+DE}y5D@2=IJXeflWTMd_Jh!d05XNcnj6kgi5k$`MM zc4RSkU8>|r-)I&mdIM*mf%i>t+77&uXvKEYS^o%z1Y`eFpED3|89n#<>QInbQBIcuG`>AOy10ly_%3QuwTf6;LxQdg~3T)dh zn7VUVbVRR=)(1JEbvif%#+@#(i`(o?cMP62X!&X;<+JxwgBJw%1j7{SHnip!0zd35 zAPL?1V6y|BCJ};77VY*|<0@1Gix#hxy=D-C%F3)3f);AD)7~oW$2eh!V^%4)yOw7a zK852f8L}|s?NxHULZvvHG1?j4`W%EvwLrP1yj$DQQE@xi6K{VFu445~y`W5x+Hf7t z?BxM9Qd179VdDj?_D)Q)?*H$e<;z`2`#taUW&B`Q#coJrh zmLm(>2GYyR&h4+go`~11Zo7;-CqvnAoTKfoD3Z&uV7lyKX92$6s7z)TYi^wv6op{K zuE}jS^kjmd$lEp7Tod_meX&WSVRBA&oK$qf65;z$&)Z-3;Z-j(29k|vMvt!KH1Kc7 zw8%rATsHQBVsi~AS)T5#)CpMxeaXOHnt~_i{q*~ee};0Kj| z{5SuskAC5!U-%gVQ$ShhZ9+F|AYIKEz97!zv7F4tY!YWOugxtNpK*NnRGBF)Nl&2p zOJTIzSgUNvVVhlamRI*l0@F4~Cfubfa+0_fjXog>zaP3hIHm5sA^6F!e^H-5Aum4q zrakL{>~|i>Z=wf2s%BfZ*wWch*mpyB;`Bo+YZsIvB(tY3z<5S<5bRU(1f=d+O}VKq ze3VLDd8v+(>##D69$j4$5ld|@p>1#dMKS}OTC3aN@Zoy^3cLNOUw#i1Hn+d=z3_wn zP47cc-gjeE`?N*z@M-OrEsEco)c)r8KKi}icnH^FPXkg1$HxG7LA6a^2PM{}%ZO%H zqgYXB$lL>a;jCfdYZ*fSHXXzqh-^hksf6d#a7ZxkXrB>tQae_JPCA6vGec$8eG}`^ zM((Gk`t{_6^58r6%oJbmruh2vPw^rB!+s?b5SlTj?REU^WfaGXrSK|h(L@|@qPc8U zy@5%P3bh(*nRC1S%^zN@ZYDsa zKyO@Y!JUD|lPn;dmkFAE=7s#8vrX-cnF`hvbp(Al`~W1L(J-+*B)cv31xu?2N%&Tg zv@IiqMf+9{Rys=A!^CfY%lojEe~09J&scWU9SV6J=o;#=JvSfWnb|>GWSkX2<+6RP zE_C+*{(~;r_MU~0*Z93vH$;E@M!g)ng4g@GhE7W=6tk;tzc5O|}V z!)GGpF=93Za73q7h3d12;5I;7QkQd{c)A`P>wULIe%jdT(Rb~c`h2|O*?If*H^3;- zGs9_Z93v8hFbyN?V`~Ztodyh%aHrPMfkCF!8K-Eu`)+5SEdon!rSb`{x=dI>7<^6h zXst3pce%($y4K;LW*cXhw&eD=e)t|>4ZaJMg=fZ9s(#3oqSl$ANy^Qr4SbqBm14jx zN!N@pa>pcX(<&jGrvkUbnjj@~;9Yb2IeO}xL=~tV@2VVWJTgy_ZYUW9n`N}KfThkA=xCfX2C4Akgsi&QuFgPYIB2^ET>PkGkfii#IOT@V&; zNQfgDc-DKO^X8fR=ol6g`mUO)!~6j-}~qJ2M+eDLKwKd)Xt ze67!H03LlaDTsz0nUh5uSYR$)Kt->44l-2@7QHyr(VsoLT{3rKmguw{R6Jl>4xio& zIwoo1A(*-{_HK*TA!MGbbwp89=D3G4J^FH< zrvYFue^Ebr^ISz*#pf*nexMb3BCC>tDzyjR}nQ!-dmf-(EG=^eZZLFw)TY4x+P}5*4S2CyREiO zrQ>K*dsq*{cmwGpPO+}h#oT7Lt^pg7SL*7=2##x~E&#^#T)W2bHAe2~offw$4Lx)} zr+oC~JpVZVM13Ch`KQmZ-4SE5(KW8QC;8}R<{LRZ@S4PQOBY7OPHVI%8;R>4q8lnH z-^vDj!93^`N5>r9mtpsiItF=Xge^Faw*`~%)a2b_L##EM+&xY|OZFnXVL&**L@IE1 zX8G~iFq)7tFL*fgNw(q7Y%wj(n7IQ2NV}r|wAQ2TJqOIm-MY5J$hRj1rGlzjhYYZj zDLRntB2Di5^pC!rXCLQZ@a1vf#s2tZy?XPaUhU6+d<{sRdA`};{vP}Ks5ziABMFG; zIDL6h1b(eqqpyNVD2t$AYFGp{V7Xp_R?NU_7YL%=&2?|YXESOKsEy85m`hER7^od_ z#3X=g_3rsnjh#(4#&(CQs^y#r@CLj|qiGGJb}*3TImGc{K%A2#TttTp942oDR1V6d z+BM1W(wjDY(HMm`HNmzXB;0C{a~r!a0uS;Di1M+Q^X&8e17AJg`q7(Td%ma+5g`91 zM3{$Q<~N}?WTuuAB^eZ3!%S7%hSE^D9Y=>i6xlW`!;GF z83`*u{-!pndZH^>5Y4HGt`<#V?xxn}pf1xUHl8*Yq&82qr;omzXP@c^uV1atKKt=A z57Ug%Xg59^Iz4ylT7`)@X2T~hP%7k_JNqzf!M10Ms)X_xa4_#+X?G{leui{9(W`Rk zmb%V;9R@mDyI8?&I#55DQeQToAy3euWnF%X;qb)U04I-#x4f3H^1VIgTNOVd&aBy|Ib#G&~8H=!nyGMx<^loK1XeLn_H06T||V)e5mxO3sd& zXP!*%L3#8nZ)X5t9~g{7g6U)R^Q5L-(_QlNPoW`=9Rs~XXl4eW-)A60u+5VQ=RJWK z-f&WUCW4mmY%+>FX0K2jJ7DD{==`zkl9Ak@Jf7<4S0iv`!ek)K=>Fb&Y#)6&_j2_= zb2WQ<26N+NI2<|G#yhbO)M5DN+^5Xop4HIy(k`|^XWfuM;2`W{YitUkQOAAtw~f%& zV+O*nX`O{^^{D~&EA_J3`*fbimY@4Amke9_+TCm)q*>uOpU7YwyLD_LO_{XMh=sxR zC99XI8`^`G)rt+r-eBKT2-;KHV7O=~;}qBk?K$+iu}OvXJYay1;Z5`2xcBJGd7}FG zX?5&ay=WikDgiefI$Iu;W&t%+r3~SQx%efn5?kJ!w=G~u0GEW|b@!&BGb=K1;r%2b zTW*X)5s=8Wkqa?N9pZy=)?AdGeD`-akstlxXT^oD*Xxfz`@BB;ImLx*M0zcaitx``o_{LHot8zVi(zaH=~joHTr4D(E}t1SzE22DLp1-z{1klALo-KT{*I zkM!sZVouO_A(cpqy-Q(Z&Mib9l--7@@8s2C^df;8yoL>Bmz;HOf7iEwHHd)Sl9JZ7 zZ*LaQBQbnJ#qRCcngI!D^oEE@)#is4{(Zc?rX?Ldr5zGn#ZGW+%q%}c}FSn_UoU2**{toaQlX!Y@XcS z`T+1c3#CCK(+b-TO7kRW)JFv~K8ir+O-MQ{dq;JuavGK;>_`|jDLjk=Is!>vDQom@ zos3&`m5puK3=nNCzaQB(iMBES#^Vp1|99{d;nXSPG)$_{pi^(7v{x1qMrOc|vK_70 z-r)kZIJD?6GQgmz?hV}#^KvuNfo$$x$BfGHv)UBtL-n3P_`P3you5959C-9Sd+Gx9 zcR30leEE%Uz=}4`MN?k=3IgQaDU`P!Bb;L!MCX`?A9M%@KKm5CA{W+uv)G1%pJwoS zJDQep_B^M{?z{V8hPh$^j=|9fvN`GWw)dFu$MWq@U6%GZL}SzFV!Q|O*de}{@IcX* zN|-jtH#Kp-{An9XEhMR_agCsD8tCL|>JmrHTI}4-c*64yY`T^0vk5+L-+Szcbw;C; z-fw^RrJ;y`leaMDT`(jeYk9z*hwt=L(dN0rGUQmd)5wm^Ik8bqOm-`2Xa+oclN9Xf z8bem0D?0YviGDK-ZV(UVN|DpnFgM3Mx8438T!nM--j@Sp7H>mc6CB|gxtzw%5-FYL zO{03O9ob;aRMtpA4-M#>I9X?qH-m?%ZO&m)kn+mtFe*dHw#GS-7>qHt65LtMZhtSX zqV)wGv5(k&wPjQG@j1lI+PRSAGL||e(k5X|1Ig(e@`#z4w&~HoVdH>NB_Ypn_ht_n=L;fB5aaXduW#M+T*1M=Z_u z5gL?f3WBYBDWko9oF;;{oXW>JfWPyAy?2F&r>-`@6$*H`4j(&wMt8nsS9n#T;qTR! z3=BtW*phzxM=k?xI}+%gF96n7I|)M=S8Ftv*=4r0(*nYTu?)D|j@E|Gb~aS!9kqHU z59moMhWXH{7#+$yLKYyLuMPg0(L5$Xf6iIcW}C`%`$w-Q0wmCx(3zI-@q$Py`{cn( zr7z$sD@vg*A|Mf5IXIn0^cfX21Np9I*4e^(U*N`V@EqWw14cSDG*R;+<4@7;Drvp~ z*K4y(2*K#QDVLUS46Xcncy7zoT~^$sTX2n^)Xg#B0Ayl&}6oj zy%JG0?#56GqUQ~p+QOFF#38QhYr+KNMs@qgaTS&fKykU+2xdQ!6qh-=@RBKqAt+OA zm=I49L}meo(I-BQ*y$()ke(XSmN+k-YgdbtxQQ~-CmxZmzG~zB)P0>3E1RH2b^9l9 z6?`;2|v`#LN6O<+7PE@l)Dbq~Sr%^33#4}lId)TfMh~XI5VA5J|f+NVHcKfHUCsOR^ z2=g2(_W-y;SDuc+l7|~zC+>qZ4T`d} zix<4xt&b*aAexwg_aJzLZvXW4Hk&iB$pwZp90Og026w@}+8Woff2`!R!l(GKLCV(P zQt3#pMgJZ4BxpxwE*FCFa&QN%zaQ5CaTp=>v$g@mpcn7onzN zf=3&G3fQewg3I`ala4JA+d|!fK*51c*7`d_HR`rfZ=h@2} z&u;25=(ymsvtq-F3F$=BMvNs^cI{U?t_6YptN#X!-OKY=G;e@qr}VC`aealdEq3^7Uq~ z!&a^`BO%KcJKG=;&7qJ$$bq>m9epI?HY*3nQ?!`Jb^UmGwuKO)XzFR$Yrp})QTPxX z%m`^XXEn%S852C(-4OiiqmA3Y^5IAJyr#Pwe)WlFZ5p5|ZH}00G>%LYCTU4&ZN=)f5Jrvz_3$oHy>gC@Yz$PQ((KH05L~_?44CMdMl~EJ zl3>SaFo#@m!NJAla=qjhNhC(c7iUX(ON0fVh3 zp!YKd!1|0ea*P8`_;H^(w?bX16{ptlgr!-$bd!!^@X2E4oM@jxBQ68FygAX|#E1)n zi0lqrRYsewbw)nI0Xyp=0X!An))&zH8GOqh%>8S>?gmLQKYS$SFHxHgcL?Qw!}bBd{G7w6_r3ar zJ{bU9Ufk}zr;moA-XA(IPW6-g*GJ#9XWypn?rr)_DA1rN!X#H@V6@n?MQcObZ@$8H zo9x@a`YlLtNO(mPYYN0?qm8IG)^;>Nhu;g0^V4jsR--E}4Oyw^SMuClFGKr*XKpGr z*hLyu!#MehLTAANBq8fxJcQ5ztEIJ2eix5>JIbS(xA&Xu4?g}hUVOGbuUAh3^B#TY zes?z6_kq3puYC*azKl~rsvI&JIn~}LcSzyTxK0bMddsLb7V4vVgSjdB7|k4OtmZl) z_2sf{C%Lsb8uuYwyp)tjUx0QB%;2Z?HaJqIkel@oB@cCk}3DbaNXs7T&Z{V^Z$60Z_cG8L&-ZSJ;z`)blt#St73li)A5V|;`J>_|Z*D5f?(cc~0f zGS$dVe9!ND^!9SkW_$Vi1$O->HT8q<+OzqA?Jhs?n<#U}E(HkW1J6D&h-MsavgSPa^@G)CZ5W}l@5O^!+B1?Gy%0IX^&=iW>O5z;wPo)>4v zX6)O)@ogxMz0=+pQTFbM-!OA88R~Rk^yiqOTy3R6=7w?<{dnxJt&3Pv3UH~I`4Ch) z;Ctpc=s^%@R2&N>X?E5G@6-x(?~s*v|KG3qME%tDFnblxRy@WPRXK@kqdI5GIT)c-xpW^ivygeYbGCcm)+v`|CQhK>FYn5>+>JJeDzF-oLWl(bz4l~tPR^!AnnFk z$vP~%m<>(=zM-JJl&~SG$c$%&M$IJ-ZEMhBuVzihLY~>k))W@}KACK8*i5*!1{mwE z96iS5+rRZKEPqAX4jQHo*feB2bN7j!+JG)~V(zGjIL)b)Y}Qd!j{$9v6b(73EmJo-k&ia3`o6iCuY6+ z^)H?*wnyKzXBJz(TWs&;wB)k;qUFogs}b_}FF1U-kJ3~dmsLTX zS*MQnJ1q&2q{>?k4n{@FD_!HoJ6z<`}e1-^-jvv*B%OlQFu~ah^Qx>+DCT zMBIJ!{=C}xdcAo4@&_*tWEpSXJRMj*`VKx5aZ2|Qr}WK4oIZMt{2iKVe^=5ozWL!q zNKhqQ5%8ZMZ|ST1tYeu8XmUk0hVS)VJy^_q+vrLrd%`%>K=R|UjTaH(yWDB%u6^}^ zMQEXI;i3!E9&?=rE`>oGp8%k3lMaa`Y4r`sI4#5u-2RTD} zkY+?&U8>o1>shRj+qgEEiaC*WwrXbs97Mo`54?0X3AFqJ4Y2K2Y0Gs4?;@FW<_4n@ zv1=S0^S*?8baKZ1>FF!X+7tQqgKyijouPKu8TuwpPc$$G8+1uJFlZc>kdu$eCp&y~ z8$A4#O=GdGaeZCL+zj{VK~ksnnizkXm}9E+d*^gcLkiaHKuiNXxa3r7?BPzwI>&@vm#6!EgY*~cN1uIO zub)&HkG^Y9Dhx$I@ipPk2VZ{U8;I!&$P|z~S{?q^J!>FH3+icD{G3j=oB#*y(N47% zd+Z}C%=$nm!rZ-eKb8lcegQ3VBE@#W96vTq)t#foKpyBcZKE2Tf+O1YdHeS+5Kl^D z)}0F`6Ua}2MvwuTn4dj~%;J>ch_WV`yUZ->#}{9OafCh?aQ&xalyvkAa6+l4H{^w_ zQ{X0%*g-XD9eEJE_NCPDcKi3=CXlmZC_9m~MiX?J)Robf;5?&@j)pq5Z20L7ZIQ7A zn6xoGTMamNAGB)#&bB2boL43Dg_ZvWwR6)U3HsoCJML`w>4NM8k4`*vIhifxEf(<2$btY)WT4t4Metb$>7k5yZXnI&aN`Ro)5H)isQ6s=IC1;WF0jVhlbCTVRJ^;I@y4&s z4L<-Jq&W{CpX9N8j)W`-MN`)n9e5FtvMx%->1;?~282SL9i57i0F(7SFn9H~kkU@Q zGd`^ohuGVHj;qjJ=MW>uVy!$P1v#>BPuYmO0V`;Xh5+8utTjf^SW`{svN(zR-X>09 z^PJrgjR8^Hsq5Krz=w|4*xB%>r#QmOdh1L=9JX%%#f3VV)T=tPLk7iD&}K?RG^~Y> zrId=cNo5$^2)wK9h#PTlr?u*X?;zz)H& z9Wpf&xx@!u0fbv^R2l$mfJI|xsVeQ=);@asuP%rg_nB6O5?|ISX7hQ5wnbafdvdZc zOM%r^(z!P{X7L_&>35|_VX4Sw|TH5(De3S zUq}lc)1XnuraSSoB&48Y>|M4Ks1Cdk7(Nl+IO*)x77Z)BNm@a;vy?h%*y5%GAr6Vn z8~3+q14W4kNh`dK5IlEek0ge3D);TbxnL5qM;zk@W|^XiFIa2Zg%C!d-kIS=X|7o3 zqbUZ@s1ZYW!(`uqSkO5*!x5dw>r5M|x)#e($14!BjXI|k8u2{tzKZ$`U$_7ELY=S+ z`%&4W)pZ+An{=el?FKxGtlmi?0`Xi$0DD|dXrEf}&x-<}MsYe)LeelE2g?pTxUAO7 z=UKT$J0k>7Ku~gEPZvDV=l0)SRSwD-1c3BTwLlfFj+pg%v=(343&|C_0#4W28P=Q$ zUX}x-fVUTw15*jxFND39-A%D_hR+()+dM(TIsy4;0&plz$`IL$Z~y(3Fb!VOF&0GH zHuVk`P##!&tjbhZ=3t4nq_!o)s)hs0w6?+egAZ7U2RdTxfq#La&!;(OvuTroNVqgW z(~uMa;UMba+`UO}xBubVFXW)!9RqV_0XTC{kasd=JEL}J8zz>_0y>6)LYW63jgE`} z?@};5$%G?Wi~@XmgU3R&?CHS=?a%aq7B&FKB7mnUK=sQ;M+tdkoac;G*K9` zAx>(Yk)A!nuU8-z*EuI-8yXEGg@*VPPT5Vhl zS~$_3ZN%J!JB`ZBt&ao*4=dP7CMXK5gZXr#HV=dqz4rm87NpP3FW&dU{;PAWs6L>` zO7A+25}6qMlRT&|T_S>^#pP$3dYXjdWtV7Tz&vD@u`y>{Qhh|%hMXX-eXt#@bv8)(-@Xsg_ruNZYv$~=t`%-y10VMp2z zVH!WiH6+LOQfT86jgl!UDrh=%bb>5#7NH`{+>U{*5xv^lg#xgUde#OId*`%Rd77dT zeJ>SyG~)c(-1B=O{DW`VGh;=5r_=qxm*05r#)?N=3vWCbVFVI4X#IoE)rkP`PCWLk zQ=p7ZP>(ivk(1S80Jv>_l48JE%l*I|_qJhDBnsBL%;B@4)q@tI=|Hi_Tk*PnVzfh3 zAwYyhz-dN=YZzGv$P2!!(;Q%5?$kO|0G2>$zv@VOJ>!6)?7rLCXNzdIs>Ey2fjZj) zuopUs=8#5av_6636VkQNFg4po;PJ}cV*7>o_{max@C|!LelG6_Am4ud4JctSgGJuY zoDj~Rc?^XDvVaEp>3wE``#GAP4b5FG231r?HuSC1dnbf7m~G`z(~#TSb;zM1))j!` zeryOpxquyJa?(hwTRH-5xgCi98#xpZtpI5UXLJZ^zGv95Qb?y&uxP+bo6Rl&?&}6O9KCU5@9pywA~|1d~2EFX2AR zW9?5re^O06`kpOzeJA~2I;#?*&H`tfLM<{lHLw*@or^a)B7 z4V=aL3?g(1p*y@UW*?oDaliid>(@`SWFCFbo}upbcWj++zkYvK-%kK&!Y~(X$MB_% z4kx!j{TL2ODXfczN%NA?%BX>b(6*MDg7jTIjH5MR+J_(Ho8sH*RRXvPjMSx)tcbWZ z&3%Lt_-l1(;rDCp!5JX;n8&RB@{{%P_kZn)X5!H|?y0`}ZpD4T@9UCl9n}W3S|O#3 z6rzB%h!DDs$e;nD0Q%Y0p;x8CQ$t1@GP##u%&rZfa0<90by}scZNYm+14A{6HfEgF z5Lty@93fS9&KXa#XdfJAaku3D$jjF+KKt}dy?XN!CdMybzxni&7xi&{f&|OAt=YSU z_~6_5owYI!i{VV_8ZeZ~VgWA>eaUNb2L`}Gge8OndjblBQ;@+2oftgjh5fw@R>xL% zgBU_xfO*wDfjaC!Nzdipkf@SS_c zJo|16Yx^crSikudSM#!>ZD<5#>_&cIDJBGnszLX-Luta^uE;60EAuU*30D~_yZb3e zkJ(dnYN8FQkoy@N0cms?Xu?^<6NxHTM>~9)MlSa&?$L=ucPsAC{b9w+yqFYUKFFso zuLs}2Ckt=f5xmFyN$|!oY78a>Y_Vc<;El|`Noo6(YGvP6g_N^CSVnV0u%d`F9zAs~ zK0uOM7no53AaqY4U~@FDLjmVWM9#u{=M+;J!ytm_pQp`|hsHbIExbSQ!(Ux*e)xkI zpS=8}U@m+@x_$87`>t~1F+c&`#Tj(Ot}&-|pMrSS-jM*g4Cd|O5kre-?6W+JLSpU} zMuQ;KKC{Q=J3z+cf{v1S2_xUw#kGk_^*J^ooE^4+KBw*{ExJbsY2A+ifB0m3d-M%^ zu0K5Q`@{2Fs^y^lVDxzy_^bnXqOOCH=w*i6n0BJUqcCA@l?B9UHaG;@2uRwIKkFx? zuM$CAH>B&6W&;#G_U6%z98e`1q!a9sUJmiJIux$=9PUS7&a+8gzxS=&?29)qKYm7X z2FGbp?P(H-Xa!O!_Zkqz+GvzlkR^l%B4*(Zp?BnlnNtrL@11slpS-v@%(=Sq>2b~+ zyF+w{V8_}5oe(lG7AX?Yai|@q-=%p?-88gA*}wSI%p41A97l}C=uzrMzVSqhNWlz3 zLM{|vmWYxB1o0rOHobz@8Ut)ua(rwj^|$ZwldcELJvyRl4&hd&;M{)qKp%ZM&pyy! z{^HGfF<<<~`uJt8H}%XzMJrcn2*kCB_$7!2c_ScaCVCVHzs$*E+nbPLuV-OZB6D&x zohF^v;IY*LC7l#Z#X!&2W^^cmcf>)!^~L!FNN=FOP#c2MyNB8fbjJcG3etgQ^TZW& zxd(hiLp390c<##%Jo)Y1d^(uu$T!5Y)IF*^QR5>Na#s)t+BN~yrLm`?kxNx39&nAx z^|KN3d_QD<@a5ch!++b)Couf89ng$(9ub^uRBK(c9AZ*cI8LIv_F)b$+iu{oC_aE> zOv_N%4uy+iF5epvxBt(Z1_3$b{cQ*zRUts|{< zAy!%oGKeg=sLHPZC9esAa-YJ7oF+&R2)NNJQDyno3Tz6pW$Ed$z&nXu7I|54v=~x2 zFsDtm89)>C$>yDEDjl(-0lpfXejNfA&)qv~3!JYeEC~fIIqZGfB+gIZB)|B_{wT;K z@|)lL=$C#+*?V7GvUmA=cfb7IpZ+;trt|&O|N9^M@-O^$KjouedN-F~_OXQr{EKi5 z+KD~agtoX^`Xvp9xSm$f0Q?8_58Nv|M0b*aJvqmfVcYj9SutXywu8L0?vP)0LLigo z91^oBIF{f_&(rGui2Uf-)B7Xxk3RYMns0n{Ge3QTRC@Fce3n;Dcf9KN@URk~&&k#f z>|1lPS#A|n)g1_!HNBl&tk!%wjCd;0Z9~K^rwjr>xS$pTSzGuoIP0#=%wrB0ks%)$ zAjO7mKT?y&j)NQv^}N?B_EoIMN9?}ZvMKxc9AakeEU;E(EJbFl>J=1#Gr~FKaFPPF zX9a`c%)QRS8v~Qrk(2?au8cW`AMW!k4iIq$AnS-VI}3)Hd%fZ>?bokgzxnaUPw^)Y zzHQG!bLkG6`%RFdA1&~>{lDJ=38LddMmw;grWuUa?Zg4dK&wf@<}m3p&h6DMSfE01 z4G!?}E1RK{wiyE+Ul_91T-XiD_Rg-rf-hP7Apc~Jy@H{hUyCP2i+hpop;{S4+jZo+ z5I9;L=O}RgCZ}&QWvMoD0oVmQEs8g1@TO*ZTef8qyccz-pH6dN^yj

2uD6co%Pd zpd6(-=v8%CW68O1NPd`~eo{Z$b-k>fG=&~~>wb6k+4rDJ{M~C>KP?gW_7yV>w8R2_ z&evJIC1CG4k=M?~)LV7H5Twn;4p%;iINKZIC0O_j45agH7g@C1HXqsN^r?M7|G3xY zT<5G4gCrnIKF32u%PdvOzFOP0F^|$3tsw-# z7enUT{j{3lbIk!z`Wi=I2VrQO_L-+&k=7d06CZAbW}utOy<6z2`|&MeB0>6_b3udO zk*~ddga&2Wl~>`8i-pM@PEUZUseGJ6)zIOsl~BHT>S{xaG}2HK9=PF0MbDz|YVKXOsleW{Wh~Z5_gF1tAhhXsb(A3t5?i^|29T z2&dQBSJc4%|JZxeojs2vO%K!4RWntsYD{}z|92Vo4+B(ZWMo8SmfgnqDEyCuh{#BZ z(~?M&R96)S7gM_kF|tQ0f-n_j6C%Mb%3IT_8&OJ}!EhPd>Rs-1l{N z<<@S?2oL@^|1Uj>Z>P%>i;BS9EjZ|pm;)#|=_EnAXLeg>I=U#kHHZR_dXCQU^_lr; z#tjILGbt%js!#G>v(IKU6Dkv=6^y+h?vgH`kS%9g1CaqRmY??*mHvG#Dqp(YV@cYAc5aHkLA{X@ZlaFy(Xif{C`HsNn5RX#U23^+Yz~gU9TNjJo$FA@U(4 zAy@6CVo0+NBt-)z=)mp=0m2w@d`NR3VyN0ejGj82@N18DvOx^Hz!4Cbft0y*X0WEX zw{yDpVCZ?E)go-QLy#?kei2C}0{YJL|LpsK652slChgU#TF?bjZ~H)#4K4M|zH9AK zE)o;LWI+G*uPj7-KhbBhY)z2o@7Ov9x!XQ-7jABU?%k=XW}Bt4N4J9qeX5|BVpSD0WVrq;#|{O z5KO!)7BKv?MU%+B;o7C*Dksnv zv=+EIp=_$l%+_4;{6GI5<~@=|;O}a30D^&g1;;4B|FTDGI{>P8qSJIYyY#uE#XiYr z92%o@Rd+&QTMDV}NnIC;sVSxdvXJQ+Dxrxqhz&rU>skA(Mz@xtE_0yp9`JRew&HTe ztRp-@WI_xE;3Vb?jC?5iyaX2dGX=Zx1W6$boI!|CJrXzs?JKYL1m~O%A(!k;0|2#+ zBS+2EanfJ6CxSn~y#LjgU%aW;FRqOHyQAZy$M3gxbbNGG_J>y_zCS(IIBRtte9S>$ zwbi(&z(USMFrC2lG0kyq30lnscIn03;TXxqvh?_3@FtQ{g(vt^(Hp==vwHyNyMux| zC`*0}WwBkzH|_HN>2Z8-S5owQk5G*C)p&5SfZ7NIvMrd8hn3RpmgwC6^b8dHG+M>)1?ZKAtwu*##~s)`#67%V4IA@^JL z#iK)YZ}-!0f{yD~Z|kck)uxXgzu!)82Ax~DM|yybp!#>Wdt&h z0945X{yzf`YKe%qi3W}gQt3l{lODu|0O4C0H$e*_LH9wKjA>0bc5IM$3*Do`u5KpW zPhP#qmrsVEJ$l@pT;S+tf%^#On`cz^i7MI>B`LM(bF)~IbIYbD#xYTvdU_#iq%RyT z&P>@2BI7z)F-fJuSSC;KLEV}j0Vlj~A41=-UC+fFPu~lO-p#jd(;25VOIWOxE+TFQ zctA~8txk->O-WnXxG&m6VrT8Sr8gf+WzjBcFSMNCmal$L6yC{7v%))omq5#%1j~Lb z_+ah?Z&P4A&!(jVPWrD6#dll=^)Mp0M=*d z+7)|pAkPEj^qhN0Uzggg+iGhdKQCqr5K~84?}bYOqd5*J`C3~$o`+9C|7JVQUD5gU zB&+1-|K%qi0T<=@fAu|Jj)2UQ!!oP5aq~E6S?me!Ju531QLD`k-D}odH6~TXVVZlL zg%lfjE@Etm{s56jXyKd$t6T$;N^#Izv>SGH-sH%S5SgQMZ?^}G*o4ap=wj6g{!KX7 zWRj7OeqH&vqJ|e7ZU>GP3e+eqWJX1s0T7|83Tdc_A0|ZP=;qnI3H&ZG_9n711^7c- z)p>cKDt*iT_=C^izJ2xP*{jztfA#BU{#kwX_KpMc;PLydwFlTprh>+-w9RQ|R5&7x z4=r6)$d64(tAznG1)T|)`y{7oXcgeV*K}%%2)NV;^QQ1XO&_wogk_a?<- zZ~>R0Cfsl<8am251YE%kMAxirU@{Un5$rVxy9w@EF%jwl ziv*;HFyG-Tz1#^{ELR}YgWZ?;wf$p2s_aE?1eYz2lrTjV??V&27Pp9mM#dIP)_#BP3Wu zJl@W#%6{9V_~|!=m9JmlasD1Xa8EH&+AS01!)$?EvIj`BbGOz{RMu7_jpKa?-`56)E#r@r0yW?Z{o2gs@dJNE$ek{n=%dOY=8lwTMS3$ zR9^NPgg-m_jOOSLd3J;gLTVe7U~!s&3mUB53_ct-yTW{KD`qonvhLo^L7Cr-Wn%Co zKfs&x%sCjmPeC|F*Vu58A?ic0fNc})lOh)^jQAOa|HaoqPFq{j)$0h*Oo$&t+{)+z zqbl{o{jPFxUVQPzvv&{Twp8}ufqTN3{eI=bK1Ai>x@!rUXCeOzDM!-`x{uv73!rg{ z&O@RN*l=9HY2|GbCczFws2h)Dlxj?JXd;ue{0f1Pu?$Bigy?YZbiFo#G*Y;wE7MQv z^Z)jHC=}-m2q>WLnM7o}kM64x;wR|Jet>f2irN^3xQhvEl;EJ#$I>hWJWSO>2fwJ< z2GV+nt2NDLATK#y{{ZNL(`&bFEj!hTq}%f}5?^-fO#{Rpt$xD5PbopN2G7+I)#RFf zmdfxk3vUT63DC*mdF&Zrgd$1KcAJ?8slKD5UL3PQ(t*Fz+PGUG`^9=exxiWb)~NfF z?Qb1B`Q2Ui(c|`H!?oWuTt9@|;L#x0=l|U&9|1Pt2Szb?%1Bzr(MR5ry9^nkCdUt= z`OeX{5|B~Ew{jLD&k&Y^d`mbhmBxXt6wcu8ym*wWuLQZ7AXN=-ssisJ^FYtM%xJ7V? z&`Ceh(Sc_Ks`Bn_p>{>;Z88GoRHWQ-+CLalD0vPRv+1kB%foe!*xEGij-A8^j3FPc z$T{Y-cOn*#xlLD18qi#EtORF3eXbTp4R3$w5#{wOFaUw=Bl`1p0M0xrP)R zl$=v6)-WwV+BV^pKy@qedY?WKzy?5qei!Qj!1fg?YQm8oKqzD8;1kKNGM!L3V9t2Aw z8&i=26=aCA#(Lb(h*LF(=VhU0vkjZ;T6K^{Tg?XD_W2$hhkrqL_>e7LqiL(MJ zX%iVGhgD!l?PjwtgpwR}&M>IrmoMawdSzRPo}PyR)6P5b%%dZpZ!Nj`@+)AUpFPEC zd-Tvfxy;GUGAAG3lv@l!5MadN1BX%E)j|o23j*9VEn-F_?Nf6cSqq{kDr?7`5ac?d z66jBIb(=nH48-?&YUL@GL4im%gedp6u+Xg4>&RX+Z_j>@&iB5(spQL-fBd4Jy?OE3 zSN`_v*LTzI(Zlyc-Ca*3FkR1rZZna3x2zx{u2{AdNsY+e8HwJ((TGCO{gLexB9ZoKf1{V#|rs~!5ulu3|tzX>FUTIAQ}Lm=%P7~uG!K;!!=fH5j#3A4O<*$ zL7cqkT%-2Ih@@WID3RK>(tV^Jl+X%fkl<80W_9Z#-QiC zX`A7Qj_0#mPuO*>56fB=-n!5R$nNwp_)2A;IBXM8Q;w|k)5lecgy3i{UP~E)hzdL8 zt!3nQcfHzoJ)H*+*>6Yu|9xOj75Pn9K^uBb0|DkB1ikOev>!WWqB~(%{xr@%eX{M; z>~6Hr>Lc7H<-W=i1vNYM+O%%D*fyfz81EPBZQimFnVoM^e-VZTdx+m_6 zpS1JSg!wgv8mB6C`V4R*`12nnhk*~Zc(ZGvyb zZflMPXsQ{_Q~g#A_j~mw{Z%~!eB*A$J$U4vJh}1B$?YS|c9r2AYp%U$Hl!(c-v@$^ z*f!?r9?~VUtt^Yvx}xhh0_E!*-0(1KttwpFLy*-;d4diOS4RqE{HP&{U*~&Kom9Hi zKUCZ7cE*jYbKYe%yYJI`K>-0z10cO?0|H~lr?muI%*~=f4Xk6j#@X01d7{-i&q{h*S1Pwok#WFPck88W}zq{jA-mep|^L`->tWP=cIe|kUcTg=1n=|`vN=vW>Wjz z5!BSY`wk~sD%=N9UJb$D@bhn#v6dWaDa{wO0IU1h^Gv27lqOJr4SI0 z@7lC`EYX9QTMa^=43SsS=h$1T<>^MfrB_OifQSnLF?xKA(K6Zdj!^ca^Sa*L**YFQ zW>3ca_4n=w@|(*NKKxv}g2;TEByV+Jxcv!6W0M-={e)8i=FpZntuILU(Ec#l=IAC8 zyPhcnCyrv+buYA{`4Y3~hY>fnQle4@WZeQj;=78d-GXp~Y${Y;sFqEFz$<#e9x2ju zHMq>la}UIiPoSog*&EQ|@K4sjv1R~_66oj;vxAh!1a7gz%CoO%pVqlDtL-`0={RnY z5z?4%W#wPi>(A=hpLM_PsOzaQ#$3hTw$!N_&2;Ocp3wJ~Dvz|E*jNN>k&5zfah z7GecFH?1ZMO+#mBNR2VHioC=n(EBA|ACpfXEbM&71dyB&l9GUY=M_YIs}$&IfvObB zsE8{ALq&ZEpb~0mrc$_UUIT|P<1tg_IHN_Uge*gn<{Z=Ll0GdaKT~aw;SLb}l5EmY z20q}N&9Z&gMM}I{);II+uYFl>KYzLJX4|7j?a2m1ziBXhjH?`gP7D6yjjT_*g2G~i zu(-Bk0sJT-63ik8I1qD(^g8nl1e0My*aH~`>vTt>CIyifIK&ULGS zI(*fsS8qo|FU1&;3AMISrOfU)_a5aA*$_e86S*dcbtA~NbwpfiDETF%lYyX>x@3^K z#<0=$r3XH0I!DLLZ#BT>p<7mqfvI+sy6wJsKnB8yjD*d*N-xo-Q4jYHq!|(V_yGt2 zC+ZPHm_T?y76YxoR3aW3ZO+LGJ!e+6F`?4dHt~2VcdG0ZDC2JF@~`~u=g;20eD=CN zt6#mkJIOtG@b0`K4NcSUEOI~o<{KZ~v?CuVYx8O+oEJH0E6`y$uW-5dL zmMPmfow9s*tbSS_j9?XPP{AsdJC>nxh42lXa;7cC1~+1sG(XTc$&PhZ?yyvzgG375 zPz&we49mxXS$t5BvU7{`{^Sx2J-gPrJB-w$hwh1$uHRf$`^R`yZKn{<1nT!}NXPN1 z2oerO?D_>&>uq$Qw)ZTUELCVtYOFL?Y3v30>paKBW3eEMs-5!OvI`={9Ifl%hO~$- zd+9mD+4tZ!hTLwfM$*@j%)N&l-7J@I&^E5E*avMA^=@y0I(m`nnlc~B;3lKi8SZU{$CGd*??mxc@bm}7L! zGc2|ML~X7E(Rs)anLUuTzJ;YtfF*Pc?Qo`b=(xv1Ld0Q3x9RxSxzIf1yM#8i*&H1$ zqVOmIf^G-ay|&{9gfg6QWlX7WY?Vt8%xk(`cgDNw78 z19SsC`g2>Sh*pCEox1HcAOq*kv#U^Y-`#rb$o)_g=wqy7SDU40?;w|lX8}u1948}M z%xP1PfxVDZ7LQyhj#`82p^_coDRRdxu+erPIZXJZ@$4+UT!C6hJ<`vXeh{m5LU!c5 zZQR?%kHXp|muC@82W#ZE^dO%BkAzy7SuYJ-UyTOq9AET{=!?Q!}aocP76My~dyT<*4hwO)18L1X$4I~8WA@s4e4OlbA zMhl!ekH|zZ3ulr&o$#BnW|~(r()QVSvm(on2vihUfa46FW)8~~%|<@^YH7wI zfau@?2I0jKvRV;pnFy+W{y%axYm}ya+06xfKSHN(el+J>$I&8}@nGdU_}^fRfF!MVu=Zo}9x&x{%ah@`We5ie#) z%E=>8OYUnDdx^?+d;ULv^3E#ky7y{uw?vH`1cxHh4o$lw_Q&uSQ8^tfcTDer4uV++ z+=lchi0+<@%aQe#(3PTGGE$60FBA4WW0=mRw!lF+>Zc)Q&7c1-pCD}SFSZW-{HJeT ze*HS@*_Zz6pJ*?C{-gN%#TRe?_IKj&e*TlMzk2n>*Pne>`)~ic`Ni-2eO9jT zzLkF?UVQb3fBNO8f9K85e_C%otFP)catr_9-Oqme^{0R5%`blU9U-^ZT-UYmL>ffb zoT=j^Xiich$vJ!CWYW8z9LZ-H zU(`&OUGNlE-d0Ki8DF4;M$gkqmMH7qV?nhzYLd?-6M7v=q_g%D0%P0s;}G*qcV0UR zNOterHCZ@Dc0axf#Jar?8el-)$=nIIe(C8zZ?(MjDgNZVeEsD!IKc1NxDOt;Cj+3q zyUUIbWd1(BXY~c@pl|g>a0Dp|>xXw91IAeGKv^gQH}?%n$*El{WAr2t`H>zBw`doN z?2G$VtUSo1n_J5abm1MRH{<{q_r1zn>0*EWzg`d}QFH9Eio+ zGX|gPYaFCCA8^W!*=oKF?284;jFshVvON-2ts=PD(_nz&vKF`X_ z`TvGbF%-YGot{}_f&9as4G6ui(vff=lk!jnl@R4N5Wh2MiZ8=y{JLgfA55f@VMSZ* z_&8w;f7}u(XCx!2UyM;EH{etd%e?9N|NhBU+HpUFJJ_9lsX&%2uyj)>9>u74RS;09i}W4770i?kCCy6h_C75o3<9b z)Q8j>H?}c`)TnN$K;)DVz^r6&E(D-+=N6KEunZA2~>p`F+zJvfj;QFni5#m6PcZP*4bmu90n#vxceS7v*DBX@(toXe)gbj zDYdA>wAU(@V)ey|vp0GEe_e|}Q72Mq&{2vu$~{HtO#FsEPaZq2E;KfP!r1I^jCMO~ zYI#+jEz{Ap* z4*o+MHcB-oYO+bFu|m_)axD}prb!J&$Rnr{OS%p4KmCGB4CI_^LqZjN6`{>r+Zz|l zlpGf4^q9M&Cv4Q7|8qb4@Jmq!xNAArLELvwU-*wh9*SU(trdt%S_$L~O$K@k-D*@| zHbesLLfj)Ct_Cu5P0=-;Lb?iHdTc{q+r7drx);y7Tqa%Sj$0v6Gt?Y#qwfcS?ryq~ zfsKOYmKmUKi?a7jMst`r^(v@aWNdl8VDORGi_Zki>UcGh`ve*UR3A0aY6G=EVo!3#IOS5LDY~m+@PM0K9*^EHS zi(PgrM*5rI`cL9^33Z`d~dQ~EyQ zcWjRgS+*0f!NI|BMdo%|Hf#^qj#A1#0jYt5RoZ)zhVVdMVszhA?D*&vD;w@e#@@HK$u~6Yx?|tkNFMxgZYIa?eEAfJbrn&=yA5=Vr2=kWlO~eL9VaK4 zgv5A#+Y~&Hc>z*A{k1)TW!LlKh8JL_vb%?0_M%1%3{8L_3Gv8 zw{M>1%P*b`YU85SFO-lY-pIt^3vilH_O#q+0iVT_yM#$}LXFG84L}pzZO1|w45*99 z57}oojvY)L40)gGB9uWC@TTqBXkacjW)t|}zkT9=}ZebCR{y29kr@!Chi~@1j+A`FB1feL>AYAX+D}yRJ*ds`S0S#2-N)Ve0F{vCqzGai-+i0_DF4N`_S?VQ%kMNU z{_bD-`9Ju#u6g~3f8H%lx_h4TIEVTe=zoLs3WcNAOrcrYGK@`;%W1~Q zuibS36h{PMmqF4`oV9!aLOoXYk_>lK)Ta1Mw-crCi=;q8ID;qF?cAl%)jHnm0V2aT zk?9xVlAr$z-@_eSSWO{+8!cF&!myf!u8}Q2abmT&uKgKly$E|q6Ysu|L<>$URgQwNzs5!$U*xDRdy~Y+$hSfnKOLa%S zCU8kU*tkU9Zk!H@FIo0nhS zdp{mKW>1un_|y4b83|v1bSf@nCY**X*uaulZAwF49jLnH7^OemZqeeNz z&|G5Zb81UtJ+u1^SI9EiryImmL37&XwZ|gp;fTAAHMhXUC~-U2v{wv)vP9ZwpxT|7 z3w3ZF*rtax2a<=XEiWJHaCfXd+Q~+0wnUu-#VuuSof+^)?(LlJJs7GM;Oq%m8bfwW z=vjoMa@z6RL&abJ)t6u7=YDVAee|$BaiZuqBCd~8fWLuNo=w1)(J{8i>3drp(FGU1 zRbKHfsTVc7X+su{YR8q6JFa4RJbLOVL4ddAd(>lG%WZdzw6)-R5J>8>g* zitVyt2*gw|=ScW_=A07})&-H_yvqXohvN0iU%si=Abn@OdGqY^*Kc2ZdDp;x^dLSd zj&3*N=#OynEuYlcC|9f;z9g|z$T}wvxwK-TykwQB+;vG9>OWnpO{;4Fc;=!dY0nR^X*&(o;>dK#8?I1S= z`t>wE#fxTD&?XG~+sKXE?CeN52dD>JIw zFW2oFvVBw-I$+EaDAPk=tJh6OPv9-NJ7oY;>t@WwSlJ~f4UxTjE&_s=Q|s79u(Tpi z$$a8ZBI!tEmtL(S62}8BVe-rU#G;&x21w{-I?+O4djQr90vjUA62rW1S>)dYJM4Yu zE`9XCJ?Xr%8|RgMi2PTiz1UbDOXlipHy)^|ugaEv$|T^X1~Nmt&IVwu=$P%;h_)=* zfzFs)5N=BW=_p(nC&z|#seqH07^~48QjG9H9z<@2w%F5k^6^!*}NH2^ONa$~E&8{M#GV=B~Yp zbID$=1JP8wudS@@42M{da&Khe*k>>9w!KG>+I{fkr}`;h-l+0sfhd*;zPXQYlc;gAX5nzVYMdPP@EHNrzcvFUZuWnklXST^?N z=l|NzK8Ef0U;iH7JvoTL6Ql+K0Z=L$aw5{`i~(~AhOJEn>;!&EraoM^Ln#f^x-A=+ zR0Z}nA<)NB${tOoY%ib^&-N;grjZjpc*`kW(0*CBe!NGgY~KaNT-oQp^e_JSu7>&G zfqNn%@%;<7eViBUGY~eXLy-$G8xOLv?fC9|pl&9b<*V%(*>uI|;hG&#?!6AmbV$n{ z>Y8oyf{Zl_QfZnj>9|PEw$e*%}(^{>D9op*A`5!1a;fq;(rT=cUE7S#sNWyulH+o?5hnnv{| z@a`VxOJiVg3oNo6V}YO6GvlO!?Se+L08who0?hd_pyu&(r$Rvu(8b&Gj#2Is={}oN z0;M+rpI_&Y^RQ;2j?;OQsbp%!2y|yj+W;!_03^ZHM+dtUw`RuW6*b}0C-y0_(c0M- zgrrOt(w;|i5{cMttLCRK5F7mLix+S2N;;1oxF^cj`ko5--Pa%BtZ{Y4Y}cNv7^#I_ zP{gIfMW!AjPWXfxKeMd{()Ns5PKR(e!?k#VS_YoaE;+fSYcobf3L<)X+cp|q) zadE+|RuiHH&FBBd_t3B@27llnOm%o3pe~TrlQ3fz6ogBGf3E>WC6AaXu@CxE)N%|% zHXEb~d)0y|6@|7O(*UbH-q9?y1Q2;z_L-;@ttmccnz+R6w10F)-nY`7-+TM=4=m@ed^g=zE2&Ki{_Bab|h=Vi@ z2OJ(H?1GWk*JXqX6s6IUQ)`Z1H2{;aP+Di6J}@oZWpyL+iGJ~I_|Zq4LU=Rb9zAe( z6Haf;sQQ7-sE=0gKL3w?|HH4gxNDYa>ufb0T{OF9o^Qw+I>`8QtywjY7mZ8FnK0HO zOl#X5I&0>tjf6Fua@soEpjqRwZQ{3RpBm>ZkZ=H4GB~sLQCD)grRqF-jQ>I^=|_** z6Q0NM-V*!n>mR;K`uV^4^!ef=P}KgV!1pf&zJDq3{fGs=MP5{Hxk%PNSm+@fY~4V@ zvE(4}Nof4=X6{FD722~cvfTz$c#NF#GtRMA6ZYiFF#zjJ99{?&&%_Vzxu#h=I`#oG z8mNWa^IXXu-~~>|2ToMhRwIq$eL?R@8&z&!NSSY|kG2PTRP0dDZS*RUqgxA(TOU`v zhG8uL_dbT|80<$?7uY&>z_rd$!%UXFtTg_GlOV z?dI{|k8{T%|N5(61LgC?3eyl<8G%?`z{k<@>#4}LtVyHGS~+Vd?OM*UNxTv`B`?05 z)R^@hEeLr02W>h6KETOw%zHm!yJlveI=3hiM?D=#9{hh|bH%}EZA6C+ z1FRqz4`zpfDGvZbj5DATx^)NW!u`AoD6DF_6%hlv&ya+c7V8EiQNdS1g4RTytn#}^ z$($&dN^2dG%hu|hwV-(n>1XkB(oT8|rx#&HL>Y2yI}#m>?5@-B$(wrpC-n?~(-(Qy zYk2U`J<;kT{qBA6$KQP81JH>c9B=o7N!z<$M@*pmj@*5eqY^8)PW7voeS~r?+cq1` zfvk^lz!cfQ;G}ABze*j4*6tID8<4k7@fNy*qV{g6SFX`oFWuzUX64aXlT22{sQ1>9 zzxR!q@FPf&`vC>o-9OYWILfLWxOEmfQWH&NYK9Ku+J(#aF<))+hKF2;inpN`@+6F z=@_=A!>f6klP;SmQw!uks{_Ctar;F1nE&m+OR!=6Fn<%#oo}?io%37=7Q)p zc4%A8YT^~>jp~dwaM7&>5FAfVM5py4=dS(e&f`85=*tL{hJ@Dyo@!qa;H0-t^wA&Z z_Hh5EzS>Vb&C!?18fFbB*0cF^nkov_vbMtla;Bf)YVLhE7`~z9gGQEwunRP2f-=af z7U=vOFnOPt;Lk(>_i%i!HdGjF-sxkas!+%$fA49wPib8a?hlSoI#jbO!<7Xs6Sz*Z z&qZ@10lObjT@bFQ3_hJ_#%`-k5@%kX8?@JU=2@FZO8W9TbII_Namp4Kq%<0XYm63Z zS7Z*}i>PRKr+Y{*%(Ear2B&nI9XV|`P5eO&lsiC>P#X@Hnp1h(1Zt^+1L7c}a?pTu z8Ejf6h%~T>0Cq|TnztEnTIEFyr9QG!4@~$cZ`bhO|2FaE*}I2vTibl_;N9H;<%Sh5 zAA%JQe!Cs_lr>}V%nd8dR&FT>(8TdifQm6K$@Dx(>?2x<{dWIF8Xp=<(Is5(GO zS2-Qb;9*xZnlcPXbKDKG<~{kN>o@#kpZlB7|7f2U z=Y50p|Btw?pa10Ln?KtA`j;=hdZM5*ly{%w$~o~SEi`9`q49VPl}&5807|=jU0ul8 zLs9+)9f-!614qzRWGKy?*iK9h>;kqxK}5m~Pm_AC>+KBZ(vU z&;Q1!fB24+eSP^2Mf*?uix(T3kH7it&wl%zKjUaO?r^RkiLH0*8fZrnky;(^Gxpwl zio4RW^)9i9=8TqZz99y%z1xsAWrEkkW2|*>eh6l?nnLT6FWVx8)wA2#ld;dUdHLyKx$etX28Dp7v6P&IM%A9ka=3 zip&Iv_SnXTb8W5#z>}tCqIJBubupK*(DtmeDB7W`mWirm(&QSlGwG@@Vb54wBc=3E z=53?y(SZQ>OXHQsb9c6W@Tfg0&Egwr)<>A*iKLrOxb1?SjugWw?7;BG6U)sGE_Eb@%x!FW0bn90(@La2%W3*ShRRlgd z_~CYW`?F++`#8nN4&0MMSh^9yeoTAuw-9E7yaN6O%_SlNjf_}=yaaRW9ilfV@!wsqKO4GkGu za9pW_r3jB>z*CXC))-eBAZ}NYM-L;f16fE1S%0imBJjG%XHD7VT&SYl)<+*4CUD!_{`#vI zc!K`Li*pxm_voQ}VukBBE8ItEq~k*fyc~T3=C^CFKE`Ybr9op0r65S@+|d?88Jn-; zM{_EKW-z>^5z$;lZI4yBvtd(4Fg| z-A(+dU|`*4@I3hA+_v;~y?Uyp7n(voVsJ;ZnCICgZm0=@dquGNEJe`*)~}Wp8m_To zi`da&lqj)5%{{S1O(eFiSO`O}Z3I?|u5=%%Cy#o8R2Q76h*-6!n9R6%gq?6`*S8iR zn0f-UaGcTvD}(!FSq=5`<+PzP^xcJ_b3kZLiwyIa;8^s&%RTlwS?GX`W^LrEX^b4M z@P(KI;~YmNz0~;mzx}h1Acp*hm5Tm^*zeK7=--`OR|xtwxgH(#{X@wezki?)j~>5W zE$Din19S=mrudYj4)V{bYAcYn*V--uPZz=@_{&z9gY74S63vVg3bmTg0t*n~D!tCE zY&I!oWJm4f$aG!(_(o_+>tm0>o5R+Y{rung*)M+j!Tp3V)ovJdvj92SUWe1HbHHP zeS6A&bYRf!Df`R%^5yGaKYQh$)g7nl(L?tHBu#FReDYDAviVFwFwugxuaGG-D+*Wpu2SLW^;5sr)Z1zZ8j#UdOzBd7yQ6^7L}bmerONfO_mWjKpx}l%)ShM z{nOO5-G*8`nxB2UFjhS~FJ8a7D_cE!*q+QRr}w5CeT;R4W{igMVx-ZdTmn%dfHLGm zcI#YRGE0waq=ZAp3N(c5({jjKr0Av?cCkQ`VoTHwGmNGz6k(7}KhU-2M(|78JhIAi zP-W7sNInwT;ecu5&_OwhV}prcyl0$jyrxnj?-m{#)OO&a5%&#ayAL#!&DP#=P6FH{ zOjiWcTB#ny_@R9nCd zARnIA7-K~>Cg6exL6COvpGy#Y_WY|ET$4%Bo`rYE9vkDsv1lTHNV>VE&( z+BY#uA0AQ)MKF07W95>| zcTyX62S6Wj*PWYagR8g1En6H*Lt;CO1h+Y+kB;!Z%`wfFU&f2CYCn7P_I3FkfdA2> z_au~h-ax582rW@r)|$E?xm4_A?9Al@ff`VcH*LKSaO#eUnVo*!`($`mn$o;QU!%LP z(Und~?0!z~bN8bx(`&Ter4GBcHit4aZ>&8Q$T!db-S0t#yZ4nf%++NsEjC%vTh;*L zxj`p{<`P)-FEq7wAx(5({VyNo^vW zgk9Ra^P4=F1$lcg`trq>_3Ry|;C9+Sc;N01MlhJNeCJ^F%{M+kfbW5sV&h$0#q$`< zSG!h$p$4}m0o9A{*78Kv6)vA*q76GW59p#3)u28m^2Bp?8|a@&pTxS+P~}V#+6OCG z!GxvYiO!K*{rSK5Jxu&T4S&3AG_+8-04=q{YU!Geh#V)=F;25F7xEV{+nA^6)D^Ma zWB?o&uIOFN>Tytui0xTN<^W&|6SwAZ;IZIWU4(Yoxziy&Ie)y*Q=l}lqFyj}fy{u$}{0fj;PG9R9_CSc6VbUcP;S z`F__)fAGNlb{LHxzUZREczYDfjNS4IB6B{&J7c4~_Ii}8X20lJ#civ?(1N!0*6cbD z56X?Jt^?gN!6M=*v?FpW4LdNm;O+^-pY-JzGF`*RUBu9%N%Oa!^YilcFa7ntPc3}( zxcyL-8?+ovoEbyn=v*xj{U!qyDTw!^Y9wJB^|A}-x&vB7u*^MnbB&DDc~#cHk59@2 zzV8Abc!4Z+w&+3M;kozwvF-VOo7|^_Tm+SCScXLmEJyh+@83>t(&6q z`WTDKQw@fUcBBDdgF<_qB8RPwRiTp?I+JpOy>r{B9h5u{I$v#ROb6|z4I8DJ6M~8hYRv-PL$2$> zJWXn7u7Ua|p*uP@i}|{I3D#kEISs*ggF>6Pw)c*lDLE|8=`lB40mG=>u5e$!{^Hp? zd)nQO`q*)M;_4!w()(AJ>l+^+37AE~EKiPQOsG)I?%p9|m$7?KLuVxri2~+Mn`fN` zv1eOlXf-YF)y80oK1+~3bfMIcBbSg9!akold!v;ThWjPCM%#15rv3asfSgH^MJ_bt z%vSptwSfvTU6h_p@YA!6VqS}FHA>$jTR*Ho0WV$~#>`VI_uA1l<2rn!k)R4iVKi!p zVWxiM=$>|>?}6yWWh0*dhu=q@&T5wyL4lhb7L%cZGd(t}@3QNE(o&XG)agqpukO~^ zO>tugM7WK(Sfb9Sv7;)b?ik~Jrj4`qb)`A&*kO;x_~%?_?7BlfPVCG=v{qxG*~bds zYZD&#Y`fR!gJ&zKc5c%JPBnl5s%O|De}=pxDNlKCL*5(8d;e1u z>!517>wUkW7$H=@sE)cTd_Ywlep*xxJdRB`M50A7edV)2*>zCiAi3zbQc z+^a00@#L)Cn>Mk{?!y#Tw%Z%TgCFPirM`LnvR=J@_5QPbPEU@Zg`@?zG4$25d7Tnf zo8H?*YP4m>>CMVyE8{8~0$9*OdsK6`sX@z3mATqB_zt0_r(W<^@Zy7vRy~ReG^8__ zKzgMpt{a7D|573PXk^-V1hUAt zfU`S$CP1!JHeVU6)^<;1?4V5-#!&lG186wGTBAP;T$oqX-lc~5s7V5@xh^8C2!nR3*Fhwd5U z8hgV=?v6OqbxbBw;?1Wp5}1ajskoj}M`0>B$a-_ivu>@D zzy2;Q?0lYofN<*3qxY;QeBF4$KZbCM+LE1}8>op)rdSrC51mVNJ2VVAI}X|DE2ZG2 zmW?#V0tnzDv9><@X-|JAoA7rCGSS_%zvR{f+@dB@F z4eu0Npd(qn5%v>9Xt3K=WO@3#@f3v@t8#5V0L4OpG|!pC<5C;v)IMsEF#~3|?97aC z8|`x9NcEJBtTP1A^+N?d-PZTT={tW!IROwln$x?ba}+O z z8pGXo%taI<77J&=vO;VJya85<6%5`7Hf|hA!6`7!87eJ zkifiiEY2xQvOU)60L+fzRJ)7J!6#T1_(a3hG#;ljb{ht3dmL$dx7kLbTVyn)2fUDj zMNib(^XbpyDL{3oM157<3i7>#{#*Db{5ZySqAy!n6qk3C@AAJ zx3=ZLXaTe{0zumXH;Nh|$<7alH@?`2*86I8hClsfm=66m}IrogILrFGH`k8(<@L9>-`X|ftYpfbAx@Fj4RPj4uZOF>Pf#^D`@{~@0Y*naHNZg4kIUM~svcvc z72>x8ZPapwUWkLegZdoWGgu4ee*#*q;R^or4_=!!xC$1F#}G&qwFA%v?cMvV z1DejE+V?dl7svn-wP7&S8qSUnmmTPbhH$wi-QC3YKDD5F29NC=X`pavjt;NTK|$&1 zAHq{O>G9m0qqRwCP}`r$6a{KKRCLuFYr$s}UbVP00s#%XH{+HLuZehyQ~4a_#-c>A z0booRk~F8rYKSYvQApe_uE{vI`h5C_uQ$@1(8Q2xdR8qP!;uEqbh-=HDe1@(;wtS$ z2q6rTien|CIp+dSZ;Xx>gDvMITW73^f))eWaroGhEhb|Od>6fngX4e!Q&0cMiy!>P z$Ah~5bR+t8P+PzH6_~9b(!G0*p{SjrW(!pG8naexT?;920X6->->ErQNjl<$6<2%h z0bK8JfnjmFh3srO68GUZs!yRdY|)qwTEb z#HpuExUDgi>{x#p?NJXM#DaU)u&ptX-$gt+j<7Sf1CNO_K(C`4|G7OlO&p2X7#w;$NxmWfB8PYc=^Sf_g}nw_4T3J+i2+@Rs8F?z)6qhtG}Of7>@8R>Gv+#H z`NVa_16Oi|l1h*mf$bDGa6$gH2*L}&3RbhGcwM@dHw0+X(?510U4mOh-@vdtew%k% z4Y2_x_G~D)Xb}X($Xw zN9|doBXIa2tEQi9gaGBDz31X_Bq7M^g^gq(BDttNW~qM-SVxK)8MbgzKN)bSnjf0|}MYMmrOqR;r2s zoCTRyHL8^rz=g``v?mzuP2m4do(QST=5hd+B$ByKOaV8X`*u}E-m#!B7v49E%b-%(rdgz{YBlC?L`4iN#`!Iw*1KTioBM4V*b{V*f z^jhX%zQe`Y8q&g{k?GlRU(Mj$Jiud|NQ=TH7>Jq%=dRTfhaOI?Q5SWLs$U@$hr6h(5w5ZqV^wd@R z-ln~fx;hG`hO^d5a516-l3NXOVD({f1tD=?h({`^Trp%w$i5aDqN}3-6?mgUGyj&# z^Jt&*Z8XDWK96%d+a5h?&xzS@%EKRi@X5`$zPA7up#7ki1Eze^tYQUV0)Q@d9D^Dy zN$>3}Q`R|C$8hwfDo$)V1WF}|C&2I?ekO8Lz*+7!CN8&K5d&6hTsJ^NFQMnH1NOqG zIa6gca$U|6B!FL`&;WzGwjOo-F z+HJycjMR;&j?jbyb!)>)CAW2qUw!{7@}+-fuV3fA`TM~`_bhmfZop%|2o;Q5)9QmC z=T18P{ww(Nz1k~IAzYDKE5ygx^1k zYr8bAKEbp{^*>_&WE&T0`fRdZ=`?q#pK9p0w5=T)NSs-x492<-Iq8st zf;}$}^hvBe{S#L?NFtUj8+G~sxsOj3Zg4%B8-wnn&=murJs<~xumf$b-MbWGTN7Us zu{sbUb0Mh$7%%C-Va4h(`U+)*0X=o3i&G2qhLC6Z^iSd``helr$C#ZYeYT~56AUHf z5*Xr$EZererftx;i5<|&Y}4v&^ceTnVrL!w=;~*ZRO<(`tP(W%sogzluA$RV5D-Dy zhZK4F(?4}J6L$1*Kx=8x7?5lOiiI8WaUh=2!%Bd@nR&GAMbz49u?F`(&N68W?TS`4 z_9*YbMaN-?x~F&5=?5}jYw2s-1i3ee*N3dp`SeeJ6BN}{q&rTUQgihdib79^>7^1y zA?s1jqwz(DungL${7y#=c%^S`0Vgi{b!j_gz*SpSS;LBV>+N()mU&4$qKlTdVz#TL zaBB~Guo3L`2>m-h&UZigP$7RNt>Dpv_e`mv-Bidw$s<=Xud}j7zfC%+uB5EMMAm-mB7}~ z?v%z4R&(FXx$ph>_1jl(?<~lV9<*=kWOF@?>oH@QNO6eg>@aNPli;=!1UzUm&c1&A zAzQ66afmPUD%PnsOefL^I{J19MjF1IySH4+h9;!HHl}wAnk;MY0%2?3k$W-Ga;oE$ zLbMc@m~L^#MerV-ZBOi65`t!s>81ms9{?tE|OP5k78=l!k}`sk5+rcThlmf`rlFMsecE^SNgI5d&HC6-uN zfFbFu&K!oNLCl&&4}od1^|iu(d)4;_A{l>tl}XKzFA?6ioZ z9f}=Ph!N=(Pyfs%BZFF$H_231!+$78$iabnl{(ZExO{n+TKGf~b)y~z~6veMS<>7RY^DL9b-{I7iinKa);rSJpfd1xGL9T+oA2Ny3Io1AmzfGBMK5*71F| zL#ow58E6m+c4OHsX=Wt^Ps4}p_4LoZ_ym%$zD2=Y_cQC^*<8=hEM<=zquC;3kMgyo zv+OE1L73}-HnNBSl~=$|n@o}63I#%!j%ToGy-_39BYyFzx?sE(AhN8T2nhzf`&kCe zkfVOaNH5l>fBwZM;CueghW+tv*xAcK!$U!8)0&rg6tUQSOJ7i3+8DY}T367i4H1T2 zPtO9|l&frBk%^W^J!FGr(3(R)yAP1Vl#t5w>`11C%r0~K8BkT_-3IjN$GLf@fB1Kv zTO@`|ov;k!mOd3V`dk-&P`A~og91LHQT({J8)YdhQAT(^M6O!{}=T-1&X}s(>pp_Y72;CbYmA9l^mi`oydnz5o(S z-`GB98Ej8GFZMICo6>Qt=FjGX^F=bM9BOzgr5ZW+0%dR;Ql(u7A0OB{f zMa_;lp9mcCR?|QX;lQFj{w<@2?Nv%%?Vr~ z#2Rf2M)L4=LFl;FK+~8dG!V1whVJPvjRJ3 z-&gCY?5k<@N5Ay-&+qg4G<@Ly;)@^r^&kDhY}ygfu!+3qqCUK7?kQB6J2{-Unv>cY zM2Bz@tufcc?h%VrwM!UQaLMkib2z#YhGi)ISPmc`LSR==fweR@wa%yy>%OfBKHB_w z+vM~&@ABo3zj*aI=IZT@`N2c?Y>h^4YBZl9=r>NU(N!CKh)I_;wC%GCRFNWqe+q)d z1NXZ(0;#giBAc^fC|sd-_;lZGuGkr5$W9X%+_e~%SttBYnwQQM(dTC1#y6qdb=y~e zw8!>#WqkGC-o3NCmdB$0nWye@njY+>zL{;m@%G&t z&-d?NzRo}M#Vh~qm-g<5cMIL4hwxcpF5d`qKS7mb3K*Y_x8syGs(0CCr(9YmH;vs8 zd~?}KD0#XR$^+zz_;ehgxvvS^Az-LSP&M*RDcVmED*83;>^y@B>aYo|L5{h+93<)6 z7`X?V#&27^*R~q@_FcMtan}KP^x!?a-nEaAY5_>5Ut1gM%(Q|P&n zJ#l7t*e%!YJf-8XEG1wLu8H61d!d#xIs4JEFE5b5i#yNac{*L42yV5^1{$0&azH$L z3v+z5W&0lH_`5IP+83YQEpm?@w`U~Qvw1G-&4UI4Ev(7r%j5m~hfODL#x+b;NY4?c?k4dx#xX0iL;mp}OA=3J-2UqJ?R zN=E?-bowIpvxIGI1O^T5xI7IcB#_fQUq^q(&k6TJR5;f zwLsnS>gokgx>1|7`fXM3(a4EAT<5zt{_^uT_m1`l58K@mH*PMkniNvzt4fRm98SnJ$p(>kt}-4%7H#W88x87h}TnMw?q<*TFo zR1GQ8oD+$>vuLi{!`!3UBDdP9_xYpWy;rh4deEM+E$i1#avy&E=}flYAIKK~dVKij zpTT)Ftot3tTQ-y3y0d6uo%uu_>ayf>2 zDC!EyCv&KS_d|US2{?$XFCE69wA>1nA#J~In@Sy(4P8(N7Yx4+W&d4J7w_2mzK0TK-U;&=L?@AN|-RX=q5G9UanxBY?0_g}nw^OI-Z=d{7R zsAVHX6zQ7kvL?8-F*4DWnqyx<32luc86|ur47)42)k-Uh20*c#kP~f7Vd3-KX1Glz z0ucZZ5`be0&L8IOl&k0%Kd;$>^-z8#v1Bn>jvx?XRR>!E; za`6E1I2xj~!iu`86d?&S(o_#lbp5*go(e3dvH%`j1vz|Mv$#&>wdC@FXEs}F<-#qZ z?O9Gkpqn5*({9lh4}P56bw2?Ydq#s5et3hVj%7X1f<8#xBiiXpfxmD+WUIv0mS zEk|z~C5%b7JHi{Pu=v4$i&oVrmUM2Tbg#B9?Q=qBVkd9k=K4y6MKRS0 zYDN%gqArCwki26klO3GZ5Du9!mYgmKZI>01aU}(Xz| z(f0=X9_aatofPiCuH z$vz1%80a@TS!&E!wg8&wD?GFvz2e+8_D+dyxWHHSa`?GRp8n;_m3$gnKjL6@(!e40 za^%6`E-*}2LlVf|U65Fe*W?R4Zv-z+ra2%OT05*!AkjvqYhMW64W8>tjU&w@RxK8sK3Ogv6v3ubXJhgK>sdd}Tdi3Mms^P9N`^rCd z|56Dog4vOdUdlmn1ouutJ~{&FyF{jsnaK2mzu}{|u=}*>EJMnZ z_nwEF_Te@Ap+0y|J8Byk8vOuuL&17FMm-A-6gd!@_EvydA8;?zrm|Jj8GCFbvU@S6}?# z4}W|hgpu!a<+les8%R{|v3IO+(7jSd`hs%(N`6S%9FW9BQ{*F!>mt(yuqGLurfNgU zp-aHK?k7InKM=DU+M#^Re&pyeDBo|ZBA+h5=ne+)*l~L{p_pzGia)`ICcx&2n@Akl zHU(I()99S7gQ3$Io5tzrUc+lL(ZR*>j*#uXP&m}#ljx{snzpvAh4d&eDl^pM?6wROW%TOWy~wi~iXM?%fHd`MiK z=0i4e>`Z9uo1@fWNAZc%L6>-><&>F-%|pgF3hi=)=k7rTAgcl;%VYI9)RLDke5oC~ z4_DVdwRsTH)4%pH7uc^}=7)@gw_p6Up~}NdcAiPSccD%L;O;CL+sA3g>GX9Pq&^c{ zV2nH+)PyCnd*Zjx)goN5lt7*fR$iA;BS4oSn|Z|wZWt2|@B_R6=n5!i@9@x%j;FXS zbN$|Dul%#ykKoZ`_VW>tpthmK*q8)r7F(+!W@0Yr?2jLBW2^&a?9kC9WGMlsj40df z%-%Ob1i>Rpl->I}7pyHQ(TD9UI>pw`sDVDo!rs?M7dpm0EBn*G{!u@IKXS!`e0Zh5 zicjJC$De)++O02ulXqk;Vo8)+p5UI3VQvtv~ zV-VyM9a?lxZHQil$*|QHvv~S9zJas%A^`aJCT^Pr!B*5Z5=g$ZDZszHcr9o03aog6 zL+WX$^20rb>d#CdVPN_>xC=r$HG5PbD5*6#|Gc?}!QYkp@kv%f63+-MgvNg?d@{D@=H@|@?&l1Ow z_93K=7q{Jj$wxMBf(toYQ4O=gga9%Cm~>nKOB)U*5E-3}7yxye9g%fxtr)Ch6#jlP z5d>Yj(O%ExXo|$%Tm-|QOgWXK|Kk~(^*FX8;=WourbALX1;GR*GwePchO;L9J z;A2euDk%gqqxamwu|u@7p}PfXCi1jlz{qkWWcxWy=bkWdMahu>2@SfObH<3VlcJTe zZ=+PUJczE@eyVcpma0}WKxkv$9d&dkKVtBj^&k*AX7M5fFXl9myA)JwG!<-pCJ&6lTBMR*0TPN|!s)q91?3B$sk5K9AQTFt2z4*Z| zeFMzderZZT-(54$BF))yW*hrZ^D|T@)oKQk?nV4PT~=lW=EhLQNwXH1gKcVFmnb^j z;@XzWt`#{B`~r(GpH7@L5m*MZ{cWN1!KCHeLg$=-4Hh8KbaJ3vPes?PN2jl;4FTCd`U*x?-=fPw4Z8e2G zS_Anl5s%)?wnvZJGZ)ErQ_lV*dD`4dJNFq7G!JBc7CRa}hf#*w4z*^jt!LD*d6szd zLkguN7lo+U6*$`FL7%V6Ex{F{19(tWucnCEt}-OC2@u#r!Oj;bXK%|F4-O5unQedk zXCp#he*WtH-JbgB@%#BeO+JCf*0-k5_FYcMU+wAj+jW?JMglf@Uy`%a%gga zrKLj(Ksw^qVi1nO?FgBXaO*s*`A$QV^$?d^AA75mlJM%==RP#Ce@@0O2yobfrRLP2 zwelb<{<#>xHwXCk0FMIvLi9tmajdn<1bvu^C}NP&mz6i8iS){ z(S<09BMTIrzT`96Jf{^s@X zzWn^vJpty?1NThLqkq5kuhl%RAAAID$;I(hY_U5ES z8OVc-i+%HM@X;Y(4(h(hQ68gBQUMGcp@)q^J57fKTr778Q%lMPlKb?hfBT!zmMmX= zbnm=+3Jij_hm9pw{Q&0Zi4-y_9C{JzV<4O6zGUkvfR%Q%teOEvVCM`6Neyb5J(O%s zvRSc~I!c?Eg~%bUM(T6LZGHREHl%wJ4fIq$es>q1_ULi@wvvw~S?)oykUBgUq7fjY zgz!0?78(TyzL(^E+0|i)SQg80!va#J9NOuOgZ&SkZ9>BE)QCMydL~^aabD)D>ul5q zwKidALQvx^59GmG`CDxX@*(f;eGeY8XQtY`Ie*Vj>fZO|Fn-TJfA!NQwn>jkl!KsO zWn^T6O-h+a^P=byP-<{mv}&lXeprkMH(&NU8@v#Y>XJeLVb_5eOy zR`e!^u&YU+J8g;u0fed9Mxp#n{kWoaWjg zB!F~$+(mbRBw(=^@RmkHdmhEnx1H$25R|1b&1M71Z(m%k1zMj(?Nl&k29j|VAO*k< znow~QwEe~QKDB0p9i{XfX|nQYj{X(6=yqZIYre2MHT>2h<{~8ne!>|AU-&lNk z+l7NNH|u_{WmbNU&=27}jiJO(=52q0Lane7Ua z!j)!jMt>|e1GcBfR426eQ=k5w%L%v!T5JGP5us2dXti+gL}gJFjq0&X2=e91f z#sTsQqYUaQ(qOL9=_cT{tANg3k|w(c%H8H@qSc z#u$ur&=Q+gwnk;ayu~Z8#uf6S`-E2?mWIPqX&f7D$KW5KR?}yD`uDFl!V_yd*YJig z$F<{VL2D&fLWGW^v}8@7{m-0sz2%nZ?q|A;%_05JZl1PBqziEjD6bFl!YbO@IIo

e}Jc$hy>7fY}1|%iunzuJmjWx^kM5@LY1~nZ7%a+OC8Y?&~hNH z)=iLk9eK8g!s^%}%Dli!3rNk1_r(MP-$gIMJ|YRmfN7YX{=*kP_|=cT^P6dSGiS!V z9;jr$bZ#+wN38oy?q@gTfGG?o8`>dQ3h?`AM-K!K6gt+{_FS_sSu5wkciPvnpzgie zoU;R9Bn$E=nS@T{yfvIYT9bEYsJ8bn-~Z%C=gsGL&D2Ma+|MVD{2O2i+knsg5R@)T zp6Cy35*fK9rV!f&^*?9 zL-YVz6btJ`kR<)SGn{^AbtfV zWZKfe1oY$*j!4ufnuN0*R@LBRd`uCWf%H|N;MH&rW6MQw?)g}k?qN0- zKVx*;r{Q?H))dXSV`M)1alV`|zxm5ZSbG0evH9&QfAb^z!k^>EENqUz^sj^D&;*Kl z$*~yH)#JK;3^VH^hveWPS9n)$LoR$UX`C|`06-;*v$pwFS+?D*1`S{HOfx#kasbzu zz*|H5*4mNZZ?OKMzwzp;K3aKs3lx9w`U+;Neq2g}HYh$V5dd8X;#Dx} zeU{`LK<*|@Zn)!?owlIksa<^!Y7w$0!mTO<7{)n^A-z%ef~H9*+2A~f9!9%=JRj;0l)u) zU;4VEf6L$*Q4OdP5=18T4fKS}0()?Smf=d$;SXp)6pX&QE(qn~td2uMj#3}^cjtxM zKGJf|F{%*EExk~xY-g4sp;xN`0-tO8tqSbZokO=~{s)iS-A>YPT2KAcY(0%lGE`vf z3P27H@x@`XEc$1q&Ovr*u!q{rc2W zSvNv>yV_*%8tj-?jAMQ&}n^C!a&f66nWj+n*Z3>bYMTSw|5rj2M^z~ z9Z$aLczz6qgwoWS?c@f-$^lNHomtdlA*)IH>D;C zNw+;Y`ozDeV{nt5n+}qdI-1danU3(*av12j{pmk?@d>EEz7wN;bTQiLfN>hFwP1$Z zIAHlCEnR?Gt6FabAz}Bfv}}fx;+K);KD-ev{(1 zX}A*?{IRG4gB$nsAHVnnG-%&R;=U0{+^>A>?UI@r-pSrd#@q4zbA*hkM-So8&HDZ5E%R1B`QXR7l~1~T z{`t%E=Etv}qb#-wy56XotD#m3${!3UYa_L1WWoy2{8$K@*p0@9-Vi{d1pJ+Hg9boA zwxM+Dqjv;dtU|`}q`48Buo;R)UM(4Lr?7#BPe(&XZ6L*f zqZtF9ceHD*AkJt6LG41I;n_38MuQ!m0LQepdsYXTSY{YQ*hY;fXjZysKVxwXflQUQ z^BKG23rhyFevVlVboFfo?ZJ<8YdQJx>$k7oKKDLbMl*QmYC$e;o=%nyc)dj)ifCs2 zz$gMt&lYMsHP6@wan5ZtD1aJLd>C!@(<3|6N!i(ak0?DzZsOe9L}*2Vvfth7tl!bshq2hGc3IN{~pQGeH(YzYErTuo(aLg7BkPuV1~j_jj7)M-SUGPLZ$c zL-o_tht@_okj|YTy&Ujfm_%`pLuC}u_UI>D9SR?=w$?nm)~sB%V#FQ*CXGVBW~_pM zrjEiofg~gfg8!ykpGd7h)}e>c0JZ(>eeR?d5B59Uu5Ca1?RfR>u3PlzLHpL3Eq{L? z|75&+|HW_lpML*a@89`voma1aYWrO(En*k@^y`H$0|v{&K~iC3 zn7QyZpAX?4!fe!RFiihDc+HcG=SIbO9Lq4`%1v-kE~k!qW|!&NAfpvq&JeT9r(X%HaxZ&!omcCUT#*!_IcT5!ENYa>#Y znlGZ5(>urrx5^cFKe;*r=UTM`w)i*`7LpChjp*q{jDD=k z(SoQ19Wo?BR>;I5n@r~%yPL~lVNT==PM)LliD@t{5KiACCL$&YGlQtpJ~PIGgJ#`M zuCGepW-#L{<(y6pWl3&p9+8Rs7---fWeVKw*+CSTi%>2m3E#pFRKSV3kbB6{*FkBD zmzgi<-a7(Mb45i8b9kJymg=CC5qpmD^q*gotE#I*Yu}MrklwdD8kMK%h8Zhp0&60% zPiD2LFcg@{noW=Bm{H3uLaE2#GtO!bLOiY@yuAb^xmIK{SDPhmfojo^%iXo~>A!gK z33z*-{>vAiKqAGrBOv4c3rn9@bIS?IPP^a@(OoopUuz|pp)A*r-8kHuaNCY?@PBou%um#=?e?e}G0n^v=a7GFtd zhG?dV?uBd~gZqNJs7A?ZBv4=Ml7YKtgHf)5E4*fwR3U@7#nRf^2i0!1jt`nieaAMd zNuByJW0#?XvN1JjPk;Hv4}RmL!_DOgB}f$+hz~Jqlaa9#@bNV*M!NAaHt{3Ukqw9| z3*>)5HglT;1>!cgp-;S6W(#B?gXWA+B`rvi!ECT)hMc2F?FHm1&+WOqyvNYR__Pr) z>x_eGEWZw0V?ykAAZ8)k1IRI5YYeB_U1SbE!K%lB+Ax}!iycpn2xUaWOWV86HgduK zMHAkoj_S7PL9*9v`RkAW$bLItR(|21z5LAHzRkNpmq(A^Jystcqn}N-`0@uIf$~T~ zyHp$=E;m};XGbaf$j}_w`;J%yrEoM7-hmTuxZt}PVV=8h)LMe`SV0`4fe0xyL2a(S zkZ^rU4y7iI=;33atf`w~wx|EIo>XxwqXFBN}PBKIs)3AoP+4l5bzxV(tOXj#< zXIsp~gc3S{aXy-I-zMjvZEcJ~m+aZb(w*cBT+9`bebrIkNIJ=Ai>I|YfM1ecf+ZQi zY61C#`bHdb&taIXN8{?2aeZ* zV0WNT3&{o-lQP)mv~i#s=oN^z0Fe41FWIqMLu3Xa*;$FBd^kV-w|EL9vjfMd%ctQx zIErGg?RE?_mOaWgZ&h!yxcY9>yP=qy^Jw4NL%OLUnHfnGQqHvdjN_5=p;bx;alkx6 zQc!JFi?cGMMx3Yr4o`t^o@j>drpSD626cq6qkbGn)SEsHU0HmM708lig9yzJ`Z{Yg zxzfytMny@>;G@<|&{e^idQ>p(51j>Z7)B-N?|G!jx9C_PWdGzDlc2?fLd*d%ZfAhoV z6!n5{`oOb+FigA`*rPReinx{49gIsQJm_!nmi&wNZvQ1Zx z#RPOfOra@f5*rf-R0GTRRq4fjI*}JGM`5)ch(cqZXN+uA2cQ0`*n()zr~m22Wk()0 zg_O+CG6+`2vT5QgfB=w#w5ZgY(okhxoY5Fbnmv*d3D)Y~yCbHY8O7mk%daKtqB2^~ zRLVX;23xdQ5HJun4abY#p8n?-Klp1uI{j6Z8m1J(c%vYYE?9Y*%^fqQ?ACD;#JQlx z88arV7rFU>VJUkk&c_7hWk>#7(n{T||AH#(E@Ga(l`6gi7sJrnX7G;GhY4efe zru(3*g0fZ(gEMSFIXYNV@Fsm_V6Tgj6?7)oE-anPC3iqPb;e|gmdY`B7I%Ezx{7ln zvK|r9d)!__9u1>=t_%OSe*Ws*HAWviY|l1E+f8HiW5{$LJ?XzKDvf6(V;dU&v@?5! zZ7g61Af=vn>C!amEp z=Hg=q?pY^pzj5MzjF5^)Hy3Ya$fFeF%HHcN}bc>l}6v+W@De-)2HQy3cnr z)qed)_QhvE6^Gr^p&vYY-&Q&_GuCVtMH*H`M{R%WT!qFBlzFZadWtb1@r>6YSic?I44 zvwZnJe`K$}cxLK7dI+DXx$#ZS?UM{9=^ENJn`R2BEk1nGu|);)?zjOMpfVZpcR14W zpySD_@v5N*0Wy4Q?w%-hQdvjea-1ZRaq%_jj7H4Hd&==}a~ciBCe1th+oRh>x0lt| z`NKC~yuv)Y3$cIj!2NszcfSGk^=z@IBYv37CX%&gDUz~sTEZbwv!lLrUF)x!&YIJ= z)tqzmOY@|$s+p`S@f(oUsX7ZNRJ3+@&SADtN2)L#`y>zQ9Z}%>7MJm8A>{22o9|zK zi9)e2-u&p^>-6B!dv=HAn;rIJv=$yM^8HS8{BbqMAHU3+mAYfEHUs&5q+xUx0?OxV z3HLZ-Et#_MXA$3=;ku4f8@7)9!g5G>7g&;cHh=k~~GgDemu<;94WsF{4Zx!M`B z);{OCGAEVLm=-K}*?p2=E z=AuO+|SQwzJBxj-j_f4_Aeh#|NA$vd0rvgi3(QVYb+Ajs71_Yqqf$P z;d7wK6AH;bts-}{T{6(xgjjh&os8!3B*fu@0<2Op5l(ct*Y-Wv3UedLPCqI%6S@170F+HAx?O z)&%8rt$mAYeYC0e_QMAz;_bUPU%a_1j6ZnXetr=|4h0V!NxU|iWy7y6YCFVc0T@hQ z>-0A2?A^?}4v0x?d3GRD61J4P!p$SP7c)Hf? z>Hm1~2^6rO{?BhfYP6J#4#6we@CXZT43ctceXlK(bge@it@koNAmAxMmD90?qH-;G zI|mGKrXht^`RTZeaj{Bg)9k>2xxh16V{3M5IFzHbwfizXu`LmHFX_y>2dkc6MGzGmDN;yCFv1C`oJOI z;zZl}81Sx4+lg$>$z-huf!6;gQz}NWf;6QP9IU)

^PO zd_*_CJi*;iWd)rq zSo%VJ4ca3W;fH0GC-_tMjsoVS`j~qsi9v1dKePhO!rOD4<%*HAKhuNghN1 zo14QLc8sYrJ+7U%KMEWA{U5Ct>*ap_;)8#cUcUds^V8=ae)1RoKt}TWf9BH{AAk7i z2Ore_3xDZPedC9|@k4(|m7kBonM_Yj*$19f9wsxh0vp^=r{t(s1fV@~5U_c~6=O78 zxitl^ag!fCVIvygLId#gzK=mLbo!Dx&uM6EAuPQu8)KeM^L9ero1yVtU+s&JKUyC? z|4z(9eo!wSp)T(|bUzrPG-^S;L9oNSyzQRtq5yy!E2j+~Re5nZI|ulp5~Fk-qrF;Q z<-W0D*&+{LW~Rg5Jm(0k;+O|d7uZ6pUqUmqMaW7NuH&_)>%)JE&8*4cX)QIqIj7*V z-mC$q9O=HAHUbsrqMIh3>TZyO;yS#Rj%o1i?cF*6M>V^Tu2r*}lq40{1d~f5%essS zrW0Wk_mI#=4}b64*mnakWl*l-c97u3b6d3DQrU7>NX^nL650o*2gE`Q>eFJP{RUH8 zLip4iBH=vJHpm1UNdjb*Q*p0ptzTeu@K#V<&xz0L4}bqcN2p@3M%bb4Q)6-0z51NC zWDZ{oOK3Nc3#$31&5FYZ_e>;} z3+H+GudcDce%9COAw`<_GV3(DG#R3p-U%x^VhE%1a>=di>18y!jI&!tN(|#f=m$LK z5J>XeXt9|f32pV9-sDJS@IJxRAtB@HqdolBUwQk1ND~hB9E#m$*}ND?d)YWVhHV{e z$H{mit{|al$1_>xXSnKW1Ai4(zR^@2)g%h45#2j(ziN$U4oAMCq7aE`gCb=XzU*nY zhN5@&%yhFD-h0@dSPbRs{<*~vufPAr@ZKEehyUgaXg^Xg(h5fQ3fgUE$CUHq#M7`u zdXDMW8d-%EpN*)sSdKH_)nGn@xWMsp$%QytU8^eyQD#&PrnW_e!yd$9RPKz396GKo zZz*SYE~4B{`g-;1*}_!0P3gV!usvDTlAEg5_l-7t`*Q2f@Iy=m5N_{|NG5zOv#;IB z2>E$9BG7ErYOEEwP~ZsE2U@xo=UM~Ta6Wsrom8?1A-{tUDe8-Ix;KaO`W!xsi&xWC zsEX!oxBK4JvfEIxCo8D;9A%mockPZ zG3XKc;LaVIo7wi``_mV@UOnA5yZ6xjz}jZ_7Q8(CgFj)K|M8S{+}W4?Ww41qQGOj% zJA5P>C{Bg1iPy;1XfX5kSYbqtX?1LCH$*b_-utY18Y7=kP@$z&yEo|}{bW? zEmTX8ccaa4)0ncWAEexXmi#y`8$#C~dFyvgUd^lXnXy6!&4FN@mLnvK!Au}OaOMR! z@oC@_vgJAr2!*BwqE+s;k(C`);(3Z@twUl`I{~87-8P>V%q$Ie@>;-jpU$_)m3!BD zZhekd)$Q5L*N+a~_a3+>)3xL#UF#h@cnhsYGrVPMYmYp6)^TnOc!=SIFcQhtB|~=L zo}Plbw>AV?jZJ$kYo+j6D|g)60a>uMog2*jiF)hci9ueS+#*okM*)B|9%1C}T*kWH zU_N~H=^IP;BVp;C$L+Da8eyTIqgcOrH zKdLNz*3@~Vm$~z>J$2jrdXvxJ_VC7AP^{fKF!(ggT6wgi1vK8GBkQ-ppWfaqP5_ZsMAP z=GJY6b7_ozLob)y@t+dEh&b(PwEEfLhY8@^E9G0CRPI*#{@ zR+`#ACdBIZ@s5l=2~Dz1Zb$q^*?ajKOUg$Y8g* z;`eU&-^{kJUBsu4U%mYHFFbov4|4C}d*V_`H<8b8$9;D1I>DExZ1H&GN~Jwx5Iiz0 zXXCzFo-{PmHTfuFm{Ygglv=RBxH?Lrv)L*Xu%IDngumn<_|H>|vCi!%X6Y_5TW;;s z7$p9q&77%leJy*8n|@QLWVTHb+5%}3fq#Iy0XM+pCxQ%|a)6ml! z(h9V*EkXYtaHxI=CoNp(72!f#bt77gCjiX5_pKa(?(RG-=fi*a)wi!0=bpnB`=Bm+ z?yb#7(m1r@SP25IbG1obh)_Ui)u6u_D|)hah|dmM#_nen?pegL=A3O3cbP!ZHQ9aC zh;x8u7>Q!Pz(nohw+q_6wL`Z^3M^=^|9LCgy~pp#70qu}w6`JZxc3tB@DIQ8EP@ymI3muyaE)CtxT#XyZWi~BN4q`3u6(-Sc;``jTyPwp@4WuVXK#G} z&t6SOKGTpWw6aG-Nlx}scah#bsvlv;RyME}H73E5Cel~)J;IN*wW84Qn>{NJ6~10; zqO_L;!`}%sW~I)C=wWdBYSb}fjg2GA0Q&Tok|`hoD08a0P1rl!`EsyC(eX39{z_*zU4qBQJ2%9>aJIahhz6U7WIscL&S8PqaUU+Q zk3p3>I`!-+mA-sw>{!_lIID?nRodDO9fomTgc+z%YjfE!&K(?xW#_7tiJLgukEn4QGhQMF6ZMn^2bNc15@Q>exD8w%p9`A|h-vqguC3nIG4a>cU zZzKWtMzL`2%gNkZ(A>N0wC1?yT9jMt6{o9jnCYX5#11y~vDV~vw!;Cjm#(5yP_x%bBUo%nQGe@r$Q=$(q2H7KV{c9-QW}{Ti zH2}s~g(lKg^lWU!Mi#^L3zV@9PU0@qv`ilU$-9tJ`DK8-J)Tpi;cVF_oN(F@p@q~a zIK_ox?UwtnwC)Fo&f(gRLvPAJp5o}AJb6?2ZcSrM-Zc?vK<;c?;*c86UPZ2jP!6f3 zy)-i?jconqe8Jz1KDA6;xnX=4l+?S{d;?6MTP@om>t-Cq*1HZUJV#7U0Tl*P>3(dr z6&-}uIJ;QrGzLc`C1H6BXG=P#&nYZX6Y!W0b)L$jKL5Qx&dt~Pr#{J7PZa}8!MTuF ztBe6dnFS}*l5vSj?Wo6Q40L|sgDps}2u@7v%8q@8o9kg+ zVSI`#CtAQUu(8hW=nu6%Q282(jF9cEC4n06G}V(KfkBoFf`;SafBecf{@hzH1}fSF z14Wxtmms38)}Z!p4T~ORVKJe}858%#q|?#Z28Lu>6v=4&ZMEp$r`uaI*T>I3%8wuUYVJH{Pc~NMrm^x4 zs!7|1vn{#LlO2V$e$>3P58Jfp95Er$aRdmnK9)#>ZWGTsZcH1G816|-K^zBZaC^+hw(gj+udXJVEJ9|O_8-EZ9#_by#OO{@5!^Eim=&g1rjQN-XxJ!YN3TDqpM zJ#~17RbT!1iB%|{l6s~dR0Dczp=U}V=5)7G1_UdvE{>U19=20^#%5dzaGl$*5EO!z zw07&KH)C=HOti>H4yrqUoSVhyM_$)QKUYuPM0|*&4iaU!ICQPHQxl@ff}B9L4PU4_ z9BnkY1L4=oYSLx|n?bKNjuFC;WjPFVUC0iD(<#XBsiSsg4Kmr=c0aM(7(I4I?%RD^ zP*{BXdb)jGJ#rzoD>{PL<{)&@+iAO>j;BoAd@br*v2$)@t0JA*ss=#~xDEthU9~%Q z)w3Epe!J9bwUgt(04^yl4mhB7nd4lqTF|YY?#@l8o9Xdm=k>Gi#do;($UOOjy~`jXcyz;ZVZ^Eyz9I zs#&u)t26dm+IQQTqqPZCL@oj|w~>$!g!9d5HbQqFw`<6~8+*4Z$?x_$*2@n+to5jj zaPQ&!fstVE{p9}1Lh_C;Bop0YT3WKa)rK(#Gu+UV?wWI&3h`KoCzIx?v2;87&wUzh z01cXE>6BnZ3?LW;_?bA(XY4+y={ao$7!rE+=(!;^JTs&+D`IWLYq5awU@V|uabJNHb&!=dZ^#tN z!P+*2kvK==V=}GLIliYvNeOajTdBfHv{@f7!z*nR8`^q1e4POx0Jc3k z+h*rArat`7SA*Iyij8&~w1nq^E^L4v%gR&ikR~oV+MQNg7|;<$*|M%1Ow36NT1e8) zqjY4PDJI^$jE6BWk8IIeDaIF<~mV^vfc|tj5SB(F+Z4&-ul=y=Nz4DA3s|| z?KbH6-g?JJIFb)v&PR{kormmc@4wx8|KCREE6b~QG+}~v*JgTj_&f&G*^JDld+}A5 zT5T>B4zwJ1(wXKI=Enk!kd;#z7IOjQXFFNjozRlkYGdq*Q|MO5_7NeO;yEvgAn*|LYsvEb9Duk^H^(;&Bp1QY&lWeev7`makc#kcj|w zRC`*e1R|0Y5E9yI%Ev3*p*FiB0i0~-keSu`+}1jE>%7pEqa~}4l1BdUzx@fp{rhqV zkI|JY=M^4;K!Y)}2hU#U*i_`-Ei)n}g4vE;eQ+*CLDsI#Eh%6MbGl5y#T0CHN zl`F-(pE}V-FW|rdIFmlJ@n~nr_v%DSMOzRBi`gL5&iKqRa|u<6q`AZ%kO-G46q?i^ zQSO9_?)6_*OX()FwIRmh5Ke~2a?`-T#6aqVy(RMJV%f_6+?COKK8{B03a(@ zYnvRxbS^)%MngAR?69`6D)qKQdG7=LZPoX)i`MH8KYfHDx%bFDI&#|0CClE@C9B3T zAXq7zdFvcV16$JsPnP07X=)3hb?rKD*Tr~kOB<4wHqugbcEC7IqYJ(r^}t57d67oc zn6x_cfdejl=jI}uAGh@r@$i3s5sBQnZD)t)3(lbveCrCx%;REgRDywKrBKhs^a?>ST;2Y}-jiY0TyH=6l#!@jVj<^Id&GqnqedVg9th4qT zS%Xi9rK48W$#eps8HHqEByy_Z_Ska6AHr&~`-UVJLI<6>w{PqK5b$(zJ@b@^SkeUM zxrx^jnU*qw#1C9xChOt<{sJ!d>e4bo-DVO~r1-GmNYvEXQgRxoIg>8vc{4{}1%$e} zm=Yk`NeT#N58KV6&kH6-o3<5)QS4Ga>(FtA{JankI|`XBkgMDZ7w>%1y?OZl?8mvj zl^@izZ@zx{;@Nri@}p<_33$xC2k{4kJpKaUF^!Od6iJC&Z}HxW_@|Yis1rmUG?cMp zQ`XVuI=Y7y_E=zo*=1!4<0jGtn&IB`sN@o3jnmX??-iNU{XqWC{aBA7W9E63Om*i2 z-R&X!`A46=`smYFKZ{Ry%Z<77$UT~IK>Pi{y6&6T@7#D`Z+$mb0O%~vFSoqVSgzG@G&%l4Nba-n* zjT=4cpWV4&bZb*aZRDeTA`0@}(i>c;gSwomXhwG?C(x_>=bTngLvLF6moU_N0+9DJ9|6{p2sYwfQU)dd5cY)gt zM34LQ!Gfp}%~?a+X-sal5Hssk86iuSP3hR4_rP&*?hTtWF51$iq4qS$1zxxlYt4s$ z{R=?anEE`(uSBFDxc7!yC{t6KjH84c1paFC*ae4;EW+&s3ncG|Ikfq9rq!(sahKcO zF8RCv#u0CchU~TPD6YbvplG}~vo4LOA`s2!PJu0f)dEB0O_Vh+W z`W6`4xZ{p==;|1E2qYG01Fz6=kLaLziHczBVm);^a;;caaXf#J!oQ{?v9py!R z4uFPswI*sVi`R&`wr1_^gE*Ahc1Zt@WycbK9RG_9wJ3t@yu+yPRLz5b8c(2=M_TK%M z+v~~4`N_{dd%Zq=^*DIy-Xr(8|NZsWK98b$^Tu1~0^B=R^WXaFJJ4i(__x1+JrjXr zz;8zxPg$q6Sn6Yd>!rFuJa zSoi1|IBkZoZW(nYP1#vK*J#MtYB^&I>6R@Q09Lkfhi-amc^M)KWOS>(d9MN1f^H#r8uZ9h{GmbM2v%l=tdwSLe|W+82PT^A!+U$1Sp?226XI zHk|qfORiftpKI<=wBGkvTzby!jJx+u<2yd+AHJ>--?@i=_a<>W>+U^zPlfBW+bGp{ za^AI`$=>|nxWKU{!RXy3=TetBw~iKFp{y_+A4iI^E4qf z$9~8>!uP02rw1B_)4Yua^&Y6_D{ke8_b%|>T2|((T=lHJ{c*myzQ@}G-JM782WEX! z5{G?eBfL6ej*hgY!bd@H?Xn=tGMdZ1v$e%l=nNodRe2ml+nRX?n6r8!9Uk9<(LkK> zuv6E`WND9ey2)xREi|&>cwM)c&wGEITg>Oo5A(&U{p?M9=7})VxI(_oQoM#c=?){~ zwqmu_lXssv@Z;oKKw-nLSq5QMj;_W6oFs=tuFFUr@RYyUx82n9~Seu{|Xj6#Ry>izKABIn@u?m?1i-taBSF{ZOOTJJh!x z(=04WYt4vA>@hK=Z0wo{QQx5MN$=!5hD+}f8xs9T2*CSR%x}+4>(xsnWPO}J|7az- z_sIRg!2CN`X>&_NWE?0+DNT2?Il)TP3$A#^T)A`3V%S6pbuPs9P^%Sq3{t(t@^-xA zYynrP1Vet(H?Afq%P=#eQ{Fe6j0*-X>-*ssF;NR$D{!^e+O2tcZt+|O48UU-BD)<)7SxOO777(yUa|FzJiAw&pDe!+YoEDbxGObh;-DQksXaJ z1ksX*U%tA22t4m#ZK+AX4ZOOu*f!9YQNN*TL@mhq%yY&B7qLxEaP+pac3S;pHFw#S z+z^A(*ixHK?_(T2bqM^=)q4ZQrOis8)dtsj_{*1pPZ~a(XWBspzNEn{uX`44o*XqD_9!}X}5xUI*`jIBfLQ70e% z3O)r*kL#Gt1=Dp!b2v{Yd)9{3irBp?Ij?dz?hy{CLvOne@6s3WM$}WJK@GUWN;xPo zpp?A28%pLP4!PgR$O4kWWcuuO9)9KeM%K>Q%+!u`0Sj#g1{ys?xGQXuA9X6>)q6j^ zn_emOFyh+kb{2J;OLxu%u%NF-y^R$hx-MT6aZFTA*GXD9tshtNoI_`)_VBA$xp8jJ zs>xy(Ew1@K$zwb7$$>+8TbLGS(cDXO44+1>J6CL-C#36P+AU2dIJ55AM?+YEw2j@) zMTYs_t0Pl$Vp^OO{5oDi5C860-=dY~vt^mey)uNG^|8yS^^FH)P8U;39cgSu0F(1< zt^1mreUG8YS!`hlED*ZDmAglua6;RLhO@mVZzRi}=!(H0L{n|Ys3%4ojH+(RZs3E*jj5RJwQP?=lt=$+4d zw{?ZrKU*_jeDG|&{OF^6@krBj@6mg*u0S_+g}33-Liw)=3^zL0iFORi+qK#ND{Sc= zo6nfgy!xRj&H!|0Yk(xcE$0zKfTU}F3_D5pJ@!H@_OMan3EeOn3r1t>=$U_G-tj+lBm4$NYXg+0nxHjekLZ0WHvR%=TKHbgh;$P7!3sn%%} z6?n(m0Bg(`wU2FK51A$kaLz=_`jkHW+S{D*@Bd2}f@g2O(yx6THr=23{dYcd>#oE} zXH6y5S^E&!&CCV;{%G6~2Cf{9^nhUv4|fL5*{%TdnKhQ9WrdysgB1<#KY9}#AvXwo zlU#aSu}729nCz+uhCOSW-QEcAebjx_zWwACTx2g^Ke`Xzd*B{D6n;})_P11Cjv9TU zH1D~YMy^okZ0HpI8SE0QUZA>Z%*nL788D&aa_OVfQaaaT3e5iE`*}@TNij-Br zG#gb*l91Blyjwd*kTpyXzy1Ym16>g^LKEjkv1z8bsMCSZBX|RUm(ZXrfJf#Ebj=Ua zAy|k{)RD1QtBGuZMPcm1a_Q@A(!(~lTq8iNbceLxE|27b-5oVO7)uBQRJp$ z2&PzV7tmE}uCd#tK6G)UC_}lo`ssjkqhlf+Ihw3}k6Z1;ollrI)BY>pIr+b;59-^G z$V7J@yC<2vbi?F*2fNq+wsm;HtLdl?_3j&f~er!{JxKvu;G^!PnH zqY|%Uo^}hUM8KLIuhM%{HJ=!T)Y^vF=>Ne#GGT{UtTG~&(^;l(Au^+%@%ttMC zZb^`IBFF|Daaig=qeTj8*S@`yks`K6SR*L5);vLqr79G<@%@su%q)xlJ@X7-wDyk-+C9;(}%zP1stl_Q_F#Y z!Xq<=lN`7_Iz{!OeX-kn9o;=0$AD8wLMIauMAoRyt0tbE;Cd`Se%eIMWXy*6QRqSD z8R`_^e8JIxb3pY_D@7^BazdRG}-UIhUqyO_exWAjOSw=5JsoCp(fpLyw;Zztk;wM+sYVyX zS@TQ0$=-Y9p5XHG=UQEFUcYlQZo>!Jsl}oZP^t6j1~dq~T=SQbUifM-sAomz{2B+;xw5 z{mCzUSdT;9?>ur(TqO8LG0gAc&6Rax#JUKG$C~U;~sQL6InsN6YxhFI| zaszylx0Bl22C*S_nv^1Yk5RMDh;j*sytJJJRvnJzDF$Oz6zh@np$Woz-=Pp6pUd^g zN_NIU|4!oUMY40L$E?x;(Lc$Kqus{9gZc1VUxY?|bfFqzv+r4BF0UG0IN>5MhI60~ zI;5@J)*`cT*;o8hWkzo{G-G%8;tO#+9TDvyf*;9Mi+nM_HN;MQnA8vNz9U88>bcE$ zxc3;}ignk^4`04|wqCyYxq9_D_x{df_XC6foD+?j#}SZ-+FA=Gugy}~lNI4t?g;$O zlM9H=&bsHcQc~Z#voG$5mz!&oxXyE$7z-K9y%y7}$~rSx%sC zB0V*<={Q4x9Aidl?crB{0x<7C{5tghS6_en@y9P;ee(L*wW>e-+E2XylYjn`U--CQ z|IE#w{5t;W&lMaC>e*-=nS@ih?;1uMfY-Sc-7*5he1U4$b+)$B*A<3DIik5tUbd7m z_=lo5+3bM!bO#I@f$%nkw`RaoH9;k7+o(AqZRXZk^QBm{?mcEtFIub57P@xRMO>(O z8DP87tsMFFgelf~wGLL{^_Rd?Z`3xbW&J2JIV`*T)U6^0`NRU7v+3eOOSIP>W@)}O zH+ho)37e03i=TdTLiMkY&z(^5`j5e)^@~6G&MsQN^po$xqV>x^`F$>0zw(pcYtj1E zpS)SLa!;lP;z^#q&XOInLR;xxYpvM6k%8@P4W*EzxdBc)(aO+-Q0KMRjHxwD&{G1@ zM`Memp3u{yA@FfA6?8w^nvXMVdpVu?h(Nc3kyjXgEOmA2T%l<-#sq{4beFcM=7yEi z#TK>jY@iM;_O(T@gk*CF6Jpo|`Rl@uQb7 zK6tt3V;%8*N9}u^wWg3d0+mnf4LPHN{IRYsz#2oAk`rhLUJM3jszx4&aS&IET7gWW zwZ`m7DeDc6!9FsFXGZfb7xpjLMX&p$Tzn}pPjY(=WZBpUVs0~mgtE&DA$sn zdrnZuoZR}-&BVyVR%`@FfA>Xu82Ra^C=m~ZY^BA(s~2EWC@T~Z)ZUa}yE|HHkeyk~ z)r?6qPwVQw5Ev!N55M)}s2R_rTTkE6yGafw-W51tb1^h;JA3nApvO48rTT8 z30YftosS-V7oTDxkJ5l9Zn{zmrDeoHN_C;>wRC$HOR{iwlJ7QcMxlAoE z>cbJs-Sy#@FlF&VXbObVV^C{rpU_T1byT97jcsj_nvE%`bS&o}It=ORDC?rLSuWrQ zlYDKTsZI6LY!3|is6}n+Vy%M(i`A_UXux*g55N50C06VQBw)`KV@(Fl0ztV563Qhh z%M}@jJqjY)>2|93xn1)v-0gA!l%|$j{r)5~-T&{@r z=r~@Po62d!#-_+>$7L4s9H&*V_TrT+d>;PFdl#(_sRF#(5;=6WJOcb@A9Yx#XmyC= z<*2skJn)Mn7LxZ0@23?=X+vBf*aQ|~Rghy!fp(SDdoA5XI37Z?E!Al>>C2KzPk;E8 zYbncAn$*u+q1y5!h=lOVr`K4EyR%mZ3?O(ePduf?o4JqWB!&|s{5~2rz;MRC&6K`KD@9@?;@2w>|vY^^C~YK4w;7+Bcuc zJ4?2ownj^4t?6nxax~gZ$Kn{p$mInT2z41}rEOR@mMDbwqXO`@eqDLjN}V~D$tv0x z#9=2;nTyVz>*3emyVlMzc=usz_Y0J|5e>CGoI7g72fq41w}eKuGb6ptL5i`Ml-xqN zSAznJ!O0(7gotYda}Q1KyBT=-0gOd#hhL2HY;Fx_41f4**Ed1{txN#gd>w=ZVFBCK zeDnqFgA7ry0b*_IS;!{txFE+Bd+Eq2 z!6C2@(H#%J@!mK7+*7HAKl(affB5mM`uO2*y!Sn$2;cwH`SY*!;cve8{*O*%&)2s< zdH7rJz5k=%s#mjKy?p)fx8HmJr#?GpKU*I@uNR*@s~79lFI=IA4}a&q_kZF$e_G%E z1o8C`zxm$#Kl1uTe*Ez-Jp9&s@Bi3mSDov}{PuhA|HNmnzx&gE=l9?H?hpOl_ul_k zK6~$b|Los;@BKe}^OwH!5&nbs-v7#Xu2^qA$=}5weJ-I}23flf*$fBEA~63tF9f1k zZ|6Ej@IGMIWJ?EUsQjs}@-ti0^TShHV zO6ZYA%O|iU=on8;-m^>Xt+1lVwg1K(BgX zq~$fhTkF^dK=SEr!@4p%`YNqu_XvPjZmw2uzVer^>)D6(L9SnT_VI_GzRC}u|HVg5 zlzWfkJABz{H{iwgmcWZR5=|VQtEQkv1YH=&V#32k3c(>bHI{G0bI#-2_Xu!?Yfn_< zZH$t!##pu)bm4|O8S)u;D`CbYu?>m{Da*0OrI)eAlR7{Ar{A-%Jt`Iyj$`km0)4a< zt|@b7bVtdiP{3I=GLShDn!^^N9-)2B**L?o7pkIW5bDKHk zzQV+O#Y6z;!|#0UT^OL>{n{U~M)VVZa3Op7x*q=S*S_&Xx4NFIU|Bsxcu}^?r-^J8 zAi-N|+Zy;?<>ZiYAT{uV%ItuBg2Qq1+SwtULG&G$j}=pT7Mb?V{n|{=pcyL{_WMSA zC!;`fn_Kgxs9)cE%${DGT%~qjSlH(}O)Z0WOyuFrLhAcL#8aALpATm?Lsf!SnXEOg zOleseS5jf_YRH+gBPXi+8oc=sL>s1xUfov8bMc9mL5IA5`i-_oZ?r}F$D`@?D_?m5 z<_;P0XY1Gh**j6c{?EVP`t{%Yp7ra$e_OvcB(rZX*lTdeE&RW8_PoMfARH?P0{HH$)9r-N8XpREn$rE}2&1K*eEhVHa`DP(ZUW2cQiPtx(O;s+7g zyLO?(wsR{iAMI>U>CLhDb#VFXx@AhZQgJSvOimBoCm;Tk@403n@@iL*t|>%AI0!*+ z?LcUOy84o*g^&?!qi6k#y9q&+Zr`cz0}_$y3iCyitvqqBHLiLX&@>^9>vmd@FEpnG^i)c~Wd0T6HF=~q~V1BY;hUGrysHvW45 zT%QfE{}>#v{=qvT9Qvm}hV|f`Jmmd%@5BK8!|zvF^^d-%vg#k-Dy!lsh!UNUH|d93 zM?>)>y1<60FGdrJ%B2}{x)}*)#3M$bRBES@`B=y~R?=Q0_Vy#abnx_p!@>wkl*5M9 zCeGLw(xOf1)Nd!?Sx%_wgq56c~kVb)}RJ{96*t)>Ut9c&uIytIsH|(ndQ&wUpLa0-$Y*bS|BI*fGtx=Zcp^x38BJ}7jUcov zM1VnW+zkewQ$n{<+i-XKwNm-M5hy}MY5<-vu~qXJzl^6G@~=CPZWBfanystY;U%O zS5{YwH5)JI)}<{3i%_!`4yzhnmyoH4+(e^!$5^#DN1Kcw-M3vP}Iy!Tmpm}Go zbDxpt9?@ZyXrZp9rI17~?kxxL9~r%ckd^-W1FXUa)C;*Z+iDzDiq4Vg7kTBh&n@Pf zrYed(q( zh8b*c@3E|7B%>^3^+U6E$C9P|`r`*)VKm#AH2Lu^T}Nj8Wd{0@I~}Plhjx0Ivg^9PV73h%sMt>!92gzgbHe zou$yHDLD~n1-FT{;@+mo3S;tR_so@40QlBQI`sOBx9^2S(*za-;A+`zJHB%!0_CQ9 zsC&(U9(Fq!OpX2VIBqJr==LBAz|-#x*|TVZx~m?r=2{ z*I!~4Lz;7qn4y4-VAKE;qY@ztgyGIX+LACW+M!{x7kaGIqz??%QC1-EdJ6-d*>HBN z%Dn(u(G#VTTw(#F#WAjVsXI(fYz}(;)$@tmq0|Q4t$4H-5F8}k?h%t0vaY4FW)unC z9^!N4xK2A4{MpE|H9}Pvw4JpA<@|wfsTc>Xikvy`9b->hIfrfpM#9j|_te+--g%ss zJnh+o2~7!uGvY;VAKcq`ELIlXsL*VmZZQ}}ZHZ*vvG$HUMAYd_*hxi@~~|{l)y{y z#Ij!Obd;>@RG9gK-77px!{yU&T(fzXQHat-@Nn0OJT#6Bp`P@ z%to#(I;XfMrff6O-^1DiJ^D)$g-AjrTc{UDTtrszXl%Kyt?NYMC|;UJriU;%Fx18{ zsZvzij&AGGPkLYDv`DdY^gr}U~I zk-`>+JVp7sDOHeOO|-7g)>ECSm{tS6qOt^6L-=;RzW;n8HN2b0fT82rJD}^_Uem}t zT?seBg9w6Y?N{tZ_#GqkYAler`x223eBzgkq>pE74#+rwzWUS%R!UhI65U*lumbE( zd&uht&uM0c>86{2NRTX#k-05%p7b$>U=c8!#5il;+e1N{$)0mAltKGwbO5T1VKgpaVeDBph^Q>*6@Ha#nuBfG{Upuk3%6$FZ^IYVZ^AzDWGiaR==$|V>c|FM@qYDKf zLy15(vqrBroa;gbbISv_f!JjU?>m>noRoD$)d(s?6g!}0Zlk1Sf*pv!lzH^)?;jL% z*_=K*bNF*{K;{$b6Obk6;XB7%h$?|cE1tNhwF<_ot6YXHot~T8F+hbcE_51YKSi`f zj#=Q7T=$O2*85hbmN_#7ReJsKc`w%8RlWH+%^P26!t^9>d~zg{E{&RIXmVlL5pu?a zuVomDro%L%2evI5T`XrkJS~=tdu%^#E$smH?TLH5w_5p9XS(rg;#>b1blgidMov$vraC=2HD^qJ1HERCOEjI z7*9rCWYK|33BCT|^Lyvfh5+O{1@bDX%;!MoHF(35Ze5gQGZ|MU^-c0j!okGUu|e;O z+liZuPbGX=&tSk|4N3d3GppZu0VdvY)~(cb7w{Xee|(Fj;+&ToESh`3uNpYP=q+&I z0s9GSQO$wjR+-Vv$oY!6*1<^Zb+C;0CL$ssCdhc$SjV=ML-0=lA`8N!^E`2qc#wbx z_UoUXlYK3i8)1WBofleH3_Q&6jNGmuuAiFk41+<7n^l6yTbq!9vUQ>%T3*#|;ejXV zhDE?W_7Lw}#n=F&uMV^$QjtbG?(G}(`rcbNvL0GK+46$2W$mNOece4HCv&Idyw0AB zh8Q}i0h^{V_OpH*o)RdOQzn`(0`JqtGG`Oy&D-lV%x7r&IBA%n)O}Iy%6|RxJ0I$g zmy}Rw53^k)a82zk$UcT-nD=}IPm@Hz( z<_YiJOZPC0Bn%c&36=!hUAGYN>-!HJdn)!!?Vet^ES<(4Qy||8xnIX62p(x@MJFDU zJDsQo(&PbukDLagUT-t?b_GLy;<=$};;f&dL?=XXyL0f-w8uaM-Q2Gqy!#VMN?$wi zTi=aOUqAc;#`^q~AHDk}3F&6dg~)7t^*zpBR{~ycs2Y3G5%9cvPHLj1fCe4}gUm@6 z*Wv+x_!J?h%rju^epq5bR%=ljgeIE!X2&$bxD8nT9O2ozzuYJMs=pFnl8}D-xBss@ z&R6_~{doQ8t5&ss@pH>=``_jfU;F%p|Bo?xY+NH-_ZY*gFESkio_+O98XP_*^PZjn z?SQd~VnA9>Y}tu+4Qg8N+2|A>Ue_uYY|H za?U)o=Nh6KqYKDes3$OQmVttO9u)e9i~q#12uekn86b_ryKKf|2v}Z&<~88sdeC7CZ=|*7;mf&OU`{0~kHLMOl@u*myhZ zVNg#8P9_Ny@w>{e5kxxVwk1s96E5Y>w2w^&(*lJ;q^-sndtA#zrq3}@yKU6R zWj}9g*BL6qAq4pAKi>QB>p#&>`Lp?1cYWuxHy?fS`p@@1_=V5j^f&FB-;GZ`y78u7 zzw`bF@BTM6`^69b?)(3v(0}RYfA9Sdzy8Jc`r*I)%m?52Ob6vj*E z=xhezkK{a+LGx Z&gU=u`kQ!D_z(Qte*urD=to~q3IJQ1I4uAG diff --git a/test/it/test_manifests/yarn-berry/.yarnrc.yml b/test/it/test_manifests/yarn-berry/.yarnrc.yml deleted file mode 100644 index 3186f3f0..00000000 --- a/test/it/test_manifests/yarn-berry/.yarnrc.yml +++ /dev/null @@ -1 +0,0 @@ -nodeLinker: node-modules diff --git a/test/it/test_manifests/yarn-berry/package.json b/test/it/test_manifests/yarn-berry/package.json deleted file mode 100644 index 003db0f3..00000000 --- a/test/it/test_manifests/yarn-berry/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "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", - "axios": "^0.19.0", - "backend": "^0.0.0", - "bcryptjs": "^2.4.3", - "dotenv": "^8.2.0", - "express": "^4.17.1", - "jsdom": "^19.0.0", - "jsonwebtoken": "^8.5.1", - "mongoose": "^5.9.18", - "nodemon": "^2.0.4" - }, - "exhortignore": [ - "jsonwebtoken" - ], - "packageManager": "yarn@4.9.1" -} diff --git a/test/it/test_manifests/yarn-berry/yarn.lock b/test/it/test_manifests/yarn-berry/yarn.lock deleted file mode 100644 index 55719165..00000000 --- a/test/it/test_manifests/yarn-berry/yarn.lock +++ /dev/null @@ -1,2741 +0,0 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - -__metadata: - version: 8 - cacheKey: 10c0 - -"@hapi/address@npm:^4.0.1": - version: 4.1.0 - resolution: "@hapi/address@npm:4.1.0" - dependencies: - "@hapi/hoek": "npm:^9.0.0" - checksum: 10c0/6f111f57d9ff72bab8f0a356cdc95f3a5561a347fedc5c2d398906a3754273db4f83e6f92f5d20759c95077f52d01837175a9128b705aef98101f2d34cabe3ac - languageName: node - linkType: hard - -"@hapi/formula@npm:^2.0.0": - version: 2.0.0 - resolution: "@hapi/formula@npm:2.0.0" - checksum: 10c0/93fd1768da51043e49e008a1556c68e9bbf19f6be4823a7c04ed982afaea8f7079f1d4a5452620fe6124976ea0867a6f42e69579fc74f9b9f3dac6bdcc1fc969 - languageName: node - linkType: hard - -"@hapi/hoek@npm:^9.0.0": - version: 9.3.0 - resolution: "@hapi/hoek@npm:9.3.0" - checksum: 10c0/a096063805051fb8bba4c947e293c664b05a32b47e13bc654c0dd43813a1cec993bdd8f29ceb838020299e1d0f89f68dc0d62a603c13c9cc8541963f0beca055 - languageName: node - linkType: hard - -"@hapi/joi@npm:^17.1.1": - version: 17.1.1 - resolution: "@hapi/joi@npm:17.1.1" - dependencies: - "@hapi/address": "npm:^4.0.1" - "@hapi/formula": "npm:^2.0.0" - "@hapi/hoek": "npm:^9.0.0" - "@hapi/pinpoint": "npm:^2.0.0" - "@hapi/topo": "npm:^5.0.0" - checksum: 10c0/0c9fc1e8d26909b0bd1458728d10071170c5112980d455b865fca17964f65befe8b4c30a3d362d423ec60be77afd2d811d2e40a028d3b099adaba80b960db297 - languageName: node - linkType: hard - -"@hapi/pinpoint@npm:^2.0.0": - version: 2.0.1 - resolution: "@hapi/pinpoint@npm:2.0.1" - checksum: 10c0/b3072f2c57c9fa2e44d85168e253e331324158509e1c45dae2676f31555326410345fd2422f890c41201e2783c5e9bb8c7b0bdcf6abe01079742a943b0c300b9 - languageName: node - linkType: hard - -"@hapi/topo@npm:^5.0.0": - version: 5.1.0 - resolution: "@hapi/topo@npm:5.1.0" - dependencies: - "@hapi/hoek": "npm:^9.0.0" - checksum: 10c0/b16b06d9357947149e032bdf10151eb71aea8057c79c4046bf32393cb89d0d0f7ca501c40c0f7534a5ceca078de0700d2257ac855c15e59fe4e00bba2f25c86f - languageName: node - linkType: hard - -"@isaacs/cliui@npm:^8.0.2": - version: 8.0.2 - resolution: "@isaacs/cliui@npm:8.0.2" - dependencies: - string-width: "npm:^5.1.2" - string-width-cjs: "npm:string-width@^4.2.0" - strip-ansi: "npm:^7.0.1" - strip-ansi-cjs: "npm:strip-ansi@^6.0.1" - wrap-ansi: "npm:^8.1.0" - wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" - checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e - languageName: node - linkType: hard - -"@isaacs/fs-minipass@npm:^4.0.0": - version: 4.0.1 - resolution: "@isaacs/fs-minipass@npm:4.0.1" - dependencies: - minipass: "npm:^7.0.4" - checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2 - languageName: node - linkType: hard - -"@npmcli/agent@npm:^3.0.0": - version: 3.0.0 - resolution: "@npmcli/agent@npm:3.0.0" - dependencies: - agent-base: "npm:^7.1.0" - http-proxy-agent: "npm:^7.0.0" - https-proxy-agent: "npm:^7.0.1" - lru-cache: "npm:^10.0.1" - socks-proxy-agent: "npm:^8.0.3" - checksum: 10c0/efe37b982f30740ee77696a80c196912c274ecd2cb243bc6ae7053a50c733ce0f6c09fda085145f33ecf453be19654acca74b69e81eaad4c90f00ccffe2f9271 - languageName: node - linkType: hard - -"@npmcli/fs@npm:^4.0.0": - version: 4.0.0 - resolution: "@npmcli/fs@npm:4.0.0" - dependencies: - semver: "npm:^7.3.5" - checksum: 10c0/c90935d5ce670c87b6b14fab04a965a3b8137e585f8b2a6257263bd7f97756dd736cb165bb470e5156a9e718ecd99413dccc54b1138c1a46d6ec7cf325982fe5 - languageName: node - linkType: hard - -"@pkgjs/parseargs@npm:^0.11.0": - version: 0.11.0 - resolution: "@pkgjs/parseargs@npm:0.11.0" - checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd - languageName: node - linkType: hard - -"@tootallnate/once@npm:2": - version: 2.0.0 - resolution: "@tootallnate/once@npm:2.0.0" - checksum: 10c0/073bfa548026b1ebaf1659eb8961e526be22fa77139b10d60e712f46d2f0f05f4e6c8bec62a087d41088ee9e29faa7f54838568e475ab2f776171003c3920858 - languageName: node - linkType: hard - -"@types/bson@npm:*": - version: 4.2.4 - resolution: "@types/bson@npm:4.2.4" - dependencies: - bson: "npm:*" - checksum: 10c0/5203f87e54ea5b9e8b7724d5465d163463c3578b8cf04a9f39bb85713426377bfdf199a5bc4a560232470e698882f5af0acfe307becfe9546d04cdc89b0fd4b2 - languageName: node - linkType: hard - -"@types/bson@npm:1.x || 4.0.x": - version: 4.0.5 - resolution: "@types/bson@npm:4.0.5" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/0a1ff97af10796769756cce1da114cbf43752f129e4503ae8d9f6995d6a65619bcf7e96bcb66992c8619a53825e0a79dd5dff8a86ce3c378d3b721d07f5e624f - languageName: node - linkType: hard - -"@types/mongodb@npm:^3.5.27": - version: 3.6.20 - resolution: "@types/mongodb@npm:3.6.20" - dependencies: - "@types/bson": "npm:*" - "@types/node": "npm:*" - checksum: 10c0/eafa1074bfed07ab128a1d4635d8b2afdbb1dd1bf1c9fc3b5701b34f50cc6ec5f0de5b3fd59434254cf7b3e7fdc4549492478996ac9a5e5a7c5aba2aeae53560 - languageName: node - linkType: hard - -"@types/node@npm:*": - version: 22.15.3 - resolution: "@types/node@npm:22.15.3" - dependencies: - undici-types: "npm:~6.21.0" - checksum: 10c0/2879f012d1aeba0bfdb5fed80d165f4f2cb3d1f2e1f98a24b18d4a211b4ace7d64bf2622784c78355982ffc1081ba79d0934efc2fb8353913e5871a63609661f - languageName: node - linkType: hard - -"abab@npm:^2.0.5, abab@npm:^2.0.6": - version: 2.0.6 - resolution: "abab@npm:2.0.6" - checksum: 10c0/0b245c3c3ea2598fe0025abf7cc7bb507b06949d51e8edae5d12c1b847a0a0c09639abcb94788332b4e2044ac4491c1e8f571b51c7826fd4b0bda1685ad4a278 - languageName: node - linkType: hard - -"abbrev@npm:^3.0.0": - version: 3.0.1 - resolution: "abbrev@npm:3.0.1" - checksum: 10c0/21ba8f574ea57a3106d6d35623f2c4a9111d9ee3e9a5be47baed46ec2457d2eac46e07a5c4a60186f88cb98abbe3e24f2d4cca70bc2b12f1692523e2209a9ccf - languageName: node - linkType: hard - -"accepts@npm:~1.3.8": - version: 1.3.8 - resolution: "accepts@npm:1.3.8" - dependencies: - mime-types: "npm:~2.1.34" - negotiator: "npm:0.6.3" - checksum: 10c0/3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362 - languageName: node - linkType: hard - -"acorn-globals@npm:^6.0.0": - version: 6.0.0 - resolution: "acorn-globals@npm:6.0.0" - dependencies: - acorn: "npm:^7.1.1" - acorn-walk: "npm:^7.1.1" - checksum: 10c0/5f92390a3fd7e5a4f84fe976d4650e2a33ecf27135aa9efc5406e3406df7f00a1bbb00648ee0c8058846f55ad0924ff574e6c73395705690e754589380a41801 - languageName: node - linkType: hard - -"acorn-walk@npm:^7.1.1": - version: 7.2.0 - resolution: "acorn-walk@npm:7.2.0" - checksum: 10c0/ff99f3406ed8826f7d6ef6ac76b7608f099d45a1ff53229fa267125da1924188dbacf02e7903dfcfd2ae4af46f7be8847dc7d564c73c4e230dfb69c8ea8e6b4c - languageName: node - linkType: hard - -"acorn@npm:^7.1.1": - version: 7.4.1 - resolution: "acorn@npm:7.4.1" - bin: - acorn: bin/acorn - checksum: 10c0/bd0b2c2b0f334bbee48828ff897c12bd2eb5898d03bf556dcc8942022cec795ac5bb5b6b585e2de687db6231faf07e096b59a361231dd8c9344d5df5f7f0e526 - languageName: node - linkType: hard - -"acorn@npm:^8.5.0": - version: 8.14.1 - resolution: "acorn@npm:8.14.1" - bin: - acorn: bin/acorn - checksum: 10c0/dbd36c1ed1d2fa3550140000371fcf721578095b18777b85a79df231ca093b08edc6858d75d6e48c73e431c174dcf9214edbd7e6fa5911b93bd8abfa54e47123 - languageName: node - linkType: hard - -"agent-base@npm:6": - version: 6.0.2 - resolution: "agent-base@npm:6.0.2" - dependencies: - debug: "npm:4" - checksum: 10c0/dc4f757e40b5f3e3d674bc9beb4f1048f4ee83af189bae39be99f57bf1f48dde166a8b0a5342a84b5944ee8e6ed1e5a9d801858f4ad44764e84957122fe46261 - languageName: node - linkType: hard - -"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": - version: 7.1.3 - resolution: "agent-base@npm:7.1.3" - checksum: 10c0/6192b580c5b1d8fb399b9c62bf8343d76654c2dd62afcb9a52b2cf44a8b6ace1e3b704d3fe3547d91555c857d3df02603341ff2cb961b9cfe2b12f9f3c38ee11 - languageName: node - linkType: hard - -"ansi-regex@npm:^5.0.1": - version: 5.0.1 - resolution: "ansi-regex@npm:5.0.1" - checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 - languageName: node - linkType: hard - -"ansi-regex@npm:^6.0.1": - version: 6.1.0 - resolution: "ansi-regex@npm:6.1.0" - checksum: 10c0/a91daeddd54746338478eef88af3439a7edf30f8e23196e2d6ed182da9add559c601266dbef01c2efa46a958ad6f1f8b176799657616c702b5b02e799e7fd8dc - languageName: node - linkType: hard - -"ansi-styles@npm:^4.0.0": - version: 4.3.0 - resolution: "ansi-styles@npm:4.3.0" - dependencies: - color-convert: "npm:^2.0.1" - checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 - languageName: node - linkType: hard - -"ansi-styles@npm:^6.1.0": - version: 6.2.1 - resolution: "ansi-styles@npm:6.2.1" - checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c - languageName: node - linkType: hard - -"anymatch@npm:~3.1.2": - version: 3.1.3 - resolution: "anymatch@npm:3.1.3" - dependencies: - normalize-path: "npm:^3.0.0" - picomatch: "npm:^2.0.4" - checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac - languageName: node - linkType: hard - -"array-flatten@npm:1.1.1": - version: 1.1.1 - resolution: "array-flatten@npm:1.1.1" - checksum: 10c0/806966c8abb2f858b08f5324d9d18d7737480610f3bd5d3498aaae6eb5efdc501a884ba019c9b4a8f02ff67002058749d05548fd42fa8643f02c9c7f22198b91 - languageName: node - linkType: hard - -"asynckit@npm:^0.4.0": - version: 0.4.0 - resolution: "asynckit@npm:0.4.0" - checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d - languageName: node - linkType: hard - -"axios@npm:^0.19.0": - version: 0.19.2 - resolution: "axios@npm:0.19.2" - dependencies: - follow-redirects: "npm:1.5.10" - checksum: 10c0/b775abf2db44ea4f182f4c2bfa4bf84a723b86f5aa001f222f12193fa45ba243b7e3f27b66289c6afa51d696402b05c82715fd621a34add5b538e850adcdbce1 - languageName: node - linkType: hard - -"backend@npm:^0.0.0": - version: 0.0.0 - resolution: "backend@npm:0.0.0" - checksum: 10c0/686c7b54482f3dfd3991e596fab4681d2d7a5940a8b00578fc78f565a0804b57fe9f5c1eeebca5c67b17b61f43e8fb92563ccaf77e4c8551058f5be391831bab - languageName: node - linkType: hard - -"backend@workspace:.": - version: 0.0.0-use.local - resolution: "backend@workspace:." - dependencies: - "@hapi/joi": "npm:^17.1.1" - axios: "npm:^0.19.0" - backend: "npm:^0.0.0" - bcryptjs: "npm:^2.4.3" - dotenv: "npm:^8.2.0" - express: "npm:^4.17.1" - jsdom: "npm:^19.0.0" - jsonwebtoken: "npm:^8.5.1" - mongoose: "npm:^5.9.18" - nodemon: "npm:^2.0.4" - languageName: unknown - linkType: soft - -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee - languageName: node - linkType: hard - -"bcryptjs@npm:^2.4.3": - version: 2.4.3 - resolution: "bcryptjs@npm:2.4.3" - checksum: 10c0/b969467087ed7a01ff905a1c6a0c45014ec586248a448ea08370c8ed8bb314bda16a870ca23e0961d7d23bdce1a04c76fa70a9d680be814fa9ac7d8fc61870a3 - languageName: node - linkType: hard - -"binary-extensions@npm:^2.0.0": - version: 2.3.0 - resolution: "binary-extensions@npm:2.3.0" - checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 - languageName: node - linkType: hard - -"bl@npm:^2.2.1": - version: 2.2.1 - resolution: "bl@npm:2.2.1" - dependencies: - readable-stream: "npm:^2.3.5" - safe-buffer: "npm:^5.1.1" - checksum: 10c0/37481260f1661755253b6205fcdd64b6d852147aaf61628947d2193fcdb78e625ee061dae0094ac16e7c7f10b12c90110fb2b08826815d47a28f9628bebb5a8f - languageName: node - linkType: hard - -"bluebird@npm:3.5.1": - version: 3.5.1 - resolution: "bluebird@npm:3.5.1" - checksum: 10c0/6df1d4499612aecc146cf6f89a8e81f4f7fd0f7a896bf57742214861c97882d9a4e0d8deab1a4e0c5270ad722d4ff74f161cce81c2742b58fb72f113cafd9ad6 - languageName: node - linkType: hard - -"body-parser@npm:1.20.3": - version: 1.20.3 - resolution: "body-parser@npm:1.20.3" - dependencies: - bytes: "npm:3.1.2" - content-type: "npm:~1.0.5" - debug: "npm:2.6.9" - depd: "npm:2.0.0" - destroy: "npm:1.2.0" - http-errors: "npm:2.0.0" - iconv-lite: "npm:0.4.24" - on-finished: "npm:2.4.1" - qs: "npm:6.13.0" - raw-body: "npm:2.5.2" - type-is: "npm:~1.6.18" - unpipe: "npm:1.0.0" - checksum: 10c0/0a9a93b7518f222885498dcecaad528cf010dd109b071bf471c93def4bfe30958b83e03496eb9c1ad4896db543d999bb62be1a3087294162a88cfa1b42c16310 - languageName: node - linkType: hard - -"brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" - dependencies: - balanced-match: "npm:^1.0.0" - concat-map: "npm:0.0.1" - checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 - languageName: node - linkType: hard - -"brace-expansion@npm:^2.0.1": - version: 2.0.1 - resolution: "brace-expansion@npm:2.0.1" - dependencies: - balanced-match: "npm:^1.0.0" - checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f - languageName: node - linkType: hard - -"braces@npm:~3.0.2": - version: 3.0.3 - resolution: "braces@npm:3.0.3" - dependencies: - fill-range: "npm:^7.1.1" - checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04 - languageName: node - linkType: hard - -"browser-process-hrtime@npm:^1.0.0": - version: 1.0.0 - resolution: "browser-process-hrtime@npm:1.0.0" - checksum: 10c0/65da78e51e9d7fa5909147f269c54c65ae2e03d1cf797cc3cfbbe49f475578b8160ce4a76c36c1a2ffbff26c74f937d73096c508057491ddf1a6dfd11143f72d - languageName: node - linkType: hard - -"bson@npm:*": - version: 6.10.3 - resolution: "bson@npm:6.10.3" - checksum: 10c0/15ad7a9b3bf8090add5fea1761b1ba7d75e5256efcfbb8c9ca448ca98e59c3b079c37c36c7aca0cc916236bd2d4684a5525c68f3d76da8a13d55dc230abbdd21 - languageName: node - linkType: hard - -"bson@npm:^1.1.4": - version: 1.1.6 - resolution: "bson@npm:1.1.6" - checksum: 10c0/a45416578e09837d0341149ee4bf2f2704d2e4ec5cdacbc343600e0d3cf01efdf17d6b64f8fc2e664ec2f727ad6ad2bce05894d9e7e4d4a0a10342ddbb122163 - languageName: node - linkType: hard - -"buffer-equal-constant-time@npm:1.0.1": - version: 1.0.1 - resolution: "buffer-equal-constant-time@npm:1.0.1" - checksum: 10c0/fb2294e64d23c573d0dd1f1e7a466c3e978fe94a4e0f8183937912ca374619773bef8e2aceb854129d2efecbbc515bbd0cc78d2734a3e3031edb0888531bbc8e - languageName: node - linkType: hard - -"bytes@npm:3.1.2": - version: 3.1.2 - resolution: "bytes@npm:3.1.2" - checksum: 10c0/76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e - languageName: node - linkType: hard - -"cacache@npm:^19.0.1": - version: 19.0.1 - resolution: "cacache@npm:19.0.1" - dependencies: - "@npmcli/fs": "npm:^4.0.0" - fs-minipass: "npm:^3.0.0" - glob: "npm:^10.2.2" - lru-cache: "npm:^10.0.1" - minipass: "npm:^7.0.3" - minipass-collect: "npm:^2.0.1" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - p-map: "npm:^7.0.2" - ssri: "npm:^12.0.0" - tar: "npm:^7.4.3" - unique-filename: "npm:^4.0.0" - checksum: 10c0/01f2134e1bd7d3ab68be851df96c8d63b492b1853b67f2eecb2c37bb682d37cb70bb858a16f2f0554d3c0071be6dfe21456a1ff6fa4b7eed996570d6a25ffe9c - languageName: node - linkType: hard - -"call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": - version: 1.0.2 - resolution: "call-bind-apply-helpers@npm:1.0.2" - dependencies: - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - checksum: 10c0/47bd9901d57b857590431243fea704ff18078b16890a6b3e021e12d279bbf211d039155e27d7566b374d49ee1f8189344bac9833dec7a20cdec370506361c938 - languageName: node - linkType: hard - -"call-bound@npm:^1.0.2": - version: 1.0.4 - resolution: "call-bound@npm:1.0.4" - dependencies: - call-bind-apply-helpers: "npm:^1.0.2" - get-intrinsic: "npm:^1.3.0" - checksum: 10c0/f4796a6a0941e71c766aea672f63b72bc61234c4f4964dc6d7606e3664c307e7d77845328a8f3359ce39ddb377fed67318f9ee203dea1d47e46165dcf2917644 - languageName: node - linkType: hard - -"chokidar@npm:^3.5.2": - version: 3.6.0 - resolution: "chokidar@npm:3.6.0" - dependencies: - anymatch: "npm:~3.1.2" - braces: "npm:~3.0.2" - fsevents: "npm:~2.3.2" - glob-parent: "npm:~5.1.2" - is-binary-path: "npm:~2.1.0" - is-glob: "npm:~4.0.1" - normalize-path: "npm:~3.0.0" - readdirp: "npm:~3.6.0" - dependenciesMeta: - fsevents: - optional: true - checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462 - languageName: node - linkType: hard - -"chownr@npm:^3.0.0": - version: 3.0.0 - resolution: "chownr@npm:3.0.0" - checksum: 10c0/43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10 - languageName: node - linkType: hard - -"color-convert@npm:^2.0.1": - version: 2.0.1 - resolution: "color-convert@npm:2.0.1" - dependencies: - color-name: "npm:~1.1.4" - checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 - languageName: node - linkType: hard - -"color-name@npm:~1.1.4": - version: 1.1.4 - resolution: "color-name@npm:1.1.4" - checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 - languageName: node - linkType: hard - -"combined-stream@npm:^1.0.8": - version: 1.0.8 - resolution: "combined-stream@npm:1.0.8" - dependencies: - delayed-stream: "npm:~1.0.0" - checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 - languageName: node - linkType: hard - -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f - languageName: node - linkType: hard - -"content-disposition@npm:0.5.4": - version: 0.5.4 - resolution: "content-disposition@npm:0.5.4" - dependencies: - safe-buffer: "npm:5.2.1" - checksum: 10c0/bac0316ebfeacb8f381b38285dc691c9939bf0a78b0b7c2d5758acadad242d04783cee5337ba7d12a565a19075af1b3c11c728e1e4946de73c6ff7ce45f3f1bb - languageName: node - linkType: hard - -"content-type@npm:~1.0.4, content-type@npm:~1.0.5": - version: 1.0.5 - resolution: "content-type@npm:1.0.5" - checksum: 10c0/b76ebed15c000aee4678c3707e0860cb6abd4e680a598c0a26e17f0bfae723ec9cc2802f0ff1bc6e4d80603719010431d2231018373d4dde10f9ccff9dadf5af - languageName: node - linkType: hard - -"cookie-signature@npm:1.0.6": - version: 1.0.6 - resolution: "cookie-signature@npm:1.0.6" - checksum: 10c0/b36fd0d4e3fef8456915fcf7742e58fbfcc12a17a018e0eb9501c9d5ef6893b596466f03b0564b81af29ff2538fd0aa4b9d54fe5ccbfb4c90ea50ad29fe2d221 - languageName: node - linkType: hard - -"cookie@npm:0.7.1": - version: 0.7.1 - resolution: "cookie@npm:0.7.1" - checksum: 10c0/5de60c67a410e7c8dc8a46a4b72eb0fe925871d057c9a5d2c0e8145c4270a4f81076de83410c4d397179744b478e33cd80ccbcc457abf40a9409ad27dcd21dde - languageName: node - linkType: hard - -"core-util-is@npm:~1.0.0": - version: 1.0.3 - resolution: "core-util-is@npm:1.0.3" - checksum: 10c0/90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 - languageName: node - linkType: hard - -"cross-spawn@npm:^7.0.6": - version: 7.0.6 - resolution: "cross-spawn@npm:7.0.6" - dependencies: - path-key: "npm:^3.1.0" - shebang-command: "npm:^2.0.0" - which: "npm:^2.0.1" - checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 - languageName: node - linkType: hard - -"cssom@npm:^0.5.0": - version: 0.5.0 - resolution: "cssom@npm:0.5.0" - checksum: 10c0/8c4121c243baf0678c65dcac29b201ff0067dfecf978de9d5c83b2ff127a8fdefd2bfd54577f5ad8c80ed7d2c8b489ae01c82023545d010c4ecb87683fb403dd - languageName: node - linkType: hard - -"cssom@npm:~0.3.6": - version: 0.3.8 - resolution: "cssom@npm:0.3.8" - checksum: 10c0/d74017b209440822f9e24d8782d6d2e808a8fdd58fa626a783337222fe1c87a518ba944d4c88499031b4786e68772c99dfae616638d71906fe9f203aeaf14411 - languageName: node - linkType: hard - -"cssstyle@npm:^2.3.0": - version: 2.3.0 - resolution: "cssstyle@npm:2.3.0" - dependencies: - cssom: "npm:~0.3.6" - checksum: 10c0/863400da2a458f73272b9a55ba7ff05de40d850f22eb4f37311abebd7eff801cf1cd2fb04c4c92b8c3daed83fe766e52e4112afb7bc88d86c63a9c2256a7d178 - languageName: node - linkType: hard - -"data-urls@npm:^3.0.1": - version: 3.0.2 - resolution: "data-urls@npm:3.0.2" - dependencies: - abab: "npm:^2.0.6" - whatwg-mimetype: "npm:^3.0.0" - whatwg-url: "npm:^11.0.0" - checksum: 10c0/051c3aaaf3e961904f136aab095fcf6dff4db23a7fc759dd8ba7b3e6ba03fc07ef608086caad8ab910d864bd3b5e57d0d2f544725653d77c96a2c971567045f4 - languageName: node - linkType: hard - -"debug@npm:2.6.9": - version: 2.6.9 - resolution: "debug@npm:2.6.9" - dependencies: - ms: "npm:2.0.0" - checksum: 10c0/121908fb839f7801180b69a7e218a40b5a0b718813b886b7d6bdb82001b931c938e2941d1e4450f33a1b1df1da653f5f7a0440c197f29fbf8a6e9d45ff6ef589 - languageName: node - linkType: hard - -"debug@npm:3.1.0, debug@npm:=3.1.0": - version: 3.1.0 - resolution: "debug@npm:3.1.0" - dependencies: - ms: "npm:2.0.0" - checksum: 10c0/5bff34a352d7b2eaa31886eeaf2ee534b5461ec0548315b2f9f80bd1d2533cab7df1fa52e130ce27bc31c3945fbffb0fc72baacdceb274b95ce853db89254ea4 - languageName: node - linkType: hard - -"debug@npm:4, debug@npm:^4.3.4": - version: 4.4.0 - resolution: "debug@npm:4.4.0" - dependencies: - ms: "npm:^2.1.3" - peerDependenciesMeta: - supports-color: - optional: true - checksum: 10c0/db94f1a182bf886f57b4755f85b3a74c39b5114b9377b7ab375dc2cfa3454f09490cc6c30f829df3fc8042bc8b8995f6567ce5cd96f3bc3688bd24027197d9de - languageName: node - linkType: hard - -"debug@npm:^3.2.7": - version: 3.2.7 - resolution: "debug@npm:3.2.7" - dependencies: - ms: "npm:^2.1.1" - checksum: 10c0/37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a - languageName: node - linkType: hard - -"decimal.js@npm:^10.3.1": - version: 10.5.0 - resolution: "decimal.js@npm:10.5.0" - checksum: 10c0/785c35279df32762143914668df35948920b6c1c259b933e0519a69b7003fc0a5ed2a766b1e1dda02574450c566b21738a45f15e274b47c2ac02072c0d1f3ac3 - languageName: node - linkType: hard - -"delayed-stream@npm:~1.0.0": - version: 1.0.0 - resolution: "delayed-stream@npm:1.0.0" - checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 - languageName: node - linkType: hard - -"denque@npm:^1.4.1": - version: 1.5.1 - resolution: "denque@npm:1.5.1" - checksum: 10c0/9e6fc1a63e1c9ded38325290302fef40e5ad28471ad8c66d68eaea623ef847bd25fc75a7c3f47396206dc967922615999066470a364e1786f2758d61337872b7 - languageName: node - linkType: hard - -"depd@npm:2.0.0": - version: 2.0.0 - resolution: "depd@npm:2.0.0" - checksum: 10c0/58bd06ec20e19529b06f7ad07ddab60e504d9e0faca4bd23079fac2d279c3594334d736508dc350e06e510aba5e22e4594483b3a6562ce7c17dd797f4cc4ad2c - languageName: node - linkType: hard - -"destroy@npm:1.2.0": - version: 1.2.0 - resolution: "destroy@npm:1.2.0" - checksum: 10c0/bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643 - languageName: node - linkType: hard - -"domexception@npm:^4.0.0": - version: 4.0.0 - resolution: "domexception@npm:4.0.0" - dependencies: - webidl-conversions: "npm:^7.0.0" - checksum: 10c0/774277cd9d4df033f852196e3c0077a34dbd15a96baa4d166e0e47138a80f4c0bdf0d94e4703e6ff5883cec56bb821a6fff84402d8a498e31de7c87eb932a294 - languageName: node - linkType: hard - -"dotenv@npm:^8.2.0": - version: 8.6.0 - resolution: "dotenv@npm:8.6.0" - checksum: 10c0/6750431dea8efbd54b9f2d9681b04e1ccc7989486461dcf058bb708d9e3d63b04115fcdf8840e38ad1e24a4a2e1e7c1560626c5e3ac7bc09371b127c49e2d45f - languageName: node - linkType: hard - -"dunder-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "dunder-proto@npm:1.0.1" - dependencies: - call-bind-apply-helpers: "npm:^1.0.1" - es-errors: "npm:^1.3.0" - gopd: "npm:^1.2.0" - checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031 - languageName: node - linkType: hard - -"eastasianwidth@npm:^0.2.0": - version: 0.2.0 - resolution: "eastasianwidth@npm:0.2.0" - checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 - languageName: node - linkType: hard - -"ecdsa-sig-formatter@npm:1.0.11": - version: 1.0.11 - resolution: "ecdsa-sig-formatter@npm:1.0.11" - dependencies: - safe-buffer: "npm:^5.0.1" - checksum: 10c0/ebfbf19d4b8be938f4dd4a83b8788385da353d63307ede301a9252f9f7f88672e76f2191618fd8edfc2f24679236064176fab0b78131b161ee73daa37125408c - languageName: node - linkType: hard - -"ee-first@npm:1.1.1": - version: 1.1.1 - resolution: "ee-first@npm:1.1.1" - checksum: 10c0/b5bb125ee93161bc16bfe6e56c6b04de5ad2aa44234d8f644813cc95d861a6910903132b05093706de2b706599367c4130eb6d170f6b46895686b95f87d017b7 - languageName: node - linkType: hard - -"emoji-regex@npm:^8.0.0": - version: 8.0.0 - resolution: "emoji-regex@npm:8.0.0" - checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 - languageName: node - linkType: hard - -"emoji-regex@npm:^9.2.2": - version: 9.2.2 - resolution: "emoji-regex@npm:9.2.2" - checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 - languageName: node - linkType: hard - -"encodeurl@npm:~1.0.2": - version: 1.0.2 - resolution: "encodeurl@npm:1.0.2" - checksum: 10c0/f6c2387379a9e7c1156c1c3d4f9cb7bb11cf16dd4c1682e1f6746512564b053df5781029b6061296832b59fb22f459dbe250386d217c2f6e203601abb2ee0bec - languageName: node - linkType: hard - -"encodeurl@npm:~2.0.0": - version: 2.0.0 - resolution: "encodeurl@npm:2.0.0" - checksum: 10c0/5d317306acb13e6590e28e27924c754163946a2480de11865c991a3a7eed4315cd3fba378b543ca145829569eefe9b899f3d84bb09870f675ae60bc924b01ceb - languageName: node - linkType: hard - -"encoding@npm:^0.1.13": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: "npm:^0.6.2" - checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 - languageName: node - linkType: hard - -"env-paths@npm:^2.2.0": - version: 2.2.1 - resolution: "env-paths@npm:2.2.1" - checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 - languageName: node - linkType: hard - -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 - languageName: node - linkType: hard - -"es-define-property@npm:^1.0.1": - version: 1.0.1 - resolution: "es-define-property@npm:1.0.1" - checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c - languageName: node - linkType: hard - -"es-errors@npm:^1.3.0": - version: 1.3.0 - resolution: "es-errors@npm:1.3.0" - checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 - languageName: node - linkType: hard - -"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": - version: 1.1.1 - resolution: "es-object-atoms@npm:1.1.1" - dependencies: - es-errors: "npm:^1.3.0" - checksum: 10c0/65364812ca4daf48eb76e2a3b7a89b3f6a2e62a1c420766ce9f692665a29d94fe41fe88b65f24106f449859549711e4b40d9fb8002d862dfd7eb1c512d10be0c - languageName: node - linkType: hard - -"es-set-tostringtag@npm:^2.1.0": - version: 2.1.0 - resolution: "es-set-tostringtag@npm:2.1.0" - dependencies: - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.6" - has-tostringtag: "npm:^1.0.2" - hasown: "npm:^2.0.2" - checksum: 10c0/ef2ca9ce49afe3931cb32e35da4dcb6d86ab02592cfc2ce3e49ced199d9d0bb5085fc7e73e06312213765f5efa47cc1df553a6a5154584b21448e9fb8355b1af - languageName: node - linkType: hard - -"escape-html@npm:~1.0.3": - version: 1.0.3 - resolution: "escape-html@npm:1.0.3" - checksum: 10c0/524c739d776b36c3d29fa08a22e03e8824e3b2fd57500e5e44ecf3cc4707c34c60f9ca0781c0e33d191f2991161504c295e98f68c78fe7baa6e57081ec6ac0a3 - languageName: node - linkType: hard - -"escodegen@npm:^2.0.0": - version: 2.1.0 - resolution: "escodegen@npm:2.1.0" - dependencies: - esprima: "npm:^4.0.1" - estraverse: "npm:^5.2.0" - esutils: "npm:^2.0.2" - source-map: "npm:~0.6.1" - dependenciesMeta: - source-map: - optional: true - bin: - escodegen: bin/escodegen.js - esgenerate: bin/esgenerate.js - checksum: 10c0/e1450a1f75f67d35c061bf0d60888b15f62ab63aef9df1901cffc81cffbbb9e8b3de237c5502cf8613a017c1df3a3003881307c78835a1ab54d8c8d2206e01d3 - languageName: node - linkType: hard - -"esprima@npm:^4.0.1": - version: 4.0.1 - resolution: "esprima@npm:4.0.1" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 - languageName: node - linkType: hard - -"estraverse@npm:^5.2.0": - version: 5.3.0 - resolution: "estraverse@npm:5.3.0" - checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 - languageName: node - linkType: hard - -"esutils@npm:^2.0.2": - version: 2.0.3 - resolution: "esutils@npm:2.0.3" - checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 - languageName: node - linkType: hard - -"etag@npm:~1.8.1": - version: 1.8.1 - resolution: "etag@npm:1.8.1" - checksum: 10c0/12be11ef62fb9817314d790089a0a49fae4e1b50594135dcb8076312b7d7e470884b5100d249b28c18581b7fd52f8b485689ffae22a11ed9ec17377a33a08f84 - languageName: node - linkType: hard - -"exponential-backoff@npm:^3.1.1": - version: 3.1.2 - resolution: "exponential-backoff@npm:3.1.2" - checksum: 10c0/d9d3e1eafa21b78464297df91f1776f7fbaa3d5e3f7f0995648ca5b89c069d17055033817348d9f4a43d1c20b0eab84f75af6991751e839df53e4dfd6f22e844 - languageName: node - linkType: hard - -"express@npm:^4.17.1": - version: 4.21.2 - resolution: "express@npm:4.21.2" - dependencies: - accepts: "npm:~1.3.8" - array-flatten: "npm:1.1.1" - body-parser: "npm:1.20.3" - content-disposition: "npm:0.5.4" - content-type: "npm:~1.0.4" - cookie: "npm:0.7.1" - cookie-signature: "npm:1.0.6" - debug: "npm:2.6.9" - depd: "npm:2.0.0" - encodeurl: "npm:~2.0.0" - escape-html: "npm:~1.0.3" - etag: "npm:~1.8.1" - finalhandler: "npm:1.3.1" - fresh: "npm:0.5.2" - http-errors: "npm:2.0.0" - merge-descriptors: "npm:1.0.3" - methods: "npm:~1.1.2" - on-finished: "npm:2.4.1" - parseurl: "npm:~1.3.3" - path-to-regexp: "npm:0.1.12" - proxy-addr: "npm:~2.0.7" - qs: "npm:6.13.0" - range-parser: "npm:~1.2.1" - safe-buffer: "npm:5.2.1" - send: "npm:0.19.0" - serve-static: "npm:1.16.2" - setprototypeof: "npm:1.2.0" - statuses: "npm:2.0.1" - type-is: "npm:~1.6.18" - utils-merge: "npm:1.0.1" - vary: "npm:~1.1.2" - checksum: 10c0/38168fd0a32756600b56e6214afecf4fc79ec28eca7f7a91c2ab8d50df4f47562ca3f9dee412da7f5cea6b1a1544b33b40f9f8586dbacfbdada0fe90dbb10a1f - languageName: node - linkType: hard - -"fdir@npm:^6.4.4": - version: 6.4.4 - resolution: "fdir@npm:6.4.4" - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - checksum: 10c0/6ccc33be16945ee7bc841e1b4178c0b4cf18d3804894cb482aa514651c962a162f96da7ffc6ebfaf0df311689fb70091b04dd6caffe28d56b9ebdc0e7ccadfdd - languageName: node - linkType: hard - -"fill-range@npm:^7.1.1": - version: 7.1.1 - resolution: "fill-range@npm:7.1.1" - dependencies: - to-regex-range: "npm:^5.0.1" - checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018 - languageName: node - linkType: hard - -"finalhandler@npm:1.3.1": - version: 1.3.1 - resolution: "finalhandler@npm:1.3.1" - dependencies: - debug: "npm:2.6.9" - encodeurl: "npm:~2.0.0" - escape-html: "npm:~1.0.3" - on-finished: "npm:2.4.1" - parseurl: "npm:~1.3.3" - statuses: "npm:2.0.1" - unpipe: "npm:~1.0.0" - checksum: 10c0/d38035831865a49b5610206a3a9a9aae4e8523cbbcd01175d0480ffbf1278c47f11d89be3ca7f617ae6d94f29cf797546a4619cd84dd109009ef33f12f69019f - languageName: node - linkType: hard - -"follow-redirects@npm:1.5.10": - version: 1.5.10 - resolution: "follow-redirects@npm:1.5.10" - dependencies: - debug: "npm:=3.1.0" - checksum: 10c0/f56ca26dcf3c9996a6cf8868b61e369a35d4000ade0292bdd27b5e0934902681b037060b9fabe58e7042bb8b85166d5db8bbcf027f1825c1577e4cffd904fd3f - languageName: node - linkType: hard - -"foreground-child@npm:^3.1.0": - version: 3.3.1 - resolution: "foreground-child@npm:3.3.1" - dependencies: - cross-spawn: "npm:^7.0.6" - signal-exit: "npm:^4.0.1" - checksum: 10c0/8986e4af2430896e65bc2788d6679067294d6aee9545daefc84923a0a4b399ad9c7a3ea7bd8c0b2b80fdf4a92de4c69df3f628233ff3224260e9c1541a9e9ed3 - languageName: node - linkType: hard - -"form-data@npm:^4.0.0": - version: 4.0.2 - resolution: "form-data@npm:4.0.2" - dependencies: - asynckit: "npm:^0.4.0" - combined-stream: "npm:^1.0.8" - es-set-tostringtag: "npm:^2.1.0" - mime-types: "npm:^2.1.12" - checksum: 10c0/e534b0cf025c831a0929bf4b9bbe1a9a6b03e273a8161f9947286b9b13bf8fb279c6944aae0070c4c311100c6d6dbb815cd955dc217728caf73fad8dc5b8ee9c - languageName: node - linkType: hard - -"forwarded@npm:0.2.0": - version: 0.2.0 - resolution: "forwarded@npm:0.2.0" - checksum: 10c0/9b67c3fac86acdbc9ae47ba1ddd5f2f81526fa4c8226863ede5600a3f7c7416ef451f6f1e240a3cc32d0fd79fcfe6beb08fd0da454f360032bde70bf80afbb33 - languageName: node - linkType: hard - -"fresh@npm:0.5.2": - version: 0.5.2 - resolution: "fresh@npm:0.5.2" - checksum: 10c0/c6d27f3ed86cc5b601404822f31c900dd165ba63fff8152a3ef714e2012e7535027063bc67ded4cb5b3a49fa596495d46cacd9f47d6328459cf570f08b7d9e5a - languageName: node - linkType: hard - -"fs-minipass@npm:^3.0.0": - version: 3.0.3 - resolution: "fs-minipass@npm:3.0.3" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 - languageName: node - linkType: hard - -"fsevents@npm:~2.3.2": - version: 2.3.3 - resolution: "fsevents@npm:2.3.3" - dependencies: - node-gyp: "npm:latest" - checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": - version: 2.3.3 - resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" - dependencies: - node-gyp: "npm:latest" - conditions: os=darwin - languageName: node - linkType: hard - -"function-bind@npm:^1.1.2": - version: 1.1.2 - resolution: "function-bind@npm:1.1.2" - checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.3.0": - version: 1.3.0 - resolution: "get-intrinsic@npm:1.3.0" - dependencies: - call-bind-apply-helpers: "npm:^1.0.2" - es-define-property: "npm:^1.0.1" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.1.1" - function-bind: "npm:^1.1.2" - get-proto: "npm:^1.0.1" - gopd: "npm:^1.2.0" - has-symbols: "npm:^1.1.0" - hasown: "npm:^2.0.2" - math-intrinsics: "npm:^1.1.0" - checksum: 10c0/52c81808af9a8130f581e6a6a83e1ba4a9f703359e7a438d1369a5267a25412322f03dcbd7c549edaef0b6214a0630a28511d7df0130c93cfd380f4fa0b5b66a - languageName: node - linkType: hard - -"get-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "get-proto@npm:1.0.1" - dependencies: - dunder-proto: "npm:^1.0.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10c0/9224acb44603c5526955e83510b9da41baf6ae73f7398875fba50edc5e944223a89c4a72b070fcd78beb5f7bdda58ecb6294adc28f7acfc0da05f76a2399643c - languageName: node - linkType: hard - -"glob-parent@npm:~5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" - dependencies: - is-glob: "npm:^4.0.1" - checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee - languageName: node - linkType: hard - -"glob@npm:^10.2.2": - version: 10.4.5 - resolution: "glob@npm:10.4.5" - dependencies: - foreground-child: "npm:^3.1.0" - jackspeak: "npm:^3.1.2" - minimatch: "npm:^9.0.4" - minipass: "npm:^7.1.2" - package-json-from-dist: "npm:^1.0.0" - path-scurry: "npm:^1.11.1" - bin: - glob: dist/esm/bin.mjs - checksum: 10c0/19a9759ea77b8e3ca0a43c2f07ecddc2ad46216b786bb8f993c445aee80d345925a21e5280c7b7c6c59e860a0154b84e4b2b60321fea92cd3c56b4a7489f160e - languageName: node - linkType: hard - -"gopd@npm:^1.2.0": - version: 1.2.0 - resolution: "gopd@npm:1.2.0" - checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead - languageName: node - linkType: hard - -"graceful-fs@npm:^4.2.6": - version: 4.2.11 - resolution: "graceful-fs@npm:4.2.11" - checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 - languageName: node - linkType: hard - -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": - version: 1.1.0 - resolution: "has-symbols@npm:1.1.0" - checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e - languageName: node - linkType: hard - -"has-tostringtag@npm:^1.0.2": - version: 1.0.2 - resolution: "has-tostringtag@npm:1.0.2" - dependencies: - has-symbols: "npm:^1.0.3" - checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c - languageName: node - linkType: hard - -"hasown@npm:^2.0.2": - version: 2.0.2 - resolution: "hasown@npm:2.0.2" - dependencies: - function-bind: "npm:^1.1.2" - checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9 - languageName: node - linkType: hard - -"html-encoding-sniffer@npm:^3.0.0": - version: 3.0.0 - resolution: "html-encoding-sniffer@npm:3.0.0" - dependencies: - whatwg-encoding: "npm:^2.0.0" - checksum: 10c0/b17b3b0fb5d061d8eb15121c3b0b536376c3e295ecaf09ba48dd69c6b6c957839db124fe1e2b3f11329753a4ee01aa7dedf63b7677999e86da17fbbdd82c5386 - languageName: node - linkType: hard - -"http-cache-semantics@npm:^4.1.1": - version: 4.1.1 - resolution: "http-cache-semantics@npm:4.1.1" - checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc - languageName: node - linkType: hard - -"http-errors@npm:2.0.0": - version: 2.0.0 - resolution: "http-errors@npm:2.0.0" - dependencies: - depd: "npm:2.0.0" - inherits: "npm:2.0.4" - setprototypeof: "npm:1.2.0" - statuses: "npm:2.0.1" - toidentifier: "npm:1.0.1" - checksum: 10c0/fc6f2715fe188d091274b5ffc8b3657bd85c63e969daa68ccb77afb05b071a4b62841acb7a21e417b5539014dff2ebf9550f0b14a9ff126f2734a7c1387f8e19 - languageName: node - linkType: hard - -"http-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "http-proxy-agent@npm:5.0.0" - dependencies: - "@tootallnate/once": "npm:2" - agent-base: "npm:6" - debug: "npm:4" - checksum: 10c0/32a05e413430b2c1e542e5c74b38a9f14865301dd69dff2e53ddb684989440e3d2ce0c4b64d25eb63cf6283e6265ff979a61cf93e3ca3d23047ddfdc8df34a32 - languageName: node - linkType: hard - -"http-proxy-agent@npm:^7.0.0": - version: 7.0.2 - resolution: "http-proxy-agent@npm:7.0.2" - dependencies: - agent-base: "npm:^7.1.0" - debug: "npm:^4.3.4" - checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^5.0.0": - version: 5.0.1 - resolution: "https-proxy-agent@npm:5.0.1" - dependencies: - agent-base: "npm:6" - debug: "npm:4" - checksum: 10c0/6dd639f03434003577c62b27cafdb864784ef19b2de430d8ae2a1d45e31c4fd60719e5637b44db1a88a046934307da7089e03d6089ec3ddacc1189d8de8897d1 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^7.0.1": - version: 7.0.6 - resolution: "https-proxy-agent@npm:7.0.6" - dependencies: - agent-base: "npm:^7.1.2" - debug: "npm:4" - checksum: 10c0/f729219bc735edb621fa30e6e84e60ee5d00802b8247aac0d7b79b0bd6d4b3294737a337b93b86a0bd9e68099d031858a39260c976dc14cdbba238ba1f8779ac - languageName: node - linkType: hard - -"iconv-lite@npm:0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: "npm:>= 2.1.2 < 3" - checksum: 10c0/c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4 - languageName: node - linkType: hard - -"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" - dependencies: - safer-buffer: "npm:>= 2.1.2 < 3.0.0" - checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 - languageName: node - linkType: hard - -"ignore-by-default@npm:^1.0.1": - version: 1.0.1 - resolution: "ignore-by-default@npm:1.0.1" - checksum: 10c0/9ab6e70e80f7cc12735def7ecb5527cfa56ab4e1152cd64d294522827f2dcf1f6d85531241537dc3713544e88dd888f65cb3c49c7b2cddb9009087c75274e533 - languageName: node - linkType: hard - -"imurmurhash@npm:^0.1.4": - version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4" - checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 - languageName: node - linkType: hard - -"inherits@npm:2.0.4, inherits@npm:~2.0.3": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 - languageName: node - linkType: hard - -"ip-address@npm:^9.0.5": - version: 9.0.5 - resolution: "ip-address@npm:9.0.5" - dependencies: - jsbn: "npm:1.1.0" - sprintf-js: "npm:^1.1.3" - checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc - languageName: node - linkType: hard - -"ipaddr.js@npm:1.9.1": - version: 1.9.1 - resolution: "ipaddr.js@npm:1.9.1" - checksum: 10c0/0486e775047971d3fdb5fb4f063829bac45af299ae0b82dcf3afa2145338e08290563a2a70f34b732d795ecc8311902e541a8530eeb30d75860a78ff4e94ce2a - languageName: node - linkType: hard - -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: "npm:^2.0.0" - checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 - languageName: node - linkType: hard - -"is-extglob@npm:^2.1.1": - version: 2.1.1 - resolution: "is-extglob@npm:2.1.1" - checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^3.0.0": - version: 3.0.0 - resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc - languageName: node - linkType: hard - -"is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": - version: 4.0.3 - resolution: "is-glob@npm:4.0.3" - dependencies: - is-extglob: "npm:^2.1.1" - checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a - languageName: node - linkType: hard - -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 - languageName: node - linkType: hard - -"is-potential-custom-element-name@npm:^1.0.1": - version: 1.0.1 - resolution: "is-potential-custom-element-name@npm:1.0.1" - checksum: 10c0/b73e2f22bc863b0939941d369486d308b43d7aef1f9439705e3582bfccaa4516406865e32c968a35f97a99396dac84e2624e67b0a16b0a15086a785e16ce7db9 - languageName: node - linkType: hard - -"isarray@npm:~1.0.0": - version: 1.0.0 - resolution: "isarray@npm:1.0.0" - checksum: 10c0/18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d - languageName: node - linkType: hard - -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d - languageName: node - linkType: hard - -"isexe@npm:^3.1.1": - version: 3.1.1 - resolution: "isexe@npm:3.1.1" - checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 - languageName: node - linkType: hard - -"jackspeak@npm:^3.1.2": - version: 3.4.3 - resolution: "jackspeak@npm:3.4.3" - dependencies: - "@isaacs/cliui": "npm:^8.0.2" - "@pkgjs/parseargs": "npm:^0.11.0" - dependenciesMeta: - "@pkgjs/parseargs": - optional: true - checksum: 10c0/6acc10d139eaefdbe04d2f679e6191b3abf073f111edf10b1de5302c97ec93fffeb2fdd8681ed17f16268aa9dd4f8c588ed9d1d3bffbbfa6e8bf897cbb3149b9 - languageName: node - linkType: hard - -"jsbn@npm:1.1.0": - version: 1.1.0 - resolution: "jsbn@npm:1.1.0" - checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96 - languageName: node - linkType: hard - -"jsdom@npm:^19.0.0": - version: 19.0.0 - resolution: "jsdom@npm:19.0.0" - dependencies: - abab: "npm:^2.0.5" - acorn: "npm:^8.5.0" - acorn-globals: "npm:^6.0.0" - cssom: "npm:^0.5.0" - cssstyle: "npm:^2.3.0" - data-urls: "npm:^3.0.1" - decimal.js: "npm:^10.3.1" - domexception: "npm:^4.0.0" - escodegen: "npm:^2.0.0" - form-data: "npm:^4.0.0" - html-encoding-sniffer: "npm:^3.0.0" - http-proxy-agent: "npm:^5.0.0" - https-proxy-agent: "npm:^5.0.0" - is-potential-custom-element-name: "npm:^1.0.1" - nwsapi: "npm:^2.2.0" - parse5: "npm:6.0.1" - saxes: "npm:^5.0.1" - symbol-tree: "npm:^3.2.4" - tough-cookie: "npm:^4.0.0" - w3c-hr-time: "npm:^1.0.2" - w3c-xmlserializer: "npm:^3.0.0" - webidl-conversions: "npm:^7.0.0" - whatwg-encoding: "npm:^2.0.0" - whatwg-mimetype: "npm:^3.0.0" - whatwg-url: "npm:^10.0.0" - ws: "npm:^8.2.3" - xml-name-validator: "npm:^4.0.0" - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - checksum: 10c0/c39c71aa64df60f2b609adfc61fa4406c1a710da3278c730b0093181d1d09c1e6ba5551e32d78259a21800e10c2984c571777d6f7080249a5d21287be4f17bd9 - languageName: node - linkType: hard - -"jsonwebtoken@npm:^8.5.1": - version: 8.5.1 - resolution: "jsonwebtoken@npm:8.5.1" - dependencies: - jws: "npm:^3.2.2" - lodash.includes: "npm:^4.3.0" - lodash.isboolean: "npm:^3.0.3" - lodash.isinteger: "npm:^4.0.4" - lodash.isnumber: "npm:^3.0.3" - lodash.isplainobject: "npm:^4.0.6" - lodash.isstring: "npm:^4.0.1" - lodash.once: "npm:^4.0.0" - ms: "npm:^2.1.1" - semver: "npm:^5.6.0" - checksum: 10c0/c5ad937b6fa23a230efa8ed8ca3c0da8ebfdd377bafc3e8432a11b03ef90e733400a00b26c0dfee47db44a2e64b88b154b57e9926a92990f98dd25aaed15006e - languageName: node - linkType: hard - -"jwa@npm:^1.4.1": - version: 1.4.1 - resolution: "jwa@npm:1.4.1" - dependencies: - buffer-equal-constant-time: "npm:1.0.1" - ecdsa-sig-formatter: "npm:1.0.11" - safe-buffer: "npm:^5.0.1" - checksum: 10c0/5c533540bf38702e73cf14765805a94027c66a0aa8b16bc3e89d8d905e61a4ce2791e87e21be97d1293a5ee9d4f3e5e47737e671768265ca4f25706db551d5e9 - languageName: node - linkType: hard - -"jws@npm:^3.2.2": - version: 3.2.2 - resolution: "jws@npm:3.2.2" - dependencies: - jwa: "npm:^1.4.1" - safe-buffer: "npm:^5.0.1" - checksum: 10c0/e770704533d92df358adad7d1261fdecad4d7b66fa153ba80d047e03ca0f1f73007ce5ed3fbc04d2eba09ba6e7e6e645f351e08e5ab51614df1b0aa4f384dfff - languageName: node - linkType: hard - -"kareem@npm:2.3.2": - version: 2.3.2 - resolution: "kareem@npm:2.3.2" - checksum: 10c0/f3da6015d61a6da734a2795a165e756b2c2f814b2286e3ee45f4208115869c5d2bab1b237c40dbab967830c43884ea3fb965af9568858836621f6a60735a5dfd - languageName: node - linkType: hard - -"lodash.includes@npm:^4.3.0": - version: 4.3.0 - resolution: "lodash.includes@npm:4.3.0" - checksum: 10c0/7ca498b9b75bf602d04e48c0adb842dfc7d90f77bcb2a91a2b2be34a723ad24bc1c8b3683ec6b2552a90f216c723cdea530ddb11a3320e08fa38265703978f4b - languageName: node - linkType: hard - -"lodash.isboolean@npm:^3.0.3": - version: 3.0.3 - resolution: "lodash.isboolean@npm:3.0.3" - checksum: 10c0/0aac604c1ef7e72f9a6b798e5b676606042401dd58e49f051df3cc1e3adb497b3d7695635a5cbec4ae5f66456b951fdabe7d6b387055f13267cde521f10ec7f7 - languageName: node - linkType: hard - -"lodash.isinteger@npm:^4.0.4": - version: 4.0.4 - resolution: "lodash.isinteger@npm:4.0.4" - checksum: 10c0/4c3e023a2373bf65bf366d3b8605b97ec830bca702a926939bcaa53f8e02789b6a176e7f166b082f9365bfec4121bfeb52e86e9040cb8d450e64c858583f61b7 - languageName: node - linkType: hard - -"lodash.isnumber@npm:^3.0.3": - version: 3.0.3 - resolution: "lodash.isnumber@npm:3.0.3" - checksum: 10c0/2d01530513a1ee4f72dd79528444db4e6360588adcb0e2ff663db2b3f642d4bb3d687051ae1115751ca9082db4fdef675160071226ca6bbf5f0c123dbf0aa12d - languageName: node - linkType: hard - -"lodash.isplainobject@npm:^4.0.6": - version: 4.0.6 - resolution: "lodash.isplainobject@npm:4.0.6" - checksum: 10c0/afd70b5c450d1e09f32a737bed06ff85b873ecd3d3d3400458725283e3f2e0bb6bf48e67dbe7a309eb371a822b16a26cca4a63c8c52db3fc7dc9d5f9dd324cbb - languageName: node - linkType: hard - -"lodash.isstring@npm:^4.0.1": - version: 4.0.1 - resolution: "lodash.isstring@npm:4.0.1" - checksum: 10c0/09eaf980a283f9eef58ef95b30ec7fee61df4d6bf4aba3b5f096869cc58f24c9da17900febc8ffd67819b4e29de29793190e88dc96983db92d84c95fa85d1c92 - languageName: node - linkType: hard - -"lodash.once@npm:^4.0.0": - version: 4.1.1 - resolution: "lodash.once@npm:4.1.1" - checksum: 10c0/46a9a0a66c45dd812fcc016e46605d85ad599fe87d71a02f6736220554b52ffbe82e79a483ad40f52a8a95755b0d1077fba259da8bfb6694a7abbf4a48f1fc04 - languageName: node - linkType: hard - -"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": - version: 10.4.3 - resolution: "lru-cache@npm:10.4.3" - checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb - languageName: node - linkType: hard - -"make-fetch-happen@npm:^14.0.3": - version: 14.0.3 - resolution: "make-fetch-happen@npm:14.0.3" - dependencies: - "@npmcli/agent": "npm:^3.0.0" - cacache: "npm:^19.0.1" - http-cache-semantics: "npm:^4.1.1" - minipass: "npm:^7.0.2" - minipass-fetch: "npm:^4.0.0" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - negotiator: "npm:^1.0.0" - proc-log: "npm:^5.0.0" - promise-retry: "npm:^2.0.1" - ssri: "npm:^12.0.0" - checksum: 10c0/c40efb5e5296e7feb8e37155bde8eb70bc57d731b1f7d90e35a092fde403d7697c56fb49334d92d330d6f1ca29a98142036d6480a12681133a0a1453164cb2f0 - languageName: node - linkType: hard - -"math-intrinsics@npm:^1.1.0": - version: 1.1.0 - resolution: "math-intrinsics@npm:1.1.0" - checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f - languageName: node - linkType: hard - -"media-typer@npm:0.3.0": - version: 0.3.0 - resolution: "media-typer@npm:0.3.0" - checksum: 10c0/d160f31246907e79fed398470285f21bafb45a62869dc469b1c8877f3f064f5eabc4bcc122f9479b8b605bc5c76187d7871cf84c4ee3ecd3e487da1993279928 - languageName: node - linkType: hard - -"memory-pager@npm:^1.0.2": - version: 1.5.0 - resolution: "memory-pager@npm:1.5.0" - checksum: 10c0/2596e80c99fee24f05bd8a20cde2ee899012c996f4ec361ac76ed6f009f34149d733ac6f76880106ccd6a66d062ad439357578d383d429df66ba1278f68806e9 - languageName: node - linkType: hard - -"merge-descriptors@npm:1.0.3": - version: 1.0.3 - resolution: "merge-descriptors@npm:1.0.3" - checksum: 10c0/866b7094afd9293b5ea5dcd82d71f80e51514bed33b4c4e9f516795dc366612a4cbb4dc94356e943a8a6914889a914530badff27f397191b9b75cda20b6bae93 - languageName: node - linkType: hard - -"methods@npm:~1.1.2": - version: 1.1.2 - resolution: "methods@npm:1.1.2" - checksum: 10c0/bdf7cc72ff0a33e3eede03708c08983c4d7a173f91348b4b1e4f47d4cdbf734433ad971e7d1e8c77247d9e5cd8adb81ea4c67b0a2db526b758b2233d7814b8b2 - languageName: node - linkType: hard - -"mime-db@npm:1.52.0": - version: 1.52.0 - resolution: "mime-db@npm:1.52.0" - checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa - languageName: node - linkType: hard - -"mime-types@npm:^2.1.12, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": - version: 2.1.35 - resolution: "mime-types@npm:2.1.35" - dependencies: - mime-db: "npm:1.52.0" - checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 - languageName: node - linkType: hard - -"mime@npm:1.6.0": - version: 1.6.0 - resolution: "mime@npm:1.6.0" - bin: - mime: cli.js - checksum: 10c0/b92cd0adc44888c7135a185bfd0dddc42c32606401c72896a842ae15da71eb88858f17669af41e498b463cd7eb998f7b48939a25b08374c7924a9c8a6f8a81b0 - languageName: node - linkType: hard - -"minimatch@npm:^3.1.2": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" - dependencies: - brace-expansion: "npm:^1.1.7" - checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 - languageName: node - linkType: hard - -"minimatch@npm:^9.0.4": - version: 9.0.5 - resolution: "minimatch@npm:9.0.5" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed - languageName: node - linkType: hard - -"minipass-collect@npm:^2.0.1": - version: 2.0.1 - resolution: "minipass-collect@npm:2.0.1" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e - languageName: node - linkType: hard - -"minipass-fetch@npm:^4.0.0": - version: 4.0.1 - resolution: "minipass-fetch@npm:4.0.1" - dependencies: - encoding: "npm:^0.1.13" - minipass: "npm:^7.0.3" - minipass-sized: "npm:^1.0.3" - minizlib: "npm:^3.0.1" - dependenciesMeta: - encoding: - optional: true - checksum: 10c0/a3147b2efe8e078c9bf9d024a0059339c5a09c5b1dded6900a219c218cc8b1b78510b62dae556b507304af226b18c3f1aeb1d48660283602d5b6586c399eed5c - languageName: node - linkType: hard - -"minipass-flush@npm:^1.0.5": - version: 1.0.5 - resolution: "minipass-flush@npm:1.0.5" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd - languageName: node - linkType: hard - -"minipass-pipeline@npm:^1.2.4": - version: 1.2.4 - resolution: "minipass-pipeline@npm:1.2.4" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 - languageName: node - linkType: hard - -"minipass-sized@npm:^1.0.3": - version: 1.0.3 - resolution: "minipass-sized@npm:1.0.3" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb - languageName: node - linkType: hard - -"minipass@npm:^3.0.0": - version: 3.3.6 - resolution: "minipass@npm:3.3.6" - dependencies: - yallist: "npm:^4.0.0" - checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c - languageName: node - linkType: hard - -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": - version: 7.1.2 - resolution: "minipass@npm:7.1.2" - checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 - languageName: node - linkType: hard - -"minizlib@npm:^3.0.1": - version: 3.0.2 - resolution: "minizlib@npm:3.0.2" - dependencies: - minipass: "npm:^7.1.2" - checksum: 10c0/9f3bd35e41d40d02469cb30470c55ccc21cae0db40e08d1d0b1dff01cc8cc89a6f78e9c5d2b7c844e485ec0a8abc2238111213fdc5b2038e6d1012eacf316f78 - languageName: node - linkType: hard - -"mkdirp@npm:^3.0.1": - version: 3.0.1 - resolution: "mkdirp@npm:3.0.1" - bin: - mkdirp: dist/cjs/src/bin.js - checksum: 10c0/9f2b975e9246351f5e3a40dcfac99fcd0baa31fbfab615fe059fb11e51f10e4803c63de1f384c54d656e4db31d000e4767e9ef076a22e12a641357602e31d57d - languageName: node - linkType: hard - -"mongodb@npm:3.7.4": - version: 3.7.4 - resolution: "mongodb@npm:3.7.4" - dependencies: - bl: "npm:^2.2.1" - bson: "npm:^1.1.4" - denque: "npm:^1.4.1" - optional-require: "npm:^1.1.8" - safe-buffer: "npm:^5.1.2" - saslprep: "npm:^1.0.0" - dependenciesMeta: - saslprep: - optional: true - peerDependenciesMeta: - aws4: - optional: true - bson-ext: - optional: true - kerberos: - optional: true - mongodb-client-encryption: - optional: true - mongodb-extjson: - optional: true - snappy: - optional: true - checksum: 10c0/747da737df701344f804f18f2fe833873af2b5bcdb9c07f85e2c53c465f6dd6a0727860dde4ee4fdff0635040c88c9c1fea2a48c2afd3e89a5cbda8d7307056e - languageName: node - linkType: hard - -"mongoose-legacy-pluralize@npm:1.0.2": - version: 1.0.2 - resolution: "mongoose-legacy-pluralize@npm:1.0.2" - peerDependencies: - mongoose: "*" - checksum: 10c0/d09f90f60ad83bb99c3d9974e6055433fd4f324de79688f811e4f23c878cdd266a44dd4387b644e5fef1ef7871c5a7038546ff3dc335ba5935e6060e7c60a6fb - languageName: node - linkType: hard - -"mongoose@npm:^5.9.18": - version: 5.13.23 - resolution: "mongoose@npm:5.13.23" - dependencies: - "@types/bson": "npm:1.x || 4.0.x" - "@types/mongodb": "npm:^3.5.27" - bson: "npm:^1.1.4" - kareem: "npm:2.3.2" - mongodb: "npm:3.7.4" - mongoose-legacy-pluralize: "npm:1.0.2" - mpath: "npm:0.8.4" - mquery: "npm:3.2.5" - ms: "npm:2.1.2" - optional-require: "npm:1.0.x" - regexp-clone: "npm:1.0.0" - safe-buffer: "npm:5.2.1" - sift: "npm:13.5.2" - sliced: "npm:1.0.1" - checksum: 10c0/d2babdffb27676a370e2dd3cfba487ec32e21fe760ec67490ee56e6cee283ce364d11f8c1d0725779720eef85cac81760a9146ddc311e6f61add17b7a705b9d5 - languageName: node - linkType: hard - -"mpath@npm:0.8.4": - version: 0.8.4 - resolution: "mpath@npm:0.8.4" - checksum: 10c0/ebec4657d01c3b51e63dac31a0d21c14067b000f5f8a9240619f67f0dea1d64da972209da11ceff13f7ecb0b76be61ea87313ba3c5bf5cd3f6c506b0f977793f - languageName: node - linkType: hard - -"mquery@npm:3.2.5": - version: 3.2.5 - resolution: "mquery@npm:3.2.5" - dependencies: - bluebird: "npm:3.5.1" - debug: "npm:3.1.0" - regexp-clone: "npm:^1.0.0" - safe-buffer: "npm:5.1.2" - sliced: "npm:1.0.1" - checksum: 10c0/a01d0aea9d64cde449790bbb7939547f97e54597486909a751845aab916faf518d10f701163ea95148225e744d3d0e5f6ca3798e5889a6f64e86664c4b2de4ef - languageName: node - linkType: hard - -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 10c0/f8fda810b39fd7255bbdc451c46286e549794fcc700dc9cd1d25658bbc4dc2563a5de6fe7c60f798a16a60c6ceb53f033cb353f493f0cf63e5199b702943159d - languageName: node - linkType: hard - -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc - languageName: node - linkType: hard - -"ms@npm:2.1.3, ms@npm:^2.1.1, ms@npm:^2.1.3": - version: 2.1.3 - resolution: "ms@npm:2.1.3" - checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 - languageName: node - linkType: hard - -"negotiator@npm:0.6.3": - version: 0.6.3 - resolution: "negotiator@npm:0.6.3" - checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 - languageName: node - linkType: hard - -"negotiator@npm:^1.0.0": - version: 1.0.0 - resolution: "negotiator@npm:1.0.0" - checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b - languageName: node - linkType: hard - -"node-gyp@npm:latest": - version: 11.2.0 - resolution: "node-gyp@npm:11.2.0" - dependencies: - env-paths: "npm:^2.2.0" - exponential-backoff: "npm:^3.1.1" - graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^14.0.3" - nopt: "npm:^8.0.0" - proc-log: "npm:^5.0.0" - semver: "npm:^7.3.5" - tar: "npm:^7.4.3" - tinyglobby: "npm:^0.2.12" - which: "npm:^5.0.0" - bin: - node-gyp: bin/node-gyp.js - checksum: 10c0/bd8d8c76b06be761239b0c8680f655f6a6e90b48e44d43415b11c16f7e8c15be346fba0cbf71588c7cdfb52c419d928a7d3db353afc1d952d19756237d8f10b9 - languageName: node - linkType: hard - -"nodemon@npm:^2.0.4": - version: 2.0.22 - resolution: "nodemon@npm:2.0.22" - dependencies: - chokidar: "npm:^3.5.2" - debug: "npm:^3.2.7" - ignore-by-default: "npm:^1.0.1" - minimatch: "npm:^3.1.2" - pstree.remy: "npm:^1.1.8" - semver: "npm:^5.7.1" - simple-update-notifier: "npm:^1.0.7" - supports-color: "npm:^5.5.0" - touch: "npm:^3.1.0" - undefsafe: "npm:^2.0.5" - bin: - nodemon: bin/nodemon.js - checksum: 10c0/37e960b995b66e6d9e3b0e435ecc07a45200c4c566c4820a4deb6e7cc234b305e076a8ff0b4dc9c01ee690c663ae82a217d60c591dcbbcd4af1e3a7d0ad2b2c6 - languageName: node - linkType: hard - -"nopt@npm:^8.0.0": - version: 8.1.0 - resolution: "nopt@npm:8.1.0" - dependencies: - abbrev: "npm:^3.0.0" - bin: - nopt: bin/nopt.js - checksum: 10c0/62e9ea70c7a3eb91d162d2c706b6606c041e4e7b547cbbb48f8b3695af457dd6479904d7ace600856bf923dd8d1ed0696f06195c8c20f02ac87c1da0e1d315ef - languageName: node - linkType: hard - -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 - languageName: node - linkType: hard - -"nwsapi@npm:^2.2.0": - version: 2.2.20 - resolution: "nwsapi@npm:2.2.20" - checksum: 10c0/07f4dafa3186aef7c007863e90acd4342a34ba9d44b22f14f644fdb311f6086887e21c2fc15efaa826c2bc39ab2bc841364a1a630e7c87e0cb723ba59d729297 - languageName: node - linkType: hard - -"object-inspect@npm:^1.13.3": - version: 1.13.4 - resolution: "object-inspect@npm:1.13.4" - checksum: 10c0/d7f8711e803b96ea3191c745d6f8056ce1f2496e530e6a19a0e92d89b0fa3c76d910c31f0aa270432db6bd3b2f85500a376a83aaba849a8d518c8845b3211692 - languageName: node - linkType: hard - -"on-finished@npm:2.4.1": - version: 2.4.1 - resolution: "on-finished@npm:2.4.1" - dependencies: - ee-first: "npm:1.1.1" - checksum: 10c0/46fb11b9063782f2d9968863d9cbba33d77aa13c17f895f56129c274318b86500b22af3a160fe9995aa41317efcd22941b6eba747f718ced08d9a73afdb087b4 - languageName: node - linkType: hard - -"optional-require@npm:1.0.x": - version: 1.0.3 - resolution: "optional-require@npm:1.0.3" - checksum: 10c0/4adff64b552303a7abb8cc48bfa19e1890f4c05f4ba46d10a0722ee2486a4ebc208484a019f76b7450c7d1fd834f5c09d33c22c823da8e7837347de36b2cf0b2 - languageName: node - linkType: hard - -"optional-require@npm:^1.1.8": - version: 1.1.8 - resolution: "optional-require@npm:1.1.8" - dependencies: - require-at: "npm:^1.0.6" - checksum: 10c0/cfb827331277d562b2a6f3c37c6f38da458b0750ec60eff3032385ae8121a7b6855feed272c5c95793661d17bd9418110b81239f284dd702891ec3d91273dc95 - languageName: node - linkType: hard - -"p-map@npm:^7.0.2": - version: 7.0.3 - resolution: "p-map@npm:7.0.3" - checksum: 10c0/46091610da2b38ce47bcd1d8b4835a6fa4e832848a6682cf1652bc93915770f4617afc844c10a77d1b3e56d2472bb2d5622353fa3ead01a7f42b04fc8e744a5c - languageName: node - linkType: hard - -"package-json-from-dist@npm:^1.0.0": - version: 1.0.1 - resolution: "package-json-from-dist@npm:1.0.1" - checksum: 10c0/62ba2785eb655fec084a257af34dbe24292ab74516d6aecef97ef72d4897310bc6898f6c85b5cd22770eaa1ce60d55a0230e150fb6a966e3ecd6c511e23d164b - languageName: node - linkType: hard - -"parse5@npm:6.0.1": - version: 6.0.1 - resolution: "parse5@npm:6.0.1" - checksum: 10c0/595821edc094ecbcfb9ddcb46a3e1fe3a718540f8320eff08b8cf6742a5114cce2d46d45f95c26191c11b184dcaf4e2960abcd9c5ed9eb9393ac9a37efcfdecb - languageName: node - linkType: hard - -"parseurl@npm:~1.3.3": - version: 1.3.3 - resolution: "parseurl@npm:1.3.3" - checksum: 10c0/90dd4760d6f6174adb9f20cf0965ae12e23879b5f5464f38e92fce8073354341e4b3b76fa3d878351efe7d01e617121955284cfd002ab087fba1a0726ec0b4f5 - languageName: node - linkType: hard - -"path-key@npm:^3.1.0": - version: 3.1.1 - resolution: "path-key@npm:3.1.1" - checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c - languageName: node - linkType: hard - -"path-scurry@npm:^1.11.1": - version: 1.11.1 - resolution: "path-scurry@npm:1.11.1" - dependencies: - lru-cache: "npm:^10.2.0" - minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" - checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d - languageName: node - linkType: hard - -"path-to-regexp@npm:0.1.12": - version: 0.1.12 - resolution: "path-to-regexp@npm:0.1.12" - checksum: 10c0/1c6ff10ca169b773f3bba943bbc6a07182e332464704572962d277b900aeee81ac6aa5d060ff9e01149636c30b1f63af6e69dd7786ba6e0ddb39d4dee1f0645b - languageName: node - linkType: hard - -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1": - version: 2.3.1 - resolution: "picomatch@npm:2.3.1" - checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be - languageName: node - linkType: hard - -"picomatch@npm:^4.0.2": - version: 4.0.2 - resolution: "picomatch@npm:4.0.2" - checksum: 10c0/7c51f3ad2bb42c776f49ebf964c644958158be30d0a510efd5a395e8d49cb5acfed5b82c0c5b365523ce18e6ab85013c9ebe574f60305892ec3fa8eee8304ccc - languageName: node - linkType: hard - -"proc-log@npm:^5.0.0": - version: 5.0.0 - resolution: "proc-log@npm:5.0.0" - checksum: 10c0/bbe5edb944b0ad63387a1d5b1911ae93e05ce8d0f60de1035b218cdcceedfe39dbd2c697853355b70f1a090f8f58fe90da487c85216bf9671f9499d1a897e9e3 - languageName: node - linkType: hard - -"process-nextick-args@npm:~2.0.0": - version: 2.0.1 - resolution: "process-nextick-args@npm:2.0.1" - checksum: 10c0/bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367 - languageName: node - linkType: hard - -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: "npm:^2.0.2" - retry: "npm:^0.12.0" - checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 - languageName: node - linkType: hard - -"proxy-addr@npm:~2.0.7": - version: 2.0.7 - resolution: "proxy-addr@npm:2.0.7" - dependencies: - forwarded: "npm:0.2.0" - ipaddr.js: "npm:1.9.1" - checksum: 10c0/c3eed999781a35f7fd935f398b6d8920b6fb00bbc14287bc6de78128ccc1a02c89b95b56742bf7cf0362cc333c61d138532049c7dedc7a328ef13343eff81210 - languageName: node - linkType: hard - -"psl@npm:^1.1.33": - version: 1.15.0 - resolution: "psl@npm:1.15.0" - dependencies: - punycode: "npm:^2.3.1" - checksum: 10c0/d8d45a99e4ca62ca12ac3c373e63d80d2368d38892daa40cfddaa1eb908be98cd549ac059783ef3a56cfd96d57ae8e2fd9ae53d1378d90d42bc661ff924e102a - languageName: node - linkType: hard - -"pstree.remy@npm:^1.1.8": - version: 1.1.8 - resolution: "pstree.remy@npm:1.1.8" - checksum: 10c0/30f78c88ce6393cb3f7834216cb6e282eb83c92ccb227430d4590298ab2811bc4a4745f850a27c5178e79a8f3e316591de0fec87abc19da648c2b3c6eb766d14 - languageName: node - linkType: hard - -"punycode@npm:^2.1.1, punycode@npm:^2.3.1": - version: 2.3.1 - resolution: "punycode@npm:2.3.1" - checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 - languageName: node - linkType: hard - -"qs@npm:6.13.0": - version: 6.13.0 - resolution: "qs@npm:6.13.0" - dependencies: - side-channel: "npm:^1.0.6" - checksum: 10c0/62372cdeec24dc83a9fb240b7533c0fdcf0c5f7e0b83343edd7310f0ab4c8205a5e7c56406531f2e47e1b4878a3821d652be4192c841de5b032ca83619d8f860 - languageName: node - linkType: hard - -"querystringify@npm:^2.1.1": - version: 2.2.0 - resolution: "querystringify@npm:2.2.0" - checksum: 10c0/3258bc3dbdf322ff2663619afe5947c7926a6ef5fb78ad7d384602974c467fadfc8272af44f5eb8cddd0d011aae8fabf3a929a8eee4b86edcc0a21e6bd10f9aa - languageName: node - linkType: hard - -"range-parser@npm:~1.2.1": - version: 1.2.1 - resolution: "range-parser@npm:1.2.1" - checksum: 10c0/96c032ac2475c8027b7a4e9fe22dc0dfe0f6d90b85e496e0f016fbdb99d6d066de0112e680805075bd989905e2123b3b3d002765149294dce0c1f7f01fcc2ea0 - languageName: node - linkType: hard - -"raw-body@npm:2.5.2": - version: 2.5.2 - resolution: "raw-body@npm:2.5.2" - dependencies: - bytes: "npm:3.1.2" - http-errors: "npm:2.0.0" - iconv-lite: "npm:0.4.24" - unpipe: "npm:1.0.0" - checksum: 10c0/b201c4b66049369a60e766318caff5cb3cc5a900efd89bdac431463822d976ad0670912c931fdbdcf5543207daf6f6833bca57aa116e1661d2ea91e12ca692c4 - languageName: node - linkType: hard - -"readable-stream@npm:^2.3.5": - version: 2.3.8 - resolution: "readable-stream@npm:2.3.8" - dependencies: - core-util-is: "npm:~1.0.0" - inherits: "npm:~2.0.3" - isarray: "npm:~1.0.0" - process-nextick-args: "npm:~2.0.0" - safe-buffer: "npm:~5.1.1" - string_decoder: "npm:~1.1.1" - util-deprecate: "npm:~1.0.1" - checksum: 10c0/7efdb01f3853bc35ac62ea25493567bf588773213f5f4a79f9c365e1ad13bab845ac0dae7bc946270dc40c3929483228415e92a3fc600cc7e4548992f41ee3fa - languageName: node - linkType: hard - -"readdirp@npm:~3.6.0": - version: 3.6.0 - resolution: "readdirp@npm:3.6.0" - dependencies: - picomatch: "npm:^2.2.1" - checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b - languageName: node - linkType: hard - -"regexp-clone@npm:1.0.0, regexp-clone@npm:^1.0.0": - version: 1.0.0 - resolution: "regexp-clone@npm:1.0.0" - checksum: 10c0/5fc477a6d99d37d3360e146d6cc8b8502d1c3b4a9f7a3752f2a2815858d2057611348180778ccb98e8a53569e05d8720046d238a1e6cfc63e10cae3b0eb42ad2 - languageName: node - linkType: hard - -"require-at@npm:^1.0.6": - version: 1.0.6 - resolution: "require-at@npm:1.0.6" - checksum: 10c0/2497ef4e9630943337b3d3f37d9dc7509030a279dcf5614a06b07819c83ce7d811b9a4dba058a914cf8ee1ad9e8162c53af29e4004f3a450206a4e06b95e1acd - languageName: node - linkType: hard - -"requires-port@npm:^1.0.0": - version: 1.0.0 - resolution: "requires-port@npm:1.0.0" - checksum: 10c0/b2bfdd09db16c082c4326e573a82c0771daaf7b53b9ce8ad60ea46aa6e30aaf475fe9b164800b89f93b748d2c234d8abff945d2551ba47bf5698e04cd7713267 - languageName: node - linkType: hard - -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe - languageName: node - linkType: hard - -"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 - languageName: node - linkType: hard - -"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2": - version: 5.2.1 - resolution: "safe-buffer@npm:5.2.1" - checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 - languageName: node - linkType: hard - -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": - version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2" - checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 - languageName: node - linkType: hard - -"saslprep@npm:^1.0.0": - version: 1.0.3 - resolution: "saslprep@npm:1.0.3" - dependencies: - sparse-bitfield: "npm:^3.0.3" - checksum: 10c0/7dea5b2c0cb507132d4a6e1a65082b1118b435f9bb5b13665e71e581875dc574d4fb26dd0246d72daa1d7a453b131043aa0f8c1a8813ca2d4b577335156f99ac - languageName: node - linkType: hard - -"saxes@npm:^5.0.1": - version: 5.0.1 - resolution: "saxes@npm:5.0.1" - dependencies: - xmlchars: "npm:^2.2.0" - checksum: 10c0/b7476c41dbe1c3a89907d2546fecfba234de5e66743ef914cde2603f47b19bed09732ab51b528ad0f98b958369d8be72b6f5af5c9cfad69972a73d061f0b3952 - languageName: node - linkType: hard - -"semver@npm:^5.6.0, semver@npm:^5.7.1": - version: 5.7.2 - resolution: "semver@npm:5.7.2" - bin: - semver: bin/semver - checksum: 10c0/e4cf10f86f168db772ae95d86ba65b3fd6c5967c94d97c708ccb463b778c2ee53b914cd7167620950fc07faf5a564e6efe903836639e512a1aa15fbc9667fa25 - languageName: node - linkType: hard - -"semver@npm:^7.3.5": - version: 7.7.1 - resolution: "semver@npm:7.7.1" - bin: - semver: bin/semver.js - checksum: 10c0/fd603a6fb9c399c6054015433051bdbe7b99a940a8fb44b85c2b524c4004b023d7928d47cb22154f8d054ea7ee8597f586605e05b52047f048278e4ac56ae958 - languageName: node - linkType: hard - -"semver@npm:~7.0.0": - version: 7.0.0 - resolution: "semver@npm:7.0.0" - bin: - semver: bin/semver.js - checksum: 10c0/7fd341680a967a0abfd66f3a7d36ba44e52ff5d3e799e9a6cdb01a68160b64ef09be82b4af05459effeecdd836f002c2462555d2821cd890dfdfe36a0d9f56a5 - languageName: node - linkType: hard - -"send@npm:0.19.0": - version: 0.19.0 - resolution: "send@npm:0.19.0" - dependencies: - debug: "npm:2.6.9" - depd: "npm:2.0.0" - destroy: "npm:1.2.0" - encodeurl: "npm:~1.0.2" - escape-html: "npm:~1.0.3" - etag: "npm:~1.8.1" - fresh: "npm:0.5.2" - http-errors: "npm:2.0.0" - mime: "npm:1.6.0" - ms: "npm:2.1.3" - on-finished: "npm:2.4.1" - range-parser: "npm:~1.2.1" - statuses: "npm:2.0.1" - checksum: 10c0/ea3f8a67a8f0be3d6bf9080f0baed6d2c51d11d4f7b4470de96a5029c598a7011c497511ccc28968b70ef05508675cebff27da9151dd2ceadd60be4e6cf845e3 - languageName: node - linkType: hard - -"serve-static@npm:1.16.2": - version: 1.16.2 - resolution: "serve-static@npm:1.16.2" - dependencies: - encodeurl: "npm:~2.0.0" - escape-html: "npm:~1.0.3" - parseurl: "npm:~1.3.3" - send: "npm:0.19.0" - checksum: 10c0/528fff6f5e12d0c5a391229ad893910709bc51b5705962b09404a1d813857578149b8815f35d3ee5752f44cd378d0f31669d4b1d7e2d11f41e08283d5134bd1f - languageName: node - linkType: hard - -"setprototypeof@npm:1.2.0": - version: 1.2.0 - resolution: "setprototypeof@npm:1.2.0" - checksum: 10c0/68733173026766fa0d9ecaeb07f0483f4c2dc70ca376b3b7c40b7cda909f94b0918f6c5ad5ce27a9160bdfb475efaa9d5e705a11d8eaae18f9835d20976028bc - languageName: node - linkType: hard - -"shebang-command@npm:^2.0.0": - version: 2.0.0 - resolution: "shebang-command@npm:2.0.0" - dependencies: - shebang-regex: "npm:^3.0.0" - checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e - languageName: node - linkType: hard - -"shebang-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "shebang-regex@npm:3.0.0" - checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 - languageName: node - linkType: hard - -"side-channel-list@npm:^1.0.0": - version: 1.0.0 - resolution: "side-channel-list@npm:1.0.0" - dependencies: - es-errors: "npm:^1.3.0" - object-inspect: "npm:^1.13.3" - checksum: 10c0/644f4ac893456c9490ff388bf78aea9d333d5e5bfc64cfb84be8f04bf31ddc111a8d4b83b85d7e7e8a7b845bc185a9ad02c052d20e086983cf59f0be517d9b3d - languageName: node - linkType: hard - -"side-channel-map@npm:^1.0.1": - version: 1.0.1 - resolution: "side-channel-map@npm:1.0.1" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.5" - object-inspect: "npm:^1.13.3" - checksum: 10c0/010584e6444dd8a20b85bc926d934424bd809e1a3af941cace229f7fdcb751aada0fb7164f60c2e22292b7fa3c0ff0bce237081fd4cdbc80de1dc68e95430672 - languageName: node - linkType: hard - -"side-channel-weakmap@npm:^1.0.2": - version: 1.0.2 - resolution: "side-channel-weakmap@npm:1.0.2" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.5" - object-inspect: "npm:^1.13.3" - side-channel-map: "npm:^1.0.1" - checksum: 10c0/71362709ac233e08807ccd980101c3e2d7efe849edc51455030327b059f6c4d292c237f94dc0685031dd11c07dd17a68afde235d6cf2102d949567f98ab58185 - languageName: node - linkType: hard - -"side-channel@npm:^1.0.6": - version: 1.1.0 - resolution: "side-channel@npm:1.1.0" - dependencies: - es-errors: "npm:^1.3.0" - object-inspect: "npm:^1.13.3" - side-channel-list: "npm:^1.0.0" - side-channel-map: "npm:^1.0.1" - side-channel-weakmap: "npm:^1.0.2" - checksum: 10c0/cb20dad41eb032e6c24c0982e1e5a24963a28aa6122b4f05b3f3d6bf8ae7fd5474ef382c8f54a6a3ab86e0cac4d41a23bd64ede3970e5bfb50326ba02a7996e6 - languageName: node - linkType: hard - -"sift@npm:13.5.2": - version: 13.5.2 - resolution: "sift@npm:13.5.2" - checksum: 10c0/1a34b2a5275212319614cfd4cf5b76a543d8b48f5564eaae7442b0efd3c4e3125b89d60e95ed7ccf947820ecfddeb3fc354f75b9413fce21620215c716499478 - languageName: node - linkType: hard - -"signal-exit@npm:^4.0.1": - version: 4.1.0 - resolution: "signal-exit@npm:4.1.0" - checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 - languageName: node - linkType: hard - -"simple-update-notifier@npm:^1.0.7": - version: 1.1.0 - resolution: "simple-update-notifier@npm:1.1.0" - dependencies: - semver: "npm:~7.0.0" - checksum: 10c0/3cbbbc71a5d9a2924f0e3f42fbf3cbe1854bfe142203456b00d5233bdbbdeb5091b8067cd34fb00f81dbfbc29fc30dbb6e026b3d58ea0551e3f26c0e64082092 - languageName: node - linkType: hard - -"sliced@npm:1.0.1": - version: 1.0.1 - resolution: "sliced@npm:1.0.1" - checksum: 10c0/42f93fdc87b79492704d6af45efaafe407384812467514f6763ec823fedb32f7cbe8addd85bfebc6eff094f79fab899225b82690ab57c62d1959c4f6bbc6f5b1 - languageName: node - linkType: hard - -"smart-buffer@npm:^4.2.0": - version: 4.2.0 - resolution: "smart-buffer@npm:4.2.0" - checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 - languageName: node - linkType: hard - -"socks-proxy-agent@npm:^8.0.3": - version: 8.0.5 - resolution: "socks-proxy-agent@npm:8.0.5" - dependencies: - agent-base: "npm:^7.1.2" - debug: "npm:^4.3.4" - socks: "npm:^2.8.3" - checksum: 10c0/5d2c6cecba6821389aabf18728325730504bf9bb1d9e342e7987a5d13badd7a98838cc9a55b8ed3cb866ad37cc23e1086f09c4d72d93105ce9dfe76330e9d2a6 - languageName: node - linkType: hard - -"socks@npm:^2.8.3": - version: 2.8.4 - resolution: "socks@npm:2.8.4" - dependencies: - ip-address: "npm:^9.0.5" - smart-buffer: "npm:^4.2.0" - checksum: 10c0/00c3271e233ccf1fb83a3dd2060b94cc37817e0f797a93c560b9a7a86c4a0ec2961fb31263bdd24a3c28945e24868b5f063cd98744171d9e942c513454b50ae5 - languageName: node - linkType: hard - -"source-map@npm:~0.6.1": - version: 0.6.1 - resolution: "source-map@npm:0.6.1" - checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 - languageName: node - linkType: hard - -"sparse-bitfield@npm:^3.0.3": - version: 3.0.3 - resolution: "sparse-bitfield@npm:3.0.3" - dependencies: - memory-pager: "npm:^1.0.2" - checksum: 10c0/248c6ff7b5e354735e1daac4059222a29c9d291dfcf265daf675d13515eeaac454cfcccd687c8d134f86698b39abd7ad4d7434f7272dd6f8e41a00f21aae4194 - languageName: node - linkType: hard - -"sprintf-js@npm:^1.1.3": - version: 1.1.3 - resolution: "sprintf-js@npm:1.1.3" - checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec - languageName: node - linkType: hard - -"ssri@npm:^12.0.0": - version: 12.0.0 - resolution: "ssri@npm:12.0.0" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10c0/caddd5f544b2006e88fa6b0124d8d7b28208b83c72d7672d5ade44d794525d23b540f3396108c4eb9280dcb7c01f0bef50682f5b4b2c34291f7c5e211fd1417d - languageName: node - linkType: hard - -"statuses@npm:2.0.1": - version: 2.0.1 - resolution: "statuses@npm:2.0.1" - checksum: 10c0/34378b207a1620a24804ce8b5d230fea0c279f00b18a7209646d5d47e419d1cc23e7cbf33a25a1e51ac38973dc2ac2e1e9c647a8e481ef365f77668d72becfd0 - languageName: node - linkType: hard - -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0": - version: 4.2.3 - resolution: "string-width@npm:4.2.3" - dependencies: - emoji-regex: "npm:^8.0.0" - is-fullwidth-code-point: "npm:^3.0.0" - strip-ansi: "npm:^6.0.1" - checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b - languageName: node - linkType: hard - -"string-width@npm:^5.0.1, string-width@npm:^5.1.2": - version: 5.1.2 - resolution: "string-width@npm:5.1.2" - dependencies: - eastasianwidth: "npm:^0.2.0" - emoji-regex: "npm:^9.2.2" - strip-ansi: "npm:^7.0.1" - checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca - languageName: node - linkType: hard - -"string_decoder@npm:~1.1.1": - version: 1.1.1 - resolution: "string_decoder@npm:1.1.1" - dependencies: - safe-buffer: "npm:~5.1.0" - checksum: 10c0/b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e - languageName: node - linkType: hard - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: "npm:^5.0.1" - checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 - languageName: node - linkType: hard - -"strip-ansi@npm:^7.0.1": - version: 7.1.0 - resolution: "strip-ansi@npm:7.1.0" - dependencies: - ansi-regex: "npm:^6.0.1" - checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 - languageName: node - linkType: hard - -"supports-color@npm:^5.5.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: "npm:^3.0.0" - checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 - languageName: node - linkType: hard - -"symbol-tree@npm:^3.2.4": - version: 3.2.4 - resolution: "symbol-tree@npm:3.2.4" - checksum: 10c0/dfbe201ae09ac6053d163578778c53aa860a784147ecf95705de0cd23f42c851e1be7889241495e95c37cabb058edb1052f141387bef68f705afc8f9dd358509 - languageName: node - linkType: hard - -"tar@npm:^7.4.3": - version: 7.4.3 - resolution: "tar@npm:7.4.3" - dependencies: - "@isaacs/fs-minipass": "npm:^4.0.0" - chownr: "npm:^3.0.0" - minipass: "npm:^7.1.2" - minizlib: "npm:^3.0.1" - mkdirp: "npm:^3.0.1" - yallist: "npm:^5.0.0" - checksum: 10c0/d4679609bb2a9b48eeaf84632b6d844128d2412b95b6de07d53d8ee8baf4ca0857c9331dfa510390a0727b550fd543d4d1a10995ad86cdf078423fbb8d99831d - languageName: node - linkType: hard - -"tinyglobby@npm:^0.2.12": - version: 0.2.13 - resolution: "tinyglobby@npm:0.2.13" - dependencies: - fdir: "npm:^6.4.4" - picomatch: "npm:^4.0.2" - checksum: 10c0/ef07dfaa7b26936601d3f6d999f7928a4d1c6234c5eb36896bb88681947c0d459b7ebe797022400e555fe4b894db06e922b95d0ce60cb05fd827a0a66326b18c - languageName: node - linkType: hard - -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1" - dependencies: - is-number: "npm:^7.0.0" - checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 - languageName: node - linkType: hard - -"toidentifier@npm:1.0.1": - version: 1.0.1 - resolution: "toidentifier@npm:1.0.1" - checksum: 10c0/93937279934bd66cc3270016dd8d0afec14fb7c94a05c72dc57321f8bd1fa97e5bea6d1f7c89e728d077ca31ea125b78320a616a6c6cd0e6b9cb94cb864381c1 - languageName: node - linkType: hard - -"touch@npm:^3.1.0": - version: 3.1.1 - resolution: "touch@npm:3.1.1" - bin: - nodetouch: bin/nodetouch.js - checksum: 10c0/d2e4d269a42c846a22a29065b9af0b263de58effc85a1764bb7a2e8fc4b47700e9e2fcbd7eb1f5bffbb7c73d860f93600cef282b93ddac8f0b62321cb498b36e - languageName: node - linkType: hard - -"tough-cookie@npm:^4.0.0": - version: 4.1.4 - resolution: "tough-cookie@npm:4.1.4" - dependencies: - psl: "npm:^1.1.33" - punycode: "npm:^2.1.1" - universalify: "npm:^0.2.0" - url-parse: "npm:^1.5.3" - checksum: 10c0/aca7ff96054f367d53d1e813e62ceb7dd2eda25d7752058a74d64b7266fd07be75908f3753a32ccf866a2f997604b414cfb1916d6e7f69bc64d9d9939b0d6c45 - languageName: node - linkType: hard - -"tr46@npm:^3.0.0": - version: 3.0.0 - resolution: "tr46@npm:3.0.0" - dependencies: - punycode: "npm:^2.1.1" - checksum: 10c0/cdc47cad3a9d0b6cb293e39ccb1066695ae6fdd39b9e4f351b010835a1f8b4f3a6dc3a55e896b421371187f22b48d7dac1b693de4f6551bdef7b6ab6735dfe3b - languageName: node - linkType: hard - -"type-is@npm:~1.6.18": - version: 1.6.18 - resolution: "type-is@npm:1.6.18" - dependencies: - media-typer: "npm:0.3.0" - mime-types: "npm:~2.1.24" - checksum: 10c0/a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d - languageName: node - linkType: hard - -"undefsafe@npm:^2.0.5": - version: 2.0.5 - resolution: "undefsafe@npm:2.0.5" - checksum: 10c0/96c0466a5fbf395917974a921d5d4eee67bca4b30d3a31ce7e621e0228c479cf893e783a109af6e14329b52fe2f0cb4108665fad2b87b0018c0df6ac771261d5 - languageName: node - linkType: hard - -"undici-types@npm:~6.21.0": - version: 6.21.0 - resolution: "undici-types@npm:6.21.0" - checksum: 10c0/c01ed51829b10aa72fc3ce64b747f8e74ae9b60eafa19a7b46ef624403508a54c526ffab06a14a26b3120d055e1104d7abe7c9017e83ced038ea5cf52f8d5e04 - languageName: node - linkType: hard - -"unique-filename@npm:^4.0.0": - version: 4.0.0 - resolution: "unique-filename@npm:4.0.0" - dependencies: - unique-slug: "npm:^5.0.0" - checksum: 10c0/38ae681cceb1408ea0587b6b01e29b00eee3c84baee1e41fd5c16b9ed443b80fba90c40e0ba69627e30855570a34ba8b06702d4a35035d4b5e198bf5a64c9ddc - languageName: node - linkType: hard - -"unique-slug@npm:^5.0.0": - version: 5.0.0 - resolution: "unique-slug@npm:5.0.0" - dependencies: - imurmurhash: "npm:^0.1.4" - checksum: 10c0/d324c5a44887bd7e105ce800fcf7533d43f29c48757ac410afd42975de82cc38ea2035c0483f4de82d186691bf3208ef35c644f73aa2b1b20b8e651be5afd293 - languageName: node - linkType: hard - -"universalify@npm:^0.2.0": - version: 0.2.0 - resolution: "universalify@npm:0.2.0" - checksum: 10c0/cedbe4d4ca3967edf24c0800cfc161c5a15e240dac28e3ce575c689abc11f2c81ccc6532c8752af3b40f9120fb5e454abecd359e164f4f6aa44c29cd37e194fe - languageName: node - linkType: hard - -"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": - version: 1.0.0 - resolution: "unpipe@npm:1.0.0" - checksum: 10c0/193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c - languageName: node - linkType: hard - -"url-parse@npm:^1.5.3": - version: 1.5.10 - resolution: "url-parse@npm:1.5.10" - dependencies: - querystringify: "npm:^2.1.1" - requires-port: "npm:^1.0.0" - checksum: 10c0/bd5aa9389f896974beb851c112f63b466505a04b4807cea2e5a3b7092f6fbb75316f0491ea84e44f66fed55f1b440df5195d7e3a8203f64fcefa19d182f5be87 - languageName: node - linkType: hard - -"util-deprecate@npm:~1.0.1": - version: 1.0.2 - resolution: "util-deprecate@npm:1.0.2" - checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 - languageName: node - linkType: hard - -"utils-merge@npm:1.0.1": - version: 1.0.1 - resolution: "utils-merge@npm:1.0.1" - checksum: 10c0/02ba649de1b7ca8854bfe20a82f1dfbdda3fb57a22ab4a8972a63a34553cf7aa51bc9081cf7e001b035b88186d23689d69e71b510e610a09a4c66f68aa95b672 - languageName: node - linkType: hard - -"vary@npm:~1.1.2": - version: 1.1.2 - resolution: "vary@npm:1.1.2" - checksum: 10c0/f15d588d79f3675135ba783c91a4083dcd290a2a5be9fcb6514220a1634e23df116847b1cc51f66bfb0644cf9353b2abb7815ae499bab06e46dd33c1a6bf1f4f - languageName: node - linkType: hard - -"w3c-hr-time@npm:^1.0.2": - version: 1.0.2 - resolution: "w3c-hr-time@npm:1.0.2" - dependencies: - browser-process-hrtime: "npm:^1.0.0" - checksum: 10c0/7795b61fb51ce222414891eef8e6cb13240b62f64351b4474f99c84de2bc37d37dd0efa193f37391e9737097b881a111d1e003e3d7a9583693f8d5a858b02627 - languageName: node - linkType: hard - -"w3c-xmlserializer@npm:^3.0.0": - version: 3.0.0 - resolution: "w3c-xmlserializer@npm:3.0.0" - dependencies: - xml-name-validator: "npm:^4.0.0" - checksum: 10c0/8c455303ee2aec813f8688f4a1618b78d2fd90156a233c8ef60b853418a6b23f00fe86b680f7584f48d1c2348ee0677ad43be6fb6fcc032130cfda4de8c7188e - languageName: node - linkType: hard - -"webidl-conversions@npm:^7.0.0": - version: 7.0.0 - resolution: "webidl-conversions@npm:7.0.0" - checksum: 10c0/228d8cb6d270c23b0720cb2d95c579202db3aaf8f633b4e9dd94ec2000a04e7e6e43b76a94509cdb30479bd00ae253ab2371a2da9f81446cc313f89a4213a2c4 - languageName: node - linkType: hard - -"whatwg-encoding@npm:^2.0.0": - version: 2.0.0 - resolution: "whatwg-encoding@npm:2.0.0" - dependencies: - iconv-lite: "npm:0.6.3" - checksum: 10c0/91b90a49f312dc751496fd23a7e68981e62f33afe938b97281ad766235c4872fc4e66319f925c5e9001502b3040dd25a33b02a9c693b73a4cbbfdc4ad10c3e3e - languageName: node - linkType: hard - -"whatwg-mimetype@npm:^3.0.0": - version: 3.0.0 - resolution: "whatwg-mimetype@npm:3.0.0" - checksum: 10c0/323895a1cda29a5fb0b9ca82831d2c316309fede0365047c4c323073e3239067a304a09a1f4b123b9532641ab604203f33a1403b5ca6a62ef405bcd7a204080f - languageName: node - linkType: hard - -"whatwg-url@npm:^10.0.0": - version: 10.0.0 - resolution: "whatwg-url@npm:10.0.0" - dependencies: - tr46: "npm:^3.0.0" - webidl-conversions: "npm:^7.0.0" - checksum: 10c0/57f295913cbad3b8f7843168f30dde5ff0a875cbcf80f9cceb96276e296ba925f0455b2bfd55b6829eb3d770c6ebcac48abcc182826decb748c139dbe85d92e8 - languageName: node - linkType: hard - -"whatwg-url@npm:^11.0.0": - version: 11.0.0 - resolution: "whatwg-url@npm:11.0.0" - dependencies: - tr46: "npm:^3.0.0" - webidl-conversions: "npm:^7.0.0" - checksum: 10c0/f7ec264976d7c725e0696fcaf9ebe056e14422eacbf92fdbb4462034609cba7d0c85ffa1aab05e9309d42969bcf04632ba5ed3f3882c516d7b093053315bf4c1 - languageName: node - linkType: hard - -"which@npm:^2.0.1": - version: 2.0.2 - resolution: "which@npm:2.0.2" - dependencies: - isexe: "npm:^2.0.0" - bin: - node-which: ./bin/node-which - checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f - languageName: node - linkType: hard - -"which@npm:^5.0.0": - version: 5.0.0 - resolution: "which@npm:5.0.0" - dependencies: - isexe: "npm:^3.1.1" - bin: - node-which: bin/which.js - checksum: 10c0/e556e4cd8b7dbf5df52408c9a9dd5ac6518c8c5267c8953f5b0564073c66ed5bf9503b14d876d0e9c7844d4db9725fb0dcf45d6e911e17e26ab363dc3965ae7b - languageName: node - linkType: hard - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" - dependencies: - ansi-styles: "npm:^4.0.0" - string-width: "npm:^4.1.0" - strip-ansi: "npm:^6.0.0" - checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da - languageName: node - linkType: hard - -"wrap-ansi@npm:^8.1.0": - version: 8.1.0 - resolution: "wrap-ansi@npm:8.1.0" - dependencies: - ansi-styles: "npm:^6.1.0" - string-width: "npm:^5.0.1" - strip-ansi: "npm:^7.0.1" - checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 - languageName: node - linkType: hard - -"ws@npm:^8.2.3": - version: 8.18.1 - resolution: "ws@npm:8.18.1" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 10c0/e498965d6938c63058c4310ffb6967f07d4fa06789d3364829028af380d299fe05762961742971c764973dce3d1f6a2633fe8b2d9410c9b52e534b4b882a99fa - languageName: node - linkType: hard - -"xml-name-validator@npm:^4.0.0": - version: 4.0.0 - resolution: "xml-name-validator@npm:4.0.0" - checksum: 10c0/c1bfa219d64e56fee265b2bd31b2fcecefc063ee802da1e73bad1f21d7afd89b943c9e2c97af2942f60b1ad46f915a4c81e00039c7d398b53cf410e29d3c30bd - languageName: node - linkType: hard - -"xmlchars@npm:^2.2.0": - version: 2.2.0 - resolution: "xmlchars@npm:2.2.0" - checksum: 10c0/b64b535861a6f310c5d9bfa10834cf49127c71922c297da9d4d1b45eeaae40bf9b4363275876088fbe2667e5db028d2cd4f8ee72eed9bede840a67d57dab7593 - languageName: node - linkType: hard - -"yallist@npm:^4.0.0": - version: 4.0.0 - resolution: "yallist@npm:4.0.0" - checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a - languageName: node - linkType: hard - -"yallist@npm:^5.0.0": - version: 5.0.0 - resolution: "yallist@npm:5.0.0" - checksum: 10c0/a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416 - languageName: node - linkType: hard diff --git a/test/it/test_manifests/yarn-classic/package.json b/test/it/test_manifests/yarn-classic/package.json deleted file mode 100644 index 9d18fd62..00000000 --- a/test/it/test_manifests/yarn-classic/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "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", - "jsdom": "^19.0.0", - "jsonwebtoken": "^8.5.1", - "mongoose": "^5.9.18", - "nodemon": "^2.0.4", - "axios": "^0.19.0" - }, - "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" -} diff --git a/test/it/test_manifests/yarn-classic/yarn.lock b/test/it/test_manifests/yarn-classic/yarn.lock deleted file mode 100644 index 55a68999..00000000 --- a/test/it/test_manifests/yarn-classic/yarn.lock +++ /dev/null @@ -1,1447 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@hapi/address@^4.0.1": - version "4.1.0" - resolved "https://registry.npmjs.org/@hapi/address/-/address-4.1.0.tgz" - integrity sha512-SkszZf13HVgGmChdHo/PxchnSaCJ6cetVqLzyciudzZRT0jcOouIF/Q93mgjw8cce+D+4F4C1Z/WrfFN+O3VHQ== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@hapi/formula@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@hapi/formula/-/formula-2.0.0.tgz" - integrity sha512-V87P8fv7PI0LH7LiVi8Lkf3x+KCO7pQozXRssAHNXXL9L1K+uyu4XypLXwxqVDKgyQai6qj3/KteNlrqDx4W5A== - -"@hapi/hoek@^9.0.0": - version "9.3.0" - resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz" - integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== - -"@hapi/joi@^17.1.1": - version "17.1.1" - resolved "https://registry.npmjs.org/@hapi/joi/-/joi-17.1.1.tgz" - integrity sha512-p4DKeZAoeZW4g3u7ZeRo+vCDuSDgSvtsB/NpfjXEHTUjSeINAi/RrVOWiVQ1isaoLzMvFEhe8n5065mQq1AdQg== - dependencies: - "@hapi/address" "^4.0.1" - "@hapi/formula" "^2.0.0" - "@hapi/hoek" "^9.0.0" - "@hapi/pinpoint" "^2.0.0" - "@hapi/topo" "^5.0.0" - -"@hapi/pinpoint@^2.0.0": - version "2.0.1" - resolved "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.1.tgz" - integrity sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q== - -"@hapi/topo@^5.0.0": - version "5.1.0" - resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz" - integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== - dependencies: - "@hapi/hoek" "^9.0.0" - -"@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== - -"@types/bson@*": - version "4.2.4" - resolved "https://registry.npmjs.org/@types/bson/-/bson-4.2.4.tgz" - integrity sha512-SG23E3JDH6y8qF20a4G9txLuUl+TCV16gxsKyntmGiJez2V9VBJr1Y8WxTBBD6OgBVcvspQ7sxgdNMkXFVcaEA== - dependencies: - bson "*" - -"@types/bson@1.x || 4.0.x": - version "4.0.5" - resolved "https://registry.npmjs.org/@types/bson/-/bson-4.0.5.tgz" - integrity sha512-vVLwMUqhYJSQ/WKcE60eFqcyuWse5fGH+NMAXHuKrUAPoryq3ATxk5o4bgYNtg5aOM4APVg7Hnb3ASqUYG0PKg== - dependencies: - "@types/node" "*" - -"@types/mongodb@^3.5.27": - version "3.6.20" - resolved "https://registry.npmjs.org/@types/mongodb/-/mongodb-3.6.20.tgz" - integrity sha512-WcdpPJCakFzcWWD9juKoZbRtQxKIMYF/JIAM4JrNHrMcnJL6/a2NWjXxW7fo9hxboxxkg+icff8d7+WIEvKgYQ== - dependencies: - "@types/bson" "*" - "@types/node" "*" - -"@types/node@*": - version "22.14.1" - resolved "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz" - integrity sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw== - dependencies: - undici-types "~6.21.0" - -abab@^2.0.5, abab@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" - integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== - -accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.5.0: - version "8.14.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb" - integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -axios@^0.19.0: - version "0.19.2" - resolved "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz" - integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== - dependencies: - follow-redirects "1.5.10" - -backend@^0.0.0: - version "0.0.0" - resolved "https://registry.npmjs.org/backend/-/backend-0.0.0.tgz" - integrity sha512-Fq2aG5+zmmsKv2Dhm3ijAU5spnKOb5ldJlnnC/Vhk6n8In6zaq9eCPBMRiz2j94P/r84QEaBmtwh9tjaDPiQqg== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -bcryptjs@^2.4.3: - version "2.4.3" - resolved "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz" - integrity sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ== - -binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -bl@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz" - integrity sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g== - dependencies: - readable-stream "^2.3.5" - safe-buffer "^5.1.1" - -bluebird@3.5.1: - version "3.5.1" - resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz" - integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== - -body-parser@1.20.3: - version "1.20.3" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz" - integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== - 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" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@~3.0.2: - version "3.0.3" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -bson@*: - version "6.10.3" - resolved "https://registry.npmjs.org/bson/-/bson-6.10.3.tgz" - integrity sha512-MTxGsqgYTwfshYWTRdmZRC+M7FnG1b4y7RO7p2k3X24Wq0yv1m77Wsj0BzlPzd/IowgESfsruQCUToa7vbOpPQ== - -bson@^1.1.4: - version "1.1.6" - resolved "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz" - integrity sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg== - -buffer-equal-constant-time@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" - integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz" - integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - -call-bound@^1.0.2: - version "1.0.4" - resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz" - integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== - dependencies: - call-bind-apply-helpers "^1.0.2" - get-intrinsic "^1.3.0" - -chokidar@^3.5.2: - version "3.6.0" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4, content-type@~1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.7.1: - version "0.7.1" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz" - integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cssom@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" - integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -data-urls@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" - integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== - dependencies: - abab "^2.0.6" - whatwg-mimetype "^3.0.0" - whatwg-url "^11.0.0" - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@3.1.0, debug@=3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@4: - version "4.4.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" - integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== - dependencies: - ms "^2.1.3" - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -decimal.js@^10.3.1: - version "10.5.0" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.5.0.tgz#0f371c7cf6c4898ce0afb09836db73cd82010f22" - integrity sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -denque@^1.4.1: - version "1.5.1" - resolved "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz" - integrity sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw== - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -domexception@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" - integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== - dependencies: - webidl-conversions "^7.0.0" - -dotenv@^8.2.0: - version "8.6.0" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz" - integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== - -dunder-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz" - integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== - dependencies: - call-bind-apply-helpers "^1.0.1" - es-errors "^1.3.0" - gopd "^1.2.0" - -ecdsa-sig-formatter@1.0.11: - version "1.0.11" - resolved "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" - integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== - dependencies: - safe-buffer "^5.0.1" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -encodeurl@~2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz" - integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== - -es-define-property@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz" - integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz" - integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== - dependencies: - es-errors "^1.3.0" - -es-set-tostringtag@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" - integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== - dependencies: - es-errors "^1.3.0" - get-intrinsic "^1.2.6" - has-tostringtag "^1.0.2" - hasown "^2.0.2" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escodegen@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" - integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionalDependencies: - source-map "~0.6.1" - -esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -express@^4.17.1: - version "4.21.2" - resolved "https://registry.npmjs.org/express/-/express-4.21.2.tgz" - integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.3" - content-disposition "0.5.4" - content-type "~1.0.4" - 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" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz" - integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== - 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" - -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" - -form-data@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.2.tgz#35cabbdd30c3ce73deb2c42d3c8d3ed9ca51794c" - integrity sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - es-set-tostringtag "^2.1.0" - mime-types "^2.1.12" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz" - integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== - 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: - version "1.0.1" - resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz" - integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== - dependencies: - dunder-proto "^1.0.1" - es-object-atoms "^1.0.0" - -glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -gopd@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz" - integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-symbols@^1.0.3, has-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz" - integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== - -has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - -hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -html-encoding-sniffer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" - integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== - dependencies: - whatwg-encoding "^2.0.0" - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - 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: - version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" - integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== - dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -ignore-by-default@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz" - integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== - -inherits@2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -jsdom@^19.0.0: - version "19.0.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-19.0.0.tgz#93e67c149fe26816d38a849ea30ac93677e16b6a" - integrity sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A== - dependencies: - abab "^2.0.5" - acorn "^8.5.0" - acorn-globals "^6.0.0" - cssom "^0.5.0" - cssstyle "^2.3.0" - data-urls "^3.0.1" - decimal.js "^10.3.1" - domexception "^4.0.0" - escodegen "^2.0.0" - form-data "^4.0.0" - html-encoding-sniffer "^3.0.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - 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.2.3" - xml-name-validator "^4.0.0" - -jsonwebtoken@^8.5.1: - version "8.5.1" - resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz" - integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== - 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.0.0" - ms "^2.1.1" - semver "^5.6.0" - -jwa@^1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz" - integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== - dependencies: - buffer-equal-constant-time "1.0.1" - ecdsa-sig-formatter "1.0.11" - safe-buffer "^5.0.1" - -jws@^3.2.2: - version "3.2.2" - resolved "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz" - integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== - dependencies: - jwa "^1.4.1" - safe-buffer "^5.0.1" - -kareem@2.3.2: - version "2.3.2" - resolved "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz" - integrity sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ== - -lodash.includes@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz" - integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== - -lodash.isboolean@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz" - integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== - -lodash.isinteger@^4.0.4: - version "4.0.4" - resolved "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz" - integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== - -lodash.isnumber@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz" - integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" - integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== - -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz" - integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== - -lodash.once@^4.0.0: - version "4.1.1" - resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz" - integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== - -math-intrinsics@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" - integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -memory-pager@^1.0.2: - version "1.5.0" - resolved "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz" - integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== - -merge-descriptors@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz" - integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -mongodb@3.7.4: - version "3.7.4" - resolved "https://registry.npmjs.org/mongodb/-/mongodb-3.7.4.tgz" - integrity sha512-K5q8aBqEXMwWdVNh94UQTwZ6BejVbFhh1uB6c5FKtPE9eUMZPUO3sRZdgIEcHSrAWmxzpG/FeODDKL388sqRmw== - dependencies: - bl "^2.2.1" - bson "^1.1.4" - denque "^1.4.1" - optional-require "^1.1.8" - safe-buffer "^5.1.2" - optionalDependencies: - saslprep "^1.0.0" - -mongoose-legacy-pluralize@1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz" - integrity sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ== - -mongoose@^5.9.18: - version "5.13.23" - resolved "https://registry.npmjs.org/mongoose/-/mongoose-5.13.23.tgz" - integrity sha512-Q5bo1yYOcH2wbBPP4tGmcY5VKsFkQcjUDh66YjrbneAFB3vNKQwLvteRFLuLiU17rA5SDl3UMcMJLD9VS8ng2Q== - dependencies: - "@types/bson" "1.x || 4.0.x" - "@types/mongodb" "^3.5.27" - bson "^1.1.4" - kareem "2.3.2" - mongodb "3.7.4" - mongoose-legacy-pluralize "1.0.2" - mpath "0.8.4" - mquery "3.2.5" - ms "2.1.2" - optional-require "1.0.x" - regexp-clone "1.0.0" - safe-buffer "5.2.1" - sift "13.5.2" - sliced "1.0.1" - -mpath@0.8.4: - version "0.8.4" - resolved "https://registry.npmjs.org/mpath/-/mpath-0.8.4.tgz" - integrity sha512-DTxNZomBcTWlrMW76jy1wvV37X/cNNxPW1y2Jzd4DZkAaC5ZGsm8bfGfNOthcDuRJujXLqiuS6o3Tpy0JEoh7g== - -mquery@3.2.5: - version "3.2.5" - resolved "https://registry.npmjs.org/mquery/-/mquery-3.2.5.tgz" - integrity sha512-VjOKHHgU84wij7IUoZzFRU07IAxd5kWJaDmyUzQlbjHjyoeK5TNeeo8ZsFDtTYnSgpW6n/nMNIHvE3u8Lbrf4A== - dependencies: - bluebird "3.5.1" - debug "3.1.0" - regexp-clone "^1.0.0" - safe-buffer "5.1.2" - sliced "1.0.1" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3, ms@^2.1.1, ms@^2.1.3: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -nodemon@^2.0.4: - version "2.0.22" - resolved "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz" - integrity sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ== - dependencies: - chokidar "^3.5.2" - debug "^3.2.7" - ignore-by-default "^1.0.1" - minimatch "^3.1.2" - pstree.remy "^1.1.8" - semver "^5.7.1" - simple-update-notifier "^1.0.7" - supports-color "^5.5.0" - touch "^3.1.0" - undefsafe "^2.0.5" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -nwsapi@^2.2.0: - version "2.2.20" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.20.tgz#22e53253c61e7b0e7e93cef42c891154bcca11ef" - integrity sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA== - -object-inspect@^1.13.3: - version "1.13.4" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz" - integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -optional-require@1.0.x: - version "1.0.3" - resolved "https://registry.npmjs.org/optional-require/-/optional-require-1.0.3.tgz" - integrity sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA== - -optional-require@^1.1.8: - version "1.1.8" - resolved "https://registry.npmjs.org/optional-require/-/optional-require-1.1.8.tgz" - integrity sha512-jq83qaUb0wNg9Krv1c5OQ+58EK+vHde6aBPzLvPPqJm89UQWsvSuFy9X/OSNJnFeSOKo7btE0n8Nl2+nE+z5nA== - dependencies: - require-at "^1.0.6" - -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -path-to-regexp@0.1.12: - version "0.1.12" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz" - integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== - -picomatch@^2.0.4, picomatch@^2.2.1: - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -psl@^1.1.33: - version "1.15.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.15.0.tgz#bdace31896f1d97cec6a79e8224898ce93d974c6" - integrity sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w== - dependencies: - punycode "^2.3.1" - -pstree.remy@^1.1.8: - version "1.1.8" - resolved "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz" - integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== - -punycode@^2.1.1, punycode@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -qs@6.13.0: - version "6.13.0" - resolved "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz" - integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== - dependencies: - side-channel "^1.0.6" - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.2: - version "2.5.2" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -readable-stream@^2.3.5: - version "2.3.8" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -regexp-clone@1.0.0, regexp-clone@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz" - integrity sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw== - -require-at@^1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz" - integrity sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": - version "2.1.2" - resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -saslprep@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz" - integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag== - dependencies: - sparse-bitfield "^3.0.3" - -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - -semver@^5.6.0, semver@^5.7.1: - version "5.7.2" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -semver@~7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -send@0.19.0: - version "0.19.0" - resolved "https://registry.npmjs.org/send/-/send-0.19.0.tgz" - integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== - 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" - -serve-static@1.16.2: - version "1.16.2" - resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz" - integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== - dependencies: - encodeurl "~2.0.0" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.19.0" - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -side-channel-list@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz" - integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== - dependencies: - es-errors "^1.3.0" - object-inspect "^1.13.3" - -side-channel-map@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz" - integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - get-intrinsic "^1.2.5" - object-inspect "^1.13.3" - -side-channel-weakmap@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz" - integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - get-intrinsic "^1.2.5" - object-inspect "^1.13.3" - side-channel-map "^1.0.1" - -side-channel@^1.0.6: - version "1.1.0" - resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz" - integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== - dependencies: - es-errors "^1.3.0" - object-inspect "^1.13.3" - side-channel-list "^1.0.0" - side-channel-map "^1.0.1" - side-channel-weakmap "^1.0.2" - -sift@13.5.2: - version "13.5.2" - resolved "https://registry.npmjs.org/sift/-/sift-13.5.2.tgz" - integrity sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA== - -simple-update-notifier@^1.0.7: - version "1.1.0" - resolved "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz" - integrity sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg== - dependencies: - semver "~7.0.0" - -sliced@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz" - integrity sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA== - -source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -sparse-bitfield@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz" - integrity sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ== - dependencies: - memory-pager "^1.0.2" - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -supports-color@^5.5.0: - version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -touch@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz" - integrity sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA== - -tough-cookie@^4.0.0: - version "4.1.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" - integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.2.0" - url-parse "^1.5.3" - -tr46@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" - integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== - dependencies: - punycode "^2.1.1" - -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -undefsafe@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz" - integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== - -undici-types@~6.21.0: - version "6.21.0" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz" - integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== - -universalify@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -url-parse@^1.5.3: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz#06cdc3eefb7e4d0b20a560a5a3aeb0d2d9a65923" - integrity sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg== - dependencies: - xml-name-validator "^4.0.0" - -webidl-conversions@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" - integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== - -whatwg-encoding@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" - integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== - dependencies: - iconv-lite "0.6.3" - -whatwg-mimetype@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" - integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== - -whatwg-url@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-10.0.0.tgz#37264f720b575b4a311bd4094ed8c760caaa05da" - integrity sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w== - dependencies: - tr46 "^3.0.0" - webidl-conversions "^7.0.0" - -whatwg-url@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" - integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== - dependencies: - tr46 "^3.0.0" - webidl-conversions "^7.0.0" - -ws@^8.2.3: - version "8.18.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.1.tgz#ea131d3784e1dfdff91adb0a4a116b127515e3cb" - integrity sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w== - -xml-name-validator@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" - integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== diff --git a/test/it/tsconfig.json b/test/it/tsconfig.json deleted file mode 100644 index 99aad9db..00000000 --- a/test/it/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "compilerOptions": { - "allowJs": true, - "allowSyntheticDefaultImports": true, - "baseUrl": "src", - "declaration": true, - "esModuleInterop": true, - "lib": ["esnext"], - "moduleResolution": "Node", - "noUnusedLocals": false, - "noUnusedParameters": false, - "skipLibCheck": true, - "types": ["node"], - "module": "esnext", - "target": "esnext" - } -} diff --git a/testers/cli/package-lock.json b/testers/cli/package-lock.json new file mode 100644 index 00000000..7e7bf4a9 --- /dev/null +++ b/testers/cli/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "cli", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} From 96817e49aefff18697880cb16259819400671168 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Thu, 27 Nov 2025 10:24:38 +0000 Subject: [PATCH 045/102] fix: validate for empty group ID/namespace (#284) --- src/providers/base_java.js | 6 +- src/providers/java_gradle.js | 2 +- test/providers/java_gradle_groovy.test.js | 36 +- test/providers/java_gradle_kotlin.test.js | 34 +- .../build.gradle | 28 + .../build.gradle.kts | 28 + .../deps_with_empty_project_group/depTree.txt | 2590 +++++++++++++++++ .../gradle.properties | 123 + .../gradle/libs.versions.toml | 26 + .../settings.gradle | 5 + .../settings.gradle.kts | 5 + 11 files changed, 2865 insertions(+), 18 deletions(-) create mode 100644 test/providers/tst_manifests/gradle/deps_with_empty_project_group/build.gradle create mode 100644 test/providers/tst_manifests/gradle/deps_with_empty_project_group/build.gradle.kts create mode 100644 test/providers/tst_manifests/gradle/deps_with_empty_project_group/depTree.txt create mode 100644 test/providers/tst_manifests/gradle/deps_with_empty_project_group/gradle.properties create mode 100644 test/providers/tst_manifests/gradle/deps_with_empty_project_group/gradle/libs.versions.toml create mode 100644 test/providers/tst_manifests/gradle/deps_with_empty_project_group/settings.gradle create mode 100644 test/providers/tst_manifests/gradle/deps_with_empty_project_group/settings.gradle.kts diff --git a/src/providers/base_java.js b/src/providers/base_java.js index b987afe4..c16c48e2 100644 --- a/src/providers/base_java.js +++ b/src/providers/base_java.js @@ -91,8 +91,7 @@ export default class Base_Java { * @returns {PackageURL} The parsed packageURL */ parseDep(line) { - - let match = line.match(this.DEP_REGEX); + let match = line.split(':').map(part => part ? part.match(this.DEP_REGEX)[0] : ''); if (!match) { throw new Error(`Unable generate SBOM from dependency tree. Line: ${line} cannot be parsed into a PackageURL`); } @@ -106,6 +105,9 @@ export default class Base_Java { if (override) { version = override[1]; } + if (match[0].trim() === '') { + throw new Error(`Artifact coordinates should have a non-empty group ID: ${line}`); + } return this.toPurl(match[0], match[1], version); } diff --git a/src/providers/java_gradle.js b/src/providers/java_gradle.js index 443abb13..4f3f0ae5 100644 --- a/src/providers/java_gradle.js +++ b/src/providers/java_gradle.js @@ -231,7 +231,7 @@ export default class Java_gradle extends Base_java { #extractProperties(manifestPath, opts) { let properties = {} let propertiesContent = this.#getProperties(manifestPath, opts) - let regExpMatchArray = propertiesContent.match(/([^:]+):\s+(.+)/g); + let regExpMatchArray = propertiesContent.match(/([^\n:]+):[\t ]*(.*)/g); for (let i = 0; i < regExpMatchArray.length - 1; i++) { let parts = regExpMatchArray[i].split(":"); properties[parts[0].trim()] = parts[1].trim() diff --git a/test/providers/java_gradle_groovy.test.js b/test/providers/java_gradle_groovy.test.js index 80da835d..f3d56d9f 100644 --- a/test/providers/java_gradle_groovy.test.js +++ b/test/providers/java_gradle_groovy.test.js @@ -1,3 +1,4 @@ +import { throws } from 'assert'; import fs from 'fs' import { expect } from 'chai' @@ -28,8 +29,8 @@ function getStubbedResponse(args, dependencyTreeTextContent, gradleProperties) { suite('testing the java-gradle-groovy data provider', () => { [ - {name: 'build.gradle', expected: true}, - {name: 'some_other.file', expected: false} + { name: 'build.gradle', expected: true }, + { name: 'some_other.file', expected: false } ].forEach(testCase => { test(`verify isSupported returns ${testCase.expected} for ${testCase.name}`, () => { let javaGradleProvider = new Java_gradle_groovy() @@ -41,7 +42,7 @@ suite('testing the java-gradle-groovy data provider', () => { "deps_with_no_ignore_common_paths", "deps_with_ignore_full_specification", "deps_with_ignore_named_params", - "deps_with_ignore_notations" + "deps_with_ignore_notations", ].forEach(testCase => { let scenario = testCase.replaceAll('_', ' ') @@ -50,7 +51,7 @@ suite('testing the java-gradle-groovy data provider', () => { let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/gradle/${testCase}/expected_stack_sbom.json`,).toString().trim() let dependencyTreeTextContent = fs.readFileSync(`test/providers/tst_manifests/gradle/${testCase}/depTree.txt`,).toString() let gradleProperties = fs.readFileSync(`test/providers/tst_manifests/gradle/${testCase}/gradle.properties`,).toString() - let mockedExecFunction = function(bin, args){ + let mockedExecFunction = function (bin, args) { return getStubbedResponse(args, dependencyTreeTextContent, gradleProperties); } let provider = new Java_gradle_groovy() @@ -60,7 +61,7 @@ suite('testing the java-gradle-groovy data provider', () => { // verify returned data matches expectation compareSboms(providedDataForStack.content, expectedSbom); - // these test cases takes ~2500-2700 ms each pr >10000 in CI (for the first test-case) + // these test cases takes ~2500-2700 ms each pr >10000 in CI (for the first test-case) }).timeout(process.env.GITHUB_ACTIONS ? 40000 : 10000) test(`verify gradle data provided for component analysis with scenario ${scenario}`, async () => { @@ -68,17 +69,36 @@ suite('testing the java-gradle-groovy data provider', () => { let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/gradle/${testCase}/expected_component_sbom.json`,).toString().trim() let dependencyTreeTextContent = fs.readFileSync(`test/providers/tst_manifests/gradle/${testCase}/depTree.txt`,).toString() let gradleProperties = fs.readFileSync(`test/providers/tst_manifests/gradle/${testCase}/gradle.properties`,).toString() - let mockedExecFunction = function(bin, args){ + let mockedExecFunction = function (bin, args) { return getStubbedResponse(args, dependencyTreeTextContent, gradleProperties); } let provider = new Java_gradle_groovy() Object.getPrototypeOf(Object.getPrototypeOf(provider))._invokeCommand = mockedExecFunction - // invoke sut component analysis for scenario manifest + // invoke component analysis for scenario manifest let providedForComponent = provider.provideComponent(`test/providers/tst_manifests/gradle/${testCase}/build.gradle`, {}) // verify returned data matches expectation compareSboms(providedForComponent.content, expectedSbom); // these test cases takes ~1400-2000 ms each pr >10000 in CI (for the first test-case) }).timeout(process.env.GITHUB_ACTIONS ? 15000 : 5000) + }); + + [ + "deps_with_empty_project_group" + ].forEach(testCase => { + let scenario = testCase.replaceAll('_', ' ') + + test(`verify gradle provider throws with scenario ${scenario}`, async () => { + // load the expected list for the scenario + let dependencyTreeTextContent = fs.readFileSync(`test/providers/tst_manifests/gradle/${testCase}/depTree.txt`,).toString() + let gradleProperties = fs.readFileSync(`test/providers/tst_manifests/gradle/${testCase}/gradle.properties`,).toString() + let mockedExecFunction = function (bin, args) { + return getStubbedResponse(args, dependencyTreeTextContent, gradleProperties); + } + let provider = new Java_gradle_groovy() + Object.getPrototypeOf(Object.getPrototypeOf(provider))._invokeCommand = mockedExecFunction + // invoke component analysis for scenario manifest + throws(() => provider.provideComponent(`test/providers/tst_manifests/gradle/${testCase}/build.gradle`, {})) + }) }) -}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(()=> {clock.restore()}); +}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => { clock.restore() }); diff --git a/test/providers/java_gradle_kotlin.test.js b/test/providers/java_gradle_kotlin.test.js index 52116044..0fd58692 100644 --- a/test/providers/java_gradle_kotlin.test.js +++ b/test/providers/java_gradle_kotlin.test.js @@ -1,3 +1,4 @@ +import { throws } from 'assert'; import fs from 'fs' import { expect } from 'chai' @@ -28,8 +29,8 @@ function getStubbedResponse(args, dependencyTreeTextContent, gradleProperties) { suite('testing the java-gradle-kotlin data provider', () => { [ - {name: 'build.gradle.kts', expected: true}, - {name: 'some_other.file', expected: false} + { name: 'build.gradle.kts', expected: true }, + { name: 'some_other.file', expected: false } ].forEach(testCase => { test(`verify isSupported returns ${testCase.expected} for ${testCase.name}`, () => { let javaGradleProvider = new Java_gradle_kotlin() @@ -50,7 +51,7 @@ suite('testing the java-gradle-kotlin data provider', () => { let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/gradle/${testCase}/expected_stack_sbom.json`,).toString().trim() let dependencyTreeTextContent = fs.readFileSync(`test/providers/tst_manifests/gradle/${testCase}/depTree.txt`,).toString() let gradleProperties = fs.readFileSync(`test/providers/tst_manifests/gradle/${testCase}/gradle.properties`,).toString() - let mockedExecFunction = function(bin, args){ + let mockedExecFunction = function (bin, args) { return getStubbedResponse(args, dependencyTreeTextContent, gradleProperties); } let javGradleProvider = new Java_gradle_kotlin() @@ -60,7 +61,7 @@ suite('testing the java-gradle-kotlin data provider', () => { // verify returned data matches expectation compareSboms(providedDataForStack.content, expectedSbom); - // these test cases takes ~2500-2700 ms each pr >10000 in CI (for the first test-case) + // these test cases takes ~2500-2700 ms each pr >10000 in CI (for the first test-case) }).timeout(process.env.GITHUB_ACTIONS ? 40000 : 10000) test(`verify gradle data provided for component analysis with scenario ${scenario}`, async () => { @@ -68,17 +69,36 @@ suite('testing the java-gradle-kotlin data provider', () => { let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/gradle/${testCase}/expected_component_sbom.json`,).toString().trim() let dependencyTreeTextContent = fs.readFileSync(`test/providers/tst_manifests/gradle/${testCase}/depTree.txt`,).toString() let gradleProperties = fs.readFileSync(`test/providers/tst_manifests/gradle/${testCase}/gradle.properties`,).toString() - let mockedExecFunction = function(bin, args){ + let mockedExecFunction = function (bin, args) { return getStubbedResponse(args, dependencyTreeTextContent, gradleProperties); } let javaGradleProvider = new Java_gradle_kotlin() Object.getPrototypeOf(Object.getPrototypeOf(javaGradleProvider))._invokeCommand = mockedExecFunction - // invoke sut component analysis for scenario manifest + // invoke component analysis for scenario manifest let providedForComponent = javaGradleProvider.provideComponent(`test/providers/tst_manifests/gradle/${testCase}/build.gradle.kts`, {}) // verify returned data matches expectation compareSboms(providedForComponent.content, expectedSbom); // these test cases takes ~1400-2000 ms each pr >10000 in CI (for the first test-case) }).timeout(process.env.GITHUB_ACTIONS ? 15000 : 5000) + }); + + [ + "deps_with_empty_project_group" + ].forEach(testCase => { + let scenario = testCase.replaceAll('_', ' ') + + test(`verify gradle provider throws with scenario ${scenario}`, async () => { + // load the expected list for the scenario + let dependencyTreeTextContent = fs.readFileSync(`test/providers/tst_manifests/gradle/${testCase}/depTree.txt`,).toString() + let gradleProperties = fs.readFileSync(`test/providers/tst_manifests/gradle/${testCase}/gradle.properties`,).toString() + let mockedExecFunction = function (bin, args) { + return getStubbedResponse(args, dependencyTreeTextContent, gradleProperties); + } + let provider = new Java_gradle_kotlin() + Object.getPrototypeOf(Object.getPrototypeOf(provider))._invokeCommand = mockedExecFunction + // invoke component analysis for scenario manifest + throws(() => provider.provideComponent(`test/providers/tst_manifests/gradle/${testCase}/build.gradle`, {})) + }) }) -}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(()=> {clock.restore()}); +}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => { clock.restore() }); diff --git a/test/providers/tst_manifests/gradle/deps_with_empty_project_group/build.gradle b/test/providers/tst_manifests/gradle/deps_with_empty_project_group/build.gradle new file mode 100644 index 00000000..3421c47b --- /dev/null +++ b/test/providers/tst_manifests/gradle/deps_with_empty_project_group/build.gradle @@ -0,0 +1,28 @@ +plugins { + id 'java' +} + +group = '' +version = '1.0.0-SNAPSHOT' + +repositories { + mavenCentral() +} + +dependencies { + implementation "io.quarkus:quarkus-hibernate-orm:2.13.5.Final" + implementation "io.quarkus:quarkus-agroal:2.13.5.Final" + implementation "io.quarkus:quarkus-resteasy:2.13.5.Final" + implementation "io.quarkus:quarkus-resteasy-jackson:2.13.5.Final" + implementation "io.quarkus:quarkus-jdbc-postgresql:2.13.5.Final" + implementation "io.quarkus:quarkus-vertx-http:2.13.5.Final" + implementation "io.quarkus:quarkus-kubernetes-service-binding:2.13.5.Final" + implementation "io.quarkus:quarkus-container-image-docker:2.13.5.Final" + implementation "jakarta.validation:jakarta.validation-api:2.0.2" + implementation "io.quarkus:quarkus-resteasy-multipart:2.13.7.Final" + implementation "io.quarkus:quarkus-hibernate-orm-deployment:2.0.2.Final" + implementation "log4j:log4j:1.2.17" // exhortignore +} +test { + useJUnitPlatform() +} diff --git a/test/providers/tst_manifests/gradle/deps_with_empty_project_group/build.gradle.kts b/test/providers/tst_manifests/gradle/deps_with_empty_project_group/build.gradle.kts new file mode 100644 index 00000000..6d80dc9f --- /dev/null +++ b/test/providers/tst_manifests/gradle/deps_with_empty_project_group/build.gradle.kts @@ -0,0 +1,28 @@ +plugins { + id("java") +} + +version = "1.0.0-SNAPSHOT" + +repositories { + mavenCentral() +} + +dependencies { + implementation("io.quarkus:quarkus-hibernate-orm:2.13.5.Final") + implementation("io.quarkus:quarkus-agroal:2.13.5.Final") + implementation("io.quarkus:quarkus-resteasy:2.13.5.Final") + implementation("io.quarkus:quarkus-resteasy-jackson:2.13.5.Final") + implementation("io.quarkus:quarkus-jdbc-postgresql:2.13.5.Final") + implementation("io.quarkus:quarkus-vertx-http:2.13.5.Final") + implementation("io.quarkus:quarkus-kubernetes-service-binding:2.13.5.Final") + implementation("io.quarkus:quarkus-container-image-docker:2.13.5.Final") + implementation("jakarta.validation:jakarta.validation-api:2.0.2") + implementation("io.quarkus:quarkus-resteasy-multipart:2.13.7.Final") + implementation("io.quarkus:quarkus-hibernate-orm-deployment:2.0.2.Final") + implementation("log4j:log4j:1.2.17") // exhortignore +} + +test { + useJUnitPlatform() +} diff --git a/test/providers/tst_manifests/gradle/deps_with_empty_project_group/depTree.txt b/test/providers/tst_manifests/gradle/deps_with_empty_project_group/depTree.txt new file mode 100644 index 00000000..ada09b9d --- /dev/null +++ b/test/providers/tst_manifests/gradle/deps_with_empty_project_group/depTree.txt @@ -0,0 +1,2590 @@ + +> Task :dependencies + +------------------------------------------------------------ +Root project 'postgresql-orm-quarkus' +------------------------------------------------------------ + +annotationProcessor - Annotation processors and their dependencies for source set 'main'. +No dependencies + +compileClasspath - Compile classpath for source set 'main'. ++--- io.quarkus:quarkus-hibernate-orm:2.13.5.Final +| +--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final +| | +--- jakarta.annotation:jakarta.annotation-api:1.3.5 +| | +--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 +| | | +--- jakarta.el:jakarta.el-api:3.0.3 +| | | +--- jakarta.interceptor:jakarta.interceptor-api:1.2.5 +| | | | +--- jakarta.annotation:jakarta.annotation-api:1.3.5 +| | | | \--- jakarta.ejb:jakarta.ejb-api:3.2.6 +| | | | \--- jakarta.transaction:jakarta.transaction-api:1.3.2 -> 1.3.3 +| | | \--- jakarta.inject:jakarta.inject-api:1.0 +| | +--- jakarta.inject:jakarta.inject-api:1.0 +| | +--- io.quarkus:quarkus-ide-launcher:2.13.7.Final +| | +--- io.quarkus:quarkus-development-mode-spi:2.13.7.Final +| | +--- io.smallrye.config:smallrye-config:2.12.3 +| | | +--- io.smallrye.config:smallrye-config-core:2.12.3 +| | | | +--- org.eclipse.microprofile.config:microprofile-config-api:2.0.1 +| | | | +--- io.smallrye.common:smallrye-common-annotation:1.13.1 +| | | | +--- io.smallrye.common:smallrye-common-expression:1.13.1 +| | | | | +--- io.smallrye.common:smallrye-common-function:1.13.1 +| | | | | | \--- io.smallrye.common:smallrye-common-constraint:1.13.1 +| | | | | | \--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | | | | \--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | | | +--- io.smallrye.common:smallrye-common-constraint:1.13.1 (*) +| | | | +--- io.smallrye.common:smallrye-common-classloader:1.13.1 +| | | | +--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | | | +--- org.ow2.asm:asm:9.3 +| | | | \--- io.smallrye.config:smallrye-config-common:2.12.3 +| | | | +--- org.eclipse.microprofile.config:microprofile-config-api:2.0.1 +| | | | +--- io.smallrye.common:smallrye-common-classloader:1.13.1 +| | | | \--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | | \--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | +--- org.jboss.logging:jboss-logging:3.5.0.Final +| | +--- org.jboss.logmanager:jboss-logmanager-embedded:1.0.10 +| | | \--- org.wildfly.common:wildfly-common:1.5.0.Final-format-001 -> 1.5.4.Final-format-001 +| | +--- org.jboss.logging:jboss-logging-annotations:2.2.1.Final +| | +--- org.jboss.threads:jboss-threads:3.4.3.Final +| | | +--- org.jboss.logging:jboss-logging:3.4.1.Final -> 3.5.0.Final +| | | \--- org.wildfly.common:wildfly-common:1.5.0.Final -> 1.5.4.Final-format-001 +| | +--- org.slf4j:slf4j-api:1.7.36 +| | +--- org.jboss.slf4j:slf4j-jboss-logmanager:1.2.0.Final +| | +--- org.graalvm.sdk:graal-sdk:22.3.0 +| | +--- org.wildfly.common:wildfly-common:1.5.4.Final-format-001 +| | +--- io.quarkus:quarkus-bootstrap-runner:2.13.7.Final +| | | +--- io.smallrye.common:smallrye-common-io:1.13.1 +| | | +--- org.jboss.logmanager:jboss-logmanager-embedded:1.0.10 (*) +| | | +--- org.jboss.logging:jboss-logging:3.5.0.Final +| | | \--- io.github.crac:org-crac:0.1.1 +| | \--- io.quarkus:quarkus-fs-util:0.0.9 +| +--- io.quarkus:quarkus-agroal:2.13.5.Final +| | +--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) +| | +--- io.quarkus:quarkus-arc:2.13.5.Final -> 2.13.7.Final +| | | +--- io.quarkus.arc:arc:2.13.7.Final +| | | | +--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 (*) +| | | | +--- jakarta.annotation:jakarta.annotation-api:1.3.5 +| | | | +--- jakarta.transaction:jakarta.transaction-api:1.3.3 +| | | | +--- io.smallrye.reactive:mutiny:1.6.0 -> 1.7.0 +| | | | | +--- org.reactivestreams:reactive-streams:1.0.3 +| | | | | \--- io.smallrye.common:smallrye-common-annotation:1.13.0 -> 1.13.1 +| | | | \--- org.jboss.logging:jboss-logging:3.5.0.Final +| | | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | | \--- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.2 -> 1.3 +| | +--- io.quarkus:quarkus-datasource:2.13.5.Final +| | | +--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-arc:2.13.5.Final -> 2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-datasource-common:2.13.5.Final +| | | \--- io.quarkus:quarkus-credentials:2.13.5.Final -> 2.13.7.Final +| | | \--- io.quarkus.arc:arc:2.13.7.Final (*) +| | +--- io.quarkus:quarkus-narayana-jta:2.13.5.Final +| | | +--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-arc:2.13.5.Final -> 2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-transaction-annotations:2.13.5.Final +| | | +--- io.quarkus:quarkus-mutiny:2.13.5.Final -> 2.13.7.Final +| | | | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | | | +--- io.smallrye.reactive:mutiny:1.7.0 (*) +| | | | +--- io.quarkus:quarkus-smallrye-context-propagation:2.13.7.Final +| | | | | +--- io.smallrye:smallrye-context-propagation:1.2.2 +| | | | | | +--- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.2 -> 1.3 +| | | | | | +--- io.smallrye:smallrye-context-propagation-api:1.2.2 +| | | | | | | +--- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.2 -> 1.3 +| | | | | | | \--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 (*) +| | | | | | +--- io.smallrye:smallrye-context-propagation-storage:1.2.2 +| | | | | | +--- org.eclipse.microprofile.config:microprofile-config-api:1.4 -> 2.0.1 +| | | | | | \--- org.jboss.threads:jboss-threads:3.1.1.Final -> 3.4.3.Final (*) +| | | | | +--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 (*) +| | | | | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | | | | \--- io.quarkus:quarkus-arc:2.13.7.Final (*) +| | | | \--- io.smallrye.reactive:mutiny-smallrye-context-propagation:1.7.0 +| | | | +--- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.3 +| | | | +--- io.smallrye.reactive:mutiny:1.7.0 (*) +| | | | \--- io.smallrye:smallrye-context-propagation:1.2.2 (*) +| | | +--- io.smallrye:smallrye-context-propagation-jta:1.2.2 +| | | | \--- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.2 -> 1.3 +| | | +--- jakarta.transaction:jakarta.transaction-api:1.3.3 +| | | +--- io.smallrye.reactive:smallrye-reactive-converter-api:2.7.0 +| | | | \--- org.reactivestreams:reactive-streams:1.0.3 +| | | +--- io.smallrye.reactive:smallrye-reactive-converter-mutiny:2.7.0 +| | | | +--- io.smallrye.reactive:mutiny:1.4.0 -> 1.7.0 (*) +| | | | \--- io.smallrye.reactive:smallrye-reactive-converter-api:2.7.0 (*) +| | | +--- org.jboss.narayana.jta:narayana-jta:5.13.1.Alpha1 +| | | | +--- org.jboss:jboss-transaction-spi:7.6.1.Final +| | | | | \--- org.jboss.spec.javax.resource:jboss-connector-api_1.7_spec:1.0.0.Final +| | | | \--- org.jboss.spec.javax.resource:jboss-connector-api_1.7_spec:1.0.0.Final +| | | \--- org.jboss.narayana.jts:narayana-jts-integration:5.13.1.Alpha1 +| | +--- io.agroal:agroal-api:1.16 +| | +--- io.agroal:agroal-narayana:1.16 +| | | +--- io.agroal:agroal-api:1.16 +| | | \--- org.jboss:jboss-transaction-spi:7.6.1.Final (*) +| | +--- io.agroal:agroal-pool:1.16 +| | | \--- io.agroal:agroal-api:1.16 +| | \--- io.quarkus:quarkus-credentials:2.13.5.Final -> 2.13.7.Final (*) +| +--- io.quarkus:quarkus-narayana-jta:2.13.5.Final (*) +| +--- org.hibernate:hibernate-core:5.6.14.Final +| | +--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | +--- net.bytebuddy:byte-buddy:1.12.18 +| | +--- antlr:antlr:2.7.7 +| | +--- com.fasterxml:classmate:1.5.1 +| | \--- org.hibernate.common:hibernate-commons-annotations:5.1.2.Final +| | \--- org.jboss.logging:jboss-logging:3.3.2.Final -> 3.5.0.Final +| +--- org.hibernate:hibernate-graalvm:5.6.14.Final +| | \--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| +--- org.glassfish.jaxb:jaxb-runtime:2.3.3-b02 +| | +--- org.glassfish.jaxb:txw2:2.3.3-b02 +| | \--- com.sun.istack:istack-commons-runtime:3.0.10 +| +--- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final +| +--- jakarta.persistence:jakarta.persistence-api:2.2.3 +| +--- jakarta.transaction:jakarta.transaction-api:1.3.3 +| +--- org.hibernate:quarkus-local-cache:0.1.1 +| \--- io.quarkus:quarkus-caffeine:2.13.5.Final +| +--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) +| \--- com.github.ben-manes.caffeine:caffeine:2.9.3 +| \--- com.google.errorprone:error_prone_annotations:2.10.0 ++--- io.quarkus:quarkus-agroal:2.13.5.Final (*) ++--- io.quarkus:quarkus-resteasy:2.13.5.Final -> 2.13.7.Final +| +--- io.quarkus:quarkus-vertx-http:2.13.7.Final +| | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | +--- io.quarkus:quarkus-security-runtime-spi:2.13.7.Final +| | | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | | \--- io.quarkus.security:quarkus-security:1.1.4.Final +| | | +--- org.jboss.logging:jboss-logging:3.3.2.Final -> 3.5.0.Final +| | | \--- io.smallrye.reactive:mutiny:0.4.3 -> 1.7.0 (*) +| | +--- io.quarkus:quarkus-credentials:2.13.7.Final (*) +| | +--- io.quarkus:quarkus-mutiny:2.13.7.Final (*) +| | +--- io.smallrye.common:smallrye-common-vertx-context:1.13.1 +| | | +--- io.vertx:vertx-core:4.3.3 -> 4.3.4 +| | | | +--- io.netty:netty-common:4.1.82.Final -> 4.1.86.Final +| | | | +--- io.netty:netty-buffer:4.1.82.Final -> 4.1.86.Final +| | | | | \--- io.netty:netty-common:4.1.86.Final +| | | | +--- io.netty:netty-transport:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | \--- io.netty:netty-resolver:4.1.86.Final +| | | | | \--- io.netty:netty-common:4.1.86.Final +| | | | +--- io.netty:netty-handler:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | +--- io.netty:netty-resolver:4.1.86.Final (*) +| | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport:4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport-native-unix-common:4.1.86.Final +| | | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | | \--- io.netty:netty-transport:4.1.86.Final (*) +| | | | | \--- io.netty:netty-codec:4.1.86.Final +| | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | \--- io.netty:netty-transport:4.1.86.Final (*) +| | | | +--- io.netty:netty-handler-proxy:4.1.82.Final +| | | | | +--- io.netty:netty-common:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec-socks:4.1.82.Final +| | | | | | +--- io.netty:netty-common:4.1.82.Final -> 4.1.86.Final +| | | | | | +--- io.netty:netty-buffer:4.1.82.Final -> 4.1.86.Final (*) +| | | | | | +--- io.netty:netty-transport:4.1.82.Final -> 4.1.86.Final (*) +| | | | | | \--- io.netty:netty-codec:4.1.82.Final -> 4.1.86.Final (*) +| | | | | \--- io.netty:netty-codec-http:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport:4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec:4.1.86.Final (*) +| | | | | \--- io.netty:netty-handler:4.1.86.Final (*) +| | | | +--- io.netty:netty-codec-http:4.1.82.Final -> 4.1.86.Final (*) +| | | | +--- io.netty:netty-codec-http2:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport:4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec:4.1.86.Final (*) +| | | | | +--- io.netty:netty-handler:4.1.86.Final (*) +| | | | | \--- io.netty:netty-codec-http:4.1.86.Final (*) +| | | | +--- io.netty:netty-resolver:4.1.82.Final -> 4.1.86.Final (*) +| | | | +--- io.netty:netty-resolver-dns:4.1.82.Final +| | | | | +--- io.netty:netty-common:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-resolver:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec-dns:4.1.82.Final +| | | | | | +--- io.netty:netty-common:4.1.82.Final -> 4.1.86.Final +| | | | | | +--- io.netty:netty-buffer:4.1.82.Final -> 4.1.86.Final (*) +| | | | | | +--- io.netty:netty-transport:4.1.82.Final -> 4.1.86.Final (*) +| | | | | | \--- io.netty:netty-codec:4.1.82.Final -> 4.1.86.Final (*) +| | | | | \--- io.netty:netty-handler:4.1.82.Final -> 4.1.86.Final (*) +| | | | \--- com.fasterxml.jackson.core:jackson-core:2.13.4 +| | | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 +| | | | +--- com.fasterxml.jackson.core:jackson-annotations:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (c) +| | | | +--- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.module:jackson-module-parameter-names:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.13.4 (c) +| | | | \--- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.13.4 (c) +| | | \--- io.smallrye.common:smallrye-common-constraint:1.13.1 (*) +| | +--- io.quarkus:quarkus-vertx-http-dev-console-runtime-spi:2.13.7.Final +| | | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | | +--- io.quarkus.arc:arc:2.13.7.Final (*) +| | | \--- io.vertx:vertx-web:4.3.4 +| | | +--- io.vertx:vertx-web-common:4.3.4 +| | | | \--- io.vertx:vertx-core:4.3.4 (*) +| | | +--- io.vertx:vertx-auth-common:4.3.4 +| | | | \--- io.vertx:vertx-core:4.3.4 (*) +| | | +--- io.vertx:vertx-bridge-common:4.3.4 +| | | | \--- io.vertx:vertx-core:4.3.4 (*) +| | | \--- io.vertx:vertx-core:4.3.4 (*) +| | +--- io.quarkus.security:quarkus-security:1.1.4.Final (*) +| | +--- io.quarkus:quarkus-vertx:2.13.7.Final +| | | +--- io.quarkus:quarkus-arc:2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-netty:2.13.7.Final +| | | | +--- io.netty:netty-codec:4.1.86.Final (*) +| | | | +--- io.netty:netty-codec-http:4.1.86.Final (*) +| | | | +--- io.netty:netty-codec-http2:4.1.86.Final (*) +| | | | +--- io.quarkus:quarkus-arc:2.13.7.Final (*) +| | | | +--- io.netty:netty-handler:4.1.86.Final (*) +| | | | +--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 (*) +| | | | \--- com.aayushatharva.brotli4j:brotli4j:1.7.1 +| | | +--- io.netty:netty-codec-haproxy:4.1.86.Final +| | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | +--- io.netty:netty-transport:4.1.86.Final (*) +| | | | \--- io.netty:netty-codec:4.1.86.Final (*) +| | | +--- io.smallrye.common:smallrye-common-annotation:1.13.1 +| | | +--- io.smallrye.common:smallrye-common-vertx-context:1.13.1 (*) +| | | +--- io.quarkus:quarkus-mutiny:2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-vertx-latebound-mdc-provider:2.13.7.Final +| | | | \--- org.jboss.logmanager:jboss-logmanager-embedded:1.0.10 (*) +| | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 +| | | | +--- io.smallrye.reactive:mutiny:1.7.0 (*) +| | | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-runtime:2.27.0 +| | | | | +--- io.smallrye.reactive:mutiny:1.7.0 (*) +| | | | | \--- io.vertx:vertx-core:4.3.4 (*) +| | | | +--- io.vertx:vertx-core:4.3.4 (*) +| | | | \--- io.smallrye.reactive:vertx-mutiny-generator:2.27.0 +| | | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-runtime:2.27.0 (*) +| | | | +--- io.vertx:vertx-codegen:4.3.4 +| | | | | \--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | | \--- io.smallrye.common:smallrye-common-annotation:1.13.0 -> 1.13.1 +| | | \--- io.smallrye:smallrye-fault-tolerance-vertx:5.5.0 +| | +--- io.smallrye.reactive:smallrye-mutiny-vertx-web:2.27.0 +| | | +--- io.vertx:vertx-web:4.3.4 (*) +| | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 (*) +| | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-web-common:2.27.0 +| | | | +--- io.vertx:vertx-web-common:4.3.4 (*) +| | | | \--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 (*) +| | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-auth-common:2.27.0 +| | | | +--- io.vertx:vertx-auth-common:4.3.4 (*) +| | | | \--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 (*) +| | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-bridge-common:2.27.0 +| | | | +--- io.vertx:vertx-bridge-common:4.3.4 (*) +| | | | \--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 (*) +| | | \--- io.smallrye.reactive:smallrye-mutiny-vertx-uri-template:2.27.0 +| | | +--- io.vertx:vertx-uri-template:4.3.4 +| | | | \--- io.vertx:vertx-core:4.3.4 (*) +| | | \--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 (*) +| | +--- io.vertx:vertx-web:4.3.4 (*) +| | \--- io.github.crac:org-crac:0.1.1 +| \--- io.quarkus:quarkus-resteasy-server-common:2.13.7.Final +| +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| +--- io.quarkus:quarkus-arc:2.13.7.Final (*) +| +--- io.quarkus:quarkus-resteasy-common:2.13.7.Final +| | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | +--- org.jboss.resteasy:resteasy-core:4.7.7.Final +| | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | +--- org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec:2.0.1.Final +| | | +--- org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.1_spec:2.0.1.Final +| | | +--- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final +| | | +--- org.jboss.resteasy:resteasy-core-spi:4.7.7.Final +| | | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | | +--- org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec:2.0.1.Final +| | | | +--- org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.1_spec:2.0.1.Final +| | | | +--- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final +| | | | +--- org.reactivestreams:reactive-streams:1.0.3 +| | | | \--- jakarta.validation:jakarta.validation-api:2.0.2 +| | | +--- org.reactivestreams:reactive-streams:1.0.3 +| | | +--- jakarta.validation:jakarta.validation-api:2.0.2 +| | | +--- com.ibm.async:asyncutil:0.1.0 +| | | \--- io.smallrye.config:smallrye-config:2.3.0 -> 2.12.3 (*) +| | +--- io.quarkus:quarkus-arc:2.13.7.Final (*) +| | \--- com.sun.activation:jakarta.activation:1.2.1 +| \--- jakarta.validation:jakarta.validation-api:2.0.2 ++--- io.quarkus:quarkus-resteasy-jackson:2.13.5.Final +| +--- io.quarkus:quarkus-resteasy:2.13.5.Final -> 2.13.7.Final (*) +| +--- io.quarkus:quarkus-jackson:2.13.5.Final +| | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4.2 +| | | +--- com.fasterxml.jackson.core:jackson-annotations:2.13.4 +| | | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | +--- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.4 +| | | +--- com.fasterxml.jackson.core:jackson-annotations:2.13.4 (*) +| | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (*) +| | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | +--- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.13.4 +| | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (*) +| | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | +--- com.fasterxml.jackson.module:jackson-module-parameter-names:2.13.4 +| | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (*) +| | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | \--- io.quarkus:quarkus-arc:2.13.5.Final -> 2.13.7.Final (*) +| +--- org.jboss.resteasy:resteasy-jackson2-provider:4.7.7.Final +| | +--- com.fasterxml.jackson.core:jackson-core:2.12.6 -> 2.13.4 (*) +| | +--- com.fasterxml.jackson.core:jackson-databind:2.12.6.1 -> 2.13.4.2 (*) +| | +--- com.fasterxml.jackson.core:jackson-annotations:2.12.6 -> 2.13.4 (*) +| | +--- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.12.6 -> 2.13.4 +| | | +--- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.13.4 +| | | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (*) +| | | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | | +--- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.13.4 +| | | | +--- com.fasterxml.jackson.core:jackson-annotations:2.13.4 (*) +| | | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (*) +| | | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | +--- com.github.java-json-tools:json-patch:1.13 +| | | +--- com.fasterxml.jackson.core:jackson-databind:2.11.0 -> 2.13.4.2 (*) +| | | +--- com.github.java-json-tools:msg-simple:1.2 +| | | | \--- com.github.java-json-tools:btf:1.3 +| | | \--- com.github.java-json-tools:jackson-coreutils:2.0 +| | \--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| \--- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final ++--- io.quarkus:quarkus-jdbc-postgresql:2.13.5.Final +| +--- io.quarkus:quarkus-arc:2.13.5.Final -> 2.13.7.Final (*) +| \--- org.postgresql:postgresql:42.5.0 ++--- io.quarkus:quarkus-vertx-http:2.13.5.Final -> 2.13.7.Final (*) ++--- io.quarkus:quarkus-kubernetes-service-binding:2.13.5.Final +| \--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) ++--- io.quarkus:quarkus-container-image-docker:2.13.5.Final +| \--- io.quarkus:quarkus-container-image:2.13.5.Final +| \--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) ++--- jakarta.validation:jakarta.validation-api:2.0.2 ++--- io.quarkus:quarkus-resteasy-multipart:2.13.7.Final +| +--- io.quarkus:quarkus-resteasy:2.13.7.Final (*) +| +--- org.jboss.resteasy:resteasy-multipart-provider:4.7.7.Final +| | +--- org.jboss.resteasy:resteasy-core-spi:4.7.7.Final (*) +| | +--- org.jboss.resteasy:resteasy-core:4.7.7.Final (*) +| | +--- org.jboss.resteasy:resteasy-jaxb-provider:4.7.7.Final +| | | +--- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final +| | | +--- org.glassfish.jaxb:jaxb-runtime:2.3.3-b02 (*) +| | | \--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | +--- com.sun.mail:jakarta.mail:1.6.5 +| | +--- org.apache.james:apache-mime4j-dom:0.8.3 +| | | \--- org.apache.james:apache-mime4j-core:0.8.3 +| | +--- org.apache.james:apache-mime4j-storage:0.8.3 +| | | +--- org.apache.james:apache-mime4j-dom:0.8.3 (*) +| | | \--- commons-io:commons-io:2.4 -> 2.6 +| | \--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| +--- com.sun.activation:jakarta.activation:1.2.1 +| \--- org.jboss.logging:commons-logging-jboss-logging:1.0.0.Final +| \--- org.jboss.logging:jboss-logging:3.3.1.Final -> 3.5.0.Final ++--- io.quarkus:quarkus-hibernate-orm-deployment:2.0.2.Final +| +--- io.quarkus:quarkus-core-deployment:2.0.2.Final +| | +--- org.aesh:readline:2.1 +| | | \--- org.fusesource.jansi:jansi:1.18 +| | +--- org.apache.commons:commons-lang3:3.12.0 +| | +--- org.wildfly.common:wildfly-common:1.5.4.Final-format-001 +| | +--- io.quarkus.gizmo:gizmo:1.0.9.Final +| | | +--- org.ow2.asm:asm:9.1 -> 9.3 +| | | +--- org.ow2.asm:asm-util:9.1 +| | | | +--- org.ow2.asm:asm:9.1 -> 9.3 +| | | | +--- org.ow2.asm:asm-tree:9.1 +| | | | | \--- org.ow2.asm:asm:9.1 -> 9.3 +| | | | \--- org.ow2.asm:asm-analysis:9.1 +| | | | \--- org.ow2.asm:asm-tree:9.1 (*) +| | | \--- org.jboss:jandex:2.3.0.Final +| | +--- org.jboss:jandex:2.3.0.Final +| | +--- org.ow2.asm:asm:9.1 -> 9.3 +| | +--- io.quarkus:quarkus-development-mode-spi:2.0.2.Final -> 2.13.7.Final +| | +--- io.quarkus:quarkus-class-change-agent:2.0.2.Final +| | +--- io.quarkus:quarkus-bootstrap-core:2.0.2.Final +| | | +--- io.quarkus:quarkus-bootstrap-app-model:2.0.2.Final +| | | | \--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | +--- io.quarkus:quarkus-bootstrap-maven-resolver:2.0.2.Final +| | | | +--- io.quarkus:quarkus-bootstrap-app-model:2.0.2.Final (*) +| | | | +--- org.jboss.logmanager:jboss-logmanager-embedded:1.0.9 -> 1.0.10 (*) +| | | | +--- org.jboss.slf4j:slf4j-jboss-logmanager:1.1.0.Final -> 1.2.0.Final +| | | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | | +--- org.slf4j:slf4j-api:1.7.30 -> 1.7.36 +| | | | +--- org.apache.maven:maven-embedder:3.8.1 +| | | | | +--- org.apache.maven:maven-settings:3.8.1 +| | | | | | \--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | +--- org.apache.maven:maven-settings-builder:3.8.1 +| | | | | | +--- org.apache.maven:maven-builder-support:3.8.1 +| | | | | | +--- org.codehaus.plexus:plexus-interpolation:1.25 +| | | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | +--- org.apache.maven:maven-settings:3.8.1 (*) +| | | | | | \--- org.sonatype.plexus:plexus-sec-dispatcher:1.4 +| | | | | | +--- org.codehaus.plexus:plexus-utils:1.5.5 -> 3.3.0 +| | | | | | \--- org.sonatype.plexus:plexus-cipher:1.4 +| | | | | +--- org.apache.maven:maven-core:3.8.1 +| | | | | | +--- org.apache.maven:maven-model:3.8.1 +| | | | | | | \--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | +--- org.apache.maven:maven-settings:3.8.1 (*) +| | | | | | +--- org.apache.maven:maven-settings-builder:3.8.1 (*) +| | | | | | +--- org.apache.maven:maven-builder-support:3.8.1 +| | | | | | +--- org.apache.maven:maven-repository-metadata:3.8.1 +| | | | | | | \--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | +--- org.apache.maven:maven-artifact:3.8.1 +| | | | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | | \--- org.apache.commons:commons-lang3:3.8.1 -> 3.12.0 +| | | | | | +--- org.apache.maven:maven-plugin-api:3.8.1 +| | | | | | | +--- org.apache.maven:maven-model:3.8.1 (*) +| | | | | | | +--- org.apache.maven:maven-artifact:3.8.1 (*) +| | | | | | | +--- org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.4 +| | | | | | | | +--- org.codehaus.plexus:plexus-component-annotations:1.5.5 -> 2.1.0 +| | | | | | | | +--- org.codehaus.plexus:plexus-classworlds:2.5.2 -> 2.6.0 +| | | | | | | | \--- org.codehaus.plexus:plexus-utils:3.0.17 -> 3.3.0 +| | | | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | | \--- org.codehaus.plexus:plexus-classworlds:2.6.0 +| | | | | | +--- org.apache.maven:maven-model-builder:3.8.1 +| | | | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | | +--- org.codehaus.plexus:plexus-interpolation:1.25 +| | | | | | | +--- org.apache.maven:maven-model:3.8.1 (*) +| | | | | | | +--- org.apache.maven:maven-artifact:3.8.1 (*) +| | | | | | | \--- org.apache.maven:maven-builder-support:3.8.1 +| | | | | | +--- org.apache.maven:maven-resolver-provider:3.8.1 +| | | | | | | +--- org.apache.maven:maven-model:3.8.1 (*) +| | | | | | | +--- org.apache.maven:maven-model-builder:3.8.1 (*) +| | | | | | | +--- org.apache.maven:maven-repository-metadata:3.8.1 (*) +| | | | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | | | +--- org.apache.maven.resolver:maven-resolver-spi:1.6.2 +| | | | | | | | \--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | | | +--- org.apache.maven.resolver:maven-resolver-util:1.6.2 +| | | | | | | | \--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | | | +--- org.apache.maven.resolver:maven-resolver-impl:1.6.2 +| | | | | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | | | | +--- org.apache.maven.resolver:maven-resolver-spi:1.6.2 (*) +| | | | | | | | +--- org.apache.maven.resolver:maven-resolver-util:1.6.2 (*) +| | | | | | | | \--- org.apache.commons:commons-lang3:3.8.1 -> 3.12.0 +| | | | | | | \--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | +--- org.apache.maven.resolver:maven-resolver-impl:1.6.2 (*) +| | | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | | +--- org.apache.maven.resolver:maven-resolver-spi:1.6.2 (*) +| | | | | | +--- org.apache.maven.resolver:maven-resolver-util:1.6.2 (*) +| | | | | | +--- org.apache.maven.shared:maven-shared-utils:3.2.1 +| | | | | | | \--- commons-io:commons-io:2.5 -> 2.6 +| | | | | | +--- org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.4 (*) +| | | | | | +--- com.google.inject:guice:4.2.1 +| | | | | | | +--- aopalliance:aopalliance:1.0 +| | | | | | | \--- com.google.guava:guava:25.1-android +| | | | | | | +--- com.google.code.findbugs:jsr305:3.0.2 +| | | | | | | +--- org.checkerframework:checker-compat-qual:2.0.0 +| | | | | | | +--- com.google.errorprone:error_prone_annotations:2.1.3 -> 2.10.0 +| | | | | | | +--- com.google.j2objc:j2objc-annotations:1.1 +| | | | | | | \--- org.codehaus.mojo:animal-sniffer-annotations:1.14 +| | | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | +--- org.codehaus.plexus:plexus-classworlds:2.6.0 +| | | | | | +--- org.codehaus.plexus:plexus-component-annotations:2.1.0 +| | | | | | \--- org.apache.commons:commons-lang3:3.8.1 -> 3.12.0 +| | | | | +--- org.apache.maven:maven-plugin-api:3.8.1 (*) +| | | | | +--- org.apache.maven:maven-model:3.8.1 (*) +| | | | | +--- org.apache.maven:maven-model-builder:3.8.1 (*) +| | | | | +--- org.apache.maven:maven-builder-support:3.8.1 +| | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | +--- org.apache.maven.resolver:maven-resolver-util:1.6.2 (*) +| | | | | +--- org.apache.maven.shared:maven-shared-utils:3.2.1 (*) +| | | | | +--- com.google.inject:guice:4.2.1 (*) +| | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | +--- org.codehaus.plexus:plexus-classworlds:2.6.0 +| | | | | +--- org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.4 (*) +| | | | | +--- commons-cli:commons-cli:1.4 +| | | | | \--- org.apache.commons:commons-lang3:3.8.1 -> 3.12.0 +| | | | +--- org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.4 (*) +| | | | +--- org.apache.maven:maven-settings-builder:3.8.1 (*) +| | | | +--- org.apache.maven:maven-resolver-provider:3.8.1 (*) +| | | | +--- org.apache.maven.resolver:maven-resolver-connector-basic:1.6.2 +| | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | +--- org.apache.maven.resolver:maven-resolver-spi:1.6.2 (*) +| | | | | \--- org.apache.maven.resolver:maven-resolver-util:1.6.2 (*) +| | | | +--- org.apache.maven.resolver:maven-resolver-transport-wagon:1.6.2 +| | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | +--- org.apache.maven.resolver:maven-resolver-spi:1.6.2 (*) +| | | | | +--- org.apache.maven.resolver:maven-resolver-util:1.6.2 (*) +| | | | | \--- org.slf4j:slf4j-api:1.7.30 -> 1.7.36 +| | | | +--- org.apache.maven.wagon:wagon-http:3.4.3 +| | | | | +--- org.apache.maven.wagon:wagon-http-shared:3.4.3 +| | | | | | +--- org.jsoup:jsoup:1.12.1 +| | | | | | +--- org.apache.httpcomponents:httpclient:4.5.13 +| | | | | | | +--- org.apache.httpcomponents:httpcore:4.4.13 -> 4.4.14 +| | | | | | | \--- commons-codec:commons-codec:1.11 +| | | | | | +--- org.apache.httpcomponents:httpcore:4.4.14 +| | | | | | +--- commons-io:commons-io:2.6 +| | | | | | +--- org.slf4j:slf4j-api:1.7.25 -> 1.7.36 +| | | | | | \--- org.apache.maven.wagon:wagon-provider-api:3.4.3 +| | | | | | \--- org.codehaus.plexus:plexus-utils:3.3.0 +| | | | | +--- org.apache.httpcomponents:httpclient:4.5.13 (*) +| | | | | +--- org.apache.httpcomponents:httpcore:4.4.14 +| | | | | +--- org.codehaus.plexus:plexus-utils:3.3.0 +| | | | | \--- org.apache.maven.wagon:wagon-provider-api:3.4.3 (*) +| | | | \--- org.apache.maven.wagon:wagon-file:3.4.3 +| | | | +--- org.codehaus.plexus:plexus-utils:3.3.0 +| | | | \--- org.apache.maven.wagon:wagon-provider-api:3.4.3 (*) +| | | +--- io.quarkus:quarkus-bootstrap-gradle-resolver:2.0.2.Final +| | | | +--- io.quarkus:quarkus-bootstrap-app-model:2.0.2.Final (*) +| | | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | | \--- org.jboss.slf4j:slf4j-jboss-logmanager:1.1.0.Final -> 1.2.0.Final +| | | \--- io.smallrye.common:smallrye-common-io:1.6.0 -> 1.13.1 +| | +--- io.quarkus:quarkus-devtools-utilities:2.0.2.Final +| | +--- io.quarkus:quarkus-core:2.0.2.Final -> 2.13.7.Final (*) +| | +--- io.quarkus:quarkus-builder:2.0.2.Final +| | | +--- org.wildfly.common:wildfly-common:1.5.4.Final-format-001 +| | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | \--- org.jboss.threads:jboss-threads:3.4.0.Final -> 3.4.3.Final (*) +| | +--- org.graalvm.sdk:graal-sdk:21.1.0 -> 22.3.0 +| | +--- org.junit.platform:junit-platform-launcher:1.7.2 +| | | +--- org.junit:junit-bom:5.7.2 +| | | | +--- org.junit.jupiter:junit-jupiter:5.7.2 (c) +| | | | +--- org.junit.jupiter:junit-jupiter-api:5.7.2 (c) +| | | | +--- org.junit.jupiter:junit-jupiter-params:5.7.2 (c) +| | | | +--- org.junit.platform:junit-platform-engine:1.7.2 (c) +| | | | +--- org.junit.platform:junit-platform-launcher:1.7.2 (c) +| | | | \--- org.junit.platform:junit-platform-commons:1.7.2 (c) +| | | +--- org.apiguardian:apiguardian-api:1.1.0 +| | | \--- org.junit.platform:junit-platform-engine:1.7.2 +| | | +--- org.junit:junit-bom:5.7.2 (*) +| | | +--- org.apiguardian:apiguardian-api:1.1.0 +| | | +--- org.opentest4j:opentest4j:1.2.0 +| | | \--- org.junit.platform:junit-platform-commons:1.7.2 +| | | +--- org.junit:junit-bom:5.7.2 (*) +| | | \--- org.apiguardian:apiguardian-api:1.1.0 +| | \--- org.junit.jupiter:junit-jupiter:5.7.2 +| | +--- org.junit:junit-bom:5.7.2 (*) +| | +--- org.junit.jupiter:junit-jupiter-api:5.7.2 +| | | +--- org.junit:junit-bom:5.7.2 (*) +| | | +--- org.apiguardian:apiguardian-api:1.1.0 +| | | +--- org.opentest4j:opentest4j:1.2.0 +| | | \--- org.junit.platform:junit-platform-commons:1.7.2 (*) +| | \--- org.junit.jupiter:junit-jupiter-params:5.7.2 +| | +--- org.junit:junit-bom:5.7.2 (*) +| | +--- org.apiguardian:apiguardian-api:1.1.0 +| | \--- org.junit.jupiter:junit-jupiter-api:5.7.2 (*) +| +--- io.quarkus:quarkus-hibernate-orm:2.0.2.Final -> 2.13.5.Final (*) +| +--- io.quarkus:quarkus-narayana-jta-deployment:2.0.2.Final +| | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-vertx-http-dev-console-spi:2.0.2.Final +| | | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | | +--- io.quarkus:quarkus-vertx-http-dev-console-runtime-spi:2.0.2.Final -> 2.13.7.Final (*) +| | | | +--- io.quarkus.arc:arc:2.0.2.Final -> 2.13.7.Final (*) +| | | | \--- io.vertx:vertx-web:4.1.0 -> 4.3.4 (*) +| | | +--- io.quarkus:quarkus-arc:2.0.2.Final -> 2.13.7.Final (*) +| | | \--- io.quarkus.arc:arc-processor:2.0.2.Final +| | | +--- io.quarkus.arc:arc:2.0.2.Final -> 2.13.7.Final (*) +| | | +--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 (*) +| | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | +--- org.jboss:jandex:2.3.0.Final +| | | +--- io.quarkus.gizmo:gizmo:1.0.8.Final -> 1.0.9.Final (*) +| | | \--- jakarta.annotation:jakarta.annotation-api:1.3.5 +| | +--- io.quarkus:quarkus-mutiny-deployment:2.0.2.Final +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-smallrye-context-propagation-deployment:2.0.2.Final +| | | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | | | \--- io.quarkus:quarkus-smallrye-context-propagation:2.0.2.Final -> 2.13.7.Final (*) +| | | \--- io.quarkus:quarkus-mutiny:2.0.2.Final -> 2.13.7.Final (*) +| | \--- io.quarkus:quarkus-narayana-jta:2.0.2.Final -> 2.13.5.Final (*) +| +--- io.quarkus:quarkus-agroal-deployment:2.0.2.Final +| | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-datasource-deployment:2.0.2.Final +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-datasource:2.0.2.Final -> 2.13.5.Final (*) +| | | \--- io.quarkus:quarkus-datasource-deployment-spi:2.0.2.Final +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | | \--- io.quarkus:quarkus-datasource-common:2.0.2.Final -> 2.13.5.Final +| | +--- io.quarkus:quarkus-agroal:2.0.2.Final -> 2.13.5.Final (*) +| | +--- io.quarkus:quarkus-agroal-spi:2.0.2.Final +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | \--- io.quarkus:quarkus-datasource-common:2.0.2.Final -> 2.13.5.Final +| | +--- io.quarkus:quarkus-narayana-jta-deployment:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-credentials-deployment:2.0.2.Final +| | | +--- io.quarkus:quarkus-credentials:2.0.2.Final -> 2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | \--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | \--- io.quarkus:quarkus-smallrye-health-spi:2.0.2.Final +| | \--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| +--- io.quarkus:quarkus-caffeine-deployment:2.0.2.Final +| | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | \--- io.quarkus:quarkus-caffeine:2.0.2.Final -> 2.13.5.Final (*) +| \--- io.quarkus:quarkus-panache-hibernate-common-deployment:2.0.2.Final +| +--- io.quarkus:quarkus-panache-hibernate-common:2.0.2.Final +| | +--- io.quarkus:quarkus-core:2.0.2.Final -> 2.13.7.Final (*) +| | +--- io.quarkus:quarkus-arc:2.0.2.Final -> 2.13.7.Final (*) +| | +--- io.quarkus:quarkus-panache-common:2.0.2.Final +| | | +--- io.quarkus:quarkus-core:2.0.2.Final -> 2.13.7.Final (*) +| | | \--- io.quarkus:quarkus-arc:2.0.2.Final -> 2.13.7.Final (*) +| | \--- io.quarkus:quarkus-hibernate-orm:2.0.2.Final -> 2.13.5.Final (*) +| +--- io.quarkus:quarkus-panache-common-deployment:2.0.2.Final +| | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-panache-common:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | +--- org.jboss:jandex:2.3.0.Final +| | +--- jakarta.validation:jakarta.validation-api:2.0.2 +| | \--- org.ow2.asm:asm:9.1 -> 9.3 +| +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| +--- org.jboss:jandex:2.3.0.Final +| \--- org.ow2.asm:asm:9.1 -> 9.3 +\--- log4j:log4j:1.2.17 + +compileOnly - Compile-only dependencies for the 'main' feature. (n) +No dependencies + +default - Configuration for default artifacts. (n) +No dependencies + +implementation - Implementation dependencies for the 'main' feature. (n) ++--- io.quarkus:quarkus-hibernate-orm:2.13.5.Final (n) ++--- io.quarkus:quarkus-agroal:2.13.5.Final (n) ++--- io.quarkus:quarkus-resteasy:2.13.5.Final (n) ++--- io.quarkus:quarkus-resteasy-jackson:2.13.5.Final (n) ++--- io.quarkus:quarkus-jdbc-postgresql:2.13.5.Final (n) ++--- io.quarkus:quarkus-vertx-http:2.13.5.Final (n) ++--- io.quarkus:quarkus-kubernetes-service-binding:2.13.5.Final (n) ++--- io.quarkus:quarkus-container-image-docker:2.13.5.Final (n) ++--- jakarta.validation:jakarta.validation-api:2.0.2 (n) ++--- io.quarkus:quarkus-resteasy-multipart:2.13.7.Final (n) ++--- io.quarkus:quarkus-hibernate-orm-deployment:2.0.2.Final (n) +\--- log4j:log4j:1.2.17 (n) + +mainSourceElements - List of source directories contained in the Main SourceSet. (n) +No dependencies + +runtimeClasspath - Runtime classpath of source set 'main'. ++--- io.quarkus:quarkus-hibernate-orm:2.13.5.Final +| +--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final +| | +--- jakarta.annotation:jakarta.annotation-api:1.3.5 +| | +--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 +| | | +--- jakarta.el:jakarta.el-api:3.0.3 +| | | +--- jakarta.interceptor:jakarta.interceptor-api:1.2.5 +| | | | +--- jakarta.annotation:jakarta.annotation-api:1.3.5 +| | | | \--- jakarta.ejb:jakarta.ejb-api:3.2.6 +| | | | \--- jakarta.transaction:jakarta.transaction-api:1.3.2 -> 1.3.3 +| | | \--- jakarta.inject:jakarta.inject-api:1.0 +| | +--- jakarta.inject:jakarta.inject-api:1.0 +| | +--- io.quarkus:quarkus-ide-launcher:2.13.7.Final +| | +--- io.quarkus:quarkus-development-mode-spi:2.13.7.Final +| | +--- io.smallrye.config:smallrye-config:2.12.3 +| | | +--- io.smallrye.config:smallrye-config-core:2.12.3 +| | | | +--- org.eclipse.microprofile.config:microprofile-config-api:2.0.1 +| | | | +--- io.smallrye.common:smallrye-common-annotation:1.13.1 +| | | | +--- io.smallrye.common:smallrye-common-expression:1.13.1 +| | | | | +--- io.smallrye.common:smallrye-common-function:1.13.1 +| | | | | | \--- io.smallrye.common:smallrye-common-constraint:1.13.1 +| | | | | | \--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | | | | \--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | | | +--- io.smallrye.common:smallrye-common-constraint:1.13.1 (*) +| | | | +--- io.smallrye.common:smallrye-common-classloader:1.13.1 +| | | | +--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | | | +--- org.ow2.asm:asm:9.3 +| | | | \--- io.smallrye.config:smallrye-config-common:2.12.3 +| | | | +--- org.eclipse.microprofile.config:microprofile-config-api:2.0.1 +| | | | +--- io.smallrye.common:smallrye-common-classloader:1.13.1 +| | | | \--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | | \--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | +--- org.jboss.logging:jboss-logging:3.5.0.Final +| | +--- org.jboss.logmanager:jboss-logmanager-embedded:1.0.10 +| | | \--- org.wildfly.common:wildfly-common:1.5.0.Final-format-001 -> 1.5.4.Final-format-001 +| | +--- org.jboss.logging:jboss-logging-annotations:2.2.1.Final +| | +--- org.jboss.threads:jboss-threads:3.4.3.Final +| | | +--- org.jboss.logging:jboss-logging:3.4.1.Final -> 3.5.0.Final +| | | \--- org.wildfly.common:wildfly-common:1.5.0.Final -> 1.5.4.Final-format-001 +| | +--- org.slf4j:slf4j-api:1.7.36 +| | +--- org.jboss.slf4j:slf4j-jboss-logmanager:1.2.0.Final +| | +--- org.graalvm.sdk:graal-sdk:22.3.0 +| | +--- org.wildfly.common:wildfly-common:1.5.4.Final-format-001 +| | +--- io.quarkus:quarkus-bootstrap-runner:2.13.7.Final +| | | +--- io.smallrye.common:smallrye-common-io:1.13.1 +| | | +--- org.jboss.logmanager:jboss-logmanager-embedded:1.0.10 (*) +| | | +--- org.jboss.logging:jboss-logging:3.5.0.Final +| | | \--- io.github.crac:org-crac:0.1.1 +| | \--- io.quarkus:quarkus-fs-util:0.0.9 +| +--- io.quarkus:quarkus-agroal:2.13.5.Final +| | +--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) +| | +--- io.quarkus:quarkus-arc:2.13.5.Final -> 2.13.7.Final +| | | +--- io.quarkus.arc:arc:2.13.7.Final +| | | | +--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 (*) +| | | | +--- jakarta.annotation:jakarta.annotation-api:1.3.5 +| | | | +--- jakarta.transaction:jakarta.transaction-api:1.3.3 +| | | | +--- io.smallrye.reactive:mutiny:1.6.0 -> 1.7.0 +| | | | | +--- org.reactivestreams:reactive-streams:1.0.3 +| | | | | \--- io.smallrye.common:smallrye-common-annotation:1.13.0 -> 1.13.1 +| | | | \--- org.jboss.logging:jboss-logging:3.5.0.Final +| | | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | | \--- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.2 -> 1.3 +| | +--- io.quarkus:quarkus-datasource:2.13.5.Final +| | | +--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-arc:2.13.5.Final -> 2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-datasource-common:2.13.5.Final +| | | \--- io.quarkus:quarkus-credentials:2.13.5.Final -> 2.13.7.Final +| | | \--- io.quarkus.arc:arc:2.13.7.Final (*) +| | +--- io.quarkus:quarkus-narayana-jta:2.13.5.Final +| | | +--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-arc:2.13.5.Final -> 2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-transaction-annotations:2.13.5.Final +| | | +--- io.quarkus:quarkus-mutiny:2.13.5.Final -> 2.13.7.Final +| | | | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | | | +--- io.smallrye.reactive:mutiny:1.7.0 (*) +| | | | +--- io.quarkus:quarkus-smallrye-context-propagation:2.13.7.Final +| | | | | +--- io.smallrye:smallrye-context-propagation:1.2.2 +| | | | | | +--- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.2 -> 1.3 +| | | | | | +--- io.smallrye:smallrye-context-propagation-api:1.2.2 +| | | | | | | +--- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.2 -> 1.3 +| | | | | | | \--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 (*) +| | | | | | +--- io.smallrye:smallrye-context-propagation-storage:1.2.2 +| | | | | | +--- org.eclipse.microprofile.config:microprofile-config-api:1.4 -> 2.0.1 +| | | | | | \--- org.jboss.threads:jboss-threads:3.1.1.Final -> 3.4.3.Final (*) +| | | | | +--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 (*) +| | | | | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | | | | \--- io.quarkus:quarkus-arc:2.13.7.Final (*) +| | | | \--- io.smallrye.reactive:mutiny-smallrye-context-propagation:1.7.0 +| | | | +--- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.3 +| | | | +--- io.smallrye.reactive:mutiny:1.7.0 (*) +| | | | \--- io.smallrye:smallrye-context-propagation:1.2.2 (*) +| | | +--- io.smallrye:smallrye-context-propagation-jta:1.2.2 +| | | | \--- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.2 -> 1.3 +| | | +--- jakarta.transaction:jakarta.transaction-api:1.3.3 +| | | +--- io.smallrye.reactive:smallrye-reactive-converter-api:2.7.0 +| | | | \--- org.reactivestreams:reactive-streams:1.0.3 +| | | +--- io.smallrye.reactive:smallrye-reactive-converter-mutiny:2.7.0 +| | | | +--- io.smallrye.reactive:mutiny:1.4.0 -> 1.7.0 (*) +| | | | \--- io.smallrye.reactive:smallrye-reactive-converter-api:2.7.0 (*) +| | | +--- org.jboss.narayana.jta:narayana-jta:5.13.1.Alpha1 +| | | | +--- org.jboss:jboss-transaction-spi:7.6.1.Final +| | | | | \--- org.jboss.spec.javax.resource:jboss-connector-api_1.7_spec:1.0.0.Final +| | | | \--- org.jboss.spec.javax.resource:jboss-connector-api_1.7_spec:1.0.0.Final +| | | \--- org.jboss.narayana.jts:narayana-jts-integration:5.13.1.Alpha1 +| | +--- io.agroal:agroal-api:1.16 +| | +--- io.agroal:agroal-narayana:1.16 +| | | +--- io.agroal:agroal-api:1.16 +| | | \--- org.jboss:jboss-transaction-spi:7.6.1.Final (*) +| | +--- io.agroal:agroal-pool:1.16 +| | | \--- io.agroal:agroal-api:1.16 +| | \--- io.quarkus:quarkus-credentials:2.13.5.Final -> 2.13.7.Final (*) +| +--- io.quarkus:quarkus-narayana-jta:2.13.5.Final (*) +| +--- org.hibernate:hibernate-core:5.6.14.Final +| | +--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | +--- net.bytebuddy:byte-buddy:1.12.18 +| | +--- antlr:antlr:2.7.7 +| | +--- com.fasterxml:classmate:1.5.1 +| | \--- org.hibernate.common:hibernate-commons-annotations:5.1.2.Final +| | \--- org.jboss.logging:jboss-logging:3.3.2.Final -> 3.5.0.Final +| +--- org.hibernate:hibernate-graalvm:5.6.14.Final +| | \--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| +--- org.glassfish.jaxb:jaxb-runtime:2.3.3-b02 +| | +--- org.glassfish.jaxb:txw2:2.3.3-b02 +| | +--- com.sun.istack:istack-commons-runtime:3.0.10 +| | \--- com.sun.activation:jakarta.activation:1.2.1 +| +--- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final +| +--- jakarta.persistence:jakarta.persistence-api:2.2.3 +| +--- jakarta.transaction:jakarta.transaction-api:1.3.3 +| +--- org.hibernate:quarkus-local-cache:0.1.1 +| \--- io.quarkus:quarkus-caffeine:2.13.5.Final +| +--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) +| \--- com.github.ben-manes.caffeine:caffeine:2.9.3 +| \--- com.google.errorprone:error_prone_annotations:2.10.0 ++--- io.quarkus:quarkus-agroal:2.13.5.Final (*) ++--- io.quarkus:quarkus-resteasy:2.13.5.Final -> 2.13.7.Final +| +--- io.quarkus:quarkus-vertx-http:2.13.7.Final +| | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | +--- io.quarkus:quarkus-security-runtime-spi:2.13.7.Final +| | | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | | \--- io.quarkus.security:quarkus-security:1.1.4.Final +| | | +--- org.jboss.logging:jboss-logging:3.3.2.Final -> 3.5.0.Final +| | | \--- io.smallrye.reactive:mutiny:0.4.3 -> 1.7.0 (*) +| | +--- io.quarkus:quarkus-credentials:2.13.7.Final (*) +| | +--- io.quarkus:quarkus-mutiny:2.13.7.Final (*) +| | +--- io.smallrye.common:smallrye-common-vertx-context:1.13.1 +| | | +--- io.vertx:vertx-core:4.3.3 -> 4.3.4 +| | | | +--- io.netty:netty-common:4.1.82.Final -> 4.1.86.Final +| | | | +--- io.netty:netty-buffer:4.1.82.Final -> 4.1.86.Final +| | | | | \--- io.netty:netty-common:4.1.86.Final +| | | | +--- io.netty:netty-transport:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | \--- io.netty:netty-resolver:4.1.86.Final +| | | | | \--- io.netty:netty-common:4.1.86.Final +| | | | +--- io.netty:netty-handler:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | +--- io.netty:netty-resolver:4.1.86.Final (*) +| | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport:4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport-native-unix-common:4.1.86.Final +| | | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | | \--- io.netty:netty-transport:4.1.86.Final (*) +| | | | | \--- io.netty:netty-codec:4.1.86.Final +| | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | \--- io.netty:netty-transport:4.1.86.Final (*) +| | | | +--- io.netty:netty-handler-proxy:4.1.82.Final +| | | | | +--- io.netty:netty-common:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec-socks:4.1.82.Final +| | | | | | +--- io.netty:netty-common:4.1.82.Final -> 4.1.86.Final +| | | | | | +--- io.netty:netty-buffer:4.1.82.Final -> 4.1.86.Final (*) +| | | | | | +--- io.netty:netty-transport:4.1.82.Final -> 4.1.86.Final (*) +| | | | | | \--- io.netty:netty-codec:4.1.82.Final -> 4.1.86.Final (*) +| | | | | \--- io.netty:netty-codec-http:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport:4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec:4.1.86.Final (*) +| | | | | \--- io.netty:netty-handler:4.1.86.Final (*) +| | | | +--- io.netty:netty-codec-http:4.1.82.Final -> 4.1.86.Final (*) +| | | | +--- io.netty:netty-codec-http2:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport:4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec:4.1.86.Final (*) +| | | | | +--- io.netty:netty-handler:4.1.86.Final (*) +| | | | | \--- io.netty:netty-codec-http:4.1.86.Final (*) +| | | | +--- io.netty:netty-resolver:4.1.82.Final -> 4.1.86.Final (*) +| | | | +--- io.netty:netty-resolver-dns:4.1.82.Final +| | | | | +--- io.netty:netty-common:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-resolver:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec-dns:4.1.82.Final +| | | | | | +--- io.netty:netty-common:4.1.82.Final -> 4.1.86.Final +| | | | | | +--- io.netty:netty-buffer:4.1.82.Final -> 4.1.86.Final (*) +| | | | | | +--- io.netty:netty-transport:4.1.82.Final -> 4.1.86.Final (*) +| | | | | | \--- io.netty:netty-codec:4.1.82.Final -> 4.1.86.Final (*) +| | | | | \--- io.netty:netty-handler:4.1.82.Final -> 4.1.86.Final (*) +| | | | \--- com.fasterxml.jackson.core:jackson-core:2.13.4 +| | | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 +| | | | +--- com.fasterxml.jackson.core:jackson-annotations:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (c) +| | | | +--- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.module:jackson-module-parameter-names:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.13.4 (c) +| | | | \--- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.13.4 (c) +| | | \--- io.smallrye.common:smallrye-common-constraint:1.13.1 (*) +| | +--- io.quarkus:quarkus-vertx-http-dev-console-runtime-spi:2.13.7.Final +| | | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | | +--- io.quarkus.arc:arc:2.13.7.Final (*) +| | | \--- io.vertx:vertx-web:4.3.4 +| | | +--- io.vertx:vertx-web-common:4.3.4 +| | | | \--- io.vertx:vertx-core:4.3.4 (*) +| | | +--- io.vertx:vertx-auth-common:4.3.4 +| | | | \--- io.vertx:vertx-core:4.3.4 (*) +| | | +--- io.vertx:vertx-bridge-common:4.3.4 +| | | | \--- io.vertx:vertx-core:4.3.4 (*) +| | | \--- io.vertx:vertx-core:4.3.4 (*) +| | +--- io.quarkus.security:quarkus-security:1.1.4.Final (*) +| | +--- io.quarkus:quarkus-vertx:2.13.7.Final +| | | +--- io.quarkus:quarkus-arc:2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-netty:2.13.7.Final +| | | | +--- io.netty:netty-codec:4.1.86.Final (*) +| | | | +--- io.netty:netty-codec-http:4.1.86.Final (*) +| | | | +--- io.netty:netty-codec-http2:4.1.86.Final (*) +| | | | +--- io.quarkus:quarkus-arc:2.13.7.Final (*) +| | | | +--- io.netty:netty-handler:4.1.86.Final (*) +| | | | +--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 (*) +| | | | \--- com.aayushatharva.brotli4j:brotli4j:1.7.1 +| | | +--- io.netty:netty-codec-haproxy:4.1.86.Final +| | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | +--- io.netty:netty-transport:4.1.86.Final (*) +| | | | \--- io.netty:netty-codec:4.1.86.Final (*) +| | | +--- io.smallrye.common:smallrye-common-annotation:1.13.1 +| | | +--- io.smallrye.common:smallrye-common-vertx-context:1.13.1 (*) +| | | +--- io.quarkus:quarkus-mutiny:2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-vertx-latebound-mdc-provider:2.13.7.Final +| | | | \--- org.jboss.logmanager:jboss-logmanager-embedded:1.0.10 (*) +| | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 +| | | | +--- io.smallrye.reactive:mutiny:1.7.0 (*) +| | | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-runtime:2.27.0 +| | | | | +--- io.smallrye.reactive:mutiny:1.7.0 (*) +| | | | | \--- io.vertx:vertx-core:4.3.4 (*) +| | | | +--- io.vertx:vertx-core:4.3.4 (*) +| | | | \--- io.smallrye.reactive:vertx-mutiny-generator:2.27.0 +| | | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-runtime:2.27.0 (*) +| | | | +--- io.vertx:vertx-codegen:4.3.4 +| | | | | \--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | | \--- io.smallrye.common:smallrye-common-annotation:1.13.0 -> 1.13.1 +| | | \--- io.smallrye:smallrye-fault-tolerance-vertx:5.5.0 +| | +--- io.smallrye.reactive:smallrye-mutiny-vertx-web:2.27.0 +| | | +--- io.vertx:vertx-web:4.3.4 (*) +| | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 (*) +| | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-web-common:2.27.0 +| | | | +--- io.vertx:vertx-web-common:4.3.4 (*) +| | | | \--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 (*) +| | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-auth-common:2.27.0 +| | | | +--- io.vertx:vertx-auth-common:4.3.4 (*) +| | | | \--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 (*) +| | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-bridge-common:2.27.0 +| | | | +--- io.vertx:vertx-bridge-common:4.3.4 (*) +| | | | \--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 (*) +| | | \--- io.smallrye.reactive:smallrye-mutiny-vertx-uri-template:2.27.0 +| | | +--- io.vertx:vertx-uri-template:4.3.4 +| | | | \--- io.vertx:vertx-core:4.3.4 (*) +| | | \--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 (*) +| | +--- io.vertx:vertx-web:4.3.4 (*) +| | \--- io.github.crac:org-crac:0.1.1 +| \--- io.quarkus:quarkus-resteasy-server-common:2.13.7.Final +| +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| +--- io.quarkus:quarkus-arc:2.13.7.Final (*) +| +--- io.quarkus:quarkus-resteasy-common:2.13.7.Final +| | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | +--- org.jboss.resteasy:resteasy-core:4.7.7.Final +| | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | +--- org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec:2.0.1.Final +| | | +--- org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.1_spec:2.0.1.Final +| | | +--- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final +| | | +--- org.jboss.resteasy:resteasy-core-spi:4.7.7.Final +| | | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | | +--- org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec:2.0.1.Final +| | | | +--- org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.1_spec:2.0.1.Final +| | | | +--- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final +| | | | +--- org.reactivestreams:reactive-streams:1.0.3 +| | | | \--- jakarta.validation:jakarta.validation-api:2.0.2 +| | | +--- org.reactivestreams:reactive-streams:1.0.3 +| | | +--- jakarta.validation:jakarta.validation-api:2.0.2 +| | | +--- com.ibm.async:asyncutil:0.1.0 +| | | \--- io.smallrye.config:smallrye-config:2.3.0 -> 2.12.3 (*) +| | +--- io.quarkus:quarkus-arc:2.13.7.Final (*) +| | \--- com.sun.activation:jakarta.activation:1.2.1 +| \--- jakarta.validation:jakarta.validation-api:2.0.2 ++--- io.quarkus:quarkus-resteasy-jackson:2.13.5.Final +| +--- io.quarkus:quarkus-resteasy:2.13.5.Final -> 2.13.7.Final (*) +| +--- io.quarkus:quarkus-jackson:2.13.5.Final +| | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4.2 +| | | +--- com.fasterxml.jackson.core:jackson-annotations:2.13.4 +| | | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | +--- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.4 +| | | +--- com.fasterxml.jackson.core:jackson-annotations:2.13.4 (*) +| | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (*) +| | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | +--- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.13.4 +| | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (*) +| | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | +--- com.fasterxml.jackson.module:jackson-module-parameter-names:2.13.4 +| | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (*) +| | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | \--- io.quarkus:quarkus-arc:2.13.5.Final -> 2.13.7.Final (*) +| +--- org.jboss.resteasy:resteasy-jackson2-provider:4.7.7.Final +| | +--- com.fasterxml.jackson.core:jackson-core:2.12.6 -> 2.13.4 (*) +| | +--- com.fasterxml.jackson.core:jackson-databind:2.12.6.1 -> 2.13.4.2 (*) +| | +--- com.fasterxml.jackson.core:jackson-annotations:2.12.6 -> 2.13.4 (*) +| | +--- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.12.6 -> 2.13.4 +| | | +--- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.13.4 +| | | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (*) +| | | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | | +--- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.13.4 +| | | | +--- com.fasterxml.jackson.core:jackson-annotations:2.13.4 (*) +| | | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (*) +| | | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | +--- com.github.java-json-tools:json-patch:1.13 +| | | +--- com.fasterxml.jackson.core:jackson-databind:2.11.0 -> 2.13.4.2 (*) +| | | +--- com.github.java-json-tools:msg-simple:1.2 +| | | | \--- com.github.java-json-tools:btf:1.3 +| | | \--- com.github.java-json-tools:jackson-coreutils:2.0 +| | | +--- com.fasterxml.jackson.core:jackson-databind:2.11.0 -> 2.13.4.2 (*) +| | | \--- com.github.java-json-tools:msg-simple:1.2 (*) +| | \--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| \--- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final ++--- io.quarkus:quarkus-jdbc-postgresql:2.13.5.Final +| +--- io.quarkus:quarkus-arc:2.13.5.Final -> 2.13.7.Final (*) +| \--- org.postgresql:postgresql:42.5.0 ++--- io.quarkus:quarkus-vertx-http:2.13.5.Final -> 2.13.7.Final (*) ++--- io.quarkus:quarkus-kubernetes-service-binding:2.13.5.Final +| \--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) ++--- io.quarkus:quarkus-container-image-docker:2.13.5.Final +| \--- io.quarkus:quarkus-container-image:2.13.5.Final +| \--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) ++--- jakarta.validation:jakarta.validation-api:2.0.2 ++--- io.quarkus:quarkus-resteasy-multipart:2.13.7.Final +| +--- io.quarkus:quarkus-resteasy:2.13.7.Final (*) +| +--- org.jboss.resteasy:resteasy-multipart-provider:4.7.7.Final +| | +--- org.jboss.resteasy:resteasy-core-spi:4.7.7.Final (*) +| | +--- org.jboss.resteasy:resteasy-core:4.7.7.Final (*) +| | +--- org.jboss.resteasy:resteasy-jaxb-provider:4.7.7.Final +| | | +--- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final +| | | +--- org.glassfish.jaxb:jaxb-runtime:2.3.3-b02 (*) +| | | \--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | +--- com.sun.mail:jakarta.mail:1.6.5 +| | +--- org.apache.james:apache-mime4j-dom:0.8.3 +| | | \--- org.apache.james:apache-mime4j-core:0.8.3 +| | +--- org.apache.james:apache-mime4j-storage:0.8.3 +| | | +--- org.apache.james:apache-mime4j-dom:0.8.3 (*) +| | | \--- commons-io:commons-io:2.4 -> 2.6 +| | \--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| +--- com.sun.activation:jakarta.activation:1.2.1 +| \--- org.jboss.logging:commons-logging-jboss-logging:1.0.0.Final +| \--- org.jboss.logging:jboss-logging:3.3.1.Final -> 3.5.0.Final ++--- io.quarkus:quarkus-hibernate-orm-deployment:2.0.2.Final +| +--- io.quarkus:quarkus-core-deployment:2.0.2.Final +| | +--- org.aesh:readline:2.1 +| | | \--- org.fusesource.jansi:jansi:1.18 +| | +--- org.apache.commons:commons-lang3:3.12.0 +| | +--- org.wildfly.common:wildfly-common:1.5.4.Final-format-001 +| | +--- io.quarkus.gizmo:gizmo:1.0.9.Final +| | | +--- org.ow2.asm:asm:9.1 -> 9.3 +| | | +--- org.ow2.asm:asm-util:9.1 +| | | | +--- org.ow2.asm:asm:9.1 -> 9.3 +| | | | +--- org.ow2.asm:asm-tree:9.1 +| | | | | \--- org.ow2.asm:asm:9.1 -> 9.3 +| | | | \--- org.ow2.asm:asm-analysis:9.1 +| | | | \--- org.ow2.asm:asm-tree:9.1 (*) +| | | \--- org.jboss:jandex:2.3.0.Final +| | +--- org.jboss:jandex:2.3.0.Final +| | +--- org.ow2.asm:asm:9.1 -> 9.3 +| | +--- io.quarkus:quarkus-development-mode-spi:2.0.2.Final -> 2.13.7.Final +| | +--- io.quarkus:quarkus-class-change-agent:2.0.2.Final +| | +--- io.quarkus:quarkus-bootstrap-core:2.0.2.Final +| | | +--- io.quarkus:quarkus-bootstrap-app-model:2.0.2.Final +| | | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | | \--- org.jboss.logging:commons-logging-jboss-logging:1.0.0.Final (*) +| | | +--- io.quarkus:quarkus-bootstrap-maven-resolver:2.0.2.Final +| | | | +--- io.quarkus:quarkus-bootstrap-app-model:2.0.2.Final (*) +| | | | +--- org.jboss.logmanager:jboss-logmanager-embedded:1.0.9 -> 1.0.10 (*) +| | | | +--- org.jboss.slf4j:slf4j-jboss-logmanager:1.1.0.Final -> 1.2.0.Final +| | | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | | +--- org.slf4j:slf4j-api:1.7.30 -> 1.7.36 +| | | | +--- org.apache.maven:maven-embedder:3.8.1 +| | | | | +--- org.apache.maven:maven-settings:3.8.1 +| | | | | | \--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | +--- org.apache.maven:maven-settings-builder:3.8.1 +| | | | | | +--- org.apache.maven:maven-builder-support:3.8.1 +| | | | | | +--- org.codehaus.plexus:plexus-interpolation:1.25 +| | | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | +--- org.apache.maven:maven-settings:3.8.1 (*) +| | | | | | \--- org.sonatype.plexus:plexus-sec-dispatcher:1.4 +| | | | | | +--- org.codehaus.plexus:plexus-utils:1.5.5 -> 3.3.0 +| | | | | | \--- org.sonatype.plexus:plexus-cipher:1.4 +| | | | | +--- org.apache.maven:maven-core:3.8.1 +| | | | | | +--- org.apache.maven:maven-model:3.8.1 +| | | | | | | \--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | +--- org.apache.maven:maven-settings:3.8.1 (*) +| | | | | | +--- org.apache.maven:maven-settings-builder:3.8.1 (*) +| | | | | | +--- org.apache.maven:maven-builder-support:3.8.1 +| | | | | | +--- org.apache.maven:maven-repository-metadata:3.8.1 +| | | | | | | \--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | +--- org.apache.maven:maven-artifact:3.8.1 +| | | | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | | \--- org.apache.commons:commons-lang3:3.8.1 -> 3.12.0 +| | | | | | +--- org.apache.maven:maven-plugin-api:3.8.1 +| | | | | | | +--- org.apache.maven:maven-model:3.8.1 (*) +| | | | | | | +--- org.apache.maven:maven-artifact:3.8.1 (*) +| | | | | | | +--- org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.4 +| | | | | | | | +--- org.codehaus.plexus:plexus-component-annotations:1.5.5 -> 2.1.0 +| | | | | | | | +--- org.codehaus.plexus:plexus-classworlds:2.5.2 -> 2.6.0 +| | | | | | | | \--- org.codehaus.plexus:plexus-utils:3.0.17 -> 3.3.0 +| | | | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | | \--- org.codehaus.plexus:plexus-classworlds:2.6.0 +| | | | | | +--- org.apache.maven:maven-model-builder:3.8.1 +| | | | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | | +--- org.codehaus.plexus:plexus-interpolation:1.25 +| | | | | | | +--- org.apache.maven:maven-model:3.8.1 (*) +| | | | | | | +--- org.apache.maven:maven-artifact:3.8.1 (*) +| | | | | | | \--- org.apache.maven:maven-builder-support:3.8.1 +| | | | | | +--- org.apache.maven:maven-resolver-provider:3.8.1 +| | | | | | | +--- org.apache.maven:maven-model:3.8.1 (*) +| | | | | | | +--- org.apache.maven:maven-model-builder:3.8.1 (*) +| | | | | | | +--- org.apache.maven:maven-repository-metadata:3.8.1 (*) +| | | | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | | | +--- org.apache.maven.resolver:maven-resolver-spi:1.6.2 +| | | | | | | | \--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | | | +--- org.apache.maven.resolver:maven-resolver-util:1.6.2 +| | | | | | | | \--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | | | +--- org.apache.maven.resolver:maven-resolver-impl:1.6.2 +| | | | | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | | | | +--- org.apache.maven.resolver:maven-resolver-spi:1.6.2 (*) +| | | | | | | | +--- org.apache.maven.resolver:maven-resolver-util:1.6.2 (*) +| | | | | | | | \--- org.apache.commons:commons-lang3:3.8.1 -> 3.12.0 +| | | | | | | \--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | +--- org.apache.maven.resolver:maven-resolver-impl:1.6.2 (*) +| | | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | | +--- org.apache.maven.resolver:maven-resolver-spi:1.6.2 (*) +| | | | | | +--- org.apache.maven.resolver:maven-resolver-util:1.6.2 (*) +| | | | | | +--- org.apache.maven.shared:maven-shared-utils:3.2.1 +| | | | | | | \--- commons-io:commons-io:2.5 -> 2.6 +| | | | | | +--- org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.4 (*) +| | | | | | +--- com.google.inject:guice:4.2.1 +| | | | | | | +--- aopalliance:aopalliance:1.0 +| | | | | | | \--- com.google.guava:guava:25.1-android +| | | | | | | +--- com.google.code.findbugs:jsr305:3.0.2 +| | | | | | | +--- org.checkerframework:checker-compat-qual:2.0.0 +| | | | | | | +--- com.google.errorprone:error_prone_annotations:2.1.3 -> 2.10.0 +| | | | | | | +--- com.google.j2objc:j2objc-annotations:1.1 +| | | | | | | \--- org.codehaus.mojo:animal-sniffer-annotations:1.14 +| | | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | +--- org.codehaus.plexus:plexus-classworlds:2.6.0 +| | | | | | +--- org.codehaus.plexus:plexus-component-annotations:2.1.0 +| | | | | | \--- org.apache.commons:commons-lang3:3.8.1 -> 3.12.0 +| | | | | +--- org.apache.maven:maven-plugin-api:3.8.1 (*) +| | | | | +--- org.apache.maven:maven-model:3.8.1 (*) +| | | | | +--- org.apache.maven:maven-model-builder:3.8.1 (*) +| | | | | +--- org.apache.maven:maven-builder-support:3.8.1 +| | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | +--- org.apache.maven.resolver:maven-resolver-util:1.6.2 (*) +| | | | | +--- org.apache.maven.shared:maven-shared-utils:3.2.1 (*) +| | | | | +--- com.google.inject:guice:4.2.1 (*) +| | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | +--- org.codehaus.plexus:plexus-classworlds:2.6.0 +| | | | | +--- org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.4 (*) +| | | | | +--- commons-cli:commons-cli:1.4 +| | | | | \--- org.apache.commons:commons-lang3:3.8.1 -> 3.12.0 +| | | | +--- org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.4 (*) +| | | | +--- org.apache.maven:maven-settings-builder:3.8.1 (*) +| | | | +--- org.apache.maven:maven-resolver-provider:3.8.1 (*) +| | | | +--- org.apache.maven.resolver:maven-resolver-connector-basic:1.6.2 +| | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | +--- org.apache.maven.resolver:maven-resolver-spi:1.6.2 (*) +| | | | | \--- org.apache.maven.resolver:maven-resolver-util:1.6.2 (*) +| | | | +--- org.apache.maven.resolver:maven-resolver-transport-wagon:1.6.2 +| | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | +--- org.apache.maven.resolver:maven-resolver-spi:1.6.2 (*) +| | | | | +--- org.apache.maven.resolver:maven-resolver-util:1.6.2 (*) +| | | | | \--- org.slf4j:slf4j-api:1.7.30 -> 1.7.36 +| | | | +--- org.apache.maven.wagon:wagon-http:3.4.3 +| | | | | +--- org.apache.maven.wagon:wagon-http-shared:3.4.3 +| | | | | | +--- org.jsoup:jsoup:1.12.1 +| | | | | | +--- org.apache.httpcomponents:httpclient:4.5.13 +| | | | | | | +--- org.apache.httpcomponents:httpcore:4.4.13 -> 4.4.14 +| | | | | | | \--- commons-codec:commons-codec:1.11 +| | | | | | +--- org.apache.httpcomponents:httpcore:4.4.14 +| | | | | | +--- commons-io:commons-io:2.6 +| | | | | | +--- org.slf4j:slf4j-api:1.7.25 -> 1.7.36 +| | | | | | \--- org.apache.maven.wagon:wagon-provider-api:3.4.3 +| | | | | | \--- org.codehaus.plexus:plexus-utils:3.3.0 +| | | | | +--- org.apache.httpcomponents:httpclient:4.5.13 (*) +| | | | | +--- org.apache.httpcomponents:httpcore:4.4.14 +| | | | | +--- org.codehaus.plexus:plexus-utils:3.3.0 +| | | | | \--- org.apache.maven.wagon:wagon-provider-api:3.4.3 (*) +| | | | \--- org.apache.maven.wagon:wagon-file:3.4.3 +| | | | +--- org.codehaus.plexus:plexus-utils:3.3.0 +| | | | \--- org.apache.maven.wagon:wagon-provider-api:3.4.3 (*) +| | | +--- io.quarkus:quarkus-bootstrap-gradle-resolver:2.0.2.Final +| | | | +--- io.quarkus:quarkus-bootstrap-app-model:2.0.2.Final (*) +| | | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | | \--- org.jboss.slf4j:slf4j-jboss-logmanager:1.1.0.Final -> 1.2.0.Final +| | | \--- io.smallrye.common:smallrye-common-io:1.6.0 -> 1.13.1 +| | +--- io.quarkus:quarkus-devtools-utilities:2.0.2.Final +| | +--- org.eclipse.sisu:org.eclipse.sisu.inject:0.3.4 +| | +--- io.quarkus:quarkus-core:2.0.2.Final -> 2.13.7.Final (*) +| | +--- io.quarkus:quarkus-builder:2.0.2.Final +| | | +--- org.wildfly.common:wildfly-common:1.5.4.Final-format-001 +| | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | \--- org.jboss.threads:jboss-threads:3.4.0.Final -> 3.4.3.Final (*) +| | +--- org.graalvm.sdk:graal-sdk:21.1.0 -> 22.3.0 +| | +--- org.junit.platform:junit-platform-launcher:1.7.2 +| | | +--- org.junit:junit-bom:5.7.2 +| | | | +--- org.junit.jupiter:junit-jupiter:5.7.2 (c) +| | | | +--- org.junit.jupiter:junit-jupiter-api:5.7.2 (c) +| | | | +--- org.junit.jupiter:junit-jupiter-engine:5.7.2 (c) +| | | | +--- org.junit.jupiter:junit-jupiter-params:5.7.2 (c) +| | | | +--- org.junit.platform:junit-platform-engine:1.7.2 (c) +| | | | +--- org.junit.platform:junit-platform-launcher:1.7.2 (c) +| | | | \--- org.junit.platform:junit-platform-commons:1.7.2 (c) +| | | +--- org.apiguardian:apiguardian-api:1.1.0 +| | | \--- org.junit.platform:junit-platform-engine:1.7.2 +| | | +--- org.junit:junit-bom:5.7.2 (*) +| | | +--- org.apiguardian:apiguardian-api:1.1.0 +| | | +--- org.opentest4j:opentest4j:1.2.0 +| | | \--- org.junit.platform:junit-platform-commons:1.7.2 +| | | +--- org.junit:junit-bom:5.7.2 (*) +| | | \--- org.apiguardian:apiguardian-api:1.1.0 +| | \--- org.junit.jupiter:junit-jupiter:5.7.2 +| | +--- org.junit:junit-bom:5.7.2 (*) +| | +--- org.junit.jupiter:junit-jupiter-api:5.7.2 +| | | +--- org.junit:junit-bom:5.7.2 (*) +| | | +--- org.apiguardian:apiguardian-api:1.1.0 +| | | +--- org.opentest4j:opentest4j:1.2.0 +| | | \--- org.junit.platform:junit-platform-commons:1.7.2 (*) +| | +--- org.junit.jupiter:junit-jupiter-params:5.7.2 +| | | +--- org.junit:junit-bom:5.7.2 (*) +| | | +--- org.apiguardian:apiguardian-api:1.1.0 +| | | \--- org.junit.jupiter:junit-jupiter-api:5.7.2 (*) +| | \--- org.junit.jupiter:junit-jupiter-engine:5.7.2 +| | +--- org.junit:junit-bom:5.7.2 (*) +| | +--- org.apiguardian:apiguardian-api:1.1.0 +| | +--- org.junit.platform:junit-platform-engine:1.7.2 (*) +| | \--- org.junit.jupiter:junit-jupiter-api:5.7.2 (*) +| +--- io.quarkus:quarkus-hibernate-orm:2.0.2.Final -> 2.13.5.Final (*) +| +--- io.quarkus:quarkus-narayana-jta-deployment:2.0.2.Final +| | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-vertx-http-dev-console-spi:2.0.2.Final +| | | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | | +--- io.quarkus:quarkus-vertx-http-dev-console-runtime-spi:2.0.2.Final -> 2.13.7.Final (*) +| | | | +--- io.quarkus.arc:arc:2.0.2.Final -> 2.13.7.Final (*) +| | | | \--- io.vertx:vertx-web:4.1.0 -> 4.3.4 (*) +| | | +--- io.quarkus:quarkus-arc:2.0.2.Final -> 2.13.7.Final (*) +| | | \--- io.quarkus.arc:arc-processor:2.0.2.Final +| | | +--- io.quarkus.arc:arc:2.0.2.Final -> 2.13.7.Final (*) +| | | +--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 (*) +| | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | +--- org.jboss:jandex:2.3.0.Final +| | | +--- io.quarkus.gizmo:gizmo:1.0.8.Final -> 1.0.9.Final (*) +| | | \--- jakarta.annotation:jakarta.annotation-api:1.3.5 +| | +--- io.quarkus:quarkus-mutiny-deployment:2.0.2.Final +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-smallrye-context-propagation-deployment:2.0.2.Final +| | | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | | | \--- io.quarkus:quarkus-smallrye-context-propagation:2.0.2.Final -> 2.13.7.Final (*) +| | | \--- io.quarkus:quarkus-mutiny:2.0.2.Final -> 2.13.7.Final (*) +| | \--- io.quarkus:quarkus-narayana-jta:2.0.2.Final -> 2.13.5.Final (*) +| +--- io.quarkus:quarkus-agroal-deployment:2.0.2.Final +| | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-datasource-deployment:2.0.2.Final +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-datasource:2.0.2.Final -> 2.13.5.Final (*) +| | | \--- io.quarkus:quarkus-datasource-deployment-spi:2.0.2.Final +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | | \--- io.quarkus:quarkus-datasource-common:2.0.2.Final -> 2.13.5.Final +| | +--- io.quarkus:quarkus-agroal:2.0.2.Final -> 2.13.5.Final (*) +| | +--- io.quarkus:quarkus-agroal-spi:2.0.2.Final +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | \--- io.quarkus:quarkus-datasource-common:2.0.2.Final -> 2.13.5.Final +| | +--- io.quarkus:quarkus-narayana-jta-deployment:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-credentials-deployment:2.0.2.Final +| | | +--- io.quarkus:quarkus-credentials:2.0.2.Final -> 2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | \--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | \--- io.quarkus:quarkus-smallrye-health-spi:2.0.2.Final +| | \--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| +--- io.quarkus:quarkus-caffeine-deployment:2.0.2.Final +| | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | \--- io.quarkus:quarkus-caffeine:2.0.2.Final -> 2.13.5.Final (*) +| \--- io.quarkus:quarkus-panache-hibernate-common-deployment:2.0.2.Final +| +--- io.quarkus:quarkus-panache-hibernate-common:2.0.2.Final +| | +--- io.quarkus:quarkus-core:2.0.2.Final -> 2.13.7.Final (*) +| | +--- io.quarkus:quarkus-arc:2.0.2.Final -> 2.13.7.Final (*) +| | +--- io.quarkus:quarkus-panache-common:2.0.2.Final +| | | +--- io.quarkus:quarkus-core:2.0.2.Final -> 2.13.7.Final (*) +| | | \--- io.quarkus:quarkus-arc:2.0.2.Final -> 2.13.7.Final (*) +| | \--- io.quarkus:quarkus-hibernate-orm:2.0.2.Final -> 2.13.5.Final (*) +| +--- io.quarkus:quarkus-panache-common-deployment:2.0.2.Final +| | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-panache-common:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | +--- org.jboss:jandex:2.3.0.Final +| | +--- jakarta.validation:jakarta.validation-api:2.0.2 +| | \--- org.ow2.asm:asm:9.1 -> 9.3 +| +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| +--- org.jboss:jandex:2.3.0.Final +| \--- org.ow2.asm:asm:9.1 -> 9.3 +\--- log4j:log4j:1.2.17 + +runtimeElements - Runtime elements for the 'main' feature. (n) +No dependencies + +runtimeOnly - Runtime-only dependencies for the 'main' feature. (n) +No dependencies + +testAnnotationProcessor - Annotation processors and their dependencies for source set 'test'. +No dependencies + +testCompileClasspath - Compile classpath for source set 'test'. ++--- io.quarkus:quarkus-hibernate-orm:2.13.5.Final +| +--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final +| | +--- jakarta.annotation:jakarta.annotation-api:1.3.5 +| | +--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 +| | | +--- jakarta.el:jakarta.el-api:3.0.3 +| | | +--- jakarta.interceptor:jakarta.interceptor-api:1.2.5 +| | | | +--- jakarta.annotation:jakarta.annotation-api:1.3.5 +| | | | \--- jakarta.ejb:jakarta.ejb-api:3.2.6 +| | | | \--- jakarta.transaction:jakarta.transaction-api:1.3.2 -> 1.3.3 +| | | \--- jakarta.inject:jakarta.inject-api:1.0 +| | +--- jakarta.inject:jakarta.inject-api:1.0 +| | +--- io.quarkus:quarkus-ide-launcher:2.13.7.Final +| | +--- io.quarkus:quarkus-development-mode-spi:2.13.7.Final +| | +--- io.smallrye.config:smallrye-config:2.12.3 +| | | +--- io.smallrye.config:smallrye-config-core:2.12.3 +| | | | +--- org.eclipse.microprofile.config:microprofile-config-api:2.0.1 +| | | | +--- io.smallrye.common:smallrye-common-annotation:1.13.1 +| | | | +--- io.smallrye.common:smallrye-common-expression:1.13.1 +| | | | | +--- io.smallrye.common:smallrye-common-function:1.13.1 +| | | | | | \--- io.smallrye.common:smallrye-common-constraint:1.13.1 +| | | | | | \--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | | | | \--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | | | +--- io.smallrye.common:smallrye-common-constraint:1.13.1 (*) +| | | | +--- io.smallrye.common:smallrye-common-classloader:1.13.1 +| | | | +--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | | | +--- org.ow2.asm:asm:9.3 +| | | | \--- io.smallrye.config:smallrye-config-common:2.12.3 +| | | | +--- org.eclipse.microprofile.config:microprofile-config-api:2.0.1 +| | | | +--- io.smallrye.common:smallrye-common-classloader:1.13.1 +| | | | \--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | | \--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | +--- org.jboss.logging:jboss-logging:3.5.0.Final +| | +--- org.jboss.logmanager:jboss-logmanager-embedded:1.0.10 +| | | \--- org.wildfly.common:wildfly-common:1.5.0.Final-format-001 -> 1.5.4.Final-format-001 +| | +--- org.jboss.logging:jboss-logging-annotations:2.2.1.Final +| | +--- org.jboss.threads:jboss-threads:3.4.3.Final +| | | +--- org.jboss.logging:jboss-logging:3.4.1.Final -> 3.5.0.Final +| | | \--- org.wildfly.common:wildfly-common:1.5.0.Final -> 1.5.4.Final-format-001 +| | +--- org.slf4j:slf4j-api:1.7.36 +| | +--- org.jboss.slf4j:slf4j-jboss-logmanager:1.2.0.Final +| | +--- org.graalvm.sdk:graal-sdk:22.3.0 +| | +--- org.wildfly.common:wildfly-common:1.5.4.Final-format-001 +| | +--- io.quarkus:quarkus-bootstrap-runner:2.13.7.Final +| | | +--- io.smallrye.common:smallrye-common-io:1.13.1 +| | | +--- org.jboss.logmanager:jboss-logmanager-embedded:1.0.10 (*) +| | | +--- org.jboss.logging:jboss-logging:3.5.0.Final +| | | \--- io.github.crac:org-crac:0.1.1 +| | \--- io.quarkus:quarkus-fs-util:0.0.9 +| +--- io.quarkus:quarkus-agroal:2.13.5.Final +| | +--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) +| | +--- io.quarkus:quarkus-arc:2.13.5.Final -> 2.13.7.Final +| | | +--- io.quarkus.arc:arc:2.13.7.Final +| | | | +--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 (*) +| | | | +--- jakarta.annotation:jakarta.annotation-api:1.3.5 +| | | | +--- jakarta.transaction:jakarta.transaction-api:1.3.3 +| | | | +--- io.smallrye.reactive:mutiny:1.6.0 -> 1.7.0 +| | | | | +--- org.reactivestreams:reactive-streams:1.0.3 +| | | | | \--- io.smallrye.common:smallrye-common-annotation:1.13.0 -> 1.13.1 +| | | | \--- org.jboss.logging:jboss-logging:3.5.0.Final +| | | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | | \--- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.2 -> 1.3 +| | +--- io.quarkus:quarkus-datasource:2.13.5.Final +| | | +--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-arc:2.13.5.Final -> 2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-datasource-common:2.13.5.Final +| | | \--- io.quarkus:quarkus-credentials:2.13.5.Final -> 2.13.7.Final +| | | \--- io.quarkus.arc:arc:2.13.7.Final (*) +| | +--- io.quarkus:quarkus-narayana-jta:2.13.5.Final +| | | +--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-arc:2.13.5.Final -> 2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-transaction-annotations:2.13.5.Final +| | | +--- io.quarkus:quarkus-mutiny:2.13.5.Final -> 2.13.7.Final +| | | | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | | | +--- io.smallrye.reactive:mutiny:1.7.0 (*) +| | | | +--- io.quarkus:quarkus-smallrye-context-propagation:2.13.7.Final +| | | | | +--- io.smallrye:smallrye-context-propagation:1.2.2 +| | | | | | +--- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.2 -> 1.3 +| | | | | | +--- io.smallrye:smallrye-context-propagation-api:1.2.2 +| | | | | | | +--- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.2 -> 1.3 +| | | | | | | \--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 (*) +| | | | | | +--- io.smallrye:smallrye-context-propagation-storage:1.2.2 +| | | | | | +--- org.eclipse.microprofile.config:microprofile-config-api:1.4 -> 2.0.1 +| | | | | | \--- org.jboss.threads:jboss-threads:3.1.1.Final -> 3.4.3.Final (*) +| | | | | +--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 (*) +| | | | | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | | | | \--- io.quarkus:quarkus-arc:2.13.7.Final (*) +| | | | \--- io.smallrye.reactive:mutiny-smallrye-context-propagation:1.7.0 +| | | | +--- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.3 +| | | | +--- io.smallrye.reactive:mutiny:1.7.0 (*) +| | | | \--- io.smallrye:smallrye-context-propagation:1.2.2 (*) +| | | +--- io.smallrye:smallrye-context-propagation-jta:1.2.2 +| | | | \--- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.2 -> 1.3 +| | | +--- jakarta.transaction:jakarta.transaction-api:1.3.3 +| | | +--- io.smallrye.reactive:smallrye-reactive-converter-api:2.7.0 +| | | | \--- org.reactivestreams:reactive-streams:1.0.3 +| | | +--- io.smallrye.reactive:smallrye-reactive-converter-mutiny:2.7.0 +| | | | +--- io.smallrye.reactive:mutiny:1.4.0 -> 1.7.0 (*) +| | | | \--- io.smallrye.reactive:smallrye-reactive-converter-api:2.7.0 (*) +| | | +--- org.jboss.narayana.jta:narayana-jta:5.13.1.Alpha1 +| | | | +--- org.jboss:jboss-transaction-spi:7.6.1.Final +| | | | | \--- org.jboss.spec.javax.resource:jboss-connector-api_1.7_spec:1.0.0.Final +| | | | \--- org.jboss.spec.javax.resource:jboss-connector-api_1.7_spec:1.0.0.Final +| | | \--- org.jboss.narayana.jts:narayana-jts-integration:5.13.1.Alpha1 +| | +--- io.agroal:agroal-api:1.16 +| | +--- io.agroal:agroal-narayana:1.16 +| | | +--- io.agroal:agroal-api:1.16 +| | | \--- org.jboss:jboss-transaction-spi:7.6.1.Final (*) +| | +--- io.agroal:agroal-pool:1.16 +| | | \--- io.agroal:agroal-api:1.16 +| | \--- io.quarkus:quarkus-credentials:2.13.5.Final -> 2.13.7.Final (*) +| +--- io.quarkus:quarkus-narayana-jta:2.13.5.Final (*) +| +--- org.hibernate:hibernate-core:5.6.14.Final +| | +--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | +--- net.bytebuddy:byte-buddy:1.12.18 +| | +--- antlr:antlr:2.7.7 +| | +--- com.fasterxml:classmate:1.5.1 +| | \--- org.hibernate.common:hibernate-commons-annotations:5.1.2.Final +| | \--- org.jboss.logging:jboss-logging:3.3.2.Final -> 3.5.0.Final +| +--- org.hibernate:hibernate-graalvm:5.6.14.Final +| | \--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| +--- org.glassfish.jaxb:jaxb-runtime:2.3.3-b02 +| | +--- org.glassfish.jaxb:txw2:2.3.3-b02 +| | \--- com.sun.istack:istack-commons-runtime:3.0.10 +| +--- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final +| +--- jakarta.persistence:jakarta.persistence-api:2.2.3 +| +--- jakarta.transaction:jakarta.transaction-api:1.3.3 +| +--- org.hibernate:quarkus-local-cache:0.1.1 +| \--- io.quarkus:quarkus-caffeine:2.13.5.Final +| +--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) +| \--- com.github.ben-manes.caffeine:caffeine:2.9.3 +| \--- com.google.errorprone:error_prone_annotations:2.10.0 ++--- io.quarkus:quarkus-agroal:2.13.5.Final (*) ++--- io.quarkus:quarkus-resteasy:2.13.5.Final -> 2.13.7.Final +| +--- io.quarkus:quarkus-vertx-http:2.13.7.Final +| | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | +--- io.quarkus:quarkus-security-runtime-spi:2.13.7.Final +| | | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | | \--- io.quarkus.security:quarkus-security:1.1.4.Final +| | | +--- org.jboss.logging:jboss-logging:3.3.2.Final -> 3.5.0.Final +| | | \--- io.smallrye.reactive:mutiny:0.4.3 -> 1.7.0 (*) +| | +--- io.quarkus:quarkus-credentials:2.13.7.Final (*) +| | +--- io.quarkus:quarkus-mutiny:2.13.7.Final (*) +| | +--- io.smallrye.common:smallrye-common-vertx-context:1.13.1 +| | | +--- io.vertx:vertx-core:4.3.3 -> 4.3.4 +| | | | +--- io.netty:netty-common:4.1.82.Final -> 4.1.86.Final +| | | | +--- io.netty:netty-buffer:4.1.82.Final -> 4.1.86.Final +| | | | | \--- io.netty:netty-common:4.1.86.Final +| | | | +--- io.netty:netty-transport:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | \--- io.netty:netty-resolver:4.1.86.Final +| | | | | \--- io.netty:netty-common:4.1.86.Final +| | | | +--- io.netty:netty-handler:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | +--- io.netty:netty-resolver:4.1.86.Final (*) +| | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport:4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport-native-unix-common:4.1.86.Final +| | | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | | \--- io.netty:netty-transport:4.1.86.Final (*) +| | | | | \--- io.netty:netty-codec:4.1.86.Final +| | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | \--- io.netty:netty-transport:4.1.86.Final (*) +| | | | +--- io.netty:netty-handler-proxy:4.1.82.Final +| | | | | +--- io.netty:netty-common:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec-socks:4.1.82.Final +| | | | | | +--- io.netty:netty-common:4.1.82.Final -> 4.1.86.Final +| | | | | | +--- io.netty:netty-buffer:4.1.82.Final -> 4.1.86.Final (*) +| | | | | | +--- io.netty:netty-transport:4.1.82.Final -> 4.1.86.Final (*) +| | | | | | \--- io.netty:netty-codec:4.1.82.Final -> 4.1.86.Final (*) +| | | | | \--- io.netty:netty-codec-http:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport:4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec:4.1.86.Final (*) +| | | | | \--- io.netty:netty-handler:4.1.86.Final (*) +| | | | +--- io.netty:netty-codec-http:4.1.82.Final -> 4.1.86.Final (*) +| | | | +--- io.netty:netty-codec-http2:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport:4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec:4.1.86.Final (*) +| | | | | +--- io.netty:netty-handler:4.1.86.Final (*) +| | | | | \--- io.netty:netty-codec-http:4.1.86.Final (*) +| | | | +--- io.netty:netty-resolver:4.1.82.Final -> 4.1.86.Final (*) +| | | | +--- io.netty:netty-resolver-dns:4.1.82.Final +| | | | | +--- io.netty:netty-common:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-resolver:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec-dns:4.1.82.Final +| | | | | | +--- io.netty:netty-common:4.1.82.Final -> 4.1.86.Final +| | | | | | +--- io.netty:netty-buffer:4.1.82.Final -> 4.1.86.Final (*) +| | | | | | +--- io.netty:netty-transport:4.1.82.Final -> 4.1.86.Final (*) +| | | | | | \--- io.netty:netty-codec:4.1.82.Final -> 4.1.86.Final (*) +| | | | | \--- io.netty:netty-handler:4.1.82.Final -> 4.1.86.Final (*) +| | | | \--- com.fasterxml.jackson.core:jackson-core:2.13.4 +| | | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 +| | | | +--- com.fasterxml.jackson.core:jackson-annotations:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (c) +| | | | +--- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.module:jackson-module-parameter-names:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.13.4 (c) +| | | | \--- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.13.4 (c) +| | | \--- io.smallrye.common:smallrye-common-constraint:1.13.1 (*) +| | +--- io.quarkus:quarkus-vertx-http-dev-console-runtime-spi:2.13.7.Final +| | | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | | +--- io.quarkus.arc:arc:2.13.7.Final (*) +| | | \--- io.vertx:vertx-web:4.3.4 +| | | +--- io.vertx:vertx-web-common:4.3.4 +| | | | \--- io.vertx:vertx-core:4.3.4 (*) +| | | +--- io.vertx:vertx-auth-common:4.3.4 +| | | | \--- io.vertx:vertx-core:4.3.4 (*) +| | | +--- io.vertx:vertx-bridge-common:4.3.4 +| | | | \--- io.vertx:vertx-core:4.3.4 (*) +| | | \--- io.vertx:vertx-core:4.3.4 (*) +| | +--- io.quarkus.security:quarkus-security:1.1.4.Final (*) +| | +--- io.quarkus:quarkus-vertx:2.13.7.Final +| | | +--- io.quarkus:quarkus-arc:2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-netty:2.13.7.Final +| | | | +--- io.netty:netty-codec:4.1.86.Final (*) +| | | | +--- io.netty:netty-codec-http:4.1.86.Final (*) +| | | | +--- io.netty:netty-codec-http2:4.1.86.Final (*) +| | | | +--- io.quarkus:quarkus-arc:2.13.7.Final (*) +| | | | +--- io.netty:netty-handler:4.1.86.Final (*) +| | | | +--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 (*) +| | | | \--- com.aayushatharva.brotli4j:brotli4j:1.7.1 +| | | +--- io.netty:netty-codec-haproxy:4.1.86.Final +| | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | +--- io.netty:netty-transport:4.1.86.Final (*) +| | | | \--- io.netty:netty-codec:4.1.86.Final (*) +| | | +--- io.smallrye.common:smallrye-common-annotation:1.13.1 +| | | +--- io.smallrye.common:smallrye-common-vertx-context:1.13.1 (*) +| | | +--- io.quarkus:quarkus-mutiny:2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-vertx-latebound-mdc-provider:2.13.7.Final +| | | | \--- org.jboss.logmanager:jboss-logmanager-embedded:1.0.10 (*) +| | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 +| | | | +--- io.smallrye.reactive:mutiny:1.7.0 (*) +| | | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-runtime:2.27.0 +| | | | | +--- io.smallrye.reactive:mutiny:1.7.0 (*) +| | | | | \--- io.vertx:vertx-core:4.3.4 (*) +| | | | +--- io.vertx:vertx-core:4.3.4 (*) +| | | | \--- io.smallrye.reactive:vertx-mutiny-generator:2.27.0 +| | | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-runtime:2.27.0 (*) +| | | | +--- io.vertx:vertx-codegen:4.3.4 +| | | | | \--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | | \--- io.smallrye.common:smallrye-common-annotation:1.13.0 -> 1.13.1 +| | | \--- io.smallrye:smallrye-fault-tolerance-vertx:5.5.0 +| | +--- io.smallrye.reactive:smallrye-mutiny-vertx-web:2.27.0 +| | | +--- io.vertx:vertx-web:4.3.4 (*) +| | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 (*) +| | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-web-common:2.27.0 +| | | | +--- io.vertx:vertx-web-common:4.3.4 (*) +| | | | \--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 (*) +| | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-auth-common:2.27.0 +| | | | +--- io.vertx:vertx-auth-common:4.3.4 (*) +| | | | \--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 (*) +| | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-bridge-common:2.27.0 +| | | | +--- io.vertx:vertx-bridge-common:4.3.4 (*) +| | | | \--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 (*) +| | | \--- io.smallrye.reactive:smallrye-mutiny-vertx-uri-template:2.27.0 +| | | +--- io.vertx:vertx-uri-template:4.3.4 +| | | | \--- io.vertx:vertx-core:4.3.4 (*) +| | | \--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 (*) +| | +--- io.vertx:vertx-web:4.3.4 (*) +| | \--- io.github.crac:org-crac:0.1.1 +| \--- io.quarkus:quarkus-resteasy-server-common:2.13.7.Final +| +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| +--- io.quarkus:quarkus-arc:2.13.7.Final (*) +| +--- io.quarkus:quarkus-resteasy-common:2.13.7.Final +| | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | +--- org.jboss.resteasy:resteasy-core:4.7.7.Final +| | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | +--- org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec:2.0.1.Final +| | | +--- org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.1_spec:2.0.1.Final +| | | +--- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final +| | | +--- org.jboss.resteasy:resteasy-core-spi:4.7.7.Final +| | | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | | +--- org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec:2.0.1.Final +| | | | +--- org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.1_spec:2.0.1.Final +| | | | +--- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final +| | | | +--- org.reactivestreams:reactive-streams:1.0.3 +| | | | \--- jakarta.validation:jakarta.validation-api:2.0.2 +| | | +--- org.reactivestreams:reactive-streams:1.0.3 +| | | +--- jakarta.validation:jakarta.validation-api:2.0.2 +| | | +--- com.ibm.async:asyncutil:0.1.0 +| | | \--- io.smallrye.config:smallrye-config:2.3.0 -> 2.12.3 (*) +| | +--- io.quarkus:quarkus-arc:2.13.7.Final (*) +| | \--- com.sun.activation:jakarta.activation:1.2.1 +| \--- jakarta.validation:jakarta.validation-api:2.0.2 ++--- io.quarkus:quarkus-resteasy-jackson:2.13.5.Final +| +--- io.quarkus:quarkus-resteasy:2.13.5.Final -> 2.13.7.Final (*) +| +--- io.quarkus:quarkus-jackson:2.13.5.Final +| | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4.2 +| | | +--- com.fasterxml.jackson.core:jackson-annotations:2.13.4 +| | | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | +--- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.4 +| | | +--- com.fasterxml.jackson.core:jackson-annotations:2.13.4 (*) +| | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (*) +| | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | +--- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.13.4 +| | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (*) +| | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | +--- com.fasterxml.jackson.module:jackson-module-parameter-names:2.13.4 +| | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (*) +| | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | \--- io.quarkus:quarkus-arc:2.13.5.Final -> 2.13.7.Final (*) +| +--- org.jboss.resteasy:resteasy-jackson2-provider:4.7.7.Final +| | +--- com.fasterxml.jackson.core:jackson-core:2.12.6 -> 2.13.4 (*) +| | +--- com.fasterxml.jackson.core:jackson-databind:2.12.6.1 -> 2.13.4.2 (*) +| | +--- com.fasterxml.jackson.core:jackson-annotations:2.12.6 -> 2.13.4 (*) +| | +--- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.12.6 -> 2.13.4 +| | | +--- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.13.4 +| | | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (*) +| | | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | | +--- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.13.4 +| | | | +--- com.fasterxml.jackson.core:jackson-annotations:2.13.4 (*) +| | | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (*) +| | | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | +--- com.github.java-json-tools:json-patch:1.13 +| | | +--- com.fasterxml.jackson.core:jackson-databind:2.11.0 -> 2.13.4.2 (*) +| | | +--- com.github.java-json-tools:msg-simple:1.2 +| | | | \--- com.github.java-json-tools:btf:1.3 +| | | \--- com.github.java-json-tools:jackson-coreutils:2.0 +| | \--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| \--- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final ++--- io.quarkus:quarkus-jdbc-postgresql:2.13.5.Final +| +--- io.quarkus:quarkus-arc:2.13.5.Final -> 2.13.7.Final (*) +| \--- org.postgresql:postgresql:42.5.0 ++--- io.quarkus:quarkus-vertx-http:2.13.5.Final -> 2.13.7.Final (*) ++--- io.quarkus:quarkus-kubernetes-service-binding:2.13.5.Final +| \--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) ++--- io.quarkus:quarkus-container-image-docker:2.13.5.Final +| \--- io.quarkus:quarkus-container-image:2.13.5.Final +| \--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) ++--- jakarta.validation:jakarta.validation-api:2.0.2 ++--- io.quarkus:quarkus-resteasy-multipart:2.13.7.Final +| +--- io.quarkus:quarkus-resteasy:2.13.7.Final (*) +| +--- org.jboss.resteasy:resteasy-multipart-provider:4.7.7.Final +| | +--- org.jboss.resteasy:resteasy-core-spi:4.7.7.Final (*) +| | +--- org.jboss.resteasy:resteasy-core:4.7.7.Final (*) +| | +--- org.jboss.resteasy:resteasy-jaxb-provider:4.7.7.Final +| | | +--- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final +| | | +--- org.glassfish.jaxb:jaxb-runtime:2.3.3-b02 (*) +| | | \--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | +--- com.sun.mail:jakarta.mail:1.6.5 +| | +--- org.apache.james:apache-mime4j-dom:0.8.3 +| | | \--- org.apache.james:apache-mime4j-core:0.8.3 +| | +--- org.apache.james:apache-mime4j-storage:0.8.3 +| | | +--- org.apache.james:apache-mime4j-dom:0.8.3 (*) +| | | \--- commons-io:commons-io:2.4 -> 2.6 +| | \--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| +--- com.sun.activation:jakarta.activation:1.2.1 +| \--- org.jboss.logging:commons-logging-jboss-logging:1.0.0.Final +| \--- org.jboss.logging:jboss-logging:3.3.1.Final -> 3.5.0.Final ++--- io.quarkus:quarkus-hibernate-orm-deployment:2.0.2.Final +| +--- io.quarkus:quarkus-core-deployment:2.0.2.Final +| | +--- org.aesh:readline:2.1 +| | | \--- org.fusesource.jansi:jansi:1.18 +| | +--- org.apache.commons:commons-lang3:3.12.0 +| | +--- org.wildfly.common:wildfly-common:1.5.4.Final-format-001 +| | +--- io.quarkus.gizmo:gizmo:1.0.9.Final +| | | +--- org.ow2.asm:asm:9.1 -> 9.3 +| | | +--- org.ow2.asm:asm-util:9.1 +| | | | +--- org.ow2.asm:asm:9.1 -> 9.3 +| | | | +--- org.ow2.asm:asm-tree:9.1 +| | | | | \--- org.ow2.asm:asm:9.1 -> 9.3 +| | | | \--- org.ow2.asm:asm-analysis:9.1 +| | | | \--- org.ow2.asm:asm-tree:9.1 (*) +| | | \--- org.jboss:jandex:2.3.0.Final +| | +--- org.jboss:jandex:2.3.0.Final +| | +--- org.ow2.asm:asm:9.1 -> 9.3 +| | +--- io.quarkus:quarkus-development-mode-spi:2.0.2.Final -> 2.13.7.Final +| | +--- io.quarkus:quarkus-class-change-agent:2.0.2.Final +| | +--- io.quarkus:quarkus-bootstrap-core:2.0.2.Final +| | | +--- io.quarkus:quarkus-bootstrap-app-model:2.0.2.Final +| | | | \--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | +--- io.quarkus:quarkus-bootstrap-maven-resolver:2.0.2.Final +| | | | +--- io.quarkus:quarkus-bootstrap-app-model:2.0.2.Final (*) +| | | | +--- org.jboss.logmanager:jboss-logmanager-embedded:1.0.9 -> 1.0.10 (*) +| | | | +--- org.jboss.slf4j:slf4j-jboss-logmanager:1.1.0.Final -> 1.2.0.Final +| | | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | | +--- org.slf4j:slf4j-api:1.7.30 -> 1.7.36 +| | | | +--- org.apache.maven:maven-embedder:3.8.1 +| | | | | +--- org.apache.maven:maven-settings:3.8.1 +| | | | | | \--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | +--- org.apache.maven:maven-settings-builder:3.8.1 +| | | | | | +--- org.apache.maven:maven-builder-support:3.8.1 +| | | | | | +--- org.codehaus.plexus:plexus-interpolation:1.25 +| | | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | +--- org.apache.maven:maven-settings:3.8.1 (*) +| | | | | | \--- org.sonatype.plexus:plexus-sec-dispatcher:1.4 +| | | | | | +--- org.codehaus.plexus:plexus-utils:1.5.5 -> 3.3.0 +| | | | | | \--- org.sonatype.plexus:plexus-cipher:1.4 +| | | | | +--- org.apache.maven:maven-core:3.8.1 +| | | | | | +--- org.apache.maven:maven-model:3.8.1 +| | | | | | | \--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | +--- org.apache.maven:maven-settings:3.8.1 (*) +| | | | | | +--- org.apache.maven:maven-settings-builder:3.8.1 (*) +| | | | | | +--- org.apache.maven:maven-builder-support:3.8.1 +| | | | | | +--- org.apache.maven:maven-repository-metadata:3.8.1 +| | | | | | | \--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | +--- org.apache.maven:maven-artifact:3.8.1 +| | | | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | | \--- org.apache.commons:commons-lang3:3.8.1 -> 3.12.0 +| | | | | | +--- org.apache.maven:maven-plugin-api:3.8.1 +| | | | | | | +--- org.apache.maven:maven-model:3.8.1 (*) +| | | | | | | +--- org.apache.maven:maven-artifact:3.8.1 (*) +| | | | | | | +--- org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.4 +| | | | | | | | +--- org.codehaus.plexus:plexus-component-annotations:1.5.5 -> 2.1.0 +| | | | | | | | +--- org.codehaus.plexus:plexus-classworlds:2.5.2 -> 2.6.0 +| | | | | | | | \--- org.codehaus.plexus:plexus-utils:3.0.17 -> 3.3.0 +| | | | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | | \--- org.codehaus.plexus:plexus-classworlds:2.6.0 +| | | | | | +--- org.apache.maven:maven-model-builder:3.8.1 +| | | | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | | +--- org.codehaus.plexus:plexus-interpolation:1.25 +| | | | | | | +--- org.apache.maven:maven-model:3.8.1 (*) +| | | | | | | +--- org.apache.maven:maven-artifact:3.8.1 (*) +| | | | | | | \--- org.apache.maven:maven-builder-support:3.8.1 +| | | | | | +--- org.apache.maven:maven-resolver-provider:3.8.1 +| | | | | | | +--- org.apache.maven:maven-model:3.8.1 (*) +| | | | | | | +--- org.apache.maven:maven-model-builder:3.8.1 (*) +| | | | | | | +--- org.apache.maven:maven-repository-metadata:3.8.1 (*) +| | | | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | | | +--- org.apache.maven.resolver:maven-resolver-spi:1.6.2 +| | | | | | | | \--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | | | +--- org.apache.maven.resolver:maven-resolver-util:1.6.2 +| | | | | | | | \--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | | | +--- org.apache.maven.resolver:maven-resolver-impl:1.6.2 +| | | | | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | | | | +--- org.apache.maven.resolver:maven-resolver-spi:1.6.2 (*) +| | | | | | | | +--- org.apache.maven.resolver:maven-resolver-util:1.6.2 (*) +| | | | | | | | \--- org.apache.commons:commons-lang3:3.8.1 -> 3.12.0 +| | | | | | | \--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | +--- org.apache.maven.resolver:maven-resolver-impl:1.6.2 (*) +| | | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | | +--- org.apache.maven.resolver:maven-resolver-spi:1.6.2 (*) +| | | | | | +--- org.apache.maven.resolver:maven-resolver-util:1.6.2 (*) +| | | | | | +--- org.apache.maven.shared:maven-shared-utils:3.2.1 +| | | | | | | \--- commons-io:commons-io:2.5 -> 2.6 +| | | | | | +--- org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.4 (*) +| | | | | | +--- com.google.inject:guice:4.2.1 +| | | | | | | +--- aopalliance:aopalliance:1.0 +| | | | | | | \--- com.google.guava:guava:25.1-android +| | | | | | | +--- com.google.code.findbugs:jsr305:3.0.2 +| | | | | | | +--- org.checkerframework:checker-compat-qual:2.0.0 +| | | | | | | +--- com.google.errorprone:error_prone_annotations:2.1.3 -> 2.10.0 +| | | | | | | +--- com.google.j2objc:j2objc-annotations:1.1 +| | | | | | | \--- org.codehaus.mojo:animal-sniffer-annotations:1.14 +| | | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | +--- org.codehaus.plexus:plexus-classworlds:2.6.0 +| | | | | | +--- org.codehaus.plexus:plexus-component-annotations:2.1.0 +| | | | | | \--- org.apache.commons:commons-lang3:3.8.1 -> 3.12.0 +| | | | | +--- org.apache.maven:maven-plugin-api:3.8.1 (*) +| | | | | +--- org.apache.maven:maven-model:3.8.1 (*) +| | | | | +--- org.apache.maven:maven-model-builder:3.8.1 (*) +| | | | | +--- org.apache.maven:maven-builder-support:3.8.1 +| | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | +--- org.apache.maven.resolver:maven-resolver-util:1.6.2 (*) +| | | | | +--- org.apache.maven.shared:maven-shared-utils:3.2.1 (*) +| | | | | +--- com.google.inject:guice:4.2.1 (*) +| | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | +--- org.codehaus.plexus:plexus-classworlds:2.6.0 +| | | | | +--- org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.4 (*) +| | | | | +--- commons-cli:commons-cli:1.4 +| | | | | \--- org.apache.commons:commons-lang3:3.8.1 -> 3.12.0 +| | | | +--- org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.4 (*) +| | | | +--- org.apache.maven:maven-settings-builder:3.8.1 (*) +| | | | +--- org.apache.maven:maven-resolver-provider:3.8.1 (*) +| | | | +--- org.apache.maven.resolver:maven-resolver-connector-basic:1.6.2 +| | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | +--- org.apache.maven.resolver:maven-resolver-spi:1.6.2 (*) +| | | | | \--- org.apache.maven.resolver:maven-resolver-util:1.6.2 (*) +| | | | +--- org.apache.maven.resolver:maven-resolver-transport-wagon:1.6.2 +| | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | +--- org.apache.maven.resolver:maven-resolver-spi:1.6.2 (*) +| | | | | +--- org.apache.maven.resolver:maven-resolver-util:1.6.2 (*) +| | | | | \--- org.slf4j:slf4j-api:1.7.30 -> 1.7.36 +| | | | +--- org.apache.maven.wagon:wagon-http:3.4.3 +| | | | | +--- org.apache.maven.wagon:wagon-http-shared:3.4.3 +| | | | | | +--- org.jsoup:jsoup:1.12.1 +| | | | | | +--- org.apache.httpcomponents:httpclient:4.5.13 +| | | | | | | +--- org.apache.httpcomponents:httpcore:4.4.13 -> 4.4.14 +| | | | | | | \--- commons-codec:commons-codec:1.11 +| | | | | | +--- org.apache.httpcomponents:httpcore:4.4.14 +| | | | | | +--- commons-io:commons-io:2.6 +| | | | | | +--- org.slf4j:slf4j-api:1.7.25 -> 1.7.36 +| | | | | | \--- org.apache.maven.wagon:wagon-provider-api:3.4.3 +| | | | | | \--- org.codehaus.plexus:plexus-utils:3.3.0 +| | | | | +--- org.apache.httpcomponents:httpclient:4.5.13 (*) +| | | | | +--- org.apache.httpcomponents:httpcore:4.4.14 +| | | | | +--- org.codehaus.plexus:plexus-utils:3.3.0 +| | | | | \--- org.apache.maven.wagon:wagon-provider-api:3.4.3 (*) +| | | | \--- org.apache.maven.wagon:wagon-file:3.4.3 +| | | | +--- org.codehaus.plexus:plexus-utils:3.3.0 +| | | | \--- org.apache.maven.wagon:wagon-provider-api:3.4.3 (*) +| | | +--- io.quarkus:quarkus-bootstrap-gradle-resolver:2.0.2.Final +| | | | +--- io.quarkus:quarkus-bootstrap-app-model:2.0.2.Final (*) +| | | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | | \--- org.jboss.slf4j:slf4j-jboss-logmanager:1.1.0.Final -> 1.2.0.Final +| | | \--- io.smallrye.common:smallrye-common-io:1.6.0 -> 1.13.1 +| | +--- io.quarkus:quarkus-devtools-utilities:2.0.2.Final +| | +--- io.quarkus:quarkus-core:2.0.2.Final -> 2.13.7.Final (*) +| | +--- io.quarkus:quarkus-builder:2.0.2.Final +| | | +--- org.wildfly.common:wildfly-common:1.5.4.Final-format-001 +| | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | \--- org.jboss.threads:jboss-threads:3.4.0.Final -> 3.4.3.Final (*) +| | +--- org.graalvm.sdk:graal-sdk:21.1.0 -> 22.3.0 +| | +--- org.junit.platform:junit-platform-launcher:1.7.2 +| | | +--- org.junit:junit-bom:5.7.2 +| | | | +--- org.junit.jupiter:junit-jupiter:5.7.2 (c) +| | | | +--- org.junit.jupiter:junit-jupiter-api:5.7.2 (c) +| | | | +--- org.junit.jupiter:junit-jupiter-params:5.7.2 (c) +| | | | +--- org.junit.platform:junit-platform-engine:1.7.2 (c) +| | | | +--- org.junit.platform:junit-platform-launcher:1.7.2 (c) +| | | | \--- org.junit.platform:junit-platform-commons:1.7.2 (c) +| | | +--- org.apiguardian:apiguardian-api:1.1.0 +| | | \--- org.junit.platform:junit-platform-engine:1.7.2 +| | | +--- org.junit:junit-bom:5.7.2 (*) +| | | +--- org.apiguardian:apiguardian-api:1.1.0 +| | | +--- org.opentest4j:opentest4j:1.2.0 +| | | \--- org.junit.platform:junit-platform-commons:1.7.2 +| | | +--- org.junit:junit-bom:5.7.2 (*) +| | | \--- org.apiguardian:apiguardian-api:1.1.0 +| | \--- org.junit.jupiter:junit-jupiter:5.7.2 +| | +--- org.junit:junit-bom:5.7.2 (*) +| | +--- org.junit.jupiter:junit-jupiter-api:5.7.2 +| | | +--- org.junit:junit-bom:5.7.2 (*) +| | | +--- org.apiguardian:apiguardian-api:1.1.0 +| | | +--- org.opentest4j:opentest4j:1.2.0 +| | | \--- org.junit.platform:junit-platform-commons:1.7.2 (*) +| | \--- org.junit.jupiter:junit-jupiter-params:5.7.2 +| | +--- org.junit:junit-bom:5.7.2 (*) +| | +--- org.apiguardian:apiguardian-api:1.1.0 +| | \--- org.junit.jupiter:junit-jupiter-api:5.7.2 (*) +| +--- io.quarkus:quarkus-hibernate-orm:2.0.2.Final -> 2.13.5.Final (*) +| +--- io.quarkus:quarkus-narayana-jta-deployment:2.0.2.Final +| | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-vertx-http-dev-console-spi:2.0.2.Final +| | | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | | +--- io.quarkus:quarkus-vertx-http-dev-console-runtime-spi:2.0.2.Final -> 2.13.7.Final (*) +| | | | +--- io.quarkus.arc:arc:2.0.2.Final -> 2.13.7.Final (*) +| | | | \--- io.vertx:vertx-web:4.1.0 -> 4.3.4 (*) +| | | +--- io.quarkus:quarkus-arc:2.0.2.Final -> 2.13.7.Final (*) +| | | \--- io.quarkus.arc:arc-processor:2.0.2.Final +| | | +--- io.quarkus.arc:arc:2.0.2.Final -> 2.13.7.Final (*) +| | | +--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 (*) +| | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | +--- org.jboss:jandex:2.3.0.Final +| | | +--- io.quarkus.gizmo:gizmo:1.0.8.Final -> 1.0.9.Final (*) +| | | \--- jakarta.annotation:jakarta.annotation-api:1.3.5 +| | +--- io.quarkus:quarkus-mutiny-deployment:2.0.2.Final +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-smallrye-context-propagation-deployment:2.0.2.Final +| | | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | | | \--- io.quarkus:quarkus-smallrye-context-propagation:2.0.2.Final -> 2.13.7.Final (*) +| | | \--- io.quarkus:quarkus-mutiny:2.0.2.Final -> 2.13.7.Final (*) +| | \--- io.quarkus:quarkus-narayana-jta:2.0.2.Final -> 2.13.5.Final (*) +| +--- io.quarkus:quarkus-agroal-deployment:2.0.2.Final +| | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-datasource-deployment:2.0.2.Final +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-datasource:2.0.2.Final -> 2.13.5.Final (*) +| | | \--- io.quarkus:quarkus-datasource-deployment-spi:2.0.2.Final +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | | \--- io.quarkus:quarkus-datasource-common:2.0.2.Final -> 2.13.5.Final +| | +--- io.quarkus:quarkus-agroal:2.0.2.Final -> 2.13.5.Final (*) +| | +--- io.quarkus:quarkus-agroal-spi:2.0.2.Final +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | \--- io.quarkus:quarkus-datasource-common:2.0.2.Final -> 2.13.5.Final +| | +--- io.quarkus:quarkus-narayana-jta-deployment:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-credentials-deployment:2.0.2.Final +| | | +--- io.quarkus:quarkus-credentials:2.0.2.Final -> 2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | \--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | \--- io.quarkus:quarkus-smallrye-health-spi:2.0.2.Final +| | \--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| +--- io.quarkus:quarkus-caffeine-deployment:2.0.2.Final +| | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | \--- io.quarkus:quarkus-caffeine:2.0.2.Final -> 2.13.5.Final (*) +| \--- io.quarkus:quarkus-panache-hibernate-common-deployment:2.0.2.Final +| +--- io.quarkus:quarkus-panache-hibernate-common:2.0.2.Final +| | +--- io.quarkus:quarkus-core:2.0.2.Final -> 2.13.7.Final (*) +| | +--- io.quarkus:quarkus-arc:2.0.2.Final -> 2.13.7.Final (*) +| | +--- io.quarkus:quarkus-panache-common:2.0.2.Final +| | | +--- io.quarkus:quarkus-core:2.0.2.Final -> 2.13.7.Final (*) +| | | \--- io.quarkus:quarkus-arc:2.0.2.Final -> 2.13.7.Final (*) +| | \--- io.quarkus:quarkus-hibernate-orm:2.0.2.Final -> 2.13.5.Final (*) +| +--- io.quarkus:quarkus-panache-common-deployment:2.0.2.Final +| | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-panache-common:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | +--- org.jboss:jandex:2.3.0.Final +| | +--- jakarta.validation:jakarta.validation-api:2.0.2 +| | \--- org.ow2.asm:asm:9.1 -> 9.3 +| +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| +--- org.jboss:jandex:2.3.0.Final +| \--- org.ow2.asm:asm:9.1 -> 9.3 +\--- log4j:log4j:1.2.17 + +testCompileOnly - Compile only dependencies for source set 'test'. (n) +No dependencies + +testImplementation - Implementation only dependencies for source set 'test'. (n) +No dependencies + +testRuntimeClasspath - Runtime classpath of source set 'test'. ++--- io.quarkus:quarkus-hibernate-orm:2.13.5.Final +| +--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final +| | +--- jakarta.annotation:jakarta.annotation-api:1.3.5 +| | +--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 +| | | +--- jakarta.el:jakarta.el-api:3.0.3 +| | | +--- jakarta.interceptor:jakarta.interceptor-api:1.2.5 +| | | | +--- jakarta.annotation:jakarta.annotation-api:1.3.5 +| | | | \--- jakarta.ejb:jakarta.ejb-api:3.2.6 +| | | | \--- jakarta.transaction:jakarta.transaction-api:1.3.2 -> 1.3.3 +| | | \--- jakarta.inject:jakarta.inject-api:1.0 +| | +--- jakarta.inject:jakarta.inject-api:1.0 +| | +--- io.quarkus:quarkus-ide-launcher:2.13.7.Final +| | +--- io.quarkus:quarkus-development-mode-spi:2.13.7.Final +| | +--- io.smallrye.config:smallrye-config:2.12.3 +| | | +--- io.smallrye.config:smallrye-config-core:2.12.3 +| | | | +--- org.eclipse.microprofile.config:microprofile-config-api:2.0.1 +| | | | +--- io.smallrye.common:smallrye-common-annotation:1.13.1 +| | | | +--- io.smallrye.common:smallrye-common-expression:1.13.1 +| | | | | +--- io.smallrye.common:smallrye-common-function:1.13.1 +| | | | | | \--- io.smallrye.common:smallrye-common-constraint:1.13.1 +| | | | | | \--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | | | | \--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | | | +--- io.smallrye.common:smallrye-common-constraint:1.13.1 (*) +| | | | +--- io.smallrye.common:smallrye-common-classloader:1.13.1 +| | | | +--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | | | +--- org.ow2.asm:asm:9.3 +| | | | \--- io.smallrye.config:smallrye-config-common:2.12.3 +| | | | +--- org.eclipse.microprofile.config:microprofile-config-api:2.0.1 +| | | | +--- io.smallrye.common:smallrye-common-classloader:1.13.1 +| | | | \--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | | \--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | +--- org.jboss.logging:jboss-logging:3.5.0.Final +| | +--- org.jboss.logmanager:jboss-logmanager-embedded:1.0.10 +| | | \--- org.wildfly.common:wildfly-common:1.5.0.Final-format-001 -> 1.5.4.Final-format-001 +| | +--- org.jboss.logging:jboss-logging-annotations:2.2.1.Final +| | +--- org.jboss.threads:jboss-threads:3.4.3.Final +| | | +--- org.jboss.logging:jboss-logging:3.4.1.Final -> 3.5.0.Final +| | | \--- org.wildfly.common:wildfly-common:1.5.0.Final -> 1.5.4.Final-format-001 +| | +--- org.slf4j:slf4j-api:1.7.36 +| | +--- org.jboss.slf4j:slf4j-jboss-logmanager:1.2.0.Final +| | +--- org.graalvm.sdk:graal-sdk:22.3.0 +| | +--- org.wildfly.common:wildfly-common:1.5.4.Final-format-001 +| | +--- io.quarkus:quarkus-bootstrap-runner:2.13.7.Final +| | | +--- io.smallrye.common:smallrye-common-io:1.13.1 +| | | +--- org.jboss.logmanager:jboss-logmanager-embedded:1.0.10 (*) +| | | +--- org.jboss.logging:jboss-logging:3.5.0.Final +| | | \--- io.github.crac:org-crac:0.1.1 +| | \--- io.quarkus:quarkus-fs-util:0.0.9 +| +--- io.quarkus:quarkus-agroal:2.13.5.Final +| | +--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) +| | +--- io.quarkus:quarkus-arc:2.13.5.Final -> 2.13.7.Final +| | | +--- io.quarkus.arc:arc:2.13.7.Final +| | | | +--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 (*) +| | | | +--- jakarta.annotation:jakarta.annotation-api:1.3.5 +| | | | +--- jakarta.transaction:jakarta.transaction-api:1.3.3 +| | | | +--- io.smallrye.reactive:mutiny:1.6.0 -> 1.7.0 +| | | | | +--- org.reactivestreams:reactive-streams:1.0.3 +| | | | | \--- io.smallrye.common:smallrye-common-annotation:1.13.0 -> 1.13.1 +| | | | \--- org.jboss.logging:jboss-logging:3.5.0.Final +| | | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | | \--- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.2 -> 1.3 +| | +--- io.quarkus:quarkus-datasource:2.13.5.Final +| | | +--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-arc:2.13.5.Final -> 2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-datasource-common:2.13.5.Final +| | | \--- io.quarkus:quarkus-credentials:2.13.5.Final -> 2.13.7.Final +| | | \--- io.quarkus.arc:arc:2.13.7.Final (*) +| | +--- io.quarkus:quarkus-narayana-jta:2.13.5.Final +| | | +--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-arc:2.13.5.Final -> 2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-transaction-annotations:2.13.5.Final +| | | +--- io.quarkus:quarkus-mutiny:2.13.5.Final -> 2.13.7.Final +| | | | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | | | +--- io.smallrye.reactive:mutiny:1.7.0 (*) +| | | | +--- io.quarkus:quarkus-smallrye-context-propagation:2.13.7.Final +| | | | | +--- io.smallrye:smallrye-context-propagation:1.2.2 +| | | | | | +--- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.2 -> 1.3 +| | | | | | +--- io.smallrye:smallrye-context-propagation-api:1.2.2 +| | | | | | | +--- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.2 -> 1.3 +| | | | | | | \--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 (*) +| | | | | | +--- io.smallrye:smallrye-context-propagation-storage:1.2.2 +| | | | | | +--- org.eclipse.microprofile.config:microprofile-config-api:1.4 -> 2.0.1 +| | | | | | \--- org.jboss.threads:jboss-threads:3.1.1.Final -> 3.4.3.Final (*) +| | | | | +--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 (*) +| | | | | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | | | | \--- io.quarkus:quarkus-arc:2.13.7.Final (*) +| | | | \--- io.smallrye.reactive:mutiny-smallrye-context-propagation:1.7.0 +| | | | +--- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.3 +| | | | +--- io.smallrye.reactive:mutiny:1.7.0 (*) +| | | | \--- io.smallrye:smallrye-context-propagation:1.2.2 (*) +| | | +--- io.smallrye:smallrye-context-propagation-jta:1.2.2 +| | | | \--- org.eclipse.microprofile.context-propagation:microprofile-context-propagation-api:1.2 -> 1.3 +| | | +--- jakarta.transaction:jakarta.transaction-api:1.3.3 +| | | +--- io.smallrye.reactive:smallrye-reactive-converter-api:2.7.0 +| | | | \--- org.reactivestreams:reactive-streams:1.0.3 +| | | +--- io.smallrye.reactive:smallrye-reactive-converter-mutiny:2.7.0 +| | | | +--- io.smallrye.reactive:mutiny:1.4.0 -> 1.7.0 (*) +| | | | \--- io.smallrye.reactive:smallrye-reactive-converter-api:2.7.0 (*) +| | | +--- org.jboss.narayana.jta:narayana-jta:5.13.1.Alpha1 +| | | | +--- org.jboss:jboss-transaction-spi:7.6.1.Final +| | | | | \--- org.jboss.spec.javax.resource:jboss-connector-api_1.7_spec:1.0.0.Final +| | | | \--- org.jboss.spec.javax.resource:jboss-connector-api_1.7_spec:1.0.0.Final +| | | \--- org.jboss.narayana.jts:narayana-jts-integration:5.13.1.Alpha1 +| | +--- io.agroal:agroal-api:1.16 +| | +--- io.agroal:agroal-narayana:1.16 +| | | +--- io.agroal:agroal-api:1.16 +| | | \--- org.jboss:jboss-transaction-spi:7.6.1.Final (*) +| | +--- io.agroal:agroal-pool:1.16 +| | | \--- io.agroal:agroal-api:1.16 +| | \--- io.quarkus:quarkus-credentials:2.13.5.Final -> 2.13.7.Final (*) +| +--- io.quarkus:quarkus-narayana-jta:2.13.5.Final (*) +| +--- org.hibernate:hibernate-core:5.6.14.Final +| | +--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| | +--- net.bytebuddy:byte-buddy:1.12.18 +| | +--- antlr:antlr:2.7.7 +| | +--- com.fasterxml:classmate:1.5.1 +| | \--- org.hibernate.common:hibernate-commons-annotations:5.1.2.Final +| | \--- org.jboss.logging:jboss-logging:3.3.2.Final -> 3.5.0.Final +| +--- org.hibernate:hibernate-graalvm:5.6.14.Final +| | \--- org.jboss.logging:jboss-logging:3.4.3.Final -> 3.5.0.Final +| +--- org.glassfish.jaxb:jaxb-runtime:2.3.3-b02 +| | +--- org.glassfish.jaxb:txw2:2.3.3-b02 +| | +--- com.sun.istack:istack-commons-runtime:3.0.10 +| | \--- com.sun.activation:jakarta.activation:1.2.1 +| +--- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final +| +--- jakarta.persistence:jakarta.persistence-api:2.2.3 +| +--- jakarta.transaction:jakarta.transaction-api:1.3.3 +| +--- org.hibernate:quarkus-local-cache:0.1.1 +| \--- io.quarkus:quarkus-caffeine:2.13.5.Final +| +--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) +| \--- com.github.ben-manes.caffeine:caffeine:2.9.3 +| \--- com.google.errorprone:error_prone_annotations:2.10.0 ++--- io.quarkus:quarkus-agroal:2.13.5.Final (*) ++--- io.quarkus:quarkus-resteasy:2.13.5.Final -> 2.13.7.Final +| +--- io.quarkus:quarkus-vertx-http:2.13.7.Final +| | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | +--- io.quarkus:quarkus-security-runtime-spi:2.13.7.Final +| | | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | | \--- io.quarkus.security:quarkus-security:1.1.4.Final +| | | +--- org.jboss.logging:jboss-logging:3.3.2.Final -> 3.5.0.Final +| | | \--- io.smallrye.reactive:mutiny:0.4.3 -> 1.7.0 (*) +| | +--- io.quarkus:quarkus-credentials:2.13.7.Final (*) +| | +--- io.quarkus:quarkus-mutiny:2.13.7.Final (*) +| | +--- io.smallrye.common:smallrye-common-vertx-context:1.13.1 +| | | +--- io.vertx:vertx-core:4.3.3 -> 4.3.4 +| | | | +--- io.netty:netty-common:4.1.82.Final -> 4.1.86.Final +| | | | +--- io.netty:netty-buffer:4.1.82.Final -> 4.1.86.Final +| | | | | \--- io.netty:netty-common:4.1.86.Final +| | | | +--- io.netty:netty-transport:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | \--- io.netty:netty-resolver:4.1.86.Final +| | | | | \--- io.netty:netty-common:4.1.86.Final +| | | | +--- io.netty:netty-handler:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | +--- io.netty:netty-resolver:4.1.86.Final (*) +| | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport:4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport-native-unix-common:4.1.86.Final +| | | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | | \--- io.netty:netty-transport:4.1.86.Final (*) +| | | | | \--- io.netty:netty-codec:4.1.86.Final +| | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | \--- io.netty:netty-transport:4.1.86.Final (*) +| | | | +--- io.netty:netty-handler-proxy:4.1.82.Final +| | | | | +--- io.netty:netty-common:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec-socks:4.1.82.Final +| | | | | | +--- io.netty:netty-common:4.1.82.Final -> 4.1.86.Final +| | | | | | +--- io.netty:netty-buffer:4.1.82.Final -> 4.1.86.Final (*) +| | | | | | +--- io.netty:netty-transport:4.1.82.Final -> 4.1.86.Final (*) +| | | | | | \--- io.netty:netty-codec:4.1.82.Final -> 4.1.86.Final (*) +| | | | | \--- io.netty:netty-codec-http:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport:4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec:4.1.86.Final (*) +| | | | | \--- io.netty:netty-handler:4.1.86.Final (*) +| | | | +--- io.netty:netty-codec-http:4.1.82.Final -> 4.1.86.Final (*) +| | | | +--- io.netty:netty-codec-http2:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-common:4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport:4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec:4.1.86.Final (*) +| | | | | +--- io.netty:netty-handler:4.1.86.Final (*) +| | | | | \--- io.netty:netty-codec-http:4.1.86.Final (*) +| | | | +--- io.netty:netty-resolver:4.1.82.Final -> 4.1.86.Final (*) +| | | | +--- io.netty:netty-resolver-dns:4.1.82.Final +| | | | | +--- io.netty:netty-common:4.1.82.Final -> 4.1.86.Final +| | | | | +--- io.netty:netty-buffer:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-resolver:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-transport:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec:4.1.82.Final -> 4.1.86.Final (*) +| | | | | +--- io.netty:netty-codec-dns:4.1.82.Final +| | | | | | +--- io.netty:netty-common:4.1.82.Final -> 4.1.86.Final +| | | | | | +--- io.netty:netty-buffer:4.1.82.Final -> 4.1.86.Final (*) +| | | | | | +--- io.netty:netty-transport:4.1.82.Final -> 4.1.86.Final (*) +| | | | | | \--- io.netty:netty-codec:4.1.82.Final -> 4.1.86.Final (*) +| | | | | \--- io.netty:netty-handler:4.1.82.Final -> 4.1.86.Final (*) +| | | | \--- com.fasterxml.jackson.core:jackson-core:2.13.4 +| | | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 +| | | | +--- com.fasterxml.jackson.core:jackson-annotations:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (c) +| | | | +--- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.module:jackson-module-parameter-names:2.13.4 (c) +| | | | +--- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.13.4 (c) +| | | | \--- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.13.4 (c) +| | | \--- io.smallrye.common:smallrye-common-constraint:1.13.1 (*) +| | +--- io.quarkus:quarkus-vertx-http-dev-console-runtime-spi:2.13.7.Final +| | | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | | +--- io.quarkus.arc:arc:2.13.7.Final (*) +| | | \--- io.vertx:vertx-web:4.3.4 +| | | +--- io.vertx:vertx-web-common:4.3.4 +| | | | \--- io.vertx:vertx-core:4.3.4 (*) +| | | +--- io.vertx:vertx-auth-common:4.3.4 +| | | | \--- io.vertx:vertx-core:4.3.4 (*) +| | | +--- io.vertx:vertx-bridge-common:4.3.4 +| | | | \--- io.vertx:vertx-core:4.3.4 (*) +| | | \--- io.vertx:vertx-core:4.3.4 (*) +| | +--- io.quarkus.security:quarkus-security:1.1.4.Final (*) +| | +--- io.quarkus:quarkus-vertx:2.13.7.Final +| | | +--- io.quarkus:quarkus-arc:2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-netty:2.13.7.Final +| | | | +--- io.netty:netty-codec:4.1.86.Final (*) +| | | | +--- io.netty:netty-codec-http:4.1.86.Final (*) +| | | | +--- io.netty:netty-codec-http2:4.1.86.Final (*) +| | | | +--- io.quarkus:quarkus-arc:2.13.7.Final (*) +| | | | +--- io.netty:netty-handler:4.1.86.Final (*) +| | | | +--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 (*) +| | | | \--- com.aayushatharva.brotli4j:brotli4j:1.7.1 +| | | +--- io.netty:netty-codec-haproxy:4.1.86.Final +| | | | +--- io.netty:netty-buffer:4.1.86.Final (*) +| | | | +--- io.netty:netty-transport:4.1.86.Final (*) +| | | | \--- io.netty:netty-codec:4.1.86.Final (*) +| | | +--- io.smallrye.common:smallrye-common-annotation:1.13.1 +| | | +--- io.smallrye.common:smallrye-common-vertx-context:1.13.1 (*) +| | | +--- io.quarkus:quarkus-mutiny:2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-vertx-latebound-mdc-provider:2.13.7.Final +| | | | \--- org.jboss.logmanager:jboss-logmanager-embedded:1.0.10 (*) +| | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 +| | | | +--- io.smallrye.reactive:mutiny:1.7.0 (*) +| | | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-runtime:2.27.0 +| | | | | +--- io.smallrye.reactive:mutiny:1.7.0 (*) +| | | | | \--- io.vertx:vertx-core:4.3.4 (*) +| | | | +--- io.vertx:vertx-core:4.3.4 (*) +| | | | \--- io.smallrye.reactive:vertx-mutiny-generator:2.27.0 +| | | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-runtime:2.27.0 (*) +| | | | +--- io.vertx:vertx-codegen:4.3.4 +| | | | | \--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | | \--- io.smallrye.common:smallrye-common-annotation:1.13.0 -> 1.13.1 +| | | \--- io.smallrye:smallrye-fault-tolerance-vertx:5.5.0 +| | +--- io.smallrye.reactive:smallrye-mutiny-vertx-web:2.27.0 +| | | +--- io.vertx:vertx-web:4.3.4 (*) +| | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 (*) +| | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-web-common:2.27.0 +| | | | +--- io.vertx:vertx-web-common:4.3.4 (*) +| | | | \--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 (*) +| | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-auth-common:2.27.0 +| | | | +--- io.vertx:vertx-auth-common:4.3.4 (*) +| | | | \--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 (*) +| | | +--- io.smallrye.reactive:smallrye-mutiny-vertx-bridge-common:2.27.0 +| | | | +--- io.vertx:vertx-bridge-common:4.3.4 (*) +| | | | \--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 (*) +| | | \--- io.smallrye.reactive:smallrye-mutiny-vertx-uri-template:2.27.0 +| | | +--- io.vertx:vertx-uri-template:4.3.4 +| | | | \--- io.vertx:vertx-core:4.3.4 (*) +| | | \--- io.smallrye.reactive:smallrye-mutiny-vertx-core:2.27.0 (*) +| | +--- io.vertx:vertx-web:4.3.4 (*) +| | \--- io.github.crac:org-crac:0.1.1 +| \--- io.quarkus:quarkus-resteasy-server-common:2.13.7.Final +| +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| +--- io.quarkus:quarkus-arc:2.13.7.Final (*) +| +--- io.quarkus:quarkus-resteasy-common:2.13.7.Final +| | +--- io.quarkus:quarkus-core:2.13.7.Final (*) +| | +--- org.jboss.resteasy:resteasy-core:4.7.7.Final +| | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | +--- org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec:2.0.1.Final +| | | +--- org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.1_spec:2.0.1.Final +| | | +--- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final +| | | +--- org.jboss.resteasy:resteasy-core-spi:4.7.7.Final +| | | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | | +--- org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec:2.0.1.Final +| | | | +--- org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.1_spec:2.0.1.Final +| | | | +--- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final +| | | | +--- org.reactivestreams:reactive-streams:1.0.3 +| | | | \--- jakarta.validation:jakarta.validation-api:2.0.2 +| | | +--- org.reactivestreams:reactive-streams:1.0.3 +| | | +--- jakarta.validation:jakarta.validation-api:2.0.2 +| | | +--- com.ibm.async:asyncutil:0.1.0 +| | | \--- io.smallrye.config:smallrye-config:2.3.0 -> 2.12.3 (*) +| | +--- io.quarkus:quarkus-arc:2.13.7.Final (*) +| | \--- com.sun.activation:jakarta.activation:1.2.1 +| \--- jakarta.validation:jakarta.validation-api:2.0.2 ++--- io.quarkus:quarkus-resteasy-jackson:2.13.5.Final +| +--- io.quarkus:quarkus-resteasy:2.13.5.Final -> 2.13.7.Final (*) +| +--- io.quarkus:quarkus-jackson:2.13.5.Final +| | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4.2 +| | | +--- com.fasterxml.jackson.core:jackson-annotations:2.13.4 +| | | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | +--- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.4 +| | | +--- com.fasterxml.jackson.core:jackson-annotations:2.13.4 (*) +| | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (*) +| | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | +--- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.13.4 +| | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (*) +| | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | +--- com.fasterxml.jackson.module:jackson-module-parameter-names:2.13.4 +| | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (*) +| | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | \--- io.quarkus:quarkus-arc:2.13.5.Final -> 2.13.7.Final (*) +| +--- org.jboss.resteasy:resteasy-jackson2-provider:4.7.7.Final +| | +--- com.fasterxml.jackson.core:jackson-core:2.12.6 -> 2.13.4 (*) +| | +--- com.fasterxml.jackson.core:jackson-databind:2.12.6.1 -> 2.13.4.2 (*) +| | +--- com.fasterxml.jackson.core:jackson-annotations:2.12.6 -> 2.13.4 (*) +| | +--- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.12.6 -> 2.13.4 +| | | +--- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:2.13.4 +| | | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (*) +| | | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | | +--- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.13.4 +| | | | +--- com.fasterxml.jackson.core:jackson-annotations:2.13.4 (*) +| | | | +--- com.fasterxml.jackson.core:jackson-core:2.13.4 (*) +| | | | +--- com.fasterxml.jackson.core:jackson-databind:2.13.4 -> 2.13.4.2 (*) +| | | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | | \--- com.fasterxml.jackson:jackson-bom:2.13.4 (*) +| | +--- com.github.java-json-tools:json-patch:1.13 +| | | +--- com.fasterxml.jackson.core:jackson-databind:2.11.0 -> 2.13.4.2 (*) +| | | +--- com.github.java-json-tools:msg-simple:1.2 +| | | | \--- com.github.java-json-tools:btf:1.3 +| | | \--- com.github.java-json-tools:jackson-coreutils:2.0 +| | | +--- com.fasterxml.jackson.core:jackson-databind:2.11.0 -> 2.13.4.2 (*) +| | | \--- com.github.java-json-tools:msg-simple:1.2 (*) +| | \--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| \--- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final ++--- io.quarkus:quarkus-jdbc-postgresql:2.13.5.Final +| +--- io.quarkus:quarkus-arc:2.13.5.Final -> 2.13.7.Final (*) +| \--- org.postgresql:postgresql:42.5.0 ++--- io.quarkus:quarkus-vertx-http:2.13.5.Final -> 2.13.7.Final (*) ++--- io.quarkus:quarkus-kubernetes-service-binding:2.13.5.Final +| \--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) ++--- io.quarkus:quarkus-container-image-docker:2.13.5.Final +| \--- io.quarkus:quarkus-container-image:2.13.5.Final +| \--- io.quarkus:quarkus-core:2.13.5.Final -> 2.13.7.Final (*) ++--- jakarta.validation:jakarta.validation-api:2.0.2 ++--- io.quarkus:quarkus-resteasy-multipart:2.13.7.Final +| +--- io.quarkus:quarkus-resteasy:2.13.7.Final (*) +| +--- org.jboss.resteasy:resteasy-multipart-provider:4.7.7.Final +| | +--- org.jboss.resteasy:resteasy-core-spi:4.7.7.Final (*) +| | +--- org.jboss.resteasy:resteasy-core:4.7.7.Final (*) +| | +--- org.jboss.resteasy:resteasy-jaxb-provider:4.7.7.Final +| | | +--- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:2.0.0.Final +| | | +--- org.glassfish.jaxb:jaxb-runtime:2.3.3-b02 (*) +| | | \--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | +--- com.sun.mail:jakarta.mail:1.6.5 +| | +--- org.apache.james:apache-mime4j-dom:0.8.3 +| | | \--- org.apache.james:apache-mime4j-core:0.8.3 +| | +--- org.apache.james:apache-mime4j-storage:0.8.3 +| | | +--- org.apache.james:apache-mime4j-dom:0.8.3 (*) +| | | \--- commons-io:commons-io:2.4 -> 2.6 +| | \--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| +--- com.sun.activation:jakarta.activation:1.2.1 +| \--- org.jboss.logging:commons-logging-jboss-logging:1.0.0.Final +| \--- org.jboss.logging:jboss-logging:3.3.1.Final -> 3.5.0.Final ++--- io.quarkus:quarkus-hibernate-orm-deployment:2.0.2.Final +| +--- io.quarkus:quarkus-core-deployment:2.0.2.Final +| | +--- org.aesh:readline:2.1 +| | | \--- org.fusesource.jansi:jansi:1.18 +| | +--- org.apache.commons:commons-lang3:3.12.0 +| | +--- org.wildfly.common:wildfly-common:1.5.4.Final-format-001 +| | +--- io.quarkus.gizmo:gizmo:1.0.9.Final +| | | +--- org.ow2.asm:asm:9.1 -> 9.3 +| | | +--- org.ow2.asm:asm-util:9.1 +| | | | +--- org.ow2.asm:asm:9.1 -> 9.3 +| | | | +--- org.ow2.asm:asm-tree:9.1 +| | | | | \--- org.ow2.asm:asm:9.1 -> 9.3 +| | | | \--- org.ow2.asm:asm-analysis:9.1 +| | | | \--- org.ow2.asm:asm-tree:9.1 (*) +| | | \--- org.jboss:jandex:2.3.0.Final +| | +--- org.jboss:jandex:2.3.0.Final +| | +--- org.ow2.asm:asm:9.1 -> 9.3 +| | +--- io.quarkus:quarkus-development-mode-spi:2.0.2.Final -> 2.13.7.Final +| | +--- io.quarkus:quarkus-class-change-agent:2.0.2.Final +| | +--- io.quarkus:quarkus-bootstrap-core:2.0.2.Final +| | | +--- io.quarkus:quarkus-bootstrap-app-model:2.0.2.Final +| | | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | | \--- org.jboss.logging:commons-logging-jboss-logging:1.0.0.Final (*) +| | | +--- io.quarkus:quarkus-bootstrap-maven-resolver:2.0.2.Final +| | | | +--- io.quarkus:quarkus-bootstrap-app-model:2.0.2.Final (*) +| | | | +--- org.jboss.logmanager:jboss-logmanager-embedded:1.0.9 -> 1.0.10 (*) +| | | | +--- org.jboss.slf4j:slf4j-jboss-logmanager:1.1.0.Final -> 1.2.0.Final +| | | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | | +--- org.slf4j:slf4j-api:1.7.30 -> 1.7.36 +| | | | +--- org.apache.maven:maven-embedder:3.8.1 +| | | | | +--- org.apache.maven:maven-settings:3.8.1 +| | | | | | \--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | +--- org.apache.maven:maven-settings-builder:3.8.1 +| | | | | | +--- org.apache.maven:maven-builder-support:3.8.1 +| | | | | | +--- org.codehaus.plexus:plexus-interpolation:1.25 +| | | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | +--- org.apache.maven:maven-settings:3.8.1 (*) +| | | | | | \--- org.sonatype.plexus:plexus-sec-dispatcher:1.4 +| | | | | | +--- org.codehaus.plexus:plexus-utils:1.5.5 -> 3.3.0 +| | | | | | \--- org.sonatype.plexus:plexus-cipher:1.4 +| | | | | +--- org.apache.maven:maven-core:3.8.1 +| | | | | | +--- org.apache.maven:maven-model:3.8.1 +| | | | | | | \--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | +--- org.apache.maven:maven-settings:3.8.1 (*) +| | | | | | +--- org.apache.maven:maven-settings-builder:3.8.1 (*) +| | | | | | +--- org.apache.maven:maven-builder-support:3.8.1 +| | | | | | +--- org.apache.maven:maven-repository-metadata:3.8.1 +| | | | | | | \--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | +--- org.apache.maven:maven-artifact:3.8.1 +| | | | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | | \--- org.apache.commons:commons-lang3:3.8.1 -> 3.12.0 +| | | | | | +--- org.apache.maven:maven-plugin-api:3.8.1 +| | | | | | | +--- org.apache.maven:maven-model:3.8.1 (*) +| | | | | | | +--- org.apache.maven:maven-artifact:3.8.1 (*) +| | | | | | | +--- org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.4 +| | | | | | | | +--- org.codehaus.plexus:plexus-component-annotations:1.5.5 -> 2.1.0 +| | | | | | | | +--- org.codehaus.plexus:plexus-classworlds:2.5.2 -> 2.6.0 +| | | | | | | | \--- org.codehaus.plexus:plexus-utils:3.0.17 -> 3.3.0 +| | | | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | | \--- org.codehaus.plexus:plexus-classworlds:2.6.0 +| | | | | | +--- org.apache.maven:maven-model-builder:3.8.1 +| | | | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | | +--- org.codehaus.plexus:plexus-interpolation:1.25 +| | | | | | | +--- org.apache.maven:maven-model:3.8.1 (*) +| | | | | | | +--- org.apache.maven:maven-artifact:3.8.1 (*) +| | | | | | | \--- org.apache.maven:maven-builder-support:3.8.1 +| | | | | | +--- org.apache.maven:maven-resolver-provider:3.8.1 +| | | | | | | +--- org.apache.maven:maven-model:3.8.1 (*) +| | | | | | | +--- org.apache.maven:maven-model-builder:3.8.1 (*) +| | | | | | | +--- org.apache.maven:maven-repository-metadata:3.8.1 (*) +| | | | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | | | +--- org.apache.maven.resolver:maven-resolver-spi:1.6.2 +| | | | | | | | \--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | | | +--- org.apache.maven.resolver:maven-resolver-util:1.6.2 +| | | | | | | | \--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | | | +--- org.apache.maven.resolver:maven-resolver-impl:1.6.2 +| | | | | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | | | | +--- org.apache.maven.resolver:maven-resolver-spi:1.6.2 (*) +| | | | | | | | +--- org.apache.maven.resolver:maven-resolver-util:1.6.2 (*) +| | | | | | | | \--- org.apache.commons:commons-lang3:3.8.1 -> 3.12.0 +| | | | | | | \--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | +--- org.apache.maven.resolver:maven-resolver-impl:1.6.2 (*) +| | | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | | +--- org.apache.maven.resolver:maven-resolver-spi:1.6.2 (*) +| | | | | | +--- org.apache.maven.resolver:maven-resolver-util:1.6.2 (*) +| | | | | | +--- org.apache.maven.shared:maven-shared-utils:3.2.1 +| | | | | | | \--- commons-io:commons-io:2.5 -> 2.6 +| | | | | | +--- org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.4 (*) +| | | | | | +--- com.google.inject:guice:4.2.1 +| | | | | | | +--- aopalliance:aopalliance:1.0 +| | | | | | | \--- com.google.guava:guava:25.1-android +| | | | | | | +--- com.google.code.findbugs:jsr305:3.0.2 +| | | | | | | +--- org.checkerframework:checker-compat-qual:2.0.0 +| | | | | | | +--- com.google.errorprone:error_prone_annotations:2.1.3 -> 2.10.0 +| | | | | | | +--- com.google.j2objc:j2objc-annotations:1.1 +| | | | | | | \--- org.codehaus.mojo:animal-sniffer-annotations:1.14 +| | | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | | +--- org.codehaus.plexus:plexus-classworlds:2.6.0 +| | | | | | +--- org.codehaus.plexus:plexus-component-annotations:2.1.0 +| | | | | | \--- org.apache.commons:commons-lang3:3.8.1 -> 3.12.0 +| | | | | +--- org.apache.maven:maven-plugin-api:3.8.1 (*) +| | | | | +--- org.apache.maven:maven-model:3.8.1 (*) +| | | | | +--- org.apache.maven:maven-model-builder:3.8.1 (*) +| | | | | +--- org.apache.maven:maven-builder-support:3.8.1 +| | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | +--- org.apache.maven.resolver:maven-resolver-util:1.6.2 (*) +| | | | | +--- org.apache.maven.shared:maven-shared-utils:3.2.1 (*) +| | | | | +--- com.google.inject:guice:4.2.1 (*) +| | | | | +--- org.codehaus.plexus:plexus-utils:3.2.1 -> 3.3.0 +| | | | | +--- org.codehaus.plexus:plexus-classworlds:2.6.0 +| | | | | +--- org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.4 (*) +| | | | | +--- commons-cli:commons-cli:1.4 +| | | | | \--- org.apache.commons:commons-lang3:3.8.1 -> 3.12.0 +| | | | +--- org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.4 (*) +| | | | +--- org.apache.maven:maven-settings-builder:3.8.1 (*) +| | | | +--- org.apache.maven:maven-resolver-provider:3.8.1 (*) +| | | | +--- org.apache.maven.resolver:maven-resolver-connector-basic:1.6.2 +| | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | +--- org.apache.maven.resolver:maven-resolver-spi:1.6.2 (*) +| | | | | \--- org.apache.maven.resolver:maven-resolver-util:1.6.2 (*) +| | | | +--- org.apache.maven.resolver:maven-resolver-transport-wagon:1.6.2 +| | | | | +--- org.apache.maven.resolver:maven-resolver-api:1.6.2 +| | | | | +--- org.apache.maven.resolver:maven-resolver-spi:1.6.2 (*) +| | | | | +--- org.apache.maven.resolver:maven-resolver-util:1.6.2 (*) +| | | | | \--- org.slf4j:slf4j-api:1.7.30 -> 1.7.36 +| | | | +--- org.apache.maven.wagon:wagon-http:3.4.3 +| | | | | +--- org.apache.maven.wagon:wagon-http-shared:3.4.3 +| | | | | | +--- org.jsoup:jsoup:1.12.1 +| | | | | | +--- org.apache.httpcomponents:httpclient:4.5.13 +| | | | | | | +--- org.apache.httpcomponents:httpcore:4.4.13 -> 4.4.14 +| | | | | | | \--- commons-codec:commons-codec:1.11 +| | | | | | +--- org.apache.httpcomponents:httpcore:4.4.14 +| | | | | | +--- commons-io:commons-io:2.6 +| | | | | | +--- org.slf4j:slf4j-api:1.7.25 -> 1.7.36 +| | | | | | \--- org.apache.maven.wagon:wagon-provider-api:3.4.3 +| | | | | | \--- org.codehaus.plexus:plexus-utils:3.3.0 +| | | | | +--- org.apache.httpcomponents:httpclient:4.5.13 (*) +| | | | | +--- org.apache.httpcomponents:httpcore:4.4.14 +| | | | | +--- org.codehaus.plexus:plexus-utils:3.3.0 +| | | | | \--- org.apache.maven.wagon:wagon-provider-api:3.4.3 (*) +| | | | \--- org.apache.maven.wagon:wagon-file:3.4.3 +| | | | +--- org.codehaus.plexus:plexus-utils:3.3.0 +| | | | \--- org.apache.maven.wagon:wagon-provider-api:3.4.3 (*) +| | | +--- io.quarkus:quarkus-bootstrap-gradle-resolver:2.0.2.Final +| | | | +--- io.quarkus:quarkus-bootstrap-app-model:2.0.2.Final (*) +| | | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | | \--- org.jboss.slf4j:slf4j-jboss-logmanager:1.1.0.Final -> 1.2.0.Final +| | | \--- io.smallrye.common:smallrye-common-io:1.6.0 -> 1.13.1 +| | +--- io.quarkus:quarkus-devtools-utilities:2.0.2.Final +| | +--- org.eclipse.sisu:org.eclipse.sisu.inject:0.3.4 +| | +--- io.quarkus:quarkus-core:2.0.2.Final -> 2.13.7.Final (*) +| | +--- io.quarkus:quarkus-builder:2.0.2.Final +| | | +--- org.wildfly.common:wildfly-common:1.5.4.Final-format-001 +| | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | \--- org.jboss.threads:jboss-threads:3.4.0.Final -> 3.4.3.Final (*) +| | +--- org.graalvm.sdk:graal-sdk:21.1.0 -> 22.3.0 +| | +--- org.junit.platform:junit-platform-launcher:1.7.2 +| | | +--- org.junit:junit-bom:5.7.2 +| | | | +--- org.junit.jupiter:junit-jupiter:5.7.2 (c) +| | | | +--- org.junit.jupiter:junit-jupiter-api:5.7.2 (c) +| | | | +--- org.junit.jupiter:junit-jupiter-engine:5.7.2 (c) +| | | | +--- org.junit.jupiter:junit-jupiter-params:5.7.2 (c) +| | | | +--- org.junit.platform:junit-platform-engine:1.7.2 (c) +| | | | +--- org.junit.platform:junit-platform-launcher:1.7.2 (c) +| | | | \--- org.junit.platform:junit-platform-commons:1.7.2 (c) +| | | +--- org.apiguardian:apiguardian-api:1.1.0 +| | | \--- org.junit.platform:junit-platform-engine:1.7.2 +| | | +--- org.junit:junit-bom:5.7.2 (*) +| | | +--- org.apiguardian:apiguardian-api:1.1.0 +| | | +--- org.opentest4j:opentest4j:1.2.0 +| | | \--- org.junit.platform:junit-platform-commons:1.7.2 +| | | +--- org.junit:junit-bom:5.7.2 (*) +| | | \--- org.apiguardian:apiguardian-api:1.1.0 +| | \--- org.junit.jupiter:junit-jupiter:5.7.2 +| | +--- org.junit:junit-bom:5.7.2 (*) +| | +--- org.junit.jupiter:junit-jupiter-api:5.7.2 +| | | +--- org.junit:junit-bom:5.7.2 (*) +| | | +--- org.apiguardian:apiguardian-api:1.1.0 +| | | +--- org.opentest4j:opentest4j:1.2.0 +| | | \--- org.junit.platform:junit-platform-commons:1.7.2 (*) +| | +--- org.junit.jupiter:junit-jupiter-params:5.7.2 +| | | +--- org.junit:junit-bom:5.7.2 (*) +| | | +--- org.apiguardian:apiguardian-api:1.1.0 +| | | \--- org.junit.jupiter:junit-jupiter-api:5.7.2 (*) +| | \--- org.junit.jupiter:junit-jupiter-engine:5.7.2 +| | +--- org.junit:junit-bom:5.7.2 (*) +| | +--- org.apiguardian:apiguardian-api:1.1.0 +| | +--- org.junit.platform:junit-platform-engine:1.7.2 (*) +| | \--- org.junit.jupiter:junit-jupiter-api:5.7.2 (*) +| +--- io.quarkus:quarkus-hibernate-orm:2.0.2.Final -> 2.13.5.Final (*) +| +--- io.quarkus:quarkus-narayana-jta-deployment:2.0.2.Final +| | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-vertx-http-dev-console-spi:2.0.2.Final +| | | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | | +--- io.quarkus:quarkus-vertx-http-dev-console-runtime-spi:2.0.2.Final -> 2.13.7.Final (*) +| | | | +--- io.quarkus.arc:arc:2.0.2.Final -> 2.13.7.Final (*) +| | | | \--- io.vertx:vertx-web:4.1.0 -> 4.3.4 (*) +| | | +--- io.quarkus:quarkus-arc:2.0.2.Final -> 2.13.7.Final (*) +| | | \--- io.quarkus.arc:arc-processor:2.0.2.Final +| | | +--- io.quarkus.arc:arc:2.0.2.Final -> 2.13.7.Final (*) +| | | +--- jakarta.enterprise:jakarta.enterprise.cdi-api:2.0.2 (*) +| | | +--- org.jboss.logging:jboss-logging:3.4.2.Final -> 3.5.0.Final +| | | +--- org.jboss:jandex:2.3.0.Final +| | | +--- io.quarkus.gizmo:gizmo:1.0.8.Final -> 1.0.9.Final (*) +| | | \--- jakarta.annotation:jakarta.annotation-api:1.3.5 +| | +--- io.quarkus:quarkus-mutiny-deployment:2.0.2.Final +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-smallrye-context-propagation-deployment:2.0.2.Final +| | | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | | | \--- io.quarkus:quarkus-smallrye-context-propagation:2.0.2.Final -> 2.13.7.Final (*) +| | | \--- io.quarkus:quarkus-mutiny:2.0.2.Final -> 2.13.7.Final (*) +| | \--- io.quarkus:quarkus-narayana-jta:2.0.2.Final -> 2.13.5.Final (*) +| +--- io.quarkus:quarkus-agroal-deployment:2.0.2.Final +| | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-datasource-deployment:2.0.2.Final +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-datasource:2.0.2.Final -> 2.13.5.Final (*) +| | | \--- io.quarkus:quarkus-datasource-deployment-spi:2.0.2.Final +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | | \--- io.quarkus:quarkus-datasource-common:2.0.2.Final -> 2.13.5.Final +| | +--- io.quarkus:quarkus-agroal:2.0.2.Final -> 2.13.5.Final (*) +| | +--- io.quarkus:quarkus-agroal-spi:2.0.2.Final +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | \--- io.quarkus:quarkus-datasource-common:2.0.2.Final -> 2.13.5.Final +| | +--- io.quarkus:quarkus-narayana-jta-deployment:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-credentials-deployment:2.0.2.Final +| | | +--- io.quarkus:quarkus-credentials:2.0.2.Final -> 2.13.7.Final (*) +| | | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | | \--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | \--- io.quarkus:quarkus-smallrye-health-spi:2.0.2.Final +| | \--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| +--- io.quarkus:quarkus-caffeine-deployment:2.0.2.Final +| | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | \--- io.quarkus:quarkus-caffeine:2.0.2.Final -> 2.13.5.Final (*) +| \--- io.quarkus:quarkus-panache-hibernate-common-deployment:2.0.2.Final +| +--- io.quarkus:quarkus-panache-hibernate-common:2.0.2.Final +| | +--- io.quarkus:quarkus-core:2.0.2.Final -> 2.13.7.Final (*) +| | +--- io.quarkus:quarkus-arc:2.0.2.Final -> 2.13.7.Final (*) +| | +--- io.quarkus:quarkus-panache-common:2.0.2.Final +| | | +--- io.quarkus:quarkus-core:2.0.2.Final -> 2.13.7.Final (*) +| | | \--- io.quarkus:quarkus-arc:2.0.2.Final -> 2.13.7.Final (*) +| | \--- io.quarkus:quarkus-hibernate-orm:2.0.2.Final -> 2.13.5.Final (*) +| +--- io.quarkus:quarkus-panache-common-deployment:2.0.2.Final +| | +--- io.quarkus:quarkus-core-deployment:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-panache-common:2.0.2.Final (*) +| | +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| | +--- org.jboss:jandex:2.3.0.Final +| | +--- jakarta.validation:jakarta.validation-api:2.0.2 +| | \--- org.ow2.asm:asm:9.1 -> 9.3 +| +--- io.quarkus:quarkus-arc-deployment:2.0.2.Final (*) +| +--- org.jboss:jandex:2.3.0.Final +| \--- org.ow2.asm:asm:9.1 -> 9.3 +\--- log4j:log4j:1.2.17 + +testRuntimeOnly - Runtime only dependencies for source set 'test'. (n) +No dependencies + +(c) - A dependency constraint, not a dependency. The dependency affected by the constraint occurs elsewhere in the tree. +(*) - Indicates repeated occurrences of a transitive dependency subtree. Gradle expands transitive dependency subtrees only once per project; repeat occurrences only display the root of the subtree, followed by this annotation. + +(n) - A dependency or dependency configuration that cannot be resolved. + +A web-based, searchable dependency report is available by adding the --scan option. + +BUILD SUCCESSFUL in 714ms +1 actionable task: 1 executed diff --git a/test/providers/tst_manifests/gradle/deps_with_empty_project_group/gradle.properties b/test/providers/tst_manifests/gradle/deps_with_empty_project_group/gradle.properties new file mode 100644 index 00000000..ecc230b6 --- /dev/null +++ b/test/providers/tst_manifests/gradle/deps_with_empty_project_group/gradle.properties @@ -0,0 +1,123 @@ + +> Task :properties + +------------------------------------------------------------ +Root project 'postgresql-orm-quarkus' +------------------------------------------------------------ + +allprojects: [root project 'postgresql-orm-quarkus'] +ant: org.gradle.api.internal.project.DefaultAntBuilder@3ff817a5 +antBuilderFactory: org.gradle.api.internal.project.DefaultAntBuilderFactory@c5e51e1 +archivesBaseName: postgresql-orm-quarkus +artifacts: org.gradle.api.internal.artifacts.dsl.DefaultArtifactHandler_Decorated@2f0518ba +asDynamicObject: DynamicObject for root project 'postgresql-orm-quarkus' +autoTargetJvmDisabled: false +base: extension 'base' +baseClassLoaderScope: org.gradle.api.internal.initialization.DefaultClassLoaderScope@36e6e946 +buildDir: /home/nsantsch/RedHat/exhort-javascript-api/test/providers/tst_manifests/gradle/deps_with_empty_project_group/build +buildFile: /home/nsantsch/RedHat/exhort-javascript-api/test/providers/tst_manifests/gradle/deps_with_empty_project_group/build.gradle +buildPath: : +buildScriptSource: org.gradle.groovy.scripts.TextResourceScriptSource@49dc9500 +buildTreePath: : +buildscript: org.gradle.api.internal.initialization.DefaultScriptHandler_Decorated@37f31483 +childProjects: {} +childProjectsUnchecked: {} +class: class org.gradle.api.internal.project.DefaultProject_Decorated +classLoaderScope: org.gradle.api.internal.initialization.DefaultClassLoaderScope@30b40a0f +clean: task ':clean' +components: SoftwareComponent container +configurationActions: org.gradle.configuration.project.DefaultProjectConfigurationActionContainer@31197986 +configurationTargetIdentifier: org.gradle.configuration.ConfigurationTargetIdentifier$1@1cc09e30 +configurations: configuration container for root project 'postgresql-orm-quarkus' +convention: org.gradle.internal.extensibility.DefaultConvention@33b8d627 +crossProjectModelAccess: org.gradle.api.internal.project.DefaultCrossProjectModelAccess@23cc562d +defaultArtifacts: extension 'defaultArtifacts' +defaultTasks: [] +deferredProjectConfiguration: org.gradle.api.internal.project.DeferredProjectConfiguration@59e3ce9b +dependencies: org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler_Decorated@414afa89 +dependencyFactory: org.gradle.api.internal.artifacts.DefaultDependencyFactory@34361569 +dependencyLocking: org.gradle.internal.locking.DefaultDependencyLockingHandler_Decorated@750a50fc +depth: 0 +description: null +detachedState: false +displayName: root project 'postgresql-orm-quarkus' +distsDirName: distributions +distsDirectory: extension 'base' property 'distsDirectory' +docsDir: /home/nsantsch/RedHat/exhort-javascript-api/test/providers/tst_manifests/gradle/deps_with_empty_project_group/build/docs +docsDirName: docs +ext: org.gradle.internal.extensibility.DefaultExtraPropertiesExtension@24d2e5a0 +extensions: org.gradle.internal.extensibility.DefaultConvention@33b8d627 +fileOperations: org.gradle.api.internal.file.DefaultFileOperations@20cb310e +fileResolver: org.gradle.api.internal.file.BaseDirFileResolver@761085b +gradle: build 'postgresql-orm-quarkus' +group: +identityPath: : +inheritedScope: org.gradle.internal.extensibility.ExtensibleDynamicObject$InheritedDynamicObject@63a1f338 +internalStatus: property(java.lang.Object, fixed(class java.lang.String, integration)) +isolated: DefaultIsolatedProject{root project 'postgresql-orm-quarkus'} +java: extension 'java' +javaToolchains: extension 'javaToolchains' +layout: org.gradle.api.internal.file.DefaultProjectLayout@2957ed4b +libs: extension 'libs' +libsDirName: libs +libsDirectory: extension 'base' property 'libsDirectory' +lifecycleActionsState: null +listenerBuildOperationDecorator: org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator@4a2f142e +logger: org.gradle.internal.logging.slf4j.OutputEventListenerBackedLogger@3bcd2b05 +logging: org.gradle.internal.logging.services.DefaultLoggingManager@7555f5cf +model: root project 'postgresql-orm-quarkus' +modelIdentityDisplayName: null +modelRegistry: org.gradle.model.internal.registry.DefaultModelRegistry@63fe739b +name: postgresql-orm-quarkus +normalization: org.gradle.normalization.internal.DefaultInputNormalizationHandler_Decorated@1da48045 +objects: org.gradle.api.internal.model.DefaultObjectFactory@2f1869bb +org.gradle.java.installations.paths: +owner: root project 'postgresql-orm-quarkus' +parent: null +parentIdentifier: null +path: : +pluginContext: false +pluginManager: org.gradle.api.internal.plugins.DefaultPluginManager_Decorated@75391a1a +plugins: Plugin collection +processOperations: org.gradle.process.internal.DefaultExecActionFactory@654bcd8d +project: root project 'postgresql-orm-quarkus' +projectConfigurator: org.gradle.api.internal.project.BuildOperationCrossProjectConfigurator@5cd4dfc9 +projectDir: /home/nsantsch/RedHat/exhort-javascript-api/test/providers/tst_manifests/gradle/deps_with_empty_project_group +projectEvaluationBroadcaster: ProjectEvaluationListener broadcast +projectEvaluator: org.gradle.configuration.project.LifecycleProjectEvaluator@306d2059 +projectIdentity: root project : +projectPath: : +properties: {...} +providers: org.gradle.api.internal.provider.DefaultProviderFactory_Decorated@db90584 +reporting: extension 'reporting' +repositories: repository container +resources: org.gradle.api.internal.resources.DefaultResourceHandler@3625861b +rootDir: /home/nsantsch/RedHat/exhort-javascript-api/test/providers/tst_manifests/gradle/deps_with_empty_project_group +rootProject: root project 'postgresql-orm-quarkus' +rootScript: false +script: false +scriptHandlerFactory: org.gradle.api.internal.initialization.DefaultScriptHandlerFactory@4c752d81 +scriptPluginFactory: org.gradle.configuration.ScriptPluginFactorySelector@1543b3be +serviceRegistryFactory: org.gradle.internal.service.scopes.BuildScopeServiceRegistryFactory@501311b7 +services: project services +sourceCompatibility: 21 +sourceSets: SourceSet container +standardOutputCapture: org.gradle.internal.logging.services.DefaultLoggingManager@7555f5cf +state: project state 'EXECUTED' +status: integration +subprojects: [] +targetCompatibility: 21 +taskDependencyFactory: org.gradle.api.internal.tasks.DefaultTaskDependencyFactory@4a9c50f0 +taskThatOwnsThisObject: null +tasks: task set +test: task ':test' +testReportDir: /home/nsantsch/RedHat/exhort-javascript-api/test/providers/tst_manifests/gradle/deps_with_empty_project_group/build/reports/tests +testReportDirName: tests +testResultsDir: /home/nsantsch/RedHat/exhort-javascript-api/test/providers/tst_manifests/gradle/deps_with_empty_project_group/build/test-results +testResultsDirName: test-results +testing: extension 'testing' +version: 1.0.0-SNAPSHOT +versionCatalogs: extension 'versionCatalogs' + +BUILD SUCCESSFUL in 506ms +1 actionable task: 1 executed diff --git a/test/providers/tst_manifests/gradle/deps_with_empty_project_group/gradle/libs.versions.toml b/test/providers/tst_manifests/gradle/deps_with_empty_project_group/gradle/libs.versions.toml new file mode 100644 index 00000000..c3426fa0 --- /dev/null +++ b/test/providers/tst_manifests/gradle/deps_with_empty_project_group/gradle/libs.versions.toml @@ -0,0 +1,26 @@ +# This file was generated by the Gradle 'init' task. +# https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format + +[versions] +io-quarkus-quarkus-agroal = "2.13.5.Final" +io-quarkus-quarkus-container-image-docker = "2.13.5.Final" +io-quarkus-quarkus-hibernate-orm = "2.13.5.Final" +io-quarkus-quarkus-hibernate-orm-deployment = "2.0.2.Final" +io-quarkus-quarkus-jdbc-postgresql = "2.13.5.Final" +io-quarkus-quarkus-kubernetes-service-binding = "2.13.5.Final" +io-quarkus-quarkus-resteasy = "2.13.5.Final" +io-quarkus-quarkus-resteasy-jackson = "2.13.5.Final" +io-quarkus-quarkus-vertx-http = "2.13.5.Final" +jakarta-validation-jakarta-validation-api = "2.0.2" + +[libraries] +io-quarkus-quarkus-agroal = { module = "io.quarkus:quarkus-agroal", version.ref = "io-quarkus-quarkus-agroal" } +io-quarkus-quarkus-container-image-docker = { module = "io.quarkus:quarkus-container-image-docker", version.ref = "io-quarkus-quarkus-container-image-docker" } +io-quarkus-quarkus-hibernate-orm = { module = "io.quarkus:quarkus-hibernate-orm", version.ref = "io-quarkus-quarkus-hibernate-orm" } +io-quarkus-quarkus-hibernate-orm-deployment = { module = "io.quarkus:quarkus-hibernate-orm-deployment", version.ref = "io-quarkus-quarkus-hibernate-orm-deployment" } +io-quarkus-quarkus-jdbc-postgresql = { module = "io.quarkus:quarkus-jdbc-postgresql", version.ref = "io-quarkus-quarkus-jdbc-postgresql" } +io-quarkus-quarkus-kubernetes-service-binding = { module = "io.quarkus:quarkus-kubernetes-service-binding", version.ref = "io-quarkus-quarkus-kubernetes-service-binding" } +io-quarkus-quarkus-resteasy = { module = "io.quarkus:quarkus-resteasy", version.ref = "io-quarkus-quarkus-resteasy" } +io-quarkus-quarkus-resteasy-jackson = { module = "io.quarkus:quarkus-resteasy-jackson", version.ref = "io-quarkus-quarkus-resteasy-jackson" } +io-quarkus-quarkus-vertx-http = { module = "io.quarkus:quarkus-vertx-http", version.ref = "io-quarkus-quarkus-vertx-http" } +jakarta-validation-jakarta-validation-api = { module = "jakarta.validation:jakarta.validation-api", version.ref = "jakarta-validation-jakarta-validation-api" } diff --git a/test/providers/tst_manifests/gradle/deps_with_empty_project_group/settings.gradle b/test/providers/tst_manifests/gradle/deps_with_empty_project_group/settings.gradle new file mode 100644 index 00000000..ace59c2f --- /dev/null +++ b/test/providers/tst_manifests/gradle/deps_with_empty_project_group/settings.gradle @@ -0,0 +1,5 @@ +/* + * This file was generated by the Gradle 'init' task. + */ + +rootProject.name = 'postgresql-orm-quarkus' diff --git a/test/providers/tst_manifests/gradle/deps_with_empty_project_group/settings.gradle.kts b/test/providers/tst_manifests/gradle/deps_with_empty_project_group/settings.gradle.kts new file mode 100644 index 00000000..2d781048 --- /dev/null +++ b/test/providers/tst_manifests/gradle/deps_with_empty_project_group/settings.gradle.kts @@ -0,0 +1,5 @@ +/* + * This file was generated by the Gradle 'init' task. + */ + +rootProject.name = "postgresql-orm-quarkus" From acd33be834ecc835d49ebbcbdbc3510a71fd9f59 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Tue, 9 Dec 2025 14:16:00 +0000 Subject: [PATCH 046/102] chore: open PR on new release (#295) --- .github/workflows/release.yml | 57 ++++++++++++++--------------------- 1 file changed, 22 insertions(+), 35 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 903bf429..67e18d62 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -79,46 +79,33 @@ jobs: - name: Install project modules run: npm ci - - name: Commit and push package modifications + - name: Create release branch run: | + BRANCH="release/v${{ steps.bump.outputs.version }}" + git config user.name "${{ github.actor }}" + git config user.email "${{ github.actor }}@users.noreply.github.com" + git checkout -b "$BRANCH" git add package.json git add package-lock.json git commit -m "build: updated package with ${{ steps.bump.outputs.version }} [skip ci]" - git push - - - name: Create and push new tag - run: | - git tag ${{ steps.bump.outputs.version }} -m "${{ steps.bump.outputs.version }}" - git push origin ${{ steps.bump.outputs.version }} + git push origin "$BRANCH" - - name: Create release notes - uses: actions/github-script@v6 - id: release-notes + - name: Create GitHub release tag + uses: softprops/action-gh-release@v1 with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const repo_name = context.payload.repository.full_name - const previousTag = '${{ steps.fetch-tag.outputs.oldest-tag }}' - const currentTag = '${{ steps.bump.outputs.version }}' - - const response = await github.request('POST /repos/' + repo_name + '/releases/generate-notes', { - tag_name: currentTag, - previous_tag_name: previousTag || undefined - }) - return response.data.body + name: "Release ${{ steps.bump.outputs.version }}" + tag_name: "v${{ steps.bump.outputs.version }}" + target_commitish: "release/v${{ steps.bump.outputs.version }}" + generate_release_notes: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Create a release - uses: actions/github-script@v6 + - name: Create Pull Request for release + next version + uses: peter-evans/create-pull-request@v5 with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const repo_name = context.payload.repository.full_name - const response = await github.request('POST /repos/' + repo_name + '/releases', { - tag_name: '${{ steps.bump.outputs.version }}', - name: '${{ steps.bump.outputs.version }}', - draft: false, - body: ${{ steps.release-notes.outputs.result }}, - prerelease: false, - make_latest: 'true' - }) - + token: ${{ secrets.GITHUB_TOKEN }} + branch: release/v${{ steps.bump.outputs.version }} + base: main + title: "build: release ${{ steps.bump.outputs.version }} [skip ci]" + commit-message: "build: release ${{ steps.bump.outputs.version }} [skip ci]" + signoff: true From 73ab8122d14b36f2d38c888fcf59f85a1dcc9a88 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Tue, 9 Dec 2025 16:46:53 +0000 Subject: [PATCH 047/102] chore: open PR on new release (attempt 2) (#297) --- .github/workflows/release.yml | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 67e18d62..d2cd41f0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -87,18 +87,6 @@ jobs: git checkout -b "$BRANCH" git add package.json git add package-lock.json - git commit -m "build: updated package with ${{ steps.bump.outputs.version }} [skip ci]" - git push origin "$BRANCH" - - - name: Create GitHub release tag - uses: softprops/action-gh-release@v1 - with: - name: "Release ${{ steps.bump.outputs.version }}" - tag_name: "v${{ steps.bump.outputs.version }}" - target_commitish: "release/v${{ steps.bump.outputs.version }}" - generate_release_notes: true - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Create Pull Request for release + next version uses: peter-evans/create-pull-request@v5 @@ -109,3 +97,13 @@ jobs: title: "build: release ${{ steps.bump.outputs.version }} [skip ci]" commit-message: "build: release ${{ steps.bump.outputs.version }} [skip ci]" signoff: true + + - name: Create GitHub release tag + uses: softprops/action-gh-release@v1 + with: + name: "Release ${{ steps.bump.outputs.version }}" + tag_name: "v${{ steps.bump.outputs.version }}" + target_commitish: "release/v${{ steps.bump.outputs.version }}" + generate_release_notes: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From c80294bd8e6bf758b06e0e561c145f0c5fa829ec Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Tue, 9 Dec 2025 17:21:47 +0000 Subject: [PATCH 048/102] chore: open PR on new release (attempt 3) (#298) --- .github/workflows/release.yml | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d2cd41f0..1de3946a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -87,16 +87,8 @@ jobs: git checkout -b "$BRANCH" git add package.json git add package-lock.json - - - name: Create Pull Request for release + next version - uses: peter-evans/create-pull-request@v5 - with: - token: ${{ secrets.GITHUB_TOKEN }} - branch: release/v${{ steps.bump.outputs.version }} - base: main - title: "build: release ${{ steps.bump.outputs.version }} [skip ci]" - commit-message: "build: release ${{ steps.bump.outputs.version }} [skip ci]" - signoff: true + git commit -m "build: release ${{ steps.bump.outputs.version }} [skip ci]" + git push origin "$BRANCH"" - name: Create GitHub release tag uses: softprops/action-gh-release@v1 @@ -107,3 +99,12 @@ jobs: generate_release_notes: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Create Pull Request for release + next version + run: > + gh pr create + --title "build: release ${{ steps.bump.outputs.version }} [skip ci]" + --base main --head "release/v${{ steps.bump.outputs.version }}" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + From c10bed52b51e59d25e1ad5d34d3201d6a5962fb5 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Tue, 9 Dec 2025 18:44:57 +0000 Subject: [PATCH 049/102] fix: remove erroneous extra " in release pipeline (#299) --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1de3946a..49e4544e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -88,7 +88,7 @@ jobs: git add package.json git add package-lock.json git commit -m "build: release ${{ steps.bump.outputs.version }} [skip ci]" - git push origin "$BRANCH"" + git push origin "$BRANCH" - name: Create GitHub release tag uses: softprops/action-gh-release@v1 From 5f9cb1362ae0f6b77505a97119e63630458ae372 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Wed, 10 Dec 2025 11:30:51 +0000 Subject: [PATCH 050/102] fix: include mandatory 'body' parameter to 'gh pr create' (#300) --- .github/workflows/publish.yml | 3 +++ .github/workflows/release.yml | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 45595159..a6cb9040 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -9,6 +9,9 @@ on: - main tags: - 'v*.*.*' + release: + types: + - published permissions: contents: write diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 49e4544e..6dec8c9d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -103,8 +103,10 @@ jobs: - name: Create Pull Request for release + next version run: > gh pr create - --title "build: release ${{ steps.bump.outputs.version }} [skip ci]" - --base main --head "release/v${{ steps.bump.outputs.version }}" + --title "build: release ${{ steps.bump.outputs.version }}" + --body "build: release ${{ steps.bump.outputs.version }}" + --base main + --head "release/v${{ steps.bump.outputs.version }}" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 50acba2bcf8250647e00b929a1a145ad72fdbf22 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Wed, 10 Dec 2025 11:40:36 +0000 Subject: [PATCH 051/102] fix: proper newline commands in workflow (#301) --- .github/workflows/release.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6dec8c9d..f16089c3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -101,11 +101,11 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Create Pull Request for release + next version - run: > - gh pr create - --title "build: release ${{ steps.bump.outputs.version }}" - --body "build: release ${{ steps.bump.outputs.version }}" - --base main + run: | + gh pr create \ + --title "build: release ${{ steps.bump.outputs.version }}" \ + --body "build: release ${{ steps.bump.outputs.version }}" \ + --base main \ --head "release/v${{ steps.bump.outputs.version }}" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 7fb7069db2275e50eed8124d64db3a067cd9d849 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Wed, 10 Dec 2025 11:49:01 +0000 Subject: [PATCH 052/102] fix: include pull-request write permission in workflow (#302) --- .github/workflows/release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f16089c3..bf65e447 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,6 +17,7 @@ on: permissions: contents: write + pull-requests: write jobs: create-release: From 91b0e1a12b3b37a827162cf660a6d8129db4775f Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Wed, 10 Dec 2025 14:56:53 +0000 Subject: [PATCH 053/102] chore: update publish pipeline to be run via workflow_call from release pipeline (#304) --- .github/workflows/publish.yml | 33 ++++++++++----------------------- .github/workflows/release.yml | 5 +++++ 2 files changed, 15 insertions(+), 23 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a6cb9040..d7f1fe1d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -4,14 +4,16 @@ name: Publish on: workflow_dispatch: + workflow_call: + inputs: + branch: + description: The branch containing the release code snapshot + required: true + type: string + default: "" push: branches: - main - tags: - - 'v*.*.*' - release: - types: - - published permissions: contents: write @@ -19,7 +21,7 @@ permissions: jobs: publish-ea: - if: startsWith(github.ref, 'refs/tags/') == false + if: github.event_name == 'push' runs-on: ubuntu-latest name: Publish EA release to NPM steps: @@ -70,14 +72,14 @@ jobs: npm publish --verbose --tag ea --access public --provenance publish-release: - if: startsWith(github.ref, 'refs/tags/') + if: github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' runs-on: ubuntu-latest name: Publish release to NPM steps: - name: Checkout sources uses: actions/checkout@v4 with: - ref: ${{ github.ref }} + ref: ${{ inputs.branch || github.ref }} fetch-depth: 0 - name: Install node 24 @@ -90,21 +92,6 @@ jobs: - name: Update npm run: npm install -g npm@latest - - name: Get tag name - id: tag - run: | - TAG_NAME=${GITHUB_REF#refs/tags/} - echo "name=$TAG_NAME" >> "$GITHUB_OUTPUT" - - - name: Update package.json with tag version - id: update-version - run: | - TAG_NAME="${{ steps.tag.outputs.name }}" - # Remove 'v' prefix if present - VERSION=${TAG_NAME#v} - npm version "$VERSION" --no-git-tag-version - echo "version=$VERSION" >> "$GITHUB_OUTPUT" - - name: Install project modules run: npm ci diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bf65e447..57f69b65 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -111,3 +111,8 @@ jobs: env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Run Publish pipeline + uses: ./.github/workflows/publish.yml + with: + branch: "release/v${{ steps.bump.outputs.version }}" + From bac28d38020ec24478b7ad043ea0d074db482bdf Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Wed, 10 Dec 2025 15:24:42 +0000 Subject: [PATCH 054/102] fix: correctly trigger publish from release (#306) --- .github/workflows/release.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 57f69b65..55581213 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,6 +23,8 @@ jobs: create-release: runs-on: ubuntu-latest name: Create release + outputs: + version: ${{ steps.bump.outputs.version }} steps: - name: Checkout sources uses: actions/checkout@v4 @@ -111,8 +113,10 @@ jobs: env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Run Publish pipeline - uses: ./.github/workflows/publish.yml - with: - branch: "release/v${{ steps.bump.outputs.version }}" + trigger-publish: + name: Trigger Publish pipeline + needs: create-release + uses: ./.github/workflows/publish.yml + with: + branch: "release/v${{ needs.create-release.outputs.version }}" From 4a427e5ca37cc4bd2ab71947b528a473b18e0228 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Wed, 10 Dec 2025 15:36:19 +0000 Subject: [PATCH 055/102] fix: set id-token write permissions in calling workflow (#308) --- .github/workflows/release.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 55581213..6a37bf87 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,14 +15,13 @@ on: - minor - major -permissions: - contents: write - pull-requests: write - jobs: create-release: runs-on: ubuntu-latest name: Create release + permissions: + contents: write + pull-requests: write outputs: version: ${{ steps.bump.outputs.version }} steps: @@ -116,6 +115,9 @@ jobs: trigger-publish: name: Trigger Publish pipeline needs: create-release + permissions: + contents: write + id-token: write uses: ./.github/workflows/publish.yml with: branch: "release/v${{ needs.create-release.outputs.version }}" From e78dbd61d8d16d5f2fdc8f74484b6a82a1135eb0 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Wed, 10 Dec 2025 16:11:51 +0000 Subject: [PATCH 056/102] fix: use workflow_run instead of workflow_call due to Trusted Publisher restrictions (#310) fix: use workflow_run instead of workflow_call due to Trusted Publishers restriction --- .github/workflows/publish.yml | 30 ++++++++++++++++------- .github/workflows/release.yml | 46 +++++------------------------------ 2 files changed, 27 insertions(+), 49 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index d7f1fe1d..f60350f6 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -4,13 +4,10 @@ name: Publish on: workflow_dispatch: - workflow_call: - inputs: - branch: - description: The branch containing the release code snapshot - required: true - type: string - default: "" + workflow_run: + workflows: ["Release"] + types: + - completed push: branches: - main @@ -18,6 +15,7 @@ on: permissions: contents: write id-token: write + actions: read jobs: publish-ea: @@ -72,14 +70,28 @@ jobs: npm publish --verbose --tag ea --access public --provenance publish-release: - if: github.event_name == 'workflow_call' || github.event_name == 'workflow_dispatch' + if: (github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success') || github.event_name == 'workflow_dispatch' runs-on: ubuntu-latest name: Publish release to NPM steps: + - name: Get releasebranch.txt artifact from Release pipeline + if: github.event_name == 'workflow_run' + uses: actions/download-artifact@v5 + with: + name: releasebranch.txt + run-id: ${{ github.event.workflow_run.id }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Read releasebranch.txt + id: releasebranch + run: | + echo "branch=$(cat releasebranch.txt)" >> "$GITHUB_OUTPUT" + rm releasebranch.txt + - name: Checkout sources uses: actions/checkout@v4 with: - ref: ${{ inputs.branch || github.ref }} + ref: ${{ (github.event_name == 'workflow_run' && steps.releasebranch.outputs.branch) || github.ref }} fetch-depth: 0 - name: Install node 24 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6a37bf87..f52a7739 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,8 +22,6 @@ jobs: permissions: contents: write pull-requests: write - outputs: - version: ${{ steps.bump.outputs.version }} steps: - name: Checkout sources uses: actions/checkout@v4 @@ -42,33 +40,6 @@ jobs: git config user.name "${{ github.actor }}" git config user.email "${{ github.actor }}@users.noreply.github.com" - - name: Get previous released annotated tag - id: last-release - run: | - # Get the latest tag that doesn't have -ea suffix (handles both -ea. and -ea- formats) - TAG=$(git tag -l --sort=-version:refname | grep -vE -- '-ea[.-]' | head -n 1) - if [ -z "$TAG" ]; then - # If no release tag exists, use the base version from package.json - BASE_VERSION=$(node -p "require('./package.json').version" | sed -E 's/-ea[.-][0-9]+$//') - echo "base-tag=$BASE_VERSION" >> "$GITHUB_OUTPUT" - echo "full-tag=$BASE_VERSION" >> "$GITHUB_OUTPUT" - else - echo "base-tag=$TAG" >> "$GITHUB_OUTPUT" - echo "full-tag=$TAG" >> "$GITHUB_OUTPUT" - fi - - - name: Get first tag in current development iteration - id: fetch-tag - run: | - BASE_TAG="${{ steps.last-release.outputs.base-tag }}" - # Find the oldest EA tag for this base version (handles both -ea. and -ea- formats) - OLDEST_EA_TAG=$(git tag -l --sort=creatordate | grep -E "^${BASE_TAG}-ea[.-]" | head -n 1) - if [ -n "$OLDEST_EA_TAG" ]; then - echo "oldest-tag=$OLDEST_EA_TAG" >> "$GITHUB_OUTPUT" - else - echo "oldest-tag=$BASE_TAG" >> "$GITHUB_OUTPUT" - fi - - name: Update package with new version id: bump run: | @@ -91,6 +62,12 @@ jobs: git add package-lock.json git commit -m "build: release ${{ steps.bump.outputs.version }} [skip ci]" git push origin "$BRANCH" + echo "$BRANCH" > releasebranch.txt + + - uses: actions/upload-artifact@v2 + with: + name: releasebranch + path: releasebranch.txt - name: Create GitHub release tag uses: softprops/action-gh-release@v1 @@ -111,14 +88,3 @@ jobs: --head "release/v${{ steps.bump.outputs.version }}" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - trigger-publish: - name: Trigger Publish pipeline - needs: create-release - permissions: - contents: write - id-token: write - uses: ./.github/workflows/publish.yml - with: - branch: "release/v${{ needs.create-release.outputs.version }}" - From f9568b7e9fb09fcc80c6d71f75d2a95d72808f01 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Wed, 10 Dec 2025 16:16:31 +0000 Subject: [PATCH 057/102] fix: use upload-artifact@v5 instead of v2 (#311) --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f52a7739..43e3ac7b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -64,7 +64,7 @@ jobs: git push origin "$BRANCH" echo "$BRANCH" > releasebranch.txt - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v5 with: name: releasebranch path: releasebranch.txt From 7d6480b81e3c8381acf3364e778c09d733e88e0d Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Wed, 10 Dec 2025 16:24:48 +0000 Subject: [PATCH 058/102] fix: match releasebranch artifact name with filename (#313) --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 43e3ac7b..92f59622 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -66,7 +66,7 @@ jobs: - uses: actions/upload-artifact@v5 with: - name: releasebranch + name: releasebranch.txt path: releasebranch.txt - name: Create GitHub release tag From 3f0724f924560360e38e17a7f8e4eea6f553c11e Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Thu, 11 Dec 2025 17:14:04 +0000 Subject: [PATCH 059/102] fix: add 'if' guard to prod publish pipeline and add 'skip ci' to release PR (#315) [skip ci] --- .github/workflows/publish.yml | 1 + .github/workflows/release.yml | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f60350f6..56d5fec8 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -83,6 +83,7 @@ jobs: github-token: ${{ secrets.GITHUB_TOKEN }} - name: Read releasebranch.txt + if: github.event_name == 'workflow_run' id: releasebranch run: | echo "branch=$(cat releasebranch.txt)" >> "$GITHUB_OUTPUT" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 92f59622..e64fa3e8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -82,8 +82,8 @@ jobs: - name: Create Pull Request for release + next version run: | gh pr create \ - --title "build: release ${{ steps.bump.outputs.version }}" \ - --body "build: release ${{ steps.bump.outputs.version }}" \ + --title "build: release ${{ steps.bump.outputs.version }} [skip ci]" \ + --body "build: release ${{ steps.bump.outputs.version }} [skip ci]" \ --base main \ --head "release/v${{ steps.bump.outputs.version }}" env: From b951581c8f1bf77721537ea135a546f39e1d7a59 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 16 Dec 2025 09:58:58 +0000 Subject: [PATCH 060/102] build: release 0.3.0 (#314) [skip ci] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1aa16607..d8f8ba82 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@trustify-da/trustify-da-javascript-client", - "version": "0.2.4", + "version": "0.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@trustify-da/trustify-da-javascript-client", - "version": "0.2.4", + "version": "0.3.0", "license": "Apache-2.0", "dependencies": { "@babel/core": "^7.23.2", diff --git a/package.json b/package.json index 44626fb2..e942f6c0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@trustify-da/trustify-da-javascript-client", - "version": "0.2.4", + "version": "0.3.0", "description": "Code-Ready Dependency Analytics JavaScript API.", "license": "Apache-2.0", "homepage": "https://github.com/guacsec/trustify-da-javascript-client#README.md", From c9a987782497f87000f763d6e4277b947eb5f36f Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Wed, 14 Jan 2026 18:13:38 +0100 Subject: [PATCH 061/102] fix: it using a wrong reference for PRs (#322) --- .github/workflows/integration.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 8f70d507..c610c5ae 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -22,5 +22,5 @@ jobs: uses: trustification/exhort-integration-tests/.github/workflows/integration.yml@main with: language: javascript - repo-url: ${{ github.repository }} - commit-sha: ${{ github.event_name == 'workflow_dispatch' && github.sha || github.event.workflow_run.head_sha && github.event.workflow_run.head_sha != github.event.workflow_run.base_sha && github.event.workflow_run.head_sha ||github.sha }} + repo-url: ${{ github.event_name == 'workflow_run' && github.event.workflow_run.head_repository.full_name || github.repository }} + commit-sha: ${{ github.event_name == 'workflow_dispatch' && github.sha || github.event.workflow_run.head_sha || github.sha }} From a3bd6e4ed51e9a7c91b77741cf07f5ea0b64eff1 Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Thu, 15 Jan 2026 09:56:05 +0100 Subject: [PATCH 062/102] fix: add missing binaries to container image (#321) Signed-off-by: Ruben Romero Montes --- docker-image/Dockerfiles/Dockerfile | 70 +++++++++++++++++++++-------- docker-image/README.md | 17 +++++-- 2 files changed, 65 insertions(+), 22 deletions(-) diff --git a/docker-image/Dockerfiles/Dockerfile b/docker-image/Dockerfiles/Dockerfile index 6e1432d2..bef9f5fe 100644 --- a/docker-image/Dockerfiles/Dockerfile +++ b/docker-image/Dockerfiles/Dockerfile @@ -1,21 +1,41 @@ # first stage -FROM registry.access.redhat.com/ubi9/nodejs-20 AS builder +FROM registry.access.redhat.com/ubi9/nodejs-24 AS builder -# use privilaged user +# use privileged user USER root -# install Java -RUN curl -kL https://download.oracle.com/java/21/archive/jdk-21.0.1_linux-x64_bin.tar.gz -o /tmp/java-package.tar.gz \ - && tar xvzf /tmp/java-package.tar.gz -C /usr/ +# install OpenJDK from Adoptium (Eclipse Temurin) - latest JDK 21 LTS +RUN curl -kL "https://api.adoptium.net/v3/binary/latest/21/ga/linux/x64/jdk/hotspot/normal/eclipse" -o /tmp/java-package.tar.gz \ + && tar xvzf /tmp/java-package.tar.gz -C /usr/ \ + && mv /usr/jdk-21* /usr/temurin-21 # install Maven package manager -RUN curl -kL https://archive.apache.org/dist/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz -o /tmp/maven-package.tar.gz \ +RUN curl -kL https://archive.apache.org/dist/maven/maven-3/3.9.12/binaries/apache-maven-3.9.12-bin.tar.gz -o /tmp/maven-package.tar.gz \ && tar xvzf /tmp/maven-package.tar.gz -C /usr/ +# install gradle package manager +RUN curl -kL https://services.gradle.org/distributions/gradle-9.2.1-bin.zip -o /tmp/gradle-package.zip \ + && unzip /tmp/gradle-package.zip -d /usr/ + # install golang package manager -RUN curl -kL https://go.dev/dl/go1.21.5.linux-amd64.tar.gz -o /tmp/golang-package.tar.gz \ +RUN curl -kL https://go.dev/dl/go1.25.5.linux-amd64.tar.gz -o /tmp/golang-package.tar.gz \ && tar xvzf /tmp/golang-package.tar.gz -C /usr/ +# install corepack and package managers (pnpm, yarn) - stage to /usr/local for easy copying +ENV COREPACK_HOME=/usr/local/corepack/cache +RUN npm install -g corepack@latest \ + && corepack enable \ + && corepack prepare pnpm@10.1.0 --activate \ + && corepack prepare yarn@4.9.1 --activate \ + && NPM_PREFIX=$(npm config get prefix) \ + && mkdir -p /usr/local/corepack/bin \ + && cp -rL $NPM_PREFIX/lib/node_modules/corepack/* /usr/local/corepack/ \ + && cp $NPM_PREFIX/bin/pnpm /usr/local/corepack/bin/ \ + && cp $NPM_PREFIX/bin/yarn /usr/local/corepack/bin/ \ + && cp $NPM_PREFIX/bin/yarnpkg /usr/local/corepack/bin/ \ + && cp $NPM_PREFIX/bin/corepack /usr/local/corepack/bin/ \ + && ln -s ../dist/lib /usr/local/corepack/bin/lib + # install jq JSON formating tool RUN curl -kL https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-linux64 -o /usr/bin/jq @@ -32,8 +52,9 @@ RUN npm install --production \ && ln -s /app/dist/src/cli.js /app/node_modules/.bin/trustify-da-javascript-client # assign executable permissions to all installed binaries -RUN chmod +x /usr/jdk-21.0.1/bin/java \ - && chmod +x /usr/apache-maven-3.9.6/bin/mvn \ +RUN chmod +x /usr/temurin-21/bin/java \ + && chmod +x /usr/apache-maven-3.9.12/bin/mvn \ + && chmod +x /usr/gradle-9.2.1/bin/gradle \ && chmod +x /usr/go/bin/go \ && chmod +x /usr/bin/jq \ && chmod +x /app/dist/src/cli.js \ @@ -44,7 +65,7 @@ RUN chmod +x /usr/jdk-21.0.1/bin/java \ USER default # second stage -FROM registry.access.redhat.com/ubi9/nodejs-20-minimal +FROM registry.access.redhat.com/ubi9/nodejs-24-minimal # Build arguments for metadata ARG IMAGE_VERSION @@ -53,7 +74,7 @@ ARG IMAGE_CREATED # Open Container Initiative (OCI) metadata labels LABEL org.opencontainers.image.source=https://github.com/guacsec/trustify-da-javascript-client -LABEL org.opencontainers.image.description="Trustify Dependency Analytics JavaScript Client - Container image for dependency analysis and vulnerability scanning supporting Maven, NPM, Golang, and Python ecosystems" +LABEL org.opencontainers.image.description="Trustify Dependency Analytics JavaScript Client - Container image for dependency analysis and vulnerability scanning supporting Maven, NPM, Golang, Gradle, Pnpm, Yarn, and Python ecosystems" LABEL org.opencontainers.image.licenses=Apache-2.0 LABEL org.opencontainers.image.title="Trustify Dependency Analytics JavaScript Client" LABEL org.opencontainers.image.vendor="guacsec" @@ -70,20 +91,33 @@ ENV TRUSTIFY_DA_PIP_SHOW='' # indicate whether to use the Minimal version selection (MVS) algorithm to select a set of module versions to use when building Go packages. ENV TRUSTIFY_DA_GO_MVS_LOGIC_ENABLED='true' -# Copy java executable from the builder stage -COPY --from=builder /usr/jdk-21.0.1/ /usr/jdk-21.0.1/ -ENV JAVA_HOME=/usr/jdk-21.0.1 +# Copy OpenJDK (Temurin) from the builder stage +COPY --from=builder /usr/temurin-21/ /usr/temurin-21/ +ENV JAVA_HOME=/usr/temurin-21 # Copy maven executable from the builder stage -COPY --from=builder /usr/apache-maven-3.9.6/ /usr/apache-maven-3.9.6/ -ENV MAVEN_HOME=/usr/apache-maven-3.9.6 +COPY --from=builder /usr/apache-maven-3.9.12/ /usr/apache-maven-3.9.12/ +ENV MAVEN_HOME=/usr/apache-maven-3.9.12 # Copy golang executable from the builder stage COPY --from=builder /usr/go/ /usr/go/ ENV GOLANG_HOME=/usr/go -# Update PATH -ENV PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$GOLANG_HOME/bin:/app/node_modules/.bin +# Copy gradle executable from the builder stage +COPY --from=builder /usr/gradle-9.2.1/ /usr/gradle-9.2.1/ +ENV GRADLE_HOME=/usr/gradle-9.2.1 + +# Copy corepack and package manager binaries from builder stage +COPY --from=builder /usr/local/corepack/ /usr/local/corepack/ +ENV COREPACK_HOME=/usr/local/corepack/cache + +# Install Python via microdnf (cleanest approach for minimal images) +USER root +RUN microdnf install -y python3 python3-pip && microdnf clean all +USER 1001 + +# Update PATH (includes corepack bin for pnpm/yarn) +ENV PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$GOLANG_HOME/bin:$GRADLE_HOME/bin:/usr/local/corepack/bin:/app/node_modules/.bin # Copy jq executable from the builder stage COPY --from=builder /usr/bin/jq /usr/bin/jq diff --git a/docker-image/README.md b/docker-image/README.md index 3fa44fc6..55baf0bd 100644 --- a/docker-image/README.md +++ b/docker-image/README.md @@ -11,12 +11,21 @@ Before getting started, ensure that you have one of the following prerequisites Both Docker and Podman are container runtimes that can be used to build and run the Trustify Dependency Analytics images. You can choose either Docker or Podman based on your preference and the compatibility with your operating system. -## Images generated for Trustify Dependency Analytics Javascript Client +## Image generated for Trustify Dependency Analytics Javascript Client -Ecosystem | Version | IMAGE | TAG | -------------------------------| ------------------------------------------------------------------ | ----------------------------------------------- |-------------------| -Maven, NPM, Golang | mvn 3.9.6,
npm 10.2.4,
go 1.21.5,
python \ | ghcr.io/guacsec/trustify-da-javascript-client | 0.2.4-ea.12 | +ghcr.io/guacsec/trustify-da-javascript-client +See the [GitHub Container Registry](https://github.com/guacsec/trustify-da-javascript-client/pkgs/container/trustify-da-javascript-client) + +Ecosystem | Version | +------------------------------| ------------------------------------------------------------------ | +Maven | 3.9.12 | +Gradle | 9.2.1 | +Go | 1.25.5 | +NPM | 10.8.2 | +PNPM | 10.1.0 | +Yarn | 4.9.1 | +Python | 3.9.25 | ## Usage Notes From fbdacbb3e591607a4cb1e5857c6d93df15b07695 Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Thu, 15 Jan 2026 11:31:15 +0100 Subject: [PATCH 063/102] fix: use venv in python (#326) Signed-off-by: Ruben Romero Montes --- docker-image/Dockerfiles/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-image/Dockerfiles/Dockerfile b/docker-image/Dockerfiles/Dockerfile index bef9f5fe..7dd46abc 100644 --- a/docker-image/Dockerfiles/Dockerfile +++ b/docker-image/Dockerfiles/Dockerfile @@ -88,8 +88,8 @@ LABEL org.opencontainers.image.created="${IMAGE_CREATED}" ENV TRUSTIFY_DA_PIP_FREEZE='' # contains pip show data for all packages, base64 encoded ENV TRUSTIFY_DA_PIP_SHOW='' -# indicate whether to use the Minimal version selection (MVS) algorithm to select a set of module versions to use when building Go packages. -ENV TRUSTIFY_DA_GO_MVS_LOGIC_ENABLED='true' +# indicate whether to use the virtual environment for python packages +ENV TRUSTIFY_DA_PYTHON_VIRTUAL_ENV='true' # Copy OpenJDK (Temurin) from the builder stage COPY --from=builder /usr/temurin-21/ /usr/temurin-21/ From b40d888f6f0cd0ad4f51f25787b1f5c54d0eb903 Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Thu, 15 Jan 2026 11:31:46 +0100 Subject: [PATCH 064/102] chore: enhance error prompt (#329) Assisted-by: Cursor Signed-off-by: Ruben Romero Montes --- docker-image/scripts/trustify-da.sh | 35 ++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/docker-image/scripts/trustify-da.sh b/docker-image/scripts/trustify-da.sh index 96d24c54..ae6eb580 100644 --- a/docker-image/scripts/trustify-da.sh +++ b/docker-image/scripts/trustify-da.sh @@ -12,14 +12,39 @@ exit_code=$? if [ $exit_code != 0 ] then - # In case of failure save only exit code into output file. + # Read the full error log + error_log=$(cat error.log 2>/dev/null || echo "") + + # Extract the main error message (first Error: line) + main_error=$(echo "$error_log" | grep -m1 "^Error:" || echo "Unknown error") + + # Extract cause chain (lines with "cause:" or indented error details) + cause_chain=$(echo "$error_log" | grep -E "(cause:|Caused by| at )" | head -20 || echo "") + + # In case of failure save error details into output file. jq -n {} | \ - jq --arg exit_code "$exit_code" '. + {exit_code: $exit_code}' > \ + jq --arg exit_code "$exit_code" \ + --arg error "$main_error" \ + --arg stderr "$error_log" \ + '. + {exit_code: $exit_code, error: $error, stderr: $stderr}' > \ $output_file_path - # Print stderr message to console - error_message=$(sed -n '/^Error:/p' error.log) - printf "\n[ERROR] Trustify Dependency Analytics failed with exit code $exit_code.\n$error_message" + # Print detailed error message to console + printf "\n[ERROR] Trustify Dependency Analytics failed with exit code $exit_code.\n" + printf "\n%s\n" "$main_error" + + if [ -n "$cause_chain" ]; then + printf "\nCause chain:\n%s\n" "$cause_chain" + fi + + # Show full stderr if it contains additional information + if [ -n "$error_log" ] && [ "$error_log" != "$main_error" ]; then + printf "\nFull error output:\n" + printf "=%.0s" {1..50} + printf "\n%s\n" "$error_log" + printf "=%.0s" {1..50} + fi + exit 1 else # In case of success print report summary into console From daa4d82dc1e297f932d46c17ac58d7b57f2b6fc0 Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Thu, 15 Jan 2026 11:48:19 +0100 Subject: [PATCH 065/102] chore(deps): exclude tst_manifests from dependabot scan (#332) Signed-off-by: Ruben Romero Montes --- .github/dependabot.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..55414d93 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,16 @@ +version: 2 +updates: + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "daily" + exclude-paths: + - "test/providers/tst_manifests/**" + - package-ecosystem: "docker" + directory: "/docker-image/Dockerfiles" + schedule: + interval: "daily" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" From 8178c047d3f96377f989f94796c57527afc02bcd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:55:22 +0100 Subject: [PATCH 066/102] build(deps): bump actions/checkout from 4 to 6 (#335) Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/pr-validation.yml | 2 +- .github/workflows/publish.yml | 4 ++-- .github/workflows/push-to-registry.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/pr-validation.yml b/.github/workflows/pr-validation.yml index 4060e355..279ebf41 100644 --- a/.github/workflows/pr-validation.yml +++ b/.github/workflows/pr-validation.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 56d5fec8..b3c68a65 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -24,7 +24,7 @@ jobs: name: Publish EA release to NPM steps: - name: Checkout sources - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: ${{ github.ref_name }} fetch-depth: 0 @@ -90,7 +90,7 @@ jobs: rm releasebranch.txt - name: Checkout sources - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: ${{ (github.event_name == 'workflow_run' && steps.releasebranch.outputs.branch) || github.ref }} fetch-depth: 0 diff --git a/.github/workflows/push-to-registry.yml b/.github/workflows/push-to-registry.yml index f72d467a..cc1ceed5 100644 --- a/.github/workflows/push-to-registry.yml +++ b/.github/workflows/push-to-registry.yml @@ -23,7 +23,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Install node 24 uses: actions/setup-node@v6 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e64fa3e8..6905885c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,7 +24,7 @@ jobs: pull-requests: write steps: - name: Checkout sources - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b8e9782d..3beb1784 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,7 +25,7 @@ jobs: MAIN_NODE_VER: '24' steps: - name: Checkout sources - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install node ${{ matrix.node }} uses: actions/setup-node@v5 From 3aa725a5b3f67d1dcdd386f42095aac275abeb9d Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Thu, 15 Jan 2026 11:55:46 +0100 Subject: [PATCH 067/102] fix: corepack permissions (#330) Signed-off-by: Ruben Romero Montes --- docker-image/Dockerfiles/Dockerfile | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/docker-image/Dockerfiles/Dockerfile b/docker-image/Dockerfiles/Dockerfile index 7dd46abc..2a1b2a2e 100644 --- a/docker-image/Dockerfiles/Dockerfile +++ b/docker-image/Dockerfiles/Dockerfile @@ -111,13 +111,20 @@ ENV GRADLE_HOME=/usr/gradle-9.2.1 COPY --from=builder /usr/local/corepack/ /usr/local/corepack/ ENV COREPACK_HOME=/usr/local/corepack/cache -# Install Python via microdnf (cleanest approach for minimal images) +# Install Python via microdnf and fix corepack cache permissions USER root -RUN microdnf install -y python3 python3-pip && microdnf clean all +RUN microdnf install -y python3 python3-pip \ + && microdnf clean all \ + && chown -R 1001:0 /usr/local/corepack/cache \ + && chmod -R g+rwX /usr/local/corepack/cache USER 1001 -# Update PATH (includes corepack bin for pnpm/yarn) -ENV PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$GOLANG_HOME/bin:$GRADLE_HOME/bin:/usr/local/corepack/bin:/app/node_modules/.bin +# Update PATH (corepack bin first for pnpm/yarn to be found reliably) +ENV PATH=/usr/local/corepack/bin:/app/node_modules/.bin:$JAVA_HOME/bin:$MAVEN_HOME/bin:$GOLANG_HOME/bin:$GRADLE_HOME/bin:$PATH + +# Set explicit paths for package managers (used by trustify-da-javascript-client) +ENV TRUSTIFY_DA_PNPM_PATH=/usr/local/corepack/bin/pnpm +ENV TRUSTIFY_DA_YARN_PATH=/usr/local/corepack/bin/yarn # Copy jq executable from the builder stage COPY --from=builder /usr/bin/jq /usr/bin/jq From 02983f296c37f46654d763b4e256ca0d25f49350 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 15 Jan 2026 12:00:37 +0100 Subject: [PATCH 068/102] build(deps): bump amannn/action-semantic-pull-request from 5 to 6 (#339) Bumps [amannn/action-semantic-pull-request](https://github.com/amannn/action-semantic-pull-request) from 5 to 6. - [Release notes](https://github.com/amannn/action-semantic-pull-request/releases) - [Changelog](https://github.com/amannn/action-semantic-pull-request/blob/main/CHANGELOG.md) - [Commits](https://github.com/amannn/action-semantic-pull-request/compare/v5...v6) --- updated-dependencies: - dependency-name: amannn/action-semantic-pull-request dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/pr-validation.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pr-validation.yml b/.github/workflows/pr-validation.yml index 279ebf41..13dba5f9 100644 --- a/.github/workflows/pr-validation.yml +++ b/.github/workflows/pr-validation.yml @@ -13,7 +13,7 @@ jobs: name: Validate PR title runs-on: ubuntu-latest steps: - - uses: amannn/action-semantic-pull-request@v5 + - uses: amannn/action-semantic-pull-request@v6 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 904e9f22ff6fa3985d5481ca092694a03892302e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 15 Jan 2026 12:01:23 +0100 Subject: [PATCH 069/102] build(deps): bump actions/setup-go from 5 to 6 (#333) Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5 to 6. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/setup-go dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3beb1784..d350c93d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -61,7 +61,7 @@ jobs: echo "python-bin-location=$(echo $pythonLocation)/bin" >> $GITHUB_OUTPUT - name: setup go - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version: '1.20.1' From 57f5d5e3c3f26a9a9c485545fc917413d46fa143 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 15 Jan 2026 12:01:29 +0100 Subject: [PATCH 070/102] build(deps): bump docker/build-push-action from 5 to 6 (#334) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5 to 6. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v5...v6) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/push-to-registry.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/push-to-registry.yml b/.github/workflows/push-to-registry.yml index cc1ceed5..c1b8a8bf 100644 --- a/.github/workflows/push-to-registry.yml +++ b/.github/workflows/push-to-registry.yml @@ -84,7 +84,7 @@ jobs: type=raw,value=${{ steps.version.outputs.version }} - name: Build and push Docker image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: . file: ./docker-image/Dockerfiles/Dockerfile From e12bc8223bf35b59ed8e45b89704e6a275d4b1f8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 15 Jan 2026 12:01:37 +0100 Subject: [PATCH 071/102] build(deps): bump actions/setup-python from 4 to 6 (#337) Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 6. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/v4...v6) --- updated-dependencies: - dependency-name: actions/setup-python dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d350c93d..c5e40618 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -50,7 +50,7 @@ jobs: cache: maven - name: setup Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v6 with: python-version: '3.9' cache: 'pip' From ce73b2fcdac75f04c8dfe6cbf8e954ff5d8ad87b Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Mon, 19 Jan 2026 13:10:43 +0100 Subject: [PATCH 072/102] fix: support yarn classic (#350) Signed-off-by: Ruben Romero Montes --- docker-image/Dockerfiles/Dockerfile | 10 +++++++--- docker-image/README.md | 5 +++-- docker-image/scripts/trustify-da.sh | 27 ++++++++++++++++++++++++++- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/docker-image/Dockerfiles/Dockerfile b/docker-image/Dockerfiles/Dockerfile index 2a1b2a2e..c6843174 100644 --- a/docker-image/Dockerfiles/Dockerfile +++ b/docker-image/Dockerfiles/Dockerfile @@ -21,11 +21,12 @@ RUN curl -kL https://services.gradle.org/distributions/gradle-9.2.1-bin.zip -o / RUN curl -kL https://go.dev/dl/go1.25.5.linux-amd64.tar.gz -o /tmp/golang-package.tar.gz \ && tar xvzf /tmp/golang-package.tar.gz -C /usr/ -# install corepack and package managers (pnpm, yarn) - stage to /usr/local for easy copying +# install corepack and package managers (pnpm, yarn classic + berry) - stage to /usr/local for easy copying ENV COREPACK_HOME=/usr/local/corepack/cache RUN npm install -g corepack@latest \ && corepack enable \ && corepack prepare pnpm@10.1.0 --activate \ + && corepack prepare yarn@1.22.22 \ && corepack prepare yarn@4.9.1 --activate \ && NPM_PREFIX=$(npm config get prefix) \ && mkdir -p /usr/local/corepack/bin \ @@ -111,12 +112,15 @@ ENV GRADLE_HOME=/usr/gradle-9.2.1 COPY --from=builder /usr/local/corepack/ /usr/local/corepack/ ENV COREPACK_HOME=/usr/local/corepack/cache -# Install Python via microdnf and fix corepack cache permissions +# Install Python via microdnf, create yarn wrapper scripts, and fix permissions USER root RUN microdnf install -y python3 python3-pip \ && microdnf clean all \ && chown -R 1001:0 /usr/local/corepack/cache \ - && chmod -R g+rwX /usr/local/corepack/cache + && chmod -R g+rwX /usr/local/corepack/cache \ + && printf '#!/bin/sh\nexec corepack yarn@1.22.22 "$@"\n' > /usr/local/bin/yarn-classic \ + && printf '#!/bin/sh\nexec corepack yarn@4.9.1 "$@"\n' > /usr/local/bin/yarn-berry \ + && chmod +x /usr/local/bin/yarn-classic /usr/local/bin/yarn-berry USER 1001 # Update PATH (corepack bin first for pnpm/yarn to be found reliably) diff --git a/docker-image/README.md b/docker-image/README.md index 55baf0bd..079f870c 100644 --- a/docker-image/README.md +++ b/docker-image/README.md @@ -22,9 +22,10 @@ Ecosystem | Version Maven | 3.9.12 | Gradle | 9.2.1 | Go | 1.25.5 | -NPM | 10.8.2 | +NPM | 11.6.2 | PNPM | 10.1.0 | -Yarn | 4.9.1 | +Yarn Classic | 4.9.1 | +Yarn Berry | 1.22.22 | Python | 3.9.25 | ## Usage Notes diff --git a/docker-image/scripts/trustify-da.sh b/docker-image/scripts/trustify-da.sh index ae6eb580..6792e84b 100644 --- a/docker-image/scripts/trustify-da.sh +++ b/docker-image/scripts/trustify-da.sh @@ -5,6 +5,31 @@ output_file_path="$2" printf "Analyzing the stack. Please wait..\n\n" +# Get the directory containing the manifest file +manifest_dir=$(dirname "$manifest_file_path") +manifest_name=$(basename "$manifest_file_path") + +# Detect and set the correct yarn version if this is a yarn project +if [ "$manifest_name" = "package.json" ] && [ -f "$manifest_dir/yarn.lock" ]; then + # Check if packageManager is already declared in package.json + package_manager=$(jq -r '.packageManager // empty' "$manifest_file_path" 2>/dev/null) + + if [ -z "$package_manager" ]; then + # No packageManager declared, detect based on project files + if [ -f "$manifest_dir/.yarnrc.yml" ]; then + # .yarnrc.yml exists = Yarn Berry + printf "Detected Yarn Berry project (found .yarnrc.yml), using yarn@4.9.1\n" + export TRUSTIFY_DA_YARN_PATH=/usr/local/bin/yarn-berry + else + # No .yarnrc.yml = Yarn Classic + printf "Detected Yarn Classic project, using yarn@1.22.22\n" + export TRUSTIFY_DA_YARN_PATH=/usr/local/bin/yarn-classic + fi + else + printf "Using declared packageManager: %s\n" "$package_manager" + fi +fi + # Getting RHDA stack analysis report using Exhort Javascript CLI. report=$(trustify-da-javascript-client stack $manifest_file_path 2>error.log) @@ -90,5 +115,5 @@ printf "=%.0s" {1..50} $output_file_path printf "\nFull report is saved into file: $output_file_path" - printf "\nTask is completed." + printf "\nTask is completed.\n" fi From 9b6856c823438dc8ee73dcfde7f7e2ef7f6d0804 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Jan 2026 16:39:09 +0100 Subject: [PATCH 073/102] build(deps): bump actions/setup-java from 4 to 5 (#347) Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4 to 5. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/setup-java dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c5e40618..0f6b77f0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -43,7 +43,7 @@ jobs: run: corepack prepare pnpm@latest --activate - name: Setup Java 17 - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: temurin java-version: 17 From 4580bb1ef03114bdfd7c4e55b64330d3ff6d2c7f Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Tue, 20 Jan 2026 17:22:59 +0100 Subject: [PATCH 074/102] fix: python install is not required as it is ran using a sidecar (#353) Signed-off-by: Ruben Romero Montes --- docker-image/Dockerfiles/Dockerfile | 10 +++------- docker-image/README.md | 11 ++++++++--- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/docker-image/Dockerfiles/Dockerfile b/docker-image/Dockerfiles/Dockerfile index c6843174..ec89061b 100644 --- a/docker-image/Dockerfiles/Dockerfile +++ b/docker-image/Dockerfiles/Dockerfile @@ -75,7 +75,7 @@ ARG IMAGE_CREATED # Open Container Initiative (OCI) metadata labels LABEL org.opencontainers.image.source=https://github.com/guacsec/trustify-da-javascript-client -LABEL org.opencontainers.image.description="Trustify Dependency Analytics JavaScript Client - Container image for dependency analysis and vulnerability scanning supporting Maven, NPM, Golang, Gradle, Pnpm, Yarn, and Python ecosystems" +LABEL org.opencontainers.image.description="Trustify Dependency Analytics JavaScript Client - Container image for dependency analysis and vulnerability scanning supporting Maven, NPM, Golang, Gradle, Pnpm and Yarn ecosystems" LABEL org.opencontainers.image.licenses=Apache-2.0 LABEL org.opencontainers.image.title="Trustify Dependency Analytics JavaScript Client" LABEL org.opencontainers.image.vendor="guacsec" @@ -89,8 +89,6 @@ LABEL org.opencontainers.image.created="${IMAGE_CREATED}" ENV TRUSTIFY_DA_PIP_FREEZE='' # contains pip show data for all packages, base64 encoded ENV TRUSTIFY_DA_PIP_SHOW='' -# indicate whether to use the virtual environment for python packages -ENV TRUSTIFY_DA_PYTHON_VIRTUAL_ENV='true' # Copy OpenJDK (Temurin) from the builder stage COPY --from=builder /usr/temurin-21/ /usr/temurin-21/ @@ -112,11 +110,9 @@ ENV GRADLE_HOME=/usr/gradle-9.2.1 COPY --from=builder /usr/local/corepack/ /usr/local/corepack/ ENV COREPACK_HOME=/usr/local/corepack/cache -# Install Python via microdnf, create yarn wrapper scripts, and fix permissions +# Create yarn wrapper scripts, and fix permissions USER root -RUN microdnf install -y python3 python3-pip \ - && microdnf clean all \ - && chown -R 1001:0 /usr/local/corepack/cache \ +RUN chown -R 1001:0 /usr/local/corepack/cache \ && chmod -R g+rwX /usr/local/corepack/cache \ && printf '#!/bin/sh\nexec corepack yarn@1.22.22 "$@"\n' > /usr/local/bin/yarn-classic \ && printf '#!/bin/sh\nexec corepack yarn@4.9.1 "$@"\n' > /usr/local/bin/yarn-berry \ diff --git a/docker-image/README.md b/docker-image/README.md index 079f870c..1a9be9b8 100644 --- a/docker-image/README.md +++ b/docker-image/README.md @@ -24,9 +24,14 @@ Gradle | 9.2.1 | Go | 1.25.5 | NPM | 11.6.2 | PNPM | 10.1.0 | -Yarn Classic | 4.9.1 | -Yarn Berry | 1.22.22 | -Python | 3.9.25 | +Yarn Classic | 1.22.22 | +Yarn Berry | 4.9.1 | +Python | n/a | + +### Note for Python users + +This container image doesn't come with Python or Pip installed. It is suggested that you run `pip install` and `pip freeze` in a previous step like a sidecar (see [Tekton sidecars](https://tekton.dev/docs/pipelines/tasks/#using-a-sidecar-in-a-task)) where you can specify exactly which Python version +your project requires and generate the required dependency data. ## Usage Notes From 892110fcab7ce5c50e1b04bdb7a42b93919d8d30 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Tue, 3 Feb 2026 12:08:29 +0000 Subject: [PATCH 075/102] chore: ignore test manifests with dependabot (#360) --- .github/dependabot.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 55414d93..85c967c2 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -14,3 +14,21 @@ updates: directory: "/" schedule: interval: "weekly" + - package-ecosystem: "pip" + directory: "/" + schedule: + interval: "weekly" + exclude-paths: + - "test/providers/tst_manifests/**" + - package-ecosystem: "maven" + directory: "/" + schedule: + interval: "weekly" + exclude-paths: + - "test/providers/tst_manifests/**" + - package-ecosystem: "gomod" + directory: "/" + schedule: + interval: "weekly" + exclude-paths: + - "test/providers/tst_manifests/**" From d349baa8e78ddc5ce08242205baa96c53ae388fa Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Tue, 3 Feb 2026 14:50:22 +0000 Subject: [PATCH 076/102] chore: bump dependency versions (#361) --- package-lock.json | 4053 +++++++++++++++++++++++++++++------------ package.json | 10 +- test/analysis.test.js | 74 +- 3 files changed, 2946 insertions(+), 1191 deletions(-) diff --git a/package-lock.json b/package-lock.json index d8f8ba82..5cb8ded2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,13 +10,13 @@ "license": "Apache-2.0", "dependencies": { "@babel/core": "^7.23.2", - "@cyclonedx/cyclonedx-library": "~1.13.3", + "@cyclonedx/cyclonedx-library": "^6.13.0", "fast-toml": "^0.5.4", - "fast-xml-parser": "^4.5.3", + "fast-xml-parser": "^5.3.4", "help": "^3.0.2", "https-proxy-agent": "^7.0.6", "node-fetch": "^2.7.0", - "packageurl-js": "^1.0.2", + "packageurl-js": "~1.0.2", "yargs": "^17.7.2" }, "bin": { @@ -28,14 +28,14 @@ "@types/node": "^20.17.30", "@types/which": "^3.0.4", "babel-plugin-rewire": "^1.2.0", - "c8": "^8.0.0", + "c8": "^10.1.3", "chai": "^4.3.7", "eslint": "^8.42.0", "eslint-plugin-editorconfig": "^4.0.3", "eslint-plugin-import": "^2.29.1", "esmock": "^2.6.2", "mocha": "^10.2.0", - "msw": "^1.3.2", + "msw": "^2.12.7", "sinon": "^15.1.2", "sinon-chai": "^3.7.0", "typescript": "^5.1.3", @@ -46,104 +46,25 @@ "npm": ">= 11.5.1" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@babel/code-frame": { - "version": "7.22.13", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/compat-data": { - "version": "7.23.2", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", "dev": true, "license": "MIT", "engines": { @@ -151,20 +72,22 @@ } }, "node_modules/@babel/core": { - "version": "7.23.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.0", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -179,63 +102,33 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/core/node_modules/json5": { - "version": "2.2.3", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { - "version": "7.23.0", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.0.tgz", + "integrity": "sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/jsesc": { - "version": "2.5.2", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -243,66 +136,40 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.0", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -311,30 +178,10 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, "license": "MIT", "engines": { @@ -342,7 +189,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", "engines": { @@ -350,7 +199,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, "license": "MIT", "engines": { @@ -358,104 +209,28 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.20", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/js-tokens": { - "version": "4.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", + "node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "@babel/types": "^7.29.0" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.0", - "dev": true, - "license": "MIT", "bin": { "parser": "bin/babel-parser.js" }, @@ -464,112 +239,112 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.2", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/types": { - "version": "7.23.0", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/types/node_modules/to-fast-properties": { - "version": "2.0.0", + "node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=18" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "dev": true, - "license": "MIT" - }, "node_modules/@cyclonedx/cyclonedx-library": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/@cyclonedx/cyclonedx-library/-/cyclonedx-library-1.13.3.tgz", - "integrity": "sha512-L3i4OWc5pUbmds7dy4jdrHmVQ2qwiqdNrh62g1OpDtBxOUMbMhlGtNTK8htJOvrAeyj7oBxghpOCjHgAMpdtYQ==", + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/@cyclonedx/cyclonedx-library/-/cyclonedx-library-6.13.1.tgz", + "integrity": "sha512-u7Q01G2PAci3Qh+cY/7ReA8g2qJLQOncLQdzzdvpII84h6UICqZZZ1N0y9PLTVhS2Ra4x3kl4xY5bnP+lmrw2Q==", "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jkowalleck" - }, { "type": "individual", "url": "https://owasp.org/donate/?reponame=www-project-cyclonedx&title=OWASP+CycloneDX" } ], + "license": "Apache-2.0", "dependencies": { - "packageurl-js": ">=0.0.6 <0.0.8 || ^1" + "packageurl-js": ">=0.0.6 <0.0.8 || ^1", + "spdx-expression-parse": "^3.0.1 || ^4" }, "engines": { "node": ">=14.0.0" }, "optionalDependencies": { + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "ajv-formats-draft2019": "^1.6.1", + "libxmljs2": "^0.31 || ^0.32 || ^0.33 || ^0.35", "xmlbuilder2": "^3.0.2" } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", "engines": { @@ -577,7 +352,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.2", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "license": "MIT", "dependencies": { @@ -598,8 +375,34 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, "node_modules/@eslint/js": { - "version": "8.52.0", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, "license": "MIT", "engines": { @@ -607,12 +410,15 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -621,6 +427,8 @@ }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -632,106 +440,286 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true, "license": "BSD-3-Clause" }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", + "node_modules/@inquirer/confirm": { + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": ">=6.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", + "node_modules/@inquirer/core": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", "dev": true, "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.3" + }, "engines": { - "node": ">=6.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", + "node_modules/@inquirer/figures": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", "dev": true, "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": ">=18" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", + "node_modules/@inquirer/type": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "devOptional": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "devOptional": true, "license": "MIT" }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "dev": true, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "devOptional": true, "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "dev": true, - "license": "MIT" + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } }, - "node_modules/@mswjs/cookies": { - "version": "0.2.2", - "dev": true, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "devOptional": true, "license": "MIT", "dependencies": { - "@types/set-cookie-parser": "^2.4.0", - "set-cookie-parser": "^2.4.6" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=14" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@mswjs/interceptors": { - "version": "0.17.10", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, "license": "MIT", "dependencies": { - "@open-draft/until": "^1.0.3", - "@types/debug": "^4.1.7", - "@xmldom/xmldom": "^0.8.3", - "debug": "^4.3.3", - "headers-polyfill": "3.2.5", - "outvariant": "^1.2.1", - "strict-event-emitter": "^0.2.4", - "web-encoding": "^1.1.5" - }, + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=14" + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@mswjs/interceptors/node_modules/strict-event-emitter": { - "version": "0.2.8", + "node_modules/@mswjs/interceptors": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.40.0.tgz", + "integrity": "sha512-EFd6cVbHsgLa6wa4RljGj6Wk75qoHxUSyc5asLyyPSyuhIcdS2Q3Phw6ImS1q+CkALthJRShiYfKANcQMuMqsQ==", "dev": true, "license": "MIT", "dependencies": { - "events": "^3.3.0" + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" + }, + "engines": { + "node": ">=18" } }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "license": "MIT", "dependencies": { @@ -744,6 +732,8 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "license": "MIT", "engines": { @@ -752,6 +742,8 @@ }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", "dependencies": { @@ -762,13 +754,67 @@ "node": ">= 8" } }, + "node_modules/@npmcli/agent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", + "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "license": "ISC", + "optional": true, + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC", + "optional": true + }, + "node_modules/@npmcli/fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "license": "ISC", + "optional": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@one-ini/wasm": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", + "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", "dev": true, "license": "MIT" }, "node_modules/@oozcitak/dom": { "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-1.15.10.tgz", + "integrity": "sha512-0JT29/LaxVgRcGKvHmSrUTEvZ8BXvZhGl2LASRUgHqDTC1M5g1pLmVv56IYNyt3bG2CUjDkc67wnyZC14pbQrQ==", "license": "MIT", "optional": true, "dependencies": { @@ -782,6 +828,8 @@ }, "node_modules/@oozcitak/infra": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@oozcitak/infra/-/infra-1.0.8.tgz", + "integrity": "sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg==", "license": "MIT", "optional": true, "dependencies": { @@ -793,6 +841,8 @@ }, "node_modules/@oozcitak/url": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@oozcitak/url/-/url-1.0.4.tgz", + "integrity": "sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw==", "license": "MIT", "optional": true, "dependencies": { @@ -805,17 +855,50 @@ }, "node_modules/@oozcitak/util": { "version": "8.3.8", + "resolved": "https://registry.npmjs.org/@oozcitak/util/-/util-8.3.8.tgz", + "integrity": "sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ==", "license": "MIT", "optional": true, "engines": { "node": ">=8.0" } }, + "node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, "node_modules/@open-draft/until": { - "version": "1.0.3", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", "dev": true, "license": "MIT" }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -824,71 +907,64 @@ "license": "MIT" }, "node_modules/@sinonjs/commons": { - "version": "3.0.0", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.1.0", + "node_modules/@sinonjs/commons/node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.0" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/@sinonjs/samsam": { - "version": "8.0.0", + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@sinonjs/commons": "^2.0.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { - "version": "2.0.0", + "node_modules/@sinonjs/samsam": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.3.tgz", + "integrity": "sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "type-detect": "4.0.8" + "@sinonjs/commons": "^3.0.1", + "type-detect": "^4.1.0" } }, "node_modules/@sinonjs/text-encoding": { - "version": "0.7.2", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz", + "integrity": "sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==", "dev": true, "license": "(Unlicense OR Apache-2.0)" }, "node_modules/@trustify-da/trustify-da-api-model": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@trustify-da/trustify-da-api-model/-/trustify-da-api-model-2.0.1.tgz", - "integrity": "sha512-lY383PH8JvcIBmkRVXvsyVu9hWiQy7AtknnM5LhG/ymLZtKPy2+pztTunLdF66w3hL+cPryidzls2O8ADBoBcA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@trustify-da/trustify-da-api-model/-/trustify-da-api-model-2.0.3.tgz", + "integrity": "sha512-nnw4nTIHCXNmkUKS4btl9JZJKPtyE+w33E2pjAbUTL6wpeLfmonrLs4Oqj3C/8FVZjGuizXi7ghVEztmQIi4IA==", "dev": true, "license": "Apache-2.0" }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/debug": { - "version": "4.1.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/ms": "*" - } - }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/js-levenshtein": { - "version": "1.1.1", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true, "license": "MIT" }, @@ -899,28 +975,22 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/ms": { - "version": "0.7.32", - "dev": true, - "license": "MIT" - }, "node_modules/@types/node": { - "version": "20.17.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.30.tgz", - "integrity": "sha512-7zf4YyHA+jvBNfVrk2Gtvs6x7E8V+YDW05bNfG2XkWDJfYRXrTiP/DsB2zSYTaHX0bGIujTBQdMVAhb+j7mwpg==", + "version": "20.19.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.31.tgz", + "integrity": "sha512-5jsi0wpncvTD33Sh1UCgacK37FFwDn+EG7wCmEvs62fCvBL+n8/76cAYDok21NF6+jaVWIqKwCZyX7Vbu8eB3A==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.19.2" + "undici-types": "~6.21.0" } }, - "node_modules/@types/set-cookie-parser": { - "version": "2.4.2", + "node_modules/@types/statuses": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.6.tgz", + "integrity": "sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } + "license": "MIT" }, "node_modules/@types/which": { "version": "3.0.4", @@ -930,26 +1000,26 @@ "license": "MIT" }, "node_modules/@ungap/structured-clone": { - "version": "1.2.0", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "dev": true, "license": "ISC" }, - "node_modules/@xmldom/xmldom": { - "version": "0.8.10", - "dev": true, - "license": "MIT", + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "license": "ISC", + "optional": true, "engines": { - "node": ">=10.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@zxing/text-encoding": { - "version": "0.9.0", - "dev": true, - "license": "(Unlicense OR Apache-2.0)", - "optional": true - }, "node_modules/acorn": { - "version": "8.11.2", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", "bin": { @@ -961,6 +1031,8 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -968,66 +1040,93 @@ } }, "node_modules/agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "license": "MIT", "engines": { "node": ">= 14" } }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "license": "MIT", + "optional": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ajv": { - "version": "6.12.6", - "dev": true, + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", + "optional": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, "funding": { "type": "github", "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "license": "MIT", - "engines": { - "node": ">=6" + "optional": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "dev": true, + "node_modules/ajv-formats-draft2019": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/ajv-formats-draft2019/-/ajv-formats-draft2019-1.6.1.tgz", + "integrity": "sha512-JQPvavpkWDvIsBp2Z33UkYCtXCSpW4HD3tAZ+oL4iEFOk9obQZffx0yANwECt6vzr6ET+7HN5czRyqXbnq/u0Q==", "license": "MIT", + "optional": true, "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" + "punycode": "^2.1.1", + "schemes": "^1.4.0", + "smtp-address-parser": "^1.0.3", + "uri-js": "^4.4.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "ajv": "*" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/ansi-regex": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", "engines": { "node": ">=8" @@ -1035,6 +1134,8 @@ }, "node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -1048,6 +1149,8 @@ }, "node_modules/anymatch": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "license": "ISC", "dependencies": { @@ -1060,6 +1163,8 @@ }, "node_modules/argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, "license": "Python-2.0" }, @@ -1081,18 +1186,20 @@ } }, "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -1185,6 +1292,8 @@ }, "node_modules/assertion-error": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true, "license": "MIT", "engines": { @@ -1219,17 +1328,22 @@ }, "node_modules/babel-plugin-rewire": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-rewire/-/babel-plugin-rewire-1.2.0.tgz", + "integrity": "sha512-JBZxczHw3tScS+djy6JPLMjblchGhLI89ep15H3SyjujIzlxo5nr6Yjo7AXotdeVczeBmWs0tF8PgJWDdgzAkQ==", "dev": true, "license": "ISC" }, "node_modules/balanced-match": { "version": "1.0.2", - "dev": true, + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "devOptional": true, "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", - "dev": true, + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "funding": [ { "type": "github", @@ -1244,20 +1358,48 @@ "url": "https://feross.org/support" } ], - "license": "MIT" + "license": "MIT", + "optional": true + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } }, "node_modules/binary-extensions": { - "version": "2.2.0", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" } }, "node_modules/bl": { "version": "4.1.0", - "dev": true, + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "license": "MIT", + "optional": true, "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -1265,7 +1407,9 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.11", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -1288,11 +1432,15 @@ }, "node_modules/browser-stdout": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true, "license": "ISC" }, "node_modules/browserslist": { - "version": "4.22.1", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "dev": true, "funding": [ { @@ -1310,10 +1458,11 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" @@ -1324,7 +1473,8 @@ }, "node_modules/buffer": { "version": "5.7.1", - "dev": true, + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "funding": [ { "type": "github", @@ -1340,69 +1490,122 @@ } ], "license": "MIT", + "optional": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "node_modules/c8": { - "version": "8.0.0", + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/c8/-/c8-10.1.3.tgz", + "integrity": "sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==", "dev": true, "license": "ISC", "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", + "@bcoe/v8-coverage": "^1.0.1", "@istanbuljs/schema": "^0.1.3", "find-up": "^5.0.0", - "foreground-child": "^2.0.0", + "foreground-child": "^3.1.1", "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-reports": "^3.1.4", - "rimraf": "^3.0.2", - "test-exclude": "^6.0.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.1.6", + "test-exclude": "^7.0.1", "v8-to-istanbul": "^9.0.0", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9" + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1" }, "bin": { "c8": "bin/c8.js" }, "engines": { - "node": ">=12" + "node": ">=18" + }, + "peerDependencies": { + "monocart-coverage-reports": "^2" + }, + "peerDependenciesMeta": { + "monocart-coverage-reports": { + "optional": true + } } }, - "node_modules/c8/node_modules/cliui": { - "version": "7.0.4", - "dev": true, + "node_modules/cacache": { + "version": "18.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", + "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", "license": "ISC", + "optional": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/c8/node_modules/yargs": { - "version": "16.2.0", - "dev": true, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", + "optional": true, "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "license": "ISC", + "optional": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">=10" + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/c8/node_modules/yargs-parser": { - "version": "20.2.9", - "dev": true, + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC", + "optional": true + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "license": "ISC", + "optional": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/call-bind": { @@ -1457,14 +1660,31 @@ }, "node_modules/callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/caniuse-lite": { - "version": "1.0.30001557", + "version": "1.0.30001767", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001767.tgz", + "integrity": "sha512-34+zUAMhSH+r+9eKmYG+k2Rpt8XttfE4yXAjoZvkAPs15xcYQhyBYdalJ65BzivAvGRMViEjy6oKr/S91loekQ==", "dev": true, "funding": [ { @@ -1483,17 +1703,19 @@ "license": "CC-BY-4.0" }, "node_modules/chai": { - "version": "4.3.7", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", "dev": true, "license": "MIT", "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.1.0" }, "engines": { "node": ">=4" @@ -1501,6 +1723,8 @@ }, "node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { @@ -1514,28 +1738,24 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/chardet": { - "version": "0.7.0", - "dev": true, - "license": "MIT" - }, "node_modules/check-error": { - "version": "1.0.2", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } }, "node_modules/chokidar": { - "version": "3.5.3", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "license": "MIT", "dependencies": { "anymatch": "~3.1.2", @@ -1549,12 +1769,17 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "node_modules/chokidar/node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "license": "ISC", "dependencies": { @@ -1564,38 +1789,40 @@ "node": ">= 6" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", + "optional": true, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/cli-spinners": { - "version": "2.9.0", - "dev": true, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "license": "MIT", + "optional": true, "engines": { "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cli-width": { - "version": "3.0.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "dev": true, "license": "ISC", "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/cliui": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -1606,16 +1833,27 @@ "node": ">=12" } }, - "node_modules/clone": { - "version": "1.0.4", - "dev": true, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">=0.8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -1626,10 +1864,14 @@ }, "node_modules/color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, "node_modules/commander": { "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, "license": "MIT", "engines": { @@ -1638,27 +1880,37 @@ }, "node_modules/concat-map": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true, "license": "MIT" }, "node_modules/convert-source-map": { - "version": "1.9.0", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, "license": "MIT" }, "node_modules/cookie": { - "version": "0.4.2", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -1673,14 +1925,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/cross-spawn/node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -1747,9 +1999,9 @@ } }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -1763,33 +2015,65 @@ } } }, - "node_modules/deep-eql": { - "version": "4.1.3", + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "optional": true, "dependencies": { - "type-detect": "^4.0.0" + "mimic-response": "^3.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/defaults": { - "version": "1.0.4", + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dev": true, "license": "MIT", "dependencies": { - "clone": "^1.0.2" + "type-detect": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6" } }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -1826,18 +2110,37 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, "node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.2.tgz", + "integrity": "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==", "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, + "node_modules/discontinuous-range": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", + "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==", + "license": "MIT", + "optional": true + }, "node_modules/doctrine": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1862,15 +2165,24 @@ "node": ">= 0.4" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "devOptional": true, + "license": "MIT" + }, "node_modules/editorconfig": { - "version": "1.0.2", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", + "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", "dev": true, "license": "MIT", "dependencies": { "@one-ini/wasm": "0.1.1", "commander": "^10.0.0", - "minimatch": "6.1.6", - "semver": "^7.3.8" + "minimatch": "9.0.1", + "semver": "^7.5.3" }, "bin": { "editorconfig": "bin/editorconfig" @@ -1880,7 +2192,9 @@ } }, "node_modules/editorconfig/node_modules/brace-expansion": { - "version": "2.0.1", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1888,32 +2202,88 @@ } }, "node_modules/editorconfig/node_modules/minimatch": { - "version": "6.1.6", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/editorconfig/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/electron-to-chromium": { - "version": "1.4.569", + "version": "1.5.286", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", + "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", "dev": true, "license": "ISC" }, "node_modules/emoji-regex": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "optional": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "license": "MIT", + "optional": true + }, "node_modules/es-abstract": { - "version": "1.23.10", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.10.tgz", - "integrity": "sha512-MtUbM072wlJNyeYAe0mhzrD+M6DIJa96CZAOBBrhDbgKnB4MApIKefcyAB1eOdYn8cUNZgvwBvEzdoAYsxgEIw==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", + "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", "dev": true, "license": "MIT", "dependencies": { @@ -1944,7 +2314,9 @@ "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", + "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", @@ -1959,6 +2331,7 @@ "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", @@ -2057,7 +2430,9 @@ } }, "node_modules/escalade": { - "version": "3.1.1", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "license": "MIT", "engines": { "node": ">=6" @@ -2065,6 +2440,8 @@ }, "node_modules/escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "license": "MIT", "engines": { @@ -2075,15 +2452,18 @@ } }, "node_modules/eslint": { - "version": "8.52.0", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.52.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -2151,9 +2531,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", - "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", "dev": true, "license": "MIT", "dependencies": { @@ -2180,6 +2560,8 @@ }, "node_modules/eslint-plugin-editorconfig": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-editorconfig/-/eslint-plugin-editorconfig-4.0.3.tgz", + "integrity": "sha512-5YeDxm6mlv75DrTbRBK9Jw2ogqhjiz8ZCvv9bkuz/MXq0603q9FpQvQlamtas4bX1Gji4YcksY7dq7stPeGaLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2193,30 +2575,30 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", "dependencies": { "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", + "eslint-module-utils": "^2.12.1", "hasown": "^2.0.2", - "is-core-module": "^2.15.1", + "is-core-module": "^2.16.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "object.groupby": "^1.0.3", - "object.values": "^1.2.0", + "object.values": "^1.2.1", "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", + "string.prototype.trimend": "^1.0.9", "tsconfig-paths": "^3.15.0" }, "engines": { @@ -2249,18 +2631,10 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/eslint-scope": { "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -2276,6 +2650,8 @@ }, "node_modules/eslint-visitor-keys": { "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2285,17 +2661,44 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, "node_modules/esmock": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/esmock/-/esmock-2.6.2.tgz", - "integrity": "sha512-tcxyxE6l0TmyEwkybbVKqFwUpsWBrjVWXYiVc8PPnKC7q9RRYyRtK03z7MXaZimRAsLkEp7SQeHCQEnrD6z4Ww==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esmock/-/esmock-2.7.3.tgz", + "integrity": "sha512-/M/YZOjgyLaVoY6K83pwCsGE1AJQnj4S4GyXLYgi/Y79KL8EeW6WU7Rmjc89UO7jv6ec8+j34rKeWOfiLeEu0A==", "dev": true, + "license": "ISC", "engines": { "node": ">=14.16.0" } }, "node_modules/espree": { "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -2312,6 +2715,8 @@ }, "node_modules/esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "license": "BSD-2-Clause", "optional": true, "bin": { @@ -2323,7 +2728,9 @@ } }, "node_modules/esquery": { - "version": "1.5.0", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -2335,6 +2742,8 @@ }, "node_modules/esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -2346,6 +2755,8 @@ }, "node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -2354,57 +2765,86 @@ }, "node_modules/esutils": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/events": { - "version": "3.3.0", - "dev": true, - "license": "MIT", + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", + "optional": true, "engines": { - "node": ">=0.8.x" + "node": ">=6" } }, - "node_modules/external-editor": { - "version": "3.1.0", - "dev": true, + "node_modules/exponential-backoff": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", + "license": "Apache-2.0", + "optional": true + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "license": "MIT", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } + "optional": true }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "dev": true, + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "devOptional": true, "license": "MIT" }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, "license": "MIT" }, "node_modules/fast-toml": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/fast-toml/-/fast-toml-0.5.4.tgz", - "integrity": "sha512-nUX94P84wE3gcem12g4FAH3xV7BmcCoV8FXcFVV+NIQAOwRJnyqVKhdGd9DqI4CunW+wOZhVBGKI6Jut/OlLTw==" + "integrity": "sha512-nUX94P84wE3gcem12g4FAH3xV7BmcCoV8FXcFVV+NIQAOwRJnyqVKhdGd9DqI4CunW+wOZhVBGKI6Jut/OlLTw==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause", + "optional": true }, "node_modules/fast-xml-parser": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", - "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.4.tgz", + "integrity": "sha512-EFd6afGmXlCx8H8WTZHhAoDaWaGyuIBoZJ2mknrNxug+aZKjkp0a0dlars9Izl+jF+7Gu1/5f/2h68cQpe0IiA==", "funding": [ { "type": "github", @@ -2413,44 +2853,26 @@ ], "license": "MIT", "dependencies": { - "strnum": "^1.1.1" + "strnum": "^2.1.0" }, "bin": { "fxparser": "src/cli/cli.js" } }, "node_modules/fastq": { - "version": "1.15.0", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, - "node_modules/figures": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/file-entry-cache": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "license": "MIT", "dependencies": { @@ -2460,6 +2882,13 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT", + "optional": true + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -2475,6 +2904,8 @@ }, "node_modules/find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", "dependencies": { @@ -2490,6 +2921,8 @@ }, "node_modules/flat": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, "license": "BSD-3-Clause", "bin": { @@ -2497,11 +2930,14 @@ } }, "node_modules/flat-cache": { - "version": "3.0.4", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "license": "MIT", "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { @@ -2509,7 +2945,9 @@ } }, "node_modules/flatted": { - "version": "3.2.7", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, "license": "ISC" }, @@ -2530,19 +2968,46 @@ } }, "node_modules/foreground-child": { - "version": "2.0.0", - "dev": true, + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "devOptional": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT", + "optional": true + }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "license": "ISC", + "optional": true, "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" + "minipass": "^7.0.3" }, "engines": { - "node": ">=8.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, "license": "ISC" }, @@ -2563,6 +3028,8 @@ }, "node_modules/function-bind": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, "license": "MIT", "funding": { @@ -2600,8 +3067,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "license": "MIT", "engines": { @@ -2610,6 +3089,8 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" @@ -2617,6 +3098,8 @@ }, "node_modules/get-func-name": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "license": "MIT", "engines": { @@ -2680,20 +3163,29 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT", + "optional": true + }, "node_modules/glob": { - "version": "7.2.0", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -2701,6 +3193,8 @@ }, "node_modules/glob-parent": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "license": "ISC", "dependencies": { @@ -2710,8 +3204,33 @@ "node": ">=10.13.0" } }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/globals": { - "version": "13.23.0", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2754,13 +3273,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC", + "optional": true + }, "node_modules/graphemer": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true, "license": "MIT" }, "node_modules/graphql": { - "version": "16.8.1", + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.12.0.tgz", + "integrity": "sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==", "dev": true, "license": "MIT", "engines": { @@ -2782,6 +3312,8 @@ }, "node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { @@ -2861,6 +3393,8 @@ }, "node_modules/he": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, "license": "MIT", "bin": { @@ -2868,19 +3402,46 @@ } }, "node_modules/headers-polyfill": { - "version": "3.2.5", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.3.tgz", + "integrity": "sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==", "dev": true, "license": "MIT" }, "node_modules/help": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/help/-/help-3.0.2.tgz", + "integrity": "sha512-jDd0MU+9xzvOQRC6CIzdjvb+agCvpzQY/Fp11quDnugDO4QQzh134EsLkRQMvFIJBleFkvnXagHFm4MTefkkpA==", "license": "MIT" }, "node_modules/html-escaper": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, "license": "MIT" }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause", + "optional": true + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", + "optional": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", @@ -2895,11 +3456,13 @@ } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "dev": true, + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "license": "MIT", + "optional": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" @@ -2907,7 +3470,8 @@ }, "node_modules/ieee754": { "version": "1.2.1", - "dev": true, + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { "type": "github", @@ -2922,10 +3486,13 @@ "url": "https://feross.org/support" } ], - "license": "BSD-3-Clause" + "license": "BSD-3-Clause", + "optional": true }, "node_modules/ignore": { - "version": "5.2.4", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "engines": { @@ -2933,7 +3500,9 @@ } }, "node_modules/import-fresh": { - "version": "3.3.0", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2949,14 +3518,29 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", - "dev": true, + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.8.19" } }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, "node_modules/inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "license": "ISC", "dependencies": { @@ -2966,48 +3550,17 @@ }, "node_modules/inherits": { "version": "2.0.4", - "dev": true, + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "devOptional": true, "license": "ISC" }, - "node_modules/inquirer": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", - "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^6.0.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/inquirer/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC", + "optional": true }, "node_modules/internal-slot": { "version": "1.1.0", @@ -3024,19 +3577,14 @@ "node": ">= 0.4" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "license": "MIT", + "optional": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 12" } }, "node_modules/is-array-buffer": { @@ -3095,6 +3643,8 @@ }, "node_modules/is-binary-path": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "license": "MIT", "dependencies": { @@ -3123,6 +3673,8 @@ }, "node_modules/is-callable": { "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "license": "MIT", "engines": { @@ -3185,6 +3737,8 @@ }, "node_modules/is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "license": "MIT", "engines": { @@ -3209,17 +3763,25 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-generator-function": { - "version": "1.0.10", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -3230,6 +3792,8 @@ }, "node_modules/is-glob": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "license": "MIT", "dependencies": { @@ -3239,13 +3803,12 @@ "node": ">=0.10.0" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "dev": true, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "license": "MIT", - "engines": { - "node": ">=8" - } + "optional": true }, "node_modules/is-map": { "version": "2.0.3", @@ -3260,8 +3823,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-node-process": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", "dev": true, "license": "MIT" }, @@ -3294,6 +3872,8 @@ }, "node_modules/is-path-inside": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, "license": "MIT", "engines": { @@ -3302,6 +3882,8 @@ }, "node_modules/is-plain-obj": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, "license": "MIT", "engines": { @@ -3409,6 +3991,8 @@ }, "node_modules/is-unicode-supported": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, "license": "MIT", "engines": { @@ -3465,7 +4049,9 @@ } }, "node_modules/isarray": { - "version": "0.0.1", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true, "license": "MIT" }, @@ -3473,14 +4059,16 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dev": true, + "devOptional": true, "license": "ISC", "engines": { "node": ">=16" } }, "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -3488,20 +4076,24 @@ } }, "node_modules/istanbul-lib-report": { - "version": "3.0.0", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/istanbul-reports": { - "version": "3.1.5", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -3512,16 +4104,33 @@ "node": ">=8" } }, - "node_modules/js-levenshtein": { - "version": "1.1.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "devOptional": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, "node_modules/js-yaml": { - "version": "4.1.0", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -3531,36 +4140,74 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, "license": "MIT" }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT", + "optional": true + }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true, "license": "MIT" }, "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, "bin": { "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, "node_modules/just-extend": { - "version": "4.2.1", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", "dev": true, "license": "MIT" }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/klona": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "dev": true, "license": "MIT", "engines": { @@ -3569,6 +4216,8 @@ }, "node_modules/levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3579,8 +4228,27 @@ "node": ">= 0.8.0" } }, + "node_modules/libxmljs2": { + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/libxmljs2/-/libxmljs2-0.35.0.tgz", + "integrity": "sha512-SpVopqn4YNydnLjkGfL6yQwzjlipmEnCCsVrD/0hQmdgsQWb5rVmSJxxjQltHIUTto29vgX+PhLjXoc+gMeABQ==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bindings": "~1.5.0", + "nan": "~2.20.0", + "node-gyp": "^10.2.0", + "prebuild-install": "^7.1.2" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", "dependencies": { @@ -3593,23 +4261,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.21", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.merge": { "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true, "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "license": "MIT", "dependencies": { @@ -3624,46 +4286,76 @@ } }, "node_modules/loupe": { - "version": "2.3.6", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "license": "MIT", "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "node_modules/lru-cache": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "license": "ISC", "dependencies": { "yallist": "^3.0.2" } }, - "node_modules/lru-cache/node_modules/yallist": { - "version": "3.1.1", - "dev": true, - "license": "ISC" - }, "node_modules/make-dir": { - "version": "3.1.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "license": "MIT", "dependencies": { - "semver": "^6.0.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", + "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", + "license": "ISC", + "optional": true, + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/math-intrinsics": { @@ -3676,34 +4368,235 @@ "node": ">= 0.4" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "devOptional": true, "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "devOptional": true, + "license": "ISC", "engines": { - "node": ">=6" + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "license": "MIT", + "optional": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC", + "optional": true + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC", + "optional": true + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC", + "optional": true + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", + "optional": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "dev": true, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" + "optional": true + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "optional": true, + "bin": { + "mkdirp": "bin/cmd.js" }, "engines": { - "node": "*" + "node": ">=10" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "optional": true }, "node_modules/mocha": { "version": "10.8.2", @@ -3742,9 +4635,9 @@ } }, "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3753,6 +4646,8 @@ }, "node_modules/mocha/node_modules/cliui": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "license": "ISC", "dependencies": { @@ -3761,27 +4656,6 @@ "wrap-ansi": "^7.0.0" } }, - "node_modules/mocha/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/mocha/node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", @@ -3797,6 +4671,8 @@ }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3809,8 +4685,28 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/mocha/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/mocha/node_modules/yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "license": "MIT", "dependencies": { @@ -3836,6 +4732,13 @@ "node": ">=10" } }, + "node_modules/moo": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", + "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==", + "license": "BSD-3-Clause", + "optional": true + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -3843,45 +4746,43 @@ "license": "MIT" }, "node_modules/msw": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/msw/-/msw-1.3.5.tgz", - "integrity": "sha512-nG3fpmBXxFbKSIdk6miPuL3KjU6WMxgoW4tG1YgnP1M+TRG3Qn7b7R0euKAHq4vpwARHb18ZyfZljSxsTnMX2w==", + "version": "2.12.7", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.12.7.tgz", + "integrity": "sha512-retd5i3xCZDVWMYjHEVuKTmhqY8lSsxujjVrZiGbbdoxxIBg5S7rCuYy/YQpfrTYIxpd/o0Kyb/3H+1udBMoYg==", "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { - "@mswjs/cookies": "^0.2.2", - "@mswjs/interceptors": "^0.17.10", - "@open-draft/until": "^1.0.3", - "@types/cookie": "^0.4.1", - "@types/js-levenshtein": "^1.1.1", - "chalk": "^4.1.1", - "chokidar": "^3.4.2", - "cookie": "^0.4.2", - "graphql": "^16.8.1", - "headers-polyfill": "3.2.5", - "inquirer": "^8.2.0", + "@inquirer/confirm": "^5.0.0", + "@mswjs/interceptors": "^0.40.0", + "@open-draft/deferred-promise": "^2.2.0", + "@types/statuses": "^2.0.6", + "cookie": "^1.0.2", + "graphql": "^16.12.0", + "headers-polyfill": "^4.0.2", "is-node-process": "^1.2.0", - "js-levenshtein": "^1.1.6", - "node-fetch": "^2.6.7", - "outvariant": "^1.4.0", + "outvariant": "^1.4.3", "path-to-regexp": "^6.3.0", - "strict-event-emitter": "^0.4.3", - "type-fest": "^2.19.0", - "yargs": "^17.3.1" + "picocolors": "^1.1.1", + "rettime": "^0.7.0", + "statuses": "^2.0.2", + "strict-event-emitter": "^0.5.1", + "tough-cookie": "^6.0.0", + "type-fest": "^5.2.0", + "until-async": "^3.0.2", + "yargs": "^17.7.2" }, "bin": { "msw": "cli/index.js" }, "engines": { - "node": ">=14" + "node": ">=18" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mswjs" + "url": "https://github.com/sponsors/mswjs" }, "peerDependencies": { - "typescript": ">= 4.4.x" + "typescript": ">= 4.8.x" }, "peerDependenciesMeta": { "typescript": { @@ -3889,62 +4790,141 @@ } } }, - "node_modules/msw/node_modules/path-to-regexp": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", - "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", - "dev": true, - "license": "MIT" - }, "node_modules/msw/node_modules/type-fest": { - "version": "2.19.0", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.4.3.tgz", + "integrity": "sha512-AXSAQJu79WGc79/3e9/CR77I/KQgeY1AhNvcShIH4PTcGYyC4xv6H4R4AUOwkPS5799KlVDAu8zExeCrkGquiA==", "dev": true, "license": "(MIT OR CC0-1.0)", + "dependencies": { + "tagged-tag": "^1.0.0" + }, "engines": { - "node": ">=12.20" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/mute-stream": { - "version": "0.0.8", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", "dev": true, - "license": "ISC" + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/nan": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", + "license": "MIT", + "optional": true + }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "license": "MIT", + "optional": true }, "node_modules/natural-compare": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, "license": "MIT" }, + "node_modules/nearley": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", + "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "commander": "^2.19.0", + "moo": "^0.5.0", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6" + }, + "bin": { + "nearley-railroad": "bin/nearley-railroad.js", + "nearley-test": "bin/nearley-test.js", + "nearley-unparse": "bin/nearley-unparse.js", + "nearleyc": "bin/nearleyc.js" + }, + "funding": { + "type": "individual", + "url": "https://nearley.js.org/#give-to-nearley" + } + }, + "node_modules/nearley/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT", + "optional": true + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/nise": { - "version": "5.1.4", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", + "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@sinonjs/commons": "^2.0.0", - "@sinonjs/fake-timers": "^10.0.2", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" } }, - "node_modules/nise/node_modules/@sinonjs/commons": { - "version": "2.0.0", + "node_modules/nise/node_modules/@sinonjs/fake-timers": { + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.3.1.tgz", + "integrity": "sha512-EVJO7nW5M/F5Tur0Rf2z/QoMo+1Ia963RiMtapiQrEWvY0iBUvADo8Beegwjpnle5BHkyHuoxSTW3jF43H1XRA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "type-detect": "4.0.8" + "@sinonjs/commons": "^3.0.1" } }, - "node_modules/nise/node_modules/path-to-regexp": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", - "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", - "dev": true, + "node_modules/node-abi": { + "version": "3.87.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.87.0.tgz", + "integrity": "sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==", "license": "MIT", + "optional": true, "dependencies": { - "isarray": "0.0.1" + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-abi/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/node-fetch": { @@ -3967,13 +4947,134 @@ } } }, + "node_modules/node-gyp": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz", + "integrity": "sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^4.1.0", + "semver": "^7.3.5", + "tar": "^6.2.1", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "license": "ISC", + "optional": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "optional": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "license": "ISC", + "optional": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, "node_modules/node-releases": { - "version": "2.0.13", + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", "dev": true, "license": "MIT" }, + "node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "license": "ISC", + "optional": true, + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/normalize-path": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, "license": "MIT", "engines": { @@ -4079,74 +5180,36 @@ }, "node_modules/once": { "version": "1.4.0", - "dev": true, + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "devOptional": true, "license": "ISC", "dependencies": { "wrappy": "1" } }, - "node_modules/onetime": { - "version": "5.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/optionator": { - "version": "0.9.3", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "license": "MIT", "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/ora": { - "version": "5.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/outvariant": { - "version": "1.4.0", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", "dev": true, "license": "MIT" }, @@ -4170,6 +5233,8 @@ }, "node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4184,6 +5249,8 @@ }, "node_modules/p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", "dependencies": { @@ -4196,6 +5263,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "devOptional": true, + "license": "BlueOak-1.0.0" + }, "node_modules/packageurl-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/packageurl-js/-/packageurl-js-1.0.2.tgz", @@ -4204,6 +5294,8 @@ }, "node_modules/parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "license": "MIT", "dependencies": { @@ -4215,6 +5307,8 @@ }, "node_modules/path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", "engines": { @@ -4223,6 +5317,8 @@ }, "node_modules/path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "license": "MIT", "engines": { @@ -4231,7 +5327,9 @@ }, "node_modules/path-key": { "version": "3.1.1", - "dev": true, + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -4244,8 +5342,41 @@ "dev": true, "license": "MIT" }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "devOptional": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "dev": true, + "license": "MIT" + }, "node_modules/pathval": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, "license": "MIT", "engines": { @@ -4253,12 +5384,16 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { @@ -4278,17 +5413,83 @@ "node": ">= 0.4" } }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.8.0" } }, + "node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "license": "ISC", + "optional": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "license": "MIT", + "optional": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "license": "MIT", + "optional": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { - "version": "2.3.0", - "dev": true, + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -4296,6 +5497,8 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -4313,6 +5516,27 @@ ], "license": "MIT" }, + "node_modules/railroad-diagrams": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", + "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==", + "license": "CC0-1.0", + "optional": true + }, + "node_modules/randexp": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "discontinuous-range": "1.0.0", + "ret": "~0.1.10" + }, + "engines": { + "node": ">=0.12" + } + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -4323,10 +5547,38 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "optional": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/readable-stream": { "version": "3.6.2", - "dev": true, + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "license": "MIT", + "optional": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -4338,6 +5590,8 @@ }, "node_modules/readdirp": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "license": "MIT", "dependencies": { @@ -4393,19 +5647,31 @@ }, "node_modules/require-directory": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } }, "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -4421,26 +5687,45 @@ }, "node_modules/resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "dev": true, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, + "optional": true, "engines": { - "node": ">=8" + "node": ">=0.12" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 4" } }, + "node_modules/rettime": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rettime/-/rettime-0.7.0.tgz", + "integrity": "sha512-LPRKoHnLKd/r3dVxcwO7vhCW+orkOGj9ViueosEBK6ie89CijnfRlhaDhHq/3Hxu4CkWQtxwlBG0mzTQY6uQjw==", + "dev": true, + "license": "MIT" + }, "node_modules/reusify": { - "version": "1.0.4", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, "license": "MIT", "engines": { @@ -4450,6 +5735,9 @@ }, "node_modules/rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "license": "ISC", "dependencies": { @@ -4462,16 +5750,32 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/run-async": { - "version": "2.4.1", + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">=0.12.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -4492,15 +5796,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/safe-array-concat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", @@ -4521,16 +5816,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/safe-buffer": { "version": "5.2.1", - "dev": true, + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "devOptional": true, "funding": [ { "type": "github", @@ -4564,13 +5854,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-push-apply/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", @@ -4591,32 +5874,29 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT", + "optional": true }, - "node_modules/semver": { - "version": "7.5.4", - "dev": true, - "license": "ISC", + "node_modules/schemes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/schemes/-/schemes-1.4.0.tgz", + "integrity": "sha512-ImFy9FbCsQlVgnE3TCWmLPCFnVzx0lHL/l+umHplDqAKd0dzFpnS6lFZIpagBlYhKwzVmlV36ec0Y1XTu8JBAQ==", + "license": "MIT", + "optional": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "extend": "^3.0.0" } }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "bin": { + "semver": "bin/semver.js" } }, "node_modules/serialize-javascript": { @@ -4629,11 +5909,6 @@ "randombytes": "^2.1.0" } }, - "node_modules/set-cookie-parser": { - "version": "2.6.0", - "dev": true, - "license": "MIT" - }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -4685,7 +5960,9 @@ }, "node_modules/shebang-command": { "version": "2.0.0", - "dev": true, + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "devOptional": true, "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -4696,7 +5973,9 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "dev": true, + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -4779,17 +6058,75 @@ } }, "node_modules/signal-exit": { - "version": "3.0.7", - "dev": true, - "license": "ISC" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "devOptional": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } }, "node_modules/sinon": { - "version": "15.1.2", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.2.0.tgz", + "integrity": "sha512-nPS85arNqwBXaIsFCkolHjGIkFo+Oxu9vbgmBJizLAhqe6P2o3Qmj3KCUoRkfhHtvgDhZdWD3risLHAUJ8npjw==", + "deprecated": "16.1.1", "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0", - "@sinonjs/fake-timers": "^10.1.0", + "@sinonjs/fake-timers": "^10.3.0", "@sinonjs/samsam": "^8.0.0", "diff": "^5.1.0", "nise": "^5.1.4", @@ -4802,6 +6139,8 @@ }, "node_modules/sinon-chai": { "version": "3.7.0", + "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.7.0.tgz", + "integrity": "sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g==", "dev": true, "license": "(BSD-2-Clause OR WTFPL)", "peerDependencies": { @@ -4809,26 +6148,163 @@ "sinon": ">=4.0.0" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/smtp-address-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/smtp-address-parser/-/smtp-address-parser-1.1.0.tgz", + "integrity": "sha512-Gz11jbNU0plrReU9Sj7fmshSBxxJ9ShdD2q4ktHIHo/rpTH6lFyQoYHYKINPJtPe8aHFnsbtW46Ls0tCCBsIZg==", + "license": "MIT", + "optional": true, + "dependencies": { + "nearley": "^2.20.1" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/socks": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "license": "MIT", + "optional": true, + "dependencies": { + "ip-address": "^10.0.1", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "license": "MIT", + "optional": true, + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", + "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", + "license": "CC0-1.0" + }, "node_modules/sprintf-js": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "license": "BSD-3-Clause", "optional": true }, + "node_modules/ssri": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/strict-event-emitter": { - "version": "0.4.6", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", "dev": true, "license": "MIT" }, "node_modules/string_decoder": { "version": "1.3.0", - "dev": true, + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "license": "MIT", + "optional": true, "dependencies": { "safe-buffer": "~5.2.0" } }, "node_modules/string-width": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "devOptional": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -4900,6 +6376,22 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "devOptional": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -4920,6 +6412,8 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", "engines": { @@ -4930,9 +6424,9 @@ } }, "node_modules/strnum": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", - "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.2.tgz", + "integrity": "sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==", "funding": [ { "type": "github", @@ -4943,6 +6437,8 @@ }, "node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { @@ -4965,40 +6461,207 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tagged-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", + "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me", + "license": "ISC", + "optional": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-fs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-fs/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC", + "optional": true + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC", + "optional": true + }, "node_modules/test-exclude": { - "version": "6.0.0", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", + "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", "dev": true, "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" + "glob": "^10.4.1", + "minimatch": "^9.0.4" }, "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/text-table": { - "version": "0.2.0", + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "node_modules/through": { - "version": "2.3.8", + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true, "license": "MIT" }, - "node_modules/tmp": { - "version": "0.0.33", + "node_modules/tldts": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.21.tgz", + "integrity": "sha512-Plu6V8fF/XU6d2k8jPtlQf5F4Xx2hAin4r2C2ca7wR8NK5MbRTo9huLUWRe28f3Uk8bYZfg74tit/dSjc18xnw==", "dev": true, "license": "MIT", "dependencies": { - "os-tmpdir": "~1.0.2" + "tldts-core": "^7.0.21" }, - "engines": { - "node": ">=0.6.0" + "bin": { + "tldts": "bin/cli.js" } }, + "node_modules/tldts-core": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.21.tgz", + "integrity": "sha512-oVOMdHvgjqyzUZH1rOESgJP1uNe2bVrfK0jUHHmiM2rpEiRbf3j4BrsIc6JigJRbHGanQwuZv/R+LTcHsw+bLA==", + "dev": true, + "license": "MIT" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -5012,8 +6675,23 @@ "node": ">=8.0" } }, + "node_modules/tough-cookie": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.0.tgz", + "integrity": "sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^7.0.5" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/tr46": { "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "license": "MIT" }, "node_modules/tsconfig-paths": { @@ -5029,15 +6707,36 @@ "strip-bom": "^3.0.0" } }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, - "license": "0BSD" + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } }, "node_modules/type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "license": "MIT", "dependencies": { @@ -5048,7 +6747,9 @@ } }, "node_modules/type-detect": { - "version": "4.0.8", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "dev": true, "license": "MIT", "engines": { @@ -5057,6 +6758,8 @@ }, "node_modules/type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -5145,7 +6848,9 @@ } }, "node_modules/typescript": { - "version": "5.1.3", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5176,14 +6881,52 @@ } }, "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, "license": "MIT" }, + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "license": "ISC", + "optional": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/until-async": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/until-async/-/until-async-3.0.2.tgz", + "integrity": "sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/kettanaito" + } + }, "node_modules/update-browserslist-db": { - "version": "1.0.13", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "dev": true, "funding": [ { @@ -5201,8 +6944,8 @@ ], "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -5213,67 +6956,46 @@ }, "node_modules/uri-js": { "version": "4.4.1", - "dev": true, + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "devOptional": true, "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, - "node_modules/util": { - "version": "0.12.5", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT", + "optional": true }, "node_modules/v8-to-istanbul": { - "version": "9.1.0", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" + "convert-source-map": "^2.0.0" }, "engines": { "node": ">=10.12.0" } }, - "node_modules/wcwidth": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/web-encoding": { - "version": "1.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "util": "^0.12.3" - }, - "optionalDependencies": { - "@zxing/text-encoding": "0.9.0" - } - }, "node_modules/webidl-conversions": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "license": "BSD-2-Clause" }, "node_modules/whatwg-url": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "license": "MIT", "dependencies": { "tr46": "~0.0.3", @@ -5344,13 +7066,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/which-collection": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", @@ -5371,9 +7086,9 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", "dev": true, "license": "MIT", "dependencies": { @@ -5392,6 +7107,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/workerpool": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", @@ -5400,7 +7125,26 @@ "license": "Apache-2.0" }, "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "devOptional": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -5416,11 +7160,15 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "dev": true, + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "devOptional": true, "license": "ISC" }, "node_modules/xmlbuilder2": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-3.1.1.tgz", + "integrity": "sha512-WCSfbfZnQDdLQLiMdGUQpMxxckeQ4oZNMNhLVkcekTu7xhD4tuUDyAPoY8CwXvBYE6LwBHd6QW2WZXlOWr1vCw==", "license": "MIT", "optional": true, "dependencies": { @@ -5435,6 +7183,8 @@ }, "node_modules/xmlbuilder2/node_modules/argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "license": "MIT", "optional": true, "dependencies": { @@ -5443,6 +7193,8 @@ }, "node_modules/xmlbuilder2/node_modules/js-yaml": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "license": "MIT", "optional": true, "dependencies": { @@ -5455,18 +7207,24 @@ }, "node_modules/y18n": { "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yallist": { - "version": "4.0.0", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true, "license": "ISC" }, "node_modules/yargs": { "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -5483,6 +7241,8 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "license": "ISC", "engines": { "node": ">=12" @@ -5490,6 +7250,8 @@ }, "node_modules/yargs-unparser": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, "license": "MIT", "dependencies": { @@ -5502,19 +7264,10 @@ "node": ">=10" } }, - "node_modules/yargs-unparser/node_modules/camelcase": { - "version": "6.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs-unparser/node_modules/decamelize": { - "version": "4.0.0", + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", "engines": { @@ -5524,12 +7277,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yocto-queue": { - "version": "0.1.0", + "node_modules/yoctocolors-cjs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" diff --git a/package.json b/package.json index e942f6c0..eb833f7b 100644 --- a/package.json +++ b/package.json @@ -45,13 +45,13 @@ }, "dependencies": { "@babel/core": "^7.23.2", - "@cyclonedx/cyclonedx-library": "~1.13.3", + "@cyclonedx/cyclonedx-library": "^6.13.0", "fast-toml": "^0.5.4", - "fast-xml-parser": "^4.5.3", + "fast-xml-parser": "^5.3.4", "help": "^3.0.2", "https-proxy-agent": "^7.0.6", "node-fetch": "^2.7.0", - "packageurl-js": "^1.0.2", + "packageurl-js": "~1.0.2", "yargs": "^17.7.2" }, "devDependencies": { @@ -60,14 +60,14 @@ "@types/node": "^20.17.30", "@types/which": "^3.0.4", "babel-plugin-rewire": "^1.2.0", - "c8": "^8.0.0", + "c8": "^10.1.3", "chai": "^4.3.7", "eslint": "^8.42.0", "eslint-plugin-editorconfig": "^4.0.3", "eslint-plugin-import": "^2.29.1", "esmock": "^2.6.2", "mocha": "^10.2.0", - "msw": "^1.3.2", + "msw": "^2.12.7", "sinon": "^15.1.2", "sinon-chai": "^3.7.0", "typescript": "^5.1.3", diff --git a/test/analysis.test.js b/test/analysis.test.js index 70b0e980..a19be85a 100644 --- a/test/analysis.test.js +++ b/test/analysis.test.js @@ -1,6 +1,6 @@ import { expect } from 'chai' import { afterEach } from 'mocha' -import { rest } from 'msw' +import { http } from 'msw' import { setupServer } from 'msw/node' import { stub } from 'sinon' @@ -44,10 +44,10 @@ suite('testing the analysis module for sending api requests', () => { }; test('invoking the requestComponent should return a json report', interceptAndRun( - rest.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { + http.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { // interception route, will return ok response for our fake content type if (fakeProvided.contentType === req.headers.get('content-type')) { - return res(ctx.json({dummy: 'response'})) + return res(ctx.json({ dummy: 'response' })) } return res(ctx.status(400)) }), @@ -59,13 +59,13 @@ suite('testing the analysis module for sending api requests', () => { // fake providers hosts our stubbed provideStack function let fakeProvider = { provideComponent: componentProvideStub, - provideStack: () => {}, // not required for this test - isSupported: () => {} // not required for this test + provideStack: () => { }, // not required for this test + isSupported: () => { } // not required for this test } // verify response as expected let res = await analysis.requestComponent(fakeProvider, fakeContent, backendUrl) - expect(res).to.deep.equal({dummy: 'response'}) + expect(res).to.deep.equal({ dummy: 'response' }) } )) @@ -76,14 +76,14 @@ suite('testing the analysis module for sending api requests', () => { stackProviderStub.withArgs(fakeManifest).returns(fakeProvided) // fake providers hosts our stubbed provideStack function let fakeProvider = { - provideComponent: () => {}, // not required for this test + provideComponent: () => { }, // not required for this test provideStack: stackProviderStub, - isSupported: () => {} // not required for this test + isSupported: () => { } // not required for this test } test('invoking the requestStack for html should return a string report', interceptAndRun( // interception route, will return ok response for our fake content type - rest.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { + http.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { if (fakeProvided.contentType === req.headers.get('content-type')) { return res(ctx.text('html-content')) } @@ -98,16 +98,16 @@ suite('testing the analysis module for sending api requests', () => { test('invoking the requestStack for non-html should return a json report', interceptAndRun( // interception route, will return ok response for our fake content type - rest.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { + http.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { if (fakeProvided.contentType === req.headers.get('content-type')) { - return res(ctx.json({dummy: 'response'})) + return res(ctx.json({ dummy: 'response' })) } return res(ctx.status(400)) }), async () => { // verify response as expected let res = await analysis.requestStack(fakeProvider, fakeManifest, backendUrl) - expect(res).to.deep.equal({dummy: 'response'}) + expect(res).to.deep.equal({ dummy: 'response' }) } )) }) @@ -115,7 +115,7 @@ suite('testing the analysis module for sending api requests', () => { test('invoking validateToken function with good token', interceptAndRun( // interception route, will return ok response for our fake content type - rest.get(`${backendUrl}/api/v3/token`, (req, res, ctx) => { + http.get(`${backendUrl}/api/v3/token`, (req, res, ctx) => { return determineResponse(req, res, ctx); }), @@ -130,7 +130,7 @@ suite('testing the analysis module for sending api requests', () => { )) test('invoking validateToken function with bad token', interceptAndRun( // interception route, will return ok response for our fake content type - rest.get(`${backendUrl}/api/v3/token`, (req, res, ctx) => { + http.get(`${backendUrl}/api/v3/token`, (req, res, ctx) => { return determineResponse(req, res, ctx); }), @@ -145,7 +145,7 @@ suite('testing the analysis module for sending api requests', () => { )) test('invoking validateToken function without token', interceptAndRun( // interception route, will return ok response for our fake content type - rest.get(`${backendUrl}/api/v3/token`, (req, res, ctx) => { + http.get(`${backendUrl}/api/v3/token`, (req, res, ctx) => { return determineResponse(req, res, ctx); }), @@ -167,39 +167,39 @@ suite('testing the analysis module for sending api requests', () => { stackProviderStub.withArgs(fakeManifest).returns(fakeProvided) // fake providers hosts our stubbed provideStack function let fakeProvider = { - provideComponent: () => {}, // not required for this test + provideComponent: () => { }, // not required for this test provideStack: stackProviderStub, - isSupported: () => {} // not required for this test + isSupported: () => { } // not required for this test }; afterEach(() => delete process.env['TRUSTIFY_DA_SNYK_TOKEN']) test('when the relevant token environment variables are set, verify corresponding headers are included', interceptAndRun( // interception route, will return ok response if found the expected token - rest.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { + http.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { if ('dummy-snyk-token' === req.headers.get('ex-snyk-token')) { - return res(ctx.json({ok: 'ok'})) + return res(ctx.json({ ok: 'ok' })) } return res(ctx.status(400)) }), async () => { process.env['TRUSTIFY_DA_SNYK_TOKEN'] = 'dummy-snyk-token' let res = await analysis.requestStack(fakeProvider, fakeManifest, backendUrl) - expect(res).to.deep.equal({ok: 'ok'}) + expect(res).to.deep.equal({ ok: 'ok' }) } )) test('when the relevant token environment variables are not set, verify no corresponding headers are included', interceptAndRun( // interception route, will return ok response if found the expected token - rest.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { + http.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { if (!req.headers.get('ex-snyk-token')) { - return res(ctx.json({ok: 'ok'})) + return res(ctx.json({ ok: 'ok' })) } return res(ctx.status(400)) }), async () => { let res = await analysis.requestStack(fakeProvider, fakeManifest, backendUrl) - expect(res).to.deep.equal({ok: 'ok'}) + expect(res).to.deep.equal({ ok: 'ok' }) } )) }) @@ -209,9 +209,9 @@ suite('testing the analysis module for sending api requests', () => { let stackProviderStub = stub() stackProviderStub.withArgs(fakeManifest).returns(fakeProvided) let fakeProvider = { - provideComponent: () => {}, + provideComponent: () => { }, provideStack: stackProviderStub, - isSupported: () => {} + isSupported: () => { } }; afterEach(() => { @@ -219,9 +219,9 @@ suite('testing the analysis module for sending api requests', () => { }) test('when HTTP proxy is configured, verify agent is set correctly', interceptAndRun( - rest.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { + http.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { // The request should go through the proxy - return res(ctx.json({ok: 'ok'})) + return res(ctx.json({ ok: 'ok' })) }), async () => { const httpProxyUrl = 'http://proxy.example.com:8080' @@ -229,14 +229,14 @@ suite('testing the analysis module for sending api requests', () => { 'TRUSTIFY_DA_PROXY_URL': httpProxyUrl } let res = await analysis.requestStack(fakeProvider, fakeManifest, backendUrl, false, options) - expect(res).to.deep.equal({ok: 'ok'}) + expect(res).to.deep.equal({ ok: 'ok' }) } )) test('when HTTPS proxy is configured, verify agent is set correctly', interceptAndRun( - rest.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { + http.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { // The request should go through the proxy - return res(ctx.json({ok: 'ok'})) + return res(ctx.json({ ok: 'ok' })) }), async () => { const httpsProxyUrl = 'https://proxy.example.com:8080' @@ -244,30 +244,30 @@ suite('testing the analysis module for sending api requests', () => { 'TRUSTIFY_DA_PROXY_URL': httpsProxyUrl } let res = await analysis.requestStack(fakeProvider, fakeManifest, backendUrl, false, options) - expect(res).to.deep.equal({ok: 'ok'}) + expect(res).to.deep.equal({ ok: 'ok' }) } )) test('when proxy is configured via environment variable, verify agent is set correctly', interceptAndRun( - rest.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { + http.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { // The request should go through the proxy - return res(ctx.json({ok: 'ok'})) + return res(ctx.json({ ok: 'ok' })) }), async () => { process.env['TRUSTIFY_DA_PROXY_URL'] = 'http://proxy.example.com:8080' let res = await analysis.requestStack(fakeProvider, fakeManifest, backendUrl) - expect(res).to.deep.equal({ok: 'ok'}) + expect(res).to.deep.equal({ ok: 'ok' }) } )) test('when no proxy is configured, verify no agent is set', interceptAndRun( - rest.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { + http.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { // The request should go directly without proxy - return res(ctx.json({ok: 'ok'})) + return res(ctx.json({ ok: 'ok' })) }), async () => { let res = await analysis.requestStack(fakeProvider, fakeManifest, backendUrl) - expect(res).to.deep.equal({ok: 'ok'}) + expect(res).to.deep.equal({ ok: 'ok' }) } )) }) From c555cdf56c471a86be3004ee65bdfe254675b402 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Thu, 5 Feb 2026 12:04:21 +0000 Subject: [PATCH 077/102] chore: bump GHA workflow versions (#368) --- .github/workflows/pr-validation.yml | 2 +- .github/workflows/publish.yml | 6 +- .github/workflows/release.yml | 4 +- .github/workflows/test.yml | 9 ++- package-lock.json | 115 ++++++++++++++++++++-------- package.json | 2 +- test/providers/oci_images.test.js | 6 +- 7 files changed, 97 insertions(+), 47 deletions(-) diff --git a/.github/workflows/pr-validation.yml b/.github/workflows/pr-validation.yml index 13dba5f9..fd16f7b9 100644 --- a/.github/workflows/pr-validation.yml +++ b/.github/workflows/pr-validation.yml @@ -27,7 +27,7 @@ jobs: fetch-depth: 0 - name: Set up Node.js - uses: actions/setup-node@v5 + uses: actions/setup-node@v6 with: node-version: 24 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index b3c68a65..7071f5c3 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -30,7 +30,7 @@ jobs: fetch-depth: 0 - name: Install node 24 - uses: actions/setup-node@v5 + uses: actions/setup-node@v6 with: node-version: 24 cache: npm @@ -76,7 +76,7 @@ jobs: steps: - name: Get releasebranch.txt artifact from Release pipeline if: github.event_name == 'workflow_run' - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v7 with: name: releasebranch.txt run-id: ${{ github.event.workflow_run.id }} @@ -96,7 +96,7 @@ jobs: fetch-depth: 0 - name: Install node 24 - uses: actions/setup-node@v5 + uses: actions/setup-node@v6 with: node-version: 24 cache: npm diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6905885c..4478fe4b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -30,7 +30,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Install node 24 - uses: actions/setup-node@v5 + uses: actions/setup-node@v6 with: node-version: 24 cache: npm @@ -64,7 +64,7 @@ jobs: git push origin "$BRANCH" echo "$BRANCH" > releasebranch.txt - - uses: actions/upload-artifact@v5 + - uses: actions/upload-artifact@v6 with: name: releasebranch.txt path: releasebranch.txt diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0f6b77f0..186564c1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -28,7 +28,7 @@ jobs: uses: actions/checkout@v6 - name: Install node ${{ matrix.node }} - uses: actions/setup-node@v5 + uses: actions/setup-node@v6 with: node-version: ${{ matrix.node }} cache: npm @@ -66,14 +66,15 @@ jobs: go-version: '1.20.1' - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@v5 - name: Setup syft - uses: jaxxstorm/action-install-gh-release@v1.10.0 + uses: jaxxstorm/action-install-gh-release@v2.1.0 with: repo: anchore/syft platform: linux arch: amd64 + tag: v1.41.1 - name: Setup skopeo run: sudo apt update && sudo apt-get -y install skopeo @@ -96,7 +97,7 @@ jobs: - name: Upload coverage reports if: ${{ matrix.node == env.MAIN_NODE_VER }} - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: coverage path: ./coverage/coverage-final.json diff --git a/package-lock.json b/package-lock.json index 5cb8ded2..d76d157e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "fast-xml-parser": "^5.3.4", "help": "^3.0.2", "https-proxy-agent": "^7.0.6", - "node-fetch": "^2.7.0", + "node-fetch": "^3.3.2", "packageurl-js": "~1.0.2", "yargs": "^17.7.2" }, @@ -1944,6 +1944,15 @@ "node": ">= 8" } }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", @@ -2869,6 +2878,29 @@ "reusify": "^1.0.4" } }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -2984,6 +3016,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -4927,24 +4971,42 @@ "node": ">=10" } }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" }, "engines": { - "node": "4.x || >=6.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, "node_modules/node-gyp": { @@ -5754,7 +5816,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -6688,12 +6750,6 @@ "node": ">=16" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -6986,20 +7042,13 @@ "node": ">=10.12.0" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "engines": { + "node": ">= 8" } }, "node_modules/which": { diff --git a/package.json b/package.json index eb833f7b..b528b5df 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "fast-xml-parser": "^5.3.4", "help": "^3.0.2", "https-proxy-agent": "^7.0.6", - "node-fetch": "^2.7.0", + "node-fetch": "^3.3.2", "packageurl-js": "~1.0.2", "yargs": "^17.7.2" }, diff --git a/test/providers/oci_images.test.js b/test/providers/oci_images.test.js index 2942936f..83d28913 100644 --- a/test/providers/oci_images.test.js +++ b/test/providers/oci_images.test.js @@ -14,12 +14,12 @@ suite('testing the OCI image data provider', () => { ].forEach(imageRef => { test(`verify OCI image sbom provided with scenario ${imageRef}`, () => { let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/image/${imageRef}.json`).toString().trim() - expectedSbom = JSON.stringify(JSON.parse(expectedSbom), null, 4) + expectedSbom = JSON.parse(expectedSbom) let providedSbom = generateImageSBOM(parseImageRef(imageRef)) providedSbom['metadata'] = null providedSbom['serialNumber'] = null - expect(JSON.stringify(providedSbom, null, 4).trimEnd()).to.deep.equal(expectedSbom) + expect(providedSbom, null, 4).to.deep.equal(expectedSbom) }).timeout(40000) }); @@ -36,4 +36,4 @@ suite('testing the OCI image data provider', () => { }).timeout(10000) }) -}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(()=> clock.restore()); +}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); From 8adb67bd67143306359dcc35b851c4ff5e9cde9b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Feb 2026 12:19:59 +0100 Subject: [PATCH 078/102] build(deps): bump softprops/action-gh-release from 1 to 2 (#373) Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 1 to 2. - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](https://github.com/softprops/action-gh-release/compare/v1...v2) --- updated-dependencies: - dependency-name: softprops/action-gh-release dependency-version: '2' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4478fe4b..4987faf1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -70,7 +70,7 @@ jobs: path: releasebranch.txt - name: Create GitHub release tag - uses: softprops/action-gh-release@v1 + uses: softprops/action-gh-release@v2 with: name: "Release ${{ steps.bump.outputs.version }}" tag_name: "v${{ steps.bump.outputs.version }}" From 62f6bc73f58f66e6a90ca92afba00ad081c8c1a3 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Tue, 10 Feb 2026 11:20:08 +0000 Subject: [PATCH 079/102] chore: group dependabot pull requests (#374) --- .github/dependabot.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 85c967c2..1245ecb7 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=https://www.schemastore.org/dependabot-2.0.json version: 2 updates: - package-ecosystem: "npm" @@ -6,14 +7,26 @@ updates: interval: "daily" exclude-paths: - "test/providers/tst_manifests/**" + groups: + npm-dependencies: + patterns: + - "*" - package-ecosystem: "docker" directory: "/docker-image/Dockerfiles" schedule: interval: "daily" + groups: + dockerfile: + patterns: + - "*" - package-ecosystem: "github-actions" directory: "/" schedule: interval: "weekly" + groups: + github-actions: + patterns: + - "*" - package-ecosystem: "pip" directory: "/" schedule: From a1095360b8242b8af0af64e7f48be7a37f447522 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Tue, 17 Feb 2026 11:35:57 +0000 Subject: [PATCH 080/102] fix: extract & pass correct headers & header values to exhort (#378) --- src/analysis.js | 42 +++++++------------ src/index.js | 6 +-- src/tools.js | 2 +- ...l.test.js => exhort-backend-utils.test.js} | 20 ++++++++- 4 files changed, 38 insertions(+), 32 deletions(-) rename test/{get-exhort-url.test.js => exhort-backend-utils.test.js} (77%) diff --git a/src/analysis.js b/src/analysis.js index 4e8a98ee..6464df64 100644 --- a/src/analysis.js +++ b/src/analysis.js @@ -9,11 +9,11 @@ import { RegexNotToBeLogged, getCustom } from "./tools.js"; export default { requestComponent, requestStack, requestImages, validateToken } -const rhdaTokenHeader = "rhda-token"; -const rhdaTelemetryId = "rhda-telemetry-id"; -const rhdaSourceHeader = "rhda-source" -const rhdaOperationTypeHeader = "rhda-operation-type" -const rhdaPackageManagerHeader = "rhda-pkg-manager" +const rhdaTokenHeader = "trust-da-token"; +const rhdaTelemetryId = "telemetry-anonymous-id"; +const rhdaSourceHeader = "trust-da-source" +const rhdaOperationTypeHeader = "trust-da-operation-type" +const rhdaPackageManagerHeader = "trust-da-pkg-manager" /** * Adds proxy agent configuration to fetch options if a proxy URL is specified @@ -229,11 +229,12 @@ async function validateToken(url, opts = {}) { * * @param {string} headerName - the header name to populate in request * @param headers - * @param {import("index.js").Options} [opts={}] - optional various options to pass along the application + * @param {string} optsKey - key in the options object to use the value for + * @param {import("index.js").Options} [opts={}] - options input object to fetch header values from * @private */ -function setRhdaHeader(headerName, headers, opts) { - let rhdaHeaderValue = getCustom(headerName.toUpperCase().replaceAll("-", "_"), null, opts); +function setRhdaHeader(headerName, headers, optsKey, opts) { + let rhdaHeaderValue = getCustom(optsKey, null, opts); if (rhdaHeaderValue) { headers[headerName] = rhdaHeaderValue } @@ -244,26 +245,15 @@ function setRhdaHeader(headerName, headers, opts) { * @param {import("index.js").Options} [opts={}] - optional various options to pass along the application * @returns {{}} */ -function getTokenHeaders(opts = {}) { - let supportedTokens = ['snyk', 'oss-index'] +export function getTokenHeaders(opts = {}) { let headers = {} - supportedTokens.forEach(vendor => { - let token = getCustom(`TRUSTIFY_DA_${vendor.replace("-", "_").toUpperCase()}_TOKEN`, null, opts); - if (token) { - headers[`ex-${vendor}-token`] = token - } - let user = getCustom(`TRUSTIFY_DA_${vendor.replace("-", "_").toUpperCase()}_USER`, null, opts); - if (user) { - headers[`ex-${vendor}-user`] = user - } - }) - setRhdaHeader(rhdaTokenHeader, headers, opts); - setRhdaHeader(rhdaSourceHeader, headers, opts); - setRhdaHeader(rhdaOperationTypeHeader, headers, opts); - setRhdaHeader(rhdaPackageManagerHeader, headers, opts) - setRhdaHeader(rhdaTelemetryId, headers, opts); + setRhdaHeader(rhdaTokenHeader, headers, 'TRUSTIFY_DA_TOKEN', opts); + setRhdaHeader(rhdaSourceHeader, headers, 'TRUSTIFY_DA_SOURCE', opts); + setRhdaHeader(rhdaOperationTypeHeader, headers, rhdaOperationTypeHeader.toUpperCase().replaceAll("-", "_"), opts); + setRhdaHeader(rhdaPackageManagerHeader, headers, rhdaPackageManagerHeader.toUpperCase().replaceAll("-", "_"), opts) + setRhdaHeader(rhdaTelemetryId, headers, 'TRUSTIFY_DA_TELEMETRY_ID', opts); - if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { + if (getCustom("TRUSTIFY_DA_DEBUG", null, opts) === "true") { console.log("Headers Values to be sent to Trustify DA backend:" + EOL) for (const headerKey in headers) { if (!headerKey.match(RegexNotToBeLogged)) { diff --git a/src/index.js b/src/index.js index 9cdc0ba2..4ff21804 100644 --- a/src/index.js +++ b/src/index.js @@ -39,9 +39,9 @@ export default { componentAnalysis, stackAnalysis, imageAnalysis, validateToken * TRUSTIFY_DA_SYFT_PATH?: string | undefined, * TRUSTIFY_DA_YARN_PATH?: string | undefined, * MATCH_MANIFEST_VERSIONS?: string | undefined, - * RHDA_SOURCE?: string | undefined, - * RHDA_TOKEN?: string | undefined, - * RHDA_TELEMETRY_ID?: string | undefined, + * TRUSTIFY_DA_SOURCE?: string | undefined, + * TRUSTIFY_DA_TOKEN?: string | undefined, + * TRUSTIFY_DA_TELEMETRY_ID?: string | undefined, * [key: string]: string | undefined, * }} Options */ diff --git a/src/tools.js b/src/tools.js index b3e9a320..8f6fd115 100644 --- a/src/tools.js +++ b/src/tools.js @@ -3,7 +3,7 @@ import { EOL } from "os"; import { PackageURL } from "packageurl-js"; -export const RegexNotToBeLogged = /TRUSTIFY_DA_.*_TOKEN|ex-.*-token/ +export const RegexNotToBeLogged = /TRUSTIFY_DA_(.*_)?TOKEN|ex-.*-token|trust-.*-token/ /** * * @param {string} key to log its value from environment variables and from opts, if it exists diff --git a/test/get-exhort-url.test.js b/test/exhort-backend-utils.test.js similarity index 77% rename from test/get-exhort-url.test.js rename to test/exhort-backend-utils.test.js index ed850d8d..13130a7d 100644 --- a/test/get-exhort-url.test.js +++ b/test/exhort-backend-utils.test.js @@ -1,11 +1,16 @@ import { expect } from 'chai' +import * as chai from 'chai' +import * as sinon from 'sinon' +import sinonChai from 'sinon-chai' +import { getTokenHeaders } from '../src/analysis.js'; import { selectTrustifyDABackend } from '../src/index.js' -const testUrl = 'https://trustify-da.example.com'; -const testUrl2 = 'https://dev.trustify-da.example.com'; +chai.use(sinonChai) suite('testing Select Trustify DA Backend function', () => { + const testUrl = 'https://trustify-da.example.com'; + const testUrl2 = 'https://dev.trustify-da.example.com'; test('When TRUSTIFY_DA_BACKEND_URL is set in environment variable, should return that value', () => { process.env['TRUSTIFY_DA_BACKEND_URL'] = testUrl; @@ -63,3 +68,14 @@ suite('testing Select Trustify DA Backend function', () => { }).afterAll(() => { delete process.env['TRUSTIFY_DA_BACKEND_URL']; }); + +suite('verify token header logging', () => { + test('don\'t log the token header', () => { + getTokenHeaders({ + 'TRUSTIFY_DA_TOKEN': 'banana', + 'TRUSTIFY_DA_DEBUG': 'true' + }) + // Should only be called once with "Headers Values to be sent to Trustify DA backend:" + expect(console.log).to.be.calledOnce + }) +}).beforeAll(() => sinon.spy(console, 'log')).afterAll(() => console.log.restore()) From aba4457cb0abfcd301ca51ba8b62ee127105cd68 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Fri, 27 Feb 2026 11:56:53 +0000 Subject: [PATCH 081/102] chore: bump yargs to v18 for Node 25 support (#392) --- .eslintrc.json | 3 +- .github/workflows/test.yml | 2 +- package-lock.json | 1273 ++++++++++++++++++++++++++++-------- package.json | 5 +- 4 files changed, 991 insertions(+), 292 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 465e6716..89279b6b 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -32,8 +32,9 @@ }] }, "settings": { + "typescript": {}, "import/resolver": { - "node": { + "typescript": { "extensions": [".js"] } } diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 186564c1..2d575343 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,7 +20,7 @@ jobs: name: Lint and test project strategy: matrix: - node: ['24', 'latest'] + node: ['22', '24'] env: MAIN_NODE_VER: '24' steps: diff --git a/package-lock.json b/package-lock.json index d76d157e..b5f2d807 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,13 +11,14 @@ "dependencies": { "@babel/core": "^7.23.2", "@cyclonedx/cyclonedx-library": "^6.13.0", + "eslint-import-resolver-typescript": "^4.4.4", "fast-toml": "^0.5.4", "fast-xml-parser": "^5.3.4", "help": "^3.0.2", "https-proxy-agent": "^7.0.6", "node-fetch": "^3.3.2", "packageurl-js": "~1.0.2", - "yargs": "^17.7.2" + "yargs": "^18.0.0" }, "bin": { "trustify-da-javascript-client": "dist/src/cli.js" @@ -28,7 +29,7 @@ "@types/node": "^20.17.30", "@types/which": "^3.0.4", "babel-plugin-rewire": "^1.2.0", - "c8": "^10.1.3", + "c8": "^11.0.0", "chai": "^4.3.7", "eslint": "^8.42.0", "eslint-plugin-editorconfig": "^4.0.3", @@ -322,11 +323,41 @@ "xmlbuilder2": "^3.0.2" } }, + "node_modules/@emnapi/core": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", + "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", - "dev": true, "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.4.3" @@ -345,7 +376,6 @@ "version": "4.12.2", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", - "dev": true, "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -355,7 +385,6 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.12.4", @@ -379,7 +408,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -396,14 +424,12 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, "license": "MIT" }, "node_modules/@eslint/js": { "version": "8.57.1", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", - "dev": true, "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -414,7 +440,6 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", "deprecated": "Use @eslint/config-array instead", - "dev": true, "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^2.0.3", @@ -429,7 +454,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, "license": "Apache-2.0", "engines": { "node": ">=12.22" @@ -444,7 +468,6 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "deprecated": "Use @eslint/object-schema instead", - "dev": true, "license": "BSD-3-Clause" }, "node_modules/@inquirer/ansi": { @@ -539,8 +562,8 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "devOptional": true, "license": "ISC", + "optional": true, "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -557,8 +580,8 @@ "version": "6.2.2", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "devOptional": true, "license": "MIT", + "optional": true, "engines": { "node": ">=12" }, @@ -570,8 +593,8 @@ "version": "6.2.3", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "devOptional": true, "license": "MIT", + "optional": true, "engines": { "node": ">=12" }, @@ -583,15 +606,15 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "devOptional": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "devOptional": true, "license": "MIT", + "optional": true, "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -608,8 +631,8 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "devOptional": true, "license": "MIT", + "optional": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -624,8 +647,8 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "devOptional": true, "license": "MIT", + "optional": true, "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -716,11 +739,22 @@ "node": ">=18" } }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -734,7 +768,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -744,7 +777,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -892,7 +924,6 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, "license": "MIT", "optional": true, "engines": { @@ -903,7 +934,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@sinonjs/commons": { @@ -961,6 +992,16 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -972,7 +1013,7 @@ "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@types/node": { @@ -1003,9 +1044,258 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, "license": "ISC" }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/abbrev": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", @@ -1020,7 +1310,6 @@ "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -1033,7 +1322,6 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -1165,14 +1453,13 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, "license": "Python-2.0" }, "node_modules/array-buffer-byte-length": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -1189,7 +1476,7 @@ "version": "3.1.9", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -1212,7 +1499,7 @@ "version": "1.2.6", "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -1234,7 +1521,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -1253,7 +1540,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -1272,7 +1559,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", @@ -1304,7 +1591,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -1314,7 +1601,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" @@ -1337,7 +1624,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "devOptional": true, "license": "MIT" }, "node_modules/base64-js": { @@ -1410,7 +1696,6 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -1497,9 +1782,9 @@ } }, "node_modules/c8": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/c8/-/c8-10.1.3.tgz", - "integrity": "sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-11.0.0.tgz", + "integrity": "sha512-e/uRViGHSVIJv7zsaDKM7VRn2390TgHXqUSvYwPHBQaU6L7E9L0n9JbdkwdYPvshDT0KymBmmlwSpms3yBaMNg==", "dev": true, "license": "ISC", "dependencies": { @@ -1510,7 +1795,7 @@ "istanbul-lib-coverage": "^3.2.0", "istanbul-lib-report": "^3.0.1", "istanbul-reports": "^3.1.6", - "test-exclude": "^7.0.1", + "test-exclude": "^8.0.0", "v8-to-istanbul": "^9.0.0", "yargs": "^17.7.2", "yargs-parser": "^21.1.1" @@ -1519,7 +1804,7 @@ "c8": "bin/c8.js" }, "engines": { - "node": ">=18" + "node": "20 || >=22" }, "peerDependencies": { "monocart-coverage-reports": "^2" @@ -1530,6 +1815,58 @@ } } }, + "node_modules/c8/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/c8/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/c8/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/cacache": { "version": "18.0.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", @@ -1612,7 +1949,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.0", @@ -1631,7 +1968,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -1645,7 +1982,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -1662,7 +1999,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -1725,7 +2061,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -1820,31 +2155,93 @@ } }, "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", "license": "ISC", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" @@ -1882,7 +2279,6 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, "license": "MIT" }, "node_modules/convert-source-map": { @@ -1910,7 +2306,6 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "devOptional": true, "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -1925,14 +2320,12 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "devOptional": true, "license": "ISC" }, "node_modules/cross-spawn/node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "devOptional": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -1957,7 +2350,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -1975,7 +2368,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -1993,7 +2386,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -2080,14 +2473,13 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, "license": "MIT" }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", @@ -2105,7 +2497,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", @@ -2150,7 +2542,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" @@ -2163,7 +2554,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", @@ -2178,8 +2569,8 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "devOptional": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/editorconfig": { "version": "1.0.4", @@ -2250,6 +2641,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "devOptional": true, "license": "MIT" }, "node_modules/encoding": { @@ -2293,7 +2685,7 @@ "version": "1.24.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.2", @@ -2362,7 +2754,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -2372,7 +2764,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -2382,7 +2774,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -2395,7 +2787,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -2411,7 +2803,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -2424,7 +2816,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "is-callable": "^1.2.7", @@ -2451,7 +2843,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -2465,7 +2856,6 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", @@ -2517,11 +2907,35 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-import-context": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.9.tgz", + "integrity": "sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==", + "license": "MIT", + "dependencies": { + "get-tsconfig": "^4.10.1", + "stable-hash-x": "^0.2.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-context" + }, + "peerDependencies": { + "unrs-resolver": "^1.0.0" + }, + "peerDependenciesMeta": { + "unrs-resolver": { + "optional": true + } + } + }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "debug": "^3.2.7", @@ -2533,17 +2947,51 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, + "node_modules/eslint-import-resolver-typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.4.4.tgz", + "integrity": "sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==", + "license": "ISC", + "dependencies": { + "debug": "^4.4.1", + "eslint-import-context": "^0.1.8", + "get-tsconfig": "^4.10.1", + "is-bun-module": "^2.0.0", + "stable-hash-x": "^0.2.0", + "tinyglobby": "^0.2.14", + "unrs-resolver": "^1.7.11" + }, + "engines": { + "node": "^16.17.0 || >=18.6.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, "node_modules/eslint-module-utils": { "version": "2.12.1", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "debug": "^3.2.7" @@ -2561,7 +3009,7 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ms": "^2.1.1" @@ -2587,7 +3035,7 @@ "version": "2.32.0", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@rtsao/scc": "^1.1.0", @@ -2621,7 +3069,7 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "ms": "^2.1.1" @@ -2631,7 +3079,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" @@ -2644,7 +3092,6 @@ "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", @@ -2661,7 +3108,6 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2674,7 +3120,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -2691,7 +3136,6 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, "license": "MIT" }, "node_modules/esmock": { @@ -2708,7 +3152,6 @@ "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", @@ -2740,7 +3183,6 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" @@ -2753,7 +3195,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" @@ -2766,7 +3207,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=4.0" @@ -2776,7 +3216,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" @@ -2810,21 +3249,18 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "devOptional": true, "license": "MIT" }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, "license": "MIT" }, "node_modules/fast-toml": { @@ -2872,7 +3308,6 @@ "version": "1.20.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", - "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -2905,7 +3340,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" @@ -2938,7 +3372,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, "license": "MIT", "dependencies": { "locate-path": "^6.0.0", @@ -2965,7 +3398,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, "license": "MIT", "dependencies": { "flatted": "^3.2.9", @@ -2980,14 +3412,13 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, "license": "ISC" }, "node_modules/for-each": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "is-callable": "^1.2.7" @@ -3052,7 +3483,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, "license": "ISC" }, "node_modules/fsevents": { @@ -3074,7 +3504,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, + "devOptional": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3084,7 +3514,7 @@ "version": "1.1.8", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -3105,7 +3535,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, + "devOptional": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3115,7 +3545,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3140,6 +3570,18 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-east-asian-width": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-func-name": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", @@ -3154,7 +3596,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -3179,7 +3621,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", @@ -3193,7 +3635,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -3207,6 +3649,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-tsconfig": { + "version": "4.13.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", + "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -3239,7 +3693,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.3" @@ -3275,7 +3728,6 @@ "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.20.2" @@ -3291,7 +3743,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "define-properties": "^1.2.1", @@ -3308,7 +3760,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3328,7 +3780,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, "license": "MIT" }, "node_modules/graphql": { @@ -3345,7 +3796,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3358,7 +3809,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3368,7 +3818,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" @@ -3381,7 +3831,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.0" @@ -3397,7 +3847,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3410,7 +3860,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" @@ -3426,7 +3876,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -3537,7 +3987,6 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, "license": "MIT", "engines": { "node": ">= 4" @@ -3547,7 +3996,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -3564,7 +4012,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "devOptional": true, "license": "MIT", "engines": { "node": ">=0.8.19" @@ -3585,7 +4032,6 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -3596,7 +4042,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "devOptional": true, "license": "ISC" }, "node_modules/ini": { @@ -3610,7 +4055,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -3635,7 +4080,7 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -3653,7 +4098,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "async-function": "^1.0.0", @@ -3673,7 +4118,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "has-bigints": "^1.0.2" @@ -3702,7 +4147,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -3715,11 +4160,32 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "node_modules/is-bun-module/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3732,7 +4198,7 @@ "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -3748,7 +4214,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -3766,7 +4232,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -3783,7 +4249,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -3793,7 +4258,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3" @@ -3809,6 +4274,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -3818,7 +4284,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.4", @@ -3838,7 +4304,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -3858,7 +4323,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3871,7 +4336,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3901,7 +4366,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -3918,7 +4383,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3938,7 +4402,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -3957,7 +4421,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3970,7 +4434,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3" @@ -3986,7 +4450,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -4003,7 +4467,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -4021,7 +4485,7 @@ "version": "1.1.15", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "which-typed-array": "^1.1.16" @@ -4050,7 +4514,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -4063,7 +4527,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3" @@ -4079,7 +4543,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -4096,7 +4560,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/isexe": { @@ -4152,8 +4616,8 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "devOptional": true, "license": "BlueOak-1.0.0", + "optional": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -4175,7 +4639,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -4201,7 +4664,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, "license": "MIT" }, "node_modules/json-schema-traverse": { @@ -4215,7 +4677,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, "license": "MIT" }, "node_modules/json5": { @@ -4242,7 +4703,6 @@ "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, "license": "MIT", "dependencies": { "json-buffer": "3.0.1" @@ -4262,7 +4722,6 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", @@ -4293,7 +4752,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, "license": "MIT", "dependencies": { "p-locate": "^5.0.0" @@ -4309,7 +4767,6 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, "license": "MIT" }, "node_modules/log-symbols": { @@ -4406,7 +4863,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -4429,7 +4886,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -4449,11 +4905,11 @@ } }, "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "devOptional": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } @@ -4834,6 +5290,21 @@ } } }, + "node_modules/msw/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/msw/node_modules/type-fest": { "version": "5.4.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.4.3.tgz", @@ -4850,6 +5321,43 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/msw/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/msw/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/mute-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", @@ -4874,11 +5382,25 @@ "license": "MIT", "optional": true }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, "license": "MIT" }, "node_modules/nearley": { @@ -5147,7 +5669,7 @@ "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -5160,7 +5682,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -5170,7 +5692,7 @@ "version": "4.1.7", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -5191,7 +5713,7 @@ "version": "2.0.8", "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -5210,7 +5732,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -5225,7 +5747,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -5244,7 +5766,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "devOptional": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -5254,7 +5775,6 @@ "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, "license": "MIT", "dependencies": { "deep-is": "^0.1.3", @@ -5279,7 +5799,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.6", @@ -5297,7 +5817,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" @@ -5313,7 +5832,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, "license": "MIT", "dependencies": { "p-limit": "^3.0.2" @@ -5345,8 +5863,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "devOptional": true, - "license": "BlueOak-1.0.0" + "license": "BlueOak-1.0.0", + "optional": true }, "node_modules/packageurl-js": { "version": "1.0.2", @@ -5358,7 +5876,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "license": "MIT", "dependencies": { "callsites": "^3.0.0" @@ -5371,7 +5888,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5381,7 +5897,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -5391,7 +5906,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -5401,15 +5915,15 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "devOptional": true, "license": "BlueOak-1.0.0", + "optional": true, "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -5425,8 +5939,8 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "devOptional": true, - "license": "ISC" + "license": "ISC", + "optional": true }, "node_modules/path-to-regexp": { "version": "6.3.0", @@ -5469,7 +5983,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -5506,7 +6020,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.8.0" @@ -5551,7 +6064,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -5561,7 +6073,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -5667,7 +6178,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -5690,7 +6201,7 @@ "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -5711,6 +6222,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -5730,7 +6242,7 @@ "version": "1.22.11", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "is-core-module": "^2.16.1", @@ -5751,12 +6263,20 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -5788,7 +6308,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -5800,7 +6319,6 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, "license": "ISC", "dependencies": { "glob": "^7.1.3" @@ -5817,7 +6335,6 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -5838,7 +6355,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -5862,7 +6378,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -5903,7 +6419,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -5920,7 +6436,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -5955,7 +6471,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, + "devOptional": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -5975,7 +6491,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -5993,7 +6509,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -6009,7 +6525,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", @@ -6024,7 +6540,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "devOptional": true, "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -6037,7 +6552,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -6047,7 +6561,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -6067,7 +6581,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -6084,7 +6598,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -6103,7 +6617,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -6306,6 +6820,15 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/stable-hash-x": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.2.0.tgz", + "integrity": "sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/statuses": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", @@ -6320,7 +6843,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -6351,6 +6874,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "devOptional": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -6366,8 +6890,8 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "devOptional": true, "license": "MIT", + "optional": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -6381,7 +6905,7 @@ "version": "1.2.10", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -6403,7 +6927,7 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -6422,7 +6946,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -6453,8 +6977,8 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "devOptional": true, "license": "MIT", + "optional": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -6466,7 +6990,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=4" @@ -6476,7 +7000,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -6501,7 +7024,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -6514,7 +7036,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -6636,62 +7158,99 @@ "optional": true }, "node_modules/test-exclude": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", - "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-8.0.0.tgz", + "integrity": "sha512-ZOffsNrXYggvU1mDGHk54I96r26P8SyMjO5slMKSc7+IWmtB/MQKnEC2fP51imB3/pT6YK5cT5E8f+Dd9KdyOQ==", "dev": true, "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", - "glob": "^10.4.1", - "minimatch": "^9.0.4" + "glob": "^13.0.6", + "minimatch": "^10.2.2" }, "engines": { - "node": ">=18" + "node": "20 || >=22" + } + }, + "node_modules/test-exclude/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/test-exclude/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/test-exclude/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/test-exclude/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -6701,9 +7260,53 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, "license": "MIT" }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tldts": { "version": "7.0.21", "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.21.tgz", @@ -6754,7 +7357,7 @@ "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", @@ -6767,7 +7370,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "minimist": "^1.2.0" @@ -6776,6 +7379,13 @@ "json5": "lib/cli.js" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD", + "optional": true + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -6793,7 +7403,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" @@ -6816,7 +7425,6 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -6829,7 +7437,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -6844,7 +7452,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -6864,7 +7472,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", @@ -6886,7 +7494,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -6921,7 +7529,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -6969,6 +7577,40 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, "node_modules/until-async": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/until-async/-/until-async-3.0.2.tgz", @@ -7014,7 +7656,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "devOptional": true, "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" @@ -7071,7 +7712,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "is-bigint": "^1.1.0", @@ -7091,7 +7732,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -7119,7 +7760,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "is-map": "^2.0.3", @@ -7138,7 +7779,7 @@ "version": "1.1.20", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", @@ -7160,7 +7801,6 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -7193,8 +7833,8 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "devOptional": true, "license": "MIT", + "optional": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -7211,7 +7851,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "devOptional": true, "license": "ISC" }, "node_modules/xmlbuilder2": { @@ -7271,27 +7910,27 @@ "license": "ISC" }, "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", + "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", "license": "MIT", "dependencies": { - "cliui": "^8.0.1", + "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", + "string-width": "^7.2.0", "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "yargs-parser": "^22.0.0" }, "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=23" } }, "node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -7313,11 +7952,69 @@ "node": ">=10" } }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "license": "ISC", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" diff --git a/package.json b/package.json index b528b5df..71c71ee1 100644 --- a/package.json +++ b/package.json @@ -46,13 +46,14 @@ "dependencies": { "@babel/core": "^7.23.2", "@cyclonedx/cyclonedx-library": "^6.13.0", + "eslint-import-resolver-typescript": "^4.4.4", "fast-toml": "^0.5.4", "fast-xml-parser": "^5.3.4", "help": "^3.0.2", "https-proxy-agent": "^7.0.6", "node-fetch": "^3.3.2", "packageurl-js": "~1.0.2", - "yargs": "^17.7.2" + "yargs": "^18.0.0" }, "devDependencies": { "@babel/core": "^7.23.2", @@ -60,7 +61,7 @@ "@types/node": "^20.17.30", "@types/which": "^3.0.4", "babel-plugin-rewire": "^1.2.0", - "c8": "^10.1.3", + "c8": "^11.0.0", "chai": "^4.3.7", "eslint": "^8.42.0", "eslint-plugin-editorconfig": "^4.0.3", From 477151f0c78ed2add0170340459efe1c55cecf77 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Thu, 5 Mar 2026 14:19:48 +0000 Subject: [PATCH 082/102] feat: use tree-sitter to parse requirements.txt more correctly (#391) --- package-lock.json | 414 +++++++++++++----- package.json | 3 + src/analysis.js | 4 +- src/provider.js | 2 +- src/providers/python_controller.js | 135 +++--- src/providers/python_pip.js | 91 ++-- src/providers/requirements_parser.js | 34 ++ src/sbom.js | 10 +- test/providers/python_pip.test.js | 108 ++--- .../expected_component_sbom.json | 24 + .../expected_stack_sbom.json | 24 + .../requirements.txt | 5 + 12 files changed, 554 insertions(+), 300 deletions(-) create mode 100644 src/providers/requirements_parser.js diff --git a/package-lock.json b/package-lock.json index b5f2d807..a4553fe5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,8 @@ "https-proxy-agent": "^7.0.6", "node-fetch": "^3.3.2", "packageurl-js": "~1.0.2", + "tree-sitter-requirements": "github:Strum355/tree-sitter-requirements#d0261ee76b84253997fe70d7d397e78c006c3801", + "web-tree-sitter": "^0.26.6", "yargs": "^18.0.0" }, "bin": { @@ -32,6 +34,7 @@ "c8": "^11.0.0", "chai": "^4.3.7", "eslint": "^8.42.0", + "eslint-import-resolver-typescript": "^4.4.4", "eslint-plugin-editorconfig": "^4.0.3", "eslint-plugin-import": "^2.29.1", "esmock": "^2.6.2", @@ -327,6 +330,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -338,6 +342,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -348,6 +353,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -358,6 +364,7 @@ "version": "4.9.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.4.3" @@ -376,6 +383,7 @@ "version": "4.12.2", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -385,6 +393,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.12.4", @@ -408,6 +417,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -424,12 +434,14 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, "license": "MIT" }, "node_modules/@eslint/js": { "version": "8.57.1", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -440,6 +452,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", "deprecated": "Use @eslint/config-array instead", + "dev": true, "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^2.0.3", @@ -454,6 +467,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=12.22" @@ -468,6 +482,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "deprecated": "Use @eslint/object-schema instead", + "dev": true, "license": "BSD-3-Clause" }, "node_modules/@inquirer/ansi": { @@ -743,6 +758,7 @@ "version": "0.2.12", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -755,6 +771,7 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -768,6 +785,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -777,6 +795,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -934,7 +953,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@sinonjs/commons": { @@ -996,6 +1015,7 @@ "version": "0.10.1", "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -1013,7 +1033,7 @@ "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@types/node": { @@ -1044,6 +1064,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, "license": "ISC" }, "node_modules/@unrs/resolver-binding-android-arm-eabi": { @@ -1053,6 +1074,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1066,6 +1088,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1079,6 +1102,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1092,6 +1116,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1105,6 +1130,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1118,6 +1144,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1131,6 +1158,7 @@ "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1144,6 +1172,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1157,6 +1186,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1170,6 +1200,7 @@ "cpu": [ "ppc64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1183,6 +1214,7 @@ "cpu": [ "riscv64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1196,6 +1228,7 @@ "cpu": [ "riscv64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1209,6 +1242,7 @@ "cpu": [ "s390x" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1222,6 +1256,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1235,6 +1270,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1248,6 +1284,7 @@ "cpu": [ "wasm32" ], + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -1264,6 +1301,7 @@ "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1277,6 +1315,7 @@ "cpu": [ "ia32" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1290,6 +1329,7 @@ "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1310,6 +1350,7 @@ "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -1322,6 +1363,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -1415,6 +1457,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -1424,6 +1467,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -1453,13 +1497,14 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, "license": "Python-2.0" }, "node_modules/array-buffer-byte-length": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -1476,7 +1521,7 @@ "version": "3.1.9", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -1499,7 +1544,7 @@ "version": "1.2.6", "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -1521,7 +1566,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -1540,7 +1585,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -1559,7 +1604,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", @@ -1591,7 +1636,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -1601,7 +1646,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" @@ -1624,6 +1669,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "devOptional": true, "license": "MIT" }, "node_modules/base64-js": { @@ -1696,6 +1742,7 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -1949,7 +1996,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.0", @@ -1968,7 +2015,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -1982,7 +2029,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -1999,6 +2046,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -2061,6 +2109,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -2251,6 +2300,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -2263,6 +2313,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "devOptional": true, "license": "MIT" }, "node_modules/commander": { @@ -2279,6 +2330,7 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, "license": "MIT" }, "node_modules/convert-source-map": { @@ -2306,6 +2358,7 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "devOptional": true, "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -2320,12 +2373,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "devOptional": true, "license": "ISC" }, "node_modules/cross-spawn/node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "devOptional": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -2350,7 +2405,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -2368,7 +2423,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -2386,7 +2441,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -2473,13 +2528,14 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, "license": "MIT" }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", @@ -2497,7 +2553,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", @@ -2542,6 +2598,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" @@ -2554,7 +2611,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", @@ -2685,7 +2742,7 @@ "version": "1.24.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.2", @@ -2754,7 +2811,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -2764,7 +2821,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -2774,7 +2831,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -2787,7 +2844,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -2803,7 +2860,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -2816,7 +2873,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "is-callable": "^1.2.7", @@ -2843,6 +2900,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -2856,6 +2914,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", @@ -2911,6 +2970,7 @@ "version": "0.1.9", "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.9.tgz", "integrity": "sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==", + "dev": true, "license": "MIT", "dependencies": { "get-tsconfig": "^4.10.1", @@ -2935,7 +2995,7 @@ "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "debug": "^3.2.7", @@ -2947,7 +3007,7 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.1" @@ -2957,6 +3017,7 @@ "version": "4.4.4", "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.4.4.tgz", "integrity": "sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==", + "dev": true, "license": "ISC", "dependencies": { "debug": "^4.4.1", @@ -2991,7 +3052,7 @@ "version": "2.12.1", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "debug": "^3.2.7" @@ -3009,7 +3070,7 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.1" @@ -3035,7 +3096,7 @@ "version": "2.32.0", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@rtsao/scc": "^1.1.0", @@ -3069,7 +3130,7 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.1" @@ -3079,7 +3140,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" @@ -3092,6 +3153,7 @@ "version": "7.2.2", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", @@ -3108,6 +3170,7 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3120,6 +3183,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -3136,6 +3200,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, "license": "MIT" }, "node_modules/esmock": { @@ -3152,6 +3217,7 @@ "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", @@ -3183,6 +3249,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" @@ -3195,6 +3262,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" @@ -3207,6 +3275,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=4.0" @@ -3216,6 +3285,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" @@ -3249,18 +3319,21 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "devOptional": true, "license": "MIT" }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, "license": "MIT" }, "node_modules/fast-toml": { @@ -3308,6 +3381,7 @@ "version": "1.20.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -3340,6 +3414,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" @@ -3372,6 +3447,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^6.0.0", @@ -3398,6 +3474,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, "license": "MIT", "dependencies": { "flatted": "^3.2.9", @@ -3412,13 +3489,14 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, "license": "ISC" }, "node_modules/for-each": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "is-callable": "^1.2.7" @@ -3483,6 +3561,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, "license": "ISC" }, "node_modules/fsevents": { @@ -3504,7 +3583,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "devOptional": true, + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3514,7 +3593,7 @@ "version": "1.1.8", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -3535,7 +3614,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "devOptional": true, + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3545,7 +3624,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3596,7 +3675,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -3621,7 +3700,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", @@ -3635,7 +3714,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -3653,6 +3732,7 @@ "version": "4.13.6", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", + "dev": true, "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -3693,6 +3773,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.3" @@ -3728,6 +3809,7 @@ "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.20.2" @@ -3743,7 +3825,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "define-properties": "^1.2.1", @@ -3760,7 +3842,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3780,6 +3862,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, "license": "MIT" }, "node_modules/graphql": { @@ -3796,7 +3879,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3809,6 +3892,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3818,7 +3902,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" @@ -3831,7 +3915,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.0" @@ -3847,7 +3931,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -3860,7 +3944,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" @@ -3876,7 +3960,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -3987,6 +4071,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 4" @@ -3996,6 +4081,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -4012,6 +4098,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.8.19" @@ -4032,6 +4119,7 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, "license": "ISC", "dependencies": { "once": "^1.3.0", @@ -4042,6 +4130,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "devOptional": true, "license": "ISC" }, "node_modules/ini": { @@ -4055,7 +4144,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -4080,7 +4169,7 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -4098,7 +4187,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "async-function": "^1.0.0", @@ -4118,7 +4207,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "has-bigints": "^1.0.2" @@ -4147,7 +4236,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -4164,6 +4253,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, "license": "MIT", "dependencies": { "semver": "^7.7.1" @@ -4173,6 +4263,7 @@ "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4185,7 +4276,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -4198,7 +4289,7 @@ "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -4214,7 +4305,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -4232,7 +4323,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -4249,6 +4340,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -4258,7 +4350,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3" @@ -4284,7 +4376,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.4", @@ -4304,6 +4396,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -4323,7 +4416,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -4336,7 +4429,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -4366,7 +4459,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -4383,6 +4476,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -4402,7 +4496,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -4421,7 +4515,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -4434,7 +4528,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3" @@ -4450,7 +4544,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -4467,7 +4561,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -4485,7 +4579,7 @@ "version": "1.1.15", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "which-typed-array": "^1.1.16" @@ -4514,7 +4608,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -4527,7 +4621,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3" @@ -4543,7 +4637,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -4560,7 +4654,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/isexe": { @@ -4639,6 +4733,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -4664,6 +4759,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, "license": "MIT" }, "node_modules/json-schema-traverse": { @@ -4677,6 +4773,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, "license": "MIT" }, "node_modules/json5": { @@ -4703,6 +4800,7 @@ "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, "license": "MIT", "dependencies": { "json-buffer": "3.0.1" @@ -4722,6 +4820,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", @@ -4752,6 +4851,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^5.0.0" @@ -4767,6 +4867,7 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, "license": "MIT" }, "node_modules/log-symbols": { @@ -4863,7 +4964,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -4886,6 +4987,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -5386,6 +5488,7 @@ "version": "0.3.4", "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, "license": "MIT", "bin": { "napi-postinstall": "lib/cli.js" @@ -5401,6 +5504,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, "license": "MIT" }, "node_modules/nearley": { @@ -5493,6 +5597,15 @@ "node": ">=10" } }, + "node_modules/node-addon-api": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.5.0.tgz", + "integrity": "sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A==", + "license": "MIT", + "engines": { + "node": "^18 || ^20 || >= 21" + } + }, "node_modules/node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", @@ -5556,6 +5669,17 @@ "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, "node_modules/node-gyp/node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", @@ -5669,7 +5793,7 @@ "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -5682,7 +5806,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -5692,7 +5816,7 @@ "version": "4.1.7", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -5713,7 +5837,7 @@ "version": "2.0.8", "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -5732,7 +5856,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -5747,7 +5871,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -5766,6 +5890,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "devOptional": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -5775,6 +5900,7 @@ "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, "license": "MIT", "dependencies": { "deep-is": "^0.1.3", @@ -5799,7 +5925,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.6", @@ -5817,6 +5943,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" @@ -5832,6 +5959,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, "license": "MIT", "dependencies": { "p-limit": "^3.0.2" @@ -5876,6 +6004,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, "license": "MIT", "dependencies": { "callsites": "^3.0.0" @@ -5888,6 +6017,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -5897,6 +6027,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -5906,6 +6037,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -5915,7 +6047,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/path-scurry": { @@ -5983,7 +6115,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -6020,6 +6152,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.8.0" @@ -6064,6 +6197,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -6073,6 +6207,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, "funding": [ { "type": "github", @@ -6178,7 +6313,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -6201,7 +6336,7 @@ "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -6242,7 +6377,7 @@ "version": "1.22.11", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "is-core-module": "^2.16.1", @@ -6263,6 +6398,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -6272,6 +6408,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" @@ -6308,6 +6445,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -6319,6 +6457,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, "license": "ISC", "dependencies": { "glob": "^7.1.3" @@ -6335,6 +6474,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -6355,6 +6495,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, "funding": [ { "type": "github", @@ -6378,7 +6519,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -6419,7 +6560,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -6436,7 +6577,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -6471,7 +6612,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "devOptional": true, + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -6491,7 +6632,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -6509,7 +6650,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -6525,7 +6666,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", @@ -6540,6 +6681,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "devOptional": true, "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -6552,6 +6694,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" @@ -6561,7 +6704,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -6581,7 +6724,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -6598,7 +6741,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -6617,7 +6760,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -6824,6 +6967,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.2.0.tgz", "integrity": "sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=12.0.0" @@ -6843,7 +6987,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -6905,7 +7049,7 @@ "version": "1.2.10", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -6927,7 +7071,7 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -6946,7 +7090,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -6964,6 +7108,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "devOptional": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -6990,7 +7135,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -7000,6 +7145,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7024,6 +7170,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -7036,7 +7183,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -7260,12 +7407,14 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, "license": "MIT" }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", @@ -7282,6 +7431,7 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12.0.0" @@ -7299,6 +7449,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -7353,11 +7504,32 @@ "node": ">=16" } }, + "node_modules/tree-sitter-requirements": { + "version": "0.5.0", + "resolved": "git+ssh://git@github.com/Strum355/tree-sitter-requirements.git#d0261ee76b84253997fe70d7d397e78c006c3801", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^8.3.1", + "node-gyp-build": "^4.8.4" + }, + "funding": { + "url": "https://github.com/sponsors/ObserverOfTime" + }, + "peerDependencies": { + "tree-sitter": "^0.22.4" + }, + "peerDependenciesMeta": { + "tree-sitter": { + "optional": true + } + } + }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", @@ -7370,7 +7542,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "minimist": "^1.2.0" @@ -7383,6 +7555,7 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, "license": "0BSD", "optional": true }, @@ -7403,6 +7576,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" @@ -7425,6 +7599,7 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -7437,7 +7612,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -7452,7 +7627,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -7472,7 +7647,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", @@ -7494,7 +7669,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -7529,7 +7704,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -7581,6 +7756,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -7656,6 +7832,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "devOptional": true, "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" @@ -7692,6 +7869,12 @@ "node": ">= 8" } }, + "node_modules/web-tree-sitter": { + "version": "0.26.6", + "resolved": "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.26.6.tgz", + "integrity": "sha512-fSPR7VBW/fZQdUSp/bXTDLT+i/9dwtbnqgEBMzowrM4U3DzeCwDbY3MKo0584uQxID4m/1xpLflrlT/rLIRPew==", + "license": "MIT" + }, "node_modules/which": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", @@ -7712,7 +7895,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "is-bigint": "^1.1.0", @@ -7732,7 +7915,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -7760,7 +7943,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "is-map": "^2.0.3", @@ -7779,7 +7962,7 @@ "version": "1.1.20", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", @@ -7801,6 +7984,7 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -7851,6 +8035,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "devOptional": true, "license": "ISC" }, "node_modules/xmlbuilder2": { @@ -8015,6 +8200,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" diff --git a/package.json b/package.json index 71c71ee1..1df61e7e 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,8 @@ "https-proxy-agent": "^7.0.6", "node-fetch": "^3.3.2", "packageurl-js": "~1.0.2", + "tree-sitter-requirements": "github:Strum355/tree-sitter-requirements#d0261ee76b84253997fe70d7d397e78c006c3801", + "web-tree-sitter": "^0.26.6", "yargs": "^18.0.0" }, "devDependencies": { @@ -64,6 +66,7 @@ "c8": "^11.0.0", "chai": "^4.3.7", "eslint": "^8.42.0", + "eslint-import-resolver-typescript": "^4.4.4", "eslint-plugin-editorconfig": "^4.0.3", "eslint-plugin-import": "^2.29.1", "esmock": "^2.6.2", diff --git a/src/analysis.js b/src/analysis.js index 6464df64..614c1f2d 100644 --- a/src/analysis.js +++ b/src/analysis.js @@ -41,7 +41,7 @@ function addProxyAgent(options, opts) { async function requestStack(provider, manifest, url, html = false, opts = {}) { opts["source-manifest"] = Buffer.from(fs.readFileSync(manifest).toString()).toString('base64') opts["manifest-type"] = path.parse(manifest).base - let provided = provider.provideStack(manifest, opts) // throws error if content providing failed + let provided = await provider.provideStack(manifest, opts) // throws error if content providing failed opts["source-manifest"] = "" opts[rhdaOperationTypeHeader.toUpperCase().replaceAll("-", "_")] = "stack-analysis" let startTime = new Date() @@ -105,7 +105,7 @@ async function requestStack(provider, manifest, url, html = false, opts = {}) { async function requestComponent(provider, manifest, url, opts = {}) { opts["source-manifest"] = Buffer.from(fs.readFileSync(manifest).toString()).toString('base64') - let provided = provider.provideComponent(manifest, opts) // throws error if content providing failed + let provided = await provider.provideComponent(manifest, opts) // throws error if content providing failed opts["source-manifest"] = "" opts[rhdaOperationTypeHeader.toUpperCase().replaceAll("-", "_")] = "component-analysis" if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { diff --git a/src/provider.js b/src/provider.js index 4bb6c30b..cb57998c 100644 --- a/src/provider.js +++ b/src/provider.js @@ -10,7 +10,7 @@ import Javascript_yarn from './providers/javascript_yarn.js'; import pythonPipProvider from './providers/python_pip.js' /** @typedef {{ecosystem: string, contentType: string, content: string}} Provided */ -/** @typedef {{isSupported: function(string): boolean, validateLockFile: function(string): void, provideComponent: function(string, {}): Provided, provideStack: function(string, {}): Provided}} Provider */ +/** @typedef {{isSupported: function(string): boolean, validateLockFile: function(string): void, provideComponent: function(string, {}): Provided | Promise, provideStack: function(string, {}): Provided | Promise}} Provider */ /** * MUST include all providers here. diff --git a/src/providers/python_controller.js b/src/providers/python_controller.js index e89c770f..1b6cff2d 100644 --- a/src/providers/python_controller.js +++ b/src/providers/python_controller.js @@ -1,8 +1,10 @@ import fs from "node:fs"; import path from 'node:path'; -import os, {EOL} from "os"; +import os, { EOL } from "os"; -import {environmentVariableIsPopulated,getCustom, invokeCommand} from "../tools.js"; +import { environmentVariableIsPopulated, getCustom, invokeCommand } from "../tools.js"; + +import { getParser, getRequirementQuery, getPinnedVersionQuery } from './requirements_parser.js'; function getPipFreezeOutput() { try { @@ -23,13 +25,15 @@ function getPipShowOutput(depNames) { /** @typedef {{name: string, version: string, dependencies: DependencyEntry[]}} DependencyEntry */ export default class Python_controller { - pythonEnvDir pathToPipBin pathToPythonBin realEnvironment pathToRequirements options + parser + requirementsQuery + pinnedVersionQuery /** * Constructor to create new python controller instance to interact with pip package manager @@ -39,14 +43,18 @@ export default class Python_controller { * @param {string} pathToRequirements * @ */ - constructor(realEnvironment,pathToPip,pathToPython,pathToRequirements,options={}) { + constructor(realEnvironment, pathToPip, pathToPython, pathToRequirements, options={}) { this.pathToPythonBin = pathToPython this.pathToPipBin = pathToPip this.realEnvironment= realEnvironment this.prepareEnvironment() this.pathToRequirements = pathToRequirements this.options = options + this.parser = getParser() + this.requirementsQuery = getRequirementQuery() + this.pinnedVersionQuery = getPinnedVersionQuery() } + prepareEnvironment() { if(!this.realEnvironment) { this.pythonEnvDir = path.join(path.sep, "tmp", "trustify_da_env_js") @@ -87,6 +95,24 @@ export default class Python_controller { } } + /** + * Parse the requirements.txt file using tree-sitter and return structured requirement data. + * @return {Promise<{name: string, version: string|null}[]>} + */ + async #parseRequirements() { + const content = fs.readFileSync(this.pathToRequirements).toString(); + const tree = (await this.parser).parse(content); + return Promise.all((await this.requirementsQuery).matches(tree.rootNode).map(async (match) => { + const reqNode = match.captures.find(c => c.name === 'req').node; + const name = match.captures.find(c => c.name === 'name').node.text; + const versionMatches = (await this.pinnedVersionQuery).matches(reqNode); + const version = versionMatches.length > 0 + ? versionMatches[0].captures.find(c => c.name === 'version').node.text + : null; + return { name, version }; + })); + } + #decideIfWindowsOrLinuxPath(fileName) { if (os.platform() === "win32") { return fileName + ".exe" @@ -97,9 +123,9 @@ export default class Python_controller { /** * * @param {boolean} includeTransitive - whether to return include in returned object transitive dependencies or not - * @return {[DependencyEntry]} + * @return {Promise<[DependencyEntry]>} */ - getDependencies(includeTransitive) { + async getDependencies(includeTransitive) { let startingTime let endingTime if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { @@ -123,10 +149,10 @@ export default class Python_controller { if(matchManifestVersions === "true") { throw new Error("Conflicting settings, TRUSTIFY_DA_PYTHON_INSTALL_BEST_EFFORTS=true can only work with MATCH_MANIFEST_VERSIONS=false") } - this.#installingRequirementsOneByOne() + await this.#installingRequirementsOneByOne() } } - let dependencies = this.#getDependenciesImpl(includeTransitive) + let dependencies = await this.#getDependenciesImpl(includeTransitive) this.#cleanEnvironment() if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { endingTime = new Date() @@ -137,15 +163,13 @@ export default class Python_controller { return dependencies } - #installingRequirementsOneByOne() { - let requirementsContent = fs.readFileSync(this.pathToRequirements); - let requirementsRows = requirementsContent.toString().split(EOL); - requirementsRows.filter((line) => !line.trim().startsWith("#")).filter((line) => line.trim() !== "").forEach( (dependency) => { - let dependencyName = getDependencyName(dependency); + async #installingRequirementsOneByOne() { + const requirements = await this.#parseRequirements(); + requirements.forEach(({name}) => { try { - invokeCommand(this.pathToPipBin, ['install', dependencyName]) + invokeCommand(this.pathToPipBin, ['install', name]) } catch (error) { - throw new Error(`Failed in best-effort installing ${dependencyName} in virtual python environment`, {cause: error}) + throw new Error(`Failed in best-effort installing ${name} in virtual python environment`, {cause: error}) } }) } @@ -162,44 +186,33 @@ export default class Python_controller { } } - #getDependenciesImpl(includeTransitive) { - let dependencies = new Array() + async #getDependenciesImpl(includeTransitive) { + let dependencies = [] let usePipDepTree = getCustom("TRUSTIFY_DA_PIP_USE_DEP_TREE","false",this.options); - let freezeOutput - let lines - let depNames - let pipShowOutput let allPipShowDeps let pipDepTreeJsonArrayOutput if(usePipDepTree !== "true") { - freezeOutput = getPipFreezeOutput.call(this); - lines = freezeOutput.split(EOL) - depNames = lines.map( line => getDependencyName(line)) - } - else { - pipDepTreeJsonArrayOutput = getDependencyTreeJsonFromPipDepTree(this.pathToPipBin,this.pathToPythonBin) - } - - - if(usePipDepTree !== "true") { - pipShowOutput = getPipShowOutput.call(this, depNames); + const freezeOutput = getPipFreezeOutput.call(this); + const lines = freezeOutput.split(EOL) + const depNames = lines.map( line => getDependencyName(line)) + const pipShowOutput = getPipShowOutput.call(this, depNames); allPipShowDeps = pipShowOutput.split( EOL + "---" + EOL); + } else { + pipDepTreeJsonArrayOutput = getDependencyTreeJsonFromPipDepTree(this.pathToPipBin,this.pathToPythonBin) } - //debug - // pipShowOutput = "alternative pip show output goes here for debugging" let matchManifestVersions = getCustom("MATCH_MANIFEST_VERSIONS","true",this.options); - let linesOfRequirements = fs.readFileSync(this.pathToRequirements).toString().split(EOL).filter( (line) => !line.trim().startsWith("#")).map(line => line.trim()) + let parsedRequirements = await this.#parseRequirements() let CachedEnvironmentDeps = {} if(usePipDepTree !== "true") { - allPipShowDeps.forEach((record) => { + allPipShowDeps.forEach(record => { let dependencyName = getDependencyNameShow(record).toLowerCase() CachedEnvironmentDeps[dependencyName] = record CachedEnvironmentDeps[dependencyName.replace("-", "_")] = record CachedEnvironmentDeps[dependencyName.replace("_", "-")] = record }) } else { - pipDepTreeJsonArrayOutput.forEach( depTreeEntry => { + pipDepTreeJsonArrayOutput.forEach(depTreeEntry => { let packageName = depTreeEntry["package"]["package_name"].toLowerCase() let pipDepTreeEntryForCache = { name: packageName, @@ -211,41 +224,25 @@ export default class Python_controller { CachedEnvironmentDeps[packageName.replace("_", "-")] = pipDepTreeEntryForCache }) } - linesOfRequirements.forEach( (dep) => { - // if matchManifestVersions setting is turned on , then - if(matchManifestVersions === "true") { - let dependencyName - let manifestVersion + parsedRequirements.forEach(({ name: depName, version: manifestVersion }) => { + if(matchManifestVersions === "true" && manifestVersion != null) { let installedVersion - let doubleEqualSignPosition - if(dep.includes("==")) { - doubleEqualSignPosition = dep.indexOf("==") - manifestVersion = dep.substring(doubleEqualSignPosition + 2).trim() - if(manifestVersion.includes("#")) { - let hashCharIndex = manifestVersion.indexOf("#"); - manifestVersion = manifestVersion.substring(0,hashCharIndex) + if(CachedEnvironmentDeps[depName.toLowerCase()] !== undefined) { + if(usePipDepTree !== "true") { + installedVersion = getDependencyVersion(CachedEnvironmentDeps[depName.toLowerCase()]) + } else { + installedVersion = CachedEnvironmentDeps[depName.toLowerCase()].version } - dependencyName = getDependencyName(dep) - // only compare between declared version in manifest to installed version , if the package is installed. - if(CachedEnvironmentDeps[dependencyName.toLowerCase()] !== undefined) { - if(usePipDepTree !== "true") { - installedVersion = getDependencyVersion(CachedEnvironmentDeps[dependencyName.toLowerCase()]) - } else { - installedVersion = CachedEnvironmentDeps[dependencyName.toLowerCase()].version - } - } - if(installedVersion) { - if (manifestVersion.trim() !== installedVersion.trim()) { - throw new Error(`Can't continue with analysis - versions mismatch for dependency name ${dependencyName} (manifest version=${manifestVersion}, installed version=${installedVersion}).If you want to allow version mismatch for analysis between installed and requested packages, set environment variable/setting MATCH_MANIFEST_VERSIONS=false`) - } + } + if(installedVersion) { + if (manifestVersion.trim() !== installedVersion.trim()) { + throw new Error(`Can't continue with analysis - versions mismatch for dependency name ${depName} (manifest version=${manifestVersion}, installed version=${installedVersion}).If you want to allow version mismatch for analysis between installed and requested packages, set environment variable/setting MATCH_MANIFEST_VERSIONS=false`) } } } - let path = new Array() - let depName = getDependencyName(dep) - //array to track a path for each branch in the dependency tree + let path = [] path.push(depName.toLowerCase()) - bringAllDependencies(dependencies,depName,CachedEnvironmentDeps,includeTransitive,path,usePipDepTree) + bringAllDependencies(dependencies, depName, CachedEnvironmentDeps, includeTransitive, path, usePipDepTree) }) dependencies.sort((dep1,dep2) =>{ const DEP1 = dep1.name.toLowerCase() @@ -350,12 +347,12 @@ function bringAllDependencies(dependencies, dependencyName, cachedEnvironmentDep version = record.version directDeps = record.dependencies } - let targetDeps = new Array() + let targetDeps = [] - let entry = { "name" : depName , "version" : version, "dependencies" : [] } + let entry = { "name": depName, "version": version, "dependencies": [] } dependencies.push(entry) directDeps.forEach( (dep) => { - let depArray = new Array() + let depArray = [] // to avoid infinite loop, check if the dependency not already on current path, before going recursively resolving its dependencies. if(!path.includes(dep.toLowerCase())) { // send to recurrsion the path + the current dep diff --git a/src/providers/python_pip.js b/src/providers/python_pip.js index 08d2a543..8336e4a3 100644 --- a/src/providers/python_pip.js +++ b/src/providers/python_pip.js @@ -1,5 +1,4 @@ import fs from 'node:fs' -import { EOL } from 'os' import { PackageURL } from 'packageurl-js' @@ -11,8 +10,8 @@ import { invokeCommand } from "../tools.js"; - import Python_controller from './python_controller.js' +import { getParser, getIgnoreQuery, getPinnedVersionQuery } from './requirements_parser.js' export default { isSupported, validateLockFile, provideComponent, provideStack } @@ -41,12 +40,12 @@ function validateLockFile() { return true; } * Provide content and content type for python-pip stack analysis. * @param {string} manifest - the manifest path or name * @param {{}} [opts={}] - optional various options to pass along the application - * @returns {Provided} + * @returns {Promise} */ -function provideStack(manifest, opts = {}) { +async function provideStack(manifest, opts = {}) { return { ecosystem, - content: createSbomStackAnalysis(manifest, opts), + content: await createSbomStackAnalysis(manifest, opts), contentType: 'application/vnd.cyclonedx+json' } } @@ -55,12 +54,12 @@ function provideStack(manifest, opts = {}) { * Provide content and content type for python-pip component analysis. * @param {string} manifest - path to requirements.txt for component report * @param {{}} [opts={}] - optional various options to pass along the application - * @returns {Provided} + * @returns {Promise} */ -function provideComponent(manifest, opts = {}) { +async function provideComponent(manifest, opts = {}) { return { ecosystem, - content: getSbomForComponentAnalysis(manifest, opts), + content: await getSbomForComponentAnalysis(manifest, opts), contentType: 'application/vnd.cyclonedx+json' } } @@ -79,57 +78,41 @@ function addAllDependencies(source, dep, sbom) { sbom.addDependency(source, targetPurl) let directDeps = dep["dependencies"] if (directDeps !== undefined && directDeps.length > 0) { - directDeps.forEach( (dependency) =>{ addAllDependencies(toPurl(dep["name"],dep["version"]), dependency, sbom)}) - } -} - -/** - * - * @param nameVersion - * @return {string} - */ -function splitToNameVersion(nameVersion) { - let result = [] - if(nameVersion.includes("==")) { - return nameVersion.split("==") - } - const regex = /[^\w\s-_]/g; - let endIndex = nameVersion.search(regex); - if(endIndex === -1) { - return [nameVersion.trim()] + directDeps.forEach((dependency) => { addAllDependencies(toPurl(dep["name"],dep["version"]), dependency, sbom) }) } - result.push(nameVersion.substring(0, endIndex).trim()) - return result; } /** * - * @param {string} requirementTxtContent + * @param {string} manifest - path to requirements.txt * @return {PackageURL []} */ -function getIgnoredDependencies(requirementTxtContent) { - let requirementsLines = requirementTxtContent.split(EOL) - return requirementsLines - .filter(line => line.includes("#exhortignore") || line.includes("# exhortignore")) - .map((line) => line.substring(0,line.indexOf("#")).trim()) - .map((name) => { - let nameVersion = splitToNameVersion(name); - if(nameVersion.length === 2) { - return toPurl(nameVersion[0],nameVersion[1]) - } - return toPurl(nameVersion[0], undefined); - }) +async function getIgnoredDependencies(manifest) { + const [parser, ignoreQuery, pinnedVersionQuery] = await Promise.all([ + getParser(), getIgnoreQuery(), getPinnedVersionQuery() + ]); + const content = fs.readFileSync(manifest).toString(); + const tree = parser.parse(content); + return ignoreQuery.matches(tree.rootNode).map(match => { + const reqNode = match.captures.find(c => c.name === 'req').node; + const name = match.captures.find(c => c.name === 'name').node.text; + const versionMatches = pinnedVersionQuery.matches(reqNode); + const version = versionMatches.length > 0 + ? versionMatches[0].captures.find(c => c.name === 'version').node.text + : undefined; + return toPurl(name, version); + }) } /** * - * @param {string} requirementTxtContent content of requirments.txt in string + * @param {string} manifest - path to requirements.txt * @param {Sbom} sbom object to filter out from it exhortignore dependencies. * @param {{Object}} opts - various options and settings for the application * @private */ -function handleIgnoredDependencies(requirementTxtContent, sbom, opts ={}) { - let ignoredDeps = getIgnoredDependencies(requirementTxtContent) +async function handleIgnoredDependencies(manifest, sbom, opts = {}) { + let ignoredDeps = await getIgnoredDependencies(manifest) let matchManifestVersions = getCustom("MATCH_MANIFEST_VERSIONS", "true", opts); if(matchManifestVersions === "true") { const ignoredDepsVersion = ignoredDeps.filter(dep => dep.version !== undefined); @@ -145,7 +128,7 @@ function handleIgnoredDependencies(requirementTxtContent, sbom, opts ={}) { * @param {object}binaries * @param {{}} [opts={}] */ -function getPythonPipBinaries(binaries,opts) { +function getPythonPipBinaries(binaries, opts) { let python = getCustomPath("python3", opts) let pip = getCustomPath("pip3", opts) try { @@ -195,23 +178,22 @@ const DEFAULT_PIP_ROOT_COMPONENT_VERSION = "0.0.0"; * Create sbom json string out of a manifest path for stack analysis. * @param {string} manifest - path for requirements.txt * @param {{}} [opts={}] - optional various options to pass along the application - * @returns {string} the sbom json string content + * @returns {Promise} the sbom json string content * @private */ -function createSbomStackAnalysis(manifest, opts = {}) { +async function createSbomStackAnalysis(manifest, opts = {}) { let binaries = {} let createVirtualPythonEnv = handlePythonEnvironment(binaries, opts); let pythonController = new Python_controller(createVirtualPythonEnv === "false", binaries.pip, binaries.python, manifest, opts) - let dependencies = pythonController.getDependencies(true); + let dependencies = await pythonController.getDependencies(true); let sbom = new Sbom(); const rootPurl = toPurl(DEFAULT_PIP_ROOT_COMPONENT_NAME, DEFAULT_PIP_ROOT_COMPONENT_VERSION); sbom.addRoot(rootPurl); dependencies.forEach(dep => { addAllDependencies(rootPurl, dep, sbom) }) - let requirementTxtContent = fs.readFileSync(manifest).toString(); - handleIgnoredDependencies(requirementTxtContent, sbom, opts) + await handleIgnoredDependencies(manifest, sbom, opts) // In python there is no root component, then we must remove the dummy root we added, so the sbom json will be accepted by the DA backend // sbom.removeRootComponent() return sbom.getAsJsonString(opts) @@ -221,22 +203,21 @@ function createSbomStackAnalysis(manifest, opts = {}) { * Create a sbom json string out of a manifest content for component analysis * @param {string} manifest - path to requirements.txt * @param {{}} [opts={}] - optional various options to pass along the application - * @returns {string} the sbom json string content + * @returns {Promise} the sbom json string content * @private */ -function getSbomForComponentAnalysis(manifest, opts = {}) { +async function getSbomForComponentAnalysis(manifest, opts = {}) { let binaries = {} let createVirtualPythonEnv = handlePythonEnvironment(binaries, opts); let pythonController = new Python_controller(createVirtualPythonEnv === "false", binaries.pip, binaries.python, manifest, opts) - let dependencies = pythonController.getDependencies(false); + let dependencies = await pythonController.getDependencies(false); let sbom = new Sbom(); const rootPurl = toPurl(DEFAULT_PIP_ROOT_COMPONENT_NAME, DEFAULT_PIP_ROOT_COMPONENT_VERSION); sbom.addRoot(rootPurl); dependencies.forEach(dep => { sbom.addDependency(rootPurl, toPurl(dep.name, dep.version)) }) - let requirementTxtContent = fs.readFileSync(manifest).toString(); - handleIgnoredDependencies(requirementTxtContent, sbom, opts) + await handleIgnoredDependencies(manifest, sbom, opts) // In python there is no root component, then we must remove the dummy root we added, so the sbom json will be accepted by the DA backend // sbom.removeRootComponent() return sbom.getAsJsonString(opts) diff --git a/src/providers/requirements_parser.js b/src/providers/requirements_parser.js new file mode 100644 index 00000000..db486e4f --- /dev/null +++ b/src/providers/requirements_parser.js @@ -0,0 +1,34 @@ +import { createRequire } from 'node:module'; + +import { Language, Parser, Query } from 'web-tree-sitter'; + +const require = createRequire(import.meta.url); + +async function init() { + await Parser.init({ + locateFile() { + return require.resolve('web-tree-sitter/web-tree-sitter.wasm') + } + }); + return await Language.load(require.resolve('tree-sitter-requirements/tree-sitter-requirements.wasm')); +} + +export async function getParser() { + const language = await init(); + return new Parser().setLanguage(language); +} + +export async function getRequirementQuery() { + const language = await init(); + return new Query(language, '(requirement (package) @name) @req'); +} + +export async function getIgnoreQuery() { + const language = await init(); + return new Query(language, '((requirement (package) @name) @req . (comment) @comment (#match? @comment "^#[\\t ]*exhortignore"))'); +} + +export async function getPinnedVersionQuery() { + const language = await init(); + return new Query(language, '(version_spec (version_cmp) @cmp (version) @version (#eq? @cmp "=="))'); +} diff --git a/src/sbom.js b/src/sbom.js index b837e84e..1e4af9b2 100644 --- a/src/sbom.js +++ b/src/sbom.js @@ -16,14 +16,14 @@ export default class Sbom { * @param {PackageURL} root - add main/root component for sbom * @return Sbom */ - addRoot (root) { + addRoot(root) { return this.sbomModel.addRoot(root) } /** * @return {{{"bom-ref": string, name, purl: string, type, version}}} root component of sbom. */ - getRoot (){ + getRoot() { return this.sbomModel.getRoot() } @@ -32,7 +32,7 @@ export default class Sbom { * @param {Array} dependencies to be removed from sbom * @return {Sbom} without ignored dependencies */ - filterIgnoredDeps(deps){ + filterIgnoredDeps(deps) { return this.sbomModel.filterIgnoredDeps(deps) } @@ -71,7 +71,7 @@ export default class Sbom { * @param purl {PackageURL} * @return component */ - purlToComponent(purl){ + purlToComponent(purl) { return this.sbomModel.purlToComponent(purl) } @@ -82,7 +82,7 @@ export default class Sbom { * @return {boolean} */ checkIfPackageInsideDependsOnList(component, name) { - return this.sbomModel.checkIfPackageInsideDependsOnList(component,name) + return this.sbomModel.checkIfPackageInsideDependsOnList(component, name) } /** Removes the root component from the sbom diff --git a/test/providers/python_pip.test.js b/test/providers/python_pip.test.js index 07ef64c5..01d88eaf 100644 --- a/test/providers/python_pip.test.js +++ b/test/providers/python_pip.test.js @@ -8,13 +8,13 @@ import {getCustomPath, invokeCommand } from "../../src/tools.js" let clock -function sharedComponentAnalysisTestFlow(testCase, usePipDepTreeUtility) { +async function sharedComponentAnalysisTestFlow(testCase, usePipDepTreeUtility) { // load the expected list for tsharedComponentAnalysisTestFlowhe scenario let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/pip/${testCase}/expected_component_sbom.json`).toString().trim() expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) // invoke sut stack analysis for scenario manifest let opts = { "TRUSTIFY_DA_PIP_USE_DEP_TREE" : usePipDepTreeUtility } - let providedDatForComponent = pythonPip.provideComponent(`test/providers/tst_manifests/pip/${testCase}/requirements.txt`, opts) + let providedDatForComponent = await pythonPip.provideComponent(`test/providers/tst_manifests/pip/${testCase}/requirements.txt`, opts) // verify returned data matches expectation expect(providedDatForComponent).to.deep.equal({ ecosystem: 'pip', @@ -23,7 +23,7 @@ function sharedComponentAnalysisTestFlow(testCase, usePipDepTreeUtility) { }) } -function sharedStackAnalysisTestFlow(testCase, usePipDepTreeUtility) { +async function sharedStackAnalysisTestFlow(testCase, usePipDepTreeUtility) { // load the expected graph for the scenario let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/pip/${testCase}/expected_stack_sbom.json`).toString() expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) @@ -35,7 +35,7 @@ function sharedStackAnalysisTestFlow(testCase, usePipDepTreeUtility) { throw new Error('fail installing requirements.txt manifest in created virtual python environment', {cause: error}) } let opts = { "TRUSTIFY_DA_PIP_USE_DEP_TREE" : usePipDepTreeUtility } - let providedDataForStack = pythonPip.provideStack(`test/providers/tst_manifests/pip/${testCase}/requirements.txt`, opts) + let providedDataForStack = await pythonPip.provideStack(`test/providers/tst_manifests/pip/${testCase}/requirements.txt`, opts) // 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\\-\\:]+\"","") @@ -48,70 +48,70 @@ function sharedStackAnalysisTestFlow(testCase, usePipDepTreeUtility) { } suite('testing the python-pip data provider', () => { - [ - {name: 'requirements.txt', expected: true}, - {name: 'some_other.file', expected: false} - ].forEach(testCase => { - test(`verify isSupported returns ${testCase.expected} for ${testCase.name}`, () => - expect(pythonPip.isSupported(testCase.name)).to.equal(testCase.expected) - ) - }); + // [ + // {name: 'requirements.txt', expected: true}, + // {name: 'some_other.file', expected: false} + // ].forEach(testCase => { + // test(`verify isSupported returns ${testCase.expected} for ${testCase.name}`, () => + // expect(pythonPip.isSupported(testCase.name)).to.equal(testCase.expected) + // ) + // }); [ - "pip_requirements_txt_no_ignore", - // "pip_requirements_txt_ignore" + // "pip_requirements_txt_no_ignore", + "pip_requirements_txt_ignore" ].forEach(testCase => { let scenario = testCase.replace('pip_requirements_', '').replaceAll('_', ' ') - test(`verify requirements.txt sbom provided for stack analysis with scenario ${scenario}`, () => { - sharedStackAnalysisTestFlow(testCase,false); + test(`verify requirements.txt sbom provided for stack analysis with scenario ${scenario}`, async () => { + await sharedStackAnalysisTestFlow(testCase, false); // 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 requirements.txt sbom provided for component analysis with scenario ${scenario}`, () => { - sharedComponentAnalysisTestFlow(testCase,false); + test(`verify requirements.txt sbom provided for component analysis with scenario ${scenario}`, async () => { + await sharedComponentAnalysisTestFlow(testCase, false); // 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(`verify requirements.txt sbom provided for stack analysis using pipdeptree utility with scenario ${scenario}`, () => { - sharedStackAnalysisTestFlow(testCase,true); - // 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 requirements.txt sbom provided for stack analysis using pipdeptree utility with scenario ${scenario}`, () => { + // sharedStackAnalysisTestFlow(testCase, true); + // // 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 requirements.txt sbom provided for component analysis using pipdeptree utility with scenario ${scenario}`, () => { - sharedComponentAnalysisTestFlow(testCase,true); - // 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(`verify requirements.txt sbom provided for component analysis using pipdeptree utility with scenario ${scenario}`, () => { + // sharedComponentAnalysisTestFlow(testCase, true); + // // these test cases takes ~1400-2000 ms each pr >10000 in CI (for the first test-case) + // }).timeout(process.env.GITHUB_ACTIONS ? 15000 : 10000) }); }).beforeAll(() => clock = useFakeTimers(new Date('2023-10-01T00:00:00.000Z'))).afterAll(()=> clock.restore()); -suite('testing the python-pip data provider with virtual environment', () => { - [ - "pip_requirements_virtual_env_txt_no_ignore", - "pip_requirements_virtual_env_with_ignore" - ].forEach(testCase => { - let scenario = testCase.replace('pip_requirements_', '').replaceAll('_', ' ') - test(`verify requirements.txt sbom provided for stack analysis using virutal python environment, with scenario ${scenario}`, () => { - // load the expected sbom stack analysis - let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/pip/${testCase}/expected_stack_sbom.json`,).toString() - process.env["TRUSTIFY_DA_PYTHON_VIRTUAL_ENV"] = "true" - // process.env["TRUSTIFY_DA_DEBUG"] = "true" - expectedSbom = JSON.stringify(JSON.parse(expectedSbom), null, 4) - // invoke sut stack analysis for scenario manifest - let providedDataForStack = pythonPip.provideStack(`test/providers/tst_manifests/pip/${testCase}/requirements.txt`) - // new(year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): Date +// suite('testing the python-pip data provider with virtual environment', () => { +// [ +// "pip_requirements_virtual_env_txt_no_ignore", +// "pip_requirements_virtual_env_with_ignore" +// ].forEach(testCase => { +// let scenario = testCase.replace('pip_requirements_', '').replaceAll('_', ' ') +// test(`verify requirements.txt sbom provided for stack analysis using virutal python environment, with scenario ${scenario}`, async () => { +// // load the expected sbom stack analysis +// let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/pip/${testCase}/expected_stack_sbom.json`,).toString() +// process.env["TRUSTIFY_DA_PYTHON_VIRTUAL_ENV"] = "true" +// // process.env["TRUSTIFY_DA_DEBUG"] = "true" +// expectedSbom = JSON.stringify(JSON.parse(expectedSbom), null, 4) +// // invoke sut stack analysis for scenario manifest +// let providedDataForStack = await pythonPip.provideStack(`test/providers/tst_manifests/pip/${testCase}/requirements.txt`) +// // 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 - providedDataForStack.content = JSON.stringify(JSON.parse(providedDataForStack.content), null, 4) - expect(providedDataForStack.content).to.deep.equal(expectedSbom) - // expect(providedDataForStack).to.deep.equal({ - // ecosystem: 'pip', - // contentType: 'application/vnd.cyclonedx+json', - // content: expectedSbom - // }) - // these test cases takes ~2500-2700 ms each pr >10000 in CI (for the first test-case) - }).timeout(process.env.GITHUB_ACTIONS ? 60000 : 30000) - }) +// // providedDataForStack.content = providedDataForStack.content.replaceAll("\"timestamp\":\"[a-zA-Z0-9\\-\\:]+\"","") +// // verify returned data matches expectation +// providedDataForStack.content = JSON.stringify(JSON.parse(providedDataForStack.content), null, 4) +// expect(providedDataForStack.content).to.deep.equal(expectedSbom) +// // expect(providedDataForStack).to.deep.equal({ +// // ecosystem: 'pip', +// // contentType: 'application/vnd.cyclonedx+json', +// // content: expectedSbom +// // }) +// // these test cases takes ~2500-2700 ms each pr >10000 in CI (for the first test-case) +// }).timeout(process.env.GITHUB_ACTIONS ? 60000 : 30000) +// }) -}).beforeAll(() => {clock = useFakeTimers(new Date('2023-10-01T00:00:00.000Z'))}).afterAll(()=> clock.restore()); +// }).beforeAll(() => {clock = useFakeTimers(new Date('2023-10-01T00:00:00.000Z'))}).afterAll(()=> clock.restore()); diff --git a/test/providers/tst_manifests/pip/pip_requirements_txt_ignore/expected_component_sbom.json b/test/providers/tst_manifests/pip/pip_requirements_txt_ignore/expected_component_sbom.json index 681c2df9..e37eeed0 100644 --- a/test/providers/tst_manifests/pip/pip_requirements_txt_ignore/expected_component_sbom.json +++ b/test/providers/tst_manifests/pip/pip_requirements_txt_ignore/expected_component_sbom.json @@ -20,6 +20,13 @@ "type": "application", "bom-ref": "pkg:pypi/default-pip-root@0.0.0" }, + { + "name": "aiohappyeyeballs", + "version": "2.6.1", + "purl": "pkg:pypi/aiohappyeyeballs@2.6.1", + "type": "library", + "bom-ref": "pkg:pypi/aiohappyeyeballs@2.6.1" + }, { "name": "anyio", "version": "3.6.2", @@ -34,6 +41,13 @@ "type": "library", "bom-ref": "pkg:pypi/asgiref@3.4.1" }, + { + "name": "async-timeout", + "version": "5.0.1", + "purl": "pkg:pypi/async-timeout@5.0.1", + "type": "library", + "bom-ref": "pkg:pypi/async-timeout@5.0.1" + }, { "name": "beautifulsoup4", "version": "4.12.2", @@ -200,8 +214,10 @@ { "ref": "pkg:pypi/default-pip-root@0.0.0", "dependsOn": [ + "pkg:pypi/aiohappyeyeballs@2.6.1", "pkg:pypi/anyio@3.6.2", "pkg:pypi/asgiref@3.4.1", + "pkg:pypi/async-timeout@5.0.1", "pkg:pypi/beautifulsoup4@4.12.2", "pkg:pypi/certifi@2023.7.22", "pkg:pypi/chardet@4.0.0", @@ -227,6 +243,10 @@ "pkg:pypi/zipp@3.6.0" ] }, + { + "ref": "pkg:pypi/aiohappyeyeballs@2.6.1", + "dependsOn": [] + }, { "ref": "pkg:pypi/anyio@3.6.2", "dependsOn": [] @@ -235,6 +255,10 @@ "ref": "pkg:pypi/asgiref@3.4.1", "dependsOn": [] }, + { + "ref": "pkg:pypi/async-timeout@5.0.1", + "dependsOn": [] + }, { "ref": "pkg:pypi/beautifulsoup4@4.12.2", "dependsOn": [] diff --git a/test/providers/tst_manifests/pip/pip_requirements_txt_ignore/expected_stack_sbom.json b/test/providers/tst_manifests/pip/pip_requirements_txt_ignore/expected_stack_sbom.json index 42fff71c..f44785d4 100644 --- a/test/providers/tst_manifests/pip/pip_requirements_txt_ignore/expected_stack_sbom.json +++ b/test/providers/tst_manifests/pip/pip_requirements_txt_ignore/expected_stack_sbom.json @@ -20,6 +20,13 @@ "type": "application", "bom-ref": "pkg:pypi/default-pip-root@0.0.0" }, + { + "name": "aiohappyeyeballs", + "version": "2.6.1", + "purl": "pkg:pypi/aiohappyeyeballs@2.6.1", + "type": "library", + "bom-ref": "pkg:pypi/aiohappyeyeballs@2.6.1" + }, { "name": "anyio", "version": "3.6.2", @@ -48,6 +55,13 @@ "type": "library", "bom-ref": "pkg:pypi/asgiref@3.4.1" }, + { + "name": "async-timeout", + "version": "5.0.1", + "purl": "pkg:pypi/async-timeout@5.0.1", + "type": "library", + "bom-ref": "pkg:pypi/async-timeout@5.0.1" + }, { "name": "beautifulsoup4", "version": "4.12.2", @@ -200,8 +214,10 @@ { "ref": "pkg:pypi/default-pip-root@0.0.0", "dependsOn": [ + "pkg:pypi/aiohappyeyeballs@2.6.1", "pkg:pypi/anyio@3.6.2", "pkg:pypi/asgiref@3.4.1", + "pkg:pypi/async-timeout@5.0.1", "pkg:pypi/beautifulsoup4@4.12.2", "pkg:pypi/certifi@2023.7.22", "pkg:pypi/chardet@4.0.0", @@ -227,6 +243,10 @@ "pkg:pypi/zipp@3.6.0" ] }, + { + "ref": "pkg:pypi/aiohappyeyeballs@2.6.1", + "dependsOn": [] + }, { "ref": "pkg:pypi/anyio@3.6.2", "dependsOn": [ @@ -246,6 +266,10 @@ "ref": "pkg:pypi/asgiref@3.4.1", "dependsOn": [] }, + { + "ref": "pkg:pypi/async-timeout@5.0.1", + "dependsOn": [] + }, { "ref": "pkg:pypi/beautifulsoup4@4.12.2", "dependsOn": [ diff --git a/test/providers/tst_manifests/pip/pip_requirements_txt_ignore/requirements.txt b/test/providers/tst_manifests/pip/pip_requirements_txt_ignore/requirements.txt index 73f1d7cd..3e152f56 100644 --- a/test/providers/tst_manifests/pip/pip_requirements_txt_ignore/requirements.txt +++ b/test/providers/tst_manifests/pip/pip_requirements_txt_ignore/requirements.txt @@ -25,3 +25,8 @@ urllib3==1.26.16 uvicorn==0.17.0 Werkzeug==2.0.3 zipp==3.6.0 +aiohappyeyeballs==2.6.1 \ + --config-settings=SAMPLE_TEXT=TEST_VALUE \ + --config-settings=ANOTHER_KEY=ANOTHER_VALUE +async-timeout==5.0.1 ; python_full_version < '3.11' +--extra-index-url=https://download.pytorch.org/whl/cpu From 7ed8d8c40fa7592d4b7a8f41a6f3e820ba56ce1c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Mar 2026 09:57:14 +0100 Subject: [PATCH 083/102] build(deps): bump the github-actions group across 1 directory with 6 updates (#401) Bumps the github-actions group with 6 updates in the / directory: | Package | From | To | | --- | --- | --- | | [actions/download-artifact](https://github.com/actions/download-artifact) | `7` | `8` | | [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) | `3` | `4` | | [docker/login-action](https://github.com/docker/login-action) | `3` | `4` | | [docker/metadata-action](https://github.com/docker/metadata-action) | `5` | `6` | | [docker/build-push-action](https://github.com/docker/build-push-action) | `6` | `7` | | [actions/upload-artifact](https://github.com/actions/upload-artifact) | `6` | `7` | Updates `actions/download-artifact` from 7 to 8 - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v7...v8) Updates `docker/setup-buildx-action` from 3 to 4 - [Release notes](https://github.com/docker/setup-buildx-action/releases) - [Commits](https://github.com/docker/setup-buildx-action/compare/v3...v4) Updates `docker/login-action` from 3 to 4 - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/v3...v4) Updates `docker/metadata-action` from 5 to 6 - [Release notes](https://github.com/docker/metadata-action/releases) - [Commits](https://github.com/docker/metadata-action/compare/v5...v6) Updates `docker/build-push-action` from 6 to 7 - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v6...v7) Updates `actions/upload-artifact` from 6 to 7 - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v6...v7) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: docker/setup-buildx-action dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: docker/login-action dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: docker/metadata-action dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: docker/build-push-action dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: actions/upload-artifact dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/publish.yml | 2 +- .github/workflows/push-to-registry.yml | 8 ++++---- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 7071f5c3..a3da2862 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -76,7 +76,7 @@ jobs: steps: - name: Get releasebranch.txt artifact from Release pipeline if: github.event_name == 'workflow_run' - uses: actions/download-artifact@v7 + uses: actions/download-artifact@v8 with: name: releasebranch.txt run-id: ${{ github.event.workflow_run.id }} diff --git a/.github/workflows/push-to-registry.yml b/.github/workflows/push-to-registry.yml index c1b8a8bf..ba734ebe 100644 --- a/.github/workflows/push-to-registry.yml +++ b/.github/workflows/push-to-registry.yml @@ -65,10 +65,10 @@ jobs: echo "created=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 - name: Log in to Container Registry - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} @@ -76,7 +76,7 @@ jobs: - name: Extract Docker metadata id: meta - uses: docker/metadata-action@v5 + uses: docker/metadata-action@v6 with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} tags: | @@ -84,7 +84,7 @@ jobs: type=raw,value=${{ steps.version.outputs.version }} - name: Build and push Docker image - uses: docker/build-push-action@v6 + uses: docker/build-push-action@v7 with: context: . file: ./docker-image/Dockerfiles/Dockerfile diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4987faf1..04cb1e80 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -64,7 +64,7 @@ jobs: git push origin "$BRANCH" echo "$BRANCH" > releasebranch.txt - - uses: actions/upload-artifact@v6 + - uses: actions/upload-artifact@v7 with: name: releasebranch.txt path: releasebranch.txt diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2d575343..9146f2d7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -97,7 +97,7 @@ jobs: - name: Upload coverage reports if: ${{ matrix.node == env.MAIN_NODE_VER }} - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: coverage path: ./coverage/coverage-final.json From 63ae5c223c16b54bd59658ad484b5e846f1cdb78 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Mar 2026 10:00:01 +0100 Subject: [PATCH 084/102] build(deps): bump minimatch and editorconfig (#400) Bumps [minimatch](https://github.com/isaacs/minimatch) and [editorconfig](https://github.com/editorconfig/editorconfig-core-js). These dependencies needed to be updated together. Updates `minimatch` from 9.0.5 to 9.0.9 - [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md) - [Commits](https://github.com/isaacs/minimatch/compare/v9.0.5...v9.0.9) Updates `minimatch` from 3.1.2 to 3.1.5 - [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md) - [Commits](https://github.com/isaacs/minimatch/compare/v9.0.5...v9.0.9) Updates `minimatch` from 5.1.6 to 5.1.9 - [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md) - [Commits](https://github.com/isaacs/minimatch/compare/v9.0.5...v9.0.9) Updates `editorconfig` from 1.0.4 to 1.0.7 - [Release notes](https://github.com/editorconfig/editorconfig-core-js/releases) - [Changelog](https://github.com/editorconfig/editorconfig-core-js/blob/main/CHANGELOG.md) - [Commits](https://github.com/editorconfig/editorconfig-core-js/compare/v1.0.4...v1.0.7) --- updated-dependencies: - dependency-name: minimatch dependency-version: 9.0.9 dependency-type: indirect - dependency-name: minimatch dependency-version: 3.1.5 dependency-type: indirect - dependency-name: minimatch dependency-version: 5.1.9 dependency-type: indirect - dependency-name: editorconfig dependency-version: 1.0.7 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 50 +++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index a4553fe5..caab1a01 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1977,13 +1977,13 @@ "optional": true }, "node_modules/cacache/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "license": "ISC", "optional": true, "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -2630,15 +2630,15 @@ "optional": true }, "node_modules/editorconfig": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", - "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.7.tgz", + "integrity": "sha512-e0GOtq/aTQhVdNyDU9e02+wz9oDDM+SIOQxWME2QRjzRX5yyLAuHDE+0aE8vHb9XRC8XD37eO2u57+F09JqFhw==", "dev": true, "license": "MIT", "dependencies": { "@one-ini/wasm": "0.1.1", "commander": "^10.0.0", - "minimatch": "9.0.1", + "minimatch": "^9.0.1", "semver": "^7.5.3" }, "bin": { @@ -2659,13 +2659,13 @@ } }, "node_modules/editorconfig/node_modules/minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -3793,9 +3793,9 @@ } }, "node_modules/glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "dev": true, "license": "ISC", "dependencies": { @@ -4984,9 +4984,9 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -5259,9 +5259,9 @@ } }, "node_modules/mocha/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "dev": true, "license": "ISC", "dependencies": { @@ -5712,13 +5712,13 @@ } }, "node_modules/node-gyp/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "license": "ISC", "optional": true, "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" From 0e9ba23c38bc9bcadb528046a15c8729abbe890c Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Wed, 11 Mar 2026 14:20:58 +0100 Subject: [PATCH 085/102] feat: implement license resolution and identification (#403) * feat: implement license resolution and identification * feat: calculate compatibility from backend information --------- Signed-off-by: Ruben Romero Montes Co-authored-by: Claude Sonnet 4.5 --- README.md | 14 +- docs/license-resolution-and-compliance.md | 158 ++++++++++++++++++ package-lock.json | 8 +- package.json | 2 +- src/analysis.js | 88 ++-------- src/cli.js | 86 +++++++++- src/cyclone_dx_sbom.js | 22 ++- src/index.js | 2 + src/license/compatibility.js | 53 ++++++ src/license/index.js | 111 ++++++++++++ src/license/licenses_api.js | 88 ++++++++++ src/license/project_license.js | 135 +++++++++++++++ src/provider.js | 18 +- src/providers/base_java.js | 1 - src/providers/base_javascript.js | 32 +++- src/providers/golang_gomodules.js | 18 +- src/providers/java_gradle.js | 14 +- src/providers/java_maven.js | 35 +++- src/providers/python_pip.js | 16 +- src/sbom.js | 5 +- src/tools.js | 61 +++++++ test/analysis.test.js | 40 ++--- test/exhort-backend-utils.test.js | 2 +- test/provider.test.js | 122 +++++++++++++- test/providers/license.test.js | 136 +++++++++++++++ .../component_analysis_expected_sbom.json | 18 +- .../pom.xml | 11 +- .../stack_analysis_expected_sbom.json | 18 +- 28 files changed, 1180 insertions(+), 134 deletions(-) create mode 100644 docs/license-resolution-and-compliance.md create mode 100644 src/license/compatibility.js create mode 100644 src/license/index.js create mode 100644 src/license/licenses_api.js create mode 100644 src/license/project_license.js create mode 100644 test/providers/license.test.js diff --git a/README.md b/README.md index 56e6f5d5..b74c62a3 100644 --- a/README.md +++ b/README.md @@ -83,12 +83,13 @@ Use as CLI Script ```shell $ npx @trustify-da/trustify-da-javascript-client help -Usage: trustify-da-javascript-client {component|stack|image|validate-token} +Usage: trustify-da-javascript-client {component|stack|image|validate-token|license} Commands: trustify-da-javascript-client stack [--html|--summary] produce stack report for manifest path trustify-da-javascript-client component [--summary] produce component report for a manifest type and content trustify-da-javascript-client image [--html|--summary] produce image analysis report for OCI image references + trustify-da-javascript-client license display project license information from manifest and LICENSE file in JSON format Options: --help Show help [boolean] @@ -123,6 +124,9 @@ $ npx @trustify-da/trustify-da-javascript-client image docker.io/library/node:18 # specify architecture using ^^ notation (e.g., httpd:2.4.49^^amd64) $ npx @trustify-da/trustify-da-javascript-client image httpd:2.4.49^^amd64 + +# get project license information +$ npx @trustify-da/trustify-da-javascript-client license /path/to/package.json ``` @@ -161,6 +165,9 @@ $ trustify-da-javascript-client image docker.io/library/node:18 docker.io/librar # specify architecture using ^^ notation (e.g., httpd:2.4.49^^amd64) $ trustify-da-javascript-client image httpd:2.4.49^^amd64 + +# get project license information +$ trustify-da-javascript-client license /path/to/package.json ``` @@ -372,6 +379,11 @@ const options = { The proxy URL should be in the format: `http://host:port` or `https://host:port`. The API will automatically use the appropriate protocol (HTTP or HTTPS) based on the proxy URL provided.

+

License resolution and dependency license compliance

+

+The client can resolve the project license from the manifest (e.g. package.json license, pom.xml <licenses>) and from a LICENSE or LICENSE.md file in the project, and report when they differ. For component analysis, you can optionally run a license check: the client fetches dependency licenses from the backend (by purl) and reports dependencies whose licenses are incompatible with the project license. See License resolution and compliance for design and behavior. To disable the check on component analysis, set TRUSTIFY_DA_LICENSE_CHECK=false or pass licenseCheck: false in the options. +

+

Customizing Executables

This project uses each ecosystem's executable for creating dependency trees. These executables are expected to be diff --git a/docs/license-resolution-and-compliance.md b/docs/license-resolution-and-compliance.md new file mode 100644 index 00000000..bfd88acc --- /dev/null +++ b/docs/license-resolution-and-compliance.md @@ -0,0 +1,158 @@ +# License Resolution and Compliance + +This document describes the license analysis features that help you understand your project’s license and check compatibility with your dependencies. + +## Overview + +License analysis is **enabled by default** and provides: + +1. **Project license detection** from your manifest file (e.g., `package.json`, `pom.xml`) and LICENSE files +2. **Dependency license information** from the Trustify DA backend +3. **Compatibility checking** to identify potential license conflicts +4. **Mismatch detection** when your manifest and LICENSE file declare different licenses + +## How It Works + +### Project License Detection + +The client looks for your project’s license in two places: + +1. **Manifest file** — Reads the license field from: + - `package.json`: `license` field + - `pom.xml`: `` element + - Other ecosystems: varies by ecosystem (some don’t have standard license fields) + +2. **LICENSE file** — Searches for `LICENSE`, `LICENSE.md`, or `LICENSE.txt` in the same directory as your manifest + +The backend’s license identification API is used for accurate LICENSE file detection. + +### Compatibility Checking + +The client checks if dependency licenses are compatible with your project license. For example: +- Permissive project (MIT) + permissive dependencies → ✅ Compatible +- Permissive project (MIT) + strong copyleft dependency (GPL) → ⚠️ Potentially incompatible + +Compatibility results are included in the analysis report’s `licenseSummary`. + +## Configuration + +### Disable License Checking + +License analysis runs automatically during **component analysis only** (not stack analysis). To disable it: + +**Environment variable:** +```bash +export TRUSTIFY_DA_LICENSE_CHECK=false +``` + +**Programmatic option:** +```javascript +await componentAnalysis(‘pom.xml’, { licenseCheck: false }); +``` + +## CLI Usage + +### Get License Information + +```bash +exhort license path/to/pom.xml +``` + +**Example output:** +```json +{ + "manifestLicense": { + "spdxId": "Apache-2.0", + "category": "PERMISSIVE", + "name": "Apache License 2.0", + "identifiers": ["Apache-2.0"] + }, + "fileLicense": { + "spdxId": "Apache-2.0", + "category": "PERMISSIVE", + "name": "Apache License 2.0", + "identifiers": ["Apache-2.0"] + }, + "mismatch": false +} +``` + +Note: The `license` command shows only your project's license. For dependency license information, use component analysis. + +## Analysis Report Fields + +When license checking is enabled, component analysis includes a `licenseSummary` field: + +```javascript +{ + // ... standard analysis fields (providers, etc.) ... + "licenseSummary": { + "projectLicense": { + "manifest": { + "spdxId": "Apache-2.0", + "category": "PERMISSIVE", + "name": "Apache License 2.0", + "identifiers": ["Apache-2.0"] + }, + "file": { + "spdxId": "Apache-2.0", + "category": "PERMISSIVE", + "name": "Apache License 2.0", + "identifiers": ["Apache-2.0"] + }, + "mismatch": false + }, + "incompatibleDependencies": [ + { + "purl": "pkg:maven/org.example/gpl-lib@1.0.0", + "licenses": ["GPL-3.0"], + "category": "STRONG_COPYLEFT", + "reason": "Dependency license(s) are incompatible with the project license." + } + ] + } +} +``` + +**Note:** Dependency license information (for all dependencies, not just incompatible ones) is available in the standard backend response under the `licenses` field. The `licenseSummary` only includes project license details and flagged incompatibilities. + +## Common Scenarios + +### Mismatch Between Manifest and LICENSE File + +If your `package.json` says `"license": "MIT"` but your LICENSE file contains Apache-2.0 text, the component analysis report will show: +```json +{ + "licenseSummary": { + "projectLicense": { + "manifest": { + "spdxId": "MIT", + "category": "PERMISSIVE", + "name": "MIT License" + }, + "file": { + "spdxId": "Apache-2.0", + "category": "PERMISSIVE", + "name": "Apache License 2.0" + }, + "mismatch": true + }, + "incompatibleDependencies": [] + } +} +``` + +**Action:** Update your manifest or LICENSE file to match. + +### Incompatible Dependencies + +If you have a permissive-licensed project (MIT, Apache) but depend on GPL-licensed libraries, they’ll appear in `incompatibleDependencies`. + +**Action:** Review the flagged dependencies and consider: +- Finding alternative libraries with compatible licenses +- Consulting legal counsel if the dependency is necessary +- Understanding how you’re using the dependency (linking, distribution, etc.) + +## SBOM Integration + +Project license information is automatically included in generated SBOMs (CycloneDX format) in the root component’s `licenses` field. diff --git a/package-lock.json b/package-lock.json index caab1a01..64468568 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ }, "devDependencies": { "@babel/core": "^7.23.2", - "@trustify-da/trustify-da-api-model": "^2.0.1", + "@trustify-da/trustify-da-api-model": "^2.0.7", "@types/node": "^20.17.30", "@types/which": "^3.0.4", "babel-plugin-rewire": "^1.2.0", @@ -1005,9 +1005,9 @@ "license": "(Unlicense OR Apache-2.0)" }, "node_modules/@trustify-da/trustify-da-api-model": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@trustify-da/trustify-da-api-model/-/trustify-da-api-model-2.0.3.tgz", - "integrity": "sha512-nnw4nTIHCXNmkUKS4btl9JZJKPtyE+w33E2pjAbUTL6wpeLfmonrLs4Oqj3C/8FVZjGuizXi7ghVEztmQIi4IA==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@trustify-da/trustify-da-api-model/-/trustify-da-api-model-2.0.7.tgz", + "integrity": "sha512-42ApYWE4LYiCXD86AzPdLHSxFY7t2P9PhR+BwwFKBwHlcnJE2fPVELI0e8vbf+2Lxz0CpzU1g4WPHXOCp2K1oQ==", "dev": true, "license": "Apache-2.0" }, diff --git a/package.json b/package.json index 1df61e7e..13e80b15 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ }, "devDependencies": { "@babel/core": "^7.23.2", - "@trustify-da/trustify-da-api-model": "^2.0.1", + "@trustify-da/trustify-da-api-model": "^2.0.7", "@types/node": "^20.17.30", "@types/which": "^3.0.4", "babel-plugin-rewire": "^1.2.0", diff --git a/src/analysis.js b/src/analysis.js index 614c1f2d..2d56fad5 100644 --- a/src/analysis.js +++ b/src/analysis.js @@ -2,33 +2,12 @@ import fs from "node:fs"; import path from "node:path"; import { EOL } from "os"; -import { HttpsProxyAgent } from "https-proxy-agent"; - +import { runLicenseCheck } from "./license/index.js"; import { generateImageSBOM, parseImageRef } from "./oci_image/utils.js"; -import { RegexNotToBeLogged, getCustom } from "./tools.js"; +import { addProxyAgent, getCustom, getTokenHeaders , TRUSTIFY_DA_OPERATION_TYPE_HEADER, TRUSTIFY_DA_PACKAGE_MANAGER_HEADER } from "./tools.js"; export default { requestComponent, requestStack, requestImages, validateToken } -const rhdaTokenHeader = "trust-da-token"; -const rhdaTelemetryId = "telemetry-anonymous-id"; -const rhdaSourceHeader = "trust-da-source" -const rhdaOperationTypeHeader = "trust-da-operation-type" -const rhdaPackageManagerHeader = "trust-da-pkg-manager" - -/** - * Adds proxy agent configuration to fetch options if a proxy URL is specified - * @param {RequestInit} options - The base fetch options - * @param {import("index.js").Options} opts - The trustify DA options that may contain proxy configuration - * @returns {RequestInit} The fetch options with proxy agent if applicable - */ -function addProxyAgent(options, opts) { - const proxyUrl = getCustom('TRUSTIFY_DA_PROXY_URL', null, opts); - if (proxyUrl) { - options.agent = new HttpsProxyAgent(proxyUrl); - } - return options; -} - /** * Send a stack analysis request and get the report as 'text/html' or 'application/json'. * @param {import('./provider').Provider} provider - the provided data for constructing the request @@ -43,13 +22,13 @@ async function requestStack(provider, manifest, url, html = false, opts = {}) { opts["manifest-type"] = path.parse(manifest).base let provided = await provider.provideStack(manifest, opts) // throws error if content providing failed opts["source-manifest"] = "" - opts[rhdaOperationTypeHeader.toUpperCase().replaceAll("-", "_")] = "stack-analysis" + opts[TRUSTIFY_DA_OPERATION_TYPE_HEADER.toUpperCase().replaceAll("-", "_")] = "stack-analysis" let startTime = new Date() let endTime if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { console.log("Starting time of sending stack analysis request to the dependency analytics server= " + startTime) } - opts[rhdaPackageManagerHeader.toUpperCase().replaceAll("-", "_")] = provided.ecosystem + opts[TRUSTIFY_DA_PACKAGE_MANAGER_HEADER.toUpperCase().replaceAll("-", "_")] = provided.ecosystem const fetchOptions = addProxyAgent({ method: 'POST', @@ -61,7 +40,7 @@ async function requestStack(provider, manifest, url, html = false, opts = {}) { body: provided.content }, opts); - const finalUrl = new URL(`${url}/api/v4/analysis`); + const finalUrl = new URL(`${url}/api/v5/analysis`); if (opts['TRUSTIFY_DA_RECOMMENDATIONS_ENABLED'] === 'false') { finalUrl.searchParams.append('recommend', 'false'); } @@ -107,11 +86,11 @@ async function requestComponent(provider, manifest, url, opts = {}) { let provided = await provider.provideComponent(manifest, opts) // throws error if content providing failed opts["source-manifest"] = "" - opts[rhdaOperationTypeHeader.toUpperCase().replaceAll("-", "_")] = "component-analysis" + opts[TRUSTIFY_DA_OPERATION_TYPE_HEADER.toUpperCase().replaceAll("-", "_")] = "component-analysis" if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { console.log("Starting time of sending component analysis request to Trustify DA backend server= " + new Date()) } - opts[rhdaPackageManagerHeader.toUpperCase().replaceAll("-", "_")] = provided.ecosystem + opts[TRUSTIFY_DA_PACKAGE_MANAGER_HEADER.toUpperCase().replaceAll("-", "_")] = provided.ecosystem const fetchOptions = addProxyAgent({ method: 'POST', @@ -123,7 +102,7 @@ async function requestComponent(provider, manifest, url, opts = {}) { body: provided.content }, opts); - const finalUrl = new URL(`${url}/api/v4/analysis`); + const finalUrl = new URL(`${url}/api/v5/analysis`); if (opts['TRUSTIFY_DA_RECOMMENDATIONS_ENABLED'] === 'false') { finalUrl.searchParams.append('recommend', 'false'); } @@ -143,6 +122,14 @@ async function requestComponent(provider, manifest, url, opts = {}) { } + const licenseCheckEnabled = getCustom('TRUSTIFY_DA_LICENSE_CHECK', 'true', opts) !== 'false' && opts.licenseCheck !== false + if (licenseCheckEnabled) { + try { + result.licenseSummary = await runLicenseCheck(provided.content, manifest, url, opts, result) + } catch (licenseErr) { + result.licenseSummary = { error: licenseErr.message } + } + } } else { throw new Error(`Got error response from Trustify DA backend - http return code : ${resp.status}, ex-request-id: ${resp.headers.get("ex-request-id")} error message => ${await resp.text()}`) } @@ -164,7 +151,7 @@ async function requestImages(imageRefs, url, html = false, opts = {}) { imageSboms[parsedImageRef.getPackageURL().toString()] = generateImageSBOM(parsedImageRef, opts) } - const finalUrl = new URL(`${url}/api/v4/batch-analysis`); + const finalUrl = new URL(`${url}/api/v5/batch-analysis`); if (opts['TRUSTIFY_DA_RECOMMENDATIONS_ENABLED'] === 'false') { finalUrl.searchParams.append('recommend', 'false'); } @@ -215,7 +202,7 @@ async function validateToken(url, opts = {}) { } }, opts); - let resp = await fetch(`${url}/api/v4/token`, fetchOptions) + let resp = await fetch(`${url}/api/v5/token`, fetchOptions) if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { let exRequestId = resp.headers.get("ex-request-id"); if (exRequestId) { @@ -224,42 +211,3 @@ async function validateToken(url, opts = {}) { } return resp.status } - -/** - * - * @param {string} headerName - the header name to populate in request - * @param headers - * @param {string} optsKey - key in the options object to use the value for - * @param {import("index.js").Options} [opts={}] - options input object to fetch header values from - * @private - */ -function setRhdaHeader(headerName, headers, optsKey, opts) { - let rhdaHeaderValue = getCustom(optsKey, null, opts); - if (rhdaHeaderValue) { - headers[headerName] = rhdaHeaderValue - } -} - -/** - * Utility function for fetching vendor tokens - * @param {import("index.js").Options} [opts={}] - optional various options to pass along the application - * @returns {{}} - */ -export function getTokenHeaders(opts = {}) { - let headers = {} - setRhdaHeader(rhdaTokenHeader, headers, 'TRUSTIFY_DA_TOKEN', opts); - setRhdaHeader(rhdaSourceHeader, headers, 'TRUSTIFY_DA_SOURCE', opts); - setRhdaHeader(rhdaOperationTypeHeader, headers, rhdaOperationTypeHeader.toUpperCase().replaceAll("-", "_"), opts); - setRhdaHeader(rhdaPackageManagerHeader, headers, rhdaPackageManagerHeader.toUpperCase().replaceAll("-", "_"), opts) - setRhdaHeader(rhdaTelemetryId, headers, 'TRUSTIFY_DA_TELEMETRY_ID', opts); - - if (getCustom("TRUSTIFY_DA_DEBUG", null, opts) === "true") { - console.log("Headers Values to be sent to Trustify DA backend:" + EOL) - for (const headerKey in headers) { - if (!headerKey.match(RegexNotToBeLogged)) { - console.log(`${headerKey}: ${headers[headerKey]}`) - } - } - } - return headers -} diff --git a/src/cli.js b/src/cli.js index b105773a..3e289c6e 100644 --- a/src/cli.js +++ b/src/cli.js @@ -5,7 +5,9 @@ import * as path from "path"; import yargs from 'yargs' import { hideBin } from 'yargs/helpers' -import client from './index.js' +import { getProjectLicense, getLicenseDetails } from './license/index.js' + +import client, { selectTrustifyDABackend } from './index.js' // command for component analysis take manifest type and content @@ -32,9 +34,8 @@ const validateToken = { builder: yargs => yargs.positional( 'token-provider', { - desc: 'the token provider', - type: 'string', - choices: ['snyk','oss-index'], + desc: 'the token provider name', + type: 'string' } ).options({ tokenValue: { @@ -48,7 +49,7 @@ const validateToken = { let opts={} if(args['tokenValue'] !== undefined && args['tokenValue'].trim() !=="" ) { let tokenValue = args['tokenValue'].trim() - opts[`TRUSTIFY_DA_${tokenProvider}_TOKEN`] = tokenValue + opts[`TRUSTIFY_DA_PROVIDER_${tokenProvider}_TOKEN`] = tokenValue } let res = await client.validateToken(opts) console.log(res) @@ -168,13 +169,86 @@ const stack = { } } +// command for license checking +const license = { + command: 'license ', + desc: 'Display project license information from manifest and LICENSE file in JSON format', + builder: yargs => yargs.positional( + '/path/to/manifest', + { + desc: 'manifest path for license analysis', + type: 'string', + normalize: true, + } + ), + handler: async args => { + let manifestPath = args['/path/to/manifest'] + + const opts = {} // CLI options can be extended in the future + try { + selectTrustifyDABackend(opts) + } catch (err) { + console.error(JSON.stringify({ error: err.message }, null, 2)) + process.exit(1) + } + + let localResult + try { + localResult = getProjectLicense(manifestPath) + } catch (err) { + console.error(JSON.stringify({ error: `Failed to read manifest: ${err.message}` }, null, 2)) + process.exit(1) + } + + const errors = [] + + // Build LicenseInfo objects + const buildLicenseInfo = async (spdxId) => { + if (!spdxId) {return null} + + const licenseInfo = { spdxId } + + try { + const details = await getLicenseDetails(spdxId, opts) + if (details) { + // Check if backend recognized the license as valid + if (details.category === 'UNKNOWN') { + errors.push(`"${spdxId}" is not a valid SPDX license identifier. Please use a valid SPDX expression (e.g., "Apache-2.0", "MIT"). See https://spdx.org/licenses/`) + } else { + Object.assign(licenseInfo, details) + } + } else { + errors.push(`No license details found for ${spdxId}`) + } + } catch (err) { + errors.push(`Failed to fetch details for ${spdxId}: ${err.message}`) + } + + return licenseInfo + } + + const output = { + manifestLicense: await buildLicenseInfo(localResult.fromManifest), + fileLicense: await buildLicenseInfo(localResult.fromFile), + mismatch: localResult.mismatch + } + + if (errors.length > 0) { + output.errors = errors + } + + console.log(JSON.stringify(output, null, 2)) + } +} + // parse and invoke the command yargs(hideBin(process.argv)) - .usage(`Usage: ${process.argv[0].includes("node") ? path.parse(process.argv[1]).base : path.parse(process.argv[0]).base} {component|stack|image|validate-token}`) + .usage(`Usage: ${process.argv[0].includes("node") ? path.parse(process.argv[1]).base : path.parse(process.argv[0]).base} {component|stack|image|validate-token|license}`) .command(stack) .command(component) .command(image) .command(validateToken) + .command(license) .scriptName('') .version(false) .demandCommand(1) diff --git a/src/cyclone_dx_sbom.js b/src/cyclone_dx_sbom.js index 7e6efaad..b90b74be 100644 --- a/src/cyclone_dx_sbom.js +++ b/src/cyclone_dx_sbom.js @@ -7,10 +7,11 @@ import {PackageURL} from "packageurl-js"; * @param component {PackageURL} * @param type type of package - application or library * @param scope scope of the component - runtime or compile - * @return {{"bom-ref": string, name, purl: string, type, version, scope}} + * @param licenses optional license string or array of licenses for the component + * @return {{"bom-ref": string, name, purl: string, type, version, scope, licenses?}} * @private */ -function getComponent(component, type, scope) { +function getComponent(component, type, scope, licenses) { let componentObject; if(component instanceof PackageURL) { @@ -41,6 +42,18 @@ function getComponent(component, type, scope) { { componentObject = component } + + // Add licenses if provided (CycloneDX format). Callers must provide valid SPDX identifiers. + if (licenses) { + const licenseArray = Array.isArray(licenses) ? licenses : [licenses]; + componentObject.licenses = licenseArray.map(lic => { + if (typeof lic === 'string') { + return { license: { id: lic } }; + } + return lic; + }); + } + return componentObject } @@ -73,12 +86,13 @@ export default class CycloneDxSbom { /** * @param {PackageURL} root - add main/root component for sbom + * @param {string|Array} [licenses] - optional license(s) for the root component * @return {CycloneDxSbom} the CycloneDxSbom Sbom Object */ - addRoot(root) { + addRoot(root, licenses) { this.rootComponent = - getComponent(root, "application") + getComponent(root, "application", undefined, licenses) this.components.push(this.rootComponent) return this } diff --git a/src/index.js b/src/index.js index 4ff21804..567a475b 100644 --- a/src/index.js +++ b/src/index.js @@ -9,6 +9,7 @@ import * as url from 'url'; export { parseImageRef } from "./oci_image/utils.js"; export { ImageRef } from "./oci_image/images.js"; +export { getProjectLicense, findLicenseFilePath, identifyLicenseViaBackend, getLicenseDetails, licensesFromReport, normalizeLicensesResponse, runLicenseCheck, getCompatibility } from "./license/index.js"; export default { componentAnalysis, stackAnalysis, imageAnalysis, validateToken } @@ -38,6 +39,7 @@ export default { componentAnalysis, stackAnalysis, imageAnalysis, validateToken * TRUSTIFY_DA_SYFT_CONFIG_PATH?: string | undefined, * TRUSTIFY_DA_SYFT_PATH?: string | undefined, * TRUSTIFY_DA_YARN_PATH?: string | undefined, + * TRUSTIFY_DA_LICENSE_CHECK?: string | undefined, * MATCH_MANIFEST_VERSIONS?: string | undefined, * TRUSTIFY_DA_SOURCE?: string | undefined, * TRUSTIFY_DA_TOKEN?: string | undefined, diff --git a/src/license/compatibility.js b/src/license/compatibility.js new file mode 100644 index 00000000..d8466b6f --- /dev/null +++ b/src/license/compatibility.js @@ -0,0 +1,53 @@ +/** + * License compatibility: whether a dependency license is compatible with the project license. + * Relies on backend-provided license categories. + * + * Compatibility is based on restrictiveness hierarchy: + * PERMISSIVE < WEAK_COPYLEFT < STRONG_COPYLEFT + * + * A dependency is compatible if it's equal or less restrictive than the project license. + * A dependency is incompatible if it's more restrictive than the project license. + */ + +/** + * Check if a dependency's license is compatible with the project license based on backend categories. + * + * @param {string} [projectCategory] - backend category for project license: PERMISSIVE | WEAK_COPYLEFT | STRONG_COPYLEFT | UNKNOWN + * @param {string} [dependencyCategory] - backend category for dependency license: PERMISSIVE | WEAK_COPYLEFT | STRONG_COPYLEFT | UNKNOWN + * @returns {'compatible'|'incompatible'|'unknown'} + */ +export function getCompatibility(projectCategory, dependencyCategory) { + if (!projectCategory || !dependencyCategory) { + return 'unknown'; + } + + const proj = projectCategory.toUpperCase(); + const dep = dependencyCategory.toUpperCase(); + + // Unknown categories + if (proj === 'UNKNOWN' || dep === 'UNKNOWN') { + return 'unknown'; + } + + // Define restrictiveness levels (higher number = more restrictive) + const restrictiveness = { + 'PERMISSIVE': 1, + 'WEAK_COPYLEFT': 2, + 'STRONG_COPYLEFT': 3 + }; + + const projLevel = restrictiveness[proj]; + const depLevel = restrictiveness[dep]; + + if (projLevel === undefined || depLevel === undefined) { + return 'unknown'; + } + + // Dependency is more restrictive than project → incompatible + if (depLevel > projLevel) { + return 'incompatible'; + } + + // Dependency is equal or less restrictive → compatible + return 'compatible'; +} diff --git a/src/license/index.js b/src/license/index.js new file mode 100644 index 00000000..de008967 --- /dev/null +++ b/src/license/index.js @@ -0,0 +1,111 @@ +/** + * License resolution and dependency license compatibility for component analysis. + */ + +import { getProjectLicense, findLicenseFilePath, identifyLicense } from './project_license.js'; +import { licensesFromReport, getLicenseDetails } from './licenses_api.js'; +import { getCompatibility } from './compatibility.js'; + +export { getProjectLicense, findLicenseFilePath, identifyLicense as identifyLicenseViaBackend } from './project_license.js'; +export { licensesFromReport, normalizeLicensesResponse, getLicenseDetails } from './licenses_api.js'; +export { getCompatibility } from './compatibility.js'; + +/** + * Run full license check: resolve project license (with backend identification and details), + * get dependency licenses from analysis report, and compute incompatibilities. + * + * @param {string} sbomContent - CycloneDX SBOM JSON string (the one sent for component analysis) + * @param {string} manifestPath - path to manifest + * @param {string} url - the backend url to send the request to + * @param {import('../index.js').Options} [opts={}] + * @param {import('@trustify-da/trustify-da-api-model/model/v5/AnalysisReport').AnalysisReport} [analysisResult] - analysis result that includes licenses array from backend + * @returns {Promise<{ projectLicense: { manifest: Object|null, file: Object|null, mismatch: boolean }, incompatibleDependencies: Array<{ purl: string, licenses: string[], category?: string, reason: string }>, error?: string }>} + */ +export async function runLicenseCheck(sbomContent, manifestPath, url, opts = {}, analysisResult = null) { + // Resolve project license from manifest and LICENSE file + const projectLicense = getProjectLicense(manifestPath, opts); + + // Try backend identification for LICENSE file (more accurate than local pattern matching) + const licenseFilePath = findLicenseFilePath(manifestPath); + let backendFileId = null; + if (licenseFilePath) { + try { + backendFileId = await identifyLicense(licenseFilePath, { ...opts, TRUSTIFY_DA_BACKEND_URL: url }); + } catch { + // Fall back to local detection + } + } + + // Determine final license identifiers + const manifestSpdx = projectLicense.fromManifest; + const fileSpdx = backendFileId || projectLicense.fromFile; + const mismatch = Boolean(manifestSpdx && fileSpdx && manifestSpdx.toLowerCase() !== fileSpdx.toLowerCase()); + + // Fetch detailed license info from backend (avoid duplicate calls if same license) + const licenseDetailsCache = new Map(); + + async function getDetails(spdxId) { + if (!spdxId || !url) return null; + if (licenseDetailsCache.has(spdxId)) return licenseDetailsCache.get(spdxId); + + try { + const details = await getLicenseDetails(spdxId, { ...opts, TRUSTIFY_DA_BACKEND_URL: url }); + licenseDetailsCache.set(spdxId, details); + return details; + } catch { + return null; + } + } + + const manifestLicenseInfo = await getDetails(manifestSpdx); + const fileLicenseInfo = await getDetails(fileSpdx); + + // Extract dependency purls from SBOM (exclude root component) + const sbomObj = typeof sbomContent === 'string' ? JSON.parse(sbomContent) : sbomContent; + const rootRef = sbomObj?.metadata?.component?.["bom-ref"] || sbomObj?.metadata?.component?.purl; + const purls = (sbomObj?.components || []) + .map(c => c.purl || c["bom-ref"]) + .filter(Boolean) + .filter(purl => !rootRef || purl !== rootRef); + + if (purls.length === 0) { + return { + projectLicense: { manifest: manifestLicenseInfo, file: fileLicenseInfo, mismatch }, + incompatibleDependencies: [] + }; + } + + // Get dependency licenses from analysis report + const licenseByPurl = licensesFromReport(analysisResult, purls); + if (licenseByPurl.size === 0 && analysisResult) { + return { + projectLicense: { manifest: manifestLicenseInfo, file: fileLicenseInfo, mismatch }, + incompatibleDependencies: [], + error: 'No license data available in analysis report' + }; + } + + // Check compatibility for each dependency + const projectCategory = manifestLicenseInfo?.category || fileLicenseInfo?.category; + const incompatibleDependencies = []; + + for (const purl of purls) { + const entry = licenseByPurl.get(purl); + if (!entry) continue; + + const status = getCompatibility(projectCategory, entry.category); + if (status === 'incompatible') { + incompatibleDependencies.push({ + purl, + licenses: entry.licenses, + category: entry.category, + reason: 'Dependency license(s) are incompatible with the project license.' + }); + } + } + + return { + projectLicense: { manifest: manifestLicenseInfo, file: fileLicenseInfo, mismatch }, + incompatibleDependencies + }; +} diff --git a/src/license/licenses_api.js b/src/license/licenses_api.js new file mode 100644 index 00000000..132f3bb2 --- /dev/null +++ b/src/license/licenses_api.js @@ -0,0 +1,88 @@ +/** + * Client for the Trustify DA backend License Analysis API (POST /api/v5/licenses). + * The same license data shape is returned in the dependency analysis JSON report (result.licenses). + * @see https://github.com/guacsec/trustify-dependency-analytics#license-analysis-apiv5licenses + * @see https://github.com/guacsec/trustify-da-api-spec/blob/main/api/v5/openapi.yaml + */ + +import { selectTrustifyDABackend } from '../index.js'; +import { addProxyAgent, getTokenHeaders } from '../tools.js'; + +/** + * Fetch license details by SPDX identifier from the backend GET /api/v5/licenses/{spdx}. + * Returns detailed information about a specific license including category, name, and text. + * + * @param {string} spdxId - SPDX identifier (e.g., "Apache-2.0", "MIT") + * @param {import('../index.js').Options} [opts={}] - options (proxy, token, TRUSTIFY_DA_BACKEND_URL, etc.) + * @returns {Promise} License details or null if not found + */ +export async function getLicenseDetails(spdxId, opts = {}) { + if (!spdxId) {return null;} + + const url = selectTrustifyDABackend(opts); + const finalUrl = new URL(`${url}/api/v5/licenses/${encodeURIComponent(spdxId)}`); + + const fetchOptions = addProxyAgent({ + method: 'GET', + headers: { + 'Accept': 'application/json', + ...getTokenHeaders(opts) + }, + }, opts); + + try { + const resp = await fetch(finalUrl, fetchOptions); + if (!resp.ok) { + const errorText = await resp.text().catch(() => ''); + throw new Error(`HTTP ${resp.status}: ${errorText || resp.statusText}`); + } + return await resp.json(); + } catch (err) { + throw new Error(`Failed to fetch license details: ${err.message}`); + } +} + +/** + * Normalize the LicensesResponse shape (array of LicenseProviderResult) into a map of purl -> license info. + * Each provider result has { status, summary, packages } where packages is { [purl]: { concluded, evidence } }. + * We merge the first successful provider's packages; concluded has identifiers[], category (PERMISSIVE | WEAK_COPYLEFT | STRONG_COPYLEFT | UNKNOWN). + * + * @param {unknown} data - LicensesResponse (array) or analysis report's licenses field + * @param {string[]} [purls] - optional list of purls to restrict to (for consistency with getLicensesByPurl) + * @returns {Map} + */ +export function normalizeLicensesResponse(data, purls = []) { + const map = new Map(); + if (!data || !Array.isArray(data)) {return map;} + + for (const providerResult of data) { + const packages = providerResult?.packages; + if (!packages || typeof packages !== 'object') {continue;} + for (const [purl, pkgLicense] of Object.entries(packages)) { + const concluded = pkgLicense?.concluded; + const identifiers = Array.isArray(concluded?.identifiers) ? concluded.identifiers : []; + const expression = concluded?.expression; + const licenses = identifiers.length > 0 ? identifiers : (expression ? [expression] : []); + const category = concluded?.category; // PERMISSIVE | WEAK_COPYLEFT | STRONG_COPYLEFT | UNKNOWN + if (purls.length === 0 || purls.includes(purl)) { + map.set(purl, { licenses: licenses.filter(Boolean), category }); + } + } + // Use first provider that has packages; backend may return multiple (e.g. deps.dev) + if (map.size > 0) {break;} + } + return map; +} + +/** + * Build license map from an analysis report that already includes license data (result.licenses). + * Use this when the dependency analysis response already contains the licenses array to avoid a second request. + * + * @param {import('@trustify-da/trustify-da-api-model/model/v5/AnalysisReport').AnalysisReport} analysisReport - full analysis JSON + * @param {string[]} [purls] - optional list of purls to restrict to + * @returns {Map} + */ +export function licensesFromReport(analysisReport, purls = []) { + if (!analysisReport?.licenses) {return new Map();} + return normalizeLicensesResponse(analysisReport.licenses, purls); +} diff --git a/src/license/project_license.js b/src/license/project_license.js new file mode 100644 index 00000000..ce4b7095 --- /dev/null +++ b/src/license/project_license.js @@ -0,0 +1,135 @@ +/** + * Resolves the project license from the manifest and from a LICENSE / LICENSE.md file. + * Used to report manifest-vs-file mismatch and as the baseline for dependency license compatibility. + */ + +import fs from 'node:fs'; +import path from 'node:path'; + +import { selectTrustifyDABackend } from '../index.js'; +import { matchForLicense, availableProviders } from '../provider.js'; +import { addProxyAgent, getTokenHeaders } from '../tools.js'; + +const LICENSE_FILES = ['LICENSE', 'LICENSE.md', 'LICENSE.txt']; + +/** + * Resolve project license from manifest and from LICENSE / LICENSE.md in manifest dir or git root. + * Uses local pattern matching for LICENSE file identification (synchronous). + * For more accurate backend-based identification, use identifyLicense() separately. + * @param {string} manifestPath - path to manifest + * @returns {{ fromManifest: string|null, fromFile: string|null, mismatch: boolean }} + */ +export function getProjectLicense(manifestPath) { + const resolved = path.resolve(manifestPath); + const provider = matchForLicense(resolved, availableProviders); + const fromManifest = provider.readLicenseFromManifest(resolved); + const fromFile = readLicenseFromFile(resolved); + const mismatch = Boolean( + fromManifest && fromFile && normalizeSpdx(fromManifest) !== normalizeSpdx(fromFile) + ); + return { + fromManifest: fromManifest || null, + fromFile: fromFile || null, + mismatch + }; +} + +/** + * Find LICENSE file path in the same directory as the manifest. + * @param {string} manifestPath + * @returns {string|null} - path to LICENSE file or null if not found + */ +export function findLicenseFilePath(manifestPath) { + const manifestDir = path.dirname(path.resolve(manifestPath)); + + for (const name of LICENSE_FILES) { + const filePath = path.join(manifestDir, name); + try { + if (fs.statSync(filePath).isFile()) { + return filePath; + } + } catch { + // skip + } + } + return null; +} + +/** + * Call backend /licenses/identify endpoint to identify license from file. + * @param {string} licenseFilePath - path to LICENSE file + * @param {{}} [opts={}] - options (proxy, token, etc.) + * @returns {Promise} - SPDX identifier or null + */ +export async function identifyLicense(licenseFilePath, opts = {}) { + try { + const fileContent = fs.readFileSync(licenseFilePath); + const backendUrl = selectTrustifyDABackend(opts); + const url = new URL(`${backendUrl}/licenses/identify`); + const tokenHeaders = getTokenHeaders(opts); + const fetchOptions = addProxyAgent({ + method: 'POST', + headers: { + 'Content-Type': 'application/octet-stream', + ...tokenHeaders, + }, + body: fileContent, + }, opts); + + const resp = await fetch(url, fetchOptions); + if (!resp.ok) { + return null; // Fallback to local detection on error + } + + const data = await resp.json(); + // Extract SPDX identifier from backend response + return data?.license?.id || data?.spdx_id || data?.identifier || null; + } catch { + return null; // Fallback to local detection on error + } +} + +/** + * Find and read LICENSE or LICENSE.md; use local pattern matching for identification. + * @param {string} manifestPath + * @returns {string|null} + */ +function readLicenseFromFile(manifestPath) { + const licenseFilePath = findLicenseFilePath(manifestPath); + if (!licenseFilePath) {return null;} + + try { + const content = fs.readFileSync(licenseFilePath, 'utf-8'); + return detectSpdxFromText(content) || content.split('\n')[0]?.trim() || null; + } catch { + return null; + } +} + +/** + * Very simple SPDX detection from common license text (first ~500 chars). + * @param {string} text + * @returns {string|null} + */ +function detectSpdxFromText(text) { + const head = text.slice(0, 500); + if (/Apache License,?\s*Version 2\.0/i.test(head)) {return 'Apache-2.0';} + if (/MIT License/i.test(head) && /Permission is hereby granted/i.test(head)) {return 'MIT';} + if (/GNU GENERAL PUBLIC LICENSE\s+Version 2/i.test(head)) {return 'GPL-2.0-only';} + if (/GNU GENERAL PUBLIC LICENSE\s+Version 3/i.test(head)) {return 'GPL-3.0-only';} + if (/BSD 2-Clause/i.test(head)) {return 'BSD-2-Clause';} + if (/BSD 3-Clause/i.test(head)) {return 'BSD-3-Clause';} + return null; +} + +/** + * Normalize for comparison (lowercase, strip common suffixes). + * @param {string} spdxOrName + * @returns {string} + */ +function normalizeSpdx(spdxOrName) { + const s = String(spdxOrName).trim().toLowerCase(); + // e.g. "MIT" vs "MIT License" + if (s.endsWith(' license')) {return s.slice(0, -8);} + return s; +} diff --git a/src/provider.js b/src/provider.js index cb57998c..57652599 100644 --- a/src/provider.js +++ b/src/provider.js @@ -10,7 +10,7 @@ import Javascript_yarn from './providers/javascript_yarn.js'; import pythonPipProvider from './providers/python_pip.js' /** @typedef {{ecosystem: string, contentType: string, content: string}} Provided */ -/** @typedef {{isSupported: function(string): boolean, validateLockFile: function(string): void, provideComponent: function(string, {}): Provided | Promise, provideStack: function(string, {}): Provided | Promise}} Provider */ +/** @typedef {{isSupported: function(string): boolean, validateLockFile: function(string): void, provideComponent: function(string, {}): Provided | Promise, provideStack: function(string, {}): Provided | Promise, readLicenseFromManifest: function(string): string | null}} Provider */ /** * MUST include all providers here. @@ -26,6 +26,22 @@ export const availableProviders = [ golangGomodulesProvider, pythonPipProvider] +/** + * Match a provider by manifest type only (no lock file check). Used for license reading. + * @param {string} manifestPath - path or name of the manifest + * @param {[Provider]} providers - list of providers to iterate over + * @returns {Provider} + * @throws {Error} when the manifest is not supported and no provider was matched + */ +export function matchForLicense(manifestPath, providers) { + const base = path.parse(manifestPath).base + const provider = providers.find(prov => prov.isSupported(base)) + if (!provider) { + throw new Error(`${base} is not supported`) + } + return provider +} + /** * Match a provider from a list or providers based on file type. * Each provider MUST export 'isSupported' taking a file name-type and returning true if supported. diff --git a/src/providers/base_java.js b/src/providers/base_java.js index c16c48e2..e80a17a7 100644 --- a/src/providers/base_java.js +++ b/src/providers/base_java.js @@ -5,7 +5,6 @@ import { PackageURL } from 'packageurl-js' import { getCustomPath, getGitRootDir, getWrapperPreference, invokeCommand } from "../tools.js" - /** @typedef {import('../provider').Provider} */ /** @typedef {import('../provider').Provided} Provided */ diff --git a/src/providers/base_javascript.js b/src/providers/base_javascript.js index 365adb9e..236ca4c7 100644 --- a/src/providers/base_javascript.js +++ b/src/providers/base_javascript.js @@ -7,9 +7,9 @@ import { getCustom, getCustomPath, invokeCommand, toPurl, toPurlFromString } fro import Manifest from './manifest.js'; -/** @typedef {import('../provider.js').Provider} Provider */ +/** @typedef {import('../provider').Provider} */ -/** @typedef {import('../provider.js').Provided} Provided */ +/** @typedef {import('../provider').Provided} Provided */ /** * The ecosystem identifier for JavaScript/npm packages @@ -150,6 +150,28 @@ export default class Base_javascript { } } + /** + * Read license from manifest (package.json). Reused by npm, pnpm, yarn. + * @param {string} manifestPath - path to package.json + * @returns {string|null} + */ + readLicenseFromManifest(manifestPath) { + try { + const content = JSON.parse(fs.readFileSync(manifestPath, 'utf-8')); + if (typeof content.license === 'string') { + return content.license.trim() || null; + } + if (Array.isArray(content.licenses) && content.licenses.length > 0) { + const first = content.licenses[0]; + const name = first.type || first.name; + return typeof name === 'string' ? name.trim() : null; + } + return null; + } catch { + return null; + } + } + /** * Builds the dependency tree for the project * @param {boolean} includeTransitive - Whether to include transitive dependencies @@ -176,9 +198,10 @@ export default class Base_javascript { const depsObject = this._buildDependencyTree(true); let mainComponent = toPurl(purlType, this.#manifest.name, this.#manifest.version); + const license = this.readLicenseFromManifest(this.#manifest.manifestPath); let sbom = new Sbom(); - sbom.addRoot(mainComponent); + sbom.addRoot(mainComponent, license); this._addDependenciesToSbom(sbom, depsObject); sbom.filterIgnoredDeps(this.#manifest.ignored); @@ -233,9 +256,10 @@ export default class Base_javascript { #getDirectDependencySbom(opts = {}) { const depTree = this._buildDependencyTree(false); let mainComponent = toPurl(purlType, this.#manifest.name, this.#manifest.version); + const license = this.readLicenseFromManifest(this.#manifest.manifestPath); let sbom = new Sbom(); - sbom.addRoot(mainComponent); + sbom.addRoot(mainComponent, license); const rootDeps = this._getRootDependencies(depTree); const sortedDepsKeys = Array diff --git a/src/providers/golang_gomodules.js b/src/providers/golang_gomodules.js index 676e9832..8b5efff5 100644 --- a/src/providers/golang_gomodules.js +++ b/src/providers/golang_gomodules.js @@ -8,7 +8,8 @@ import Sbom from '../sbom.js' import { getCustom, getCustomPath, invokeCommand } from "../tools.js"; -export default { isSupported, validateLockFile, provideComponent, provideStack } + +export default { isSupported, validateLockFile, provideComponent, provideStack, readLicenseFromManifest } /** @typedef {import('../provider').Provider} */ @@ -21,18 +22,26 @@ export default { isSupported, validateLockFile, provideComponent, provideStack } /** * @type {string} ecosystem for npm-npm is 'maven' * @private - */ +*/ const ecosystem = 'golang' const defaultMainModuleVersion = "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 'go.mod' === manifestName } +/** + * Go modules have no standard license field in go.mod + * @param {string} manifestPath - path to go.mod + * @returns {string|null} +*/ +// eslint-disable-next-line no-unused-vars +function readLicenseFromManifest(manifestPath) { return null } + /** * @param {string} manifestDir - the directory where the manifest lies */ @@ -281,7 +290,8 @@ function getSBOM(manifest, opts = {}, includeTransitive) { } const mainModule = toPurl(root, "@") - sbom.addRoot(mainModule) + const license = readLicenseFromManifest(manifest); + sbom.addRoot(mainModule, license) const exhortGoMvsLogicEnabled = getCustom("TRUSTIFY_DA_GO_MVS_LOGIC_ENABLED", "true", opts) if(includeTransitive && exhortGoMvsLogicEnabled === "true") { rows = getFinalPackagesVersionsForModule(rows, manifest, goBin) diff --git a/src/providers/java_gradle.js b/src/providers/java_gradle.js index 4f3f0ae5..6481a154 100644 --- a/src/providers/java_gradle.js +++ b/src/providers/java_gradle.js @@ -69,6 +69,14 @@ export default class Java_gradle extends Base_java { */ validateLockFile() { return true; } + /** + * Gradle manifests (build.gradle, build.gradle.kts) have no standard license field. + * @param {string} manifestPath - path to manifest + * @returns {null} + */ + // eslint-disable-next-line no-unused-vars + readLicenseFromManifest(manifestPath) { return null; } + /** * Provide content and content type for stack analysis. * @param {string} manifest - the manifest path or name @@ -191,7 +199,8 @@ export default class Java_gradle extends Base_java { let sbom = new Sbom(); let root = `${properties.group}:${properties[ROOT_PROJECT_KEY_NAME].match(/Root project '(.+)'/)[1]}:jar:${properties.version}` let rootPurl = this.parseDep(root) - sbom.addRoot(rootPurl) + const license = this.readLicenseFromManifest(manifestPath); + sbom.addRoot(rootPurl, license) let ignoredDeps = this.#getIgnoredDeps(manifestPath); const [runtimeConfig, compileConfig] = this.#extractConfigurations(content); @@ -345,7 +354,8 @@ export default class Java_gradle extends Base_java { let sbom = new Sbom(); let root = `${properties.group}:${properties[ROOT_PROJECT_KEY_NAME].match(/Root project '(.+)'/)[1]}:jar:${properties.version}` let rootPurl = this.parseDep(root) - sbom.addRoot(rootPurl) + const license = this.readLicenseFromManifest(manifestPath); + sbom.addRoot(rootPurl, license) let ignoredDeps = this.#getIgnoredDeps(manifestPath); const [runtimeConfig, compileConfig] = this.#extractConfigurations(content); diff --git a/src/providers/java_maven.js b/src/providers/java_maven.js index 4e6d724b..f87127e1 100644 --- a/src/providers/java_maven.js +++ b/src/providers/java_maven.js @@ -65,6 +65,30 @@ export default class Java_maven extends Base_java { } } + /** + * Read license from pom.xml manifest + * @param {string} manifestPath - path to pom.xml + * @returns {string|null} + */ + readLicenseFromManifest(manifestPath) { + try { + const xml = fs.readFileSync(manifestPath, 'utf-8'); + const parser = new XMLParser({ ignoreAttributes: false }); + const obj = parser.parse(xml); + const project = obj?.project; + if (!project?.licenses?.license) { + return null; + } + const license = Array.isArray(project.licenses.license) + ? project.licenses.license[0] + : project.licenses.license; + const name = (license?.name && license.name.trim()) || null; + return name || null; + } catch { + return null; + } + } + /** * Create a Dot Graph dependency tree for a manifest path. * @param {string} manifest - path for pom.xml @@ -119,7 +143,7 @@ export default class Java_maven extends Base_java { if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { console.error("Dependency tree that will be used as input for creating the BOM =>" + EOL + EOL + content.toString()) } - let sbom = this.createSbomFileFromTextFormat(content.toString(), ignoredDeps, opts); + let sbom = this.createSbomFileFromTextFormat(content.toString(), ignoredDeps, opts, manifest); // delete temp file and directory fs.rmSync(tmpDir, { recursive: true, force: true }) // return dependency graph as string @@ -130,15 +154,17 @@ export default class Java_maven extends Base_java { * * @param {String} textGraphList Text graph String of the manifest * @param {[String]} ignoredDeps List of ignored dependencies to be omitted from sbom + * @param {String} manifestPath Path to the pom.xml manifest * @return {String} formatted sbom Json String with all dependencies */ - createSbomFileFromTextFormat(textGraphList, ignoredDeps, opts) { + createSbomFileFromTextFormat(textGraphList, ignoredDeps, opts, manifestPath) { let lines = textGraphList.split(EOL); // get root component let root = lines[0]; let rootPurl = this.parseDep(root); + const license = this.readLicenseFromManifest(manifestPath); let sbom = new Sbom(); - sbom.addRoot(rootPurl); + sbom.addRoot(rootPurl, license); this.parseDependencyTree(root, 0, lines.slice(1), sbom); return sbom.filterIgnoredDeps(ignoredDeps).getAsJsonString(opts); } @@ -173,7 +199,8 @@ export default class Java_maven extends Base_java { let sbom = new Sbom(); let rootDependency = this.#getRootFromPom(tmpEffectivePom, manifestPath); let purlRoot = this.toPurl(rootDependency.groupId, rootDependency.artifactId, rootDependency.version) - sbom.addRoot(purlRoot) + const license = this.readLicenseFromManifest(manifestPath); + sbom.addRoot(purlRoot, license) dependencies.forEach(dep => { let currentPurl = this.toPurl(dep.groupId, dep.artifactId, dep.version) sbom.addDependency(purlRoot, currentPurl) diff --git a/src/providers/python_pip.js b/src/providers/python_pip.js index 8336e4a3..3fea30e1 100644 --- a/src/providers/python_pip.js +++ b/src/providers/python_pip.js @@ -13,7 +13,7 @@ import { import Python_controller from './python_controller.js' import { getParser, getIgnoreQuery, getPinnedVersionQuery } from './requirements_parser.js' -export default { isSupported, validateLockFile, provideComponent, provideStack } +export default { isSupported, validateLockFile, provideComponent, provideStack, readLicenseFromManifest } /** @typedef {{name: string, version: string, dependencies: DependencyEntry[]}} DependencyEntry */ @@ -31,6 +31,14 @@ function isSupported(manifestName) { return 'requirements.txt' === manifestName } +/** + * Python requirements.txt has no standard license field + * @param {string} manifestPath - path to requirements.txt + * @returns {string|null} + */ +// eslint-disable-next-line no-unused-vars +function readLicenseFromManifest(manifestPath) { return null } + /** * @param {string} manifestDir - the directory where the manifest lies */ @@ -189,7 +197,8 @@ async function createSbomStackAnalysis(manifest, opts = {}) { let dependencies = await pythonController.getDependencies(true); let sbom = new Sbom(); const rootPurl = toPurl(DEFAULT_PIP_ROOT_COMPONENT_NAME, DEFAULT_PIP_ROOT_COMPONENT_VERSION); - sbom.addRoot(rootPurl); + const license = readLicenseFromManifest(manifest); + sbom.addRoot(rootPurl, license); dependencies.forEach(dep => { addAllDependencies(rootPurl, dep, sbom) }) @@ -213,7 +222,8 @@ async function getSbomForComponentAnalysis(manifest, opts = {}) { let dependencies = await pythonController.getDependencies(false); let sbom = new Sbom(); const rootPurl = toPurl(DEFAULT_PIP_ROOT_COMPONENT_NAME, DEFAULT_PIP_ROOT_COMPONENT_VERSION); - sbom.addRoot(rootPurl); + const license = readLicenseFromManifest(manifest); + sbom.addRoot(rootPurl, license); dependencies.forEach(dep => { sbom.addDependency(rootPurl, toPurl(dep.name, dep.version)) }) diff --git a/src/sbom.js b/src/sbom.js index 1e4af9b2..a708410b 100644 --- a/src/sbom.js +++ b/src/sbom.js @@ -14,10 +14,11 @@ export default class Sbom { /** * @param {PackageURL} root - add main/root component for sbom + * @param {string|Array} [licenses] - optional license(s) for the root component * @return Sbom */ - addRoot(root) { - return this.sbomModel.addRoot(root) + addRoot (root, licenses) { + return this.sbomModel.addRoot(root, licenses) } /** diff --git a/src/tools.js b/src/tools.js index 8f6fd115..756968e5 100644 --- a/src/tools.js +++ b/src/tools.js @@ -1,6 +1,7 @@ import { execFileSync } from "child_process"; import { EOL } from "os"; +import { HttpsProxyAgent } from "https-proxy-agent"; import { PackageURL } from "packageurl-js"; export const RegexNotToBeLogged = /TRUSTIFY_DA_(.*_)?TOKEN|ex-.*-token|trust-.*-token/ @@ -170,3 +171,63 @@ export function invokeCommand(bin, args, opts={}) { return execFileSync(bin, args, {...{stdio: 'pipe', encoding: 'utf-8'}, ...opts}) } + + +export const TRUSTIFY_DA_TOKEN_HEADER = "trust-da-token"; +export const TRUSTIFY_DA_TELEMETRY_ID_HEADER = "telemetry-anonymous-id"; +export const TRUSTIFY_DA_SOURCE_HEADER = "trust-da-source" +export const TRUSTIFY_DA_OPERATION_TYPE_HEADER = "trust-da-operation-type" +export const TRUSTIFY_DA_PACKAGE_MANAGER_HEADER = "trust-da-pkg-manager" + +/** + * Adds proxy agent configuration to fetch options if a proxy URL is specified + * @param {RequestInit} options - The base fetch options + * @param {import("index.js").Options} opts - The trustify DA options that may contain proxy configuration + * @returns {RequestInit} The fetch options with proxy agent if applicable + */ +export function addProxyAgent(options, opts) { + const proxyUrl = getCustom('TRUSTIFY_DA_PROXY_URL', null, opts); + if (proxyUrl) { + options.agent = new HttpsProxyAgent(proxyUrl); + } + return options; +} + +/** + * Utility function for fetching vendor tokens + * @param {import("index.js").Options} [opts={}] - optional various options to pass along the application + * @returns {{}} + */ +export function getTokenHeaders(opts = {}) { + let headers = {} + setCustomHeader(TRUSTIFY_DA_TOKEN_HEADER, headers, 'TRUSTIFY_DA_TOKEN', opts); + setCustomHeader(TRUSTIFY_DA_SOURCE_HEADER, headers, 'TRUSTIFY_DA_SOURCE', opts); + setCustomHeader(TRUSTIFY_DA_OPERATION_TYPE_HEADER, headers, TRUSTIFY_DA_OPERATION_TYPE_HEADER.toUpperCase().replaceAll("-", "_"), opts); + setCustomHeader(TRUSTIFY_DA_PACKAGE_MANAGER_HEADER, headers, TRUSTIFY_DA_PACKAGE_MANAGER_HEADER.toUpperCase().replaceAll("-", "_"), opts) + setCustomHeader(TRUSTIFY_DA_TELEMETRY_ID_HEADER, headers, 'TRUSTIFY_DA_TELEMETRY_ID', opts); + + if (getCustom("TRUSTIFY_DA_DEBUG", null, opts) === "true") { + console.log("Headers Values to be sent to Trustify DA backend:" + EOL) + for (const headerKey in headers) { + if (!headerKey.match(RegexNotToBeLogged)) { + console.log(`${headerKey}: ${headers[headerKey]}`) + } + } + } + return headers +} + +/** + * + * @param {string} headerName - the header name to populate in request + * @param headers + * @param {string} optsKey - key in the options object to use the value for + * @param {import("index.js").Options} [opts={}] - options input object to fetch header values from + * @private + */ +function setCustomHeader(headerName, headers, optsKey, opts) { + let customHeaderValue = getCustom(optsKey, null, opts); + if (customHeaderValue) { + headers[headerName] = customHeaderValue + } +} diff --git a/test/analysis.test.js b/test/analysis.test.js index a19be85a..438d8598 100644 --- a/test/analysis.test.js +++ b/test/analysis.test.js @@ -23,10 +23,10 @@ function interceptAndRun(handler, test) { function determineResponse(req, res, ctx) { let response - if (req.headers.get("ex-snyk-token") == null) { + if (req.headers.get("ex-provider-1-token") == null) { response = res(ctx.status(400)); - } else if (req.headers.get("ex-snyk-token") === "good-dummy-token") { + } else if (req.headers.get("ex-provider-1-token") === "good-dummy-token") { response = res(ctx.status(200)); } else { response = res(ctx.status(401)); @@ -44,7 +44,7 @@ suite('testing the analysis module for sending api requests', () => { }; test('invoking the requestComponent should return a json report', interceptAndRun( - http.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { + http.post(`${backendUrl}/api/v5/analysis`, (req, res, ctx) => { // interception route, will return ok response for our fake content type if (fakeProvided.contentType === req.headers.get('content-type')) { return res(ctx.json({ dummy: 'response' })) @@ -83,7 +83,7 @@ suite('testing the analysis module for sending api requests', () => { test('invoking the requestStack for html should return a string report', interceptAndRun( // interception route, will return ok response for our fake content type - http.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { + http.post(`${backendUrl}/api/v5/analysis`, (req, res, ctx) => { if (fakeProvided.contentType === req.headers.get('content-type')) { return res(ctx.text('html-content')) } @@ -98,7 +98,7 @@ suite('testing the analysis module for sending api requests', () => { test('invoking the requestStack for non-html should return a json report', interceptAndRun( // interception route, will return ok response for our fake content type - http.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { + http.post(`${backendUrl}/api/v5/analysis`, (req, res, ctx) => { if (fakeProvided.contentType === req.headers.get('content-type')) { return res(ctx.json({ dummy: 'response' })) } @@ -115,13 +115,13 @@ suite('testing the analysis module for sending api requests', () => { test('invoking validateToken function with good token', interceptAndRun( // interception route, will return ok response for our fake content type - http.get(`${backendUrl}/api/v3/token`, (req, res, ctx) => { + http.get(`${backendUrl}/api/v5/token`, (req, res, ctx) => { return determineResponse(req, res, ctx); }), async () => { let options = { - 'TRUSTIFY_DA_SNYK_TOKEN': 'good-dummy-token' + 'TRUSTIFY_DA_PROVIDER_1_TOKEN': 'good-dummy-token' } // verify response as expected let res = await analysis.validateToken(backendUrl, options) @@ -130,13 +130,13 @@ suite('testing the analysis module for sending api requests', () => { )) test('invoking validateToken function with bad token', interceptAndRun( // interception route, will return ok response for our fake content type - http.get(`${backendUrl}/api/v3/token`, (req, res, ctx) => { + http.get(`${backendUrl}/api/v5/token`, (req, res, ctx) => { return determineResponse(req, res, ctx); }), async () => { let options = { - 'TRUSTIFY_DA_SNYK_TOKEN': 'bad-dummy-token' + 'TRUSTIFY_DA_PROVIDER_1_TOKEN': 'bad-dummy-token' } // verify response as expected let res = await analysis.validateToken(backendUrl, options) @@ -145,7 +145,7 @@ suite('testing the analysis module for sending api requests', () => { )) test('invoking validateToken function without token', interceptAndRun( // interception route, will return ok response for our fake content type - http.get(`${backendUrl}/api/v3/token`, (req, res, ctx) => { + http.get(`${backendUrl}/api/v5/token`, (req, res, ctx) => { return determineResponse(req, res, ctx); }), @@ -172,18 +172,18 @@ suite('testing the analysis module for sending api requests', () => { isSupported: () => { } // not required for this test }; - afterEach(() => delete process.env['TRUSTIFY_DA_SNYK_TOKEN']) + afterEach(() => delete process.env['TRUSTIFY_DA_PROVIDER_1_TOKEN']) test('when the relevant token environment variables are set, verify corresponding headers are included', interceptAndRun( // interception route, will return ok response if found the expected token - http.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { - if ('dummy-snyk-token' === req.headers.get('ex-snyk-token')) { + http.post(`${backendUrl}/api/v5/analysis`, (req, res, ctx) => { + if ('dummy-provider-1-token' === req.headers.get('ex-provider-1-token')) { return res(ctx.json({ ok: 'ok' })) } return res(ctx.status(400)) }), async () => { - process.env['TRUSTIFY_DA_SNYK_TOKEN'] = 'dummy-snyk-token' + process.env['TRUSTIFY_DA_PROVIDER_1_TOKEN'] = 'dummy-provider-1-token' let res = await analysis.requestStack(fakeProvider, fakeManifest, backendUrl) expect(res).to.deep.equal({ ok: 'ok' }) } @@ -191,8 +191,8 @@ suite('testing the analysis module for sending api requests', () => { test('when the relevant token environment variables are not set, verify no corresponding headers are included', interceptAndRun( // interception route, will return ok response if found the expected token - http.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { - if (!req.headers.get('ex-snyk-token')) { + http.post(`${backendUrl}/api/v5/analysis`, (req, res, ctx) => { + if (!req.headers.get('ex-provider-1-token')) { return res(ctx.json({ ok: 'ok' })) } return res(ctx.status(400)) @@ -219,7 +219,7 @@ suite('testing the analysis module for sending api requests', () => { }) test('when HTTP proxy is configured, verify agent is set correctly', interceptAndRun( - http.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { + http.post(`${backendUrl}/api/v5/analysis`, (req, res, ctx) => { // The request should go through the proxy return res(ctx.json({ ok: 'ok' })) }), @@ -234,7 +234,7 @@ suite('testing the analysis module for sending api requests', () => { )) test('when HTTPS proxy is configured, verify agent is set correctly', interceptAndRun( - http.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { + http.post(`${backendUrl}/api/v5/analysis`, (req, res, ctx) => { // The request should go through the proxy return res(ctx.json({ ok: 'ok' })) }), @@ -249,7 +249,7 @@ suite('testing the analysis module for sending api requests', () => { )) test('when proxy is configured via environment variable, verify agent is set correctly', interceptAndRun( - http.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { + http.post(`${backendUrl}/api/v5/analysis`, (req, res, ctx) => { // The request should go through the proxy return res(ctx.json({ ok: 'ok' })) }), @@ -261,7 +261,7 @@ suite('testing the analysis module for sending api requests', () => { )) test('when no proxy is configured, verify no agent is set', interceptAndRun( - http.post(`${backendUrl}/api/v3/analysis`, (req, res, ctx) => { + http.post(`${backendUrl}/api/v5/analysis`, (req, res, ctx) => { // The request should go directly without proxy return res(ctx.json({ ok: 'ok' })) }), diff --git a/test/exhort-backend-utils.test.js b/test/exhort-backend-utils.test.js index 13130a7d..838ddfcb 100644 --- a/test/exhort-backend-utils.test.js +++ b/test/exhort-backend-utils.test.js @@ -3,8 +3,8 @@ import * as chai from 'chai' import * as sinon from 'sinon' import sinonChai from 'sinon-chai' -import { getTokenHeaders } from '../src/analysis.js'; import { selectTrustifyDABackend } from '../src/index.js' +import { getTokenHeaders } from '../src/tools.js'; chai.use(sinonChai) diff --git a/test/provider.test.js b/test/provider.test.js index 2347aa54..40a87af7 100644 --- a/test/provider.test.js +++ b/test/provider.test.js @@ -1,6 +1,6 @@ import { expect } from 'chai' -import { match } from "../src/provider.js" +import { match, matchForLicense, availableProviders } from "../src/provider.js" suite('testing the provider utility function', () => { // create a dummy provider for 'dummy_file.typ' @@ -21,3 +21,123 @@ suite('testing the provider utility function', () => { .to.throw('unknown.manifest is not supported') }) }); + +suite('testing the matchForLicense utility function', () => { + // create dummy providers with different manifest types + const pomProvider = { + isSupported: nameType => 'pom.xml' === nameType, + validateLockFile: () => true, + readLicenseFromManifest: () => 'Apache-2.0', + provideComponent: () => {}, + provideStack: () => {} + }; + + const packageJsonProvider = { + isSupported: nameType => 'package.json' === nameType, + validateLockFile: () => false, // No lock file - should still match for license + readLicenseFromManifest: () => 'MIT', + provideComponent: () => {}, + provideStack: () => {} + }; + + const goModProvider = { + isSupported: nameType => 'go.mod' === nameType, + validateLockFile: () => true, + readLicenseFromManifest: () => null, + provideComponent: () => {}, + provideStack: () => {} + }; + + const testProviders = [pomProvider, packageJsonProvider, goModProvider]; + + test('should match pom.xml provider by manifest name', () => { + const provider = matchForLicense('/path/to/pom.xml', testProviders); + expect(provider).to.equal(pomProvider); + }); + + test('should match package.json provider by manifest name', () => { + const provider = matchForLicense('/path/to/package.json', testProviders); + expect(provider).to.equal(packageJsonProvider); + }); + + test('should match go.mod provider by manifest name', () => { + const provider = matchForLicense('/path/to/go.mod', testProviders); + expect(provider).to.equal(goModProvider); + }); + + test('should match provider even when lock file does not exist', () => { + // packageJsonProvider has validateLockFile returning false + // but matchForLicense should not check lock file + const provider = matchForLicense('/no/lock/here/package.json', testProviders); + expect(provider).to.equal(packageJsonProvider); + }); + + test('should match provider with just filename (no full path)', () => { + const provider = matchForLicense('pom.xml', testProviders); + expect(provider).to.equal(pomProvider); + }); + + test('should throw error when no provider matches manifest type', () => { + expect(() => matchForLicense('/path/to/unknown.txt', testProviders)) + .to.throw('unknown.txt is not supported'); + }); + + test('should throw error for empty manifest name', () => { + expect(() => matchForLicense('', testProviders)) + .to.throw('is not supported'); + }); + + suite('real provider matching', () => { + test('should match Java Maven provider for pom.xml', () => { + const provider = matchForLicense('/some/path/pom.xml', availableProviders); + expect(provider).to.exist; + expect(provider.isSupported('pom.xml')).to.be.true; + }); + + test('should match Java Gradle Groovy provider for build.gradle', () => { + const provider = matchForLicense('/some/path/build.gradle', availableProviders); + expect(provider).to.exist; + expect(provider.isSupported('build.gradle')).to.be.true; + }); + + test('should match Java Gradle Kotlin provider for build.gradle.kts', () => { + const provider = matchForLicense('/some/path/build.gradle.kts', availableProviders); + expect(provider).to.exist; + expect(provider.isSupported('build.gradle.kts')).to.be.true; + }); + + test('should match JavaScript provider for package.json', () => { + const provider = matchForLicense('/some/path/package.json', availableProviders); + expect(provider).to.exist; + expect(provider.isSupported('package.json')).to.be.true; + }); + + test('should match Golang provider for go.mod', () => { + const provider = matchForLicense('/some/path/go.mod', availableProviders); + expect(provider).to.exist; + expect(provider.isSupported('go.mod')).to.be.true; + }); + + test('should match Python provider for requirements.txt', () => { + const provider = matchForLicense('/some/path/requirements.txt', availableProviders); + expect(provider).to.exist; + expect(provider.isSupported('requirements.txt')).to.be.true; + }); + + test('all matched providers should have readLicenseFromManifest method', () => { + const manifests = [ + 'pom.xml', + 'build.gradle', + 'build.gradle.kts', + 'package.json', + 'go.mod', + 'requirements.txt' + ]; + + manifests.forEach(manifest => { + const provider = matchForLicense(`/test/${manifest}`, availableProviders); + expect(provider.readLicenseFromManifest).to.be.a('function'); + }); + }); + }); +}); diff --git a/test/providers/license.test.js b/test/providers/license.test.js new file mode 100644 index 00000000..2e7e1438 --- /dev/null +++ b/test/providers/license.test.js @@ -0,0 +1,136 @@ +import path from 'path' + +import { expect } from 'chai' + +import golangGomodulesProvider from '../../src/providers/golang_gomodules.js' +import Java_gradle_groovy from '../../src/providers/java_gradle_groovy.js' +import Java_gradle_kotlin from '../../src/providers/java_gradle_kotlin.js' +import Java_maven from '../../src/providers/java_maven.js' +import Javascript_npm from '../../src/providers/javascript_npm.js' +import Javascript_pnpm from '../../src/providers/javascript_pnpm.js' +import Javascript_yarn from '../../src/providers/javascript_yarn.js' +import pythonPipProvider from '../../src/providers/python_pip.js' + +suite('testing readLicenseFromManifest with existing test manifests', () => { + + suite('Java Maven provider', () => { + const provider = new Java_maven(); + + test('should read Apache-2.0 license when found', () => { + const pomPath = path.resolve('test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/pom.xml'); + const license = provider.readLicenseFromManifest(pomPath); + expect(license).to.equal('Apache-2.0'); + }); + + test('should return null when license not present', () => { + const pomPath = path.resolve('test/providers/tst_manifests/maven/pom_deps_with_no_ignore/pom.xml'); + const license = provider.readLicenseFromManifest(pomPath); + expect(license).to.be.null; + }); + }); + + suite('Java Gradle Groovy provider', () => { + const provider = new Java_gradle_groovy(); + + test('should always return null (no standard license field)', () => { + const gradlePath = path.resolve('test/providers/tst_manifests/gradle/deps_with_no_ignore_common_paths/build.gradle'); + const license = provider.readLicenseFromManifest(gradlePath); + expect(license).to.be.null; + }); + }); + + suite('Java Gradle Kotlin provider', () => { + const provider = new Java_gradle_kotlin(); + + test('should always return null (no standard license field)', () => { + const gradlePath = path.resolve('test/providers/tst_manifests/gradle/deps_with_no_ignore_common_paths/build.gradle.kts'); + const license = provider.readLicenseFromManifest(gradlePath); + expect(license).to.be.null; + }); + }); + + suite('JavaScript npm provider', () => { + const provider = new Javascript_npm(); + + test('should read ISC license when found', () => { + const packagePath = path.resolve('test/providers/tst_manifests/npm/package_json_deps_with_exhortignore_object/package.json'); + const license = provider.readLicenseFromManifest(packagePath); + expect(license).to.equal('ISC'); + }); + + test('should return null for non-existent file', () => { + const license = provider.readLicenseFromManifest('/fake/path/package.json'); + expect(license).to.be.null; + }); + }); + + suite('JavaScript pnpm provider', () => { + const provider = new Javascript_pnpm(); + + test('should read ISC license when found', () => { + const packagePath = path.resolve('test/providers/tst_manifests/pnpm/package_json_deps_with_exhortignore_object/package.json'); + const license = provider.readLicenseFromManifest(packagePath); + expect(license).to.equal('ISC'); + }); + + test('should return null for non-existent file', () => { + const license = provider.readLicenseFromManifest('/fake/path/package.json'); + expect(license).to.be.null; + }); + }); + + suite('JavaScript yarn provider', () => { + const provider = new Javascript_yarn(); + + test('should read ISC license when found', () => { + const packagePath = path.resolve('test/providers/tst_manifests/yarn-classic/package_json_deps_with_exhortignore_object/package.json'); + const license = provider.readLicenseFromManifest(packagePath); + expect(license).to.equal('ISC'); + }); + + test('should return null for non-existent file', () => { + const license = provider.readLicenseFromManifest('/fake/path/package.json'); + expect(license).to.be.null; + }); + }); + + suite('Golang go.mod provider', () => { + test('should always return null (no standard license field)', () => { + const goModPath = path.resolve('test/providers/tst_manifests/golang/go_mod_no_ignore/go.mod'); + const license = golangGomodulesProvider.readLicenseFromManifest(goModPath); + expect(license).to.be.null; + }); + }); + + suite('Python requirements.txt provider', () => { + test('should always return null (no standard license field)', () => { + const reqPath = path.resolve('test/providers/tst_manifests/pip/pip_requirements_txt_no_ignore/requirements.txt'); + const license = pythonPipProvider.readLicenseFromManifest(reqPath); + expect(license).to.be.null; + }); + }); + + suite('All providers have readLicenseFromManifest method', () => { + const allProviders = [ + { name: 'Java Maven', instance: new Java_maven() }, + { name: 'Java Gradle Groovy', instance: new Java_gradle_groovy() }, + { name: 'Java Gradle Kotlin', instance: new Java_gradle_kotlin() }, + { name: 'JavaScript npm', instance: new Javascript_npm() }, + { name: 'JavaScript pnpm', instance: new Javascript_pnpm() }, + { name: 'JavaScript yarn', instance: new Javascript_yarn() }, + { name: 'Golang', instance: golangGomodulesProvider }, + { name: 'Python', instance: pythonPipProvider } + ]; + + allProviders.forEach(({ name, instance }) => { + test(`${name} provider exports readLicenseFromManifest`, () => { + expect(instance.readLicenseFromManifest).to.be.a('function'); + }); + + test(`${name} provider readLicenseFromManifest accepts manifestPath parameter`, () => { + // Should not throw when called with a path argument + expect(() => instance.readLicenseFromManifest('/test/path')).to.not.throw(); + }); + }); + }); +}); diff --git a/test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/component_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/component_analysis_expected_sbom.json index 915610fc..e2d6c173 100644 --- a/test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/component_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/component_analysis_expected_sbom.json @@ -10,7 +10,14 @@ "version": "0.0.1", "purl": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", "type": "application", - "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" + "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", + "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + } + ] } }, "components": [ @@ -20,7 +27,14 @@ "version": "0.0.1", "purl": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", "type": "application", - "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" + "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", + "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + } + ] }, { "group": "org.bouncycastle", diff --git a/test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/pom.xml b/test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/pom.xml index ad641fdb..6af16633 100644 --- a/test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/pom.xml +++ b/test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/pom.xml @@ -6,7 +6,16 @@ pom-with-deps-and-ignore pom-with-dependency-not-ignored-for-tests 0.0.1 - + + + + + Apache-2.0 + https://www.apache.org/licenses/LICENSE-2.0 + repo + Apache License, Version 2.0 + + 1.2.17 diff --git a/test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/stack_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/stack_analysis_expected_sbom.json index 72759f37..bdf83b2e 100644 --- a/test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/stack_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/stack_analysis_expected_sbom.json @@ -10,7 +10,14 @@ "version": "0.0.1", "purl": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", "type": "application", - "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" + "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", + "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + } + ] } }, "components": [ @@ -20,7 +27,14 @@ "version": "0.0.1", "purl": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", "type": "application", - "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" + "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", + "licenses": [ + { + "license": { + "id": "Apache-2.0" + } + } + ] }, { "group": "org.bouncycastle", From 6549d2a7fad1c1b7a2ef134316f253f6d3eb8eb8 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Wed, 11 Mar 2026 15:09:36 +0000 Subject: [PATCH 086/102] chore: fix requirements.txt parser init & re-enable python tests (#404) --- src/providers/requirements_parser.js | 6 +- test/providers/python_pip.test.js | 92 ++++++++++++++-------------- 2 files changed, 47 insertions(+), 51 deletions(-) diff --git a/src/providers/requirements_parser.js b/src/providers/requirements_parser.js index db486e4f..e14b1c58 100644 --- a/src/providers/requirements_parser.js +++ b/src/providers/requirements_parser.js @@ -5,11 +5,7 @@ import { Language, Parser, Query } from 'web-tree-sitter'; const require = createRequire(import.meta.url); async function init() { - await Parser.init({ - locateFile() { - return require.resolve('web-tree-sitter/web-tree-sitter.wasm') - } - }); + await Parser.init(); return await Language.load(require.resolve('tree-sitter-requirements/tree-sitter-requirements.wasm')); } diff --git a/test/providers/python_pip.test.js b/test/providers/python_pip.test.js index 01d88eaf..0d1666d6 100644 --- a/test/providers/python_pip.test.js +++ b/test/providers/python_pip.test.js @@ -13,7 +13,7 @@ async function sharedComponentAnalysisTestFlow(testCase, usePipDepTreeUtility) { let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/pip/${testCase}/expected_component_sbom.json`).toString().trim() expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) // invoke sut stack analysis for scenario manifest - let opts = { "TRUSTIFY_DA_PIP_USE_DEP_TREE" : usePipDepTreeUtility } + let opts = { TRUSTIFY_DA_PIP_USE_DEP_TREE: usePipDepTreeUtility.toString() } let providedDatForComponent = await pythonPip.provideComponent(`test/providers/tst_manifests/pip/${testCase}/requirements.txt`, opts) // verify returned data matches expectation expect(providedDatForComponent).to.deep.equal({ @@ -34,7 +34,7 @@ async function sharedStackAnalysisTestFlow(testCase, usePipDepTreeUtility) { } catch (error) { throw new Error('fail installing requirements.txt manifest in created virtual python environment', {cause: error}) } - let opts = { "TRUSTIFY_DA_PIP_USE_DEP_TREE" : usePipDepTreeUtility } + let opts = { TRUSTIFY_DA_PIP_USE_DEP_TREE: usePipDepTreeUtility.toString() } let providedDataForStack = await pythonPip.provideStack(`test/providers/tst_manifests/pip/${testCase}/requirements.txt`, opts) // new(year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): Date @@ -48,14 +48,14 @@ async function sharedStackAnalysisTestFlow(testCase, usePipDepTreeUtility) { } suite('testing the python-pip data provider', () => { - // [ - // {name: 'requirements.txt', expected: true}, - // {name: 'some_other.file', expected: false} - // ].forEach(testCase => { - // test(`verify isSupported returns ${testCase.expected} for ${testCase.name}`, () => - // expect(pythonPip.isSupported(testCase.name)).to.equal(testCase.expected) - // ) - // }); + [ + {name: 'requirements.txt', expected: true}, + {name: 'some_other.file', expected: false} + ].forEach(testCase => { + test(`verify isSupported returns ${testCase.expected} for ${testCase.name}`, () => + expect(pythonPip.isSupported(testCase.name)).to.equal(testCase.expected) + ) + }); [ // "pip_requirements_txt_no_ignore", @@ -72,46 +72,46 @@ suite('testing the python-pip data provider', () => { // 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(`verify requirements.txt sbom provided for stack analysis using pipdeptree utility with scenario ${scenario}`, () => { - // sharedStackAnalysisTestFlow(testCase, true); - // // 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 requirements.txt sbom provided for stack analysis using pipdeptree utility with scenario ${scenario}`, async () => { + await sharedStackAnalysisTestFlow(testCase, true); + // 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 requirements.txt sbom provided for component analysis using pipdeptree utility with scenario ${scenario}`, () => { - // sharedComponentAnalysisTestFlow(testCase, true); - // // 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(`verify requirements.txt sbom provided for component analysis using pipdeptree utility with scenario ${scenario}`, async () => { + await sharedComponentAnalysisTestFlow(testCase, true); + // these test cases takes ~1400-2000 ms each pr >10000 in CI (for the first test-case) + }).timeout(process.env.GITHUB_ACTIONS ? 15000 : 10000) }); }).beforeAll(() => clock = useFakeTimers(new Date('2023-10-01T00:00:00.000Z'))).afterAll(()=> clock.restore()); -// suite('testing the python-pip data provider with virtual environment', () => { -// [ -// "pip_requirements_virtual_env_txt_no_ignore", -// "pip_requirements_virtual_env_with_ignore" -// ].forEach(testCase => { -// let scenario = testCase.replace('pip_requirements_', '').replaceAll('_', ' ') -// test(`verify requirements.txt sbom provided for stack analysis using virutal python environment, with scenario ${scenario}`, async () => { -// // load the expected sbom stack analysis -// let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/pip/${testCase}/expected_stack_sbom.json`,).toString() -// process.env["TRUSTIFY_DA_PYTHON_VIRTUAL_ENV"] = "true" -// // process.env["TRUSTIFY_DA_DEBUG"] = "true" -// expectedSbom = JSON.stringify(JSON.parse(expectedSbom), null, 4) -// // invoke sut stack analysis for scenario manifest -// let providedDataForStack = await pythonPip.provideStack(`test/providers/tst_manifests/pip/${testCase}/requirements.txt`) -// // new(year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): Date +suite('testing the python-pip data provider with virtual environment', () => { + [ + "pip_requirements_virtual_env_txt_no_ignore", + "pip_requirements_virtual_env_with_ignore" + ].forEach(testCase => { + let scenario = testCase.replace('pip_requirements_', '').replaceAll('_', ' ') + test(`verify requirements.txt sbom provided for stack analysis using virutal python environment, with scenario ${scenario}`, async () => { + // load the expected sbom stack analysis + let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/pip/${testCase}/expected_stack_sbom.json`,).toString() + expectedSbom = JSON.stringify(JSON.parse(expectedSbom), null, 4) + // invoke sut stack analysis for scenario manifest + let providedDataForStack = await pythonPip.provideStack(`test/providers/tst_manifests/pip/${testCase}/requirements.txt`, { + TRUSTIFY_DA_PYTHON_VIRTUAL_ENV: "true" + }) + // 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 -// providedDataForStack.content = JSON.stringify(JSON.parse(providedDataForStack.content), null, 4) -// expect(providedDataForStack.content).to.deep.equal(expectedSbom) -// // expect(providedDataForStack).to.deep.equal({ -// // ecosystem: 'pip', -// // contentType: 'application/vnd.cyclonedx+json', -// // content: expectedSbom -// // }) -// // these test cases takes ~2500-2700 ms each pr >10000 in CI (for the first test-case) -// }).timeout(process.env.GITHUB_ACTIONS ? 60000 : 30000) -// }) + // providedDataForStack.content = providedDataForStack.content.replaceAll("\"timestamp\":\"[a-zA-Z0-9\\-\\:]+\"","") + // verify returned data matches expectation + providedDataForStack.content = JSON.stringify(JSON.parse(providedDataForStack.content), null, 4) + expect(providedDataForStack.content).to.deep.equal(expectedSbom) + // expect(providedDataForStack).to.deep.equal({ + // ecosystem: 'pip', + // contentType: 'application/vnd.cyclonedx+json', + // content: expectedSbom + // }) + // these test cases takes ~2500-2700 ms each pr >10000 in CI (for the first test-case) + }).timeout(process.env.GITHUB_ACTIONS ? 60000 : 30000) + }) -// }).beforeAll(() => {clock = useFakeTimers(new Date('2023-10-01T00:00:00.000Z'))}).afterAll(()=> clock.restore()); +}).beforeAll(() => {clock = useFakeTimers(new Date('2023-10-01T00:00:00.000Z'))}).afterAll(()=> clock.restore()); From ff266a398cddf466726cf68fbdb805851bc9a463 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Wed, 11 Mar 2026 17:12:31 +0000 Subject: [PATCH 087/102] chore: use path.resolve to find tree-sitter wasm files (#407) --- src/providers/requirements_parser.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/providers/requirements_parser.js b/src/providers/requirements_parser.js index e14b1c58..d06f30ec 100644 --- a/src/providers/requirements_parser.js +++ b/src/providers/requirements_parser.js @@ -1,12 +1,12 @@ -import { createRequire } from 'node:module'; +import { fileURLToPath } from 'url'; import { Language, Parser, Query } from 'web-tree-sitter'; -const require = createRequire(import.meta.url); +const wasmPath = fileURLToPath(import.meta.resolve('tree-sitter-requirements/tree-sitter-requirements.wasm')); async function init() { await Parser.init(); - return await Language.load(require.resolve('tree-sitter-requirements/tree-sitter-requirements.wasm')); + return await Language.load(wasmPath); } export async function getParser() { From f2c4df7d45b95f02595eee844a09ac2fdfc41c23 Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Thu, 12 Mar 2026 10:36:33 +0100 Subject: [PATCH 088/102] feat: fall back to LICENSE file (#409) Signed-off-by: Ruben Romero Montes Co-authored-by: Claude Sonnet --- README.md | 30 +++++ docs/license-resolution-and-compliance.md | 23 +++- package.json | 3 +- src/index.js | 2 +- src/license/compatibility.js | 53 --------- src/license/index.js | 8 +- src/license/license_utils.js | 127 ++++++++++++++++++++++ src/license/project_license.js | 79 +++----------- src/providers/base_javascript.js | 13 ++- src/providers/golang_gomodules.js | 3 +- src/providers/java_gradle.js | 3 +- src/providers/java_maven.js | 19 ++-- src/providers/python_pip.js | 3 +- test/providers/license_fallback.test.js | 70 ++++++++++++ tsconfig.dev.json | 6 + 15 files changed, 296 insertions(+), 146 deletions(-) delete mode 100644 src/license/compatibility.js create mode 100644 src/license/license_utils.js create mode 100644 test/providers/license_fallback.test.js create mode 100644 tsconfig.dev.json diff --git a/README.md b/README.md index b74c62a3..a01da90b 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,21 @@ let imageAnalysisWithArch = await client.imageAnalysis(['httpd:2.4.49^^amd64']) ``` + +

License Detection

+

+The client automatically detects your project's license with intelligent fallback: +

+
    +
  • Manifest-first: For ecosystems with license support (Maven, JavaScript), reads from manifest file (pom.xml, package.json)
  • +
  • LICENSE file fallback: If no license in manifest, or for ecosystems without license support (Gradle, Go, Python), automatically reads from LICENSE, LICENSE.md, or LICENSE.txt
  • +
  • SBOM integration: Detected licenses are included in generated SBOMs for all ecosystems
  • +
  • SPDX support: Automatically detects common licenses (Apache-2.0, MIT, GPL, BSD) from LICENSE file content
  • +
+

+See License Resolution and Compliance for detailed documentation. +

+ +

License Detection

+

+The client automatically detects your project's license with intelligent fallback: +

+
    +
  • Manifest-first: For ecosystems with license support (Maven, JavaScript), reads from manifest file (pom.xml, package.json)
  • +
  • LICENSE file fallback: If no license in manifest, or for ecosystems without license support (Gradle, Go, Python), automatically reads from LICENSE, LICENSE.md, or LICENSE.txt
  • +
  • SBOM integration: Detected licenses are included in generated SBOMs for all ecosystems
  • +
  • SPDX support: Automatically detects common licenses (Apache-2.0, MIT, GPL, BSD) from LICENSE file content
  • +
+

+See License Resolution and Compliance for detailed documentation. +

+ +

Excluding Packages

Excluding a package from any analysis can be achieved by marking the package for exclusion. diff --git a/docs/license-resolution-and-compliance.md b/docs/license-resolution-and-compliance.md index bfd88acc..479f018c 100644 --- a/docs/license-resolution-and-compliance.md +++ b/docs/license-resolution-and-compliance.md @@ -15,16 +15,23 @@ License analysis is **enabled by default** and provides: ### Project License Detection -The client looks for your project’s license in two places: +The client looks for your project’s license with **automatic fallback**: -1. **Manifest file** — Reads the license field from: +1. **Primary: Manifest file** — Reads the license field from: - `package.json`: `license` field - `pom.xml`: `` element - - Other ecosystems: varies by ecosystem (some don’t have standard license fields) + - `build.gradle` / `build.gradle.kts`: No standard license field (falls back to LICENSE file) + - `go.mod`: No standard license field (falls back to LICENSE file) + - `requirements.txt`: No standard license field (falls back to LICENSE file) -2. **LICENSE file** — Searches for `LICENSE`, `LICENSE.md`, or `LICENSE.txt` in the same directory as your manifest +2. **Fallback: LICENSE file** — If no license is found in the manifest, searches for `LICENSE`, `LICENSE.md`, or `LICENSE.txt` in the same directory as your manifest -The backend’s license identification API is used for accurate LICENSE file detection. +**How the fallback works:** +- **Ecosystems with manifest license support** (Maven, JavaScript): Uses manifest license if present, otherwise falls back to LICENSE file +- **Ecosystems without manifest license support** (Gradle, Go, Python): Automatically reads from LICENSE file +- **SPDX detection**: Common licenses (Apache-2.0, MIT, GPL-2.0/3.0, LGPL-2.1/3.0, AGPL-3.0, BSD-2-Clause/3-Clause) are automatically detected from LICENSE file content + +The backend’s license identification API is used for accurate LICENSE file detection when available. ### Compatibility Checking @@ -156,3 +163,9 @@ If you have a permissive-licensed project (MIT, Apache) but depend on GPL-licens ## SBOM Integration Project license information is automatically included in generated SBOMs (CycloneDX format) in the root component’s `licenses` field. + +**LICENSE file fallback in SBOMs:** +- **All ecosystems** now include license information in the SBOM when available +- **Gradle, Go, Python projects**: Even though these ecosystems don’t have manifest license fields, the SBOM will include the license from your LICENSE file +- **Maven, JavaScript projects**: The SBOM uses the manifest license, or falls back to LICENSE file if not specified in manifest +- If neither manifest nor LICENSE file contains a license, the SBOM root component will have no `licenses` field diff --git a/package.json b/package.json index 13e80b15..fcf2ed35 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,8 @@ "tests": "mocha --config .mocharc.json --grep \".*analysis module.*\" --invert", "tests:rep": "mocha --reporter-option maxDiffSize=0 --reporter json > unit-tests-result.json", "precompile": "rm -rf dist", - "compile": "tsc -p tsconfig.json" + "compile": "tsc -p tsconfig.json", + "compile:dev": "tsc -p tsconfig.dev.json" }, "dependencies": { "@babel/core": "^7.23.2", diff --git a/src/index.js b/src/index.js index 567a475b..436dcc88 100644 --- a/src/index.js +++ b/src/index.js @@ -9,7 +9,7 @@ import * as url from 'url'; export { parseImageRef } from "./oci_image/utils.js"; export { ImageRef } from "./oci_image/images.js"; -export { getProjectLicense, findLicenseFilePath, identifyLicenseViaBackend, getLicenseDetails, licensesFromReport, normalizeLicensesResponse, runLicenseCheck, getCompatibility } from "./license/index.js"; +export { getProjectLicense, findLicenseFilePath, identifyLicense, getLicenseDetails, licensesFromReport, normalizeLicensesResponse, runLicenseCheck, getCompatibility } from "./license/index.js"; export default { componentAnalysis, stackAnalysis, imageAnalysis, validateToken } diff --git a/src/license/compatibility.js b/src/license/compatibility.js deleted file mode 100644 index d8466b6f..00000000 --- a/src/license/compatibility.js +++ /dev/null @@ -1,53 +0,0 @@ -/** - * License compatibility: whether a dependency license is compatible with the project license. - * Relies on backend-provided license categories. - * - * Compatibility is based on restrictiveness hierarchy: - * PERMISSIVE < WEAK_COPYLEFT < STRONG_COPYLEFT - * - * A dependency is compatible if it's equal or less restrictive than the project license. - * A dependency is incompatible if it's more restrictive than the project license. - */ - -/** - * Check if a dependency's license is compatible with the project license based on backend categories. - * - * @param {string} [projectCategory] - backend category for project license: PERMISSIVE | WEAK_COPYLEFT | STRONG_COPYLEFT | UNKNOWN - * @param {string} [dependencyCategory] - backend category for dependency license: PERMISSIVE | WEAK_COPYLEFT | STRONG_COPYLEFT | UNKNOWN - * @returns {'compatible'|'incompatible'|'unknown'} - */ -export function getCompatibility(projectCategory, dependencyCategory) { - if (!projectCategory || !dependencyCategory) { - return 'unknown'; - } - - const proj = projectCategory.toUpperCase(); - const dep = dependencyCategory.toUpperCase(); - - // Unknown categories - if (proj === 'UNKNOWN' || dep === 'UNKNOWN') { - return 'unknown'; - } - - // Define restrictiveness levels (higher number = more restrictive) - const restrictiveness = { - 'PERMISSIVE': 1, - 'WEAK_COPYLEFT': 2, - 'STRONG_COPYLEFT': 3 - }; - - const projLevel = restrictiveness[proj]; - const depLevel = restrictiveness[dep]; - - if (projLevel === undefined || depLevel === undefined) { - return 'unknown'; - } - - // Dependency is more restrictive than project → incompatible - if (depLevel > projLevel) { - return 'incompatible'; - } - - // Dependency is equal or less restrictive → compatible - return 'compatible'; -} diff --git a/src/license/index.js b/src/license/index.js index de008967..112ae842 100644 --- a/src/license/index.js +++ b/src/license/index.js @@ -4,11 +4,11 @@ import { getProjectLicense, findLicenseFilePath, identifyLicense } from './project_license.js'; import { licensesFromReport, getLicenseDetails } from './licenses_api.js'; -import { getCompatibility } from './compatibility.js'; +import { getCompatibility } from './license_utils.js'; -export { getProjectLicense, findLicenseFilePath, identifyLicense as identifyLicenseViaBackend } from './project_license.js'; +export { getProjectLicense, findLicenseFilePath, identifyLicense } from './project_license.js'; export { licensesFromReport, normalizeLicensesResponse, getLicenseDetails } from './licenses_api.js'; -export { getCompatibility } from './compatibility.js'; +export { getCompatibility } from './license_utils.js'; /** * Run full license check: resolve project license (with backend identification and details), @@ -23,7 +23,7 @@ export { getCompatibility } from './compatibility.js'; */ export async function runLicenseCheck(sbomContent, manifestPath, url, opts = {}, analysisResult = null) { // Resolve project license from manifest and LICENSE file - const projectLicense = getProjectLicense(manifestPath, opts); + const projectLicense = getProjectLicense(manifestPath); // Try backend identification for LICENSE file (more accurate than local pattern matching) const licenseFilePath = findLicenseFilePath(manifestPath); diff --git a/src/license/license_utils.js b/src/license/license_utils.js new file mode 100644 index 00000000..4e845a00 --- /dev/null +++ b/src/license/license_utils.js @@ -0,0 +1,127 @@ +/** + * License utilities: file reading, SPDX detection, normalization, compatibility. + * This module has NO dependencies on providers or backend to avoid circular dependencies. + */ + +import fs from 'node:fs'; +import path from 'node:path'; + +const LICENSE_FILES = ['LICENSE', 'LICENSE.md', 'LICENSE.txt']; + +/** + * Find LICENSE file path in the same directory as the manifest. + * @param {string} manifestPath + * @returns {string|null} - path to LICENSE file or null if not found + */ +export function findLicenseFilePath(manifestPath) { + const manifestDir = path.dirname(path.resolve(manifestPath)); + + for (const name of LICENSE_FILES) { + const filePath = path.join(manifestDir, name); + try { + if (fs.statSync(filePath).isFile()) { + return filePath; + } + } catch { + // skip + } + } + return null; +} + +/** + * Very simple SPDX detection from common license text (first ~500 chars). + * @param {string} text + * @returns {string|null} + */ +export function detectSpdxFromText(text) { + const head = text.slice(0, 500); + if (/Apache License,?\s*Version 2\.0/i.test(head)) { return 'Apache-2.0'; } + if (/MIT License/i.test(head) && /Permission is hereby granted/i.test(head)) { return 'MIT'; } + if (/GNU AFFERO GENERAL PUBLIC LICENSE\s+Version 3/i.test(head)) { return 'AGPL-3.0-only'; } + if (/GNU LESSER GENERAL PUBLIC LICENSE\s+Version 3/i.test(head)) { return 'LGPL-3.0-only'; } + if (/GNU LESSER GENERAL PUBLIC LICENSE\s+Version 2\.1/i.test(head)) { return 'LGPL-2.1-only'; } + if (/GNU GENERAL PUBLIC LICENSE\s+Version 2/i.test(head)) { return 'GPL-2.0-only'; } + if (/GNU GENERAL PUBLIC LICENSE\s+Version 3/i.test(head)) { return 'GPL-3.0-only'; } + if (/BSD 2-Clause/i.test(head)) { return 'BSD-2-Clause'; } + if (/BSD 3-Clause/i.test(head)) { return 'BSD-3-Clause'; } + return null; +} + +/** + * Read LICENSE file and detect SPDX identifier. + * @param {string} manifestPath - path to manifest + * @returns {string|null} - SPDX identifier from LICENSE file or null + */ +export function readLicenseFile(manifestPath) { + const licenseFilePath = findLicenseFilePath(manifestPath); + if (!licenseFilePath) { return null; } + + try { + const content = fs.readFileSync(licenseFilePath, 'utf-8'); + return detectSpdxFromText(content) || content.split('\n')[0]?.trim() || null; + } catch { + return null; + } +} + +/** + * Get project license from manifest or LICENSE file. + * Returns manifestLicense if provided, otherwise tries LICENSE file. + * @param {string|null} manifestLicense - license from manifest (or null) + * @param {string} manifestPath - path to manifest + * @returns {string|null} - SPDX identifier or null + */ +export function getLicense(manifestLicense, manifestPath) { + return manifestLicense || readLicenseFile(manifestPath) || null; +} + +/** + * Normalize SPDX identifier for comparison (lowercase, strip common suffixes). + * @param {string} spdxOrName + * @returns {string} + */ +export function normalizeSpdx(spdxOrName) { + const s = String(spdxOrName).trim().toLowerCase(); + if (s.endsWith(' license')) { return s.slice(0, -8); } + return s; +} + +/** + * Check if a dependency's license is compatible with the project license based on backend categories. + * + * @param {string} [projectCategory] - backend category for project license: PERMISSIVE | WEAK_COPYLEFT | STRONG_COPYLEFT | UNKNOWN + * @param {string} [dependencyCategory] - backend category for dependency license: PERMISSIVE | WEAK_COPYLEFT | STRONG_COPYLEFT | UNKNOWN + * @returns {'compatible'|'incompatible'|'unknown'} + */ +export function getCompatibility(projectCategory, dependencyCategory) { + if (!projectCategory || !dependencyCategory) { + return 'unknown'; + } + + const proj = projectCategory.toUpperCase(); + const dep = dependencyCategory.toUpperCase(); + + if (proj === 'UNKNOWN' || dep === 'UNKNOWN') { + return 'unknown'; + } + + const restrictiveness = { + 'PERMISSIVE': 1, + 'WEAK_COPYLEFT': 2, + 'STRONG_COPYLEFT': 3 + }; + + const projLevel = restrictiveness[proj]; + const depLevel = restrictiveness[dep]; + + if (projLevel === undefined || depLevel === undefined) { + return 'unknown'; + } + + if (depLevel > projLevel) { + return 'incompatible'; + } + + return 'compatible'; +} diff --git a/src/license/project_license.js b/src/license/project_license.js index ce4b7095..aec3f64f 100644 --- a/src/license/project_license.js +++ b/src/license/project_license.js @@ -10,7 +10,10 @@ import { selectTrustifyDABackend } from '../index.js'; import { matchForLicense, availableProviders } from '../provider.js'; import { addProxyAgent, getTokenHeaders } from '../tools.js'; -const LICENSE_FILES = ['LICENSE', 'LICENSE.md', 'LICENSE.txt']; +import { + normalizeSpdx, + readLicenseFile +} from './license_utils.js'; /** * Resolve project license from manifest and from LICENSE / LICENSE.md in manifest dir or git root. @@ -23,7 +26,7 @@ export function getProjectLicense(manifestPath) { const resolved = path.resolve(manifestPath); const provider = matchForLicense(resolved, availableProviders); const fromManifest = provider.readLicenseFromManifest(resolved); - const fromFile = readLicenseFromFile(resolved); + const fromFile = readLicenseFile(resolved); const mismatch = Boolean( fromManifest && fromFile && normalizeSpdx(fromManifest) !== normalizeSpdx(fromFile) ); @@ -34,26 +37,7 @@ export function getProjectLicense(manifestPath) { }; } -/** - * Find LICENSE file path in the same directory as the manifest. - * @param {string} manifestPath - * @returns {string|null} - path to LICENSE file or null if not found - */ -export function findLicenseFilePath(manifestPath) { - const manifestDir = path.dirname(path.resolve(manifestPath)); - - for (const name of LICENSE_FILES) { - const filePath = path.join(manifestDir, name); - try { - if (fs.statSync(filePath).isFile()) { - return filePath; - } - } catch { - // skip - } - } - return null; -} +export { findLicenseFilePath, readLicenseFile } from './license_utils.js'; /** * Call backend /licenses/identify endpoint to identify license from file. @@ -65,7 +49,7 @@ export async function identifyLicense(licenseFilePath, opts = {}) { try { const fileContent = fs.readFileSync(licenseFilePath); const backendUrl = selectTrustifyDABackend(opts); - const url = new URL(`${backendUrl}/licenses/identify`); + const url = new URL(`${backendUrl}/api/v5/licenses/identify`); const tokenHeaders = getTokenHeaders(opts); const fetchOptions = addProxyAgent({ method: 'POST', @@ -90,46 +74,13 @@ export async function identifyLicense(licenseFilePath, opts = {}) { } /** - * Find and read LICENSE or LICENSE.md; use local pattern matching for identification. - * @param {string} manifestPath - * @returns {string|null} - */ -function readLicenseFromFile(manifestPath) { - const licenseFilePath = findLicenseFilePath(manifestPath); - if (!licenseFilePath) {return null;} - - try { - const content = fs.readFileSync(licenseFilePath, 'utf-8'); - return detectSpdxFromText(content) || content.split('\n')[0]?.trim() || null; - } catch { - return null; - } -} - -/** - * Very simple SPDX detection from common license text (first ~500 chars). - * @param {string} text - * @returns {string|null} - */ -function detectSpdxFromText(text) { - const head = text.slice(0, 500); - if (/Apache License,?\s*Version 2\.0/i.test(head)) {return 'Apache-2.0';} - if (/MIT License/i.test(head) && /Permission is hereby granted/i.test(head)) {return 'MIT';} - if (/GNU GENERAL PUBLIC LICENSE\s+Version 2/i.test(head)) {return 'GPL-2.0-only';} - if (/GNU GENERAL PUBLIC LICENSE\s+Version 3/i.test(head)) {return 'GPL-3.0-only';} - if (/BSD 2-Clause/i.test(head)) {return 'BSD-2-Clause';} - if (/BSD 3-Clause/i.test(head)) {return 'BSD-3-Clause';} - return null; -} - -/** - * Normalize for comparison (lowercase, strip common suffixes). - * @param {string} spdxOrName - * @returns {string} + * Get license for SBOM root component with fallback to LICENSE file. + * Priority: manifest license > LICENSE file > null + * This is used by providers to populate the license field in the SBOM. + * @param {string} manifestPath - path to manifest + * @returns {string|null} - SPDX identifier or null */ -function normalizeSpdx(spdxOrName) { - const s = String(spdxOrName).trim().toLowerCase(); - // e.g. "MIT" vs "MIT License" - if (s.endsWith(' license')) {return s.slice(0, -8);} - return s; +export function getLicenseForSbom(manifestPath) { + const { fromManifest, fromFile } = getProjectLicense(manifestPath); + return fromManifest || fromFile || null; } diff --git a/src/providers/base_javascript.js b/src/providers/base_javascript.js index 236ca4c7..2d863539 100644 --- a/src/providers/base_javascript.js +++ b/src/providers/base_javascript.js @@ -2,6 +2,7 @@ import fs from 'node:fs' import os from "node:os"; import path from 'node:path' +import { getLicense } from '../license/license_utils.js' import Sbom from '../sbom.js' import { getCustom, getCustomPath, invokeCommand, toPurl, toPurlFromString } from "../tools.js"; @@ -156,20 +157,20 @@ export default class Base_javascript { * @returns {string|null} */ readLicenseFromManifest(manifestPath) { + let manifestLicense; try { const content = JSON.parse(fs.readFileSync(manifestPath, 'utf-8')); if (typeof content.license === 'string') { - return content.license.trim() || null; - } - if (Array.isArray(content.licenses) && content.licenses.length > 0) { + manifestLicense = content.license.trim() || null; + } else if (Array.isArray(content.licenses) && content.licenses.length > 0) { const first = content.licenses[0]; const name = first.type || first.name; - return typeof name === 'string' ? name.trim() : null; + manifestLicense = (typeof name === 'string' ? name.trim() : null); } - return null; } catch { - return null; + manifestLicense = null; } + return getLicense(manifestLicense, manifestPath); } /** diff --git a/src/providers/golang_gomodules.js b/src/providers/golang_gomodules.js index 8b5efff5..f741e8d3 100644 --- a/src/providers/golang_gomodules.js +++ b/src/providers/golang_gomodules.js @@ -4,6 +4,7 @@ import { EOL } from "os"; import { PackageURL } from 'packageurl-js' +import { readLicenseFile } from '../license/license_utils.js' import Sbom from '../sbom.js' import { getCustom, getCustomPath, invokeCommand } from "../tools.js"; @@ -40,7 +41,7 @@ function isSupported(manifestName) { * @returns {string|null} */ // eslint-disable-next-line no-unused-vars -function readLicenseFromManifest(manifestPath) { return null } +function readLicenseFromManifest(manifestPath) { return readLicenseFile(manifestPath); } /** * @param {string} manifestDir - the directory where the manifest lies diff --git a/src/providers/java_gradle.js b/src/providers/java_gradle.js index 6481a154..f7095dac 100644 --- a/src/providers/java_gradle.js +++ b/src/providers/java_gradle.js @@ -4,6 +4,7 @@ import { EOL } from 'os' import TOML from 'fast-toml' +import { readLicenseFile } from '../license/license_utils.js' import Sbom from '../sbom.js' import Base_java, { ecosystem_gradle } from "./base_java.js"; @@ -75,7 +76,7 @@ export default class Java_gradle extends Base_java { * @returns {null} */ // eslint-disable-next-line no-unused-vars - readLicenseFromManifest(manifestPath) { return null; } + readLicenseFromManifest(manifestPath) { return readLicenseFile(manifestPath); } /** * Provide content and content type for stack analysis. diff --git a/src/providers/java_maven.js b/src/providers/java_maven.js index f87127e1..0e827172 100644 --- a/src/providers/java_maven.js +++ b/src/providers/java_maven.js @@ -5,6 +5,7 @@ import { EOL } from 'os' import { XMLParser } from 'fast-xml-parser' +import { getLicense } from '../license/license_utils.js' import Sbom from '../sbom.js' import { getCustom } from '../tools.js' @@ -66,27 +67,27 @@ export default class Java_maven extends Base_java { } /** - * Read license from pom.xml manifest + * Read license from pom.xml manifest, with fallback to LICENSE file * @param {string} manifestPath - path to pom.xml * @returns {string|null} */ readLicenseFromManifest(manifestPath) { + let fromPom = null; try { const xml = fs.readFileSync(manifestPath, 'utf-8'); const parser = new XMLParser({ ignoreAttributes: false }); const obj = parser.parse(xml); const project = obj?.project; - if (!project?.licenses?.license) { - return null; + if (project?.licenses?.license) { + const license = Array.isArray(project.licenses.license) + ? project.licenses.license[0] + : project.licenses.license; + fromPom = (license?.name && license.name.trim()) || null; } - const license = Array.isArray(project.licenses.license) - ? project.licenses.license[0] - : project.licenses.license; - const name = (license?.name && license.name.trim()) || null; - return name || null; } catch { - return null; + // leave fromPom as null } + return getLicense(fromPom, manifestPath); } /** diff --git a/src/providers/python_pip.js b/src/providers/python_pip.js index 3fea30e1..139b4544 100644 --- a/src/providers/python_pip.js +++ b/src/providers/python_pip.js @@ -2,6 +2,7 @@ import fs from 'node:fs' import { PackageURL } from 'packageurl-js' +import { readLicenseFile } from '../license/license_utils.js' import Sbom from '../sbom.js' import { environmentVariableIsPopulated, @@ -37,7 +38,7 @@ function isSupported(manifestName) { * @returns {string|null} */ // eslint-disable-next-line no-unused-vars -function readLicenseFromManifest(manifestPath) { return null } +function readLicenseFromManifest(manifestPath) { return readLicenseFile(manifestPath); } /** * @param {string} manifestDir - the directory where the manifest lies diff --git a/test/providers/license_fallback.test.js b/test/providers/license_fallback.test.js new file mode 100644 index 00000000..9d4060a0 --- /dev/null +++ b/test/providers/license_fallback.test.js @@ -0,0 +1,70 @@ +import fs from 'fs'; +import os from 'os'; +import path from 'path'; + +import { expect } from 'chai'; + +import golangGomodulesProvider from '../../src/providers/golang_gomodules.js'; +import Java_gradle_groovy from '../../src/providers/java_gradle_groovy.js'; +import pythonPipProvider from '../../src/providers/python_pip.js'; + +// Test LICENSE file fallback feature +suite('LICENSE file fallback for providers without manifest license support', () => { + let tempDir; + + setup(() => { + tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'license-test-')); + }); + + teardown(() => { + if (tempDir && fs.existsSync(tempDir)) { + fs.rmSync(tempDir, { recursive: true, force: true }); + } + }); + + test('Gradle provider should read LICENSE file when present', () => { + const buildGradle = path.join(tempDir, 'build.gradle'); + const licenseFile = path.join(tempDir, 'LICENSE'); + + fs.writeFileSync(buildGradle, 'plugins { id "java" }'); + fs.writeFileSync(licenseFile, 'Apache License, Version 2.0'); + + const provider = new Java_gradle_groovy(); + const license = provider.readLicenseFromManifest(buildGradle); + + expect(license).to.equal('Apache-2.0'); + }); + + test('Golang provider should read LICENSE file when present', () => { + const goMod = path.join(tempDir, 'go.mod'); + const licenseFile = path.join(tempDir, 'LICENSE'); + + fs.writeFileSync(goMod, 'module example.com/test'); + fs.writeFileSync(licenseFile, 'MIT License\n\nPermission is hereby granted'); + + const license = golangGomodulesProvider.readLicenseFromManifest(goMod); + + expect(license).to.equal('MIT'); + }); + + test('Python provider should read LICENSE file when present', () => { + const requirements = path.join(tempDir, 'requirements.txt'); + const licenseFile = path.join(tempDir, 'LICENSE'); + + fs.writeFileSync(requirements, 'requests==2.28.0'); + fs.writeFileSync(licenseFile, 'BSD 3-Clause License'); + + const license = pythonPipProvider.readLicenseFromManifest(requirements); + + expect(license).to.equal('BSD-3-Clause'); + }); + + test('Providers should return null when no LICENSE file exists', () => { + const goMod = path.join(tempDir, 'go.mod'); + fs.writeFileSync(goMod, 'module example.com/test'); + + const license = golangGomodulesProvider.readLicenseFromManifest(goMod); + + expect(license).to.be.null; + }); +}); diff --git a/tsconfig.dev.json b/tsconfig.dev.json new file mode 100644 index 00000000..738679d7 --- /dev/null +++ b/tsconfig.dev.json @@ -0,0 +1,6 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "sourceMap": true + } +} From 29f6867ac5d449eb386d54ad7cd33927d4c733f0 Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Thu, 12 Mar 2026 12:19:43 +0000 Subject: [PATCH 089/102] chore: colocate tree-sitter-requirements.wasm to resolve issues when bundled with webpack (#410) --- .gitignore | 1 + package.json | 4 +++- src/providers/requirements_parser.js | 7 ++++--- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 5291ecd7..25177c4b 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ unit-tests-result.json build target .npmrc +src/providers/tree-sitter-requirements.wasm diff --git a/package.json b/package.json index fcf2ed35..92b6e144 100644 --- a/package.json +++ b/package.json @@ -40,9 +40,11 @@ "test": "c8 npm run tests", "tests": "mocha --config .mocharc.json --grep \".*analysis module.*\" --invert", "tests:rep": "mocha --reporter-option maxDiffSize=0 --reporter json > unit-tests-result.json", + "pretest": "cp node_modules/tree-sitter-requirements/tree-sitter-requirements.wasm src/providers/tree-sitter-requirements.wasm", "precompile": "rm -rf dist", "compile": "tsc -p tsconfig.json", - "compile:dev": "tsc -p tsconfig.dev.json" + "compile:dev": "tsc -p tsconfig.dev.json", + "postcompile": "cp node_modules/tree-sitter-requirements/tree-sitter-requirements.wasm dist/src/providers/tree-sitter-requirements.wasm" }, "dependencies": { "@babel/core": "^7.23.2", diff --git a/src/providers/requirements_parser.js b/src/providers/requirements_parser.js index d06f30ec..55001a53 100644 --- a/src/providers/requirements_parser.js +++ b/src/providers/requirements_parser.js @@ -1,12 +1,13 @@ -import { fileURLToPath } from 'url'; +import { readFile } from 'node:fs/promises'; import { Language, Parser, Query } from 'web-tree-sitter'; -const wasmPath = fileURLToPath(import.meta.resolve('tree-sitter-requirements/tree-sitter-requirements.wasm')); +const wasmUrl = new URL('./tree-sitter-requirements.wasm', import.meta.url); async function init() { await Parser.init(); - return await Language.load(wasmPath); + const wasmBytes = new Uint8Array(await readFile(wasmUrl)); + return await Language.load(wasmBytes); } export async function getParser() { From cb4ae285f0954cbc4b905573247b8e0fedcb7963 Mon Sep 17 00:00:00 2001 From: Chao Wang Date: Wed, 18 Mar 2026 22:40:05 +0800 Subject: [PATCH 090/102] fix: use PackageURL to canonicalize purls when matching deps.dev license response to SBOM purls (#414) * fix: use PackageURL to canonicalize purls when matching deps.dev license response to SBOM purls The deps.dev backend returns package purls with qualifiers like ?scope=compile (e.g. pkg:maven/org.mariadb.jdbc/mariadb-java-client@3.1.4?scope=compile), while the SBOM generated by the client uses plain purls without qualifiers. The strict purls.includes(purl) check in normalizeLicensesResponse never matched qualifier-suffixed purls, causing incompatibleDependencies to always be empty even when LGPL/copyleft dependencies were present. Fix by using PackageURL.fromString() to parse purls and reconstructing them without qualifiers or subpath via new PackageURL(..., null, null). This produces canonical core purls for both the allowed set and the backend keys, making the match resilient to any qualifiers the backend may return. Co-Authored-By: Claude Opus 4.6 (1M context) * chore: remove unused getLicenseForSbom function Co-Authored-By: Claude Opus 4.6 (1M context) --------- Co-authored-by: Claude Opus 4.6 (1M context) --- src/license/licenses_api.js | 13 +++++++-- src/license/project_license.js | 12 -------- test/providers/license.test.js | 50 ++++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+), 14 deletions(-) diff --git a/src/license/licenses_api.js b/src/license/licenses_api.js index 132f3bb2..de267ced 100644 --- a/src/license/licenses_api.js +++ b/src/license/licenses_api.js @@ -5,6 +5,7 @@ * @see https://github.com/guacsec/trustify-da-api-spec/blob/main/api/v5/openapi.yaml */ +import { PackageURL } from 'packageurl-js'; import { selectTrustifyDABackend } from '../index.js'; import { addProxyAgent, getTokenHeaders } from '../tools.js'; @@ -42,6 +43,11 @@ export async function getLicenseDetails(spdxId, opts = {}) { } } +function normalizePurlString(purl) { + const parsed = PackageURL.fromString(purl); + return new PackageURL(parsed.type, parsed.namespace, parsed.name, parsed.version, null, null).toString(); +} + /** * Normalize the LicensesResponse shape (array of LicenseProviderResult) into a map of purl -> license info. * Each provider result has { status, summary, packages } where packages is { [purl]: { concluded, evidence } }. @@ -55,6 +61,8 @@ export function normalizeLicensesResponse(data, purls = []) { const map = new Map(); if (!data || !Array.isArray(data)) {return map;} + const normalizedPurlsSet = purls.length > 0 ? new Set(purls.map(normalizePurlString)) : null; + for (const providerResult of data) { const packages = providerResult?.packages; if (!packages || typeof packages !== 'object') {continue;} @@ -64,8 +72,9 @@ export function normalizeLicensesResponse(data, purls = []) { const expression = concluded?.expression; const licenses = identifiers.length > 0 ? identifiers : (expression ? [expression] : []); const category = concluded?.category; // PERMISSIVE | WEAK_COPYLEFT | STRONG_COPYLEFT | UNKNOWN - if (purls.length === 0 || purls.includes(purl)) { - map.set(purl, { licenses: licenses.filter(Boolean), category }); + const normalizedPurl = normalizePurlString(purl); + if (normalizedPurlsSet === null || normalizedPurlsSet.has(normalizedPurl)) { + map.set(normalizedPurl, { licenses: licenses.filter(Boolean), category }); } } // Use first provider that has packages; backend may return multiple (e.g. deps.dev) diff --git a/src/license/project_license.js b/src/license/project_license.js index aec3f64f..b34fef3f 100644 --- a/src/license/project_license.js +++ b/src/license/project_license.js @@ -72,15 +72,3 @@ export async function identifyLicense(licenseFilePath, opts = {}) { return null; // Fallback to local detection on error } } - -/** - * Get license for SBOM root component with fallback to LICENSE file. - * Priority: manifest license > LICENSE file > null - * This is used by providers to populate the license field in the SBOM. - * @param {string} manifestPath - path to manifest - * @returns {string|null} - SPDX identifier or null - */ -export function getLicenseForSbom(manifestPath) { - const { fromManifest, fromFile } = getProjectLicense(manifestPath); - return fromManifest || fromFile || null; -} diff --git a/test/providers/license.test.js b/test/providers/license.test.js index 2e7e1438..a3c99071 100644 --- a/test/providers/license.test.js +++ b/test/providers/license.test.js @@ -10,6 +10,56 @@ import Javascript_npm from '../../src/providers/javascript_npm.js' import Javascript_pnpm from '../../src/providers/javascript_pnpm.js' import Javascript_yarn from '../../src/providers/javascript_yarn.js' import pythonPipProvider from '../../src/providers/python_pip.js' +import { normalizeLicensesResponse } from '../../src/license/licenses_api.js' + +suite('normalizeLicensesResponse', () => { + const lgpl = { id: 'LGPL-2.1', name: 'GNU Lesser General Public License v2.1 only', category: 'WEAK_COPYLEFT' } + const apache = { id: 'Apache-2.0', name: 'Apache License 2.0', category: 'PERMISSIVE' } + + const backendResponse = [ + { + status: { ok: true, name: 'deps.dev' }, + packages: { + // backend returns purls with ?scope=compile qualifier + 'pkg:maven/org.mariadb.jdbc/mariadb-java-client@3.1.4?scope=compile': { + concluded: { identifiers: [lgpl], expression: 'LGPL-2.1', category: 'WEAK_COPYLEFT' } + }, + 'pkg:maven/javassist/javassist@3.12.1.GA?scope=compile': { + concluded: { identifiers: [lgpl], expression: 'LGPL-2.1', category: 'WEAK_COPYLEFT' } + }, + 'pkg:maven/commons-collections/commons-collections@3.2.1': { + concluded: { identifiers: [apache], expression: 'Apache-2.0', category: 'PERMISSIVE' } + } + } + } + ] + + // SBOM purls have no qualifier + const sbomPurls = [ + 'pkg:maven/org.mariadb.jdbc/mariadb-java-client@3.1.4', + 'pkg:maven/javassist/javassist@3.12.1.GA', + 'pkg:maven/commons-collections/commons-collections@3.2.1' + ] + + test('matches backend purls with ?scope=compile qualifier against plain SBOM purls', () => { + const map = normalizeLicensesResponse(backendResponse, sbomPurls) + expect(map.size).to.equal(3) + }) + + test('stores purl without qualifier as map key', () => { + const map = normalizeLicensesResponse(backendResponse, sbomPurls) + expect(map.has('pkg:maven/org.mariadb.jdbc/mariadb-java-client@3.1.4')).to.be.true + expect(map.has('pkg:maven/javassist/javassist@3.12.1.GA')).to.be.true + expect(map.has('pkg:maven/org.mariadb.jdbc/mariadb-java-client@3.1.4?scope=compile')).to.be.false + }) + + test('preserves correct license category for qualifier-stripped purls', () => { + const map = normalizeLicensesResponse(backendResponse, sbomPurls) + expect(map.get('pkg:maven/org.mariadb.jdbc/mariadb-java-client@3.1.4').category).to.equal('WEAK_COPYLEFT') + expect(map.get('pkg:maven/javassist/javassist@3.12.1.GA').category).to.equal('WEAK_COPYLEFT') + expect(map.get('pkg:maven/commons-collections/commons-collections@3.2.1').category).to.equal('PERMISSIVE') + }) +}) suite('testing readLicenseFromManifest with existing test manifests', () => { From 608d6fa623674b03621afdfb5f5a7f791bc47b33 Mon Sep 17 00:00:00 2001 From: Adva Oren Date: Wed, 18 Mar 2026 17:46:41 +0200 Subject: [PATCH 091/102] feat: rust analysis support (#411) * feat: rust analysis support * fix: use a proper toml parser * fix: remove duplicate functions * fix: update after review * fix: revert accidental changes to package-lock.json * fix: broken sboms * feat: include path dependencies in SBOM with repository_url=local qualifier --------- Signed-off-by: Adva Oren --- CONTRIBUTING.md | 1 + README.md | 29 +- docs/license-resolution-and-compliance.md | 5 +- package-lock.json | 13 + package.json | 1 + src/index.js | 1 + src/provider.js | 4 +- src/providers/rust_cargo.js | 644 ++++++++++++++++++ test/provider.test.js | 9 +- test/providers/license.test.js | 29 +- .../cargo/with_lock_file/Cargo.lock | 1 + .../cargo/with_lock_file/Cargo.toml | 7 + .../cargo/without_lock_file/Cargo.toml | 7 + .../workspace_member_with_lock/Cargo.lock | 7 + .../workspace_member_with_lock/Cargo.toml | 6 + .../member1/Cargo.toml | 7 + .../workspace_member_without_lock/Cargo.toml | 2 + .../member1/Cargo.toml | 7 + test/providers/rust_cargo.test.js | 523 ++++++++++++++ .../cargo_single_crate_no_ignore/Cargo.lock | 2 + .../cargo_single_crate_no_ignore/Cargo.toml | 11 + .../cargo_metadata.json | 110 +++ .../expected_sbom_component_analysis.json | 55 ++ .../expected_sbom_stack_analysis.json | 81 +++ .../Cargo.lock | 2 + .../Cargo.toml | 11 + .../cargo_metadata.json | 110 +++ .../expected_sbom_component_analysis.json | 43 ++ .../expected_sbom_stack_analysis.json | 56 ++ .../Cargo.lock | 1 + .../Cargo.toml | 14 + .../cargo_metadata.json | 108 +++ .../cargo_single_crate_with_ignore/Cargo.lock | 2 + .../cargo_single_crate_with_ignore/Cargo.toml | 11 + .../cargo_metadata.json | 110 +++ .../expected_sbom_component_analysis.json | 43 ++ .../expected_sbom_stack_analysis.json | 56 ++ .../Cargo.lock | 2 + .../Cargo.toml | 12 + .../cargo_metadata.json | 110 +++ .../expected_sbom_component_analysis.json | 69 ++ .../expected_sbom_stack_analysis.json | 95 +++ .../cargo/cargo_virtual_workspace/Cargo.lock | 2 + .../cargo/cargo_virtual_workspace/Cargo.toml | 6 + .../cargo_metadata.json | 90 +++ .../crate-a/Cargo.toml | 7 + .../crate-b/Cargo.toml | 7 + .../expected_sbom_component_analysis.json | 25 + .../expected_sbom_stack_analysis.json | 94 +++ .../Cargo.lock | 1 + .../Cargo.toml | 5 + .../cargo_metadata.json | 90 +++ .../crates/crate-a/Cargo.toml | 7 + .../crates/crate-b/Cargo.toml | 7 + .../expected_sbom_component_analysis.json | 25 + .../expected_sbom_stack_analysis.json | 81 +++ .../Cargo.lock | 2 + .../Cargo.toml | 6 + .../cargo_metadata.json | 90 +++ .../crate-a/Cargo.toml | 7 + .../crate-b/Cargo.toml | 7 + .../expected_sbom_component_analysis.json | 25 + .../expected_sbom_stack_analysis.json | 81 +++ .../Cargo.lock | 2 + .../Cargo.toml | 6 + .../cargo_metadata.json | 90 +++ .../crate-a/Cargo.toml | 7 + .../crate-b/Cargo.toml | 7 + .../expected_sbom_component_analysis.json | 25 + .../expected_sbom_stack_analysis.json | 81 +++ .../Cargo.lock | 1 + .../Cargo.toml | 13 + .../cargo_metadata.json | 90 +++ .../expected_sbom_component_analysis.json | 69 ++ .../expected_sbom_stack_analysis.json | 108 +++ .../Cargo.lock | 1 + .../Cargo.toml | 10 + .../cargo_metadata.json | 90 +++ .../expected_sbom_component_analysis.json | 55 ++ .../expected_sbom_stack_analysis.json | 94 +++ .../cargo_workspace_with_root/Cargo.lock | 2 + .../cargo_workspace_with_root/Cargo.toml | 16 + .../cargo_metadata.json | 106 +++ .../expected_sbom_component_analysis.json | 43 ++ .../expected_sbom_stack_analysis.json | 43 ++ .../sub-crate/Cargo.toml | 7 + .../Cargo.lock | 2 + .../Cargo.toml | 16 + .../cargo_metadata.json | 106 +++ .../expected_sbom_component_analysis.json | 25 + .../expected_sbom_stack_analysis.json | 25 + .../sub-crate/Cargo.toml | 7 + .../Cargo.lock | 2 + .../Cargo.toml | 16 + .../cargo_metadata.json | 106 +++ .../expected_sbom_component_analysis.json | 25 + .../expected_sbom_stack_analysis.json | 25 + .../sub-crate/Cargo.toml | 7 + 98 files changed, 4401 insertions(+), 9 deletions(-) create mode 100644 src/providers/rust_cargo.js create mode 100644 test/providers/provider_manifests/cargo/with_lock_file/Cargo.lock create mode 100644 test/providers/provider_manifests/cargo/with_lock_file/Cargo.toml create mode 100644 test/providers/provider_manifests/cargo/without_lock_file/Cargo.toml create mode 100644 test/providers/provider_manifests/cargo/workspace_member_with_lock/Cargo.lock create mode 100644 test/providers/provider_manifests/cargo/workspace_member_with_lock/Cargo.toml create mode 100644 test/providers/provider_manifests/cargo/workspace_member_with_lock/member1/Cargo.toml create mode 100644 test/providers/provider_manifests/cargo/workspace_member_without_lock/Cargo.toml create mode 100644 test/providers/provider_manifests/cargo/workspace_member_without_lock/member1/Cargo.toml create mode 100644 test/providers/rust_cargo.test.js create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/Cargo.lock create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/cargo_metadata.json create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/expected_sbom_component_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/expected_sbom_stack_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/Cargo.lock create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/cargo_metadata.json create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/expected_sbom_component_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/expected_sbom_stack_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_with_hyphen_ignore/Cargo.lock create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_with_hyphen_ignore/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_with_hyphen_ignore/cargo_metadata.json create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/Cargo.lock create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/cargo_metadata.json create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/expected_sbom_component_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/expected_sbom_stack_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_with_license/Cargo.lock create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_with_license/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_with_license/cargo_metadata.json create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_with_license/expected_sbom_component_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_single_crate_with_license/expected_sbom_stack_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace/Cargo.lock create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace/cargo_metadata.json create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace/crate-a/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace/crate-b/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace/expected_sbom_component_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace/expected_sbom_stack_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/Cargo.lock create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/cargo_metadata.json create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/crates/crate-a/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/crates/crate-b/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/expected_sbom_component_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/expected_sbom_stack_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/Cargo.lock create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/cargo_metadata.json create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/crate-a/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/crate-b/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/expected_sbom_component_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/expected_sbom_stack_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/Cargo.lock create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/cargo_metadata.json create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/crate-a/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/crate-b/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/expected_sbom_component_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/expected_sbom_stack_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/Cargo.lock create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/cargo_metadata.json create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/expected_sbom_component_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/expected_sbom_stack_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/Cargo.lock create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/cargo_metadata.json create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/expected_sbom_component_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/expected_sbom_stack_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_workspace_with_root/Cargo.lock create mode 100644 test/providers/tst_manifests/cargo/cargo_workspace_with_root/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_workspace_with_root/cargo_metadata.json create mode 100644 test/providers/tst_manifests/cargo/cargo_workspace_with_root/expected_sbom_component_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_workspace_with_root/expected_sbom_stack_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_workspace_with_root/sub-crate/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/Cargo.lock create mode 100644 test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/cargo_metadata.json create mode 100644 test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/expected_sbom_component_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/expected_sbom_stack_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/sub-crate/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/Cargo.lock create mode 100644 test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/Cargo.toml create mode 100644 test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/cargo_metadata.json create mode 100644 test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/expected_sbom_component_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/expected_sbom_stack_analysis.json create mode 100644 test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/sub-crate/Cargo.toml diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index adbb4648..2f497eb2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -42,6 +42,7 @@ The OpenAPI specification is located in the [`trustify-da-api-spec`](https://git which will provide data that we can send to the _Backend_ using _analysis.js_. See the [Adding a Provider](#adding-a-provider) section. * [java_maven.js](src/providers/java_maven.js) is the provider for the _Java_ _Maven_ ecosystem. + * [rust_cargo.js](src/providers/rust_cargo.js) is the provider for the _Rust_ _Cargo_ ecosystem. #### Types diff --git a/README.md b/README.md index a01da90b..4457b361 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ let imageAnalysisWithArch = await client.imageAnalysis(['httpd:2.4.49^^amd64']) The client automatically detects your project's license with intelligent fallback:

    -
  • Manifest-first: For ecosystems with license support (Maven, JavaScript), reads from manifest file (pom.xml, package.json)
  • +
  • Manifest-first: For ecosystems with license support (Maven, JavaScript, Rust Cargo), reads from manifest file (pom.xml, package.json, Cargo.toml)
  • LICENSE file fallback: If no license in manifest, or for ecosystems without license support (Gradle, Go, Python), automatically reads from LICENSE, LICENSE.md, or LICENSE.txt
  • SBOM integration: Detected licenses are included in generated SBOMs for all ecosystems
  • SPDX support: Automatically detects common licenses (Apache-2.0, MIT, GPL, BSD) from LICENSE file content
  • @@ -196,6 +196,7 @@ $ trustify-da-javascript-client license /path/to/package.json
  • Golang - Go Modules
  • Python - pip Installer
  • Gradle (Groovy and Kotlin DSL) - Gradle Installation
  • +
  • Rust - Cargo

License Detection

@@ -203,7 +204,7 @@ $ trustify-da-javascript-client license /path/to/package.json The client automatically detects your project's license with intelligent fallback:

    -
  • Manifest-first: For ecosystems with license support (Maven, JavaScript), reads from manifest file (pom.xml, package.json)
  • +
  • Manifest-first: For ecosystems with license support (Maven, JavaScript, Rust Cargo), reads from manifest file (pom.xml, package.json, Cargo.toml)
  • LICENSE file fallback: If no license in manifest, or for ecosystems without license support (Gradle, Go, Python), automatically reads from LICENSE, LICENSE.md, or LICENSE.txt
  • SBOM integration: Detected licenses are included in generated SBOMs for all ecosystems
  • SPDX support: Automatically detects common licenses (Apache-2.0, MIT, GPL, BSD) from LICENSE file content
  • @@ -334,7 +335,21 @@ test { } ``` -All of the 5 above examples are valid for marking a package to be ignored +Rust Cargo users can add a comment with # trustify-da-ignore (or # exhortignore) in Cargo.toml next to the dependency to be ignored. This works for inline declarations, table-based declarations, and workspace-level dependency sections: + +```toml +[dependencies] +serde = "1.0" # trustify-da-ignore +tokio = { version = "1.35", features = ["full"] } + +[dependencies.regex] # trustify-da-ignore +version = "1.10" + +[workspace.dependencies] +log = "0.4" # trustify-da-ignore +``` + +All of the 6 above examples are valid for marking a package to be ignored
@@ -366,6 +381,7 @@ let options = { 'TRUSTIFY_DA_PYTHON_PATH' : '/path/to/python', 'TRUSTIFY_DA_PIP_PATH' : '/path/to/pip', 'TRUSTIFY_DA_GRADLE_PATH' : '/path/to/gradle', + 'TRUSTIFY_DA_CARGO_PATH' : '/path/to/cargo', // Configure proxy for all requests 'TRUSTIFY_DA_PROXY_URL': 'http://proxy.example.com:8080' } @@ -411,7 +427,7 @@ The proxy URL should be in the format: `http://host:port` or `https://host:port`

License resolution and dependency license compliance

-The client can resolve the project license from the manifest (e.g. package.json license, pom.xml <licenses>) and from a LICENSE or LICENSE.md file in the project, and report when they differ. For component analysis, you can optionally run a license check: the client fetches dependency licenses from the backend (by purl) and reports dependencies whose licenses are incompatible with the project license. See License resolution and compliance for design and behavior. To disable the check on component analysis, set TRUSTIFY_DA_LICENSE_CHECK=false or pass licenseCheck: false in the options. +The client can resolve the project license from the manifest (e.g. package.json license, pom.xml <licenses>, Cargo.toml license) and from a LICENSE or LICENSE.md file in the project, and report when they differ. For component analysis, you can optionally run a license check: the client fetches dependency licenses from the backend (by purl) and reports dependencies whose licenses are incompatible with the project license. See License resolution and compliance for design and behavior. To disable the check on component analysis, set TRUSTIFY_DA_LICENSE_CHECK=false or pass licenseCheck: false in the options.

Customizing Executables

@@ -487,6 +503,11 @@ following keys for setting custom paths for the said executables. gradle TRUSTIFY_DA_PREFER_GRADLEW + +Rust Cargo +cargo +TRUSTIFY_DA_CARGO_PATH + #### Match Manifest Versions Feature diff --git a/docs/license-resolution-and-compliance.md b/docs/license-resolution-and-compliance.md index 479f018c..a4a5493c 100644 --- a/docs/license-resolution-and-compliance.md +++ b/docs/license-resolution-and-compliance.md @@ -20,6 +20,7 @@ The client looks for your project’s license with **automatic fallback**: 1. **Primary: Manifest file** — Reads the license field from: - `package.json`: `license` field - `pom.xml`: `` element + - `Cargo.toml`: `license` field under `[package]` or `[workspace.package]` - `build.gradle` / `build.gradle.kts`: No standard license field (falls back to LICENSE file) - `go.mod`: No standard license field (falls back to LICENSE file) - `requirements.txt`: No standard license field (falls back to LICENSE file) @@ -27,7 +28,7 @@ The client looks for your project’s license with **automatic fallback**: 2. **Fallback: LICENSE file** — If no license is found in the manifest, searches for `LICENSE`, `LICENSE.md`, or `LICENSE.txt` in the same directory as your manifest **How the fallback works:** -- **Ecosystems with manifest license support** (Maven, JavaScript): Uses manifest license if present, otherwise falls back to LICENSE file +- **Ecosystems with manifest license support** (Maven, JavaScript, Rust Cargo): Uses manifest license if present, otherwise falls back to LICENSE file - **Ecosystems without manifest license support** (Gradle, Go, Python): Automatically reads from LICENSE file - **SPDX detection**: Common licenses (Apache-2.0, MIT, GPL-2.0/3.0, LGPL-2.1/3.0, AGPL-3.0, BSD-2-Clause/3-Clause) are automatically detected from LICENSE file content @@ -167,5 +168,5 @@ Project license information is automatically included in generated SBOMs (Cyclon **LICENSE file fallback in SBOMs:** - **All ecosystems** now include license information in the SBOM when available - **Gradle, Go, Python projects**: Even though these ecosystems don’t have manifest license fields, the SBOM will include the license from your LICENSE file -- **Maven, JavaScript projects**: The SBOM uses the manifest license, or falls back to LICENSE file if not specified in manifest +- **Maven, JavaScript, Rust Cargo projects**: The SBOM uses the manifest license, or falls back to LICENSE file if not specified in manifest - If neither manifest nor LICENSE file contains a license, the SBOM root component will have no `licenses` field diff --git a/package-lock.json b/package-lock.json index 64468568..9b3cef0d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ "https-proxy-agent": "^7.0.6", "node-fetch": "^3.3.2", "packageurl-js": "~1.0.2", + "smol-toml": "^1.6.0", "tree-sitter-requirements": "github:Strum355/tree-sitter-requirements#d0261ee76b84253997fe70d7d397e78c006c3801", "web-tree-sitter": "^0.26.6", "yargs": "^18.0.0" @@ -6878,6 +6879,18 @@ "npm": ">= 3.0.0" } }, + "node_modules/smol-toml": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.0.tgz", + "integrity": "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 18" + }, + "funding": { + "url": "https://github.com/sponsors/cyyynthia" + } + }, "node_modules/smtp-address-parser": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/smtp-address-parser/-/smtp-address-parser-1.1.0.tgz", diff --git a/package.json b/package.json index 92b6e144..31d072fd 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,7 @@ "https-proxy-agent": "^7.0.6", "node-fetch": "^3.3.2", "packageurl-js": "~1.0.2", + "smol-toml": "^1.6.0", "tree-sitter-requirements": "github:Strum355/tree-sitter-requirements#d0261ee76b84253997fe70d7d397e78c006c3801", "web-tree-sitter": "^0.26.6", "yargs": "^18.0.0" diff --git a/src/index.js b/src/index.js index 436dcc88..3dfdf976 100644 --- a/src/index.js +++ b/src/index.js @@ -15,6 +15,7 @@ export default { componentAnalysis, stackAnalysis, imageAnalysis, validateToken /** * @typedef {{ + * TRUSTIFY_DA_CARGO_PATH?: string | undefined, * TRUSTIFY_DA_DOCKER_PATH?: string | undefined, * TRUSTIFY_DA_GO_MVS_LOGIC_ENABLED?: string | undefined, * TRUSTIFY_DA_GO_PATH?: string | undefined, diff --git a/src/provider.js b/src/provider.js index 57652599..4bfa8b52 100644 --- a/src/provider.js +++ b/src/provider.js @@ -8,6 +8,7 @@ import Javascript_npm from './providers/javascript_npm.js'; import Javascript_pnpm from './providers/javascript_pnpm.js'; import Javascript_yarn from './providers/javascript_yarn.js'; import pythonPipProvider from './providers/python_pip.js' +import rustCargoProvider from './providers/rust_cargo.js' /** @typedef {{ecosystem: string, contentType: string, content: string}} Provided */ /** @typedef {{isSupported: function(string): boolean, validateLockFile: function(string): void, provideComponent: function(string, {}): Provided | Promise, provideStack: function(string, {}): Provided | Promise, readLicenseFromManifest: function(string): string | null}} Provider */ @@ -24,7 +25,8 @@ export const availableProviders = [ new Javascript_pnpm(), new Javascript_yarn(), golangGomodulesProvider, - pythonPipProvider] + pythonPipProvider, + rustCargoProvider] /** * Match a provider by manifest type only (no lock file check). Used for license reading. diff --git a/src/providers/rust_cargo.js b/src/providers/rust_cargo.js new file mode 100644 index 00000000..bbe52c10 --- /dev/null +++ b/src/providers/rust_cargo.js @@ -0,0 +1,644 @@ +import fs from 'node:fs' +import path from 'node:path' + +import { PackageURL } from 'packageurl-js' +import { parse as parseToml } from 'smol-toml' + +import { getLicense } from '../license/license_utils.js' +import Sbom from '../sbom.js' +import { getCustomPath, invokeCommand } from '../tools.js' + +export default { isSupported, validateLockFile, provideComponent, provideStack, readLicenseFromManifest } + +/** @typedef {import('../provider').Provider} */ + +/** @typedef {import('../provider').Provided} Provided */ + +/** + * @type {string} ecosystem identifier for cargo/crates packages + * @private + */ +const ecosystem = 'cargo' + +/** + * Ignore markers recognised in Cargo.toml comments. + * Supports both the legacy `exhortignore` marker and the new `trustify-da-ignore` marker. + * @type {string[]} + * @private + */ +const IGNORE_MARKERS = ['exhortignore', 'trustify-da-ignore'] + +/** + * Checks whether a line contains any of the recognised ignore markers. + * @param {string} line - the line to check + * @returns {boolean} true if the line contains at least one ignore marker + * @private + */ +function hasIgnoreMarker(line) { + return IGNORE_MARKERS.some(marker => line.includes(marker)) +} + +/** + * Checks whether a dependency name is in the ignored set, accounting for + * Cargo's underscore/hyphen equivalence + * @param {string} name - the dependency name to check + * @param {Set} ignoredDeps - set of ignored dependency names + * @returns {boolean} true if the dependency should be ignored + * @private + */ +function isDepIgnored(name, ignoredDeps) { + if (ignoredDeps.has(name)) {return true} + let normalized = name.replace(/_/g, '-') + if (normalized !== name && ignoredDeps.has(normalized)) {return true} + normalized = name.replace(/-/g, '_') + if (normalized !== name && ignoredDeps.has(normalized)) {return true} + return false +} + +/** + * Enum-like constants for Cargo project types. + * @private + */ +const CrateType = { + SINGLE_CRATE: 'SINGLE_CRATE', + WORKSPACE_VIRTUAL: 'WORKSPACE_VIRTUAL', + WORKSPACE_WITH_ROOT_CRATE: 'WORKSPACE_WITH_ROOT_CRATE' +} + +/** + * @param {string} manifestName - the subject manifest name-type + * @returns {boolean} - return true if `Cargo.toml` is the manifest name-type + */ +function isSupported(manifestName) { + return 'Cargo.toml' === manifestName +} + +/** + * Read project license from Cargo.toml, with fallback to LICENSE file. + * Supports the `license` field under `[package]` (single crate / workspace + * with root) and under `[workspace.package]` (virtual workspaces). + * @param {string} manifestPath - path to Cargo.toml + * @returns {string|null} SPDX identifier or null + */ +function readLicenseFromManifest(manifestPath) { + let fromManifest = null + try { + let content = fs.readFileSync(manifestPath, 'utf-8') + let parsed = parseToml(content) + + fromManifest = parsed.package?.license + || parsed.workspace?.package?.license + || null + } catch (_) { + // leave fromManifest as null + } + return getLicense(fromManifest, manifestPath) +} + +/** + * Validates that Cargo.lock exists in the manifest directory or in a parent + * workspace root directory. In Cargo workspaces the lock file always lives at + * the workspace root, so when a member crate's Cargo.toml is provided we walk + * up the directory tree looking for Cargo.lock (stopping when we find a + * Cargo.toml that contains a [workspace] section, or when we reach the + * filesystem root). + * @param {string} manifestDir - the directory where the manifest lies + * @returns {boolean} true if Cargo.lock is found + */ +function validateLockFile(manifestDir) { + let dir = path.resolve(manifestDir) + let parent = dir + + do { + dir = parent + + if (fs.existsSync(path.join(dir, 'Cargo.lock'))) { + return true + } + + // If this directory has a Cargo.toml with [workspace], the lock file + // should have been here — stop searching. + let cargoToml = path.join(dir, 'Cargo.toml') + if (fs.existsSync(cargoToml)) { + try { + let content = fs.readFileSync(cargoToml, 'utf-8') + if (/\[workspace\]/.test(content)) { + return false + } + } catch (_) { + // ignore read errors, keep searching + } + } + + parent = path.dirname(dir) + } while (parent !== dir) + + return false +} + +/** + * Provide content and content type for Cargo stack analysis. + * @param {string} manifest - the manifest path + * @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' + } +} + +/** + * Provide content and content type for Cargo component analysis. + * @param {string} manifest - path to Cargo.toml 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' + } +} + +/** + * Create SBOM json string for a Cargo project. + * @param {string} manifest - path to Cargo.toml + * @param {{}} [opts={}] - optional various options to pass along the application + * @param {boolean} includeTransitive - whether the sbom should contain transitive dependencies + * @returns {string} the SBOM json content + * @private + */ +function getSBOM(manifest, opts = {}, includeTransitive) { + let cargoBin = getCustomPath('cargo', opts) + verifyCargoAccessible(cargoBin) + + let manifestDir = path.dirname(manifest) + let metadata = executeCargoMetadata(cargoBin, manifestDir) + let ignoredDeps = getIgnoredDeps(manifest, metadata) + let crateType = detectCrateType(metadata) + let license = readLicenseFromManifest(manifest) + + let sbom + if (crateType === CrateType.WORKSPACE_VIRTUAL) { + sbom = handleVirtualWorkspace(manifest, metadata, ignoredDeps, includeTransitive, opts, license) + } else { + sbom = handleSingleCrate(metadata, ignoredDeps, includeTransitive, opts, license) + } + + return sbom +} + +/** + * Verifies that the cargo binary is accessible. + * @param {string} cargoBin - path to cargo binary + * @throws {Error} if cargo is not accessible + * @private + */ +function verifyCargoAccessible(cargoBin) { + try { + invokeCommand(cargoBin, ['--version']) + } catch (error) { + if (error.code === 'ENOENT') { + throw new Error(`cargo binary is not accessible at "${cargoBin}"`) + } + throw new Error('failed to check for cargo binary', { cause: error }) + } +} + +/** + * Executes `cargo metadata` and returns the parsed JSON. + * @param {string} cargoBin - path to cargo binary + * @param {string} manifestDir - directory containing Cargo.toml + * @returns {object} parsed cargo metadata JSON + * @throws {Error} if cargo metadata fails + * @private + */ +function executeCargoMetadata(cargoBin, manifestDir) { + try { + let output = invokeCommand(cargoBin, ['metadata', '--format-version', '1'], { cwd: manifestDir }) + return JSON.parse(output.toString().trim()) + } catch (error) { + throw new Error('failed to execute cargo metadata', { cause: error }) + } +} + +/** + * Detects the type of Cargo project from metadata. + * @param {object} metadata - parsed cargo metadata + * @returns {string} one of CrateType values + * @private + */ +function detectCrateType(metadata) { + let rootPackageId = metadata.resolve?.root + let workspaceMembers = metadata.workspace_members || [] + + if (!rootPackageId && workspaceMembers.length > 0) { + return CrateType.WORKSPACE_VIRTUAL + } + + if (rootPackageId && workspaceMembers.length > 1) { + return CrateType.WORKSPACE_WITH_ROOT_CRATE + } + + return CrateType.SINGLE_CRATE +} + +/** + * Handles SBOM generation for single crate and workspace-with-root-crate projects. + * For workspace-with-root-crate, workspace members are only included if they + * appear in the root crate's dependency graph from cargo metadata. We don't + * automatically add all members as dependencies since most workspace members + * (examples, tools, benchmarks) depend ON the root crate, not the other way around. + * @param {object} metadata - parsed cargo metadata + * @param {Set} ignoredDeps - set of ignored dependency names + * @param {boolean} includeTransitive - whether to include transitive dependencies + * @param {{}} opts - options + * @param {string|null} license - SPDX license identifier for the root component + * @returns {string} SBOM json string + * @private + */ +function handleSingleCrate(metadata, ignoredDeps, includeTransitive, opts, license) { + let rootPackageId = metadata.resolve.root + let rootPackage = findPackageById(metadata, rootPackageId) + let rootPurl = toPurl(rootPackage.name, rootPackage.version) + + let sbom = new Sbom() + sbom.addRoot(rootPurl, license) + + let resolveNode = findResolveNode(metadata, rootPackageId) + if (!resolveNode) { + return sbom.getAsJsonString(opts) + } + + if (includeTransitive) { + addTransitiveDeps(sbom, metadata, rootPackageId, ignoredDeps, new Set(), rootPurl) + } else { + addDirectDeps(sbom, metadata, rootPackageId, rootPurl, ignoredDeps) + } + + return sbom.getAsJsonString(opts) +} + +/** + * Handles SBOM generation for virtual workspace projects. + * + * For stack analysis (includeTransitive=true): + * Iterates all workspace members and walks their full dependency trees. + * + * For component analysis (includeTransitive=false): + * Only includes dependencies explicitly listed in [workspace.dependencies] + * of the root Cargo.toml. If that section is absent the SBOM contains only + * the synthetic workspace root with no dependencies — this matches the Java + * client behaviour where CA "just analyzes direct dependencies defined in + * Cargo.toml". + * + * @param {string} manifest - path to the root Cargo.toml + * @param {object} metadata - parsed cargo metadata + * @param {Set} ignoredDeps - set of ignored dependency names + * @param {boolean} includeTransitive - whether to include transitive dependencies + * @param {{}} opts - options + * @param {string|null} license - SPDX license identifier for the root component + * @returns {string} SBOM json string + * @private + */ +function handleVirtualWorkspace(manifest, metadata, ignoredDeps, includeTransitive, opts, license) { + let workspaceRoot = metadata.workspace_root + let rootName = path.basename(workspaceRoot) + let workspaceVersion = getWorkspaceVersion(metadata) + let rootPurl = toPurl(rootName, workspaceVersion) + + let sbom = new Sbom() + sbom.addRoot(rootPurl, license) + + if (includeTransitive) { + // Stack analysis: walk all members and their full dependency trees + let workspaceMembers = metadata.workspace_members || [] + + for (let memberId of workspaceMembers) { + let memberPackage = findPackageById(metadata, memberId) + if (!memberPackage) {continue} + + let memberPurl = memberPackage.source == null + ? toPathDepPurl(memberPackage.name, memberPackage.version) + : toPurl(memberPackage.name, memberPackage.version) + + sbom.addDependency(rootPurl, memberPurl) + addTransitiveDeps(sbom, metadata, memberId, ignoredDeps, new Set(), memberPurl) + } + } else { + // Component analysis: only [workspace.dependencies] from root Cargo.toml + let workspaceDeps = getWorkspaceDepsFromManifest(manifest) + + for (let depName of workspaceDeps) { + if (isDepIgnored(depName, ignoredDeps)) {continue} + + let pkg = metadata.packages.find(p => p.name === depName) + if (!pkg) { + let altName = depName.replace(/-/g, '_') + pkg = metadata.packages.find(p => p.name === altName) + } + if (!pkg) {continue} + + let depPurl = pkg.source == null + ? toPathDepPurl(pkg.name, pkg.version) + : toPurl(pkg.name, pkg.version) + + sbom.addDependency(rootPurl, depPurl) + } + } + + return sbom.getAsJsonString(opts) +} + +/** + * Recursively adds transitive dependencies to the SBOM. + * Path dependencies (source == null) are included with a + * {@code repository_url=local} qualifier so the backend can skip + * vulnerability checks while still showing them in the dependency tree. + * @param {Sbom} sbom - the SBOM to add dependencies to + * @param {object} metadata - parsed cargo metadata + * @param {string} packageId - the package ID to resolve dependencies for + * @param {Set} ignoredDeps - set of ignored dependency names + * @param {Set} visited - set of already-visited package IDs to prevent cycles + * @param {PackageURL} [startingPurl] - purl to use for the starting package, + * so callers can ensure it matches the purl already added to the SBOM + * @private + */ +function addTransitiveDeps(sbom, metadata, packageId, ignoredDeps, visited, startingPurl) { + if (visited.has(packageId)) {return} + visited.add(packageId) + + let resolveNode = findResolveNode(metadata, packageId) + if (!resolveNode) {return} + + let sourcePackage = findPackageById(metadata, packageId) + if (!sourcePackage) {return} + + let sourcePurl = startingPurl || (sourcePackage.source == null + ? toPathDepPurl(sourcePackage.name, sourcePackage.version) + : toPurl(sourcePackage.name, sourcePackage.version)) + + let runtimeDeps = filterRuntimeDeps(resolveNode) + + for (let depId of runtimeDeps) { + let depPackage = findPackageById(metadata, depId) + if (!depPackage) {continue} + if (isDepIgnored(depPackage.name, ignoredDeps)) {continue} + + let depPurl = depPackage.source == null + ? toPathDepPurl(depPackage.name, depPackage.version) + : toPurl(depPackage.name, depPackage.version) + + sbom.addDependency(sourcePurl, depPurl) + addTransitiveDeps(sbom, metadata, depId, ignoredDeps, visited) + } +} + +/** + * Adds only direct (non-transitive) dependencies to the SBOM. + * Path dependencies are included with a {@code repository_url=local} qualifier. + * @param {Sbom} sbom - the SBOM to add dependencies to + * @param {object} metadata - parsed cargo metadata + * @param {string} packageId - the package ID to resolve dependencies for + * @param {PackageURL} parentPurl - the parent purl to attach dependencies to + * @param {Set} ignoredDeps - set of ignored dependency names + * @private + */ +function addDirectDeps(sbom, metadata, packageId, parentPurl, ignoredDeps) { + let resolveNode = findResolveNode(metadata, packageId) + if (!resolveNode) {return} + + let runtimeDeps = filterRuntimeDeps(resolveNode) + + for (let depId of runtimeDeps) { + let depPackage = findPackageById(metadata, depId) + if (!depPackage) {continue} + if (isDepIgnored(depPackage.name, ignoredDeps)) {continue} + + let depPurl = depPackage.source == null + ? toPathDepPurl(depPackage.name, depPackage.version) + : toPurl(depPackage.name, depPackage.version) + + sbom.addDependency(parentPurl, depPurl) + } +} + +/** + * Filters the deps of a resolve node to only include runtime (normal) dependencies. + * @param {object} resolveNode - a node from metadata.resolve.nodes + * @returns {string[]} array of package IDs for runtime dependencies + * @private + */ +function filterRuntimeDeps(resolveNode) { + if (!resolveNode.deps) {return []} + + return resolveNode.deps + .filter(dep => { + if (!dep.dep_kinds || dep.dep_kinds.length === 0) {return true} + return dep.dep_kinds.some(dk => dk.kind == null || dk.kind === 'normal') + }) + .map(dep => dep.pkg) +} + +/** + * Finds a package in the metadata by its ID. + * @param {object} metadata - parsed cargo metadata + * @param {string} packageId - the package ID to find + * @returns {object|undefined} the found package or undefined + * @private + */ +function findPackageById(metadata, packageId) { + return metadata.packages.find(pkg => pkg.id === packageId) +} + +/** + * Finds a resolve node by package ID. + * @param {object} metadata - parsed cargo metadata + * @param {string} packageId - the package ID to find + * @returns {object|undefined} the found resolve node or undefined + * @private + */ +function findResolveNode(metadata, packageId) { + return metadata.resolve.nodes.find(node => node.id === packageId) +} + +/** + * Parses the root Cargo.toml and returns the dependency names listed in the + * [workspace.dependencies] section. Returns an empty array when the section + * does not exist. + * @param {string} manifest - path to the root Cargo.toml + * @returns {string[]} list of dependency names + * @private + */ +function getWorkspaceDepsFromManifest(manifest) { + let content = fs.readFileSync(manifest, 'utf-8') + let parsed = parseToml(content) + return Object.keys(parsed.workspace?.dependencies || {}) +} + +/** + * Extracts the workspace version from metadata if defined. + * @param {object} metadata - parsed cargo metadata + * @returns {string} the workspace version or a placeholder + * @private + */ +function getWorkspaceVersion(metadata) { + let workspaceRoot = metadata.workspace_root + let cargoTomlPath = path.join(workspaceRoot, 'Cargo.toml') + try { + let content = fs.readFileSync(cargoTomlPath, 'utf-8') + let parsed = parseToml(content) + return parsed.workspace?.package?.version || '0.0.0' + } catch (_) { + return '0.0.0' + } +} + +/** + * Parses Cargo.toml for dependencies annotated with an ignore marker. + * Supports both `exhortignore` and `trustify-da-ignore` markers. + * Supports inline deps, table-based deps, and workspace-level dependency sections. + * Uses cargo metadata to discover workspace members (which already handles glob + * expansion and exclude filtering) instead of parsing workspace member paths ourselves. + * @param {string} manifest - path to Cargo.toml + * @param {object} metadata - parsed cargo metadata + * @returns {Set} set of dependency names to ignore + * @private + */ +function getIgnoredDeps(manifest, metadata) { + let ignored = new Set() + + scanManifestForIgnored(manifest, ignored) + + // Scan workspace member manifests using metadata + let manifestDir = path.dirname(manifest) + let workspaceRoot = metadata.workspace_root + let workspaceMembers = metadata.workspace_members || [] + + for (let memberId of workspaceMembers) { + let memberRelDir = getMemberRelativeDir(memberId, workspaceRoot) + if (memberRelDir == null) {continue} + + let memberManifest = path.join(manifestDir, memberRelDir, 'Cargo.toml') + if (path.resolve(memberManifest) === path.resolve(manifest)) {continue} + + if (fs.existsSync(memberManifest)) { + scanManifestForIgnored(memberManifest, ignored) + } + } + + return ignored +} + +/** + * Extracts a workspace member's directory path relative to the workspace root + * from its cargo package ID. Workspace member IDs use the `path+file://` scheme, + * e.g. `path+file:///workspace/root/crates/member#0.1.0`. + * @param {string} packageId - the cargo package ID + * @param {string} workspaceRoot - the workspace root path from cargo metadata + * @returns {string|null} relative directory path, or null if it cannot be determined + * @private + */ +function getMemberRelativeDir(packageId, workspaceRoot) { + let pathMatch = packageId.match(/path\+file:\/\/(.+?)#/) + if (!pathMatch) {return null} + + let pkgPath = pathMatch[1] + if (!pkgPath.startsWith(workspaceRoot)) {return null} + + let relPath = pkgPath.substring(workspaceRoot.length) + if (relPath.startsWith('/')) {relPath = relPath.substring(1)} + + return relPath || null +} + +/** + * Scans a single Cargo.toml for ignored dependencies and adds them to the set. + * @param {string} manifest - path to Cargo.toml + * @param {Set} ignored - the set to add ignored dependency names to + * @private + */ +function scanManifestForIgnored(manifest, ignored) { + let content = fs.readFileSync(manifest, 'utf-8') + let lines = content.split(/\r?\n/) + + let currentSection = '' + let currentDepName = null + + for (let line of lines) { + let trimmed = line.trim() + + let sectionMatch = trimmed.match(/^\[([^\]]+)\]\s*(?:#.*)?$/) + if (sectionMatch) { + currentSection = sectionMatch[1] + currentDepName = null + + let tableDep = currentSection.match(/^(?:dependencies|dev-dependencies|build-dependencies|workspace\.dependencies)\.(.+)$/) + if (tableDep) { + currentDepName = tableDep[1] + // If the section header line itself carries an ignore marker, + // immediately add the dep + if (hasIgnoreMarker(line)) { + ignored.add(currentDepName) + } + } + continue + } + + let isIgnored = hasIgnoreMarker(line) + + if (isIgnored && isInDependencySection(currentSection)) { + let inlineMatch = trimmed.match(/^([a-zA-Z0-9_-]+)\s*=/) + if (inlineMatch) { + ignored.add(inlineMatch[1]) + continue + } + } + + if (isIgnored && currentDepName) { + ignored.add(currentDepName) + continue + } + } +} + +/** + * Checks if a section name is a dependency section. + * @param {string} section - the TOML section name + * @returns {boolean} + * @private + */ +function isInDependencySection(section) { + return section === 'dependencies' || + section === 'dev-dependencies' || + section === 'build-dependencies' || + section === 'workspace.dependencies' +} + +/** + * Creates a PackageURL for a Cargo/crates.io package. + * @param {string} name - the crate name + * @param {string} version - the crate version + * @returns {PackageURL} the package URL + * @private + */ +function toPurl(name, version) { + return new PackageURL(ecosystem, undefined, name, version, undefined, undefined) +} + +/** + * Creates a PackageURL for a local path dependency, marked with a + * {@code repository_url=local} qualifier so the backend can distinguish + * it from registry packages and skip vulnerability checks. + * @param {string} name - the crate name + * @param {string} version - the crate version + * @returns {PackageURL} the package URL with local qualifier + * @private + */ +function toPathDepPurl(name, version) { + return new PackageURL(ecosystem, undefined, name, version, { repository_url: 'local' }, undefined) +} diff --git a/test/provider.test.js b/test/provider.test.js index 40a87af7..87e383b7 100644 --- a/test/provider.test.js +++ b/test/provider.test.js @@ -124,6 +124,12 @@ suite('testing the matchForLicense utility function', () => { expect(provider.isSupported('requirements.txt')).to.be.true; }); + test('should match Rust Cargo provider for Cargo.toml', () => { + const provider = matchForLicense('/some/path/Cargo.toml', availableProviders); + expect(provider).to.exist; + expect(provider.isSupported('Cargo.toml')).to.be.true; + }); + test('all matched providers should have readLicenseFromManifest method', () => { const manifests = [ 'pom.xml', @@ -131,7 +137,8 @@ suite('testing the matchForLicense utility function', () => { 'build.gradle.kts', 'package.json', 'go.mod', - 'requirements.txt' + 'requirements.txt', + 'Cargo.toml' ]; manifests.forEach(manifest => { diff --git a/test/providers/license.test.js b/test/providers/license.test.js index a3c99071..9a075c69 100644 --- a/test/providers/license.test.js +++ b/test/providers/license.test.js @@ -10,6 +10,7 @@ import Javascript_npm from '../../src/providers/javascript_npm.js' import Javascript_pnpm from '../../src/providers/javascript_pnpm.js' import Javascript_yarn from '../../src/providers/javascript_yarn.js' import pythonPipProvider from '../../src/providers/python_pip.js' +import rustCargoProvider from '../../src/providers/rust_cargo.js' import { normalizeLicensesResponse } from '../../src/license/licenses_api.js' suite('normalizeLicensesResponse', () => { @@ -160,6 +161,31 @@ suite('testing readLicenseFromManifest with existing test manifests', () => { }); }); + suite('Rust Cargo provider', () => { + test('should read ISC license from [package] section', () => { + const cargoPath = path.resolve('test/providers/tst_manifests/cargo/cargo_single_crate_with_license/Cargo.toml'); + const license = rustCargoProvider.readLicenseFromManifest(cargoPath); + expect(license).to.equal('ISC'); + }); + + test('should read ISC license from [workspace.package] section', () => { + const cargoPath = path.resolve('test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/Cargo.toml'); + const license = rustCargoProvider.readLicenseFromManifest(cargoPath); + expect(license).to.equal('ISC'); + }); + + test('should return null when license not present', () => { + const cargoPath = path.resolve('test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/Cargo.toml'); + const license = rustCargoProvider.readLicenseFromManifest(cargoPath); + expect(license).to.be.null; + }); + + test('should return null for non-existent file', () => { + const license = rustCargoProvider.readLicenseFromManifest('/fake/path/Cargo.toml'); + expect(license).to.be.null; + }); + }); + suite('All providers have readLicenseFromManifest method', () => { const allProviders = [ { name: 'Java Maven', instance: new Java_maven() }, @@ -169,7 +195,8 @@ suite('testing readLicenseFromManifest with existing test manifests', () => { { name: 'JavaScript pnpm', instance: new Javascript_pnpm() }, { name: 'JavaScript yarn', instance: new Javascript_yarn() }, { name: 'Golang', instance: golangGomodulesProvider }, - { name: 'Python', instance: pythonPipProvider } + { name: 'Python', instance: pythonPipProvider }, + { name: 'Rust Cargo', instance: rustCargoProvider } ]; allProviders.forEach(({ name, instance }) => { diff --git a/test/providers/provider_manifests/cargo/with_lock_file/Cargo.lock b/test/providers/provider_manifests/cargo/with_lock_file/Cargo.lock new file mode 100644 index 00000000..fdffa2a0 --- /dev/null +++ b/test/providers/provider_manifests/cargo/with_lock_file/Cargo.lock @@ -0,0 +1 @@ +# placeholder diff --git a/test/providers/provider_manifests/cargo/with_lock_file/Cargo.toml b/test/providers/provider_manifests/cargo/with_lock_file/Cargo.toml new file mode 100644 index 00000000..d8aaeee2 --- /dev/null +++ b/test/providers/provider_manifests/cargo/with_lock_file/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "test-crate" +version = "0.1.0" +edition = "2021" + +[dependencies] +serde = "1.0" diff --git a/test/providers/provider_manifests/cargo/without_lock_file/Cargo.toml b/test/providers/provider_manifests/cargo/without_lock_file/Cargo.toml new file mode 100644 index 00000000..d8aaeee2 --- /dev/null +++ b/test/providers/provider_manifests/cargo/without_lock_file/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "test-crate" +version = "0.1.0" +edition = "2021" + +[dependencies] +serde = "1.0" diff --git a/test/providers/provider_manifests/cargo/workspace_member_with_lock/Cargo.lock b/test/providers/provider_manifests/cargo/workspace_member_with_lock/Cargo.lock new file mode 100644 index 00000000..51b227f7 --- /dev/null +++ b/test/providers/provider_manifests/cargo/workspace_member_with_lock/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "member1" +version = "1.0.0" diff --git a/test/providers/provider_manifests/cargo/workspace_member_with_lock/Cargo.toml b/test/providers/provider_manifests/cargo/workspace_member_with_lock/Cargo.toml new file mode 100644 index 00000000..598f5c61 --- /dev/null +++ b/test/providers/provider_manifests/cargo/workspace_member_with_lock/Cargo.toml @@ -0,0 +1,6 @@ +[workspace] +members = ["member1"] + +[workspace.package] +version = "1.0.0" +edition = "2021" diff --git a/test/providers/provider_manifests/cargo/workspace_member_with_lock/member1/Cargo.toml b/test/providers/provider_manifests/cargo/workspace_member_with_lock/member1/Cargo.toml new file mode 100644 index 00000000..9fd83a80 --- /dev/null +++ b/test/providers/provider_manifests/cargo/workspace_member_with_lock/member1/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "member1" +version = "1.0.0" +edition = "2021" + +[dependencies] +serde = "1.0" diff --git a/test/providers/provider_manifests/cargo/workspace_member_without_lock/Cargo.toml b/test/providers/provider_manifests/cargo/workspace_member_without_lock/Cargo.toml new file mode 100644 index 00000000..4478f8d4 --- /dev/null +++ b/test/providers/provider_manifests/cargo/workspace_member_without_lock/Cargo.toml @@ -0,0 +1,2 @@ +[workspace] +members = ["member1"] diff --git a/test/providers/provider_manifests/cargo/workspace_member_without_lock/member1/Cargo.toml b/test/providers/provider_manifests/cargo/workspace_member_without_lock/member1/Cargo.toml new file mode 100644 index 00000000..9fd83a80 --- /dev/null +++ b/test/providers/provider_manifests/cargo/workspace_member_without_lock/member1/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "member1" +version = "1.0.0" +edition = "2021" + +[dependencies] +serde = "1.0" diff --git a/test/providers/rust_cargo.test.js b/test/providers/rust_cargo.test.js new file mode 100644 index 00000000..dda73448 --- /dev/null +++ b/test/providers/rust_cargo.test.js @@ -0,0 +1,523 @@ +import fs from 'fs' +import path from 'path' + +import { expect } from 'chai' +import esmock from 'esmock' +import { useFakeTimers } from 'sinon' + +import { availableProviders, match } from '../../src/provider.js' +import rustCargo from '../../src/providers/rust_cargo.js' + +let clock + +/** + * Creates a mocked rust_cargo provider that uses a pre-built cargo_metadata.json + * instead of actually invoking the `cargo` binary. + * @param {string} testDir - the test directory containing cargo_metadata.json and Cargo.toml + * @returns {Promise} the mocked provider module + */ +async function createMockProvider(testDir) { + const metadataPath = path.join(testDir, 'cargo_metadata.json') + const metadataJson = fs.readFileSync(metadataPath, 'utf-8') + + return esmock('../../src/providers/rust_cargo.js', { + '../../src/tools.js': { + getCustomPath: () => 'cargo', + invokeCommand: (bin, args) => { + if (args.includes('--version')) { + return 'cargo 1.75.0 (1d8b05cdd 2023-11-20)' + } + if (args.includes('metadata')) { + return metadataJson + } + return '' + } + } + }) +} + +/** + * Asserts that the provider output for a given analysis type matches the expected SBOM file. + * @param {string} testDir - the test fixture directory + * @param {'stack'|'component'} analysisType - 'stack' or 'component' + */ +async function assertSbomMatchesExpected(testDir, analysisType) { + let expectedSbom = fs.readFileSync(`${testDir}/expected_sbom_${analysisType}_analysis.json`).toString() + expectedSbom = JSON.stringify(JSON.parse(expectedSbom), null, 4) + + let provider = await createMockProvider(testDir) + let manifest = `${testDir}/Cargo.toml` + let providedData = analysisType === 'stack' + ? provider.provideStack(manifest) + : provider.provideComponent(manifest) + + expect(providedData.ecosystem).equal('cargo') + expect(providedData.contentType).equal('application/vnd.cyclonedx+json') + expect(JSON.stringify(JSON.parse(providedData.content), null, 4).trim()).to.deep.equal(expectedSbom.trim()) +} + +/** + * Creates a mock provider and returns the parsed SBOM for a given analysis type. + * @param {string} testDir - the test fixture directory + * @param {'stack'|'component'} analysisType - 'stack' or 'component' + * @returns {Promise} the parsed SBOM object + */ +async function getParsedSbom(testDir, analysisType) { + let provider = await createMockProvider(testDir) + let manifest = `${testDir}/Cargo.toml` + let providedData = analysisType === 'stack' + ? provider.provideStack(manifest) + : provider.provideComponent(manifest) + return JSON.parse(providedData.content) +} + +suite('testing the rust-cargo data provider', () => { + [ + { name: 'Cargo.toml', expected: true }, + { name: 'package.json', expected: false }, + { name: 'pom.xml', expected: false }, + { name: 'go.mod', expected: false }, + { name: 'cargo.toml', expected: false }, + ].forEach(testCase => { + test(`verify isSupported returns ${testCase.expected} for ${testCase.name}`, () => + expect(rustCargo.isSupported(testCase.name)).to.equal(testCase.expected) + ) + }); + + test('verify validateLockFile returns true when Cargo.lock exists', () => { + expect(rustCargo.validateLockFile('test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore')).to.equal(true) + }) + + test('verify validateLockFile returns true for member crate when Cargo.lock is at workspace root', () => { + expect(rustCargo.validateLockFile('test/providers/tst_manifests/cargo/cargo_virtual_workspace/crate-a')).to.equal(true) + }) + + test('verify validateLockFile returns false when Cargo.lock does not exist anywhere', () => { + expect(rustCargo.validateLockFile('test/providers/provider_manifests/cargo/without_lock_file')).to.equal(false) + }) + + test('verify match function finds Cargo provider with lock file', () => { + let provider = match('test/providers/provider_manifests/cargo/with_lock_file/Cargo.toml', availableProviders) + expect(provider).to.not.be.null + expect(provider.isSupported('Cargo.toml')).to.be.true + }) + + test('verify match function throws when Cargo.lock is missing', () => { + expect(() => match('test/providers/provider_manifests/cargo/without_lock_file/Cargo.toml', availableProviders)) + .to.throw('Cargo.toml requires a lock file') + }) + + test('verify workspace member crate finds Cargo.lock at workspace root', () => { + let provider = match('test/providers/provider_manifests/cargo/workspace_member_with_lock/member1/Cargo.toml', availableProviders) + expect(provider).to.not.be.null + expect(provider.isSupported('Cargo.toml')).to.be.true + }) + + test('verify workspace member crate throws when workspace root has no Cargo.lock', () => { + expect(() => match('test/providers/provider_manifests/cargo/workspace_member_without_lock/member1/Cargo.toml', availableProviders)) + .to.throw('Cargo.toml requires a lock file') + }) + + test('verify validateLockFile returns true for workspace member when Cargo.lock is at workspace root', () => { + expect(rustCargo.validateLockFile('test/providers/provider_manifests/cargo/workspace_member_with_lock/member1')).to.equal(true) + }) + + test('verify validateLockFile returns false for workspace member when workspace root has no Cargo.lock', () => { + expect(rustCargo.validateLockFile('test/providers/provider_manifests/cargo/workspace_member_without_lock/member1')).to.equal(false) + }) +}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); + +suite('testing the rust-cargo single crate without ignore', () => { + const testDir = 'test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore' + + test('verify Cargo.toml sbom provided for stack analysis', async () => { + await assertSbomMatchesExpected(testDir, 'stack') + }).timeout(10000) + + test('verify Cargo.toml sbom provided for component analysis', async () => { + await assertSbomMatchesExpected(testDir, 'component') + }).timeout(10000) +}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); + +suite('testing the rust-cargo single crate with ignore', () => { + const testDir = 'test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore' + + test('verify Cargo.toml sbom provided for stack analysis with ignored deps', async () => { + await assertSbomMatchesExpected(testDir, 'stack') + }).timeout(10000) + + test('verify Cargo.toml sbom provided for component analysis with ignored deps', async () => { + await assertSbomMatchesExpected(testDir, 'component') + }).timeout(10000) +}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); + +suite('testing the rust-cargo virtual workspace', () => { + const testDir = 'test/providers/tst_manifests/cargo/cargo_virtual_workspace' + + test('verify Cargo.toml sbom provided for stack analysis with virtual workspace', async () => { + await assertSbomMatchesExpected(testDir, 'stack') + }).timeout(10000) + + test('verify Cargo.toml sbom provided for component analysis with virtual workspace', async () => { + await assertSbomMatchesExpected(testDir, 'component') + }).timeout(10000) +}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); + +suite('testing the rust-cargo workspace with root package', () => { + const testDir = 'test/providers/tst_manifests/cargo/cargo_workspace_with_root' + + test('verify Cargo.toml sbom provided for stack analysis with workspace root package', async () => { + await assertSbomMatchesExpected(testDir, 'stack') + }).timeout(10000) + + test('verify Cargo.toml sbom provided for component analysis with workspace root package', async () => { + await assertSbomMatchesExpected(testDir, 'component') + }).timeout(10000) +}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); + +suite('testing rust-cargo dependency filtering', () => { + const testDir = 'test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore' + + test('verify dev dependencies are excluded from stack analysis', async () => { + let sbom = await getParsedSbom(testDir, 'stack') + + // tempfile is a dev dependency and should not appear in the SBOM + expect(sbom.components.find(c => c.name === 'tempfile')).to.be.undefined + + // serde and tokio (normal deps) should be present + expect(sbom.components.find(c => c.name === 'serde')).to.not.be.undefined + expect(sbom.components.find(c => c.name === 'tokio')).to.not.be.undefined + }).timeout(10000) + + test('verify dev dependencies are excluded from component analysis', async () => { + let sbom = await getParsedSbom(testDir, 'component') + + expect(sbom.components.find(c => c.name === 'tempfile')).to.be.undefined + }).timeout(10000) +}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); + +suite('testing rust-cargo error handling', () => { + test('verify error when cargo binary is not accessible', async () => { + let provider = await esmock('../../src/providers/rust_cargo.js', { + '../../src/tools.js': { + getCustomPath: () => '/nonexistent/cargo', + invokeCommand: () => { + let err = new Error('spawn /nonexistent/cargo ENOENT') + err.code = 'ENOENT' + throw err + } + } + }) + + expect(() => provider.provideStack('test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/Cargo.toml')) + .to.throw('cargo binary is not accessible at "/nonexistent/cargo"') + }).timeout(10000) + + test('verify error when cargo metadata fails (e.g. invalid Cargo.toml)', async () => { + let provider = await esmock('../../src/providers/rust_cargo.js', { + '../../src/tools.js': { + getCustomPath: () => 'cargo', + invokeCommand: (bin, args) => { + if (args.includes('--version')) { + return 'cargo 1.75.0 (1d8b05cdd 2023-11-20)' + } + if (args.includes('metadata')) { + throw new Error('error: failed to parse manifest at `/fake/Cargo.toml`\n\nCaused by:\n missing field `name`') + } + return '' + } + } + }) + + expect(() => provider.provideStack('test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/Cargo.toml')) + .to.throw('failed to execute cargo metadata') + }).timeout(10000) +}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); + +suite('testing rust-cargo ignore with underscore/hyphen normalization', () => { + const testDir = 'test/providers/tst_manifests/cargo/cargo_single_crate_with_hyphen_ignore' + + test('verify hyphenated ignore name matches underscored crate in stack analysis', async () => { + let sbom = await getParsedSbom(testDir, 'stack') + + // Cargo.toml uses "serde-derive" (hyphen) but metadata reports "serde_derive" (underscore) + expect(sbom.components.find(c => c.name === 'serde_derive')).to.be.undefined + + // serde and tokio should still be present + expect(sbom.components.find(c => c.name === 'serde')).to.not.be.undefined + expect(sbom.components.find(c => c.name === 'tokio')).to.not.be.undefined + }).timeout(10000) + + test('verify hyphenated ignore name matches underscored crate in component analysis', async () => { + let sbom = await getParsedSbom(testDir, 'component') + + expect(sbom.components.find(c => c.name === 'serde_derive')).to.be.undefined + expect(sbom.components.find(c => c.name === 'serde')).to.not.be.undefined + expect(sbom.components.find(c => c.name === 'tokio')).to.not.be.undefined + }).timeout(10000) +}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); + +suite('testing rust-cargo ignore annotations with trustify-da-ignore', () => { + const testDir = 'test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore' + + test('verify trustify-da-ignore dependency is excluded from stack analysis', async () => { + let sbom = await getParsedSbom(testDir, 'stack') + + // serde is annotated with trustify-da-ignore and should not appear + expect(sbom.components.find(c => c.name === 'serde')).to.be.undefined + expect(sbom.components.find(c => c.name === 'serde_derive')).to.be.undefined + + // tokio should still be present + expect(sbom.components.find(c => c.name === 'tokio')).to.not.be.undefined + }).timeout(10000) + + test('verify trustify-da-ignore dependency is excluded from component analysis', async () => { + let sbom = await getParsedSbom(testDir, 'component') + + expect(sbom.components.find(c => c.name === 'serde')).to.be.undefined + }).timeout(10000) +}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); + +suite('testing rust-cargo ignore annotations with exhortignore', () => { + const testDir = 'test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore' + + test('verify exhortignore dependency is excluded from stack analysis', async () => { + let sbom = await getParsedSbom(testDir, 'stack') + + // serde is annotated with exhortignore and should not appear + expect(sbom.components.find(c => c.name === 'serde')).to.be.undefined + expect(sbom.components.find(c => c.name === 'serde_derive')).to.be.undefined + + // tokio should still be present + expect(sbom.components.find(c => c.name === 'tokio')).to.not.be.undefined + }).timeout(10000) + + test('verify exhortignore dependency is excluded from component analysis', async () => { + let sbom = await getParsedSbom(testDir, 'component') + + expect(sbom.components.find(c => c.name === 'serde')).to.be.undefined + }).timeout(10000) +}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); + +suite('testing rust-cargo virtual workspace ignore with trustify-da-ignore', () => { + const testDir = 'test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore' + + test('verify sbom matches expected for stack analysis', async () => { + await assertSbomMatchesExpected(testDir, 'stack') + }).timeout(10000) + + test('verify sbom matches expected for component analysis', async () => { + await assertSbomMatchesExpected(testDir, 'component') + }).timeout(10000) + + test('verify serde is excluded and tokio is present in stack analysis', async () => { + let sbom = await getParsedSbom(testDir, 'stack') + + expect(sbom.components.find(c => c.name === 'serde')).to.be.undefined + expect(sbom.components.find(c => c.name === 'tokio')).to.not.be.undefined + expect(sbom.components.find(c => c.name === 'crate-a')).to.not.be.undefined + expect(sbom.components.find(c => c.name === 'crate-b')).to.not.be.undefined + }).timeout(10000) + + test('verify component analysis has no member deps (no [workspace.dependencies])', async () => { + let sbom = await getParsedSbom(testDir, 'component') + + // No [workspace.dependencies] → CA returns only the synthetic root + expect(sbom.components.find(c => c.name === 'serde')).to.be.undefined + expect(sbom.components.find(c => c.name === 'crate-a')).to.be.undefined + expect(sbom.components.find(c => c.name === 'crate-b')).to.be.undefined + }).timeout(10000) +}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); + +suite('testing rust-cargo virtual workspace ignore with exhortignore', () => { + const testDir = 'test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore' + + test('verify sbom matches expected for stack analysis', async () => { + await assertSbomMatchesExpected(testDir, 'stack') + }).timeout(10000) + + test('verify sbom matches expected for component analysis', async () => { + await assertSbomMatchesExpected(testDir, 'component') + }).timeout(10000) + + test('verify serde is excluded and tokio is present in stack analysis', async () => { + let sbom = await getParsedSbom(testDir, 'stack') + + expect(sbom.components.find(c => c.name === 'serde')).to.be.undefined + expect(sbom.components.find(c => c.name === 'tokio')).to.not.be.undefined + expect(sbom.components.find(c => c.name === 'crate-a')).to.not.be.undefined + expect(sbom.components.find(c => c.name === 'crate-b')).to.not.be.undefined + }).timeout(10000) + + test('verify component analysis has no member deps (no [workspace.dependencies])', async () => { + let sbom = await getParsedSbom(testDir, 'component') + + // No [workspace.dependencies] → CA returns only the synthetic root + expect(sbom.components.find(c => c.name === 'serde')).to.be.undefined + expect(sbom.components.find(c => c.name === 'crate-a')).to.be.undefined + expect(sbom.components.find(c => c.name === 'crate-b')).to.be.undefined + }).timeout(10000) +}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); + +suite('testing rust-cargo workspace with root ignore with trustify-da-ignore', () => { + const testDir = 'test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore' + + test('verify sbom matches expected for stack analysis', async () => { + await assertSbomMatchesExpected(testDir, 'stack') + }).timeout(10000) + + test('verify sbom matches expected for component analysis', async () => { + await assertSbomMatchesExpected(testDir, 'component') + }).timeout(10000) + + test('verify serde is excluded and sub-crate not in graph in stack analysis', async () => { + let sbom = await getParsedSbom(testDir, 'stack') + + expect(sbom.components.find(c => c.name === 'serde')).to.be.undefined + // sub-crate is a workspace member but NOT in the root's dependency graph + expect(sbom.components.find(c => c.name === 'sub-crate')).to.be.undefined + expect(sbom.components.find(c => c.name === 'tokio')).to.be.undefined + }).timeout(10000) + + test('verify serde is excluded and sub-crate not in graph in component analysis', async () => { + let sbom = await getParsedSbom(testDir, 'component') + + expect(sbom.components.find(c => c.name === 'serde')).to.be.undefined + expect(sbom.components.find(c => c.name === 'sub-crate')).to.be.undefined + expect(sbom.components.find(c => c.name === 'tokio')).to.be.undefined + }).timeout(10000) +}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); + +suite('testing rust-cargo virtual workspace with glob member patterns', () => { + const testDir = 'test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members' + + test('verify sbom matches expected for stack analysis', async () => { + await assertSbomMatchesExpected(testDir, 'stack') + }).timeout(10000) + + test('verify sbom matches expected for component analysis', async () => { + await assertSbomMatchesExpected(testDir, 'component') + }).timeout(10000) + + test('verify serde is excluded via glob-resolved member ignore', async () => { + let sbom = await getParsedSbom(testDir, 'stack') + + expect(sbom.components.find(c => c.name === 'serde')).to.be.undefined + expect(sbom.components.find(c => c.name === 'tokio')).to.not.be.undefined + expect(sbom.components.find(c => c.name === 'crate-a')).to.not.be.undefined + expect(sbom.components.find(c => c.name === 'crate-b')).to.not.be.undefined + }).timeout(10000) + + test('verify component analysis has no member deps (no [workspace.dependencies])', async () => { + let sbom = await getParsedSbom(testDir, 'component') + + // No [workspace.dependencies] → CA returns only the synthetic root + expect(sbom.components.find(c => c.name === 'serde')).to.be.undefined + expect(sbom.components.find(c => c.name === 'crate-a')).to.be.undefined + expect(sbom.components.find(c => c.name === 'crate-b')).to.be.undefined + }).timeout(10000) +}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); + +suite('testing rust-cargo virtual workspace with [workspace.dependencies]', () => { + const testDir = 'test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps' + + test('verify sbom matches expected for stack analysis', async () => { + await assertSbomMatchesExpected(testDir, 'stack') + }).timeout(10000) + + test('verify sbom matches expected for component analysis', async () => { + await assertSbomMatchesExpected(testDir, 'component') + }).timeout(10000) + + test('verify CA includes only [workspace.dependencies] entries', async () => { + let sbom = await getParsedSbom(testDir, 'component') + + // serde and tokio are in [workspace.dependencies] → should be present + expect(sbom.components.find(c => c.name === 'serde')).to.not.be.undefined + expect(sbom.components.find(c => c.name === 'tokio')).to.not.be.undefined + + // crate-a and crate-b are workspace members, not in [workspace.dependencies] + expect(sbom.components.find(c => c.name === 'crate-a')).to.be.undefined + expect(sbom.components.find(c => c.name === 'crate-b')).to.be.undefined + + // pin-project-lite is transitive, should not appear in CA + expect(sbom.components.find(c => c.name === 'pin-project-lite')).to.be.undefined + }).timeout(10000) + + test('verify SA includes full member trees', async () => { + let sbom = await getParsedSbom(testDir, 'stack') + + expect(sbom.components.find(c => c.name === 'crate-a')).to.not.be.undefined + expect(sbom.components.find(c => c.name === 'crate-b')).to.not.be.undefined + expect(sbom.components.find(c => c.name === 'serde')).to.not.be.undefined + expect(sbom.components.find(c => c.name === 'tokio')).to.not.be.undefined + expect(sbom.components.find(c => c.name === 'pin-project-lite')).to.not.be.undefined + }).timeout(10000) +}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); + +suite('testing rust-cargo workspace with root ignore with exhortignore', () => { + const testDir = 'test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore' + + test('verify sbom matches expected for stack analysis', async () => { + await assertSbomMatchesExpected(testDir, 'stack') + }).timeout(10000) + + test('verify sbom matches expected for component analysis', async () => { + await assertSbomMatchesExpected(testDir, 'component') + }).timeout(10000) + + test('verify serde is excluded and sub-crate not in graph in stack analysis', async () => { + let sbom = await getParsedSbom(testDir, 'stack') + + expect(sbom.components.find(c => c.name === 'serde')).to.be.undefined + // sub-crate is a workspace member but NOT in the root's dependency graph + expect(sbom.components.find(c => c.name === 'sub-crate')).to.be.undefined + expect(sbom.components.find(c => c.name === 'tokio')).to.be.undefined + }).timeout(10000) + + test('verify serde is excluded and sub-crate not in graph in component analysis', async () => { + let sbom = await getParsedSbom(testDir, 'component') + + expect(sbom.components.find(c => c.name === 'serde')).to.be.undefined + expect(sbom.components.find(c => c.name === 'sub-crate')).to.be.undefined + expect(sbom.components.find(c => c.name === 'tokio')).to.be.undefined + }).timeout(10000) +}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); + +suite('testing rust-cargo license detection', () => { + const singleCrateLicenseDir = 'test/providers/tst_manifests/cargo/cargo_single_crate_with_license' + const virtualWorkspaceLicenseDir = 'test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license' + + // readLicenseFromManifest unit tests are in license.test.js (shared across all providers) + + test('verify license is included in SBOM for single crate (stack analysis)', async () => { + await assertSbomMatchesExpected(singleCrateLicenseDir, 'stack') + }).timeout(10000) + + test('verify license is included in SBOM for single crate (component analysis)', async () => { + await assertSbomMatchesExpected(singleCrateLicenseDir, 'component') + }).timeout(10000) + + test('verify license is included in SBOM for virtual workspace (stack analysis)', async () => { + await assertSbomMatchesExpected(virtualWorkspaceLicenseDir, 'stack') + }).timeout(10000) + + test('verify license is included in SBOM for virtual workspace (component analysis)', async () => { + await assertSbomMatchesExpected(virtualWorkspaceLicenseDir, 'component') + }).timeout(10000) + + test('verify license field present in single crate SBOM metadata component', async () => { + let sbom = await getParsedSbom(singleCrateLicenseDir, 'stack') + expect(sbom.metadata.component.licenses).to.deep.equal([{ license: { id: 'ISC' } }]) + }).timeout(10000) + + test('verify license field present in virtual workspace SBOM metadata component', async () => { + let sbom = await getParsedSbom(virtualWorkspaceLicenseDir, 'stack') + expect(sbom.metadata.component.licenses).to.deep.equal([{ license: { id: 'ISC' } }]) + }).timeout(10000) + + test('verify no license field in SBOM when manifest has no license', async () => { + let sbom = await getParsedSbom('test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore', 'stack') + expect(sbom.metadata.component.licenses).to.be.undefined + }).timeout(10000) +}).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/Cargo.lock b/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/Cargo.lock new file mode 100644 index 00000000..1fcedc5a --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/Cargo.lock @@ -0,0 +1,2 @@ +# This file is a placeholder for lock file validation. +# The actual dependency resolution is done by `cargo metadata`. diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/Cargo.toml new file mode 100644 index 00000000..c3206cfc --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "my-test-crate" +version = "0.1.0" +edition = "2021" + +[dependencies] +serde = "1.0.193" +tokio = { version = "1.35.0", features = ["full"] } + +[dev-dependencies] +tempfile = "3.8.0" diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/cargo_metadata.json b/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/cargo_metadata.json new file mode 100644 index 00000000..1239801d --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/cargo_metadata.json @@ -0,0 +1,110 @@ +{ + "packages": [ + { + "name": "my-test-crate", + "version": "0.1.0", + "id": "path+file:///fake/path/my-test-crate#0.1.0", + "source": null, + "dependencies": [ + { "name": "serde", "kind": null }, + { "name": "tokio", "kind": null }, + { "name": "tempfile", "kind": "dev" } + ] + }, + { + "name": "serde", + "version": "1.0.193", + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [ + { "name": "serde_derive", "kind": null } + ] + }, + { + "name": "serde_derive", + "version": "1.0.193", + "id": "registry+https://github.com/rust-lang/crates.io-index#serde_derive@1.0.193", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tokio", + "version": "1.35.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [ + { "name": "pin-project-lite", "kind": null } + ] + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tempfile", + "version": "3.8.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + } + ], + "workspace_members": [ + "path+file:///fake/path/my-test-crate#0.1.0" + ], + "workspace_root": "/fake/path/my-test-crate", + "resolve": { + "root": "path+file:///fake/path/my-test-crate#0.1.0", + "nodes": [ + { + "id": "path+file:///fake/path/my-test-crate#0.1.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "dep_kinds": [{ "kind": null, "target": null }] + }, + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "dep_kinds": [{ "kind": null, "target": null }] + }, + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "dep_kinds": [{ "kind": "dev", "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#serde_derive@1.0.193", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#serde_derive@1.0.193", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "deps": [] + } + ] + } +} diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/expected_sbom_component_analysis.json new file mode 100644 index 00000000..4fc7de2c --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/expected_sbom_component_analysis.json @@ -0,0 +1,55 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "my-test-crate", + "version": "0.1.0", + "purl": "pkg:cargo/my-test-crate@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-test-crate@0.1.0" + } + }, + "components": [ + { + "name": "my-test-crate", + "version": "0.1.0", + "purl": "pkg:cargo/my-test-crate@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-test-crate@0.1.0" + }, + { + "name": "serde", + "version": "1.0.193", + "purl": "pkg:cargo/serde@1.0.193", + "type": "library", + "bom-ref": "pkg:cargo/serde@1.0.193" + }, + { + "name": "tokio", + "version": "1.35.0", + "purl": "pkg:cargo/tokio@1.35.0", + "type": "library", + "bom-ref": "pkg:cargo/tokio@1.35.0" + } + ], + "dependencies": [ + { + "ref": "pkg:cargo/my-test-crate@0.1.0", + "dependsOn": [ + "pkg:cargo/serde@1.0.193", + "pkg:cargo/tokio@1.35.0" + ] + }, + { + "ref": "pkg:cargo/serde@1.0.193", + "dependsOn": [] + }, + { + "ref": "pkg:cargo/tokio@1.35.0", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/expected_sbom_stack_analysis.json new file mode 100644 index 00000000..3773710d --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/expected_sbom_stack_analysis.json @@ -0,0 +1,81 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "my-test-crate", + "version": "0.1.0", + "purl": "pkg:cargo/my-test-crate@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-test-crate@0.1.0" + } + }, + "components": [ + { + "name": "my-test-crate", + "version": "0.1.0", + "purl": "pkg:cargo/my-test-crate@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-test-crate@0.1.0" + }, + { + "name": "serde", + "version": "1.0.193", + "purl": "pkg:cargo/serde@1.0.193", + "type": "library", + "bom-ref": "pkg:cargo/serde@1.0.193" + }, + { + "name": "serde_derive", + "version": "1.0.193", + "purl": "pkg:cargo/serde_derive@1.0.193", + "type": "library", + "bom-ref": "pkg:cargo/serde_derive@1.0.193" + }, + { + "name": "tokio", + "version": "1.35.0", + "purl": "pkg:cargo/tokio@1.35.0", + "type": "library", + "bom-ref": "pkg:cargo/tokio@1.35.0" + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "purl": "pkg:cargo/pin-project-lite@0.2.13", + "type": "library", + "bom-ref": "pkg:cargo/pin-project-lite@0.2.13" + } + ], + "dependencies": [ + { + "ref": "pkg:cargo/my-test-crate@0.1.0", + "dependsOn": [ + "pkg:cargo/serde@1.0.193", + "pkg:cargo/tokio@1.35.0" + ] + }, + { + "ref": "pkg:cargo/serde@1.0.193", + "dependsOn": [ + "pkg:cargo/serde_derive@1.0.193" + ] + }, + { + "ref": "pkg:cargo/serde_derive@1.0.193", + "dependsOn": [] + }, + { + "ref": "pkg:cargo/tokio@1.35.0", + "dependsOn": [ + "pkg:cargo/pin-project-lite@0.2.13" + ] + }, + { + "ref": "pkg:cargo/pin-project-lite@0.2.13", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/Cargo.lock b/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/Cargo.lock new file mode 100644 index 00000000..1fcedc5a --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/Cargo.lock @@ -0,0 +1,2 @@ +# This file is a placeholder for lock file validation. +# The actual dependency resolution is done by `cargo metadata`. diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/Cargo.toml new file mode 100644 index 00000000..4799e2c4 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "my-test-crate" +version = "0.1.0" +edition = "2021" + +[dependencies] +serde = "1.0.193" # exhortignore +tokio = { version = "1.35.0", features = ["full"] } + +[dev-dependencies] +tempfile = "3.8.0" diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/cargo_metadata.json b/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/cargo_metadata.json new file mode 100644 index 00000000..1239801d --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/cargo_metadata.json @@ -0,0 +1,110 @@ +{ + "packages": [ + { + "name": "my-test-crate", + "version": "0.1.0", + "id": "path+file:///fake/path/my-test-crate#0.1.0", + "source": null, + "dependencies": [ + { "name": "serde", "kind": null }, + { "name": "tokio", "kind": null }, + { "name": "tempfile", "kind": "dev" } + ] + }, + { + "name": "serde", + "version": "1.0.193", + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [ + { "name": "serde_derive", "kind": null } + ] + }, + { + "name": "serde_derive", + "version": "1.0.193", + "id": "registry+https://github.com/rust-lang/crates.io-index#serde_derive@1.0.193", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tokio", + "version": "1.35.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [ + { "name": "pin-project-lite", "kind": null } + ] + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tempfile", + "version": "3.8.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + } + ], + "workspace_members": [ + "path+file:///fake/path/my-test-crate#0.1.0" + ], + "workspace_root": "/fake/path/my-test-crate", + "resolve": { + "root": "path+file:///fake/path/my-test-crate#0.1.0", + "nodes": [ + { + "id": "path+file:///fake/path/my-test-crate#0.1.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "dep_kinds": [{ "kind": null, "target": null }] + }, + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "dep_kinds": [{ "kind": null, "target": null }] + }, + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "dep_kinds": [{ "kind": "dev", "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#serde_derive@1.0.193", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#serde_derive@1.0.193", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "deps": [] + } + ] + } +} diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/expected_sbom_component_analysis.json new file mode 100644 index 00000000..1511cb4d --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/expected_sbom_component_analysis.json @@ -0,0 +1,43 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "my-test-crate", + "version": "0.1.0", + "purl": "pkg:cargo/my-test-crate@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-test-crate@0.1.0" + } + }, + "components": [ + { + "name": "my-test-crate", + "version": "0.1.0", + "purl": "pkg:cargo/my-test-crate@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-test-crate@0.1.0" + }, + { + "name": "tokio", + "version": "1.35.0", + "purl": "pkg:cargo/tokio@1.35.0", + "type": "library", + "bom-ref": "pkg:cargo/tokio@1.35.0" + } + ], + "dependencies": [ + { + "ref": "pkg:cargo/my-test-crate@0.1.0", + "dependsOn": [ + "pkg:cargo/tokio@1.35.0" + ] + }, + { + "ref": "pkg:cargo/tokio@1.35.0", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/expected_sbom_stack_analysis.json new file mode 100644 index 00000000..289b00a7 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/expected_sbom_stack_analysis.json @@ -0,0 +1,56 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "my-test-crate", + "version": "0.1.0", + "purl": "pkg:cargo/my-test-crate@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-test-crate@0.1.0" + } + }, + "components": [ + { + "name": "my-test-crate", + "version": "0.1.0", + "purl": "pkg:cargo/my-test-crate@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-test-crate@0.1.0" + }, + { + "name": "tokio", + "version": "1.35.0", + "purl": "pkg:cargo/tokio@1.35.0", + "type": "library", + "bom-ref": "pkg:cargo/tokio@1.35.0" + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "purl": "pkg:cargo/pin-project-lite@0.2.13", + "type": "library", + "bom-ref": "pkg:cargo/pin-project-lite@0.2.13" + } + ], + "dependencies": [ + { + "ref": "pkg:cargo/my-test-crate@0.1.0", + "dependsOn": [ + "pkg:cargo/tokio@1.35.0" + ] + }, + { + "ref": "pkg:cargo/tokio@1.35.0", + "dependsOn": [ + "pkg:cargo/pin-project-lite@0.2.13" + ] + }, + { + "ref": "pkg:cargo/pin-project-lite@0.2.13", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_hyphen_ignore/Cargo.lock b/test/providers/tst_manifests/cargo/cargo_single_crate_with_hyphen_ignore/Cargo.lock new file mode 100644 index 00000000..fdffa2a0 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_hyphen_ignore/Cargo.lock @@ -0,0 +1 @@ +# placeholder diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_hyphen_ignore/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_single_crate_with_hyphen_ignore/Cargo.toml new file mode 100644 index 00000000..a9c8050e --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_hyphen_ignore/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "my-test-crate" +version = "0.1.0" +edition = "2021" + +[dependencies] +serde = "1.0.193" +tokio = { version = "1.35.0", features = ["full"] } + +[dependencies.serde-derive] # trustify-da-ignore +version = "1.0.193" + +[dev-dependencies] +tempfile = "3.8.0" diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_hyphen_ignore/cargo_metadata.json b/test/providers/tst_manifests/cargo/cargo_single_crate_with_hyphen_ignore/cargo_metadata.json new file mode 100644 index 00000000..476e04d5 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_hyphen_ignore/cargo_metadata.json @@ -0,0 +1,108 @@ +{ + "packages": [ + { + "name": "my-test-crate", + "version": "0.1.0", + "id": "path+file:///fake/path/my-test-crate#0.1.0", + "source": null, + "dependencies": [ + { "name": "serde", "kind": null }, + { "name": "serde_derive", "kind": null }, + { "name": "tokio", "kind": null }, + { "name": "tempfile", "kind": "dev" } + ] + }, + { + "name": "serde", + "version": "1.0.193", + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "serde_derive", + "version": "1.0.193", + "id": "registry+https://github.com/rust-lang/crates.io-index#serde_derive@1.0.193", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tokio", + "version": "1.35.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [ + { "name": "pin-project-lite", "kind": null } + ] + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tempfile", + "version": "3.8.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + } + ], + "workspace_members": [ + "path+file:///fake/path/my-test-crate#0.1.0" + ], + "workspace_root": "/fake/path/my-test-crate", + "resolve": { + "root": "path+file:///fake/path/my-test-crate#0.1.0", + "nodes": [ + { + "id": "path+file:///fake/path/my-test-crate#0.1.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "dep_kinds": [{ "kind": null, "target": null }] + }, + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#serde_derive@1.0.193", + "dep_kinds": [{ "kind": null, "target": null }] + }, + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "dep_kinds": [{ "kind": null, "target": null }] + }, + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "dep_kinds": [{ "kind": "dev", "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#serde_derive@1.0.193", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "deps": [] + } + ] + } +} diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/Cargo.lock b/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/Cargo.lock new file mode 100644 index 00000000..1fcedc5a --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/Cargo.lock @@ -0,0 +1,2 @@ +# This file is a placeholder for lock file validation. +# The actual dependency resolution is done by `cargo metadata`. diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/Cargo.toml new file mode 100644 index 00000000..54b20ca8 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "my-test-crate" +version = "0.1.0" +edition = "2021" + +[dependencies] +serde = "1.0.193" # trustify-da-ignore +tokio = { version = "1.35.0", features = ["full"] } + +[dev-dependencies] +tempfile = "3.8.0" diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/cargo_metadata.json b/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/cargo_metadata.json new file mode 100644 index 00000000..1239801d --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/cargo_metadata.json @@ -0,0 +1,110 @@ +{ + "packages": [ + { + "name": "my-test-crate", + "version": "0.1.0", + "id": "path+file:///fake/path/my-test-crate#0.1.0", + "source": null, + "dependencies": [ + { "name": "serde", "kind": null }, + { "name": "tokio", "kind": null }, + { "name": "tempfile", "kind": "dev" } + ] + }, + { + "name": "serde", + "version": "1.0.193", + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [ + { "name": "serde_derive", "kind": null } + ] + }, + { + "name": "serde_derive", + "version": "1.0.193", + "id": "registry+https://github.com/rust-lang/crates.io-index#serde_derive@1.0.193", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tokio", + "version": "1.35.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [ + { "name": "pin-project-lite", "kind": null } + ] + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tempfile", + "version": "3.8.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + } + ], + "workspace_members": [ + "path+file:///fake/path/my-test-crate#0.1.0" + ], + "workspace_root": "/fake/path/my-test-crate", + "resolve": { + "root": "path+file:///fake/path/my-test-crate#0.1.0", + "nodes": [ + { + "id": "path+file:///fake/path/my-test-crate#0.1.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "dep_kinds": [{ "kind": null, "target": null }] + }, + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "dep_kinds": [{ "kind": null, "target": null }] + }, + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "dep_kinds": [{ "kind": "dev", "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#serde_derive@1.0.193", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#serde_derive@1.0.193", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "deps": [] + } + ] + } +} diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/expected_sbom_component_analysis.json new file mode 100644 index 00000000..1511cb4d --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/expected_sbom_component_analysis.json @@ -0,0 +1,43 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "my-test-crate", + "version": "0.1.0", + "purl": "pkg:cargo/my-test-crate@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-test-crate@0.1.0" + } + }, + "components": [ + { + "name": "my-test-crate", + "version": "0.1.0", + "purl": "pkg:cargo/my-test-crate@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-test-crate@0.1.0" + }, + { + "name": "tokio", + "version": "1.35.0", + "purl": "pkg:cargo/tokio@1.35.0", + "type": "library", + "bom-ref": "pkg:cargo/tokio@1.35.0" + } + ], + "dependencies": [ + { + "ref": "pkg:cargo/my-test-crate@0.1.0", + "dependsOn": [ + "pkg:cargo/tokio@1.35.0" + ] + }, + { + "ref": "pkg:cargo/tokio@1.35.0", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/expected_sbom_stack_analysis.json new file mode 100644 index 00000000..289b00a7 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/expected_sbom_stack_analysis.json @@ -0,0 +1,56 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "my-test-crate", + "version": "0.1.0", + "purl": "pkg:cargo/my-test-crate@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-test-crate@0.1.0" + } + }, + "components": [ + { + "name": "my-test-crate", + "version": "0.1.0", + "purl": "pkg:cargo/my-test-crate@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-test-crate@0.1.0" + }, + { + "name": "tokio", + "version": "1.35.0", + "purl": "pkg:cargo/tokio@1.35.0", + "type": "library", + "bom-ref": "pkg:cargo/tokio@1.35.0" + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "purl": "pkg:cargo/pin-project-lite@0.2.13", + "type": "library", + "bom-ref": "pkg:cargo/pin-project-lite@0.2.13" + } + ], + "dependencies": [ + { + "ref": "pkg:cargo/my-test-crate@0.1.0", + "dependsOn": [ + "pkg:cargo/tokio@1.35.0" + ] + }, + { + "ref": "pkg:cargo/tokio@1.35.0", + "dependsOn": [ + "pkg:cargo/pin-project-lite@0.2.13" + ] + }, + { + "ref": "pkg:cargo/pin-project-lite@0.2.13", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/Cargo.lock b/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/Cargo.lock new file mode 100644 index 00000000..1fcedc5a --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/Cargo.lock @@ -0,0 +1,2 @@ +# This file is a placeholder for lock file validation. +# The actual dependency resolution is done by `cargo metadata`. diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/Cargo.toml new file mode 100644 index 00000000..a82de102 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "my-test-crate" +version = "0.1.0" +edition = "2021" +license = "ISC" + +[dependencies] +serde = "1.0.193" +tokio = { version = "1.35.0", features = ["full"] } + +[dev-dependencies] +tempfile = "3.8.0" diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/cargo_metadata.json b/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/cargo_metadata.json new file mode 100644 index 00000000..1239801d --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/cargo_metadata.json @@ -0,0 +1,110 @@ +{ + "packages": [ + { + "name": "my-test-crate", + "version": "0.1.0", + "id": "path+file:///fake/path/my-test-crate#0.1.0", + "source": null, + "dependencies": [ + { "name": "serde", "kind": null }, + { "name": "tokio", "kind": null }, + { "name": "tempfile", "kind": "dev" } + ] + }, + { + "name": "serde", + "version": "1.0.193", + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [ + { "name": "serde_derive", "kind": null } + ] + }, + { + "name": "serde_derive", + "version": "1.0.193", + "id": "registry+https://github.com/rust-lang/crates.io-index#serde_derive@1.0.193", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tokio", + "version": "1.35.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [ + { "name": "pin-project-lite", "kind": null } + ] + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tempfile", + "version": "3.8.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + } + ], + "workspace_members": [ + "path+file:///fake/path/my-test-crate#0.1.0" + ], + "workspace_root": "/fake/path/my-test-crate", + "resolve": { + "root": "path+file:///fake/path/my-test-crate#0.1.0", + "nodes": [ + { + "id": "path+file:///fake/path/my-test-crate#0.1.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "dep_kinds": [{ "kind": null, "target": null }] + }, + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "dep_kinds": [{ "kind": null, "target": null }] + }, + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "dep_kinds": [{ "kind": "dev", "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#serde_derive@1.0.193", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#serde_derive@1.0.193", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "deps": [] + } + ] + } +} diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/expected_sbom_component_analysis.json new file mode 100644 index 00000000..c4453ccc --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/expected_sbom_component_analysis.json @@ -0,0 +1,69 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "my-test-crate", + "version": "0.1.0", + "purl": "pkg:cargo/my-test-crate@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-test-crate@0.1.0", + "licenses": [ + { + "license": { + "id": "ISC" + } + } + ] + } + }, + "components": [ + { + "name": "my-test-crate", + "version": "0.1.0", + "purl": "pkg:cargo/my-test-crate@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-test-crate@0.1.0", + "licenses": [ + { + "license": { + "id": "ISC" + } + } + ] + }, + { + "name": "serde", + "version": "1.0.193", + "purl": "pkg:cargo/serde@1.0.193", + "type": "library", + "bom-ref": "pkg:cargo/serde@1.0.193" + }, + { + "name": "tokio", + "version": "1.35.0", + "purl": "pkg:cargo/tokio@1.35.0", + "type": "library", + "bom-ref": "pkg:cargo/tokio@1.35.0" + } + ], + "dependencies": [ + { + "ref": "pkg:cargo/my-test-crate@0.1.0", + "dependsOn": [ + "pkg:cargo/serde@1.0.193", + "pkg:cargo/tokio@1.35.0" + ] + }, + { + "ref": "pkg:cargo/serde@1.0.193", + "dependsOn": [] + }, + { + "ref": "pkg:cargo/tokio@1.35.0", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/expected_sbom_stack_analysis.json new file mode 100644 index 00000000..13faea24 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/expected_sbom_stack_analysis.json @@ -0,0 +1,95 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "my-test-crate", + "version": "0.1.0", + "purl": "pkg:cargo/my-test-crate@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-test-crate@0.1.0", + "licenses": [ + { + "license": { + "id": "ISC" + } + } + ] + } + }, + "components": [ + { + "name": "my-test-crate", + "version": "0.1.0", + "purl": "pkg:cargo/my-test-crate@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-test-crate@0.1.0", + "licenses": [ + { + "license": { + "id": "ISC" + } + } + ] + }, + { + "name": "serde", + "version": "1.0.193", + "purl": "pkg:cargo/serde@1.0.193", + "type": "library", + "bom-ref": "pkg:cargo/serde@1.0.193" + }, + { + "name": "serde_derive", + "version": "1.0.193", + "purl": "pkg:cargo/serde_derive@1.0.193", + "type": "library", + "bom-ref": "pkg:cargo/serde_derive@1.0.193" + }, + { + "name": "tokio", + "version": "1.35.0", + "purl": "pkg:cargo/tokio@1.35.0", + "type": "library", + "bom-ref": "pkg:cargo/tokio@1.35.0" + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "purl": "pkg:cargo/pin-project-lite@0.2.13", + "type": "library", + "bom-ref": "pkg:cargo/pin-project-lite@0.2.13" + } + ], + "dependencies": [ + { + "ref": "pkg:cargo/my-test-crate@0.1.0", + "dependsOn": [ + "pkg:cargo/serde@1.0.193", + "pkg:cargo/tokio@1.35.0" + ] + }, + { + "ref": "pkg:cargo/serde@1.0.193", + "dependsOn": [ + "pkg:cargo/serde_derive@1.0.193" + ] + }, + { + "ref": "pkg:cargo/serde_derive@1.0.193", + "dependsOn": [] + }, + { + "ref": "pkg:cargo/tokio@1.35.0", + "dependsOn": [ + "pkg:cargo/pin-project-lite@0.2.13" + ] + }, + { + "ref": "pkg:cargo/pin-project-lite@0.2.13", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace/Cargo.lock b/test/providers/tst_manifests/cargo/cargo_virtual_workspace/Cargo.lock new file mode 100644 index 00000000..1fcedc5a --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace/Cargo.lock @@ -0,0 +1,2 @@ +# This file is a placeholder for lock file validation. +# The actual dependency resolution is done by `cargo metadata`. diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_virtual_workspace/Cargo.toml new file mode 100644 index 00000000..76c52381 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace/Cargo.toml @@ -0,0 +1,6 @@ +[workspace] +members = [ + "crate-a", + "crate-b", +] +resolver = "2" diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace/cargo_metadata.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace/cargo_metadata.json new file mode 100644 index 00000000..7e520d60 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace/cargo_metadata.json @@ -0,0 +1,90 @@ +{ + "packages": [ + { + "name": "crate-a", + "version": "0.1.0", + "id": "path+file:///fake/path/cargo_virtual_workspace/crate-a#0.1.0", + "source": null, + "dependencies": [ + { "name": "serde", "kind": null } + ] + }, + { + "name": "crate-b", + "version": "0.2.0", + "id": "path+file:///fake/path/cargo_virtual_workspace/crate-b#0.2.0", + "source": null, + "dependencies": [ + { "name": "tokio", "kind": null } + ] + }, + { + "name": "serde", + "version": "1.0.193", + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tokio", + "version": "1.35.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [ + { "name": "pin-project-lite", "kind": null } + ] + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + } + ], + "workspace_members": [ + "path+file:///fake/path/cargo_virtual_workspace/crate-a#0.1.0", + "path+file:///fake/path/cargo_virtual_workspace/crate-b#0.2.0" + ], + "workspace_root": "/fake/path/cargo_virtual_workspace", + "resolve": { + "root": null, + "nodes": [ + { + "id": "path+file:///fake/path/cargo_virtual_workspace/crate-a#0.1.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "path+file:///fake/path/cargo_virtual_workspace/crate-b#0.2.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "deps": [] + } + ] + } +} diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace/crate-a/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_virtual_workspace/crate-a/Cargo.toml new file mode 100644 index 00000000..4c79e6eb --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace/crate-a/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "crate-a" +version = "0.1.0" +edition = "2021" + +[dependencies] +serde = "1.0.193" diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace/crate-b/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_virtual_workspace/crate-b/Cargo.toml new file mode 100644 index 00000000..8974ad47 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace/crate-b/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "crate-b" +version = "0.2.0" +edition = "2021" + +[dependencies] +tokio = { version = "1.35.0", features = ["full"] } diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace/expected_sbom_component_analysis.json new file mode 100644 index 00000000..78d8b1a6 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace/expected_sbom_component_analysis.json @@ -0,0 +1,25 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "cargo_virtual_workspace", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace@0.0.0" + } + }, + "components": [ + { + "name": "cargo_virtual_workspace", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace@0.0.0" + } + ], + "dependencies": [] +} diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace/expected_sbom_stack_analysis.json new file mode 100644 index 00000000..06639d2f --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace/expected_sbom_stack_analysis.json @@ -0,0 +1,94 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "cargo_virtual_workspace", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace@0.0.0" + } + }, + "components": [ + { + "name": "cargo_virtual_workspace", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace@0.0.0" + }, + { + "name": "crate-a", + "version": "0.1.0", + "purl": "pkg:cargo/crate-a@0.1.0?repository_url=local", + "type": "library", + "bom-ref": "pkg:cargo/crate-a@0.1.0?repository_url=local" + }, + { + "name": "serde", + "version": "1.0.193", + "purl": "pkg:cargo/serde@1.0.193", + "type": "library", + "bom-ref": "pkg:cargo/serde@1.0.193" + }, + { + "name": "crate-b", + "version": "0.2.0", + "purl": "pkg:cargo/crate-b@0.2.0?repository_url=local", + "type": "library", + "bom-ref": "pkg:cargo/crate-b@0.2.0?repository_url=local" + }, + { + "name": "tokio", + "version": "1.35.0", + "purl": "pkg:cargo/tokio@1.35.0", + "type": "library", + "bom-ref": "pkg:cargo/tokio@1.35.0" + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "purl": "pkg:cargo/pin-project-lite@0.2.13", + "type": "library", + "bom-ref": "pkg:cargo/pin-project-lite@0.2.13" + } + ], + "dependencies": [ + { + "ref": "pkg:cargo/cargo_virtual_workspace@0.0.0", + "dependsOn": [ + "pkg:cargo/crate-a@0.1.0?repository_url=local", + "pkg:cargo/crate-b@0.2.0?repository_url=local" + ] + }, + { + "ref": "pkg:cargo/crate-a@0.1.0?repository_url=local", + "dependsOn": [ + "pkg:cargo/serde@1.0.193" + ] + }, + { + "ref": "pkg:cargo/serde@1.0.193", + "dependsOn": [] + }, + { + "ref": "pkg:cargo/crate-b@0.2.0?repository_url=local", + "dependsOn": [ + "pkg:cargo/tokio@1.35.0" + ] + }, + { + "ref": "pkg:cargo/tokio@1.35.0", + "dependsOn": [ + "pkg:cargo/pin-project-lite@0.2.13" + ] + }, + { + "ref": "pkg:cargo/pin-project-lite@0.2.13", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/Cargo.lock b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/Cargo.lock new file mode 100644 index 00000000..fdffa2a0 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/Cargo.lock @@ -0,0 +1 @@ +# placeholder diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/Cargo.toml new file mode 100644 index 00000000..a7cff588 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/Cargo.toml @@ -0,0 +1,5 @@ +[workspace] +members = [ + "crates/*", +] +resolver = "2" diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/cargo_metadata.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/cargo_metadata.json new file mode 100644 index 00000000..4a07cedb --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/cargo_metadata.json @@ -0,0 +1,90 @@ +{ + "packages": [ + { + "name": "crate-a", + "version": "0.1.0", + "id": "path+file:///fake/path/cargo_virtual_workspace_glob_members/crates/crate-a#0.1.0", + "source": null, + "dependencies": [ + { "name": "serde", "kind": null } + ] + }, + { + "name": "crate-b", + "version": "0.2.0", + "id": "path+file:///fake/path/cargo_virtual_workspace_glob_members/crates/crate-b#0.2.0", + "source": null, + "dependencies": [ + { "name": "tokio", "kind": null } + ] + }, + { + "name": "serde", + "version": "1.0.193", + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tokio", + "version": "1.35.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [ + { "name": "pin-project-lite", "kind": null } + ] + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + } + ], + "workspace_members": [ + "path+file:///fake/path/cargo_virtual_workspace_glob_members/crates/crate-a#0.1.0", + "path+file:///fake/path/cargo_virtual_workspace_glob_members/crates/crate-b#0.2.0" + ], + "workspace_root": "/fake/path/cargo_virtual_workspace_glob_members", + "resolve": { + "root": null, + "nodes": [ + { + "id": "path+file:///fake/path/cargo_virtual_workspace_glob_members/crates/crate-a#0.1.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "path+file:///fake/path/cargo_virtual_workspace_glob_members/crates/crate-b#0.2.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "deps": [] + } + ] + } +} diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/crates/crate-a/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/crates/crate-a/Cargo.toml new file mode 100644 index 00000000..226e8c62 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/crates/crate-a/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "crate-a" +version = "0.1.0" +edition = "2021" + +[dependencies] +serde = "1.0.193" # trustify-da-ignore diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/crates/crate-b/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/crates/crate-b/Cargo.toml new file mode 100644 index 00000000..8974ad47 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/crates/crate-b/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "crate-b" +version = "0.2.0" +edition = "2021" + +[dependencies] +tokio = { version = "1.35.0", features = ["full"] } diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/expected_sbom_component_analysis.json new file mode 100644 index 00000000..8fa1c7a5 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/expected_sbom_component_analysis.json @@ -0,0 +1,25 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "cargo_virtual_workspace_glob_members", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace_glob_members@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace_glob_members@0.0.0" + } + }, + "components": [ + { + "name": "cargo_virtual_workspace_glob_members", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace_glob_members@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace_glob_members@0.0.0" + } + ], + "dependencies": [] +} diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/expected_sbom_stack_analysis.json new file mode 100644 index 00000000..3da42dad --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/expected_sbom_stack_analysis.json @@ -0,0 +1,81 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "cargo_virtual_workspace_glob_members", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace_glob_members@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace_glob_members@0.0.0" + } + }, + "components": [ + { + "name": "cargo_virtual_workspace_glob_members", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace_glob_members@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace_glob_members@0.0.0" + }, + { + "name": "crate-a", + "version": "0.1.0", + "purl": "pkg:cargo/crate-a@0.1.0?repository_url=local", + "type": "library", + "bom-ref": "pkg:cargo/crate-a@0.1.0?repository_url=local" + }, + { + "name": "crate-b", + "version": "0.2.0", + "purl": "pkg:cargo/crate-b@0.2.0?repository_url=local", + "type": "library", + "bom-ref": "pkg:cargo/crate-b@0.2.0?repository_url=local" + }, + { + "name": "tokio", + "version": "1.35.0", + "purl": "pkg:cargo/tokio@1.35.0", + "type": "library", + "bom-ref": "pkg:cargo/tokio@1.35.0" + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "purl": "pkg:cargo/pin-project-lite@0.2.13", + "type": "library", + "bom-ref": "pkg:cargo/pin-project-lite@0.2.13" + } + ], + "dependencies": [ + { + "ref": "pkg:cargo/cargo_virtual_workspace_glob_members@0.0.0", + "dependsOn": [ + "pkg:cargo/crate-a@0.1.0?repository_url=local", + "pkg:cargo/crate-b@0.2.0?repository_url=local" + ] + }, + { + "ref": "pkg:cargo/crate-a@0.1.0?repository_url=local", + "dependsOn": [] + }, + { + "ref": "pkg:cargo/crate-b@0.2.0?repository_url=local", + "dependsOn": [ + "pkg:cargo/tokio@1.35.0" + ] + }, + { + "ref": "pkg:cargo/tokio@1.35.0", + "dependsOn": [ + "pkg:cargo/pin-project-lite@0.2.13" + ] + }, + { + "ref": "pkg:cargo/pin-project-lite@0.2.13", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/Cargo.lock b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/Cargo.lock new file mode 100644 index 00000000..1fcedc5a --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/Cargo.lock @@ -0,0 +1,2 @@ +# This file is a placeholder for lock file validation. +# The actual dependency resolution is done by `cargo metadata`. diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/Cargo.toml new file mode 100644 index 00000000..76c52381 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/Cargo.toml @@ -0,0 +1,6 @@ +[workspace] +members = [ + "crate-a", + "crate-b", +] +resolver = "2" diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/cargo_metadata.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/cargo_metadata.json new file mode 100644 index 00000000..71d02678 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/cargo_metadata.json @@ -0,0 +1,90 @@ +{ + "packages": [ + { + "name": "crate-a", + "version": "0.1.0", + "id": "path+file:///fake/path/cargo_virtual_workspace_with_exhortignore/crate-a#0.1.0", + "source": null, + "dependencies": [ + { "name": "serde", "kind": null } + ] + }, + { + "name": "crate-b", + "version": "0.2.0", + "id": "path+file:///fake/path/cargo_virtual_workspace_with_exhortignore/crate-b#0.2.0", + "source": null, + "dependencies": [ + { "name": "tokio", "kind": null } + ] + }, + { + "name": "serde", + "version": "1.0.193", + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tokio", + "version": "1.35.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [ + { "name": "pin-project-lite", "kind": null } + ] + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + } + ], + "workspace_members": [ + "path+file:///fake/path/cargo_virtual_workspace_with_exhortignore/crate-a#0.1.0", + "path+file:///fake/path/cargo_virtual_workspace_with_exhortignore/crate-b#0.2.0" + ], + "workspace_root": "/fake/path/cargo_virtual_workspace_with_exhortignore", + "resolve": { + "root": null, + "nodes": [ + { + "id": "path+file:///fake/path/cargo_virtual_workspace_with_exhortignore/crate-a#0.1.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "path+file:///fake/path/cargo_virtual_workspace_with_exhortignore/crate-b#0.2.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "deps": [] + } + ] + } +} diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/crate-a/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/crate-a/Cargo.toml new file mode 100644 index 00000000..aad0c0e0 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/crate-a/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "crate-a" +version = "0.1.0" +edition = "2021" + +[dependencies] +serde = "1.0.193" # exhortignore diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/crate-b/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/crate-b/Cargo.toml new file mode 100644 index 00000000..8974ad47 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/crate-b/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "crate-b" +version = "0.2.0" +edition = "2021" + +[dependencies] +tokio = { version = "1.35.0", features = ["full"] } diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/expected_sbom_component_analysis.json new file mode 100644 index 00000000..e61b9b94 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/expected_sbom_component_analysis.json @@ -0,0 +1,25 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "cargo_virtual_workspace_with_exhortignore", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace_with_exhortignore@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_exhortignore@0.0.0" + } + }, + "components": [ + { + "name": "cargo_virtual_workspace_with_exhortignore", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace_with_exhortignore@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_exhortignore@0.0.0" + } + ], + "dependencies": [] +} diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/expected_sbom_stack_analysis.json new file mode 100644 index 00000000..4b88eb4f --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/expected_sbom_stack_analysis.json @@ -0,0 +1,81 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "cargo_virtual_workspace_with_exhortignore", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace_with_exhortignore@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_exhortignore@0.0.0" + } + }, + "components": [ + { + "name": "cargo_virtual_workspace_with_exhortignore", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace_with_exhortignore@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_exhortignore@0.0.0" + }, + { + "name": "crate-a", + "version": "0.1.0", + "purl": "pkg:cargo/crate-a@0.1.0?repository_url=local", + "type": "library", + "bom-ref": "pkg:cargo/crate-a@0.1.0?repository_url=local" + }, + { + "name": "crate-b", + "version": "0.2.0", + "purl": "pkg:cargo/crate-b@0.2.0?repository_url=local", + "type": "library", + "bom-ref": "pkg:cargo/crate-b@0.2.0?repository_url=local" + }, + { + "name": "tokio", + "version": "1.35.0", + "purl": "pkg:cargo/tokio@1.35.0", + "type": "library", + "bom-ref": "pkg:cargo/tokio@1.35.0" + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "purl": "pkg:cargo/pin-project-lite@0.2.13", + "type": "library", + "bom-ref": "pkg:cargo/pin-project-lite@0.2.13" + } + ], + "dependencies": [ + { + "ref": "pkg:cargo/cargo_virtual_workspace_with_exhortignore@0.0.0", + "dependsOn": [ + "pkg:cargo/crate-a@0.1.0?repository_url=local", + "pkg:cargo/crate-b@0.2.0?repository_url=local" + ] + }, + { + "ref": "pkg:cargo/crate-a@0.1.0?repository_url=local", + "dependsOn": [] + }, + { + "ref": "pkg:cargo/crate-b@0.2.0?repository_url=local", + "dependsOn": [ + "pkg:cargo/tokio@1.35.0" + ] + }, + { + "ref": "pkg:cargo/tokio@1.35.0", + "dependsOn": [ + "pkg:cargo/pin-project-lite@0.2.13" + ] + }, + { + "ref": "pkg:cargo/pin-project-lite@0.2.13", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/Cargo.lock b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/Cargo.lock new file mode 100644 index 00000000..1fcedc5a --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/Cargo.lock @@ -0,0 +1,2 @@ +# This file is a placeholder for lock file validation. +# The actual dependency resolution is done by `cargo metadata`. diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/Cargo.toml new file mode 100644 index 00000000..76c52381 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/Cargo.toml @@ -0,0 +1,6 @@ +[workspace] +members = [ + "crate-a", + "crate-b", +] +resolver = "2" diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/cargo_metadata.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/cargo_metadata.json new file mode 100644 index 00000000..25957c60 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/cargo_metadata.json @@ -0,0 +1,90 @@ +{ + "packages": [ + { + "name": "crate-a", + "version": "0.1.0", + "id": "path+file:///fake/path/cargo_virtual_workspace_with_ignore/crate-a#0.1.0", + "source": null, + "dependencies": [ + { "name": "serde", "kind": null } + ] + }, + { + "name": "crate-b", + "version": "0.2.0", + "id": "path+file:///fake/path/cargo_virtual_workspace_with_ignore/crate-b#0.2.0", + "source": null, + "dependencies": [ + { "name": "tokio", "kind": null } + ] + }, + { + "name": "serde", + "version": "1.0.193", + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tokio", + "version": "1.35.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [ + { "name": "pin-project-lite", "kind": null } + ] + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + } + ], + "workspace_members": [ + "path+file:///fake/path/cargo_virtual_workspace_with_ignore/crate-a#0.1.0", + "path+file:///fake/path/cargo_virtual_workspace_with_ignore/crate-b#0.2.0" + ], + "workspace_root": "/fake/path/cargo_virtual_workspace_with_ignore", + "resolve": { + "root": null, + "nodes": [ + { + "id": "path+file:///fake/path/cargo_virtual_workspace_with_ignore/crate-a#0.1.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "path+file:///fake/path/cargo_virtual_workspace_with_ignore/crate-b#0.2.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "deps": [] + } + ] + } +} diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/crate-a/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/crate-a/Cargo.toml new file mode 100644 index 00000000..226e8c62 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/crate-a/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "crate-a" +version = "0.1.0" +edition = "2021" + +[dependencies] +serde = "1.0.193" # trustify-da-ignore diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/crate-b/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/crate-b/Cargo.toml new file mode 100644 index 00000000..8974ad47 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/crate-b/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "crate-b" +version = "0.2.0" +edition = "2021" + +[dependencies] +tokio = { version = "1.35.0", features = ["full"] } diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/expected_sbom_component_analysis.json new file mode 100644 index 00000000..79032065 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/expected_sbom_component_analysis.json @@ -0,0 +1,25 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "cargo_virtual_workspace_with_ignore", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace_with_ignore@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_ignore@0.0.0" + } + }, + "components": [ + { + "name": "cargo_virtual_workspace_with_ignore", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace_with_ignore@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_ignore@0.0.0" + } + ], + "dependencies": [] +} diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/expected_sbom_stack_analysis.json new file mode 100644 index 00000000..46b781e8 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/expected_sbom_stack_analysis.json @@ -0,0 +1,81 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "cargo_virtual_workspace_with_ignore", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace_with_ignore@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_ignore@0.0.0" + } + }, + "components": [ + { + "name": "cargo_virtual_workspace_with_ignore", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace_with_ignore@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_ignore@0.0.0" + }, + { + "name": "crate-a", + "version": "0.1.0", + "purl": "pkg:cargo/crate-a@0.1.0?repository_url=local", + "type": "library", + "bom-ref": "pkg:cargo/crate-a@0.1.0?repository_url=local" + }, + { + "name": "crate-b", + "version": "0.2.0", + "purl": "pkg:cargo/crate-b@0.2.0?repository_url=local", + "type": "library", + "bom-ref": "pkg:cargo/crate-b@0.2.0?repository_url=local" + }, + { + "name": "tokio", + "version": "1.35.0", + "purl": "pkg:cargo/tokio@1.35.0", + "type": "library", + "bom-ref": "pkg:cargo/tokio@1.35.0" + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "purl": "pkg:cargo/pin-project-lite@0.2.13", + "type": "library", + "bom-ref": "pkg:cargo/pin-project-lite@0.2.13" + } + ], + "dependencies": [ + { + "ref": "pkg:cargo/cargo_virtual_workspace_with_ignore@0.0.0", + "dependsOn": [ + "pkg:cargo/crate-a@0.1.0?repository_url=local", + "pkg:cargo/crate-b@0.2.0?repository_url=local" + ] + }, + { + "ref": "pkg:cargo/crate-a@0.1.0?repository_url=local", + "dependsOn": [] + }, + { + "ref": "pkg:cargo/crate-b@0.2.0?repository_url=local", + "dependsOn": [ + "pkg:cargo/tokio@1.35.0" + ] + }, + { + "ref": "pkg:cargo/tokio@1.35.0", + "dependsOn": [ + "pkg:cargo/pin-project-lite@0.2.13" + ] + }, + { + "ref": "pkg:cargo/pin-project-lite@0.2.13", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/Cargo.lock b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/Cargo.lock new file mode 100644 index 00000000..fdffa2a0 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/Cargo.lock @@ -0,0 +1 @@ +# placeholder diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/Cargo.toml new file mode 100644 index 00000000..d1e1beca --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/Cargo.toml @@ -0,0 +1,13 @@ +[workspace] +members = [ + "crate-a", + "crate-b", +] +resolver = "2" + +[workspace.package] +license = "ISC" + +[workspace.dependencies] +serde = "1.0.193" +tokio = "1.35.0" diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/cargo_metadata.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/cargo_metadata.json new file mode 100644 index 00000000..9a4b6ea8 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/cargo_metadata.json @@ -0,0 +1,90 @@ +{ + "packages": [ + { + "name": "crate-a", + "version": "0.1.0", + "id": "path+file:///fake/path/cargo_virtual_workspace_with_license/crate-a#0.1.0", + "source": null, + "dependencies": [ + { "name": "serde", "kind": null } + ] + }, + { + "name": "crate-b", + "version": "0.2.0", + "id": "path+file:///fake/path/cargo_virtual_workspace_with_license/crate-b#0.2.0", + "source": null, + "dependencies": [ + { "name": "tokio", "kind": null } + ] + }, + { + "name": "serde", + "version": "1.0.193", + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tokio", + "version": "1.35.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [ + { "name": "pin-project-lite", "kind": null } + ] + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + } + ], + "workspace_members": [ + "path+file:///fake/path/cargo_virtual_workspace_with_license/crate-a#0.1.0", + "path+file:///fake/path/cargo_virtual_workspace_with_license/crate-b#0.2.0" + ], + "workspace_root": "/fake/path/cargo_virtual_workspace_with_license", + "resolve": { + "root": null, + "nodes": [ + { + "id": "path+file:///fake/path/cargo_virtual_workspace_with_license/crate-a#0.1.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "path+file:///fake/path/cargo_virtual_workspace_with_license/crate-b#0.2.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "deps": [] + } + ] + } +} diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/expected_sbom_component_analysis.json new file mode 100644 index 00000000..b7d93e02 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/expected_sbom_component_analysis.json @@ -0,0 +1,69 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "cargo_virtual_workspace_with_license", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace_with_license@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_license@0.0.0", + "licenses": [ + { + "license": { + "id": "ISC" + } + } + ] + } + }, + "components": [ + { + "name": "cargo_virtual_workspace_with_license", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace_with_license@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_license@0.0.0", + "licenses": [ + { + "license": { + "id": "ISC" + } + } + ] + }, + { + "name": "serde", + "version": "1.0.193", + "purl": "pkg:cargo/serde@1.0.193", + "type": "library", + "bom-ref": "pkg:cargo/serde@1.0.193" + }, + { + "name": "tokio", + "version": "1.35.0", + "purl": "pkg:cargo/tokio@1.35.0", + "type": "library", + "bom-ref": "pkg:cargo/tokio@1.35.0" + } + ], + "dependencies": [ + { + "ref": "pkg:cargo/cargo_virtual_workspace_with_license@0.0.0", + "dependsOn": [ + "pkg:cargo/serde@1.0.193", + "pkg:cargo/tokio@1.35.0" + ] + }, + { + "ref": "pkg:cargo/serde@1.0.193", + "dependsOn": [] + }, + { + "ref": "pkg:cargo/tokio@1.35.0", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/expected_sbom_stack_analysis.json new file mode 100644 index 00000000..cd248f0d --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/expected_sbom_stack_analysis.json @@ -0,0 +1,108 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "cargo_virtual_workspace_with_license", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace_with_license@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_license@0.0.0", + "licenses": [ + { + "license": { + "id": "ISC" + } + } + ] + } + }, + "components": [ + { + "name": "cargo_virtual_workspace_with_license", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace_with_license@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_license@0.0.0", + "licenses": [ + { + "license": { + "id": "ISC" + } + } + ] + }, + { + "name": "crate-a", + "version": "0.1.0", + "purl": "pkg:cargo/crate-a@0.1.0?repository_url=local", + "type": "library", + "bom-ref": "pkg:cargo/crate-a@0.1.0?repository_url=local" + }, + { + "name": "serde", + "version": "1.0.193", + "purl": "pkg:cargo/serde@1.0.193", + "type": "library", + "bom-ref": "pkg:cargo/serde@1.0.193" + }, + { + "name": "crate-b", + "version": "0.2.0", + "purl": "pkg:cargo/crate-b@0.2.0?repository_url=local", + "type": "library", + "bom-ref": "pkg:cargo/crate-b@0.2.0?repository_url=local" + }, + { + "name": "tokio", + "version": "1.35.0", + "purl": "pkg:cargo/tokio@1.35.0", + "type": "library", + "bom-ref": "pkg:cargo/tokio@1.35.0" + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "purl": "pkg:cargo/pin-project-lite@0.2.13", + "type": "library", + "bom-ref": "pkg:cargo/pin-project-lite@0.2.13" + } + ], + "dependencies": [ + { + "ref": "pkg:cargo/cargo_virtual_workspace_with_license@0.0.0", + "dependsOn": [ + "pkg:cargo/crate-a@0.1.0?repository_url=local", + "pkg:cargo/crate-b@0.2.0?repository_url=local" + ] + }, + { + "ref": "pkg:cargo/crate-a@0.1.0?repository_url=local", + "dependsOn": [ + "pkg:cargo/serde@1.0.193" + ] + }, + { + "ref": "pkg:cargo/serde@1.0.193", + "dependsOn": [] + }, + { + "ref": "pkg:cargo/crate-b@0.2.0?repository_url=local", + "dependsOn": [ + "pkg:cargo/tokio@1.35.0" + ] + }, + { + "ref": "pkg:cargo/tokio@1.35.0", + "dependsOn": [ + "pkg:cargo/pin-project-lite@0.2.13" + ] + }, + { + "ref": "pkg:cargo/pin-project-lite@0.2.13", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/Cargo.lock b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/Cargo.lock new file mode 100644 index 00000000..fdffa2a0 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/Cargo.lock @@ -0,0 +1 @@ +# placeholder diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/Cargo.toml new file mode 100644 index 00000000..144ece21 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/Cargo.toml @@ -0,0 +1,10 @@ +[workspace] +members = [ + "crate-a", + "crate-b", +] +resolver = "2" + +[workspace.dependencies] +serde = "1.0.193" +tokio = { version = "1.35.0", features = ["full"] } diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/cargo_metadata.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/cargo_metadata.json new file mode 100644 index 00000000..5adcdd56 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/cargo_metadata.json @@ -0,0 +1,90 @@ +{ + "packages": [ + { + "name": "crate-a", + "version": "0.1.0", + "id": "path+file:///fake/path/cargo_virtual_workspace_with_workspace_deps/crate-a#0.1.0", + "source": null, + "dependencies": [ + { "name": "serde", "kind": null } + ] + }, + { + "name": "crate-b", + "version": "0.2.0", + "id": "path+file:///fake/path/cargo_virtual_workspace_with_workspace_deps/crate-b#0.2.0", + "source": null, + "dependencies": [ + { "name": "tokio", "kind": null } + ] + }, + { + "name": "serde", + "version": "1.0.193", + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tokio", + "version": "1.35.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [ + { "name": "pin-project-lite", "kind": null } + ] + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + } + ], + "workspace_members": [ + "path+file:///fake/path/cargo_virtual_workspace_with_workspace_deps/crate-a#0.1.0", + "path+file:///fake/path/cargo_virtual_workspace_with_workspace_deps/crate-b#0.2.0" + ], + "workspace_root": "/fake/path/cargo_virtual_workspace_with_workspace_deps", + "resolve": { + "root": null, + "nodes": [ + { + "id": "path+file:///fake/path/cargo_virtual_workspace_with_workspace_deps/crate-a#0.1.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "path+file:///fake/path/cargo_virtual_workspace_with_workspace_deps/crate-b#0.2.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "deps": [] + } + ] + } +} diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/expected_sbom_component_analysis.json new file mode 100644 index 00000000..86799afa --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/expected_sbom_component_analysis.json @@ -0,0 +1,55 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "cargo_virtual_workspace_with_workspace_deps", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace_with_workspace_deps@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_workspace_deps@0.0.0" + } + }, + "components": [ + { + "name": "cargo_virtual_workspace_with_workspace_deps", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace_with_workspace_deps@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_workspace_deps@0.0.0" + }, + { + "name": "serde", + "version": "1.0.193", + "purl": "pkg:cargo/serde@1.0.193", + "type": "library", + "bom-ref": "pkg:cargo/serde@1.0.193" + }, + { + "name": "tokio", + "version": "1.35.0", + "purl": "pkg:cargo/tokio@1.35.0", + "type": "library", + "bom-ref": "pkg:cargo/tokio@1.35.0" + } + ], + "dependencies": [ + { + "ref": "pkg:cargo/cargo_virtual_workspace_with_workspace_deps@0.0.0", + "dependsOn": [ + "pkg:cargo/serde@1.0.193", + "pkg:cargo/tokio@1.35.0" + ] + }, + { + "ref": "pkg:cargo/serde@1.0.193", + "dependsOn": [] + }, + { + "ref": "pkg:cargo/tokio@1.35.0", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/expected_sbom_stack_analysis.json new file mode 100644 index 00000000..21bb6607 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/expected_sbom_stack_analysis.json @@ -0,0 +1,94 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "cargo_virtual_workspace_with_workspace_deps", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace_with_workspace_deps@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_workspace_deps@0.0.0" + } + }, + "components": [ + { + "name": "cargo_virtual_workspace_with_workspace_deps", + "version": "0.0.0", + "purl": "pkg:cargo/cargo_virtual_workspace_with_workspace_deps@0.0.0", + "type": "application", + "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_workspace_deps@0.0.0" + }, + { + "name": "crate-a", + "version": "0.1.0", + "purl": "pkg:cargo/crate-a@0.1.0?repository_url=local", + "type": "library", + "bom-ref": "pkg:cargo/crate-a@0.1.0?repository_url=local" + }, + { + "name": "serde", + "version": "1.0.193", + "purl": "pkg:cargo/serde@1.0.193", + "type": "library", + "bom-ref": "pkg:cargo/serde@1.0.193" + }, + { + "name": "crate-b", + "version": "0.2.0", + "purl": "pkg:cargo/crate-b@0.2.0?repository_url=local", + "type": "library", + "bom-ref": "pkg:cargo/crate-b@0.2.0?repository_url=local" + }, + { + "name": "tokio", + "version": "1.35.0", + "purl": "pkg:cargo/tokio@1.35.0", + "type": "library", + "bom-ref": "pkg:cargo/tokio@1.35.0" + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "purl": "pkg:cargo/pin-project-lite@0.2.13", + "type": "library", + "bom-ref": "pkg:cargo/pin-project-lite@0.2.13" + } + ], + "dependencies": [ + { + "ref": "pkg:cargo/cargo_virtual_workspace_with_workspace_deps@0.0.0", + "dependsOn": [ + "pkg:cargo/crate-a@0.1.0?repository_url=local", + "pkg:cargo/crate-b@0.2.0?repository_url=local" + ] + }, + { + "ref": "pkg:cargo/crate-a@0.1.0?repository_url=local", + "dependsOn": [ + "pkg:cargo/serde@1.0.193" + ] + }, + { + "ref": "pkg:cargo/serde@1.0.193", + "dependsOn": [] + }, + { + "ref": "pkg:cargo/crate-b@0.2.0?repository_url=local", + "dependsOn": [ + "pkg:cargo/tokio@1.35.0" + ] + }, + { + "ref": "pkg:cargo/tokio@1.35.0", + "dependsOn": [ + "pkg:cargo/pin-project-lite@0.2.13" + ] + }, + { + "ref": "pkg:cargo/pin-project-lite@0.2.13", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root/Cargo.lock b/test/providers/tst_manifests/cargo/cargo_workspace_with_root/Cargo.lock new file mode 100644 index 00000000..1fcedc5a --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root/Cargo.lock @@ -0,0 +1,2 @@ +# This file is a placeholder for lock file validation. +# The actual dependency resolution is done by `cargo metadata`. diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_workspace_with_root/Cargo.toml new file mode 100644 index 00000000..b740cbb4 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "my-workspace-root" +version = "0.1.0" +edition = "2021" + +[workspace] +members = [ + "sub-crate", +] +resolver = "2" + +[dependencies] +serde = "1.0.193" + +[dev-dependencies] +tempfile = "3.8.0" diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root/cargo_metadata.json b/test/providers/tst_manifests/cargo/cargo_workspace_with_root/cargo_metadata.json new file mode 100644 index 00000000..ccd5d651 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root/cargo_metadata.json @@ -0,0 +1,106 @@ +{ + "packages": [ + { + "name": "my-workspace-root", + "version": "0.1.0", + "id": "path+file:///fake/path/cargo_workspace_with_root#my-workspace-root@0.1.0", + "source": null, + "dependencies": [ + { "name": "serde", "kind": null }, + { "name": "tempfile", "kind": "dev" } + ] + }, + { + "name": "sub-crate", + "version": "0.1.0", + "id": "path+file:///fake/path/cargo_workspace_with_root/sub-crate#0.1.0", + "source": null, + "dependencies": [ + { "name": "tokio", "kind": null } + ] + }, + { + "name": "serde", + "version": "1.0.193", + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tokio", + "version": "1.35.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [ + { "name": "pin-project-lite", "kind": null } + ] + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tempfile", + "version": "3.8.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + } + ], + "workspace_members": [ + "path+file:///fake/path/cargo_workspace_with_root#my-workspace-root@0.1.0", + "path+file:///fake/path/cargo_workspace_with_root/sub-crate#0.1.0" + ], + "workspace_root": "/fake/path/cargo_workspace_with_root", + "resolve": { + "root": "path+file:///fake/path/cargo_workspace_with_root#my-workspace-root@0.1.0", + "nodes": [ + { + "id": "path+file:///fake/path/cargo_workspace_with_root#my-workspace-root@0.1.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "dep_kinds": [{ "kind": null, "target": null }] + }, + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "dep_kinds": [{ "kind": "dev", "target": null }] + } + ] + }, + { + "id": "path+file:///fake/path/cargo_workspace_with_root/sub-crate#0.1.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "deps": [] + } + ] + } +} diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_workspace_with_root/expected_sbom_component_analysis.json new file mode 100644 index 00000000..b6fd4381 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root/expected_sbom_component_analysis.json @@ -0,0 +1,43 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "my-workspace-root", + "version": "0.1.0", + "purl": "pkg:cargo/my-workspace-root@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" + } + }, + "components": [ + { + "name": "my-workspace-root", + "version": "0.1.0", + "purl": "pkg:cargo/my-workspace-root@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" + }, + { + "name": "serde", + "version": "1.0.193", + "purl": "pkg:cargo/serde@1.0.193", + "type": "library", + "bom-ref": "pkg:cargo/serde@1.0.193" + } + ], + "dependencies": [ + { + "ref": "pkg:cargo/my-workspace-root@0.1.0", + "dependsOn": [ + "pkg:cargo/serde@1.0.193" + ] + }, + { + "ref": "pkg:cargo/serde@1.0.193", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_workspace_with_root/expected_sbom_stack_analysis.json new file mode 100644 index 00000000..b6fd4381 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root/expected_sbom_stack_analysis.json @@ -0,0 +1,43 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "my-workspace-root", + "version": "0.1.0", + "purl": "pkg:cargo/my-workspace-root@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" + } + }, + "components": [ + { + "name": "my-workspace-root", + "version": "0.1.0", + "purl": "pkg:cargo/my-workspace-root@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" + }, + { + "name": "serde", + "version": "1.0.193", + "purl": "pkg:cargo/serde@1.0.193", + "type": "library", + "bom-ref": "pkg:cargo/serde@1.0.193" + } + ], + "dependencies": [ + { + "ref": "pkg:cargo/my-workspace-root@0.1.0", + "dependsOn": [ + "pkg:cargo/serde@1.0.193" + ] + }, + { + "ref": "pkg:cargo/serde@1.0.193", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root/sub-crate/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_workspace_with_root/sub-crate/Cargo.toml new file mode 100644 index 00000000..2ffba0bf --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root/sub-crate/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "sub-crate" +version = "0.1.0" +edition = "2021" + +[dependencies] +tokio = { version = "1.35.0", features = ["full"] } diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/Cargo.lock b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/Cargo.lock new file mode 100644 index 00000000..1fcedc5a --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/Cargo.lock @@ -0,0 +1,2 @@ +# This file is a placeholder for lock file validation. +# The actual dependency resolution is done by `cargo metadata`. diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/Cargo.toml new file mode 100644 index 00000000..d206dacc --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "my-workspace-root" +version = "0.1.0" +edition = "2021" + +[workspace] +members = [ + "sub-crate", +] +resolver = "2" + +[dependencies] +serde = "1.0.193" # exhortignore + +[dev-dependencies] +tempfile = "3.8.0" diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/cargo_metadata.json b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/cargo_metadata.json new file mode 100644 index 00000000..ccd5d651 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/cargo_metadata.json @@ -0,0 +1,106 @@ +{ + "packages": [ + { + "name": "my-workspace-root", + "version": "0.1.0", + "id": "path+file:///fake/path/cargo_workspace_with_root#my-workspace-root@0.1.0", + "source": null, + "dependencies": [ + { "name": "serde", "kind": null }, + { "name": "tempfile", "kind": "dev" } + ] + }, + { + "name": "sub-crate", + "version": "0.1.0", + "id": "path+file:///fake/path/cargo_workspace_with_root/sub-crate#0.1.0", + "source": null, + "dependencies": [ + { "name": "tokio", "kind": null } + ] + }, + { + "name": "serde", + "version": "1.0.193", + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tokio", + "version": "1.35.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [ + { "name": "pin-project-lite", "kind": null } + ] + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tempfile", + "version": "3.8.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + } + ], + "workspace_members": [ + "path+file:///fake/path/cargo_workspace_with_root#my-workspace-root@0.1.0", + "path+file:///fake/path/cargo_workspace_with_root/sub-crate#0.1.0" + ], + "workspace_root": "/fake/path/cargo_workspace_with_root", + "resolve": { + "root": "path+file:///fake/path/cargo_workspace_with_root#my-workspace-root@0.1.0", + "nodes": [ + { + "id": "path+file:///fake/path/cargo_workspace_with_root#my-workspace-root@0.1.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "dep_kinds": [{ "kind": null, "target": null }] + }, + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "dep_kinds": [{ "kind": "dev", "target": null }] + } + ] + }, + { + "id": "path+file:///fake/path/cargo_workspace_with_root/sub-crate#0.1.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "deps": [] + } + ] + } +} diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/expected_sbom_component_analysis.json new file mode 100644 index 00000000..d28a4508 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/expected_sbom_component_analysis.json @@ -0,0 +1,25 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "my-workspace-root", + "version": "0.1.0", + "purl": "pkg:cargo/my-workspace-root@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" + } + }, + "components": [ + { + "name": "my-workspace-root", + "version": "0.1.0", + "purl": "pkg:cargo/my-workspace-root@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" + } + ], + "dependencies": [] +} diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/expected_sbom_stack_analysis.json new file mode 100644 index 00000000..d28a4508 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/expected_sbom_stack_analysis.json @@ -0,0 +1,25 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "my-workspace-root", + "version": "0.1.0", + "purl": "pkg:cargo/my-workspace-root@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" + } + }, + "components": [ + { + "name": "my-workspace-root", + "version": "0.1.0", + "purl": "pkg:cargo/my-workspace-root@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" + } + ], + "dependencies": [] +} diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/sub-crate/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/sub-crate/Cargo.toml new file mode 100644 index 00000000..2ffba0bf --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/sub-crate/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "sub-crate" +version = "0.1.0" +edition = "2021" + +[dependencies] +tokio = { version = "1.35.0", features = ["full"] } diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/Cargo.lock b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/Cargo.lock new file mode 100644 index 00000000..1fcedc5a --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/Cargo.lock @@ -0,0 +1,2 @@ +# This file is a placeholder for lock file validation. +# The actual dependency resolution is done by `cargo metadata`. diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/Cargo.toml new file mode 100644 index 00000000..b744b480 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "my-workspace-root" +version = "0.1.0" +edition = "2021" + +[workspace] +members = [ + "sub-crate", +] +resolver = "2" + +[dependencies] +serde = "1.0.193" # trustify-da-ignore + +[dev-dependencies] +tempfile = "3.8.0" diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/cargo_metadata.json b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/cargo_metadata.json new file mode 100644 index 00000000..ccd5d651 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/cargo_metadata.json @@ -0,0 +1,106 @@ +{ + "packages": [ + { + "name": "my-workspace-root", + "version": "0.1.0", + "id": "path+file:///fake/path/cargo_workspace_with_root#my-workspace-root@0.1.0", + "source": null, + "dependencies": [ + { "name": "serde", "kind": null }, + { "name": "tempfile", "kind": "dev" } + ] + }, + { + "name": "sub-crate", + "version": "0.1.0", + "id": "path+file:///fake/path/cargo_workspace_with_root/sub-crate#0.1.0", + "source": null, + "dependencies": [ + { "name": "tokio", "kind": null } + ] + }, + { + "name": "serde", + "version": "1.0.193", + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tokio", + "version": "1.35.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [ + { "name": "pin-project-lite", "kind": null } + ] + }, + { + "name": "pin-project-lite", + "version": "0.2.13", + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + }, + { + "name": "tempfile", + "version": "3.8.0", + "id": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "source": "registry+https://github.com/rust-lang/crates.io-index", + "dependencies": [] + } + ], + "workspace_members": [ + "path+file:///fake/path/cargo_workspace_with_root#my-workspace-root@0.1.0", + "path+file:///fake/path/cargo_workspace_with_root/sub-crate#0.1.0" + ], + "workspace_root": "/fake/path/cargo_workspace_with_root", + "resolve": { + "root": "path+file:///fake/path/cargo_workspace_with_root#my-workspace-root@0.1.0", + "nodes": [ + { + "id": "path+file:///fake/path/cargo_workspace_with_root#my-workspace-root@0.1.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "dep_kinds": [{ "kind": null, "target": null }] + }, + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "dep_kinds": [{ "kind": "dev", "target": null }] + } + ] + }, + { + "id": "path+file:///fake/path/cargo_workspace_with_root/sub-crate#0.1.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.193", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tokio@1.35.0", + "deps": [ + { + "pkg": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "dep_kinds": [{ "kind": null, "target": null }] + } + ] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#pin-project-lite@0.2.13", + "deps": [] + }, + { + "id": "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.8.0", + "deps": [] + } + ] + } +} diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/expected_sbom_component_analysis.json new file mode 100644 index 00000000..d28a4508 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/expected_sbom_component_analysis.json @@ -0,0 +1,25 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "my-workspace-root", + "version": "0.1.0", + "purl": "pkg:cargo/my-workspace-root@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" + } + }, + "components": [ + { + "name": "my-workspace-root", + "version": "0.1.0", + "purl": "pkg:cargo/my-workspace-root@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" + } + ], + "dependencies": [] +} diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/expected_sbom_stack_analysis.json new file mode 100644 index 00000000..d28a4508 --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/expected_sbom_stack_analysis.json @@ -0,0 +1,25 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "my-workspace-root", + "version": "0.1.0", + "purl": "pkg:cargo/my-workspace-root@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" + } + }, + "components": [ + { + "name": "my-workspace-root", + "version": "0.1.0", + "purl": "pkg:cargo/my-workspace-root@0.1.0", + "type": "application", + "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" + } + ], + "dependencies": [] +} diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/sub-crate/Cargo.toml b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/sub-crate/Cargo.toml new file mode 100644 index 00000000..2ffba0bf --- /dev/null +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/sub-crate/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "sub-crate" +version = "0.1.0" +edition = "2021" + +[dependencies] +tokio = { version = "1.35.0", features = ["full"] } From 59f00f77c3210c80faf0d5b65b47ae26b2b9b4e4 Mon Sep 17 00:00:00 2001 From: Adva Oren Date: Mon, 23 Mar 2026 17:45:19 +0200 Subject: [PATCH 092/102] fix: analysis of an empty manifest returns non-zero scanned deps (#422) fix: analysis of an empty go manifest returns non-zero scanned depenedencies --- src/cyclone_dx_sbom.js | 3 +- .../expected_sbom_component_analysis.json | 7 - .../expected_sbom_stack_analysis.json | 7 - .../expected_sbom_component_analysis.json | 7 - .../expected_sbom_stack_analysis.json | 7 - .../expected_sbom_component_analysis.json | 7 - .../expected_sbom_stack_analysis.json | 7 - .../expected_sbom_component_analysis.json | 14 - .../expected_sbom_stack_analysis.json | 14 - .../expected_sbom_component_analysis.json | 10 +- .../expected_sbom_stack_analysis.json | 7 - .../expected_sbom_component_analysis.json | 10 +- .../expected_sbom_stack_analysis.json | 7 - .../expected_sbom_component_analysis.json | 10 +- .../expected_sbom_stack_analysis.json | 7 - .../expected_sbom_component_analysis.json | 10 +- .../expected_sbom_stack_analysis.json | 7 - .../expected_sbom_component_analysis.json | 14 - .../expected_sbom_stack_analysis.json | 14 - .../expected_sbom_component_analysis.json | 7 - .../expected_sbom_stack_analysis.json | 7 - .../expected_sbom_component_analysis.json | 7 - .../expected_sbom_stack_analysis.json | 7 - .../expected_sbom_component_analysis.json | 10 +- .../expected_sbom_stack_analysis.json | 10 +- .../expected_sbom_component_analysis.json | 10 +- .../expected_sbom_stack_analysis.json | 10 +- .../expected_sbom_component_analysis.json | 11 +- .../expected_sbom_stack_analysis.json | 13 +- .../expected_sbom_component_analysis.json | 88 +- .../expected_sbom_stack_analysis.json | 10 +- .../expected_sbom_stack_analysis.json | 8 - .../expected_sbom_component_analysis.json | 8 - .../expected_sbom_stack_analysis.json | 10 +- .../expected_sbom_component_analysis.json | 8 - .../expected_sbom_stack_analysis.json | 10 +- .../expected_sbom_component_analysis.json | 11 +- .../expected_sbom_stack_analysis.json | 10 +- .../expected_sbom_component_analysis.json | 8 - .../expected_sbom_stack_analysis.json | 10 +- .../expected_component_sbom.json | 218 +- .../expected_stack_sbom.json | 8 - .../expected_component_sbom.json | 218 +- .../expected_stack_sbom.json | 8 - .../expected_component_sbom.json | 8 - .../expected_stack_sbom.json | 8 - .../expected_component_sbom.json | 8 - .../expected_stack_sbom.json | 8 - .../component_expected_sbom.json | 7 - .../component_expected_sbom.json | 19 +- .../component_analysis_expected_sbom.json | 11 +- .../stack_analysis_expected_sbom.json | 11 +- .../component_analysis_expected_sbom.json | 11 +- .../stack_analysis_expected_sbom.json | 11 +- .../component_analysis_expected_sbom.json | 11 +- .../stack_analysis_expected_sbom.json | 11 +- .../component_analysis_expected_sbom.json | 11 +- .../stack_analysis_expected_sbom.json | 11 +- .../component_analysis_expected_sbom.json | 8 - .../stack_analysis_expected_sbom.json | 8 - .../component_analysis_expected_sbom.json | 15 - .../stack_analysis_expected_sbom.json | 17 +- .../component_analysis_expected_sbom.json | 8 - .../stack_analysis_expected_sbom.json | 8 - .../component_analysis_expected_sbom.json | 8 - .../stack_analysis_expected_sbom.json | 8 - .../component_analysis_expected_sbom.json | 8 - .../component_analysis_expected_sbom.json | 8 - .../component_analysis_expected_sbom.json | 8 - .../stack_analysis_expected_sbom.json | 10 +- .../component_analysis_expected_sbom.json | 8 - .../stack_analysis_expected_sbom.json | 8 - .../component_analysis_expected_sbom.json | 8 - .../stack_analysis_expected_sbom.json | 8 - .../stack_expected_sbom.json | 9 +- .../package-lock.json | 814 ++- .../stack_expected_sbom.json | 2071 ++++--- .../expected_component_sbom.json | 7 - .../expected_stack_sbom.json | 9 +- .../expected_component_sbom.json | 7 - .../expected_stack_sbom.json | 7 - .../expected_stack_sbom.json | 7 - .../expected_component_sbom.json | 384 +- .../expected_stack_sbom.json | 7 - .../stack_expected_sbom.json | 5039 ++++++++--------- .../stack_expected_sbom.json | 2071 ++++--- .../stack_expected_sbom.json | 9 +- .../stack_expected_sbom.json | 3441 ++++++----- .../stack_expected_sbom.json | 2229 ++++---- .../stack_expected_sbom.json | 2243 ++++---- 90 files changed, 9791 insertions(+), 9749 deletions(-) diff --git a/src/cyclone_dx_sbom.js b/src/cyclone_dx_sbom.js index b90b74be..bfc4fbdf 100644 --- a/src/cyclone_dx_sbom.js +++ b/src/cyclone_dx_sbom.js @@ -149,6 +149,7 @@ export default class CycloneDxSbom { getAsJsonString(opts) { let manifestType = opts["manifest-type"] this.setSourceManifest(opts["source-manifest"]) + const rootPurl = this.rootComponent?.purl; this.sbomObject = { "bomFormat": "CycloneDX", "specVersion": "1.4", @@ -158,7 +159,7 @@ export default class CycloneDxSbom { "component": this.rootComponent, "properties": new Array() }, - "components": this.components, + "components": this.components.filter(c => c.purl !== rootPurl), "dependencies": this.dependencies } if (this.rootComponent === undefined) diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/expected_sbom_component_analysis.json index 4fc7de2c..862aa946 100644 --- a/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/expected_sbom_component_analysis.json @@ -13,13 +13,6 @@ } }, "components": [ - { - "name": "my-test-crate", - "version": "0.1.0", - "purl": "pkg:cargo/my-test-crate@0.1.0", - "type": "application", - "bom-ref": "pkg:cargo/my-test-crate@0.1.0" - }, { "name": "serde", "version": "1.0.193", diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/expected_sbom_stack_analysis.json index 3773710d..383ddd95 100644 --- a/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_no_ignore/expected_sbom_stack_analysis.json @@ -13,13 +13,6 @@ } }, "components": [ - { - "name": "my-test-crate", - "version": "0.1.0", - "purl": "pkg:cargo/my-test-crate@0.1.0", - "type": "application", - "bom-ref": "pkg:cargo/my-test-crate@0.1.0" - }, { "name": "serde", "version": "1.0.193", diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/expected_sbom_component_analysis.json index 1511cb4d..70d4ed39 100644 --- a/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/expected_sbom_component_analysis.json @@ -13,13 +13,6 @@ } }, "components": [ - { - "name": "my-test-crate", - "version": "0.1.0", - "purl": "pkg:cargo/my-test-crate@0.1.0", - "type": "application", - "bom-ref": "pkg:cargo/my-test-crate@0.1.0" - }, { "name": "tokio", "version": "1.35.0", diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/expected_sbom_stack_analysis.json index 289b00a7..5f1149aa 100644 --- a/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_exhortignore/expected_sbom_stack_analysis.json @@ -13,13 +13,6 @@ } }, "components": [ - { - "name": "my-test-crate", - "version": "0.1.0", - "purl": "pkg:cargo/my-test-crate@0.1.0", - "type": "application", - "bom-ref": "pkg:cargo/my-test-crate@0.1.0" - }, { "name": "tokio", "version": "1.35.0", diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/expected_sbom_component_analysis.json index 1511cb4d..70d4ed39 100644 --- a/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/expected_sbom_component_analysis.json @@ -13,13 +13,6 @@ } }, "components": [ - { - "name": "my-test-crate", - "version": "0.1.0", - "purl": "pkg:cargo/my-test-crate@0.1.0", - "type": "application", - "bom-ref": "pkg:cargo/my-test-crate@0.1.0" - }, { "name": "tokio", "version": "1.35.0", diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/expected_sbom_stack_analysis.json index 289b00a7..5f1149aa 100644 --- a/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_ignore/expected_sbom_stack_analysis.json @@ -13,13 +13,6 @@ } }, "components": [ - { - "name": "my-test-crate", - "version": "0.1.0", - "purl": "pkg:cargo/my-test-crate@0.1.0", - "type": "application", - "bom-ref": "pkg:cargo/my-test-crate@0.1.0" - }, { "name": "tokio", "version": "1.35.0", diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/expected_sbom_component_analysis.json index c4453ccc..75d4b7a5 100644 --- a/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/expected_sbom_component_analysis.json @@ -20,20 +20,6 @@ } }, "components": [ - { - "name": "my-test-crate", - "version": "0.1.0", - "purl": "pkg:cargo/my-test-crate@0.1.0", - "type": "application", - "bom-ref": "pkg:cargo/my-test-crate@0.1.0", - "licenses": [ - { - "license": { - "id": "ISC" - } - } - ] - }, { "name": "serde", "version": "1.0.193", diff --git a/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/expected_sbom_stack_analysis.json index 13faea24..f6e540f1 100644 --- a/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_single_crate_with_license/expected_sbom_stack_analysis.json @@ -20,20 +20,6 @@ } }, "components": [ - { - "name": "my-test-crate", - "version": "0.1.0", - "purl": "pkg:cargo/my-test-crate@0.1.0", - "type": "application", - "bom-ref": "pkg:cargo/my-test-crate@0.1.0", - "licenses": [ - { - "license": { - "id": "ISC" - } - } - ] - }, { "name": "serde", "version": "1.0.193", diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace/expected_sbom_component_analysis.json index 78d8b1a6..f4505a7c 100644 --- a/test/providers/tst_manifests/cargo/cargo_virtual_workspace/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace/expected_sbom_component_analysis.json @@ -12,14 +12,6 @@ "bom-ref": "pkg:cargo/cargo_virtual_workspace@0.0.0" } }, - "components": [ - { - "name": "cargo_virtual_workspace", - "version": "0.0.0", - "purl": "pkg:cargo/cargo_virtual_workspace@0.0.0", - "type": "application", - "bom-ref": "pkg:cargo/cargo_virtual_workspace@0.0.0" - } - ], + "components": [], "dependencies": [] } diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace/expected_sbom_stack_analysis.json index 06639d2f..e2d61419 100644 --- a/test/providers/tst_manifests/cargo/cargo_virtual_workspace/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace/expected_sbom_stack_analysis.json @@ -13,13 +13,6 @@ } }, "components": [ - { - "name": "cargo_virtual_workspace", - "version": "0.0.0", - "purl": "pkg:cargo/cargo_virtual_workspace@0.0.0", - "type": "application", - "bom-ref": "pkg:cargo/cargo_virtual_workspace@0.0.0" - }, { "name": "crate-a", "version": "0.1.0", diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/expected_sbom_component_analysis.json index 8fa1c7a5..1ba48f65 100644 --- a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/expected_sbom_component_analysis.json @@ -12,14 +12,6 @@ "bom-ref": "pkg:cargo/cargo_virtual_workspace_glob_members@0.0.0" } }, - "components": [ - { - "name": "cargo_virtual_workspace_glob_members", - "version": "0.0.0", - "purl": "pkg:cargo/cargo_virtual_workspace_glob_members@0.0.0", - "type": "application", - "bom-ref": "pkg:cargo/cargo_virtual_workspace_glob_members@0.0.0" - } - ], + "components": [], "dependencies": [] } diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/expected_sbom_stack_analysis.json index 3da42dad..8499ee9e 100644 --- a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_glob_members/expected_sbom_stack_analysis.json @@ -13,13 +13,6 @@ } }, "components": [ - { - "name": "cargo_virtual_workspace_glob_members", - "version": "0.0.0", - "purl": "pkg:cargo/cargo_virtual_workspace_glob_members@0.0.0", - "type": "application", - "bom-ref": "pkg:cargo/cargo_virtual_workspace_glob_members@0.0.0" - }, { "name": "crate-a", "version": "0.1.0", diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/expected_sbom_component_analysis.json index e61b9b94..393fd914 100644 --- a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/expected_sbom_component_analysis.json @@ -12,14 +12,6 @@ "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_exhortignore@0.0.0" } }, - "components": [ - { - "name": "cargo_virtual_workspace_with_exhortignore", - "version": "0.0.0", - "purl": "pkg:cargo/cargo_virtual_workspace_with_exhortignore@0.0.0", - "type": "application", - "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_exhortignore@0.0.0" - } - ], + "components": [], "dependencies": [] } diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/expected_sbom_stack_analysis.json index 4b88eb4f..ab6404bc 100644 --- a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_exhortignore/expected_sbom_stack_analysis.json @@ -13,13 +13,6 @@ } }, "components": [ - { - "name": "cargo_virtual_workspace_with_exhortignore", - "version": "0.0.0", - "purl": "pkg:cargo/cargo_virtual_workspace_with_exhortignore@0.0.0", - "type": "application", - "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_exhortignore@0.0.0" - }, { "name": "crate-a", "version": "0.1.0", diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/expected_sbom_component_analysis.json index 79032065..c4dc2404 100644 --- a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/expected_sbom_component_analysis.json @@ -12,14 +12,6 @@ "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_ignore@0.0.0" } }, - "components": [ - { - "name": "cargo_virtual_workspace_with_ignore", - "version": "0.0.0", - "purl": "pkg:cargo/cargo_virtual_workspace_with_ignore@0.0.0", - "type": "application", - "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_ignore@0.0.0" - } - ], + "components": [], "dependencies": [] } diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/expected_sbom_stack_analysis.json index 46b781e8..4d21014f 100644 --- a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_ignore/expected_sbom_stack_analysis.json @@ -13,13 +13,6 @@ } }, "components": [ - { - "name": "cargo_virtual_workspace_with_ignore", - "version": "0.0.0", - "purl": "pkg:cargo/cargo_virtual_workspace_with_ignore@0.0.0", - "type": "application", - "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_ignore@0.0.0" - }, { "name": "crate-a", "version": "0.1.0", diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/expected_sbom_component_analysis.json index b7d93e02..e62fb38c 100644 --- a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/expected_sbom_component_analysis.json @@ -20,20 +20,6 @@ } }, "components": [ - { - "name": "cargo_virtual_workspace_with_license", - "version": "0.0.0", - "purl": "pkg:cargo/cargo_virtual_workspace_with_license@0.0.0", - "type": "application", - "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_license@0.0.0", - "licenses": [ - { - "license": { - "id": "ISC" - } - } - ] - }, { "name": "serde", "version": "1.0.193", diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/expected_sbom_stack_analysis.json index cd248f0d..dbf7119e 100644 --- a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_license/expected_sbom_stack_analysis.json @@ -20,20 +20,6 @@ } }, "components": [ - { - "name": "cargo_virtual_workspace_with_license", - "version": "0.0.0", - "purl": "pkg:cargo/cargo_virtual_workspace_with_license@0.0.0", - "type": "application", - "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_license@0.0.0", - "licenses": [ - { - "license": { - "id": "ISC" - } - } - ] - }, { "name": "crate-a", "version": "0.1.0", diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/expected_sbom_component_analysis.json index 86799afa..931a51ab 100644 --- a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/expected_sbom_component_analysis.json @@ -13,13 +13,6 @@ } }, "components": [ - { - "name": "cargo_virtual_workspace_with_workspace_deps", - "version": "0.0.0", - "purl": "pkg:cargo/cargo_virtual_workspace_with_workspace_deps@0.0.0", - "type": "application", - "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_workspace_deps@0.0.0" - }, { "name": "serde", "version": "1.0.193", diff --git a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/expected_sbom_stack_analysis.json index 21bb6607..7bb82919 100644 --- a/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_virtual_workspace_with_workspace_deps/expected_sbom_stack_analysis.json @@ -13,13 +13,6 @@ } }, "components": [ - { - "name": "cargo_virtual_workspace_with_workspace_deps", - "version": "0.0.0", - "purl": "pkg:cargo/cargo_virtual_workspace_with_workspace_deps@0.0.0", - "type": "application", - "bom-ref": "pkg:cargo/cargo_virtual_workspace_with_workspace_deps@0.0.0" - }, { "name": "crate-a", "version": "0.1.0", diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_workspace_with_root/expected_sbom_component_analysis.json index b6fd4381..404f244c 100644 --- a/test/providers/tst_manifests/cargo/cargo_workspace_with_root/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root/expected_sbom_component_analysis.json @@ -13,13 +13,6 @@ } }, "components": [ - { - "name": "my-workspace-root", - "version": "0.1.0", - "purl": "pkg:cargo/my-workspace-root@0.1.0", - "type": "application", - "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" - }, { "name": "serde", "version": "1.0.193", diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_workspace_with_root/expected_sbom_stack_analysis.json index b6fd4381..404f244c 100644 --- a/test/providers/tst_manifests/cargo/cargo_workspace_with_root/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root/expected_sbom_stack_analysis.json @@ -13,13 +13,6 @@ } }, "components": [ - { - "name": "my-workspace-root", - "version": "0.1.0", - "purl": "pkg:cargo/my-workspace-root@0.1.0", - "type": "application", - "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" - }, { "name": "serde", "version": "1.0.193", diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/expected_sbom_component_analysis.json index d28a4508..bed146db 100644 --- a/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/expected_sbom_component_analysis.json @@ -12,14 +12,6 @@ "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" } }, - "components": [ - { - "name": "my-workspace-root", - "version": "0.1.0", - "purl": "pkg:cargo/my-workspace-root@0.1.0", - "type": "application", - "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" - } - ], + "components": [], "dependencies": [] } diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/expected_sbom_stack_analysis.json index d28a4508..bed146db 100644 --- a/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_exhortignore/expected_sbom_stack_analysis.json @@ -12,14 +12,6 @@ "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" } }, - "components": [ - { - "name": "my-workspace-root", - "version": "0.1.0", - "purl": "pkg:cargo/my-workspace-root@0.1.0", - "type": "application", - "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" - } - ], + "components": [], "dependencies": [] } diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/expected_sbom_component_analysis.json index d28a4508..bed146db 100644 --- a/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/expected_sbom_component_analysis.json @@ -12,14 +12,6 @@ "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" } }, - "components": [ - { - "name": "my-workspace-root", - "version": "0.1.0", - "purl": "pkg:cargo/my-workspace-root@0.1.0", - "type": "application", - "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" - } - ], + "components": [], "dependencies": [] } diff --git a/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/expected_sbom_stack_analysis.json index d28a4508..bed146db 100644 --- a/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/cargo/cargo_workspace_with_root_ignore/expected_sbom_stack_analysis.json @@ -12,14 +12,6 @@ "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" } }, - "components": [ - { - "name": "my-workspace-root", - "version": "0.1.0", - "purl": "pkg:cargo/my-workspace-root@0.1.0", - "type": "application", - "bom-ref": "pkg:cargo/my-workspace-root@0.1.0" - } - ], + "components": [], "dependencies": [] } diff --git a/test/providers/tst_manifests/golang/go_mod_empty/expected_sbom_component_analysis.json b/test/providers/tst_manifests/golang/go_mod_empty/expected_sbom_component_analysis.json index 17455b3c..ad6260a1 100644 --- a/test/providers/tst_manifests/golang/go_mod_empty/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_empty/expected_sbom_component_analysis.json @@ -13,15 +13,6 @@ "bom-ref": "pkg:golang/github.com/sample/empty-module@v0.0.0" } }, - "components": [ - { - "group": "github.com/sample", - "name": "empty-module", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/sample/empty-module@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/sample/empty-module@v0.0.0" - } - ], + "components": [], "dependencies": [] } diff --git a/test/providers/tst_manifests/golang/go_mod_empty/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/golang/go_mod_empty/expected_sbom_stack_analysis.json index 34d6f9e3..ad6260a1 100644 --- a/test/providers/tst_manifests/golang/go_mod_empty/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_empty/expected_sbom_stack_analysis.json @@ -13,15 +13,6 @@ "bom-ref": "pkg:golang/github.com/sample/empty-module@v0.0.0" } }, - "components": [ - { - "group": "github.com/sample", - "name": "empty-module", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/sample/empty-module@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/sample/empty-module@v0.0.0" - } - ], + "components": [], "dependencies": [] -} \ No newline at end of file +} diff --git a/test/providers/tst_manifests/golang/go_mod_light_no_ignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/golang/go_mod_light_no_ignore/expected_sbom_component_analysis.json index 24b72404..10138b88 100644 --- a/test/providers/tst_manifests/golang/go_mod_light_no_ignore/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_light_no_ignore/expected_sbom_component_analysis.json @@ -1,72 +1,64 @@ { - "bomFormat" : "CycloneDX", - "specVersion" : "1.4", - "version" : 1, - "metadata" : { - "timestamp" : "2023-08-07T00:00:00.000Z", - "component" : { - "group" : "golang.org/x", - "name" : "example", - "version" : "v0.0.0", - "purl" : "pkg:golang/golang.org/x/example@v0.0.0", - "type" : "application", - "bom-ref" : "pkg:golang/golang.org/x/example@v0.0.0" + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "group": "golang.org/x", + "name": "example", + "version": "v0.0.0", + "purl": "pkg:golang/golang.org/x/example@v0.0.0", + "type": "application", + "bom-ref": "pkg:golang/golang.org/x/example@v0.0.0" } }, - "components" : [ + "components": [ { - "group" : "golang.org/x", - "name" : "example", - "version" : "v0.0.0", - "purl" : "pkg:golang/golang.org/x/example@v0.0.0", - "type" : "application", - "bom-ref" : "pkg:golang/golang.org/x/example@v0.0.0" + "group": "github.com/spf13", + "name": "cobra", + "version": "v0.0.5", + "purl": "pkg:golang/github.com/spf13/cobra@v0.0.5", + "type": "library", + "bom-ref": "pkg:golang/github.com/spf13/cobra@v0.0.5" }, { - "group" : "github.com/spf13", - "name" : "cobra", - "version" : "v0.0.5", - "purl" : "pkg:golang/github.com/spf13/cobra@v0.0.5", - "type" : "library", - "bom-ref" : "pkg:golang/github.com/spf13/cobra@v0.0.5" + "group": "golang.org/x", + "name": "tools", + "version": "v0.0.0-20210112183307-1e6ecd4bf1b0", + "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0" }, { - "group" : "golang.org/x", - "name" : "tools", - "version" : "v0.0.0-20210112183307-1e6ecd4bf1b0", - "purl" : "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0", - "type" : "library", - "bom-ref" : "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0" - }, - { - "group" : "gopkg.in", - "name" : "yaml.v3", - "version" : "v3.0.1", - "purl" : "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "type" : "library", - "bom-ref" : "pkg:golang/gopkg.in/yaml.v3@v3.0.1" + "group": "gopkg.in", + "name": "yaml.v3", + "version": "v3.0.1", + "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1" } ], - "dependencies" : [ + "dependencies": [ { - "ref" : "pkg:golang/golang.org/x/example@v0.0.0", - "dependsOn" : [ + "ref": "pkg:golang/golang.org/x/example@v0.0.0", + "dependsOn": [ "pkg:golang/github.com/spf13/cobra@v0.0.5", "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0", "pkg:golang/gopkg.in/yaml.v3@v3.0.1" ] }, { - "ref" : "pkg:golang/github.com/spf13/cobra@v0.0.5", - "dependsOn" : [ ] + "ref": "pkg:golang/github.com/spf13/cobra@v0.0.5", + "dependsOn": [] }, { - "ref" : "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0", - "dependsOn" : [ ] + "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0", + "dependsOn": [] }, { - "ref" : "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "dependsOn" : [ ] + "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "dependsOn": [] } ] } diff --git a/test/providers/tst_manifests/golang/go_mod_light_no_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/golang/go_mod_light_no_ignore/expected_sbom_stack_analysis.json index d78d8976..22745b56 100644 --- a/test/providers/tst_manifests/golang/go_mod_light_no_ignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_light_no_ignore/expected_sbom_stack_analysis.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "golang.org/x", - "name": "example", - "version": "v0.0.0", - "purl": "pkg:golang/golang.org/x/example@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/golang.org/x/example@v0.0.0" - }, { "group": "github.com/spf13", "name": "cobra", @@ -537,4 +529,4 @@ "dependsOn": [] } ] -} \ No newline at end of file +} diff --git a/test/providers/tst_manifests/golang/go_mod_mvs_versions/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/golang/go_mod_mvs_versions/expected_sbom_stack_analysis.json index ad814e05..0b1fdd12 100644 --- a/test/providers/tst_manifests/golang/go_mod_mvs_versions/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_mvs_versions/expected_sbom_stack_analysis.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "github.com/RHEcosystemAppEng/SaaSi", - "name": "deployer", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0" - }, { "group": "github.com/davecgh", "name": "go-spew", diff --git a/test/providers/tst_manifests/golang/go_mod_no_ignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/golang/go_mod_no_ignore/expected_sbom_component_analysis.json index 0308fb10..610c5b54 100644 --- a/test/providers/tst_manifests/golang/go_mod_no_ignore/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_no_ignore/expected_sbom_component_analysis.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "github.com/RHEcosystemAppEng/SaaSi", - "name": "deployer", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0" - }, { "group": "github.com/davecgh", "name": "go-spew", diff --git a/test/providers/tst_manifests/golang/go_mod_no_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/golang/go_mod_no_ignore/expected_sbom_stack_analysis.json index 02b7c2df..0b1fdd12 100644 --- a/test/providers/tst_manifests/golang/go_mod_no_ignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_no_ignore/expected_sbom_stack_analysis.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "github.com/RHEcosystemAppEng/SaaSi", - "name": "deployer", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0" - }, { "group": "github.com/davecgh", "name": "go-spew", @@ -2268,4 +2260,4 @@ "dependsOn": [] } ] -} \ No newline at end of file +} diff --git a/test/providers/tst_manifests/golang/go_mod_test_ignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/golang/go_mod_test_ignore/expected_sbom_component_analysis.json index 7a2b0226..e3e18533 100644 --- a/test/providers/tst_manifests/golang/go_mod_test_ignore/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_test_ignore/expected_sbom_component_analysis.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "github.com/GoogleCloudPlatform/microservices-demo/src", - "name": "checkoutservice", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0" - }, { "group": "cloud.google.com", "name": "go", diff --git a/test/providers/tst_manifests/golang/go_mod_test_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/golang/go_mod_test_ignore/expected_sbom_stack_analysis.json index 84421b48..802bea64 100644 --- a/test/providers/tst_manifests/golang/go_mod_test_ignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_test_ignore/expected_sbom_stack_analysis.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "github.com/GoogleCloudPlatform/microservices-demo/src", - "name": "checkoutservice", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0" - }, { "group": "cloud.google.com", "name": "go", @@ -1668,4 +1660,4 @@ "dependsOn": [] } ] -} \ No newline at end of file +} diff --git a/test/providers/tst_manifests/golang/go_mod_with_all_ignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/golang/go_mod_with_all_ignore/expected_sbom_component_analysis.json index 4f4ff2e6..8277f49d 100644 --- a/test/providers/tst_manifests/golang/go_mod_with_all_ignore/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_with_all_ignore/expected_sbom_component_analysis.json @@ -13,15 +13,6 @@ "bom-ref": "pkg:golang/github.com/devfile-samples/devfile-sample-go-basic@v0.0.0" } }, - "components": [ - { - "group": "github.com/devfile-samples", - "name": "devfile-sample-go-basic", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/devfile-samples/devfile-sample-go-basic@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/devfile-samples/devfile-sample-go-basic@v0.0.0" - } - ], + "components": [], "dependencies": [] } diff --git a/test/providers/tst_manifests/golang/go_mod_with_all_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/golang/go_mod_with_all_ignore/expected_sbom_stack_analysis.json index 440e02f2..bcc12eba 100644 --- a/test/providers/tst_manifests/golang/go_mod_with_all_ignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_with_all_ignore/expected_sbom_stack_analysis.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "github.com/devfile-samples", - "name": "devfile-sample-go-basic", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/devfile-samples/devfile-sample-go-basic@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/devfile-samples/devfile-sample-go-basic@v0.0.0" - }, { "group": "github.com/gin-contrib", "name": "sse", @@ -2902,4 +2894,4 @@ "dependsOn": [] } ] -} \ No newline at end of file +} diff --git a/test/providers/tst_manifests/golang/go_mod_with_ignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/golang/go_mod_with_ignore/expected_sbom_component_analysis.json index 84587acc..86eb3bfb 100644 --- a/test/providers/tst_manifests/golang/go_mod_with_ignore/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_with_ignore/expected_sbom_component_analysis.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "github.com/RHEcosystemAppEng/SaaSi", - "name": "deployer", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0" - }, { "group": "github.com/davecgh", "name": "go-spew", diff --git a/test/providers/tst_manifests/golang/go_mod_with_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/golang/go_mod_with_ignore/expected_sbom_stack_analysis.json index 12c37085..e4a684a3 100644 --- a/test/providers/tst_manifests/golang/go_mod_with_ignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_with_ignore/expected_sbom_stack_analysis.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "github.com/RHEcosystemAppEng/SaaSi", - "name": "deployer", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0" - }, { "group": "github.com/davecgh", "name": "go-spew", @@ -2205,4 +2197,4 @@ "dependsOn": [] } ] -} \ No newline at end of file +} diff --git a/test/providers/tst_manifests/gradle/deps_with_ignore_full_specification/expected_component_sbom.json b/test/providers/tst_manifests/gradle/deps_with_ignore_full_specification/expected_component_sbom.json index cf3442fc..ef2291f2 100644 --- a/test/providers/tst_manifests/gradle/deps_with_ignore_full_specification/expected_component_sbom.json +++ b/test/providers/tst_manifests/gradle/deps_with_ignore_full_specification/expected_component_sbom.json @@ -1,131 +1,123 @@ { - "bomFormat" : "CycloneDX", - "specVersion" : "1.4", - "version" : 1, - "metadata" : { - "timestamp" : "2023-08-07T00:00:00.000Z", - "component" : { - "group" : "org.acme.dbaas", - "name" : "postgresql-orm-quarkus", - "version" : "1.0.0-SNAPSHOT", - "purl" : "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT", - "type" : "application", - "bom-ref" : "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT" + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "group": "org.acme.dbaas", + "name": "postgresql-orm-quarkus", + "version": "1.0.0-SNAPSHOT", + "purl": "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT", + "type": "application", + "bom-ref": "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT" } }, - "components" : [ + "components": [ { - "group" : "org.acme.dbaas", - "name" : "postgresql-orm-quarkus", - "version" : "1.0.0-SNAPSHOT", - "purl" : "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT", - "type" : "application", - "bom-ref" : "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT" - }, - { - "group" : "io.quarkus", - "name" : "quarkus-hibernate-orm", - "version" : "2.13.5.Final", - "purl" : "pkg:maven/io.quarkus/quarkus-hibernate-orm@2.13.5.Final", - "type" : "library", + "group": "io.quarkus", + "name": "quarkus-hibernate-orm", + "version": "2.13.5.Final", + "purl": "pkg:maven/io.quarkus/quarkus-hibernate-orm@2.13.5.Final", + "type": "library", "scope": "required", - "bom-ref" : "pkg:maven/io.quarkus/quarkus-hibernate-orm@2.13.5.Final" + "bom-ref": "pkg:maven/io.quarkus/quarkus-hibernate-orm@2.13.5.Final" }, { - "group" : "io.quarkus", - "name" : "quarkus-agroal", - "version" : "2.13.5.Final", - "purl" : "pkg:maven/io.quarkus/quarkus-agroal@2.13.5.Final", - "type" : "library", + "group": "io.quarkus", + "name": "quarkus-agroal", + "version": "2.13.5.Final", + "purl": "pkg:maven/io.quarkus/quarkus-agroal@2.13.5.Final", + "type": "library", "scope": "required", - "bom-ref" : "pkg:maven/io.quarkus/quarkus-agroal@2.13.5.Final" + "bom-ref": "pkg:maven/io.quarkus/quarkus-agroal@2.13.5.Final" }, { - "group" : "io.quarkus", - "name" : "quarkus-resteasy", - "version" : "2.13.7.Final", - "purl" : "pkg:maven/io.quarkus/quarkus-resteasy@2.13.7.Final", - "type" : "library", + "group": "io.quarkus", + "name": "quarkus-resteasy", + "version": "2.13.7.Final", + "purl": "pkg:maven/io.quarkus/quarkus-resteasy@2.13.7.Final", + "type": "library", "scope": "required", - "bom-ref" : "pkg:maven/io.quarkus/quarkus-resteasy@2.13.7.Final" + "bom-ref": "pkg:maven/io.quarkus/quarkus-resteasy@2.13.7.Final" }, { - "group" : "io.quarkus", - "name" : "quarkus-resteasy-jackson", - "version" : "2.13.5.Final", - "purl" : "pkg:maven/io.quarkus/quarkus-resteasy-jackson@2.13.5.Final", - "type" : "library", + "group": "io.quarkus", + "name": "quarkus-resteasy-jackson", + "version": "2.13.5.Final", + "purl": "pkg:maven/io.quarkus/quarkus-resteasy-jackson@2.13.5.Final", + "type": "library", "scope": "required", - "bom-ref" : "pkg:maven/io.quarkus/quarkus-resteasy-jackson@2.13.5.Final" + "bom-ref": "pkg:maven/io.quarkus/quarkus-resteasy-jackson@2.13.5.Final" }, { - "group" : "io.quarkus", - "name" : "quarkus-jdbc-postgresql", - "version" : "2.13.5.Final", - "purl" : "pkg:maven/io.quarkus/quarkus-jdbc-postgresql@2.13.5.Final", - "type" : "library", + "group": "io.quarkus", + "name": "quarkus-jdbc-postgresql", + "version": "2.13.5.Final", + "purl": "pkg:maven/io.quarkus/quarkus-jdbc-postgresql@2.13.5.Final", + "type": "library", "scope": "required", - "bom-ref" : "pkg:maven/io.quarkus/quarkus-jdbc-postgresql@2.13.5.Final" + "bom-ref": "pkg:maven/io.quarkus/quarkus-jdbc-postgresql@2.13.5.Final" }, { - "group" : "io.quarkus", - "name" : "quarkus-vertx-http", - "version" : "2.13.7.Final", - "purl" : "pkg:maven/io.quarkus/quarkus-vertx-http@2.13.7.Final", - "type" : "library", + "group": "io.quarkus", + "name": "quarkus-vertx-http", + "version": "2.13.7.Final", + "purl": "pkg:maven/io.quarkus/quarkus-vertx-http@2.13.7.Final", + "type": "library", "scope": "required", - "bom-ref" : "pkg:maven/io.quarkus/quarkus-vertx-http@2.13.7.Final" + "bom-ref": "pkg:maven/io.quarkus/quarkus-vertx-http@2.13.7.Final" }, { - "group" : "io.quarkus", - "name" : "quarkus-kubernetes-service-binding", - "version" : "2.13.5.Final", - "purl" : "pkg:maven/io.quarkus/quarkus-kubernetes-service-binding@2.13.5.Final", - "type" : "library", + "group": "io.quarkus", + "name": "quarkus-kubernetes-service-binding", + "version": "2.13.5.Final", + "purl": "pkg:maven/io.quarkus/quarkus-kubernetes-service-binding@2.13.5.Final", + "type": "library", "scope": "required", - "bom-ref" : "pkg:maven/io.quarkus/quarkus-kubernetes-service-binding@2.13.5.Final" + "bom-ref": "pkg:maven/io.quarkus/quarkus-kubernetes-service-binding@2.13.5.Final" }, { - "group" : "io.quarkus", - "name" : "quarkus-container-image-docker", - "version" : "2.13.5.Final", - "purl" : "pkg:maven/io.quarkus/quarkus-container-image-docker@2.13.5.Final", - "type" : "library", + "group": "io.quarkus", + "name": "quarkus-container-image-docker", + "version": "2.13.5.Final", + "purl": "pkg:maven/io.quarkus/quarkus-container-image-docker@2.13.5.Final", + "type": "library", "scope": "required", - "bom-ref" : "pkg:maven/io.quarkus/quarkus-container-image-docker@2.13.5.Final" + "bom-ref": "pkg:maven/io.quarkus/quarkus-container-image-docker@2.13.5.Final" }, { - "group" : "jakarta.validation", - "name" : "jakarta.validation-api", - "version" : "2.0.2", - "purl" : "pkg:maven/jakarta.validation/jakarta.validation-api@2.0.2", - "type" : "library", + "group": "jakarta.validation", + "name": "jakarta.validation-api", + "version": "2.0.2", + "purl": "pkg:maven/jakarta.validation/jakarta.validation-api@2.0.2", + "type": "library", "scope": "required", - "bom-ref" : "pkg:maven/jakarta.validation/jakarta.validation-api@2.0.2" + "bom-ref": "pkg:maven/jakarta.validation/jakarta.validation-api@2.0.2" }, { - "group" : "io.quarkus", - "name" : "quarkus-resteasy-multipart", - "version" : "2.13.7.Final", - "purl" : "pkg:maven/io.quarkus/quarkus-resteasy-multipart@2.13.7.Final", - "type" : "library", + "group": "io.quarkus", + "name": "quarkus-resteasy-multipart", + "version": "2.13.7.Final", + "purl": "pkg:maven/io.quarkus/quarkus-resteasy-multipart@2.13.7.Final", + "type": "library", "scope": "required", - "bom-ref" : "pkg:maven/io.quarkus/quarkus-resteasy-multipart@2.13.7.Final" + "bom-ref": "pkg:maven/io.quarkus/quarkus-resteasy-multipart@2.13.7.Final" }, { - "group" : "io.quarkus", - "name" : "quarkus-hibernate-orm-deployment", - "version" : "2.0.2.Final", - "purl" : "pkg:maven/io.quarkus/quarkus-hibernate-orm-deployment@2.0.2.Final", - "type" : "library", - "scope": "required", - "bom-ref" : "pkg:maven/io.quarkus/quarkus-hibernate-orm-deployment@2.0.2.Final" + "group": "io.quarkus", + "name": "quarkus-hibernate-orm-deployment", + "version": "2.0.2.Final", + "purl": "pkg:maven/io.quarkus/quarkus-hibernate-orm-deployment@2.0.2.Final", + "type": "library", + "scope": "required", + "bom-ref": "pkg:maven/io.quarkus/quarkus-hibernate-orm-deployment@2.0.2.Final" } ], - "dependencies" : [ + "dependencies": [ { - "ref" : "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT", - "dependsOn" : [ + "ref": "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT", + "dependsOn": [ "pkg:maven/io.quarkus/quarkus-hibernate-orm@2.13.5.Final", "pkg:maven/io.quarkus/quarkus-agroal@2.13.5.Final", "pkg:maven/io.quarkus/quarkus-resteasy@2.13.7.Final", @@ -140,48 +132,48 @@ ] }, { - "ref" : "pkg:maven/io.quarkus/quarkus-hibernate-orm@2.13.5.Final", - "dependsOn" : [ ] + "ref": "pkg:maven/io.quarkus/quarkus-hibernate-orm@2.13.5.Final", + "dependsOn": [] }, { - "ref" : "pkg:maven/io.quarkus/quarkus-agroal@2.13.5.Final", - "dependsOn" : [ ] + "ref": "pkg:maven/io.quarkus/quarkus-agroal@2.13.5.Final", + "dependsOn": [] }, { - "ref" : "pkg:maven/io.quarkus/quarkus-resteasy@2.13.7.Final", - "dependsOn" : [ ] + "ref": "pkg:maven/io.quarkus/quarkus-resteasy@2.13.7.Final", + "dependsOn": [] }, { - "ref" : "pkg:maven/io.quarkus/quarkus-resteasy-jackson@2.13.5.Final", - "dependsOn" : [ ] + "ref": "pkg:maven/io.quarkus/quarkus-resteasy-jackson@2.13.5.Final", + "dependsOn": [] }, { - "ref" : "pkg:maven/io.quarkus/quarkus-jdbc-postgresql@2.13.5.Final", - "dependsOn" : [ ] + "ref": "pkg:maven/io.quarkus/quarkus-jdbc-postgresql@2.13.5.Final", + "dependsOn": [] }, { - "ref" : "pkg:maven/io.quarkus/quarkus-vertx-http@2.13.7.Final", - "dependsOn" : [ ] + "ref": "pkg:maven/io.quarkus/quarkus-vertx-http@2.13.7.Final", + "dependsOn": [] }, { - "ref" : "pkg:maven/io.quarkus/quarkus-kubernetes-service-binding@2.13.5.Final", - "dependsOn" : [ ] + "ref": "pkg:maven/io.quarkus/quarkus-kubernetes-service-binding@2.13.5.Final", + "dependsOn": [] }, { - "ref" : "pkg:maven/io.quarkus/quarkus-container-image-docker@2.13.5.Final", - "dependsOn" : [ ] + "ref": "pkg:maven/io.quarkus/quarkus-container-image-docker@2.13.5.Final", + "dependsOn": [] }, { - "ref" : "pkg:maven/jakarta.validation/jakarta.validation-api@2.0.2", - "dependsOn" : [ ] + "ref": "pkg:maven/jakarta.validation/jakarta.validation-api@2.0.2", + "dependsOn": [] }, { - "ref" : "pkg:maven/io.quarkus/quarkus-resteasy-multipart@2.13.7.Final", - "dependsOn" : [ ] + "ref": "pkg:maven/io.quarkus/quarkus-resteasy-multipart@2.13.7.Final", + "dependsOn": [] }, { - "ref" : "pkg:maven/io.quarkus/quarkus-hibernate-orm-deployment@2.0.2.Final", - "dependsOn" : [ ] + "ref": "pkg:maven/io.quarkus/quarkus-hibernate-orm-deployment@2.0.2.Final", + "dependsOn": [] } ] } diff --git a/test/providers/tst_manifests/gradle/deps_with_ignore_full_specification/expected_stack_sbom.json b/test/providers/tst_manifests/gradle/deps_with_ignore_full_specification/expected_stack_sbom.json index 5fc5d431..809da96f 100644 --- a/test/providers/tst_manifests/gradle/deps_with_ignore_full_specification/expected_stack_sbom.json +++ b/test/providers/tst_manifests/gradle/deps_with_ignore_full_specification/expected_stack_sbom.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "org.acme.dbaas", - "name": "postgresql-orm-quarkus", - "version": "1.0.0-SNAPSHOT", - "purl": "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT", - "type": "application", - "bom-ref": "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT" - }, { "group": "io.quarkus", "name": "quarkus-hibernate-orm", diff --git a/test/providers/tst_manifests/gradle/deps_with_ignore_named_params/expected_component_sbom.json b/test/providers/tst_manifests/gradle/deps_with_ignore_named_params/expected_component_sbom.json index cf3442fc..ef2291f2 100644 --- a/test/providers/tst_manifests/gradle/deps_with_ignore_named_params/expected_component_sbom.json +++ b/test/providers/tst_manifests/gradle/deps_with_ignore_named_params/expected_component_sbom.json @@ -1,131 +1,123 @@ { - "bomFormat" : "CycloneDX", - "specVersion" : "1.4", - "version" : 1, - "metadata" : { - "timestamp" : "2023-08-07T00:00:00.000Z", - "component" : { - "group" : "org.acme.dbaas", - "name" : "postgresql-orm-quarkus", - "version" : "1.0.0-SNAPSHOT", - "purl" : "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT", - "type" : "application", - "bom-ref" : "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT" + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "group": "org.acme.dbaas", + "name": "postgresql-orm-quarkus", + "version": "1.0.0-SNAPSHOT", + "purl": "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT", + "type": "application", + "bom-ref": "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT" } }, - "components" : [ + "components": [ { - "group" : "org.acme.dbaas", - "name" : "postgresql-orm-quarkus", - "version" : "1.0.0-SNAPSHOT", - "purl" : "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT", - "type" : "application", - "bom-ref" : "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT" - }, - { - "group" : "io.quarkus", - "name" : "quarkus-hibernate-orm", - "version" : "2.13.5.Final", - "purl" : "pkg:maven/io.quarkus/quarkus-hibernate-orm@2.13.5.Final", - "type" : "library", + "group": "io.quarkus", + "name": "quarkus-hibernate-orm", + "version": "2.13.5.Final", + "purl": "pkg:maven/io.quarkus/quarkus-hibernate-orm@2.13.5.Final", + "type": "library", "scope": "required", - "bom-ref" : "pkg:maven/io.quarkus/quarkus-hibernate-orm@2.13.5.Final" + "bom-ref": "pkg:maven/io.quarkus/quarkus-hibernate-orm@2.13.5.Final" }, { - "group" : "io.quarkus", - "name" : "quarkus-agroal", - "version" : "2.13.5.Final", - "purl" : "pkg:maven/io.quarkus/quarkus-agroal@2.13.5.Final", - "type" : "library", + "group": "io.quarkus", + "name": "quarkus-agroal", + "version": "2.13.5.Final", + "purl": "pkg:maven/io.quarkus/quarkus-agroal@2.13.5.Final", + "type": "library", "scope": "required", - "bom-ref" : "pkg:maven/io.quarkus/quarkus-agroal@2.13.5.Final" + "bom-ref": "pkg:maven/io.quarkus/quarkus-agroal@2.13.5.Final" }, { - "group" : "io.quarkus", - "name" : "quarkus-resteasy", - "version" : "2.13.7.Final", - "purl" : "pkg:maven/io.quarkus/quarkus-resteasy@2.13.7.Final", - "type" : "library", + "group": "io.quarkus", + "name": "quarkus-resteasy", + "version": "2.13.7.Final", + "purl": "pkg:maven/io.quarkus/quarkus-resteasy@2.13.7.Final", + "type": "library", "scope": "required", - "bom-ref" : "pkg:maven/io.quarkus/quarkus-resteasy@2.13.7.Final" + "bom-ref": "pkg:maven/io.quarkus/quarkus-resteasy@2.13.7.Final" }, { - "group" : "io.quarkus", - "name" : "quarkus-resteasy-jackson", - "version" : "2.13.5.Final", - "purl" : "pkg:maven/io.quarkus/quarkus-resteasy-jackson@2.13.5.Final", - "type" : "library", + "group": "io.quarkus", + "name": "quarkus-resteasy-jackson", + "version": "2.13.5.Final", + "purl": "pkg:maven/io.quarkus/quarkus-resteasy-jackson@2.13.5.Final", + "type": "library", "scope": "required", - "bom-ref" : "pkg:maven/io.quarkus/quarkus-resteasy-jackson@2.13.5.Final" + "bom-ref": "pkg:maven/io.quarkus/quarkus-resteasy-jackson@2.13.5.Final" }, { - "group" : "io.quarkus", - "name" : "quarkus-jdbc-postgresql", - "version" : "2.13.5.Final", - "purl" : "pkg:maven/io.quarkus/quarkus-jdbc-postgresql@2.13.5.Final", - "type" : "library", + "group": "io.quarkus", + "name": "quarkus-jdbc-postgresql", + "version": "2.13.5.Final", + "purl": "pkg:maven/io.quarkus/quarkus-jdbc-postgresql@2.13.5.Final", + "type": "library", "scope": "required", - "bom-ref" : "pkg:maven/io.quarkus/quarkus-jdbc-postgresql@2.13.5.Final" + "bom-ref": "pkg:maven/io.quarkus/quarkus-jdbc-postgresql@2.13.5.Final" }, { - "group" : "io.quarkus", - "name" : "quarkus-vertx-http", - "version" : "2.13.7.Final", - "purl" : "pkg:maven/io.quarkus/quarkus-vertx-http@2.13.7.Final", - "type" : "library", + "group": "io.quarkus", + "name": "quarkus-vertx-http", + "version": "2.13.7.Final", + "purl": "pkg:maven/io.quarkus/quarkus-vertx-http@2.13.7.Final", + "type": "library", "scope": "required", - "bom-ref" : "pkg:maven/io.quarkus/quarkus-vertx-http@2.13.7.Final" + "bom-ref": "pkg:maven/io.quarkus/quarkus-vertx-http@2.13.7.Final" }, { - "group" : "io.quarkus", - "name" : "quarkus-kubernetes-service-binding", - "version" : "2.13.5.Final", - "purl" : "pkg:maven/io.quarkus/quarkus-kubernetes-service-binding@2.13.5.Final", - "type" : "library", + "group": "io.quarkus", + "name": "quarkus-kubernetes-service-binding", + "version": "2.13.5.Final", + "purl": "pkg:maven/io.quarkus/quarkus-kubernetes-service-binding@2.13.5.Final", + "type": "library", "scope": "required", - "bom-ref" : "pkg:maven/io.quarkus/quarkus-kubernetes-service-binding@2.13.5.Final" + "bom-ref": "pkg:maven/io.quarkus/quarkus-kubernetes-service-binding@2.13.5.Final" }, { - "group" : "io.quarkus", - "name" : "quarkus-container-image-docker", - "version" : "2.13.5.Final", - "purl" : "pkg:maven/io.quarkus/quarkus-container-image-docker@2.13.5.Final", - "type" : "library", + "group": "io.quarkus", + "name": "quarkus-container-image-docker", + "version": "2.13.5.Final", + "purl": "pkg:maven/io.quarkus/quarkus-container-image-docker@2.13.5.Final", + "type": "library", "scope": "required", - "bom-ref" : "pkg:maven/io.quarkus/quarkus-container-image-docker@2.13.5.Final" + "bom-ref": "pkg:maven/io.quarkus/quarkus-container-image-docker@2.13.5.Final" }, { - "group" : "jakarta.validation", - "name" : "jakarta.validation-api", - "version" : "2.0.2", - "purl" : "pkg:maven/jakarta.validation/jakarta.validation-api@2.0.2", - "type" : "library", + "group": "jakarta.validation", + "name": "jakarta.validation-api", + "version": "2.0.2", + "purl": "pkg:maven/jakarta.validation/jakarta.validation-api@2.0.2", + "type": "library", "scope": "required", - "bom-ref" : "pkg:maven/jakarta.validation/jakarta.validation-api@2.0.2" + "bom-ref": "pkg:maven/jakarta.validation/jakarta.validation-api@2.0.2" }, { - "group" : "io.quarkus", - "name" : "quarkus-resteasy-multipart", - "version" : "2.13.7.Final", - "purl" : "pkg:maven/io.quarkus/quarkus-resteasy-multipart@2.13.7.Final", - "type" : "library", + "group": "io.quarkus", + "name": "quarkus-resteasy-multipart", + "version": "2.13.7.Final", + "purl": "pkg:maven/io.quarkus/quarkus-resteasy-multipart@2.13.7.Final", + "type": "library", "scope": "required", - "bom-ref" : "pkg:maven/io.quarkus/quarkus-resteasy-multipart@2.13.7.Final" + "bom-ref": "pkg:maven/io.quarkus/quarkus-resteasy-multipart@2.13.7.Final" }, { - "group" : "io.quarkus", - "name" : "quarkus-hibernate-orm-deployment", - "version" : "2.0.2.Final", - "purl" : "pkg:maven/io.quarkus/quarkus-hibernate-orm-deployment@2.0.2.Final", - "type" : "library", - "scope": "required", - "bom-ref" : "pkg:maven/io.quarkus/quarkus-hibernate-orm-deployment@2.0.2.Final" + "group": "io.quarkus", + "name": "quarkus-hibernate-orm-deployment", + "version": "2.0.2.Final", + "purl": "pkg:maven/io.quarkus/quarkus-hibernate-orm-deployment@2.0.2.Final", + "type": "library", + "scope": "required", + "bom-ref": "pkg:maven/io.quarkus/quarkus-hibernate-orm-deployment@2.0.2.Final" } ], - "dependencies" : [ + "dependencies": [ { - "ref" : "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT", - "dependsOn" : [ + "ref": "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT", + "dependsOn": [ "pkg:maven/io.quarkus/quarkus-hibernate-orm@2.13.5.Final", "pkg:maven/io.quarkus/quarkus-agroal@2.13.5.Final", "pkg:maven/io.quarkus/quarkus-resteasy@2.13.7.Final", @@ -140,48 +132,48 @@ ] }, { - "ref" : "pkg:maven/io.quarkus/quarkus-hibernate-orm@2.13.5.Final", - "dependsOn" : [ ] + "ref": "pkg:maven/io.quarkus/quarkus-hibernate-orm@2.13.5.Final", + "dependsOn": [] }, { - "ref" : "pkg:maven/io.quarkus/quarkus-agroal@2.13.5.Final", - "dependsOn" : [ ] + "ref": "pkg:maven/io.quarkus/quarkus-agroal@2.13.5.Final", + "dependsOn": [] }, { - "ref" : "pkg:maven/io.quarkus/quarkus-resteasy@2.13.7.Final", - "dependsOn" : [ ] + "ref": "pkg:maven/io.quarkus/quarkus-resteasy@2.13.7.Final", + "dependsOn": [] }, { - "ref" : "pkg:maven/io.quarkus/quarkus-resteasy-jackson@2.13.5.Final", - "dependsOn" : [ ] + "ref": "pkg:maven/io.quarkus/quarkus-resteasy-jackson@2.13.5.Final", + "dependsOn": [] }, { - "ref" : "pkg:maven/io.quarkus/quarkus-jdbc-postgresql@2.13.5.Final", - "dependsOn" : [ ] + "ref": "pkg:maven/io.quarkus/quarkus-jdbc-postgresql@2.13.5.Final", + "dependsOn": [] }, { - "ref" : "pkg:maven/io.quarkus/quarkus-vertx-http@2.13.7.Final", - "dependsOn" : [ ] + "ref": "pkg:maven/io.quarkus/quarkus-vertx-http@2.13.7.Final", + "dependsOn": [] }, { - "ref" : "pkg:maven/io.quarkus/quarkus-kubernetes-service-binding@2.13.5.Final", - "dependsOn" : [ ] + "ref": "pkg:maven/io.quarkus/quarkus-kubernetes-service-binding@2.13.5.Final", + "dependsOn": [] }, { - "ref" : "pkg:maven/io.quarkus/quarkus-container-image-docker@2.13.5.Final", - "dependsOn" : [ ] + "ref": "pkg:maven/io.quarkus/quarkus-container-image-docker@2.13.5.Final", + "dependsOn": [] }, { - "ref" : "pkg:maven/jakarta.validation/jakarta.validation-api@2.0.2", - "dependsOn" : [ ] + "ref": "pkg:maven/jakarta.validation/jakarta.validation-api@2.0.2", + "dependsOn": [] }, { - "ref" : "pkg:maven/io.quarkus/quarkus-resteasy-multipart@2.13.7.Final", - "dependsOn" : [ ] + "ref": "pkg:maven/io.quarkus/quarkus-resteasy-multipart@2.13.7.Final", + "dependsOn": [] }, { - "ref" : "pkg:maven/io.quarkus/quarkus-hibernate-orm-deployment@2.0.2.Final", - "dependsOn" : [ ] + "ref": "pkg:maven/io.quarkus/quarkus-hibernate-orm-deployment@2.0.2.Final", + "dependsOn": [] } ] } diff --git a/test/providers/tst_manifests/gradle/deps_with_ignore_named_params/expected_stack_sbom.json b/test/providers/tst_manifests/gradle/deps_with_ignore_named_params/expected_stack_sbom.json index 5fc5d431..809da96f 100644 --- a/test/providers/tst_manifests/gradle/deps_with_ignore_named_params/expected_stack_sbom.json +++ b/test/providers/tst_manifests/gradle/deps_with_ignore_named_params/expected_stack_sbom.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "org.acme.dbaas", - "name": "postgresql-orm-quarkus", - "version": "1.0.0-SNAPSHOT", - "purl": "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT", - "type": "application", - "bom-ref": "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT" - }, { "group": "io.quarkus", "name": "quarkus-hibernate-orm", diff --git a/test/providers/tst_manifests/gradle/deps_with_ignore_notations/expected_component_sbom.json b/test/providers/tst_manifests/gradle/deps_with_ignore_notations/expected_component_sbom.json index 24fef975..3a801ae8 100644 --- a/test/providers/tst_manifests/gradle/deps_with_ignore_notations/expected_component_sbom.json +++ b/test/providers/tst_manifests/gradle/deps_with_ignore_notations/expected_component_sbom.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "org.acme.dbaas", - "name": "postgresql-orm-quarkus", - "version": "1.0.0-SNAPSHOT", - "purl": "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT", - "type": "application", - "bom-ref": "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT" - }, { "group": "io.quarkus", "name": "quarkus-hibernate-orm", diff --git a/test/providers/tst_manifests/gradle/deps_with_ignore_notations/expected_stack_sbom.json b/test/providers/tst_manifests/gradle/deps_with_ignore_notations/expected_stack_sbom.json index 76084d3a..316f17a1 100644 --- a/test/providers/tst_manifests/gradle/deps_with_ignore_notations/expected_stack_sbom.json +++ b/test/providers/tst_manifests/gradle/deps_with_ignore_notations/expected_stack_sbom.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "org.acme.dbaas", - "name": "postgresql-orm-quarkus", - "version": "1.0.0-SNAPSHOT", - "purl": "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT", - "type": "application", - "bom-ref": "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT" - }, { "group": "io.quarkus", "name": "quarkus-hibernate-orm", diff --git a/test/providers/tst_manifests/gradle/deps_with_no_ignore_common_paths/expected_component_sbom.json b/test/providers/tst_manifests/gradle/deps_with_no_ignore_common_paths/expected_component_sbom.json index 24fef975..3a801ae8 100644 --- a/test/providers/tst_manifests/gradle/deps_with_no_ignore_common_paths/expected_component_sbom.json +++ b/test/providers/tst_manifests/gradle/deps_with_no_ignore_common_paths/expected_component_sbom.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "org.acme.dbaas", - "name": "postgresql-orm-quarkus", - "version": "1.0.0-SNAPSHOT", - "purl": "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT", - "type": "application", - "bom-ref": "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT" - }, { "group": "io.quarkus", "name": "quarkus-hibernate-orm", diff --git a/test/providers/tst_manifests/gradle/deps_with_no_ignore_common_paths/expected_stack_sbom.json b/test/providers/tst_manifests/gradle/deps_with_no_ignore_common_paths/expected_stack_sbom.json index 76084d3a..316f17a1 100644 --- a/test/providers/tst_manifests/gradle/deps_with_no_ignore_common_paths/expected_stack_sbom.json +++ b/test/providers/tst_manifests/gradle/deps_with_no_ignore_common_paths/expected_stack_sbom.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "org.acme.dbaas", - "name": "postgresql-orm-quarkus", - "version": "1.0.0-SNAPSHOT", - "purl": "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT", - "type": "application", - "bom-ref": "pkg:maven/org.acme.dbaas/postgresql-orm-quarkus@1.0.0-SNAPSHOT" - }, { "group": "io.quarkus", "name": "quarkus-hibernate-orm", diff --git a/test/providers/tst_manifests/js-common/package_json_deps_with_exhortignore_object/component_expected_sbom.json b/test/providers/tst_manifests/js-common/package_json_deps_with_exhortignore_object/component_expected_sbom.json index 640c87ec..c958098e 100644 --- a/test/providers/tst_manifests/js-common/package_json_deps_with_exhortignore_object/component_expected_sbom.json +++ b/test/providers/tst_manifests/js-common/package_json_deps_with_exhortignore_object/component_expected_sbom.json @@ -13,13 +13,6 @@ } }, "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", diff --git a/test/providers/tst_manifests/js-common/package_json_deps_without_exhortignore_object/component_expected_sbom.json b/test/providers/tst_manifests/js-common/package_json_deps_without_exhortignore_object/component_expected_sbom.json index 64f35806..46d31c2d 100644 --- a/test/providers/tst_manifests/js-common/package_json_deps_without_exhortignore_object/component_expected_sbom.json +++ b/test/providers/tst_manifests/js-common/package_json_deps_without_exhortignore_object/component_expected_sbom.json @@ -13,13 +13,6 @@ } }, "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", @@ -76,8 +69,8 @@ "purl": "pkg:npm/jsonwebtoken@8.5.1", "type": "library", "bom-ref": "pkg:npm/jsonwebtoken@8.5.1" - }, - { + }, + { "name": "jsdom", "version": "19.0.0", "purl": "pkg:npm/jsdom@19.0.0", @@ -139,10 +132,10 @@ "ref": "pkg:npm/express@4.18.2", "dependsOn": [] }, - { - "ref": "pkg:npm/jsdom@19.0.0", - "dependsOn": [] - }, + { + "ref": "pkg:npm/jsdom@19.0.0", + "dependsOn": [] + }, { "ref": "pkg:npm/jsonwebtoken@8.5.1", "dependsOn": [] diff --git a/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_artifact/component_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_artifact/component_analysis_expected_sbom.json index 23027793..d3d1350f 100644 --- a/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_artifact/component_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_artifact/component_analysis_expected_sbom.json @@ -13,15 +13,6 @@ "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" } }, - "components": [ - { - "group": "pom-with-deps-and-ignore", - "name": "pom-with-dependency-not-ignored-for-tests", - "version": "0.0.1", - "purl": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", - "type": "application", - "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" - } - ], + "components": [], "dependencies": [] } diff --git a/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_artifact/stack_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_artifact/stack_analysis_expected_sbom.json index b352fac2..52db3a8e 100644 --- a/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_artifact/stack_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_artifact/stack_analysis_expected_sbom.json @@ -13,15 +13,6 @@ "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" } }, - "components": [ - { - "group": "pom-with-deps-and-ignore", - "name": "pom-with-dependency-not-ignored-for-tests", - "version": "0.0.1", - "purl": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", - "type": "application", - "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" - } - ], + "components": [], "dependencies": [] } diff --git a/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_dependency/component_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_dependency/component_analysis_expected_sbom.json index 23027793..d3d1350f 100644 --- a/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_dependency/component_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_dependency/component_analysis_expected_sbom.json @@ -13,15 +13,6 @@ "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" } }, - "components": [ - { - "group": "pom-with-deps-and-ignore", - "name": "pom-with-dependency-not-ignored-for-tests", - "version": "0.0.1", - "purl": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", - "type": "application", - "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" - } - ], + "components": [], "dependencies": [] } diff --git a/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_dependency/stack_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_dependency/stack_analysis_expected_sbom.json index b352fac2..52db3a8e 100644 --- a/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_dependency/stack_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_dependency/stack_analysis_expected_sbom.json @@ -13,15 +13,6 @@ "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" } }, - "components": [ - { - "group": "pom-with-deps-and-ignore", - "name": "pom-with-dependency-not-ignored-for-tests", - "version": "0.0.1", - "purl": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", - "type": "application", - "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" - } - ], + "components": [], "dependencies": [] } diff --git a/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_group/component_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_group/component_analysis_expected_sbom.json index 23027793..d3d1350f 100644 --- a/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_group/component_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_group/component_analysis_expected_sbom.json @@ -13,15 +13,6 @@ "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" } }, - "components": [ - { - "group": "pom-with-deps-and-ignore", - "name": "pom-with-dependency-not-ignored-for-tests", - "version": "0.0.1", - "purl": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", - "type": "application", - "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" - } - ], + "components": [], "dependencies": [] } diff --git a/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_group/stack_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_group/stack_analysis_expected_sbom.json index b352fac2..52db3a8e 100644 --- a/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_group/stack_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_group/stack_analysis_expected_sbom.json @@ -13,15 +13,6 @@ "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" } }, - "components": [ - { - "group": "pom-with-deps-and-ignore", - "name": "pom-with-dependency-not-ignored-for-tests", - "version": "0.0.1", - "purl": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", - "type": "application", - "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" - } - ], + "components": [], "dependencies": [] } diff --git a/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_version/component_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_version/component_analysis_expected_sbom.json index 23027793..d3d1350f 100644 --- a/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_version/component_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_version/component_analysis_expected_sbom.json @@ -13,15 +13,6 @@ "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" } }, - "components": [ - { - "group": "pom-with-deps-and-ignore", - "name": "pom-with-dependency-not-ignored-for-tests", - "version": "0.0.1", - "purl": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", - "type": "application", - "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" - } - ], + "components": [], "dependencies": [] } diff --git a/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_version/stack_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_version/stack_analysis_expected_sbom.json index b352fac2..52db3a8e 100644 --- a/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_version/stack_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_version/stack_analysis_expected_sbom.json @@ -13,15 +13,6 @@ "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" } }, - "components": [ - { - "group": "pom-with-deps-and-ignore", - "name": "pom-with-dependency-not-ignored-for-tests", - "version": "0.0.1", - "purl": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", - "type": "application", - "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" - } - ], + "components": [], "dependencies": [] } diff --git a/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_wrong/component_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_wrong/component_analysis_expected_sbom.json index bb128b4d..4d5a6e9a 100644 --- a/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_wrong/component_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_wrong/component_analysis_expected_sbom.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "pom-with-deps-no-ignore", - "name": "pom-with-dependency-not-ignored-for-tests", - "version": "0.0.1", - "purl": "pkg:maven/pom-with-deps-no-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", - "type": "application", - "bom-ref": "pkg:maven/pom-with-deps-no-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" - }, { "group": "log4j", "name": "log4j", diff --git a/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_wrong/stack_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_wrong/stack_analysis_expected_sbom.json index bb128b4d..4d5a6e9a 100644 --- a/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_wrong/stack_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/pom_deps_with_ignore_on_wrong/stack_analysis_expected_sbom.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "pom-with-deps-no-ignore", - "name": "pom-with-dependency-not-ignored-for-tests", - "version": "0.0.1", - "purl": "pkg:maven/pom-with-deps-no-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", - "type": "application", - "bom-ref": "pkg:maven/pom-with-deps-no-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" - }, { "group": "log4j", "name": "log4j", diff --git a/test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/component_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/component_analysis_expected_sbom.json index e2d6c173..737f578b 100644 --- a/test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/component_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/component_analysis_expected_sbom.json @@ -21,21 +21,6 @@ } }, "components": [ - { - "group": "pom-with-deps-and-ignore", - "name": "pom-with-dependency-not-ignored-for-tests", - "version": "0.0.1", - "purl": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", - "type": "application", - "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", - "licenses": [ - { - "license": { - "id": "Apache-2.0" - } - } - ] - }, { "group": "org.bouncycastle", "name": "bcprov-jdk18on", diff --git a/test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/stack_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/stack_analysis_expected_sbom.json index bdf83b2e..737f578b 100644 --- a/test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/stack_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/pom_deps_with_ignore_version_from_property/stack_analysis_expected_sbom.json @@ -21,21 +21,6 @@ } }, "components": [ - { - "group": "pom-with-deps-and-ignore", - "name": "pom-with-dependency-not-ignored-for-tests", - "version": "0.0.1", - "purl": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", - "type": "application", - "bom-ref": "pkg:maven/pom-with-deps-and-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", - "licenses": [ - { - "license": { - "id": "Apache-2.0" - } - } - ] - }, { "group": "org.bouncycastle", "name": "bcprov-jdk18on", @@ -57,4 +42,4 @@ "dependsOn": [] } ] -} \ No newline at end of file +} diff --git a/test/providers/tst_manifests/maven/pom_deps_with_no_ignore/component_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/pom_deps_with_no_ignore/component_analysis_expected_sbom.json index bb128b4d..4d5a6e9a 100644 --- a/test/providers/tst_manifests/maven/pom_deps_with_no_ignore/component_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/pom_deps_with_no_ignore/component_analysis_expected_sbom.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "pom-with-deps-no-ignore", - "name": "pom-with-dependency-not-ignored-for-tests", - "version": "0.0.1", - "purl": "pkg:maven/pom-with-deps-no-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", - "type": "application", - "bom-ref": "pkg:maven/pom-with-deps-no-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" - }, { "group": "log4j", "name": "log4j", diff --git a/test/providers/tst_manifests/maven/pom_deps_with_no_ignore/stack_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/pom_deps_with_no_ignore/stack_analysis_expected_sbom.json index bb128b4d..4d5a6e9a 100644 --- a/test/providers/tst_manifests/maven/pom_deps_with_no_ignore/stack_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/pom_deps_with_no_ignore/stack_analysis_expected_sbom.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "pom-with-deps-no-ignore", - "name": "pom-with-dependency-not-ignored-for-tests", - "version": "0.0.1", - "purl": "pkg:maven/pom-with-deps-no-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1", - "type": "application", - "bom-ref": "pkg:maven/pom-with-deps-no-ignore/pom-with-dependency-not-ignored-for-tests@0.0.1" - }, { "group": "log4j", "name": "log4j", diff --git a/test/providers/tst_manifests/maven/pom_deps_with_no_ignore_common_paths/component_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/pom_deps_with_no_ignore_common_paths/component_analysis_expected_sbom.json index 5fbcdd37..8252726f 100644 --- a/test/providers/tst_manifests/maven/pom_deps_with_no_ignore_common_paths/component_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/pom_deps_with_no_ignore_common_paths/component_analysis_expected_sbom.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "pom-with-deps-no-ignore", - "name": "pom-with-dependency-not-ignored-common-paths", - "version": "0.0.1", - "purl": "pkg:maven/pom-with-deps-no-ignore/pom-with-dependency-not-ignored-common-paths@0.0.1", - "type": "application", - "bom-ref": "pkg:maven/pom-with-deps-no-ignore/pom-with-dependency-not-ignored-common-paths@0.0.1" - }, { "group": "org.springframework.boot", "name": "spring-boot-starter", diff --git a/test/providers/tst_manifests/maven/pom_deps_with_no_ignore_common_paths/stack_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/pom_deps_with_no_ignore_common_paths/stack_analysis_expected_sbom.json index aba67c67..dce561dc 100644 --- a/test/providers/tst_manifests/maven/pom_deps_with_no_ignore_common_paths/stack_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/pom_deps_with_no_ignore_common_paths/stack_analysis_expected_sbom.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "pom-with-deps-no-ignore", - "name": "pom-with-dependency-not-ignored-common-paths", - "version": "0.0.1", - "purl": "pkg:maven/pom-with-deps-no-ignore/pom-with-dependency-not-ignored-common-paths@0.0.1", - "type": "application", - "bom-ref": "pkg:maven/pom-with-deps-no-ignore/pom-with-dependency-not-ignored-common-paths@0.0.1" - }, { "group": "org.springframework.boot", "name": "spring-boot-starter", diff --git a/test/providers/tst_manifests/maven/pom_with_multiple_modules/component_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/pom_with_multiple_modules/component_analysis_expected_sbom.json index 595b410b..86798f3c 100644 --- a/test/providers/tst_manifests/maven/pom_with_multiple_modules/component_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/pom_with_multiple_modules/component_analysis_expected_sbom.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "org.example", - "name": "root-example", - "version": "1.0-SNAPSHOT", - "purl": "pkg:maven/org.example/root-example@1.0-SNAPSHOT", - "type": "application", - "bom-ref": "pkg:maven/org.example/root-example@1.0-SNAPSHOT" - }, { "group": "commons-io", "name": "commons-io", diff --git a/test/providers/tst_manifests/maven/pom_with_one_module/component_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/pom_with_one_module/component_analysis_expected_sbom.json index 5e85b63b..9b49c76b 100644 --- a/test/providers/tst_manifests/maven/pom_with_one_module/component_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/pom_with_one_module/component_analysis_expected_sbom.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "org.zgrinber.tracing", - "name": "tracing-parent", - "version": "1", - "purl": "pkg:maven/org.zgrinber.tracing/tracing-parent@1", - "type": "application", - "bom-ref": "pkg:maven/org.zgrinber.tracing/tracing-parent@1" - }, { "group": "com.fasterxml.jackson.core", "name": "jackson-databind", diff --git a/test/providers/tst_manifests/maven/poms_deps_with_2_ignore_long/component_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/poms_deps_with_2_ignore_long/component_analysis_expected_sbom.json index 12776a1e..f5ee9fed 100644 --- a/test/providers/tst_manifests/maven/poms_deps_with_2_ignore_long/component_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/poms_deps_with_2_ignore_long/component_analysis_expected_sbom.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "com.example", - "name": "demo", - "version": "0.0.1-SNAPSHOT", - "purl": "pkg:maven/com.example/demo@0.0.1-SNAPSHOT", - "type": "application", - "bom-ref": "pkg:maven/com.example/demo@0.0.1-SNAPSHOT" - }, { "group": "org.springframework.boot", "name": "spring-boot-starter", diff --git a/test/providers/tst_manifests/maven/poms_deps_with_2_ignore_long/stack_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/poms_deps_with_2_ignore_long/stack_analysis_expected_sbom.json index aafb08d9..6ea36932 100644 --- a/test/providers/tst_manifests/maven/poms_deps_with_2_ignore_long/stack_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/poms_deps_with_2_ignore_long/stack_analysis_expected_sbom.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "com.example", - "name": "demo", - "version": "0.0.1-SNAPSHOT", - "purl": "pkg:maven/com.example/demo@0.0.1-SNAPSHOT", - "type": "application", - "bom-ref": "pkg:maven/com.example/demo@0.0.1-SNAPSHOT" - }, { "group": "org.springframework.boot", "name": "spring-boot-starter", @@ -1908,4 +1900,4 @@ "dependsOn": [] } ] -} \ No newline at end of file +} diff --git a/test/providers/tst_manifests/maven/poms_deps_with_ignore_long/component_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/poms_deps_with_ignore_long/component_analysis_expected_sbom.json index 7d390e88..bebbedf7 100644 --- a/test/providers/tst_manifests/maven/poms_deps_with_ignore_long/component_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/poms_deps_with_ignore_long/component_analysis_expected_sbom.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "com.redhat.examples", - "name": "custom-metrics-demo", - "version": "0.0.1-SNAPSHOT", - "purl": "pkg:maven/com.redhat.examples/custom-metrics-demo@0.0.1-SNAPSHOT", - "type": "application", - "bom-ref": "pkg:maven/com.redhat.examples/custom-metrics-demo@0.0.1-SNAPSHOT" - }, { "group": "org.springframework.boot", "name": "spring-boot-starter-actuator", diff --git a/test/providers/tst_manifests/maven/poms_deps_with_ignore_long/stack_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/poms_deps_with_ignore_long/stack_analysis_expected_sbom.json index ebc27adf..e85e2477 100644 --- a/test/providers/tst_manifests/maven/poms_deps_with_ignore_long/stack_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/poms_deps_with_ignore_long/stack_analysis_expected_sbom.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "com.redhat.examples", - "name": "custom-metrics-demo", - "version": "0.0.1-SNAPSHOT", - "purl": "pkg:maven/com.redhat.examples/custom-metrics-demo@0.0.1-SNAPSHOT", - "type": "application", - "bom-ref": "pkg:maven/com.redhat.examples/custom-metrics-demo@0.0.1-SNAPSHOT" - }, { "group": "org.springframework.boot", "name": "spring-boot-starter-actuator", diff --git a/test/providers/tst_manifests/maven/poms_deps_with_no_ignore_long/component_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/poms_deps_with_no_ignore_long/component_analysis_expected_sbom.json index a60e6fc2..cff34ed5 100644 --- a/test/providers/tst_manifests/maven/poms_deps_with_no_ignore_long/component_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/poms_deps_with_no_ignore_long/component_analysis_expected_sbom.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "com.redhat.examples", - "name": "custom-metrics-demo", - "version": "0.0.1-SNAPSHOT", - "purl": "pkg:maven/com.redhat.examples/custom-metrics-demo@0.0.1-SNAPSHOT", - "type": "application", - "bom-ref": "pkg:maven/com.redhat.examples/custom-metrics-demo@0.0.1-SNAPSHOT" - }, { "group": "org.springframework.boot", "name": "spring-boot-starter-actuator", diff --git a/test/providers/tst_manifests/maven/poms_deps_with_no_ignore_long/stack_analysis_expected_sbom.json b/test/providers/tst_manifests/maven/poms_deps_with_no_ignore_long/stack_analysis_expected_sbom.json index 848d40a0..8a7fa169 100644 --- a/test/providers/tst_manifests/maven/poms_deps_with_no_ignore_long/stack_analysis_expected_sbom.json +++ b/test/providers/tst_manifests/maven/poms_deps_with_no_ignore_long/stack_analysis_expected_sbom.json @@ -14,14 +14,6 @@ } }, "components": [ - { - "group": "com.redhat.examples", - "name": "custom-metrics-demo", - "version": "0.0.1-SNAPSHOT", - "purl": "pkg:maven/com.redhat.examples/custom-metrics-demo@0.0.1-SNAPSHOT", - "type": "application", - "bom-ref": "pkg:maven/com.redhat.examples/custom-metrics-demo@0.0.1-SNAPSHOT" - }, { "group": "org.springframework.boot", "name": "spring-boot-starter-actuator", diff --git a/test/providers/tst_manifests/npm/package_json_deps_with_exhortignore_object/stack_expected_sbom.json b/test/providers/tst_manifests/npm/package_json_deps_with_exhortignore_object/stack_expected_sbom.json index 5cbb1ca4..73316509 100644 --- a/test/providers/tst_manifests/npm/package_json_deps_with_exhortignore_object/stack_expected_sbom.json +++ b/test/providers/tst_manifests/npm/package_json_deps_with_exhortignore_object/stack_expected_sbom.json @@ -13,13 +13,6 @@ } }, "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", @@ -2530,4 +2523,4 @@ "dependsOn": [] } ] -} \ No newline at end of file +} diff --git a/test/providers/tst_manifests/npm/package_json_deps_without_exhortignore_object/package-lock.json b/test/providers/tst_manifests/npm/package_json_deps_without_exhortignore_object/package-lock.json index 869eddb4..c33f65e2 100644 --- a/test/providers/tst_manifests/npm/package_json_deps_without_exhortignore_object/package-lock.json +++ b/test/providers/tst_manifests/npm/package_json_deps_without_exhortignore_object/package-lock.json @@ -15,6 +15,7 @@ "bcryptjs": "^2.4.3", "dotenv": "^8.2.0", "express": "^4.17.1", + "jsdom": "^19.0.0", "jsonwebtoken": "^8.5.1", "mongoose": "^5.9.18", "nodemon": "^2.0.4" @@ -66,6 +67,15 @@ "@hapi/hoek": "^9.0.0" } }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, "node_modules/@types/bson": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.5.tgz", @@ -88,6 +98,13 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.8.tgz", "integrity": "sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg==" }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "license": "BSD-3-Clause" + }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -105,6 +122,84 @@ "node": ">= 0.6" } }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "license": "MIT", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -122,6 +217,12 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, "node_modules/axios": { "version": "0.19.2", "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", @@ -211,6 +312,12 @@ "node": ">=8" } }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "license": "BSD-2-Clause" + }, "node_modules/bson": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", @@ -244,6 +351,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -270,6 +390,18 @@ "fsevents": "~2.3.2" } }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -312,6 +444,57 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "license": "MIT" + }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "license": "MIT", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -320,6 +503,21 @@ "ms": "2.0.0" } }, + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/denque": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", @@ -345,6 +543,19 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", + "license": "MIT", + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/dotenv": { "version": "8.6.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", @@ -353,6 +564,20 @@ "node": ">=10" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -374,11 +599,108 @@ "node": ">= 0.8" } }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -475,6 +797,22 @@ "ms": "2.0.0" } }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -505,24 +843,51 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "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" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -534,15 +899,16 @@ "node": ">= 6" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-flag": { @@ -553,10 +919,11 @@ "node": ">=4" } }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -564,10 +931,14 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, "engines": { "node": ">= 0.4" }, @@ -575,6 +946,30 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -590,6 +985,79 @@ "node": ">= 0.8" } }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -657,11 +1125,63 @@ "node": ">=0.12.0" } }, + "node_modules/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", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "license": "MIT" + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, + "node_modules/jsdom": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-19.0.0.tgz", + "integrity": "sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.5.0", + "acorn-globals": "^6.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.1", + "decimal.js": "^10.3.1", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "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.2.3", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, "node_modules/jsonwebtoken": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", @@ -747,6 +1267,15 @@ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -1016,6 +1545,12 @@ "node": ">=0.10.0" } }, + "node_modules/nwsapi": { + "version": "2.2.23", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", + "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", + "license": "MIT" + }, "node_modules/object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -1043,6 +1578,12 @@ "node": ">=4" } }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "license": "MIT" + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -1084,11 +1625,32 @@ "node": ">= 0.10" } }, + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } + }, "node_modules/pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -1103,6 +1665,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "license": "MIT" + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -1168,6 +1736,12 @@ "node": ">=4" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -1204,6 +1778,18 @@ "node": ">=6" } }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", @@ -1301,6 +1887,16 @@ "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", "integrity": "sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==" }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", @@ -1342,6 +1938,12 @@ "node": ">=4" } }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "license": "MIT" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -1372,6 +1974,33 @@ "nodetouch": "bin/nodetouch.js" } }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -1389,6 +2018,15 @@ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -1397,6 +2035,16 @@ "node": ">= 0.8" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -1417,6 +2065,120 @@ "engines": { "node": ">= 0.8" } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "license": "MIT", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", + "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", + "license": "MIT", + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", + "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", + "license": "MIT", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "license": "MIT", + "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 + } + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT" } } } diff --git a/test/providers/tst_manifests/npm/package_json_deps_without_exhortignore_object/stack_expected_sbom.json b/test/providers/tst_manifests/npm/package_json_deps_without_exhortignore_object/stack_expected_sbom.json index ad479d00..f5d83d9e 100644 --- a/test/providers/tst_manifests/npm/package_json_deps_without_exhortignore_object/stack_expected_sbom.json +++ b/test/providers/tst_manifests/npm/package_json_deps_without_exhortignore_object/stack_expected_sbom.json @@ -1,1047 +1,1040 @@ { - "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" + "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" : [ + "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" : "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" : "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" : "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" : "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" : "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" }, { - "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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-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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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-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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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-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-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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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.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.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.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.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.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.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" : "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" : "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" }, { - "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" : "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" : "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" }, { - "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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-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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" + "name": "undefsafe", + "version": "2.0.5", + "purl": "pkg:npm/undefsafe@2.0.5", + "type": "library", + "bom-ref": "pkg:npm/undefsafe@2.0.5" } ], - "dependencies" : [ + "dependencies": [ { - "ref" : "pkg:npm/backend@1.0.0", - "dependsOn" : [ + "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", @@ -1054,8 +1047,8 @@ ] }, { - "ref" : "pkg:npm/%40hapi/joi@17.1.1", - "dependsOn" : [ + "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", @@ -1064,66 +1057,66 @@ ] }, { - "ref" : "pkg:npm/%40hapi/address@4.1.0", - "dependsOn" : [ + "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/hoek@9.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40hapi/formula@2.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/%40hapi/formula@2.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40hapi/pinpoint@2.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/%40hapi/pinpoint@2.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40hapi/topo@5.1.0", - "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" : [ + "ref": "pkg:npm/axios@0.19.2", + "dependsOn": [ "pkg:npm/follow-redirects@1.5.10" ] }, { - "ref" : "pkg:npm/follow-redirects@1.5.10", - "dependsOn" : [ + "ref": "pkg:npm/follow-redirects@1.5.10", + "dependsOn": [ "pkg:npm/debug@3.1.0" ] }, { - "ref" : "pkg:npm/debug@3.1.0", - "dependsOn" : [ + "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/ms@2.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/backend@0.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/backend@0.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/bcryptjs@2.4.3", - "dependsOn" : [ ] + "ref": "pkg:npm/bcryptjs@2.4.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/dotenv@8.6.0", - "dependsOn" : [ ] + "ref": "pkg:npm/dotenv@8.6.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/express@4.18.2", - "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", @@ -1158,33 +1151,33 @@ ] }, { - "ref" : "pkg:npm/accepts@1.3.8", - "dependsOn" : [ + "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" : [ + "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/mime-db@1.52.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/negotiator@0.6.3", - "dependsOn" : [ ] + "ref": "pkg:npm/negotiator@0.6.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/array-flatten@1.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/array-flatten@1.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/body-parser@1.20.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", @@ -1200,30 +1193,30 @@ ] }, { - "ref" : "pkg:npm/bytes@3.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/bytes@3.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/content-type@1.0.5", - "dependsOn" : [ ] + "ref": "pkg:npm/content-type@1.0.5", + "dependsOn": [] }, { - "ref" : "pkg:npm/debug@2.6.9", - "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/depd@2.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/destroy@1.2.0", - "dependsOn" : [ ] + "ref": "pkg:npm/destroy@1.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/http-errors@2.0.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", @@ -1232,30 +1225,30 @@ ] }, { - "ref" : "pkg:npm/iconv-lite@0.4.24", - "dependsOn" : [ + "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/safer-buffer@2.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/on-finished@2.4.1", - "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" : [ + "ref": "pkg:npm/qs@6.11.0", + "dependsOn": [ "pkg:npm/side-channel@1.0.4" ] }, { - "ref" : "pkg:npm/raw-body@2.5.1", - "dependsOn" : [ + "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", @@ -1263,49 +1256,49 @@ ] }, { - "ref" : "pkg:npm/unpipe@1.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/unpipe@1.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/type-is@1.6.18", - "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" : [ + "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/safe-buffer@5.2.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/cookie-signature@1.0.6", - "dependsOn" : [ ] + "ref": "pkg:npm/cookie-signature@1.0.6", + "dependsOn": [] }, { - "ref" : "pkg:npm/cookie@0.5.0", - "dependsOn" : [ ] + "ref": "pkg:npm/cookie@0.5.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/encodeurl@1.0.2", - "dependsOn" : [ ] + "ref": "pkg:npm/encodeurl@1.0.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/escape-html@1.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/escape-html@1.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/etag@1.8.1", - "dependsOn" : [ ] + "ref": "pkg:npm/etag@1.8.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/finalhandler@1.2.0", - "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", @@ -1316,82 +1309,82 @@ ] }, { - "ref" : "pkg:npm/parseurl@1.3.3", - "dependsOn" : [ ] + "ref": "pkg:npm/parseurl@1.3.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/statuses@2.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/statuses@2.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/fresh@0.5.2", - "dependsOn" : [ ] + "ref": "pkg:npm/fresh@0.5.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/inherits@2.0.4", - "dependsOn" : [ ] + "ref": "pkg:npm/inherits@2.0.4", + "dependsOn": [] }, { - "ref" : "pkg:npm/setprototypeof@1.2.0", - "dependsOn" : [ ] + "ref": "pkg:npm/setprototypeof@1.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/toidentifier@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/toidentifier@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/merge-descriptors@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/merge-descriptors@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/methods@1.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/methods@1.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/ee-first@1.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/ee-first@1.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/path-to-regexp@0.1.7", - "dependsOn" : [ ] + "ref": "pkg:npm/path-to-regexp@0.1.7", + "dependsOn": [] }, { - "ref" : "pkg:npm/proxy-addr@2.0.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/forwarded@0.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/ipaddr.js@1.9.1", - "dependsOn" : [ ] + "ref": "pkg:npm/ipaddr.js@1.9.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/side-channel@1.0.4", - "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" : [ + "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/function-bind@1.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/get-intrinsic@1.2.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", @@ -1399,30 +1392,30 @@ ] }, { - "ref" : "pkg:npm/has-proto@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/has-proto@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/has-symbols@1.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/has-symbols@1.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/has@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/object-inspect@1.12.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/range-parser@1.2.1", - "dependsOn" : [ ] + "ref": "pkg:npm/range-parser@1.2.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/send@0.18.0", - "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", @@ -1439,16 +1432,16 @@ ] }, { - "ref" : "pkg:npm/mime@1.6.0", - "dependsOn" : [ ] + "ref": "pkg:npm/mime@1.6.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/ms@2.1.3", - "dependsOn" : [ ] + "ref": "pkg:npm/ms@2.1.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/serve-static@1.15.0", - "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", @@ -1456,20 +1449,20 @@ ] }, { - "ref" : "pkg:npm/media-typer@0.3.0", - "dependsOn" : [ ] + "ref": "pkg:npm/media-typer@0.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/utils-merge@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/utils-merge@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/vary@1.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/vary@1.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/jsonwebtoken@8.5.1", - "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", @@ -1483,65 +1476,65 @@ ] }, { - "ref" : "pkg:npm/jws@3.2.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" : [ + "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/buffer-equal-constant-time@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/ecdsa-sig-formatter@1.0.11", - "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.includes@4.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isboolean@3.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isboolean@3.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isinteger@4.0.4", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isinteger@4.0.4", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isnumber@3.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isnumber@3.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isplainobject@4.0.6", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isplainobject@4.0.6", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isstring@4.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isstring@4.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.once@4.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.once@4.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/semver@5.7.2", - "dependsOn" : [ ] + "ref": "pkg:npm/semver@5.7.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/mongoose@5.13.20", - "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", @@ -1559,33 +1552,33 @@ ] }, { - "ref" : "pkg:npm/%40types/bson@4.0.5", - "dependsOn" : [ + "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/node@20.4.8", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40types/mongodb@3.6.20", - "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/bson@1.1.6", + "dependsOn": [] }, { - "ref" : "pkg:npm/kareem@2.3.2", - "dependsOn" : [ ] + "ref": "pkg:npm/kareem@2.3.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/mongodb@3.7.4", - "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", @@ -1595,15 +1588,15 @@ ] }, { - "ref" : "pkg:npm/bl@2.2.1", - "dependsOn" : [ + "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" : [ + "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", @@ -1614,74 +1607,74 @@ ] }, { - "ref" : "pkg:npm/core-util-is@1.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/core-util-is@1.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/isarray@1.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/isarray@1.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/process-nextick-args@2.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/process-nextick-args@2.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/safe-buffer@5.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/safe-buffer@5.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/string_decoder@1.1.1", - "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/util-deprecate@1.0.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/denque@1.5.1", - "dependsOn" : [ ] + "ref": "pkg:npm/denque@1.5.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/optional-require@1.1.8", - "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/require-at@1.0.6", + "dependsOn": [] }, { - "ref" : "pkg:npm/saslprep@1.0.3", - "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" : [ + "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/memory-pager@1.5.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/mongoose-legacy-pluralize@1.0.2", - "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/mpath@0.8.4", + "dependsOn": [] }, { - "ref" : "pkg:npm/mquery@3.2.5", - "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", @@ -1690,32 +1683,32 @@ ] }, { - "ref" : "pkg:npm/bluebird@3.5.1", - "dependsOn" : [ ] + "ref": "pkg:npm/bluebird@3.5.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/regexp-clone@1.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/regexp-clone@1.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/sliced@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/sliced@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/ms@2.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/ms@2.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/optional-require@1.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/optional-require@1.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/sift@13.5.2", - "dependsOn" : [ ] + "ref": "pkg:npm/sift@13.5.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/nodemon@2.0.22", - "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", @@ -1729,8 +1722,8 @@ ] }, { - "ref" : "pkg:npm/chokidar@3.5.3", - "dependsOn" : [ + "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", @@ -1742,152 +1735,152 @@ ] }, { - "ref" : "pkg:npm/anymatch@3.1.3", - "dependsOn" : [ + "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/normalize-path@3.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/picomatch@2.3.1", - "dependsOn" : [ ] + "ref": "pkg:npm/picomatch@2.3.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/braces@3.0.2", - "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" : [ + "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" : [ + "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/is-number@7.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/fsevents@2.3.2", - "dependsOn" : [ ] + "ref": "pkg:npm/fsevents@2.3.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/glob-parent@5.1.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" : [ + "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" : [ + "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/binary-extensions@2.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/is-extglob@2.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/is-extglob@2.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/readdirp@3.6.0", - "dependsOn" : [ + "ref": "pkg:npm/readdirp@3.6.0", + "dependsOn": [ "pkg:npm/picomatch@2.3.1" ] }, { - "ref" : "pkg:npm/debug@3.2.7", - "dependsOn" : [ + "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/ignore-by-default@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/minimatch@3.1.2", - "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" : [ + "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/balanced-match@1.0.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/concat-map@0.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/concat-map@0.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/pstree.remy@1.1.8", - "dependsOn" : [ ] + "ref": "pkg:npm/pstree.remy@1.1.8", + "dependsOn": [] }, { - "ref" : "pkg:npm/simple-update-notifier@1.1.0", - "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/semver@7.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/supports-color@5.5.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/has-flag@3.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/touch@3.1.0", - "dependsOn" : [ + "ref": "pkg:npm/touch@3.1.0", + "dependsOn": [ "pkg:npm/nopt@1.0.10" ] }, { - "ref" : "pkg:npm/nopt@1.0.10", - "dependsOn" : [ + "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/abbrev@1.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/undefsafe@2.0.5", - "dependsOn" : [ ] + "ref": "pkg:npm/undefsafe@2.0.5", + "dependsOn": [] } ] } diff --git a/test/providers/tst_manifests/pip/pip_requirements_txt_ignore/expected_component_sbom.json b/test/providers/tst_manifests/pip/pip_requirements_txt_ignore/expected_component_sbom.json index e37eeed0..c87e900b 100644 --- a/test/providers/tst_manifests/pip/pip_requirements_txt_ignore/expected_component_sbom.json +++ b/test/providers/tst_manifests/pip/pip_requirements_txt_ignore/expected_component_sbom.json @@ -13,13 +13,6 @@ } }, "components": [ - { - "name": "default-pip-root", - "version": "0.0.0", - "purl": "pkg:pypi/default-pip-root@0.0.0", - "type": "application", - "bom-ref": "pkg:pypi/default-pip-root@0.0.0" - }, { "name": "aiohappyeyeballs", "version": "2.6.1", diff --git a/test/providers/tst_manifests/pip/pip_requirements_txt_ignore/expected_stack_sbom.json b/test/providers/tst_manifests/pip/pip_requirements_txt_ignore/expected_stack_sbom.json index f44785d4..ed6e34a2 100644 --- a/test/providers/tst_manifests/pip/pip_requirements_txt_ignore/expected_stack_sbom.json +++ b/test/providers/tst_manifests/pip/pip_requirements_txt_ignore/expected_stack_sbom.json @@ -13,13 +13,6 @@ } }, "components": [ - { - "name": "default-pip-root", - "version": "0.0.0", - "purl": "pkg:pypi/default-pip-root@0.0.0", - "type": "application", - "bom-ref": "pkg:pypi/default-pip-root@0.0.0" - }, { "name": "aiohappyeyeballs", "version": "2.6.1", @@ -246,7 +239,7 @@ { "ref": "pkg:pypi/aiohappyeyeballs@2.6.1", "dependsOn": [] - }, + }, { "ref": "pkg:pypi/anyio@3.6.2", "dependsOn": [ diff --git a/test/providers/tst_manifests/pip/pip_requirements_txt_no_ignore/expected_component_sbom.json b/test/providers/tst_manifests/pip/pip_requirements_txt_no_ignore/expected_component_sbom.json index 94bbecf9..c57196fa 100644 --- a/test/providers/tst_manifests/pip/pip_requirements_txt_no_ignore/expected_component_sbom.json +++ b/test/providers/tst_manifests/pip/pip_requirements_txt_no_ignore/expected_component_sbom.json @@ -13,13 +13,6 @@ } }, "components": [ - { - "name": "default-pip-root", - "version": "0.0.0", - "purl": "pkg:pypi/default-pip-root@0.0.0", - "type": "application", - "bom-ref": "pkg:pypi/default-pip-root@0.0.0" - }, { "name": "anyio", "version": "3.6.2", diff --git a/test/providers/tst_manifests/pip/pip_requirements_txt_no_ignore/expected_stack_sbom.json b/test/providers/tst_manifests/pip/pip_requirements_txt_no_ignore/expected_stack_sbom.json index 007b9b3e..01186326 100644 --- a/test/providers/tst_manifests/pip/pip_requirements_txt_no_ignore/expected_stack_sbom.json +++ b/test/providers/tst_manifests/pip/pip_requirements_txt_no_ignore/expected_stack_sbom.json @@ -13,13 +13,6 @@ } }, "components": [ - { - "name": "default-pip-root", - "version": "0.0.0", - "purl": "pkg:pypi/default-pip-root@0.0.0", - "type": "application", - "bom-ref": "pkg:pypi/default-pip-root@0.0.0" - }, { "name": "anyio", "version": "3.6.2", diff --git a/test/providers/tst_manifests/pip/pip_requirements_virtual_env_txt_no_ignore/expected_stack_sbom.json b/test/providers/tst_manifests/pip/pip_requirements_virtual_env_txt_no_ignore/expected_stack_sbom.json index 007b9b3e..01186326 100644 --- a/test/providers/tst_manifests/pip/pip_requirements_virtual_env_txt_no_ignore/expected_stack_sbom.json +++ b/test/providers/tst_manifests/pip/pip_requirements_virtual_env_txt_no_ignore/expected_stack_sbom.json @@ -13,13 +13,6 @@ } }, "components": [ - { - "name": "default-pip-root", - "version": "0.0.0", - "purl": "pkg:pypi/default-pip-root@0.0.0", - "type": "application", - "bom-ref": "pkg:pypi/default-pip-root@0.0.0" - }, { "name": "anyio", "version": "3.6.2", diff --git a/test/providers/tst_manifests/pip/pip_requirements_virtual_env_with_ignore/expected_component_sbom.json b/test/providers/tst_manifests/pip/pip_requirements_virtual_env_with_ignore/expected_component_sbom.json index 72e34215..85239da2 100644 --- a/test/providers/tst_manifests/pip/pip_requirements_virtual_env_with_ignore/expected_component_sbom.json +++ b/test/providers/tst_manifests/pip/pip_requirements_virtual_env_with_ignore/expected_component_sbom.json @@ -1,203 +1,197 @@ { - "bomFormat" : "CycloneDX", - "specVersion" : "1.4", - "version" : 1, - "metadata" : { - "timestamp" : "2023-10-01T00:00:00.000Z", - "component" : { - "name" : "root", - "purl" : "pkg:pypi/root", - "type" : "application", - "bom-ref" : "pkg:pypi/root" + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-10-01T00:00:00.000Z", + "component": { + "name": "root", + "purl": "pkg:pypi/root", + "type": "application", + "bom-ref": "pkg:pypi/root" } }, - "components" : [ + "components": [ { - "name" : "root", - "purl" : "pkg:pypi/root", - "type" : "application", - "bom-ref" : "pkg:pypi/root" + "name": "anyio", + "version": "3.6.2", + "purl": "pkg:pypi/anyio@3.6.2", + "type": "library", + "bom-ref": "pkg:pypi/anyio@3.6.2" }, { - "name" : "anyio", - "version" : "3.6.2", - "purl" : "pkg:pypi/anyio@3.6.2", - "type" : "library", - "bom-ref" : "pkg:pypi/anyio@3.6.2" + "name": "asgiref", + "version": "3.4.1", + "purl": "pkg:pypi/asgiref@3.4.1", + "type": "library", + "bom-ref": "pkg:pypi/asgiref@3.4.1" }, { - "name" : "asgiref", - "version" : "3.4.1", - "purl" : "pkg:pypi/asgiref@3.4.1", - "type" : "library", - "bom-ref" : "pkg:pypi/asgiref@3.4.1" + "name": "beautifulsoup4", + "version": "4.12.2", + "purl": "pkg:pypi/beautifulsoup4@4.12.2", + "type": "library", + "bom-ref": "pkg:pypi/beautifulsoup4@4.12.2" }, { - "name" : "beautifulsoup4", - "version" : "4.12.2", - "purl" : "pkg:pypi/beautifulsoup4@4.12.2", - "type" : "library", - "bom-ref" : "pkg:pypi/beautifulsoup4@4.12.2" + "name": "certifi", + "version": "2023.7.22", + "purl": "pkg:pypi/certifi@2023.7.22", + "type": "library", + "bom-ref": "pkg:pypi/certifi@2023.7.22" }, { - "name" : "certifi", - "version" : "2023.7.22", - "purl" : "pkg:pypi/certifi@2023.7.22", - "type" : "library", - "bom-ref" : "pkg:pypi/certifi@2023.7.22" + "name": "chardet", + "version": "4.0.0", + "purl": "pkg:pypi/chardet@4.0.0", + "type": "library", + "bom-ref": "pkg:pypi/chardet@4.0.0" }, { - "name" : "chardet", - "version" : "4.0.0", - "purl" : "pkg:pypi/chardet@4.0.0", - "type" : "library", - "bom-ref" : "pkg:pypi/chardet@4.0.0" + "name": "contextlib2", + "version": "21.6.0", + "purl": "pkg:pypi/contextlib2@21.6.0", + "type": "library", + "bom-ref": "pkg:pypi/contextlib2@21.6.0" }, { - "name" : "contextlib2", - "version" : "21.6.0", - "purl" : "pkg:pypi/contextlib2@21.6.0", - "type" : "library", - "bom-ref" : "pkg:pypi/contextlib2@21.6.0" + "name": "fastapi", + "version": "0.75.1", + "purl": "pkg:pypi/fastapi@0.75.1", + "type": "library", + "bom-ref": "pkg:pypi/fastapi@0.75.1" }, { - "name" : "fastapi", - "version" : "0.75.1", - "purl" : "pkg:pypi/fastapi@0.75.1", - "type" : "library", - "bom-ref" : "pkg:pypi/fastapi@0.75.1" + "name": "flask", + "version": "2.0.3", + "purl": "pkg:pypi/flask@2.0.3", + "type": "library", + "bom-ref": "pkg:pypi/flask@2.0.3" }, { - "name" : "flask", - "version" : "2.0.3", - "purl" : "pkg:pypi/flask@2.0.3", - "type" : "library", - "bom-ref" : "pkg:pypi/flask@2.0.3" + "name": "h11", + "version": "0.13.0", + "purl": "pkg:pypi/h11@0.13.0", + "type": "library", + "bom-ref": "pkg:pypi/h11@0.13.0" }, { - "name" : "h11", - "version" : "0.13.0", - "purl" : "pkg:pypi/h11@0.13.0", - "type" : "library", - "bom-ref" : "pkg:pypi/h11@0.13.0" + "name": "idna", + "version": "2.10", + "purl": "pkg:pypi/idna@2.10", + "type": "library", + "bom-ref": "pkg:pypi/idna@2.10" }, { - "name" : "idna", - "version" : "2.10", - "purl" : "pkg:pypi/idna@2.10", - "type" : "library", - "bom-ref" : "pkg:pypi/idna@2.10" + "name": "immutables", + "version": "0.20", + "purl": "pkg:pypi/immutables@0.20", + "type": "library", + "bom-ref": "pkg:pypi/immutables@0.20" }, { - "name" : "immutables", - "version" : "0.20", - "purl" : "pkg:pypi/immutables@0.20", - "type" : "library", - "bom-ref" : "pkg:pypi/immutables@0.20" + "name": "importlib-metadata", + "version": "4.8.3", + "purl": "pkg:pypi/importlib-metadata@4.8.3", + "type": "library", + "bom-ref": "pkg:pypi/importlib-metadata@4.8.3" }, { - "name" : "importlib-metadata", - "version" : "4.8.3", - "purl" : "pkg:pypi/importlib-metadata@4.8.3", - "type" : "library", - "bom-ref" : "pkg:pypi/importlib-metadata@4.8.3" + "name": "itsdangerous", + "version": "2.0.1", + "purl": "pkg:pypi/itsdangerous@2.0.1", + "type": "library", + "bom-ref": "pkg:pypi/itsdangerous@2.0.1" }, { - "name" : "itsdangerous", - "version" : "2.0.1", - "purl" : "pkg:pypi/itsdangerous@2.0.1", - "type" : "library", - "bom-ref" : "pkg:pypi/itsdangerous@2.0.1" + "name": "jinja2", + "version": "3.0.3", + "purl": "pkg:pypi/jinja2@3.0.3", + "type": "library", + "bom-ref": "pkg:pypi/jinja2@3.0.3" }, { - "name" : "jinja2", - "version" : "3.0.3", - "purl" : "pkg:pypi/jinja2@3.0.3", - "type" : "library", - "bom-ref" : "pkg:pypi/jinja2@3.0.3" + "name": "markupsafe", + "version": "2.0.1", + "purl": "pkg:pypi/markupsafe@2.0.1", + "type": "library", + "bom-ref": "pkg:pypi/markupsafe@2.0.1" }, { - "name" : "markupsafe", - "version" : "2.0.1", - "purl" : "pkg:pypi/markupsafe@2.0.1", - "type" : "library", - "bom-ref" : "pkg:pypi/markupsafe@2.0.1" + "name": "requests", + "version": "2.25.1", + "purl": "pkg:pypi/requests@2.25.1", + "type": "library", + "bom-ref": "pkg:pypi/requests@2.25.1" }, { - "name" : "requests", - "version" : "2.25.1", - "purl" : "pkg:pypi/requests@2.25.1", - "type" : "library", - "bom-ref" : "pkg:pypi/requests@2.25.1" + "name": "six", + "version": "1.16.0", + "purl": "pkg:pypi/six@1.16.0", + "type": "library", + "bom-ref": "pkg:pypi/six@1.16.0" }, { - "name" : "six", - "version" : "1.16.0", - "purl" : "pkg:pypi/six@1.16.0", - "type" : "library", - "bom-ref" : "pkg:pypi/six@1.16.0" + "name": "sniffio", + "version": "1.2.0", + "purl": "pkg:pypi/sniffio@1.2.0", + "type": "library", + "bom-ref": "pkg:pypi/sniffio@1.2.0" }, { - "name" : "sniffio", - "version" : "1.2.0", - "purl" : "pkg:pypi/sniffio@1.2.0", - "type" : "library", - "bom-ref" : "pkg:pypi/sniffio@1.2.0" + "name": "soupsieve", + "version": "2.3.2.post1", + "purl": "pkg:pypi/soupsieve@2.3.2.post1", + "type": "library", + "bom-ref": "pkg:pypi/soupsieve@2.3.2.post1" }, { - "name" : "soupsieve", - "version" : "2.3.2.post1", - "purl" : "pkg:pypi/soupsieve@2.3.2.post1", - "type" : "library", - "bom-ref" : "pkg:pypi/soupsieve@2.3.2.post1" + "name": "starlette", + "version": "0.17.1", + "purl": "pkg:pypi/starlette@0.17.1", + "type": "library", + "bom-ref": "pkg:pypi/starlette@0.17.1" }, { - "name" : "starlette", - "version" : "0.17.1", - "purl" : "pkg:pypi/starlette@0.17.1", - "type" : "library", - "bom-ref" : "pkg:pypi/starlette@0.17.1" + "name": "typing-extensions", + "version": "4.1.1", + "purl": "pkg:pypi/typing-extensions@4.1.1", + "type": "library", + "bom-ref": "pkg:pypi/typing-extensions@4.1.1" }, { - "name" : "typing-extensions", - "version" : "4.1.1", - "purl" : "pkg:pypi/typing-extensions@4.1.1", - "type" : "library", - "bom-ref" : "pkg:pypi/typing-extensions@4.1.1" + "name": "urllib3", + "version": "1.26.16", + "purl": "pkg:pypi/urllib3@1.26.16", + "type": "library", + "bom-ref": "pkg:pypi/urllib3@1.26.16" }, { - "name" : "urllib3", - "version" : "1.26.16", - "purl" : "pkg:pypi/urllib3@1.26.16", - "type" : "library", - "bom-ref" : "pkg:pypi/urllib3@1.26.16" + "name": "uvicorn", + "version": "0.17.0", + "purl": "pkg:pypi/uvicorn@0.17.0", + "type": "library", + "bom-ref": "pkg:pypi/uvicorn@0.17.0" }, { - "name" : "uvicorn", - "version" : "0.17.0", - "purl" : "pkg:pypi/uvicorn@0.17.0", - "type" : "library", - "bom-ref" : "pkg:pypi/uvicorn@0.17.0" + "name": "werkzeug", + "version": "2.0.3", + "purl": "pkg:pypi/werkzeug@2.0.3", + "type": "library", + "bom-ref": "pkg:pypi/werkzeug@2.0.3" }, { - "name" : "werkzeug", - "version" : "2.0.3", - "purl" : "pkg:pypi/werkzeug@2.0.3", - "type" : "library", - "bom-ref" : "pkg:pypi/werkzeug@2.0.3" - }, - { - "name" : "zipp", - "version" : "3.6.0", - "purl" : "pkg:pypi/zipp@3.6.0", - "type" : "library", - "bom-ref" : "pkg:pypi/zipp@3.6.0" + "name": "zipp", + "version": "3.6.0", + "purl": "pkg:pypi/zipp@3.6.0", + "type": "library", + "bom-ref": "pkg:pypi/zipp@3.6.0" } ], - "dependencies" : [ + "dependencies": [ { - "ref" : "pkg:pypi/root", - "dependsOn" : [ + "ref": "pkg:pypi/root", + "dependsOn": [ "pkg:pypi/anyio@3.6.2", "pkg:pypi/asgiref@3.4.1", "pkg:pypi/beautifulsoup4@4.12.2", @@ -226,104 +220,104 @@ ] }, { - "ref" : "pkg:pypi/anyio@3.6.2", - "dependsOn" : [ ] + "ref": "pkg:pypi/anyio@3.6.2", + "dependsOn": [] }, { - "ref" : "pkg:pypi/asgiref@3.4.1", - "dependsOn" : [ ] + "ref": "pkg:pypi/asgiref@3.4.1", + "dependsOn": [] }, { - "ref" : "pkg:pypi/beautifulsoup4@4.12.2", - "dependsOn" : [ ] + "ref": "pkg:pypi/beautifulsoup4@4.12.2", + "dependsOn": [] }, { - "ref" : "pkg:pypi/certifi@2023.7.22", - "dependsOn" : [ ] + "ref": "pkg:pypi/certifi@2023.7.22", + "dependsOn": [] }, { - "ref" : "pkg:pypi/chardet@4.0.0", - "dependsOn" : [ ] + "ref": "pkg:pypi/chardet@4.0.0", + "dependsOn": [] }, { - "ref" : "pkg:pypi/contextlib2@21.6.0", - "dependsOn" : [ ] + "ref": "pkg:pypi/contextlib2@21.6.0", + "dependsOn": [] }, { - "ref" : "pkg:pypi/fastapi@0.75.1", - "dependsOn" : [ ] + "ref": "pkg:pypi/fastapi@0.75.1", + "dependsOn": [] }, { - "ref" : "pkg:pypi/flask@2.0.3", - "dependsOn" : [ ] + "ref": "pkg:pypi/flask@2.0.3", + "dependsOn": [] }, { - "ref" : "pkg:pypi/h11@0.13.0", - "dependsOn" : [ ] + "ref": "pkg:pypi/h11@0.13.0", + "dependsOn": [] }, { - "ref" : "pkg:pypi/idna@2.10", - "dependsOn" : [ ] + "ref": "pkg:pypi/idna@2.10", + "dependsOn": [] }, { - "ref" : "pkg:pypi/immutables@0.20", - "dependsOn" : [ ] + "ref": "pkg:pypi/immutables@0.20", + "dependsOn": [] }, { - "ref" : "pkg:pypi/importlib-metadata@4.8.3", - "dependsOn" : [ ] + "ref": "pkg:pypi/importlib-metadata@4.8.3", + "dependsOn": [] }, { - "ref" : "pkg:pypi/itsdangerous@2.0.1", - "dependsOn" : [ ] + "ref": "pkg:pypi/itsdangerous@2.0.1", + "dependsOn": [] }, { - "ref" : "pkg:pypi/jinja2@3.0.3", - "dependsOn" : [ ] + "ref": "pkg:pypi/jinja2@3.0.3", + "dependsOn": [] }, { - "ref" : "pkg:pypi/markupsafe@2.0.1", - "dependsOn" : [ ] + "ref": "pkg:pypi/markupsafe@2.0.1", + "dependsOn": [] }, { - "ref" : "pkg:pypi/requests@2.25.1", - "dependsOn" : [ ] + "ref": "pkg:pypi/requests@2.25.1", + "dependsOn": [] }, { - "ref" : "pkg:pypi/six@1.16.0", - "dependsOn" : [ ] + "ref": "pkg:pypi/six@1.16.0", + "dependsOn": [] }, { - "ref" : "pkg:pypi/sniffio@1.2.0", - "dependsOn" : [ ] + "ref": "pkg:pypi/sniffio@1.2.0", + "dependsOn": [] }, { - "ref" : "pkg:pypi/soupsieve@2.3.2.post1", - "dependsOn" : [ ] + "ref": "pkg:pypi/soupsieve@2.3.2.post1", + "dependsOn": [] }, { - "ref" : "pkg:pypi/starlette@0.17.1", - "dependsOn" : [ ] + "ref": "pkg:pypi/starlette@0.17.1", + "dependsOn": [] }, { - "ref" : "pkg:pypi/typing-extensions@4.1.1", - "dependsOn" : [ ] + "ref": "pkg:pypi/typing-extensions@4.1.1", + "dependsOn": [] }, { - "ref" : "pkg:pypi/urllib3@1.26.16", - "dependsOn" : [ ] + "ref": "pkg:pypi/urllib3@1.26.16", + "dependsOn": [] }, { - "ref" : "pkg:pypi/uvicorn@0.17.0", - "dependsOn" : [ ] + "ref": "pkg:pypi/uvicorn@0.17.0", + "dependsOn": [] }, { - "ref" : "pkg:pypi/werkzeug@2.0.3", - "dependsOn" : [ ] + "ref": "pkg:pypi/werkzeug@2.0.3", + "dependsOn": [] }, { - "ref" : "pkg:pypi/zipp@3.6.0", - "dependsOn" : [ ] + "ref": "pkg:pypi/zipp@3.6.0", + "dependsOn": [] } ] } diff --git a/test/providers/tst_manifests/pip/pip_requirements_virtual_env_with_ignore/expected_stack_sbom.json b/test/providers/tst_manifests/pip/pip_requirements_virtual_env_with_ignore/expected_stack_sbom.json index 42fff71c..61e8e437 100644 --- a/test/providers/tst_manifests/pip/pip_requirements_virtual_env_with_ignore/expected_stack_sbom.json +++ b/test/providers/tst_manifests/pip/pip_requirements_virtual_env_with_ignore/expected_stack_sbom.json @@ -13,13 +13,6 @@ } }, "components": [ - { - "name": "default-pip-root", - "version": "0.0.0", - "purl": "pkg:pypi/default-pip-root@0.0.0", - "type": "application", - "bom-ref": "pkg:pypi/default-pip-root@0.0.0" - }, { "name": "anyio", "version": "3.6.2", 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 index 18d40f59..3ac87b1a 100644 --- 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 @@ -3,2531 +3,2524 @@ "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" - } + "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" - } + { + "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": [] - } + { + "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/stack_expected_sbom.json b/test/providers/tst_manifests/pnpm/package_json_deps_without_exhortignore_object/stack_expected_sbom.json index ad479d00..f5d83d9e 100644 --- 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 @@ -1,1047 +1,1040 @@ { - "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" + "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" : [ + "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" : "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" : "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" : "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" : "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" : "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" }, { - "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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-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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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-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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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-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-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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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.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.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.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.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.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.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" : "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" : "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" }, { - "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" : "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" : "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" }, { - "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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-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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" : "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" + "name": "undefsafe", + "version": "2.0.5", + "purl": "pkg:npm/undefsafe@2.0.5", + "type": "library", + "bom-ref": "pkg:npm/undefsafe@2.0.5" } ], - "dependencies" : [ + "dependencies": [ { - "ref" : "pkg:npm/backend@1.0.0", - "dependsOn" : [ + "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", @@ -1054,8 +1047,8 @@ ] }, { - "ref" : "pkg:npm/%40hapi/joi@17.1.1", - "dependsOn" : [ + "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", @@ -1064,66 +1057,66 @@ ] }, { - "ref" : "pkg:npm/%40hapi/address@4.1.0", - "dependsOn" : [ + "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/hoek@9.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40hapi/formula@2.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/%40hapi/formula@2.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40hapi/pinpoint@2.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/%40hapi/pinpoint@2.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40hapi/topo@5.1.0", - "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" : [ + "ref": "pkg:npm/axios@0.19.2", + "dependsOn": [ "pkg:npm/follow-redirects@1.5.10" ] }, { - "ref" : "pkg:npm/follow-redirects@1.5.10", - "dependsOn" : [ + "ref": "pkg:npm/follow-redirects@1.5.10", + "dependsOn": [ "pkg:npm/debug@3.1.0" ] }, { - "ref" : "pkg:npm/debug@3.1.0", - "dependsOn" : [ + "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/ms@2.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/backend@0.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/backend@0.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/bcryptjs@2.4.3", - "dependsOn" : [ ] + "ref": "pkg:npm/bcryptjs@2.4.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/dotenv@8.6.0", - "dependsOn" : [ ] + "ref": "pkg:npm/dotenv@8.6.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/express@4.18.2", - "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", @@ -1158,33 +1151,33 @@ ] }, { - "ref" : "pkg:npm/accepts@1.3.8", - "dependsOn" : [ + "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" : [ + "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/mime-db@1.52.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/negotiator@0.6.3", - "dependsOn" : [ ] + "ref": "pkg:npm/negotiator@0.6.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/array-flatten@1.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/array-flatten@1.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/body-parser@1.20.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", @@ -1200,30 +1193,30 @@ ] }, { - "ref" : "pkg:npm/bytes@3.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/bytes@3.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/content-type@1.0.5", - "dependsOn" : [ ] + "ref": "pkg:npm/content-type@1.0.5", + "dependsOn": [] }, { - "ref" : "pkg:npm/debug@2.6.9", - "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/depd@2.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/destroy@1.2.0", - "dependsOn" : [ ] + "ref": "pkg:npm/destroy@1.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/http-errors@2.0.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", @@ -1232,30 +1225,30 @@ ] }, { - "ref" : "pkg:npm/iconv-lite@0.4.24", - "dependsOn" : [ + "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/safer-buffer@2.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/on-finished@2.4.1", - "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" : [ + "ref": "pkg:npm/qs@6.11.0", + "dependsOn": [ "pkg:npm/side-channel@1.0.4" ] }, { - "ref" : "pkg:npm/raw-body@2.5.1", - "dependsOn" : [ + "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", @@ -1263,49 +1256,49 @@ ] }, { - "ref" : "pkg:npm/unpipe@1.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/unpipe@1.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/type-is@1.6.18", - "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" : [ + "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/safe-buffer@5.2.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/cookie-signature@1.0.6", - "dependsOn" : [ ] + "ref": "pkg:npm/cookie-signature@1.0.6", + "dependsOn": [] }, { - "ref" : "pkg:npm/cookie@0.5.0", - "dependsOn" : [ ] + "ref": "pkg:npm/cookie@0.5.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/encodeurl@1.0.2", - "dependsOn" : [ ] + "ref": "pkg:npm/encodeurl@1.0.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/escape-html@1.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/escape-html@1.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/etag@1.8.1", - "dependsOn" : [ ] + "ref": "pkg:npm/etag@1.8.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/finalhandler@1.2.0", - "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", @@ -1316,82 +1309,82 @@ ] }, { - "ref" : "pkg:npm/parseurl@1.3.3", - "dependsOn" : [ ] + "ref": "pkg:npm/parseurl@1.3.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/statuses@2.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/statuses@2.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/fresh@0.5.2", - "dependsOn" : [ ] + "ref": "pkg:npm/fresh@0.5.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/inherits@2.0.4", - "dependsOn" : [ ] + "ref": "pkg:npm/inherits@2.0.4", + "dependsOn": [] }, { - "ref" : "pkg:npm/setprototypeof@1.2.0", - "dependsOn" : [ ] + "ref": "pkg:npm/setprototypeof@1.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/toidentifier@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/toidentifier@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/merge-descriptors@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/merge-descriptors@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/methods@1.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/methods@1.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/ee-first@1.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/ee-first@1.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/path-to-regexp@0.1.7", - "dependsOn" : [ ] + "ref": "pkg:npm/path-to-regexp@0.1.7", + "dependsOn": [] }, { - "ref" : "pkg:npm/proxy-addr@2.0.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/forwarded@0.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/ipaddr.js@1.9.1", - "dependsOn" : [ ] + "ref": "pkg:npm/ipaddr.js@1.9.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/side-channel@1.0.4", - "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" : [ + "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/function-bind@1.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/get-intrinsic@1.2.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", @@ -1399,30 +1392,30 @@ ] }, { - "ref" : "pkg:npm/has-proto@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/has-proto@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/has-symbols@1.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/has-symbols@1.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/has@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/object-inspect@1.12.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/range-parser@1.2.1", - "dependsOn" : [ ] + "ref": "pkg:npm/range-parser@1.2.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/send@0.18.0", - "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", @@ -1439,16 +1432,16 @@ ] }, { - "ref" : "pkg:npm/mime@1.6.0", - "dependsOn" : [ ] + "ref": "pkg:npm/mime@1.6.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/ms@2.1.3", - "dependsOn" : [ ] + "ref": "pkg:npm/ms@2.1.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/serve-static@1.15.0", - "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", @@ -1456,20 +1449,20 @@ ] }, { - "ref" : "pkg:npm/media-typer@0.3.0", - "dependsOn" : [ ] + "ref": "pkg:npm/media-typer@0.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/utils-merge@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/utils-merge@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/vary@1.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/vary@1.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/jsonwebtoken@8.5.1", - "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", @@ -1483,65 +1476,65 @@ ] }, { - "ref" : "pkg:npm/jws@3.2.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" : [ + "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/buffer-equal-constant-time@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/ecdsa-sig-formatter@1.0.11", - "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.includes@4.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isboolean@3.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isboolean@3.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isinteger@4.0.4", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isinteger@4.0.4", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isnumber@3.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isnumber@3.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isplainobject@4.0.6", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isplainobject@4.0.6", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isstring@4.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isstring@4.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.once@4.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.once@4.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/semver@5.7.2", - "dependsOn" : [ ] + "ref": "pkg:npm/semver@5.7.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/mongoose@5.13.20", - "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", @@ -1559,33 +1552,33 @@ ] }, { - "ref" : "pkg:npm/%40types/bson@4.0.5", - "dependsOn" : [ + "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/node@20.4.8", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40types/mongodb@3.6.20", - "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/bson@1.1.6", + "dependsOn": [] }, { - "ref" : "pkg:npm/kareem@2.3.2", - "dependsOn" : [ ] + "ref": "pkg:npm/kareem@2.3.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/mongodb@3.7.4", - "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", @@ -1595,15 +1588,15 @@ ] }, { - "ref" : "pkg:npm/bl@2.2.1", - "dependsOn" : [ + "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" : [ + "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", @@ -1614,74 +1607,74 @@ ] }, { - "ref" : "pkg:npm/core-util-is@1.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/core-util-is@1.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/isarray@1.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/isarray@1.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/process-nextick-args@2.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/process-nextick-args@2.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/safe-buffer@5.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/safe-buffer@5.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/string_decoder@1.1.1", - "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/util-deprecate@1.0.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/denque@1.5.1", - "dependsOn" : [ ] + "ref": "pkg:npm/denque@1.5.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/optional-require@1.1.8", - "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/require-at@1.0.6", + "dependsOn": [] }, { - "ref" : "pkg:npm/saslprep@1.0.3", - "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" : [ + "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/memory-pager@1.5.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/mongoose-legacy-pluralize@1.0.2", - "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/mpath@0.8.4", + "dependsOn": [] }, { - "ref" : "pkg:npm/mquery@3.2.5", - "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", @@ -1690,32 +1683,32 @@ ] }, { - "ref" : "pkg:npm/bluebird@3.5.1", - "dependsOn" : [ ] + "ref": "pkg:npm/bluebird@3.5.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/regexp-clone@1.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/regexp-clone@1.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/sliced@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/sliced@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/ms@2.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/ms@2.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/optional-require@1.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/optional-require@1.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/sift@13.5.2", - "dependsOn" : [ ] + "ref": "pkg:npm/sift@13.5.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/nodemon@2.0.22", - "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", @@ -1729,8 +1722,8 @@ ] }, { - "ref" : "pkg:npm/chokidar@3.5.3", - "dependsOn" : [ + "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", @@ -1742,152 +1735,152 @@ ] }, { - "ref" : "pkg:npm/anymatch@3.1.3", - "dependsOn" : [ + "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/normalize-path@3.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/picomatch@2.3.1", - "dependsOn" : [ ] + "ref": "pkg:npm/picomatch@2.3.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/braces@3.0.2", - "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" : [ + "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" : [ + "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/is-number@7.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/fsevents@2.3.2", - "dependsOn" : [ ] + "ref": "pkg:npm/fsevents@2.3.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/glob-parent@5.1.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" : [ + "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" : [ + "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/binary-extensions@2.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/is-extglob@2.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/is-extglob@2.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/readdirp@3.6.0", - "dependsOn" : [ + "ref": "pkg:npm/readdirp@3.6.0", + "dependsOn": [ "pkg:npm/picomatch@2.3.1" ] }, { - "ref" : "pkg:npm/debug@3.2.7", - "dependsOn" : [ + "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/ignore-by-default@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/minimatch@3.1.2", - "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" : [ + "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/balanced-match@1.0.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/concat-map@0.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/concat-map@0.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/pstree.remy@1.1.8", - "dependsOn" : [ ] + "ref": "pkg:npm/pstree.remy@1.1.8", + "dependsOn": [] }, { - "ref" : "pkg:npm/simple-update-notifier@1.1.0", - "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/semver@7.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/supports-color@5.5.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/has-flag@3.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/touch@3.1.0", - "dependsOn" : [ + "ref": "pkg:npm/touch@3.1.0", + "dependsOn": [ "pkg:npm/nopt@1.0.10" ] }, { - "ref" : "pkg:npm/nopt@1.0.10", - "dependsOn" : [ + "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/abbrev@1.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/undefsafe@2.0.5", - "dependsOn" : [ ] + "ref": "pkg:npm/undefsafe@2.0.5", + "dependsOn": [] } ] } diff --git a/test/providers/tst_manifests/yarn-berry/package_json_deps_with_exhortignore_object/stack_expected_sbom.json b/test/providers/tst_manifests/yarn-berry/package_json_deps_with_exhortignore_object/stack_expected_sbom.json index e9f67efc..8d323ac2 100644 --- a/test/providers/tst_manifests/yarn-berry/package_json_deps_with_exhortignore_object/stack_expected_sbom.json +++ b/test/providers/tst_manifests/yarn-berry/package_json_deps_with_exhortignore_object/stack_expected_sbom.json @@ -13,13 +13,6 @@ } }, "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": "address", @@ -3808,4 +3801,4 @@ "dependsOn": [] } ] -} \ No newline at end of file +} diff --git a/test/providers/tst_manifests/yarn-berry/package_json_deps_without_exhortignore_object/stack_expected_sbom.json b/test/providers/tst_manifests/yarn-berry/package_json_deps_without_exhortignore_object/stack_expected_sbom.json index 8b36a13f..8f75bc10 100644 --- a/test/providers/tst_manifests/yarn-berry/package_json_deps_without_exhortignore_object/stack_expected_sbom.json +++ b/test/providers/tst_manifests/yarn-berry/package_json_deps_without_exhortignore_object/stack_expected_sbom.json @@ -1,1731 +1,1724 @@ { - "bomFormat" : "CycloneDX", - "specVersion" : "1.4", - "version" : 1, - "metadata" : { - "timestamp" : "2025-04-16T14:36:52Z", - "component" : { - "type" : "application", - "bom-ref" : "pkg:npm/backend@1.0.0", - "name" : "backend", - "version" : "1.0.0", - "purl" : "pkg:npm/backend@1.0.0" + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2025-04-16T14:36:52Z", + "component": { + "type": "application", + "bom-ref": "pkg:npm/backend@1.0.0", + "name": "backend", + "version": "1.0.0", + "purl": "pkg:npm/backend@1.0.0" } }, - "components" : [ + "components": [ { - "type" : "application", - "bom-ref" : "pkg:npm/backend@1.0.0", - "name" : "backend", - "version" : "1.0.0", - "purl" : "pkg:npm/backend@1.0.0" + "type": "library", + "bom-ref": "pkg:npm/%40hapi/address@4.1.0", + "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" : "address", - "version" : "4.1.0", - "purl" : "pkg:npm/%40hapi/address@4.1.0" + "type": "library", + "bom-ref": "pkg:npm/%40hapi/hoek@9.3.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" : "hoek", - "version" : "9.3.0", - "purl" : "pkg:npm/%40hapi/hoek@9.3.0" + "type": "library", + "bom-ref": "pkg:npm/%40hapi/joi@17.1.1", + "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" : "joi", - "version" : "17.1.1", - "purl" : "pkg:npm/%40hapi/joi@17.1.1" + "type": "library", + "bom-ref": "pkg:npm/%40hapi/formula@2.0.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" : "formula", - "version" : "2.0.0", - "purl" : "pkg:npm/%40hapi/formula@2.0.0" + "type": "library", + "bom-ref": "pkg:npm/%40hapi/pinpoint@2.0.1", + "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" : "pinpoint", - "version" : "2.0.1", - "purl" : "pkg:npm/%40hapi/pinpoint@2.0.1" + "type": "library", + "bom-ref": "pkg:npm/%40hapi/topo@5.1.0", + "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", - "group" : "@hapi", - "name" : "topo", - "version" : "5.1.0", - "purl" : "pkg:npm/%40hapi/topo@5.1.0" + "type": "library", + "bom-ref": "pkg:npm/%40isaacs/cliui@8.0.2", + "group": "@isaacs", + "name": "cliui", + "version": "8.0.2", + "purl": "pkg:npm/%40isaacs/cliui@8.0.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/%40isaacs/cliui@8.0.2", - "group" : "@isaacs", - "name" : "cliui", - "version" : "8.0.2", - "purl" : "pkg:npm/%40isaacs/cliui@8.0.2" + "type": "library", + "bom-ref": "pkg:npm/string-width@4.2.3", + "name": "string-width", + "version": "4.2.3", + "purl": "pkg:npm/string-width@4.2.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/string-width@4.2.3", - "name" : "string-width", - "version" : "4.2.3", - "purl" : "pkg:npm/string-width@4.2.3" + "type": "library", + "bom-ref": "pkg:npm/string-width@5.1.2", + "name": "string-width", + "version": "5.1.2", + "purl": "pkg:npm/string-width@5.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/string-width@5.1.2", - "name" : "string-width", - "version" : "5.1.2", - "purl" : "pkg:npm/string-width@5.1.2" + "type": "library", + "bom-ref": "pkg:npm/strip-ansi@6.0.1", + "name": "strip-ansi", + "version": "6.0.1", + "purl": "pkg:npm/strip-ansi@6.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/strip-ansi@6.0.1", - "name" : "strip-ansi", - "version" : "6.0.1", - "purl" : "pkg:npm/strip-ansi@6.0.1" + "type": "library", + "bom-ref": "pkg:npm/strip-ansi@7.1.0", + "name": "strip-ansi", + "version": "7.1.0", + "purl": "pkg:npm/strip-ansi@7.1.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/strip-ansi@7.1.0", - "name" : "strip-ansi", - "version" : "7.1.0", - "purl" : "pkg:npm/strip-ansi@7.1.0" + "type": "library", + "bom-ref": "pkg:npm/wrap-ansi@7.0.0", + "name": "wrap-ansi", + "version": "7.0.0", + "purl": "pkg:npm/wrap-ansi@7.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/wrap-ansi@7.0.0", - "name" : "wrap-ansi", - "version" : "7.0.0", - "purl" : "pkg:npm/wrap-ansi@7.0.0" + "type": "library", + "bom-ref": "pkg:npm/wrap-ansi@8.1.0", + "name": "wrap-ansi", + "version": "8.1.0", + "purl": "pkg:npm/wrap-ansi@8.1.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/wrap-ansi@8.1.0", - "name" : "wrap-ansi", - "version" : "8.1.0", - "purl" : "pkg:npm/wrap-ansi@8.1.0" + "type": "library", + "bom-ref": "pkg:npm/%40isaacs/fs-minipass@4.0.1", + "group": "@isaacs", + "name": "fs-minipass", + "version": "4.0.1", + "purl": "pkg:npm/%40isaacs/fs-minipass@4.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/%40isaacs/fs-minipass@4.0.1", - "group" : "@isaacs", - "name" : "fs-minipass", - "version" : "4.0.1", - "purl" : "pkg:npm/%40isaacs/fs-minipass@4.0.1" + "type": "library", + "bom-ref": "pkg:npm/minipass@7.1.2", + "name": "minipass", + "version": "7.1.2", + "purl": "pkg:npm/minipass@7.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/minipass@7.1.2", - "name" : "minipass", - "version" : "7.1.2", - "purl" : "pkg:npm/minipass@7.1.2" + "type": "library", + "bom-ref": "pkg:npm/%40npmcli/agent@3.0.0", + "group": "@npmcli", + "name": "agent", + "version": "3.0.0", + "purl": "pkg:npm/%40npmcli/agent@3.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/%40npmcli/agent@3.0.0", - "group" : "@npmcli", - "name" : "agent", - "version" : "3.0.0", - "purl" : "pkg:npm/%40npmcli/agent@3.0.0" + "type": "library", + "bom-ref": "pkg:npm/agent-base@7.1.3", + "name": "agent-base", + "version": "7.1.3", + "purl": "pkg:npm/agent-base@7.1.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/agent-base@7.1.3", - "name" : "agent-base", - "version" : "7.1.3", - "purl" : "pkg:npm/agent-base@7.1.3" + "type": "library", + "bom-ref": "pkg:npm/http-proxy-agent@7.0.2", + "name": "http-proxy-agent", + "version": "7.0.2", + "purl": "pkg:npm/http-proxy-agent@7.0.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/http-proxy-agent@7.0.2", - "name" : "http-proxy-agent", - "version" : "7.0.2", - "purl" : "pkg:npm/http-proxy-agent@7.0.2" + "type": "library", + "bom-ref": "pkg:npm/https-proxy-agent@7.0.6", + "name": "https-proxy-agent", + "version": "7.0.6", + "purl": "pkg:npm/https-proxy-agent@7.0.6" }, { - "type" : "library", - "bom-ref" : "pkg:npm/https-proxy-agent@7.0.6", - "name" : "https-proxy-agent", - "version" : "7.0.6", - "purl" : "pkg:npm/https-proxy-agent@7.0.6" + "type": "library", + "bom-ref": "pkg:npm/lru-cache@10.4.3", + "name": "lru-cache", + "version": "10.4.3", + "purl": "pkg:npm/lru-cache@10.4.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/lru-cache@10.4.3", - "name" : "lru-cache", - "version" : "10.4.3", - "purl" : "pkg:npm/lru-cache@10.4.3" + "type": "library", + "bom-ref": "pkg:npm/socks-proxy-agent@8.0.5", + "name": "socks-proxy-agent", + "version": "8.0.5", + "purl": "pkg:npm/socks-proxy-agent@8.0.5" }, { - "type" : "library", - "bom-ref" : "pkg:npm/socks-proxy-agent@8.0.5", - "name" : "socks-proxy-agent", - "version" : "8.0.5", - "purl" : "pkg:npm/socks-proxy-agent@8.0.5" + "type": "library", + "bom-ref": "pkg:npm/%40npmcli/fs@4.0.0", + "group": "@npmcli", + "name": "fs", + "version": "4.0.0", + "purl": "pkg:npm/%40npmcli/fs@4.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/%40npmcli/fs@4.0.0", - "group" : "@npmcli", - "name" : "fs", - "version" : "4.0.0", - "purl" : "pkg:npm/%40npmcli/fs@4.0.0" + "type": "library", + "bom-ref": "pkg:npm/semver@7.7.1", + "name": "semver", + "version": "7.7.1", + "purl": "pkg:npm/semver@7.7.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/semver@7.7.1", - "name" : "semver", - "version" : "7.7.1", - "purl" : "pkg:npm/semver@7.7.1" + "type": "library", + "bom-ref": "pkg:npm/%40types/bson@4.0.5", + "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" : "bson", - "version" : "4.0.5", - "purl" : "pkg:npm/%40types/bson@4.0.5" + "type": "library", + "bom-ref": "pkg:npm/%40types/node@22.14.1", + "group": "@types", + "name": "node", + "version": "22.14.1", + "purl": "pkg:npm/%40types/node@22.14.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/%40types/node@22.14.1", - "group" : "@types", - "name" : "node", - "version" : "22.14.1", - "purl" : "pkg:npm/%40types/node@22.14.1" + "type": "library", + "bom-ref": "pkg:npm/%40types/mongodb@3.6.20", + "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", - "group" : "@types", - "name" : "mongodb", - "version" : "3.6.20", - "purl" : "pkg:npm/%40types/mongodb@3.6.20" + "type": "library", + "bom-ref": "pkg:npm/undici-types@6.21.0", + "name": "undici-types", + "version": "6.21.0", + "purl": "pkg:npm/undici-types@6.21.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/undici-types@6.21.0", - "name" : "undici-types", - "version" : "6.21.0", - "purl" : "pkg:npm/undici-types@6.21.0" + "type": "library", + "bom-ref": "pkg:npm/accepts@1.3.8", + "name": "accepts", + "version": "1.3.8", + "purl": "pkg:npm/accepts@1.3.8" }, { - "type" : "library", - "bom-ref" : "pkg:npm/accepts@1.3.8", - "name" : "accepts", - "version" : "1.3.8", - "purl" : "pkg:npm/accepts@1.3.8" + "type": "library", + "bom-ref": "pkg:npm/mime-types@2.1.35", + "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-types", - "version" : "2.1.35", - "purl" : "pkg:npm/mime-types@2.1.35" + "type": "library", + "bom-ref": "pkg:npm/negotiator@0.6.3", + "name": "negotiator", + "version": "0.6.3", + "purl": "pkg:npm/negotiator@0.6.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/negotiator@0.6.3", - "name" : "negotiator", - "version" : "0.6.3", - "purl" : "pkg:npm/negotiator@0.6.3" + "type": "library", + "bom-ref": "pkg:npm/ansi-styles@4.3.0", + "name": "ansi-styles", + "version": "4.3.0", + "purl": "pkg:npm/ansi-styles@4.3.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/ansi-styles@4.3.0", - "name" : "ansi-styles", - "version" : "4.3.0", - "purl" : "pkg:npm/ansi-styles@4.3.0" + "type": "library", + "bom-ref": "pkg:npm/color-convert@2.0.1", + "name": "color-convert", + "version": "2.0.1", + "purl": "pkg:npm/color-convert@2.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/color-convert@2.0.1", - "name" : "color-convert", - "version" : "2.0.1", - "purl" : "pkg:npm/color-convert@2.0.1" + "type": "library", + "bom-ref": "pkg:npm/anymatch@3.1.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" : "anymatch", - "version" : "3.1.3", - "purl" : "pkg:npm/anymatch@3.1.3" + "type": "library", + "bom-ref": "pkg:npm/normalize-path@3.0.0", + "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" : "normalize-path", - "version" : "3.0.0", - "purl" : "pkg:npm/normalize-path@3.0.0" + "type": "library", + "bom-ref": "pkg:npm/picomatch@2.3.1", + "name": "picomatch", + "version": "2.3.1", + "purl": "pkg:npm/picomatch@2.3.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/picomatch@2.3.1", - "name" : "picomatch", - "version" : "2.3.1", - "purl" : "pkg:npm/picomatch@2.3.1" + "type": "library", + "bom-ref": "pkg:npm/axios@0.19.2", + "name": "axios", + "version": "0.19.2", + "purl": "pkg:npm/axios@0.19.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/axios@0.19.2", - "name" : "axios", - "version" : "0.19.2", - "purl" : "pkg:npm/axios@0.19.2" + "type": "library", + "bom-ref": "pkg:npm/follow-redirects@1.5.10", + "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" : "follow-redirects", - "version" : "1.5.10", - "purl" : "pkg:npm/follow-redirects@1.5.10" + "type": "library", + "bom-ref": "pkg:npm/backend@0.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" : "backend", - "version" : "0.0.0", - "purl" : "pkg:npm/backend@0.0.0" + "type": "library", + "bom-ref": "pkg:npm/bcryptjs@2.4.3", + "name": "bcryptjs", + "version": "2.4.3", + "purl": "pkg:npm/bcryptjs@2.4.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/bcryptjs@2.4.3", - "name" : "bcryptjs", - "version" : "2.4.3", - "purl" : "pkg:npm/bcryptjs@2.4.3" + "type": "library", + "bom-ref": "pkg:npm/dotenv@8.6.0", + "name": "dotenv", + "version": "8.6.0", + "purl": "pkg:npm/dotenv@8.6.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/dotenv@8.6.0", - "name" : "dotenv", - "version" : "8.6.0", - "purl" : "pkg:npm/dotenv@8.6.0" + "type": "library", + "bom-ref": "pkg:npm/express@4.21.2", + "name": "express", + "version": "4.21.2", + "purl": "pkg:npm/express@4.21.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/express@4.21.2", - "name" : "express", - "version" : "4.21.2", - "purl" : "pkg:npm/express@4.21.2" + "type": "library", + "bom-ref": "pkg:npm/jsonwebtoken@8.5.1", + "name": "jsonwebtoken", + "version": "8.5.1", + "purl": "pkg:npm/jsonwebtoken@8.5.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/jsonwebtoken@8.5.1", - "name" : "jsonwebtoken", - "version" : "8.5.1", - "purl" : "pkg:npm/jsonwebtoken@8.5.1" + "type": "library", + "bom-ref": "pkg:npm/mongoose@5.13.23", + "name": "mongoose", + "version": "5.13.23", + "purl": "pkg:npm/mongoose@5.13.23" }, { - "type" : "library", - "bom-ref" : "pkg:npm/mongoose@5.13.23", - "name" : "mongoose", - "version" : "5.13.23", - "purl" : "pkg:npm/mongoose@5.13.23" + "type": "library", + "bom-ref": "pkg:npm/nodemon@2.0.22", + "name": "nodemon", + "version": "2.0.22", + "purl": "pkg:npm/nodemon@2.0.22" }, { - "type" : "library", - "bom-ref" : "pkg:npm/nodemon@2.0.22", - "name" : "nodemon", - "version" : "2.0.22", - "purl" : "pkg:npm/nodemon@2.0.22" + "type": "library", + "bom-ref": "pkg:npm/bl@2.2.1", + "name": "bl", + "version": "2.2.1", + "purl": "pkg:npm/bl@2.2.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/bl@2.2.1", - "name" : "bl", - "version" : "2.2.1", - "purl" : "pkg:npm/bl@2.2.1" + "type": "library", + "bom-ref": "pkg:npm/readable-stream@2.3.8", + "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" : "readable-stream", - "version" : "2.3.8", - "purl" : "pkg:npm/readable-stream@2.3.8" + "type": "library", + "bom-ref": "pkg:npm/safe-buffer@5.2.1", + "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" : "safe-buffer", - "version" : "5.2.1", - "purl" : "pkg:npm/safe-buffer@5.2.1" + "type": "library", + "bom-ref": "pkg:npm/body-parser@1.20.3", + "name": "body-parser", + "version": "1.20.3", + "purl": "pkg:npm/body-parser@1.20.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/body-parser@1.20.3", - "name" : "body-parser", - "version" : "1.20.3", - "purl" : "pkg:npm/body-parser@1.20.3" + "type": "library", + "bom-ref": "pkg:npm/bytes@3.1.2", + "name": "bytes", + "version": "3.1.2", + "purl": "pkg:npm/bytes@3.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/bytes@3.1.2", - "name" : "bytes", - "version" : "3.1.2", - "purl" : "pkg:npm/bytes@3.1.2" + "type": "library", + "bom-ref": "pkg:npm/content-type@1.0.5", + "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" : "content-type", - "version" : "1.0.5", - "purl" : "pkg:npm/content-type@1.0.5" + "type": "library", + "bom-ref": "pkg:npm/debug@2.6.9", + "name": "debug", + "version": "2.6.9", + "purl": "pkg:npm/debug@2.6.9" }, { - "type" : "library", - "bom-ref" : "pkg:npm/debug@2.6.9", - "name" : "debug", - "version" : "2.6.9", - "purl" : "pkg:npm/debug@2.6.9" + "type": "library", + "bom-ref": "pkg:npm/depd@2.0.0", + "name": "depd", + "version": "2.0.0", + "purl": "pkg:npm/depd@2.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/depd@2.0.0", - "name" : "depd", - "version" : "2.0.0", - "purl" : "pkg:npm/depd@2.0.0" + "type": "library", + "bom-ref": "pkg:npm/destroy@1.2.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" : "destroy", - "version" : "1.2.0", - "purl" : "pkg:npm/destroy@1.2.0" + "type": "library", + "bom-ref": "pkg:npm/http-errors@2.0.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" : "http-errors", - "version" : "2.0.0", - "purl" : "pkg:npm/http-errors@2.0.0" + "type": "library", + "bom-ref": "pkg:npm/iconv-lite@0.4.24", + "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" : "iconv-lite", - "version" : "0.4.24", - "purl" : "pkg:npm/iconv-lite@0.4.24" + "type": "library", + "bom-ref": "pkg:npm/on-finished@2.4.1", + "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" : "on-finished", - "version" : "2.4.1", - "purl" : "pkg:npm/on-finished@2.4.1" + "type": "library", + "bom-ref": "pkg:npm/qs@6.13.0", + "name": "qs", + "version": "6.13.0", + "purl": "pkg:npm/qs@6.13.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/qs@6.13.0", - "name" : "qs", - "version" : "6.13.0", - "purl" : "pkg:npm/qs@6.13.0" + "type": "library", + "bom-ref": "pkg:npm/raw-body@2.5.2", + "name": "raw-body", + "version": "2.5.2", + "purl": "pkg:npm/raw-body@2.5.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/raw-body@2.5.2", - "name" : "raw-body", - "version" : "2.5.2", - "purl" : "pkg:npm/raw-body@2.5.2" + "type": "library", + "bom-ref": "pkg:npm/type-is@1.6.18", + "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" : "type-is", - "version" : "1.6.18", - "purl" : "pkg:npm/type-is@1.6.18" + "type": "library", + "bom-ref": "pkg:npm/unpipe@1.0.0", + "name": "unpipe", + "version": "1.0.0", + "purl": "pkg:npm/unpipe@1.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/unpipe@1.0.0", - "name" : "unpipe", - "version" : "1.0.0", - "purl" : "pkg:npm/unpipe@1.0.0" + "type": "library", + "bom-ref": "pkg:npm/brace-expansion@1.1.11", + "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" : "brace-expansion", - "version" : "1.1.11", - "purl" : "pkg:npm/brace-expansion@1.1.11" + "type": "library", + "bom-ref": "pkg:npm/balanced-match@1.0.2", + "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" : "balanced-match", - "version" : "1.0.2", - "purl" : "pkg:npm/balanced-match@1.0.2" + "type": "library", + "bom-ref": "pkg:npm/concat-map@0.0.1", + "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" : "concat-map", - "version" : "0.0.1", - "purl" : "pkg:npm/concat-map@0.0.1" + "type": "library", + "bom-ref": "pkg:npm/brace-expansion@2.0.1", + "name": "brace-expansion", + "version": "2.0.1", + "purl": "pkg:npm/brace-expansion@2.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/brace-expansion@2.0.1", - "name" : "brace-expansion", - "version" : "2.0.1", - "purl" : "pkg:npm/brace-expansion@2.0.1" + "type": "library", + "bom-ref": "pkg:npm/braces@3.0.3", + "name": "braces", + "version": "3.0.3", + "purl": "pkg:npm/braces@3.0.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/braces@3.0.3", - "name" : "braces", - "version" : "3.0.3", - "purl" : "pkg:npm/braces@3.0.3" + "type": "library", + "bom-ref": "pkg:npm/fill-range@7.1.1", + "name": "fill-range", + "version": "7.1.1", + "purl": "pkg:npm/fill-range@7.1.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/fill-range@7.1.1", - "name" : "fill-range", - "version" : "7.1.1", - "purl" : "pkg:npm/fill-range@7.1.1" + "type": "library", + "bom-ref": "pkg:npm/cacache@19.0.1", + "name": "cacache", + "version": "19.0.1", + "purl": "pkg:npm/cacache@19.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/cacache@19.0.1", - "name" : "cacache", - "version" : "19.0.1", - "purl" : "pkg:npm/cacache@19.0.1" + "type": "library", + "bom-ref": "pkg:npm/fs-minipass@3.0.3", + "name": "fs-minipass", + "version": "3.0.3", + "purl": "pkg:npm/fs-minipass@3.0.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/fs-minipass@3.0.3", - "name" : "fs-minipass", - "version" : "3.0.3", - "purl" : "pkg:npm/fs-minipass@3.0.3" + "type": "library", + "bom-ref": "pkg:npm/glob@10.4.5", + "name": "glob", + "version": "10.4.5", + "purl": "pkg:npm/glob@10.4.5" }, { - "type" : "library", - "bom-ref" : "pkg:npm/glob@10.4.5", - "name" : "glob", - "version" : "10.4.5", - "purl" : "pkg:npm/glob@10.4.5" + "type": "library", + "bom-ref": "pkg:npm/minipass-collect@2.0.1", + "name": "minipass-collect", + "version": "2.0.1", + "purl": "pkg:npm/minipass-collect@2.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/minipass-collect@2.0.1", - "name" : "minipass-collect", - "version" : "2.0.1", - "purl" : "pkg:npm/minipass-collect@2.0.1" + "type": "library", + "bom-ref": "pkg:npm/minipass-flush@1.0.5", + "name": "minipass-flush", + "version": "1.0.5", + "purl": "pkg:npm/minipass-flush@1.0.5" }, { - "type" : "library", - "bom-ref" : "pkg:npm/minipass-flush@1.0.5", - "name" : "minipass-flush", - "version" : "1.0.5", - "purl" : "pkg:npm/minipass-flush@1.0.5" + "type": "library", + "bom-ref": "pkg:npm/minipass-pipeline@1.2.4", + "name": "minipass-pipeline", + "version": "1.2.4", + "purl": "pkg:npm/minipass-pipeline@1.2.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/minipass-pipeline@1.2.4", - "name" : "minipass-pipeline", - "version" : "1.2.4", - "purl" : "pkg:npm/minipass-pipeline@1.2.4" + "type": "library", + "bom-ref": "pkg:npm/p-map@7.0.3", + "name": "p-map", + "version": "7.0.3", + "purl": "pkg:npm/p-map@7.0.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/p-map@7.0.3", - "name" : "p-map", - "version" : "7.0.3", - "purl" : "pkg:npm/p-map@7.0.3" + "type": "library", + "bom-ref": "pkg:npm/ssri@12.0.0", + "name": "ssri", + "version": "12.0.0", + "purl": "pkg:npm/ssri@12.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/ssri@12.0.0", - "name" : "ssri", - "version" : "12.0.0", - "purl" : "pkg:npm/ssri@12.0.0" + "type": "library", + "bom-ref": "pkg:npm/tar@7.4.3", + "name": "tar", + "version": "7.4.3", + "purl": "pkg:npm/tar@7.4.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/tar@7.4.3", - "name" : "tar", - "version" : "7.4.3", - "purl" : "pkg:npm/tar@7.4.3" + "type": "library", + "bom-ref": "pkg:npm/unique-filename@4.0.0", + "name": "unique-filename", + "version": "4.0.0", + "purl": "pkg:npm/unique-filename@4.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/unique-filename@4.0.0", - "name" : "unique-filename", - "version" : "4.0.0", - "purl" : "pkg:npm/unique-filename@4.0.0" + "type": "library", + "bom-ref": "pkg:npm/call-bind-apply-helpers@1.0.2", + "name": "call-bind-apply-helpers", + "version": "1.0.2", + "purl": "pkg:npm/call-bind-apply-helpers@1.0.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/call-bind-apply-helpers@1.0.2", - "name" : "call-bind-apply-helpers", - "version" : "1.0.2", - "purl" : "pkg:npm/call-bind-apply-helpers@1.0.2" + "type": "library", + "bom-ref": "pkg:npm/es-errors@1.3.0", + "name": "es-errors", + "version": "1.3.0", + "purl": "pkg:npm/es-errors@1.3.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/es-errors@1.3.0", - "name" : "es-errors", - "version" : "1.3.0", - "purl" : "pkg:npm/es-errors@1.3.0" + "type": "library", + "bom-ref": "pkg:npm/function-bind@1.1.2", + "name": "function-bind", + "version": "1.1.2", + "purl": "pkg:npm/function-bind@1.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/function-bind@1.1.2", - "name" : "function-bind", - "version" : "1.1.2", - "purl" : "pkg:npm/function-bind@1.1.2" + "type": "library", + "bom-ref": "pkg:npm/call-bound@1.0.4", + "name": "call-bound", + "version": "1.0.4", + "purl": "pkg:npm/call-bound@1.0.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/call-bound@1.0.4", - "name" : "call-bound", - "version" : "1.0.4", - "purl" : "pkg:npm/call-bound@1.0.4" + "type": "library", + "bom-ref": "pkg:npm/get-intrinsic@1.3.0", + "name": "get-intrinsic", + "version": "1.3.0", + "purl": "pkg:npm/get-intrinsic@1.3.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/get-intrinsic@1.3.0", - "name" : "get-intrinsic", - "version" : "1.3.0", - "purl" : "pkg:npm/get-intrinsic@1.3.0" + "type": "library", + "bom-ref": "pkg:npm/chokidar@3.6.0", + "name": "chokidar", + "version": "3.6.0", + "purl": "pkg:npm/chokidar@3.6.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/chokidar@3.6.0", - "name" : "chokidar", - "version" : "3.6.0", - "purl" : "pkg:npm/chokidar@3.6.0" + "type": "library", + "bom-ref": "pkg:npm/glob-parent@5.1.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" : "glob-parent", - "version" : "5.1.2", - "purl" : "pkg:npm/glob-parent@5.1.2" + "type": "library", + "bom-ref": "pkg:npm/is-binary-path@2.1.0", + "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" : "is-binary-path", - "version" : "2.1.0", - "purl" : "pkg:npm/is-binary-path@2.1.0" + "type": "library", + "bom-ref": "pkg:npm/is-glob@4.0.3", + "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-glob", - "version" : "4.0.3", - "purl" : "pkg:npm/is-glob@4.0.3" + "type": "library", + "bom-ref": "pkg:npm/readdirp@3.6.0", + "name": "readdirp", + "version": "3.6.0", + "purl": "pkg:npm/readdirp@3.6.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/readdirp@3.6.0", - "name" : "readdirp", - "version" : "3.6.0", - "purl" : "pkg:npm/readdirp@3.6.0" + "type": "library", + "bom-ref": "pkg:npm/color-name@1.1.4", + "name": "color-name", + "version": "1.1.4", + "purl": "pkg:npm/color-name@1.1.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/color-name@1.1.4", - "name" : "color-name", - "version" : "1.1.4", - "purl" : "pkg:npm/color-name@1.1.4" + "type": "library", + "bom-ref": "pkg:npm/content-disposition@0.5.4", + "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" : "content-disposition", - "version" : "0.5.4", - "purl" : "pkg:npm/content-disposition@0.5.4" + "type": "library", + "bom-ref": "pkg:npm/cross-spawn@7.0.6", + "name": "cross-spawn", + "version": "7.0.6", + "purl": "pkg:npm/cross-spawn@7.0.6" }, { - "type" : "library", - "bom-ref" : "pkg:npm/cross-spawn@7.0.6", - "name" : "cross-spawn", - "version" : "7.0.6", - "purl" : "pkg:npm/cross-spawn@7.0.6" + "type": "library", + "bom-ref": "pkg:npm/path-key@3.1.1", + "name": "path-key", + "version": "3.1.1", + "purl": "pkg:npm/path-key@3.1.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/path-key@3.1.1", - "name" : "path-key", - "version" : "3.1.1", - "purl" : "pkg:npm/path-key@3.1.1" + "type": "library", + "bom-ref": "pkg:npm/shebang-command@2.0.0", + "name": "shebang-command", + "version": "2.0.0", + "purl": "pkg:npm/shebang-command@2.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/shebang-command@2.0.0", - "name" : "shebang-command", - "version" : "2.0.0", - "purl" : "pkg:npm/shebang-command@2.0.0" + "type": "library", + "bom-ref": "pkg:npm/which@2.0.2", + "name": "which", + "version": "2.0.2", + "purl": "pkg:npm/which@2.0.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/which@2.0.2", - "name" : "which", - "version" : "2.0.2", - "purl" : "pkg:npm/which@2.0.2" + "type": "library", + "bom-ref": "pkg:npm/ms@2.0.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" : "ms", - "version" : "2.0.0", - "purl" : "pkg:npm/ms@2.0.0" + "type": "library", + "bom-ref": "pkg:npm/debug@3.1.0", + "name": "debug", + "version": "3.1.0", + "purl": "pkg:npm/debug@3.1.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/debug@3.1.0", - "name" : "debug", - "version" : "3.1.0", - "purl" : "pkg:npm/debug@3.1.0" + "type": "library", + "bom-ref": "pkg:npm/debug@3.2.7", + "name": "debug", + "version": "3.2.7", + "purl": "pkg:npm/debug@3.2.7" }, { - "type" : "library", - "bom-ref" : "pkg:npm/debug@3.2.7", - "name" : "debug", - "version" : "3.2.7", - "purl" : "pkg:npm/debug@3.2.7" + "type": "library", + "bom-ref": "pkg:npm/ms@2.1.3", + "name": "ms", + "version": "2.1.3", + "purl": "pkg:npm/ms@2.1.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/ms@2.1.3", - "name" : "ms", - "version" : "2.1.3", - "purl" : "pkg:npm/ms@2.1.3" + "type": "library", + "bom-ref": "pkg:npm/debug@4.4.0", + "name": "debug", + "version": "4.4.0", + "purl": "pkg:npm/debug@4.4.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/debug@4.4.0", - "name" : "debug", - "version" : "4.4.0", - "purl" : "pkg:npm/debug@4.4.0" + "type": "library", + "bom-ref": "pkg:npm/dunder-proto@1.0.1", + "name": "dunder-proto", + "version": "1.0.1", + "purl": "pkg:npm/dunder-proto@1.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/dunder-proto@1.0.1", - "name" : "dunder-proto", - "version" : "1.0.1", - "purl" : "pkg:npm/dunder-proto@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/gopd@1.2.0", + "name": "gopd", + "version": "1.2.0", + "purl": "pkg:npm/gopd@1.2.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/gopd@1.2.0", - "name" : "gopd", - "version" : "1.2.0", - "purl" : "pkg:npm/gopd@1.2.0" + "type": "library", + "bom-ref": "pkg:npm/ecdsa-sig-formatter@1.0.11", + "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" : "ecdsa-sig-formatter", - "version" : "1.0.11", - "purl" : "pkg:npm/ecdsa-sig-formatter@1.0.11" + "type": "library", + "bom-ref": "pkg:npm/encoding@0.1.13", + "name": "encoding", + "version": "0.1.13", + "purl": "pkg:npm/encoding@0.1.13" }, { - "type" : "library", - "bom-ref" : "pkg:npm/encoding@0.1.13", - "name" : "encoding", - "version" : "0.1.13", - "purl" : "pkg:npm/encoding@0.1.13" + "type": "library", + "bom-ref": "pkg:npm/iconv-lite@0.6.3", + "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" : "iconv-lite", - "version" : "0.6.3", - "purl" : "pkg:npm/iconv-lite@0.6.3" + "type": "library", + "bom-ref": "pkg:npm/es-object-atoms@1.1.1", + "name": "es-object-atoms", + "version": "1.1.1", + "purl": "pkg:npm/es-object-atoms@1.1.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/es-object-atoms@1.1.1", - "name" : "es-object-atoms", - "version" : "1.1.1", - "purl" : "pkg:npm/es-object-atoms@1.1.1" + "type": "library", + "bom-ref": "pkg:npm/array-flatten@1.1.1", + "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" : "array-flatten", - "version" : "1.1.1", - "purl" : "pkg:npm/array-flatten@1.1.1" + "type": "library", + "bom-ref": "pkg:npm/cookie-signature@1.0.6", + "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-signature", - "version" : "1.0.6", - "purl" : "pkg:npm/cookie-signature@1.0.6" + "type": "library", + "bom-ref": "pkg:npm/cookie@0.7.1", + "name": "cookie", + "version": "0.7.1", + "purl": "pkg:npm/cookie@0.7.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/cookie@0.7.1", - "name" : "cookie", - "version" : "0.7.1", - "purl" : "pkg:npm/cookie@0.7.1" + "type": "library", + "bom-ref": "pkg:npm/encodeurl@2.0.0", + "name": "encodeurl", + "version": "2.0.0", + "purl": "pkg:npm/encodeurl@2.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/encodeurl@2.0.0", - "name" : "encodeurl", - "version" : "2.0.0", - "purl" : "pkg:npm/encodeurl@2.0.0" + "type": "library", + "bom-ref": "pkg:npm/escape-html@1.0.3", + "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" : "escape-html", - "version" : "1.0.3", - "purl" : "pkg:npm/escape-html@1.0.3" + "type": "library", + "bom-ref": "pkg:npm/etag@1.8.1", + "name": "etag", + "version": "1.8.1", + "purl": "pkg:npm/etag@1.8.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/etag@1.8.1", - "name" : "etag", - "version" : "1.8.1", - "purl" : "pkg:npm/etag@1.8.1" + "type": "library", + "bom-ref": "pkg:npm/finalhandler@1.3.1", + "name": "finalhandler", + "version": "1.3.1", + "purl": "pkg:npm/finalhandler@1.3.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/finalhandler@1.3.1", - "name" : "finalhandler", - "version" : "1.3.1", - "purl" : "pkg:npm/finalhandler@1.3.1" + "type": "library", + "bom-ref": "pkg:npm/fresh@0.5.2", + "name": "fresh", + "version": "0.5.2", + "purl": "pkg:npm/fresh@0.5.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/fresh@0.5.2", - "name" : "fresh", - "version" : "0.5.2", - "purl" : "pkg:npm/fresh@0.5.2" + "type": "library", + "bom-ref": "pkg:npm/merge-descriptors@1.0.3", + "name": "merge-descriptors", + "version": "1.0.3", + "purl": "pkg:npm/merge-descriptors@1.0.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/merge-descriptors@1.0.3", - "name" : "merge-descriptors", - "version" : "1.0.3", - "purl" : "pkg:npm/merge-descriptors@1.0.3" + "type": "library", + "bom-ref": "pkg:npm/methods@1.1.2", + "name": "methods", + "version": "1.1.2", + "purl": "pkg:npm/methods@1.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/methods@1.1.2", - "name" : "methods", - "version" : "1.1.2", - "purl" : "pkg:npm/methods@1.1.2" + "type": "library", + "bom-ref": "pkg:npm/parseurl@1.3.3", + "name": "parseurl", + "version": "1.3.3", + "purl": "pkg:npm/parseurl@1.3.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/parseurl@1.3.3", - "name" : "parseurl", - "version" : "1.3.3", - "purl" : "pkg:npm/parseurl@1.3.3" + "type": "library", + "bom-ref": "pkg:npm/path-to-regexp@0.1.12", + "name": "path-to-regexp", + "version": "0.1.12", + "purl": "pkg:npm/path-to-regexp@0.1.12" }, { - "type" : "library", - "bom-ref" : "pkg:npm/path-to-regexp@0.1.12", - "name" : "path-to-regexp", - "version" : "0.1.12", - "purl" : "pkg:npm/path-to-regexp@0.1.12" + "type": "library", + "bom-ref": "pkg:npm/proxy-addr@2.0.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" : "proxy-addr", - "version" : "2.0.7", - "purl" : "pkg:npm/proxy-addr@2.0.7" + "type": "library", + "bom-ref": "pkg:npm/range-parser@1.2.1", + "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" : "range-parser", - "version" : "1.2.1", - "purl" : "pkg:npm/range-parser@1.2.1" + "type": "library", + "bom-ref": "pkg:npm/send@0.19.0", + "name": "send", + "version": "0.19.0", + "purl": "pkg:npm/send@0.19.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/send@0.19.0", - "name" : "send", - "version" : "0.19.0", - "purl" : "pkg:npm/send@0.19.0" + "type": "library", + "bom-ref": "pkg:npm/serve-static@1.16.2", + "name": "serve-static", + "version": "1.16.2", + "purl": "pkg:npm/serve-static@1.16.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/serve-static@1.16.2", - "name" : "serve-static", - "version" : "1.16.2", - "purl" : "pkg:npm/serve-static@1.16.2" + "type": "library", + "bom-ref": "pkg:npm/setprototypeof@1.2.0", + "name": "setprototypeof", + "version": "1.2.0", + "purl": "pkg:npm/setprototypeof@1.2.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/setprototypeof@1.2.0", - "name" : "setprototypeof", - "version" : "1.2.0", - "purl" : "pkg:npm/setprototypeof@1.2.0" + "type": "library", + "bom-ref": "pkg:npm/statuses@2.0.1", + "name": "statuses", + "version": "2.0.1", + "purl": "pkg:npm/statuses@2.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/statuses@2.0.1", - "name" : "statuses", - "version" : "2.0.1", - "purl" : "pkg:npm/statuses@2.0.1" + "type": "library", + "bom-ref": "pkg:npm/utils-merge@1.0.1", + "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" : "utils-merge", - "version" : "1.0.1", - "purl" : "pkg:npm/utils-merge@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/vary@1.1.2", + "name": "vary", + "version": "1.1.2", + "purl": "pkg:npm/vary@1.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/vary@1.1.2", - "name" : "vary", - "version" : "1.1.2", - "purl" : "pkg:npm/vary@1.1.2" + "type": "library", + "bom-ref": "pkg:npm/to-regex-range@5.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" : "to-regex-range", - "version" : "5.0.1", - "purl" : "pkg:npm/to-regex-range@5.0.1" + "type": "library", + "bom-ref": "pkg:npm/foreground-child@3.3.1", + "name": "foreground-child", + "version": "3.3.1", + "purl": "pkg:npm/foreground-child@3.3.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/foreground-child@3.3.1", - "name" : "foreground-child", - "version" : "3.3.1", - "purl" : "pkg:npm/foreground-child@3.3.1" + "type": "library", + "bom-ref": "pkg:npm/signal-exit@4.1.0", + "name": "signal-exit", + "version": "4.1.0", + "purl": "pkg:npm/signal-exit@4.1.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/signal-exit@4.1.0", - "name" : "signal-exit", - "version" : "4.1.0", - "purl" : "pkg:npm/signal-exit@4.1.0" + "type": "library", + "bom-ref": "pkg:npm/fsevents%40patch:fsevents@2.3.3", + "name": "fsevents@patch:fsevents", + "version": "2.3.3", + "purl": "pkg:npm/fsevents%40patch:fsevents@2.3.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/fsevents%40patch:fsevents@2.3.3", - "name" : "fsevents@patch:fsevents", - "version" : "2.3.3", - "purl" : "pkg:npm/fsevents%40patch:fsevents@2.3.3" + "type": "library", + "bom-ref": "pkg:npm/node-gyp@11.2.0", + "name": "node-gyp", + "version": "11.2.0", + "purl": "pkg:npm/node-gyp@11.2.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/node-gyp@11.2.0", - "name" : "node-gyp", - "version" : "11.2.0", - "purl" : "pkg:npm/node-gyp@11.2.0" + "type": "library", + "bom-ref": "pkg:npm/es-define-property@1.0.1", + "name": "es-define-property", + "version": "1.0.1", + "purl": "pkg:npm/es-define-property@1.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/es-define-property@1.0.1", - "name" : "es-define-property", - "version" : "1.0.1", - "purl" : "pkg:npm/es-define-property@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/get-proto@1.0.1", + "name": "get-proto", + "version": "1.0.1", + "purl": "pkg:npm/get-proto@1.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/get-proto@1.0.1", - "name" : "get-proto", - "version" : "1.0.1", - "purl" : "pkg:npm/get-proto@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/has-symbols@1.1.0", + "name": "has-symbols", + "version": "1.1.0", + "purl": "pkg:npm/has-symbols@1.1.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/has-symbols@1.1.0", - "name" : "has-symbols", - "version" : "1.1.0", - "purl" : "pkg:npm/has-symbols@1.1.0" + "type": "library", + "bom-ref": "pkg:npm/hasown@2.0.2", + "name": "hasown", + "version": "2.0.2", + "purl": "pkg:npm/hasown@2.0.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/hasown@2.0.2", - "name" : "hasown", - "version" : "2.0.2", - "purl" : "pkg:npm/hasown@2.0.2" + "type": "library", + "bom-ref": "pkg:npm/math-intrinsics@1.1.0", + "name": "math-intrinsics", + "version": "1.1.0", + "purl": "pkg:npm/math-intrinsics@1.1.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/math-intrinsics@1.1.0", - "name" : "math-intrinsics", - "version" : "1.1.0", - "purl" : "pkg:npm/math-intrinsics@1.1.0" + "type": "library", + "bom-ref": "pkg:npm/jackspeak@3.4.3", + "name": "jackspeak", + "version": "3.4.3", + "purl": "pkg:npm/jackspeak@3.4.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/jackspeak@3.4.3", - "name" : "jackspeak", - "version" : "3.4.3", - "purl" : "pkg:npm/jackspeak@3.4.3" + "type": "library", + "bom-ref": "pkg:npm/minimatch@9.0.5", + "name": "minimatch", + "version": "9.0.5", + "purl": "pkg:npm/minimatch@9.0.5" }, { - "type" : "library", - "bom-ref" : "pkg:npm/minimatch@9.0.5", - "name" : "minimatch", - "version" : "9.0.5", - "purl" : "pkg:npm/minimatch@9.0.5" + "type": "library", + "bom-ref": "pkg:npm/package-json-from-dist@1.0.1", + "name": "package-json-from-dist", + "version": "1.0.1", + "purl": "pkg:npm/package-json-from-dist@1.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/package-json-from-dist@1.0.1", - "name" : "package-json-from-dist", - "version" : "1.0.1", - "purl" : "pkg:npm/package-json-from-dist@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/path-scurry@1.11.1", + "name": "path-scurry", + "version": "1.11.1", + "purl": "pkg:npm/path-scurry@1.11.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/path-scurry@1.11.1", - "name" : "path-scurry", - "version" : "1.11.1", - "purl" : "pkg:npm/path-scurry@1.11.1" + "type": "library", + "bom-ref": "pkg:npm/inherits@2.0.4", + "name": "inherits", + "version": "2.0.4", + "purl": "pkg:npm/inherits@2.0.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/inherits@2.0.4", - "name" : "inherits", - "version" : "2.0.4", - "purl" : "pkg:npm/inherits@2.0.4" + "type": "library", + "bom-ref": "pkg:npm/toidentifier@1.0.1", + "name": "toidentifier", + "version": "1.0.1", + "purl": "pkg:npm/toidentifier@1.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/toidentifier@1.0.1", - "name" : "toidentifier", - "version" : "1.0.1", - "purl" : "pkg:npm/toidentifier@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/safer-buffer@2.1.2", + "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" : "safer-buffer", - "version" : "2.1.2", - "purl" : "pkg:npm/safer-buffer@2.1.2" + "type": "library", + "bom-ref": "pkg:npm/ip-address@9.0.5", + "name": "ip-address", + "version": "9.0.5", + "purl": "pkg:npm/ip-address@9.0.5" }, { - "type" : "library", - "bom-ref" : "pkg:npm/ip-address@9.0.5", - "name" : "ip-address", - "version" : "9.0.5", - "purl" : "pkg:npm/ip-address@9.0.5" + "type": "library", + "bom-ref": "pkg:npm/jsbn@1.1.0", + "name": "jsbn", + "version": "1.1.0", + "purl": "pkg:npm/jsbn@1.1.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/jsbn@1.1.0", - "name" : "jsbn", - "version" : "1.1.0", - "purl" : "pkg:npm/jsbn@1.1.0" + "type": "library", + "bom-ref": "pkg:npm/sprintf-js@1.1.3", + "name": "sprintf-js", + "version": "1.1.3", + "purl": "pkg:npm/sprintf-js@1.1.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/sprintf-js@1.1.3", - "name" : "sprintf-js", - "version" : "1.1.3", - "purl" : "pkg:npm/sprintf-js@1.1.3" + "type": "library", + "bom-ref": "pkg:npm/binary-extensions@2.3.0", + "name": "binary-extensions", + "version": "2.3.0", + "purl": "pkg:npm/binary-extensions@2.3.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/binary-extensions@2.3.0", - "name" : "binary-extensions", - "version" : "2.3.0", - "purl" : "pkg:npm/binary-extensions@2.3.0" + "type": "library", + "bom-ref": "pkg:npm/is-extglob@2.1.1", + "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" : "is-extglob", - "version" : "2.1.1", - "purl" : "pkg:npm/is-extglob@2.1.1" + "type": "library", + "bom-ref": "pkg:npm/%40pkgjs/parseargs@0.11.0", + "group": "@pkgjs", + "name": "parseargs", + "version": "0.11.0", + "purl": "pkg:npm/%40pkgjs/parseargs@0.11.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/%40pkgjs/parseargs@0.11.0", - "group" : "@pkgjs", - "name" : "parseargs", - "version" : "0.11.0", - "purl" : "pkg:npm/%40pkgjs/parseargs@0.11.0" + "type": "library", + "bom-ref": "pkg:npm/jws@3.2.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" : "jws", - "version" : "3.2.2", - "purl" : "pkg:npm/jws@3.2.2" + "type": "library", + "bom-ref": "pkg:npm/lodash.includes@4.3.0", + "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.includes", - "version" : "4.3.0", - "purl" : "pkg:npm/lodash.includes@4.3.0" + "type": "library", + "bom-ref": "pkg:npm/lodash.isboolean@3.0.3", + "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.isboolean", - "version" : "3.0.3", - "purl" : "pkg:npm/lodash.isboolean@3.0.3" + "type": "library", + "bom-ref": "pkg:npm/lodash.isinteger@4.0.4", + "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.isinteger", - "version" : "4.0.4", - "purl" : "pkg:npm/lodash.isinteger@4.0.4" + "type": "library", + "bom-ref": "pkg:npm/lodash.isnumber@3.0.3", + "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.isnumber", - "version" : "3.0.3", - "purl" : "pkg:npm/lodash.isnumber@3.0.3" + "type": "library", + "bom-ref": "pkg:npm/lodash.isplainobject@4.0.6", + "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.isplainobject", - "version" : "4.0.6", - "purl" : "pkg:npm/lodash.isplainobject@4.0.6" + "type": "library", + "bom-ref": "pkg:npm/lodash.isstring@4.0.1", + "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.isstring", - "version" : "4.0.1", - "purl" : "pkg:npm/lodash.isstring@4.0.1" + "type": "library", + "bom-ref": "pkg:npm/lodash.once@4.1.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" : "lodash.once", - "version" : "4.1.1", - "purl" : "pkg:npm/lodash.once@4.1.1" + "type": "library", + "bom-ref": "pkg:npm/semver@5.7.2", + "name": "semver", + "version": "5.7.2", + "purl": "pkg:npm/semver@5.7.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/semver@5.7.2", - "name" : "semver", - "version" : "5.7.2", - "purl" : "pkg:npm/semver@5.7.2" + "type": "library", + "bom-ref": "pkg:npm/jwa@1.4.1", + "name": "jwa", + "version": "1.4.1", + "purl": "pkg:npm/jwa@1.4.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/jwa@1.4.1", - "name" : "jwa", - "version" : "1.4.1", - "purl" : "pkg:npm/jwa@1.4.1" + "type": "library", + "bom-ref": "pkg:npm/buffer-equal-constant-time@1.0.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" : "buffer-equal-constant-time", - "version" : "1.0.1", - "purl" : "pkg:npm/buffer-equal-constant-time@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/make-fetch-happen@14.0.3", + "name": "make-fetch-happen", + "version": "14.0.3", + "purl": "pkg:npm/make-fetch-happen@14.0.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/make-fetch-happen@14.0.3", - "name" : "make-fetch-happen", - "version" : "14.0.3", - "purl" : "pkg:npm/make-fetch-happen@14.0.3" + "type": "library", + "bom-ref": "pkg:npm/http-cache-semantics@4.1.1", + "name": "http-cache-semantics", + "version": "4.1.1", + "purl": "pkg:npm/http-cache-semantics@4.1.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/http-cache-semantics@4.1.1", - "name" : "http-cache-semantics", - "version" : "4.1.1", - "purl" : "pkg:npm/http-cache-semantics@4.1.1" + "type": "library", + "bom-ref": "pkg:npm/minipass-fetch@4.0.1", + "name": "minipass-fetch", + "version": "4.0.1", + "purl": "pkg:npm/minipass-fetch@4.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/minipass-fetch@4.0.1", - "name" : "minipass-fetch", - "version" : "4.0.1", - "purl" : "pkg:npm/minipass-fetch@4.0.1" + "type": "library", + "bom-ref": "pkg:npm/negotiator@1.0.0", + "name": "negotiator", + "version": "1.0.0", + "purl": "pkg:npm/negotiator@1.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/negotiator@1.0.0", - "name" : "negotiator", - "version" : "1.0.0", - "purl" : "pkg:npm/negotiator@1.0.0" + "type": "library", + "bom-ref": "pkg:npm/proc-log@5.0.0", + "name": "proc-log", + "version": "5.0.0", + "purl": "pkg:npm/proc-log@5.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/proc-log@5.0.0", - "name" : "proc-log", - "version" : "5.0.0", - "purl" : "pkg:npm/proc-log@5.0.0" + "type": "library", + "bom-ref": "pkg:npm/promise-retry@2.0.1", + "name": "promise-retry", + "version": "2.0.1", + "purl": "pkg:npm/promise-retry@2.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/promise-retry@2.0.1", - "name" : "promise-retry", - "version" : "2.0.1", - "purl" : "pkg:npm/promise-retry@2.0.1" + "type": "library", + "bom-ref": "pkg:npm/mime-db@1.52.0", + "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" : "mime-db", - "version" : "1.52.0", - "purl" : "pkg:npm/mime-db@1.52.0" + "type": "library", + "bom-ref": "pkg:npm/minimatch@3.1.2", + "name": "minimatch", + "version": "3.1.2", + "purl": "pkg:npm/minimatch@3.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/minimatch@3.1.2", - "name" : "minimatch", - "version" : "3.1.2", - "purl" : "pkg:npm/minimatch@3.1.2" + "type": "library", + "bom-ref": "pkg:npm/minipass-sized@1.0.3", + "name": "minipass-sized", + "version": "1.0.3", + "purl": "pkg:npm/minipass-sized@1.0.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/minipass-sized@1.0.3", - "name" : "minipass-sized", - "version" : "1.0.3", - "purl" : "pkg:npm/minipass-sized@1.0.3" + "type": "library", + "bom-ref": "pkg:npm/minizlib@3.0.2", + "name": "minizlib", + "version": "3.0.2", + "purl": "pkg:npm/minizlib@3.0.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/minizlib@3.0.2", - "name" : "minizlib", - "version" : "3.0.2", - "purl" : "pkg:npm/minizlib@3.0.2" + "type": "library", + "bom-ref": "pkg:npm/minipass@3.3.6", + "name": "minipass", + "version": "3.3.6", + "purl": "pkg:npm/minipass@3.3.6" }, { - "type" : "library", - "bom-ref" : "pkg:npm/minipass@3.3.6", - "name" : "minipass", - "version" : "3.3.6", - "purl" : "pkg:npm/minipass@3.3.6" + "type": "library", + "bom-ref": "pkg:npm/yallist@4.0.0", + "name": "yallist", + "version": "4.0.0", + "purl": "pkg:npm/yallist@4.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/yallist@4.0.0", - "name" : "yallist", - "version" : "4.0.0", - "purl" : "pkg:npm/yallist@4.0.0" + "type": "library", + "bom-ref": "pkg:npm/mongodb@3.7.4", + "name": "mongodb", + "version": "3.7.4", + "purl": "pkg:npm/mongodb@3.7.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/mongodb@3.7.4", - "name" : "mongodb", - "version" : "3.7.4", - "purl" : "pkg:npm/mongodb@3.7.4" + "type": "library", + "bom-ref": "pkg:npm/bson@1.1.6", + "name": "bson", + "version": "1.1.6", + "purl": "pkg:npm/bson@1.1.6" }, { - "type" : "library", - "bom-ref" : "pkg:npm/bson@1.1.6", - "name" : "bson", - "version" : "1.1.6", - "purl" : "pkg:npm/bson@1.1.6" + "type": "library", + "bom-ref": "pkg:npm/denque@1.5.1", + "name": "denque", + "version": "1.5.1", + "purl": "pkg:npm/denque@1.5.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/denque@1.5.1", - "name" : "denque", - "version" : "1.5.1", - "purl" : "pkg:npm/denque@1.5.1" + "type": "library", + "bom-ref": "pkg:npm/optional-require@1.1.8", + "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" : "optional-require", - "version" : "1.1.8", - "purl" : "pkg:npm/optional-require@1.1.8" + "type": "library", + "bom-ref": "pkg:npm/saslprep@1.0.3", + "name": "saslprep", + "version": "1.0.3", + "purl": "pkg:npm/saslprep@1.0.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/saslprep@1.0.3", - "name" : "saslprep", - "version" : "1.0.3", - "purl" : "pkg:npm/saslprep@1.0.3" + "type": "library", + "bom-ref": "pkg:npm/kareem@2.3.2", + "name": "kareem", + "version": "2.3.2", + "purl": "pkg:npm/kareem@2.3.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/kareem@2.3.2", - "name" : "kareem", - "version" : "2.3.2", - "purl" : "pkg:npm/kareem@2.3.2" + "type": "library", + "bom-ref": "pkg:npm/mongoose-legacy-pluralize@1.0.2", + "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" : "mongoose-legacy-pluralize", - "version" : "1.0.2", - "purl" : "pkg:npm/mongoose-legacy-pluralize@1.0.2" + "type": "library", + "bom-ref": "pkg:npm/mpath@0.8.4", + "name": "mpath", + "version": "0.8.4", + "purl": "pkg:npm/mpath@0.8.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/mpath@0.8.4", - "name" : "mpath", - "version" : "0.8.4", - "purl" : "pkg:npm/mpath@0.8.4" + "type": "library", + "bom-ref": "pkg:npm/mquery@3.2.5", + "name": "mquery", + "version": "3.2.5", + "purl": "pkg:npm/mquery@3.2.5" }, { - "type" : "library", - "bom-ref" : "pkg:npm/mquery@3.2.5", - "name" : "mquery", - "version" : "3.2.5", - "purl" : "pkg:npm/mquery@3.2.5" + "type": "library", + "bom-ref": "pkg:npm/ms@2.1.2", + "name": "ms", + "version": "2.1.2", + "purl": "pkg:npm/ms@2.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/ms@2.1.2", - "name" : "ms", - "version" : "2.1.2", - "purl" : "pkg:npm/ms@2.1.2" + "type": "library", + "bom-ref": "pkg:npm/optional-require@1.0.3", + "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" : "optional-require", - "version" : "1.0.3", - "purl" : "pkg:npm/optional-require@1.0.3" + "type": "library", + "bom-ref": "pkg:npm/regexp-clone@1.0.0", + "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" : "regexp-clone", - "version" : "1.0.0", - "purl" : "pkg:npm/regexp-clone@1.0.0" + "type": "library", + "bom-ref": "pkg:npm/sift@13.5.2", + "name": "sift", + "version": "13.5.2", + "purl": "pkg:npm/sift@13.5.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/sift@13.5.2", - "name" : "sift", - "version" : "13.5.2", - "purl" : "pkg:npm/sift@13.5.2" + "type": "library", + "bom-ref": "pkg:npm/sliced@1.0.1", + "name": "sliced", + "version": "1.0.1", + "purl": "pkg:npm/sliced@1.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/sliced@1.0.1", - "name" : "sliced", - "version" : "1.0.1", - "purl" : "pkg:npm/sliced@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/bluebird@3.5.1", + "name": "bluebird", + "version": "3.5.1", + "purl": "pkg:npm/bluebird@3.5.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/bluebird@3.5.1", - "name" : "bluebird", - "version" : "3.5.1", - "purl" : "pkg:npm/bluebird@3.5.1" + "type": "library", + "bom-ref": "pkg:npm/safe-buffer@5.1.2", + "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" : "safe-buffer", - "version" : "5.1.2", - "purl" : "pkg:npm/safe-buffer@5.1.2" + "type": "library", + "bom-ref": "pkg:npm/env-paths@2.2.1", + "name": "env-paths", + "version": "2.2.1", + "purl": "pkg:npm/env-paths@2.2.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/env-paths@2.2.1", - "name" : "env-paths", - "version" : "2.2.1", - "purl" : "pkg:npm/env-paths@2.2.1" + "type": "library", + "bom-ref": "pkg:npm/exponential-backoff@3.1.2", + "name": "exponential-backoff", + "version": "3.1.2", + "purl": "pkg:npm/exponential-backoff@3.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/exponential-backoff@3.1.2", - "name" : "exponential-backoff", - "version" : "3.1.2", - "purl" : "pkg:npm/exponential-backoff@3.1.2" + "type": "library", + "bom-ref": "pkg:npm/graceful-fs@4.2.11", + "name": "graceful-fs", + "version": "4.2.11", + "purl": "pkg:npm/graceful-fs@4.2.11" }, { - "type" : "library", - "bom-ref" : "pkg:npm/graceful-fs@4.2.11", - "name" : "graceful-fs", - "version" : "4.2.11", - "purl" : "pkg:npm/graceful-fs@4.2.11" + "type": "library", + "bom-ref": "pkg:npm/nopt@8.1.0", + "name": "nopt", + "version": "8.1.0", + "purl": "pkg:npm/nopt@8.1.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/nopt@8.1.0", - "name" : "nopt", - "version" : "8.1.0", - "purl" : "pkg:npm/nopt@8.1.0" + "type": "library", + "bom-ref": "pkg:npm/tinyglobby@0.2.12", + "name": "tinyglobby", + "version": "0.2.12", + "purl": "pkg:npm/tinyglobby@0.2.12" }, { - "type" : "library", - "bom-ref" : "pkg:npm/tinyglobby@0.2.12", - "name" : "tinyglobby", - "version" : "0.2.12", - "purl" : "pkg:npm/tinyglobby@0.2.12" + "type": "library", + "bom-ref": "pkg:npm/which@5.0.0", + "name": "which", + "version": "5.0.0", + "purl": "pkg:npm/which@5.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/which@5.0.0", - "name" : "which", - "version" : "5.0.0", - "purl" : "pkg:npm/which@5.0.0" + "type": "library", + "bom-ref": "pkg:npm/ignore-by-default@1.0.1", + "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" : "ignore-by-default", - "version" : "1.0.1", - "purl" : "pkg:npm/ignore-by-default@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/pstree.remy@1.1.8", + "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" : "pstree.remy", - "version" : "1.1.8", - "purl" : "pkg:npm/pstree.remy@1.1.8" + "type": "library", + "bom-ref": "pkg:npm/simple-update-notifier@1.1.0", + "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" : "simple-update-notifier", - "version" : "1.1.0", - "purl" : "pkg:npm/simple-update-notifier@1.1.0" + "type": "library", + "bom-ref": "pkg:npm/supports-color@5.5.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" : "supports-color", - "version" : "5.5.0", - "purl" : "pkg:npm/supports-color@5.5.0" + "type": "library", + "bom-ref": "pkg:npm/touch@3.1.1", + "name": "touch", + "version": "3.1.1", + "purl": "pkg:npm/touch@3.1.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/touch@3.1.1", - "name" : "touch", - "version" : "3.1.1", - "purl" : "pkg:npm/touch@3.1.1" + "type": "library", + "bom-ref": "pkg:npm/undefsafe@2.0.5", + "name": "undefsafe", + "version": "2.0.5", + "purl": "pkg:npm/undefsafe@2.0.5" }, { - "type" : "library", - "bom-ref" : "pkg:npm/undefsafe@2.0.5", - "name" : "undefsafe", - "version" : "2.0.5", - "purl" : "pkg:npm/undefsafe@2.0.5" + "type": "library", + "bom-ref": "pkg:npm/abbrev@3.0.1", + "name": "abbrev", + "version": "3.0.1", + "purl": "pkg:npm/abbrev@3.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/abbrev@3.0.1", - "name" : "abbrev", - "version" : "3.0.1", - "purl" : "pkg:npm/abbrev@3.0.1" + "type": "library", + "bom-ref": "pkg:npm/ee-first@1.1.1", + "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" : "ee-first", - "version" : "1.1.1", - "purl" : "pkg:npm/ee-first@1.1.1" + "type": "library", + "bom-ref": "pkg:npm/require-at@1.0.6", + "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" : "require-at", - "version" : "1.0.6", - "purl" : "pkg:npm/require-at@1.0.6" + "type": "library", + "bom-ref": "pkg:npm/err-code@2.0.3", + "name": "err-code", + "version": "2.0.3", + "purl": "pkg:npm/err-code@2.0.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/err-code@2.0.3", - "name" : "err-code", - "version" : "2.0.3", - "purl" : "pkg:npm/err-code@2.0.3" + "type": "library", + "bom-ref": "pkg:npm/retry@0.12.0", + "name": "retry", + "version": "0.12.0", + "purl": "pkg:npm/retry@0.12.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/retry@0.12.0", - "name" : "retry", - "version" : "0.12.0", - "purl" : "pkg:npm/retry@0.12.0" + "type": "library", + "bom-ref": "pkg:npm/forwarded@0.2.0", + "name": "forwarded", + "version": "0.2.0", + "purl": "pkg:npm/forwarded@0.2.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/forwarded@0.2.0", - "name" : "forwarded", - "version" : "0.2.0", - "purl" : "pkg:npm/forwarded@0.2.0" + "type": "library", + "bom-ref": "pkg:npm/ipaddr.js@1.9.1", + "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" : "ipaddr.js", - "version" : "1.9.1", - "purl" : "pkg:npm/ipaddr.js@1.9.1" + "type": "library", + "bom-ref": "pkg:npm/side-channel@1.1.0", + "name": "side-channel", + "version": "1.1.0", + "purl": "pkg:npm/side-channel@1.1.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/side-channel@1.1.0", - "name" : "side-channel", - "version" : "1.1.0", - "purl" : "pkg:npm/side-channel@1.1.0" + "type": "library", + "bom-ref": "pkg:npm/core-util-is@1.0.3", + "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" : "core-util-is", - "version" : "1.0.3", - "purl" : "pkg:npm/core-util-is@1.0.3" + "type": "library", + "bom-ref": "pkg:npm/isarray@1.0.0", + "name": "isarray", + "version": "1.0.0", + "purl": "pkg:npm/isarray@1.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/isarray@1.0.0", - "name" : "isarray", - "version" : "1.0.0", - "purl" : "pkg:npm/isarray@1.0.0" + "type": "library", + "bom-ref": "pkg:npm/process-nextick-args@2.0.1", + "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" : "process-nextick-args", - "version" : "2.0.1", - "purl" : "pkg:npm/process-nextick-args@2.0.1" + "type": "library", + "bom-ref": "pkg:npm/string_decoder@1.1.1", + "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" : "string_decoder", - "version" : "1.1.1", - "purl" : "pkg:npm/string_decoder@1.1.1" + "type": "library", + "bom-ref": "pkg:npm/util-deprecate@1.0.2", + "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" : "util-deprecate", - "version" : "1.0.2", - "purl" : "pkg:npm/util-deprecate@1.0.2" + "type": "library", + "bom-ref": "pkg:npm/sparse-bitfield@3.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" : "sparse-bitfield", - "version" : "3.0.3", - "purl" : "pkg:npm/sparse-bitfield@3.0.3" + "type": "library", + "bom-ref": "pkg:npm/encodeurl@1.0.2", + "name": "encodeurl", + "version": "1.0.2", + "purl": "pkg:npm/encodeurl@1.0.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/encodeurl@1.0.2", - "name" : "encodeurl", - "version" : "1.0.2", - "purl" : "pkg:npm/encodeurl@1.0.2" + "type": "library", + "bom-ref": "pkg:npm/mime@1.6.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" : "mime", - "version" : "1.6.0", - "purl" : "pkg:npm/mime@1.6.0" + "type": "library", + "bom-ref": "pkg:npm/shebang-regex@3.0.0", + "name": "shebang-regex", + "version": "3.0.0", + "purl": "pkg:npm/shebang-regex@3.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/shebang-regex@3.0.0", - "name" : "shebang-regex", - "version" : "3.0.0", - "purl" : "pkg:npm/shebang-regex@3.0.0" + "type": "library", + "bom-ref": "pkg:npm/side-channel-list@1.0.0", + "name": "side-channel-list", + "version": "1.0.0", + "purl": "pkg:npm/side-channel-list@1.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/side-channel-list@1.0.0", - "name" : "side-channel-list", - "version" : "1.0.0", - "purl" : "pkg:npm/side-channel-list@1.0.0" + "type": "library", + "bom-ref": "pkg:npm/object-inspect@1.13.4", + "name": "object-inspect", + "version": "1.13.4", + "purl": "pkg:npm/object-inspect@1.13.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/object-inspect@1.13.4", - "name" : "object-inspect", - "version" : "1.13.4", - "purl" : "pkg:npm/object-inspect@1.13.4" + "type": "library", + "bom-ref": "pkg:npm/side-channel-map@1.0.1", + "name": "side-channel-map", + "version": "1.0.1", + "purl": "pkg:npm/side-channel-map@1.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/side-channel-map@1.0.1", - "name" : "side-channel-map", - "version" : "1.0.1", - "purl" : "pkg:npm/side-channel-map@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/side-channel-weakmap@1.0.2", + "name": "side-channel-weakmap", + "version": "1.0.2", + "purl": "pkg:npm/side-channel-weakmap@1.0.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/side-channel-weakmap@1.0.2", - "name" : "side-channel-weakmap", - "version" : "1.0.2", - "purl" : "pkg:npm/side-channel-weakmap@1.0.2" + "type": "library", + "bom-ref": "pkg:npm/semver@7.0.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" : "semver", - "version" : "7.0.0", - "purl" : "pkg:npm/semver@7.0.0" + "type": "library", + "bom-ref": "pkg:npm/socks@2.8.4", + "name": "socks", + "version": "2.8.4", + "purl": "pkg:npm/socks@2.8.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/socks@2.8.4", - "name" : "socks", - "version" : "2.8.4", - "purl" : "pkg:npm/socks@2.8.4" + "type": "library", + "bom-ref": "pkg:npm/smart-buffer@4.2.0", + "name": "smart-buffer", + "version": "4.2.0", + "purl": "pkg:npm/smart-buffer@4.2.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/smart-buffer@4.2.0", - "name" : "smart-buffer", - "version" : "4.2.0", - "purl" : "pkg:npm/smart-buffer@4.2.0" + "type": "library", + "bom-ref": "pkg:npm/memory-pager@1.5.0", + "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" : "memory-pager", - "version" : "1.5.0", - "purl" : "pkg:npm/memory-pager@1.5.0" + "type": "library", + "bom-ref": "pkg:npm/emoji-regex@8.0.0", + "name": "emoji-regex", + "version": "8.0.0", + "purl": "pkg:npm/emoji-regex@8.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/emoji-regex@8.0.0", - "name" : "emoji-regex", - "version" : "8.0.0", - "purl" : "pkg:npm/emoji-regex@8.0.0" + "type": "library", + "bom-ref": "pkg:npm/is-fullwidth-code-point@3.0.0", + "name": "is-fullwidth-code-point", + "version": "3.0.0", + "purl": "pkg:npm/is-fullwidth-code-point@3.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/is-fullwidth-code-point@3.0.0", - "name" : "is-fullwidth-code-point", - "version" : "3.0.0", - "purl" : "pkg:npm/is-fullwidth-code-point@3.0.0" + "type": "library", + "bom-ref": "pkg:npm/eastasianwidth@0.2.0", + "name": "eastasianwidth", + "version": "0.2.0", + "purl": "pkg:npm/eastasianwidth@0.2.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/eastasianwidth@0.2.0", - "name" : "eastasianwidth", - "version" : "0.2.0", - "purl" : "pkg:npm/eastasianwidth@0.2.0" + "type": "library", + "bom-ref": "pkg:npm/emoji-regex@9.2.2", + "name": "emoji-regex", + "version": "9.2.2", + "purl": "pkg:npm/emoji-regex@9.2.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/emoji-regex@9.2.2", - "name" : "emoji-regex", - "version" : "9.2.2", - "purl" : "pkg:npm/emoji-regex@9.2.2" + "type": "library", + "bom-ref": "pkg:npm/ansi-regex@5.0.1", + "name": "ansi-regex", + "version": "5.0.1", + "purl": "pkg:npm/ansi-regex@5.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/ansi-regex@5.0.1", - "name" : "ansi-regex", - "version" : "5.0.1", - "purl" : "pkg:npm/ansi-regex@5.0.1" + "type": "library", + "bom-ref": "pkg:npm/ansi-regex@6.1.0", + "name": "ansi-regex", + "version": "6.1.0", + "purl": "pkg:npm/ansi-regex@6.1.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/ansi-regex@6.1.0", - "name" : "ansi-regex", - "version" : "6.1.0", - "purl" : "pkg:npm/ansi-regex@6.1.0" + "type": "library", + "bom-ref": "pkg:npm/has-flag@3.0.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" : "has-flag", - "version" : "3.0.0", - "purl" : "pkg:npm/has-flag@3.0.0" + "type": "library", + "bom-ref": "pkg:npm/chownr@3.0.0", + "name": "chownr", + "version": "3.0.0", + "purl": "pkg:npm/chownr@3.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/chownr@3.0.0", - "name" : "chownr", - "version" : "3.0.0", - "purl" : "pkg:npm/chownr@3.0.0" + "type": "library", + "bom-ref": "pkg:npm/mkdirp@3.0.1", + "name": "mkdirp", + "version": "3.0.1", + "purl": "pkg:npm/mkdirp@3.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/mkdirp@3.0.1", - "name" : "mkdirp", - "version" : "3.0.1", - "purl" : "pkg:npm/mkdirp@3.0.1" + "type": "library", + "bom-ref": "pkg:npm/yallist@5.0.0", + "name": "yallist", + "version": "5.0.0", + "purl": "pkg:npm/yallist@5.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/yallist@5.0.0", - "name" : "yallist", - "version" : "5.0.0", - "purl" : "pkg:npm/yallist@5.0.0" + "type": "library", + "bom-ref": "pkg:npm/fdir@6.4.3", + "name": "fdir", + "version": "6.4.3", + "purl": "pkg:npm/fdir@6.4.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/fdir@6.4.3", - "name" : "fdir", - "version" : "6.4.3", - "purl" : "pkg:npm/fdir@6.4.3" + "type": "library", + "bom-ref": "pkg:npm/picomatch@4.0.2", + "name": "picomatch", + "version": "4.0.2", + "purl": "pkg:npm/picomatch@4.0.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/picomatch@4.0.2", - "name" : "picomatch", - "version" : "4.0.2", - "purl" : "pkg:npm/picomatch@4.0.2" + "type": "library", + "bom-ref": "pkg:npm/is-number@7.0.0", + "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" : "is-number", - "version" : "7.0.0", - "purl" : "pkg:npm/is-number@7.0.0" + "type": "library", + "bom-ref": "pkg:npm/media-typer@0.3.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" : "media-typer", - "version" : "0.3.0", - "purl" : "pkg:npm/media-typer@0.3.0" + "type": "library", + "bom-ref": "pkg:npm/unique-slug@5.0.0", + "name": "unique-slug", + "version": "5.0.0", + "purl": "pkg:npm/unique-slug@5.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/unique-slug@5.0.0", - "name" : "unique-slug", - "version" : "5.0.0", - "purl" : "pkg:npm/unique-slug@5.0.0" + "type": "library", + "bom-ref": "pkg:npm/imurmurhash@0.1.4", + "name": "imurmurhash", + "version": "0.1.4", + "purl": "pkg:npm/imurmurhash@0.1.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/imurmurhash@0.1.4", - "name" : "imurmurhash", - "version" : "0.1.4", - "purl" : "pkg:npm/imurmurhash@0.1.4" + "type": "library", + "bom-ref": "pkg:npm/isexe@2.0.0", + "name": "isexe", + "version": "2.0.0", + "purl": "pkg:npm/isexe@2.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/isexe@2.0.0", - "name" : "isexe", - "version" : "2.0.0", - "purl" : "pkg:npm/isexe@2.0.0" + "type": "library", + "bom-ref": "pkg:npm/isexe@3.1.1", + "name": "isexe", + "version": "3.1.1", + "purl": "pkg:npm/isexe@3.1.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/isexe@3.1.1", - "name" : "isexe", - "version" : "3.1.1", - "purl" : "pkg:npm/isexe@3.1.1" - }, - { - "type" : "library", - "bom-ref" : "pkg:npm/ansi-styles@6.2.1", - "name" : "ansi-styles", - "version" : "6.2.1", - "purl" : "pkg:npm/ansi-styles@6.2.1" + "type": "library", + "bom-ref": "pkg:npm/ansi-styles@6.2.1", + "name": "ansi-styles", + "version": "6.2.1", + "purl": "pkg:npm/ansi-styles@6.2.1" } ], - "dependencies" : [ + "dependencies": [ { - "ref" : "pkg:npm/backend@1.0.0", - "dependsOn" : [ + "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", @@ -1738,18 +1731,18 @@ ] }, { - "ref" : "pkg:npm/%40hapi/address@4.1.0", - "dependsOn" : [ + "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/hoek@9.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40hapi/joi@17.1.1", - "dependsOn" : [ + "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", @@ -1758,22 +1751,22 @@ ] }, { - "ref" : "pkg:npm/%40hapi/formula@2.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/%40hapi/formula@2.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40hapi/pinpoint@2.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/%40hapi/pinpoint@2.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40hapi/topo@5.1.0", - "dependsOn" : [ + "ref": "pkg:npm/%40hapi/topo@5.1.0", + "dependsOn": [ "pkg:npm/%40hapi/hoek@9.3.0" ] }, { - "ref" : "pkg:npm/%40isaacs/cliui@8.0.2", - "dependsOn" : [ + "ref": "pkg:npm/%40isaacs/cliui@8.0.2", + "dependsOn": [ "pkg:npm/string-width@4.2.3", "pkg:npm/string-width@5.1.2", "pkg:npm/strip-ansi@6.0.1", @@ -1783,62 +1776,62 @@ ] }, { - "ref" : "pkg:npm/string-width@4.2.3", - "dependsOn" : [ + "ref": "pkg:npm/string-width@4.2.3", + "dependsOn": [ "pkg:npm/emoji-regex@8.0.0", "pkg:npm/is-fullwidth-code-point@3.0.0", "pkg:npm/strip-ansi@6.0.1" ] }, { - "ref" : "pkg:npm/string-width@5.1.2", - "dependsOn" : [ + "ref": "pkg:npm/string-width@5.1.2", + "dependsOn": [ "pkg:npm/eastasianwidth@0.2.0", "pkg:npm/emoji-regex@9.2.2", "pkg:npm/strip-ansi@7.1.0" ] }, { - "ref" : "pkg:npm/strip-ansi@6.0.1", - "dependsOn" : [ + "ref": "pkg:npm/strip-ansi@6.0.1", + "dependsOn": [ "pkg:npm/ansi-regex@5.0.1" ] }, { - "ref" : "pkg:npm/strip-ansi@7.1.0", - "dependsOn" : [ + "ref": "pkg:npm/strip-ansi@7.1.0", + "dependsOn": [ "pkg:npm/ansi-regex@6.1.0" ] }, { - "ref" : "pkg:npm/wrap-ansi@7.0.0", - "dependsOn" : [ + "ref": "pkg:npm/wrap-ansi@7.0.0", + "dependsOn": [ "pkg:npm/ansi-styles@4.3.0", "pkg:npm/string-width@4.2.3", "pkg:npm/strip-ansi@6.0.1" ] }, { - "ref" : "pkg:npm/wrap-ansi@8.1.0", - "dependsOn" : [ + "ref": "pkg:npm/wrap-ansi@8.1.0", + "dependsOn": [ "pkg:npm/ansi-styles@6.2.1", "pkg:npm/string-width@5.1.2", "pkg:npm/strip-ansi@7.1.0" ] }, { - "ref" : "pkg:npm/%40isaacs/fs-minipass@4.0.1", - "dependsOn" : [ + "ref": "pkg:npm/%40isaacs/fs-minipass@4.0.1", + "dependsOn": [ "pkg:npm/minipass@7.1.2" ] }, { - "ref" : "pkg:npm/minipass@7.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/minipass@7.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40npmcli/agent@3.0.0", - "dependsOn" : [ + "ref": "pkg:npm/%40npmcli/agent@3.0.0", + "dependsOn": [ "pkg:npm/agent-base@7.1.3", "pkg:npm/http-proxy-agent@7.0.2", "pkg:npm/https-proxy-agent@7.0.6", @@ -1847,139 +1840,139 @@ ] }, { - "ref" : "pkg:npm/agent-base@7.1.3", - "dependsOn" : [ ] + "ref": "pkg:npm/agent-base@7.1.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/http-proxy-agent@7.0.2", - "dependsOn" : [ + "ref": "pkg:npm/http-proxy-agent@7.0.2", + "dependsOn": [ "pkg:npm/agent-base@7.1.3", "pkg:npm/debug@4.4.0" ] }, { - "ref" : "pkg:npm/https-proxy-agent@7.0.6", - "dependsOn" : [ + "ref": "pkg:npm/https-proxy-agent@7.0.6", + "dependsOn": [ "pkg:npm/agent-base@7.1.3", "pkg:npm/debug@4.4.0" ] }, { - "ref" : "pkg:npm/lru-cache@10.4.3", - "dependsOn" : [ ] + "ref": "pkg:npm/lru-cache@10.4.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/socks-proxy-agent@8.0.5", - "dependsOn" : [ + "ref": "pkg:npm/socks-proxy-agent@8.0.5", + "dependsOn": [ "pkg:npm/agent-base@7.1.3", "pkg:npm/debug@4.4.0", "pkg:npm/socks@2.8.4" ] }, { - "ref" : "pkg:npm/%40npmcli/fs@4.0.0", - "dependsOn" : [ + "ref": "pkg:npm/%40npmcli/fs@4.0.0", + "dependsOn": [ "pkg:npm/semver@7.7.1" ] }, { - "ref" : "pkg:npm/semver@7.7.1", - "dependsOn" : [ ] + "ref": "pkg:npm/semver@7.7.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40types/bson@4.0.5", - "dependsOn" : [ + "ref": "pkg:npm/%40types/bson@4.0.5", + "dependsOn": [ "pkg:npm/%40types/node@22.14.1" ] }, { - "ref" : "pkg:npm/%40types/node@22.14.1", - "dependsOn" : [ + "ref": "pkg:npm/%40types/node@22.14.1", + "dependsOn": [ "pkg:npm/undici-types@6.21.0" ] }, { - "ref" : "pkg:npm/%40types/mongodb@3.6.20", - "dependsOn" : [ + "ref": "pkg:npm/%40types/mongodb@3.6.20", + "dependsOn": [ "pkg:npm/%40types/bson@4.0.5", "pkg:npm/%40types/node@22.14.1" ] }, { - "ref" : "pkg:npm/undici-types@6.21.0", - "dependsOn" : [ ] + "ref": "pkg:npm/undici-types@6.21.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/accepts@1.3.8", - "dependsOn" : [ + "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" : [ + "ref": "pkg:npm/mime-types@2.1.35", + "dependsOn": [ "pkg:npm/mime-db@1.52.0" ] }, { - "ref" : "pkg:npm/negotiator@0.6.3", - "dependsOn" : [ ] + "ref": "pkg:npm/negotiator@0.6.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/ansi-styles@4.3.0", - "dependsOn" : [ + "ref": "pkg:npm/ansi-styles@4.3.0", + "dependsOn": [ "pkg:npm/color-convert@2.0.1" ] }, { - "ref" : "pkg:npm/color-convert@2.0.1", - "dependsOn" : [ + "ref": "pkg:npm/color-convert@2.0.1", + "dependsOn": [ "pkg:npm/color-name@1.1.4" ] }, { - "ref" : "pkg:npm/anymatch@3.1.3", - "dependsOn" : [ + "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/normalize-path@3.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/picomatch@2.3.1", - "dependsOn" : [ ] + "ref": "pkg:npm/picomatch@2.3.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/axios@0.19.2", - "dependsOn" : [ + "ref": "pkg:npm/axios@0.19.2", + "dependsOn": [ "pkg:npm/follow-redirects@1.5.10" ] }, { - "ref" : "pkg:npm/follow-redirects@1.5.10", - "dependsOn" : [ + "ref": "pkg:npm/follow-redirects@1.5.10", + "dependsOn": [ "pkg:npm/debug@3.1.0" ] }, { - "ref" : "pkg:npm/backend@0.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/backend@0.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/bcryptjs@2.4.3", - "dependsOn" : [ ] + "ref": "pkg:npm/bcryptjs@2.4.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/dotenv@8.6.0", - "dependsOn" : [ ] + "ref": "pkg:npm/dotenv@8.6.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/express@4.21.2", - "dependsOn" : [ + "ref": "pkg:npm/express@4.21.2", + "dependsOn": [ "pkg:npm/accepts@1.3.8", "pkg:npm/array-flatten@1.1.1", "pkg:npm/body-parser@1.20.3", @@ -2014,8 +2007,8 @@ ] }, { - "ref" : "pkg:npm/jsonwebtoken@8.5.1", - "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", @@ -2029,8 +2022,8 @@ ] }, { - "ref" : "pkg:npm/mongoose@5.13.23", - "dependsOn" : [ + "ref": "pkg:npm/mongoose@5.13.23", + "dependsOn": [ "pkg:npm/%40types/bson@4.0.5", "pkg:npm/%40types/mongodb@3.6.20", "pkg:npm/bson@1.1.6", @@ -2048,8 +2041,8 @@ ] }, { - "ref" : "pkg:npm/nodemon@2.0.22", - "dependsOn" : [ + "ref": "pkg:npm/nodemon@2.0.22", + "dependsOn": [ "pkg:npm/chokidar@3.6.0", "pkg:npm/debug@3.2.7", "pkg:npm/ignore-by-default@1.0.1", @@ -2063,15 +2056,15 @@ ] }, { - "ref" : "pkg:npm/bl@2.2.1", - "dependsOn" : [ + "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" : [ + "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", @@ -2082,12 +2075,12 @@ ] }, { - "ref" : "pkg:npm/safe-buffer@5.2.1", - "dependsOn" : [ ] + "ref": "pkg:npm/safe-buffer@5.2.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/body-parser@1.20.3", - "dependsOn" : [ + "ref": "pkg:npm/body-parser@1.20.3", + "dependsOn": [ "pkg:npm/bytes@3.1.2", "pkg:npm/content-type@1.0.5", "pkg:npm/debug@2.6.9", @@ -2103,30 +2096,30 @@ ] }, { - "ref" : "pkg:npm/bytes@3.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/bytes@3.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/content-type@1.0.5", - "dependsOn" : [ ] + "ref": "pkg:npm/content-type@1.0.5", + "dependsOn": [] }, { - "ref" : "pkg:npm/debug@2.6.9", - "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/depd@2.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/destroy@1.2.0", - "dependsOn" : [ ] + "ref": "pkg:npm/destroy@1.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/http-errors@2.0.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", @@ -2135,26 +2128,26 @@ ] }, { - "ref" : "pkg:npm/iconv-lite@0.4.24", - "dependsOn" : [ + "ref": "pkg:npm/iconv-lite@0.4.24", + "dependsOn": [ "pkg:npm/safer-buffer@2.1.2" ] }, { - "ref" : "pkg:npm/on-finished@2.4.1", - "dependsOn" : [ + "ref": "pkg:npm/on-finished@2.4.1", + "dependsOn": [ "pkg:npm/ee-first@1.1.1" ] }, { - "ref" : "pkg:npm/qs@6.13.0", - "dependsOn" : [ + "ref": "pkg:npm/qs@6.13.0", + "dependsOn": [ "pkg:npm/side-channel@1.1.0" ] }, { - "ref" : "pkg:npm/raw-body@2.5.2", - "dependsOn" : [ + "ref": "pkg:npm/raw-body@2.5.2", + "dependsOn": [ "pkg:npm/bytes@3.1.2", "pkg:npm/http-errors@2.0.0", "pkg:npm/iconv-lite@0.4.24", @@ -2162,52 +2155,52 @@ ] }, { - "ref" : "pkg:npm/type-is@1.6.18", - "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/unpipe@1.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/unpipe@1.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/brace-expansion@1.1.11", - "dependsOn" : [ + "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/balanced-match@1.0.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/concat-map@0.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/concat-map@0.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/brace-expansion@2.0.1", - "dependsOn" : [ + "ref": "pkg:npm/brace-expansion@2.0.1", + "dependsOn": [ "pkg:npm/balanced-match@1.0.2" ] }, { - "ref" : "pkg:npm/braces@3.0.3", - "dependsOn" : [ + "ref": "pkg:npm/braces@3.0.3", + "dependsOn": [ "pkg:npm/fill-range@7.1.1" ] }, { - "ref" : "pkg:npm/fill-range@7.1.1", - "dependsOn" : [ + "ref": "pkg:npm/fill-range@7.1.1", + "dependsOn": [ "pkg:npm/to-regex-range@5.0.1" ] }, { - "ref" : "pkg:npm/cacache@19.0.1", - "dependsOn" : [ + "ref": "pkg:npm/cacache@19.0.1", + "dependsOn": [ "pkg:npm/%40npmcli/fs@4.0.0", "pkg:npm/fs-minipass@3.0.3", "pkg:npm/glob@10.4.5", @@ -2223,14 +2216,14 @@ ] }, { - "ref" : "pkg:npm/fs-minipass@3.0.3", - "dependsOn" : [ + "ref": "pkg:npm/fs-minipass@3.0.3", + "dependsOn": [ "pkg:npm/minipass@7.1.2" ] }, { - "ref" : "pkg:npm/glob@10.4.5", - "dependsOn" : [ + "ref": "pkg:npm/glob@10.4.5", + "dependsOn": [ "pkg:npm/foreground-child@3.3.1", "pkg:npm/jackspeak@3.4.3", "pkg:npm/minimatch@9.0.5", @@ -2240,36 +2233,36 @@ ] }, { - "ref" : "pkg:npm/minipass-collect@2.0.1", - "dependsOn" : [ + "ref": "pkg:npm/minipass-collect@2.0.1", + "dependsOn": [ "pkg:npm/minipass@7.1.2" ] }, { - "ref" : "pkg:npm/minipass-flush@1.0.5", - "dependsOn" : [ + "ref": "pkg:npm/minipass-flush@1.0.5", + "dependsOn": [ "pkg:npm/minipass@3.3.6" ] }, { - "ref" : "pkg:npm/minipass-pipeline@1.2.4", - "dependsOn" : [ + "ref": "pkg:npm/minipass-pipeline@1.2.4", + "dependsOn": [ "pkg:npm/minipass@3.3.6" ] }, { - "ref" : "pkg:npm/p-map@7.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/p-map@7.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/ssri@12.0.0", - "dependsOn" : [ + "ref": "pkg:npm/ssri@12.0.0", + "dependsOn": [ "pkg:npm/minipass@7.1.2" ] }, { - "ref" : "pkg:npm/tar@7.4.3", - "dependsOn" : [ + "ref": "pkg:npm/tar@7.4.3", + "dependsOn": [ "pkg:npm/%40isaacs/fs-minipass@4.0.1", "pkg:npm/chownr@3.0.0", "pkg:npm/minipass@7.1.2", @@ -2279,36 +2272,36 @@ ] }, { - "ref" : "pkg:npm/unique-filename@4.0.0", - "dependsOn" : [ + "ref": "pkg:npm/unique-filename@4.0.0", + "dependsOn": [ "pkg:npm/unique-slug@5.0.0" ] }, { - "ref" : "pkg:npm/call-bind-apply-helpers@1.0.2", - "dependsOn" : [ + "ref": "pkg:npm/call-bind-apply-helpers@1.0.2", + "dependsOn": [ "pkg:npm/es-errors@1.3.0", "pkg:npm/function-bind@1.1.2" ] }, { - "ref" : "pkg:npm/es-errors@1.3.0", - "dependsOn" : [ ] + "ref": "pkg:npm/es-errors@1.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/function-bind@1.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/function-bind@1.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/call-bound@1.0.4", - "dependsOn" : [ + "ref": "pkg:npm/call-bound@1.0.4", + "dependsOn": [ "pkg:npm/call-bind-apply-helpers@1.0.2", "pkg:npm/get-intrinsic@1.3.0" ] }, { - "ref" : "pkg:npm/get-intrinsic@1.3.0", - "dependsOn" : [ + "ref": "pkg:npm/get-intrinsic@1.3.0", + "dependsOn": [ "pkg:npm/call-bind-apply-helpers@1.0.2", "pkg:npm/es-define-property@1.0.1", "pkg:npm/es-errors@1.3.0", @@ -2322,8 +2315,8 @@ ] }, { - "ref" : "pkg:npm/chokidar@3.6.0", - "dependsOn" : [ + "ref": "pkg:npm/chokidar@3.6.0", + "dependsOn": [ "pkg:npm/anymatch@3.1.3", "pkg:npm/braces@3.0.3", "pkg:npm/glob-parent@5.1.2", @@ -2334,152 +2327,152 @@ ] }, { - "ref" : "pkg:npm/glob-parent@5.1.2", - "dependsOn" : [ + "ref": "pkg:npm/glob-parent@5.1.2", + "dependsOn": [ "pkg:npm/is-glob@4.0.3" ] }, { - "ref" : "pkg:npm/is-binary-path@2.1.0", - "dependsOn" : [ + "ref": "pkg:npm/is-binary-path@2.1.0", + "dependsOn": [ "pkg:npm/binary-extensions@2.3.0" ] }, { - "ref" : "pkg:npm/is-glob@4.0.3", - "dependsOn" : [ + "ref": "pkg:npm/is-glob@4.0.3", + "dependsOn": [ "pkg:npm/is-extglob@2.1.1" ] }, { - "ref" : "pkg:npm/readdirp@3.6.0", - "dependsOn" : [ + "ref": "pkg:npm/readdirp@3.6.0", + "dependsOn": [ "pkg:npm/picomatch@2.3.1" ] }, { - "ref" : "pkg:npm/color-name@1.1.4", - "dependsOn" : [ ] + "ref": "pkg:npm/color-name@1.1.4", + "dependsOn": [] }, { - "ref" : "pkg:npm/content-disposition@0.5.4", - "dependsOn" : [ + "ref": "pkg:npm/content-disposition@0.5.4", + "dependsOn": [ "pkg:npm/safe-buffer@5.2.1" ] }, { - "ref" : "pkg:npm/cross-spawn@7.0.6", - "dependsOn" : [ + "ref": "pkg:npm/cross-spawn@7.0.6", + "dependsOn": [ "pkg:npm/path-key@3.1.1", "pkg:npm/shebang-command@2.0.0", "pkg:npm/which@2.0.2" ] }, { - "ref" : "pkg:npm/path-key@3.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/path-key@3.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/shebang-command@2.0.0", - "dependsOn" : [ + "ref": "pkg:npm/shebang-command@2.0.0", + "dependsOn": [ "pkg:npm/shebang-regex@3.0.0" ] }, { - "ref" : "pkg:npm/which@2.0.2", - "dependsOn" : [ + "ref": "pkg:npm/which@2.0.2", + "dependsOn": [ "pkg:npm/isexe@2.0.0" ] }, { - "ref" : "pkg:npm/ms@2.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/ms@2.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/debug@3.1.0", - "dependsOn" : [ + "ref": "pkg:npm/debug@3.1.0", + "dependsOn": [ "pkg:npm/ms@2.0.0" ] }, { - "ref" : "pkg:npm/debug@3.2.7", - "dependsOn" : [ + "ref": "pkg:npm/debug@3.2.7", + "dependsOn": [ "pkg:npm/ms@2.1.3" ] }, { - "ref" : "pkg:npm/ms@2.1.3", - "dependsOn" : [ ] + "ref": "pkg:npm/ms@2.1.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/debug@4.4.0", - "dependsOn" : [ + "ref": "pkg:npm/debug@4.4.0", + "dependsOn": [ "pkg:npm/ms@2.1.3" ] }, { - "ref" : "pkg:npm/dunder-proto@1.0.1", - "dependsOn" : [ + "ref": "pkg:npm/dunder-proto@1.0.1", + "dependsOn": [ "pkg:npm/call-bind-apply-helpers@1.0.2", "pkg:npm/es-errors@1.3.0", "pkg:npm/gopd@1.2.0" ] }, { - "ref" : "pkg:npm/gopd@1.2.0", - "dependsOn" : [ ] + "ref": "pkg:npm/gopd@1.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/ecdsa-sig-formatter@1.0.11", - "dependsOn" : [ + "ref": "pkg:npm/ecdsa-sig-formatter@1.0.11", + "dependsOn": [ "pkg:npm/safe-buffer@5.2.1" ] }, { - "ref" : "pkg:npm/encoding@0.1.13", - "dependsOn" : [ + "ref": "pkg:npm/encoding@0.1.13", + "dependsOn": [ "pkg:npm/iconv-lite@0.6.3" ] }, { - "ref" : "pkg:npm/iconv-lite@0.6.3", - "dependsOn" : [ + "ref": "pkg:npm/iconv-lite@0.6.3", + "dependsOn": [ "pkg:npm/safer-buffer@2.1.2" ] }, { - "ref" : "pkg:npm/es-object-atoms@1.1.1", - "dependsOn" : [ + "ref": "pkg:npm/es-object-atoms@1.1.1", + "dependsOn": [ "pkg:npm/es-errors@1.3.0" ] }, { - "ref" : "pkg:npm/array-flatten@1.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/array-flatten@1.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/cookie-signature@1.0.6", - "dependsOn" : [ ] + "ref": "pkg:npm/cookie-signature@1.0.6", + "dependsOn": [] }, { - "ref" : "pkg:npm/cookie@0.7.1", - "dependsOn" : [ ] + "ref": "pkg:npm/cookie@0.7.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/encodeurl@2.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/encodeurl@2.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/escape-html@1.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/escape-html@1.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/etag@1.8.1", - "dependsOn" : [ ] + "ref": "pkg:npm/etag@1.8.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/finalhandler@1.3.1", - "dependsOn" : [ + "ref": "pkg:npm/finalhandler@1.3.1", + "dependsOn": [ "pkg:npm/debug@2.6.9", "pkg:npm/encodeurl@2.0.0", "pkg:npm/escape-html@1.0.3", @@ -2490,39 +2483,39 @@ ] }, { - "ref" : "pkg:npm/fresh@0.5.2", - "dependsOn" : [ ] + "ref": "pkg:npm/fresh@0.5.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/merge-descriptors@1.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/merge-descriptors@1.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/methods@1.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/methods@1.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/parseurl@1.3.3", - "dependsOn" : [ ] + "ref": "pkg:npm/parseurl@1.3.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/path-to-regexp@0.1.12", - "dependsOn" : [ ] + "ref": "pkg:npm/path-to-regexp@0.1.12", + "dependsOn": [] }, { - "ref" : "pkg:npm/proxy-addr@2.0.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/range-parser@1.2.1", - "dependsOn" : [ ] + "ref": "pkg:npm/range-parser@1.2.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/send@0.19.0", - "dependsOn" : [ + "ref": "pkg:npm/send@0.19.0", + "dependsOn": [ "pkg:npm/debug@2.6.9", "pkg:npm/depd@2.0.0", "pkg:npm/destroy@1.2.0", @@ -2539,8 +2532,8 @@ ] }, { - "ref" : "pkg:npm/serve-static@1.16.2", - "dependsOn" : [ + "ref": "pkg:npm/serve-static@1.16.2", + "dependsOn": [ "pkg:npm/encodeurl@2.0.0", "pkg:npm/escape-html@1.0.3", "pkg:npm/parseurl@1.3.3", @@ -2548,47 +2541,47 @@ ] }, { - "ref" : "pkg:npm/setprototypeof@1.2.0", - "dependsOn" : [ ] + "ref": "pkg:npm/setprototypeof@1.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/statuses@2.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/statuses@2.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/utils-merge@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/utils-merge@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/vary@1.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/vary@1.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/to-regex-range@5.0.1", - "dependsOn" : [ + "ref": "pkg:npm/to-regex-range@5.0.1", + "dependsOn": [ "pkg:npm/is-number@7.0.0" ] }, { - "ref" : "pkg:npm/foreground-child@3.3.1", - "dependsOn" : [ + "ref": "pkg:npm/foreground-child@3.3.1", + "dependsOn": [ "pkg:npm/cross-spawn@7.0.6", "pkg:npm/signal-exit@4.1.0" ] }, { - "ref" : "pkg:npm/signal-exit@4.1.0", - "dependsOn" : [ ] + "ref": "pkg:npm/signal-exit@4.1.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/fsevents%40patch:fsevents@2.3.3", - "dependsOn" : [ + "ref": "pkg:npm/fsevents%40patch:fsevents@2.3.3", + "dependsOn": [ "pkg:npm/node-gyp@11.2.0" ] }, { - "ref" : "pkg:npm/node-gyp@11.2.0", - "dependsOn" : [ + "ref": "pkg:npm/node-gyp@11.2.0", + "dependsOn": [ "pkg:npm/env-paths@2.2.1", "pkg:npm/exponential-backoff@3.1.2", "pkg:npm/graceful-fs@4.2.11", @@ -2602,147 +2595,147 @@ ] }, { - "ref" : "pkg:npm/es-define-property@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/es-define-property@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/get-proto@1.0.1", - "dependsOn" : [ + "ref": "pkg:npm/get-proto@1.0.1", + "dependsOn": [ "pkg:npm/dunder-proto@1.0.1", "pkg:npm/es-object-atoms@1.1.1" ] }, { - "ref" : "pkg:npm/has-symbols@1.1.0", - "dependsOn" : [ ] + "ref": "pkg:npm/has-symbols@1.1.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/hasown@2.0.2", - "dependsOn" : [ + "ref": "pkg:npm/hasown@2.0.2", + "dependsOn": [ "pkg:npm/function-bind@1.1.2" ] }, { - "ref" : "pkg:npm/math-intrinsics@1.1.0", - "dependsOn" : [ ] + "ref": "pkg:npm/math-intrinsics@1.1.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/jackspeak@3.4.3", - "dependsOn" : [ + "ref": "pkg:npm/jackspeak@3.4.3", + "dependsOn": [ "pkg:npm/%40isaacs/cliui@8.0.2", "pkg:npm/%40pkgjs/parseargs@0.11.0" ] }, { - "ref" : "pkg:npm/minimatch@9.0.5", - "dependsOn" : [ + "ref": "pkg:npm/minimatch@9.0.5", + "dependsOn": [ "pkg:npm/brace-expansion@2.0.1" ] }, { - "ref" : "pkg:npm/package-json-from-dist@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/package-json-from-dist@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/path-scurry@1.11.1", - "dependsOn" : [ + "ref": "pkg:npm/path-scurry@1.11.1", + "dependsOn": [ "pkg:npm/lru-cache@10.4.3", "pkg:npm/minipass@7.1.2" ] }, { - "ref" : "pkg:npm/inherits@2.0.4", - "dependsOn" : [ ] + "ref": "pkg:npm/inherits@2.0.4", + "dependsOn": [] }, { - "ref" : "pkg:npm/toidentifier@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/toidentifier@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/safer-buffer@2.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/safer-buffer@2.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/ip-address@9.0.5", - "dependsOn" : [ + "ref": "pkg:npm/ip-address@9.0.5", + "dependsOn": [ "pkg:npm/jsbn@1.1.0", "pkg:npm/sprintf-js@1.1.3" ] }, { - "ref" : "pkg:npm/jsbn@1.1.0", - "dependsOn" : [ ] + "ref": "pkg:npm/jsbn@1.1.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/sprintf-js@1.1.3", - "dependsOn" : [ ] + "ref": "pkg:npm/sprintf-js@1.1.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/binary-extensions@2.3.0", - "dependsOn" : [ ] + "ref": "pkg:npm/binary-extensions@2.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/is-extglob@2.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/is-extglob@2.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40pkgjs/parseargs@0.11.0", - "dependsOn" : [ ] + "ref": "pkg:npm/%40pkgjs/parseargs@0.11.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/jws@3.2.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/lodash.includes@4.3.0", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.includes@4.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isboolean@3.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isboolean@3.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isinteger@4.0.4", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isinteger@4.0.4", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isnumber@3.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isnumber@3.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isplainobject@4.0.6", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isplainobject@4.0.6", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isstring@4.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isstring@4.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.once@4.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.once@4.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/semver@5.7.2", - "dependsOn" : [ ] + "ref": "pkg:npm/semver@5.7.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/jwa@1.4.1", - "dependsOn" : [ + "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/buffer-equal-constant-time@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/make-fetch-happen@14.0.3", - "dependsOn" : [ + "ref": "pkg:npm/make-fetch-happen@14.0.3", + "dependsOn": [ "pkg:npm/%40npmcli/agent@3.0.0", "pkg:npm/cacache@19.0.1", "pkg:npm/http-cache-semantics@4.1.1", @@ -2757,12 +2750,12 @@ ] }, { - "ref" : "pkg:npm/http-cache-semantics@4.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/http-cache-semantics@4.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/minipass-fetch@4.0.1", - "dependsOn" : [ + "ref": "pkg:npm/minipass-fetch@4.0.1", + "dependsOn": [ "pkg:npm/encoding@0.1.13", "pkg:npm/minipass-sized@1.0.3", "pkg:npm/minipass@7.1.2", @@ -2770,55 +2763,55 @@ ] }, { - "ref" : "pkg:npm/negotiator@1.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/negotiator@1.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/proc-log@5.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/proc-log@5.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/promise-retry@2.0.1", - "dependsOn" : [ + "ref": "pkg:npm/promise-retry@2.0.1", + "dependsOn": [ "pkg:npm/err-code@2.0.3", "pkg:npm/retry@0.12.0" ] }, { - "ref" : "pkg:npm/mime-db@1.52.0", - "dependsOn" : [ ] + "ref": "pkg:npm/mime-db@1.52.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/minimatch@3.1.2", - "dependsOn" : [ + "ref": "pkg:npm/minimatch@3.1.2", + "dependsOn": [ "pkg:npm/brace-expansion@1.1.11" ] }, { - "ref" : "pkg:npm/minipass-sized@1.0.3", - "dependsOn" : [ + "ref": "pkg:npm/minipass-sized@1.0.3", + "dependsOn": [ "pkg:npm/minipass@3.3.6" ] }, { - "ref" : "pkg:npm/minizlib@3.0.2", - "dependsOn" : [ + "ref": "pkg:npm/minizlib@3.0.2", + "dependsOn": [ "pkg:npm/minipass@7.1.2" ] }, { - "ref" : "pkg:npm/minipass@3.3.6", - "dependsOn" : [ + "ref": "pkg:npm/minipass@3.3.6", + "dependsOn": [ "pkg:npm/yallist@4.0.0" ] }, { - "ref" : "pkg:npm/yallist@4.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/yallist@4.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/mongodb@3.7.4", - "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", @@ -2828,40 +2821,40 @@ ] }, { - "ref" : "pkg:npm/bson@1.1.6", - "dependsOn" : [ ] + "ref": "pkg:npm/bson@1.1.6", + "dependsOn": [] }, { - "ref" : "pkg:npm/denque@1.5.1", - "dependsOn" : [ ] + "ref": "pkg:npm/denque@1.5.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/optional-require@1.1.8", - "dependsOn" : [ + "ref": "pkg:npm/optional-require@1.1.8", + "dependsOn": [ "pkg:npm/require-at@1.0.6" ] }, { - "ref" : "pkg:npm/saslprep@1.0.3", - "dependsOn" : [ + "ref": "pkg:npm/saslprep@1.0.3", + "dependsOn": [ "pkg:npm/sparse-bitfield@3.0.3" ] }, { - "ref" : "pkg:npm/kareem@2.3.2", - "dependsOn" : [ ] + "ref": "pkg:npm/kareem@2.3.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/mongoose-legacy-pluralize@1.0.2", - "dependsOn" : [ ] + "ref": "pkg:npm/mongoose-legacy-pluralize@1.0.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/mpath@0.8.4", - "dependsOn" : [ ] + "ref": "pkg:npm/mpath@0.8.4", + "dependsOn": [] }, { - "ref" : "pkg:npm/mquery@3.2.5", - "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", @@ -2870,123 +2863,123 @@ ] }, { - "ref" : "pkg:npm/ms@2.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/ms@2.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/optional-require@1.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/optional-require@1.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/regexp-clone@1.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/regexp-clone@1.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/sift@13.5.2", - "dependsOn" : [ ] + "ref": "pkg:npm/sift@13.5.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/sliced@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/sliced@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/bluebird@3.5.1", - "dependsOn" : [ ] + "ref": "pkg:npm/bluebird@3.5.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/safe-buffer@5.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/safe-buffer@5.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/env-paths@2.2.1", - "dependsOn" : [ ] + "ref": "pkg:npm/env-paths@2.2.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/exponential-backoff@3.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/exponential-backoff@3.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/graceful-fs@4.2.11", - "dependsOn" : [ ] + "ref": "pkg:npm/graceful-fs@4.2.11", + "dependsOn": [] }, { - "ref" : "pkg:npm/nopt@8.1.0", - "dependsOn" : [ + "ref": "pkg:npm/nopt@8.1.0", + "dependsOn": [ "pkg:npm/abbrev@3.0.1" ] }, { - "ref" : "pkg:npm/tinyglobby@0.2.12", - "dependsOn" : [ + "ref": "pkg:npm/tinyglobby@0.2.12", + "dependsOn": [ "pkg:npm/fdir@6.4.3", "pkg:npm/picomatch@4.0.2" ] }, { - "ref" : "pkg:npm/which@5.0.0", - "dependsOn" : [ + "ref": "pkg:npm/which@5.0.0", + "dependsOn": [ "pkg:npm/isexe@3.1.1" ] }, { - "ref" : "pkg:npm/ignore-by-default@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/ignore-by-default@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/pstree.remy@1.1.8", - "dependsOn" : [ ] + "ref": "pkg:npm/pstree.remy@1.1.8", + "dependsOn": [] }, { - "ref" : "pkg:npm/simple-update-notifier@1.1.0", - "dependsOn" : [ + "ref": "pkg:npm/simple-update-notifier@1.1.0", + "dependsOn": [ "pkg:npm/semver@7.0.0" ] }, { - "ref" : "pkg:npm/supports-color@5.5.0", - "dependsOn" : [ + "ref": "pkg:npm/supports-color@5.5.0", + "dependsOn": [ "pkg:npm/has-flag@3.0.0" ] }, { - "ref" : "pkg:npm/touch@3.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/touch@3.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/undefsafe@2.0.5", - "dependsOn" : [ ] + "ref": "pkg:npm/undefsafe@2.0.5", + "dependsOn": [] }, { - "ref" : "pkg:npm/abbrev@3.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/abbrev@3.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/ee-first@1.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/ee-first@1.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/require-at@1.0.6", - "dependsOn" : [ ] + "ref": "pkg:npm/require-at@1.0.6", + "dependsOn": [] }, { - "ref" : "pkg:npm/err-code@2.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/err-code@2.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/retry@0.12.0", - "dependsOn" : [ ] + "ref": "pkg:npm/retry@0.12.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/forwarded@0.2.0", - "dependsOn" : [ ] + "ref": "pkg:npm/forwarded@0.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/ipaddr.js@1.9.1", - "dependsOn" : [ ] + "ref": "pkg:npm/ipaddr.js@1.9.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/side-channel@1.1.0", - "dependsOn" : [ + "ref": "pkg:npm/side-channel@1.1.0", + "dependsOn": [ "pkg:npm/es-errors@1.3.0", "pkg:npm/object-inspect@1.13.4", "pkg:npm/side-channel-list@1.0.0", @@ -2995,59 +2988,59 @@ ] }, { - "ref" : "pkg:npm/core-util-is@1.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/core-util-is@1.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/isarray@1.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/isarray@1.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/process-nextick-args@2.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/process-nextick-args@2.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/string_decoder@1.1.1", - "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/util-deprecate@1.0.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/sparse-bitfield@3.0.3", - "dependsOn" : [ + "ref": "pkg:npm/sparse-bitfield@3.0.3", + "dependsOn": [ "pkg:npm/memory-pager@1.5.0" ] }, { - "ref" : "pkg:npm/encodeurl@1.0.2", - "dependsOn" : [ ] + "ref": "pkg:npm/encodeurl@1.0.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/mime@1.6.0", - "dependsOn" : [ ] + "ref": "pkg:npm/mime@1.6.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/shebang-regex@3.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/shebang-regex@3.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/side-channel-list@1.0.0", - "dependsOn" : [ + "ref": "pkg:npm/side-channel-list@1.0.0", + "dependsOn": [ "pkg:npm/es-errors@1.3.0", "pkg:npm/object-inspect@1.13.4" ] }, { - "ref" : "pkg:npm/object-inspect@1.13.4", - "dependsOn" : [ ] + "ref": "pkg:npm/object-inspect@1.13.4", + "dependsOn": [] }, { - "ref" : "pkg:npm/side-channel-map@1.0.1", - "dependsOn" : [ + "ref": "pkg:npm/side-channel-map@1.0.1", + "dependsOn": [ "pkg:npm/call-bound@1.0.4", "pkg:npm/es-errors@1.3.0", "pkg:npm/get-intrinsic@1.3.0", @@ -3055,8 +3048,8 @@ ] }, { - "ref" : "pkg:npm/side-channel-weakmap@1.0.2", - "dependsOn" : [ + "ref": "pkg:npm/side-channel-weakmap@1.0.2", + "dependsOn": [ "pkg:npm/call-bound@1.0.4", "pkg:npm/es-errors@1.3.0", "pkg:npm/get-intrinsic@1.3.0", @@ -3065,101 +3058,101 @@ ] }, { - "ref" : "pkg:npm/semver@7.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/semver@7.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/socks@2.8.4", - "dependsOn" : [ + "ref": "pkg:npm/socks@2.8.4", + "dependsOn": [ "pkg:npm/ip-address@9.0.5", "pkg:npm/smart-buffer@4.2.0" ] }, { - "ref" : "pkg:npm/smart-buffer@4.2.0", - "dependsOn" : [ ] + "ref": "pkg:npm/smart-buffer@4.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/memory-pager@1.5.0", - "dependsOn" : [ ] + "ref": "pkg:npm/memory-pager@1.5.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/emoji-regex@8.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/emoji-regex@8.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/is-fullwidth-code-point@3.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/is-fullwidth-code-point@3.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/eastasianwidth@0.2.0", - "dependsOn" : [ ] + "ref": "pkg:npm/eastasianwidth@0.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/emoji-regex@9.2.2", - "dependsOn" : [ ] + "ref": "pkg:npm/emoji-regex@9.2.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/ansi-regex@5.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/ansi-regex@5.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/ansi-regex@6.1.0", - "dependsOn" : [ ] + "ref": "pkg:npm/ansi-regex@6.1.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/has-flag@3.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/has-flag@3.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/chownr@3.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/chownr@3.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/mkdirp@3.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/mkdirp@3.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/yallist@5.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/yallist@5.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/fdir@6.4.3", - "dependsOn" : [ ] + "ref": "pkg:npm/fdir@6.4.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/picomatch@4.0.2", - "dependsOn" : [ ] + "ref": "pkg:npm/picomatch@4.0.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/is-number@7.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/is-number@7.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/media-typer@0.3.0", - "dependsOn" : [ ] + "ref": "pkg:npm/media-typer@0.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/unique-slug@5.0.0", - "dependsOn" : [ + "ref": "pkg:npm/unique-slug@5.0.0", + "dependsOn": [ "pkg:npm/imurmurhash@0.1.4" ] }, { - "ref" : "pkg:npm/imurmurhash@0.1.4", - "dependsOn" : [ ] + "ref": "pkg:npm/imurmurhash@0.1.4", + "dependsOn": [] }, { - "ref" : "pkg:npm/isexe@2.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/isexe@2.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/isexe@3.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/isexe@3.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/ansi-styles@6.2.1", - "dependsOn" : [ ] + "ref": "pkg:npm/ansi-styles@6.2.1", + "dependsOn": [] } ] -} \ No newline at end of file +} diff --git a/test/providers/tst_manifests/yarn-classic/package_json_deps_with_exhortignore_object/stack_expected_sbom.json b/test/providers/tst_manifests/yarn-classic/package_json_deps_with_exhortignore_object/stack_expected_sbom.json index 552a0e7b..2115ef6d 100644 --- a/test/providers/tst_manifests/yarn-classic/package_json_deps_with_exhortignore_object/stack_expected_sbom.json +++ b/test/providers/tst_manifests/yarn-classic/package_json_deps_with_exhortignore_object/stack_expected_sbom.json @@ -1,1125 +1,1118 @@ { - "bomFormat" : "CycloneDX", - "specVersion" : "1.4", - "version" : 1, - "metadata" : { - "timestamp" : "2025-04-16T14:36:52Z", - "component" : { - "type" : "application", - "bom-ref" : "pkg:npm/backend@1.0.0", - "name" : "backend", - "version" : "1.0.0", - "purl" : "pkg:npm/backend@1.0.0" + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2025-04-16T14:36:52Z", + "component": { + "type": "application", + "bom-ref": "pkg:npm/backend@1.0.0", + "name": "backend", + "version": "1.0.0", + "purl": "pkg:npm/backend@1.0.0" } }, - "components" : [ + "components": [ { - "type" : "application", - "bom-ref" : "pkg:npm/backend@1.0.0", - "name" : "backend", - "version" : "1.0.0", - "purl" : "pkg:npm/backend@1.0.0" + "type": "library", + "bom-ref": "pkg:npm/%40hapi/joi@17.1.1", + "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" : "joi", - "version" : "17.1.1", - "purl" : "pkg:npm/%40hapi/joi@17.1.1" + "type": "library", + "bom-ref": "pkg:npm/backend@0.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" : "backend", - "version" : "0.0.0", - "purl" : "pkg:npm/backend@0.0.0" + "type": "library", + "bom-ref": "pkg:npm/bcryptjs@2.4.3", + "name": "bcryptjs", + "version": "2.4.3", + "purl": "pkg:npm/bcryptjs@2.4.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/bcryptjs@2.4.3", - "name" : "bcryptjs", - "version" : "2.4.3", - "purl" : "pkg:npm/bcryptjs@2.4.3" + "type": "library", + "bom-ref": "pkg:npm/dotenv@8.6.0", + "name": "dotenv", + "version": "8.6.0", + "purl": "pkg:npm/dotenv@8.6.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/dotenv@8.6.0", - "name" : "dotenv", - "version" : "8.6.0", - "purl" : "pkg:npm/dotenv@8.6.0" + "type": "library", + "bom-ref": "pkg:npm/express@4.21.2", + "name": "express", + "version": "4.21.2", + "purl": "pkg:npm/express@4.21.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/express@4.21.2", - "name" : "express", - "version" : "4.21.2", - "purl" : "pkg:npm/express@4.21.2" + "type": "library", + "bom-ref": "pkg:npm/mongoose@5.13.23", + "name": "mongoose", + "version": "5.13.23", + "purl": "pkg:npm/mongoose@5.13.23" }, { - "type" : "library", - "bom-ref" : "pkg:npm/mongoose@5.13.23", - "name" : "mongoose", - "version" : "5.13.23", - "purl" : "pkg:npm/mongoose@5.13.23" + "type": "library", + "bom-ref": "pkg:npm/nodemon@2.0.22", + "name": "nodemon", + "version": "2.0.22", + "purl": "pkg:npm/nodemon@2.0.22" }, { - "type" : "library", - "bom-ref" : "pkg:npm/nodemon@2.0.22", - "name" : "nodemon", - "version" : "2.0.22", - "purl" : "pkg:npm/nodemon@2.0.22" + "type": "library", + "bom-ref": "pkg:npm/axios@0.19.2", + "name": "axios", + "version": "0.19.2", + "purl": "pkg:npm/axios@0.19.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/axios@0.19.2", - "name" : "axios", - "version" : "0.19.2", - "purl" : "pkg:npm/axios@0.19.2" + "type": "library", + "bom-ref": "pkg:npm/debug@2.6.9", + "name": "debug", + "version": "2.6.9", + "purl": "pkg:npm/debug@2.6.9" }, { - "type" : "library", - "bom-ref" : "pkg:npm/debug@2.6.9", - "name" : "debug", - "version" : "2.6.9", - "purl" : "pkg:npm/debug@2.6.9" + "type": "library", + "bom-ref": "pkg:npm/ms@2.1.3", + "name": "ms", + "version": "2.1.3", + "purl": "pkg:npm/ms@2.1.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/ms@2.1.3", - "name" : "ms", - "version" : "2.1.3", - "purl" : "pkg:npm/ms@2.1.3" + "type": "library", + "bom-ref": "pkg:npm/ms@2.0.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" : "ms", - "version" : "2.0.0", - "purl" : "pkg:npm/ms@2.0.0" + "type": "library", + "bom-ref": "pkg:npm/%40hapi/address@4.1.0", + "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" : "address", - "version" : "4.1.0", - "purl" : "pkg:npm/%40hapi/address@4.1.0" + "type": "library", + "bom-ref": "pkg:npm/%40hapi/formula@2.0.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" : "formula", - "version" : "2.0.0", - "purl" : "pkg:npm/%40hapi/formula@2.0.0" + "type": "library", + "bom-ref": "pkg:npm/%40hapi/hoek@9.3.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" : "hoek", - "version" : "9.3.0", - "purl" : "pkg:npm/%40hapi/hoek@9.3.0" + "type": "library", + "bom-ref": "pkg:npm/%40hapi/pinpoint@2.0.1", + "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" : "pinpoint", - "version" : "2.0.1", - "purl" : "pkg:npm/%40hapi/pinpoint@2.0.1" + "type": "library", + "bom-ref": "pkg:npm/%40hapi/topo@5.1.0", + "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", - "group" : "@hapi", - "name" : "topo", - "version" : "5.1.0", - "purl" : "pkg:npm/%40hapi/topo@5.1.0" + "type": "library", + "bom-ref": "pkg:npm/accepts@1.3.8", + "name": "accepts", + "version": "1.3.8", + "purl": "pkg:npm/accepts@1.3.8" }, { - "type" : "library", - "bom-ref" : "pkg:npm/accepts@1.3.8", - "name" : "accepts", - "version" : "1.3.8", - "purl" : "pkg:npm/accepts@1.3.8" + "type": "library", + "bom-ref": "pkg:npm/array-flatten@1.1.1", + "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" : "array-flatten", - "version" : "1.1.1", - "purl" : "pkg:npm/array-flatten@1.1.1" + "type": "library", + "bom-ref": "pkg:npm/body-parser@1.20.3", + "name": "body-parser", + "version": "1.20.3", + "purl": "pkg:npm/body-parser@1.20.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/body-parser@1.20.3", - "name" : "body-parser", - "version" : "1.20.3", - "purl" : "pkg:npm/body-parser@1.20.3" + "type": "library", + "bom-ref": "pkg:npm/content-disposition@0.5.4", + "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" : "content-disposition", - "version" : "0.5.4", - "purl" : "pkg:npm/content-disposition@0.5.4" + "type": "library", + "bom-ref": "pkg:npm/content-type@1.0.5", + "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" : "content-type", - "version" : "1.0.5", - "purl" : "pkg:npm/content-type@1.0.5" + "type": "library", + "bom-ref": "pkg:npm/cookie@0.7.1", + "name": "cookie", + "version": "0.7.1", + "purl": "pkg:npm/cookie@0.7.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/cookie@0.7.1", - "name" : "cookie", - "version" : "0.7.1", - "purl" : "pkg:npm/cookie@0.7.1" + "type": "library", + "bom-ref": "pkg:npm/cookie-signature@1.0.6", + "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-signature", - "version" : "1.0.6", - "purl" : "pkg:npm/cookie-signature@1.0.6" + "type": "library", + "bom-ref": "pkg:npm/depd@2.0.0", + "name": "depd", + "version": "2.0.0", + "purl": "pkg:npm/depd@2.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/depd@2.0.0", - "name" : "depd", - "version" : "2.0.0", - "purl" : "pkg:npm/depd@2.0.0" + "type": "library", + "bom-ref": "pkg:npm/encodeurl@2.0.0", + "name": "encodeurl", + "version": "2.0.0", + "purl": "pkg:npm/encodeurl@2.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/encodeurl@2.0.0", - "name" : "encodeurl", - "version" : "2.0.0", - "purl" : "pkg:npm/encodeurl@2.0.0" + "type": "library", + "bom-ref": "pkg:npm/escape-html@1.0.3", + "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" : "escape-html", - "version" : "1.0.3", - "purl" : "pkg:npm/escape-html@1.0.3" + "type": "library", + "bom-ref": "pkg:npm/etag@1.8.1", + "name": "etag", + "version": "1.8.1", + "purl": "pkg:npm/etag@1.8.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/etag@1.8.1", - "name" : "etag", - "version" : "1.8.1", - "purl" : "pkg:npm/etag@1.8.1" + "type": "library", + "bom-ref": "pkg:npm/finalhandler@1.3.1", + "name": "finalhandler", + "version": "1.3.1", + "purl": "pkg:npm/finalhandler@1.3.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/finalhandler@1.3.1", - "name" : "finalhandler", - "version" : "1.3.1", - "purl" : "pkg:npm/finalhandler@1.3.1" + "type": "library", + "bom-ref": "pkg:npm/fresh@0.5.2", + "name": "fresh", + "version": "0.5.2", + "purl": "pkg:npm/fresh@0.5.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/fresh@0.5.2", - "name" : "fresh", - "version" : "0.5.2", - "purl" : "pkg:npm/fresh@0.5.2" + "type": "library", + "bom-ref": "pkg:npm/http-errors@2.0.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" : "http-errors", - "version" : "2.0.0", - "purl" : "pkg:npm/http-errors@2.0.0" + "type": "library", + "bom-ref": "pkg:npm/merge-descriptors@1.0.3", + "name": "merge-descriptors", + "version": "1.0.3", + "purl": "pkg:npm/merge-descriptors@1.0.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/merge-descriptors@1.0.3", - "name" : "merge-descriptors", - "version" : "1.0.3", - "purl" : "pkg:npm/merge-descriptors@1.0.3" + "type": "library", + "bom-ref": "pkg:npm/methods@1.1.2", + "name": "methods", + "version": "1.1.2", + "purl": "pkg:npm/methods@1.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/methods@1.1.2", - "name" : "methods", - "version" : "1.1.2", - "purl" : "pkg:npm/methods@1.1.2" + "type": "library", + "bom-ref": "pkg:npm/on-finished@2.4.1", + "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" : "on-finished", - "version" : "2.4.1", - "purl" : "pkg:npm/on-finished@2.4.1" + "type": "library", + "bom-ref": "pkg:npm/parseurl@1.3.3", + "name": "parseurl", + "version": "1.3.3", + "purl": "pkg:npm/parseurl@1.3.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/parseurl@1.3.3", - "name" : "parseurl", - "version" : "1.3.3", - "purl" : "pkg:npm/parseurl@1.3.3" + "type": "library", + "bom-ref": "pkg:npm/path-to-regexp@0.1.12", + "name": "path-to-regexp", + "version": "0.1.12", + "purl": "pkg:npm/path-to-regexp@0.1.12" }, { - "type" : "library", - "bom-ref" : "pkg:npm/path-to-regexp@0.1.12", - "name" : "path-to-regexp", - "version" : "0.1.12", - "purl" : "pkg:npm/path-to-regexp@0.1.12" + "type": "library", + "bom-ref": "pkg:npm/proxy-addr@2.0.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" : "proxy-addr", - "version" : "2.0.7", - "purl" : "pkg:npm/proxy-addr@2.0.7" + "type": "library", + "bom-ref": "pkg:npm/qs@6.13.0", + "name": "qs", + "version": "6.13.0", + "purl": "pkg:npm/qs@6.13.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/qs@6.13.0", - "name" : "qs", - "version" : "6.13.0", - "purl" : "pkg:npm/qs@6.13.0" + "type": "library", + "bom-ref": "pkg:npm/range-parser@1.2.1", + "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" : "range-parser", - "version" : "1.2.1", - "purl" : "pkg:npm/range-parser@1.2.1" + "type": "library", + "bom-ref": "pkg:npm/safe-buffer@5.2.1", + "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" : "safe-buffer", - "version" : "5.2.1", - "purl" : "pkg:npm/safe-buffer@5.2.1" + "type": "library", + "bom-ref": "pkg:npm/send@0.19.0", + "name": "send", + "version": "0.19.0", + "purl": "pkg:npm/send@0.19.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/send@0.19.0", - "name" : "send", - "version" : "0.19.0", - "purl" : "pkg:npm/send@0.19.0" + "type": "library", + "bom-ref": "pkg:npm/serve-static@1.16.2", + "name": "serve-static", + "version": "1.16.2", + "purl": "pkg:npm/serve-static@1.16.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/serve-static@1.16.2", - "name" : "serve-static", - "version" : "1.16.2", - "purl" : "pkg:npm/serve-static@1.16.2" + "type": "library", + "bom-ref": "pkg:npm/setprototypeof@1.2.0", + "name": "setprototypeof", + "version": "1.2.0", + "purl": "pkg:npm/setprototypeof@1.2.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/setprototypeof@1.2.0", - "name" : "setprototypeof", - "version" : "1.2.0", - "purl" : "pkg:npm/setprototypeof@1.2.0" + "type": "library", + "bom-ref": "pkg:npm/statuses@2.0.1", + "name": "statuses", + "version": "2.0.1", + "purl": "pkg:npm/statuses@2.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/statuses@2.0.1", - "name" : "statuses", - "version" : "2.0.1", - "purl" : "pkg:npm/statuses@2.0.1" + "type": "library", + "bom-ref": "pkg:npm/type-is@1.6.18", + "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" : "type-is", - "version" : "1.6.18", - "purl" : "pkg:npm/type-is@1.6.18" + "type": "library", + "bom-ref": "pkg:npm/utils-merge@1.0.1", + "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" : "utils-merge", - "version" : "1.0.1", - "purl" : "pkg:npm/utils-merge@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/vary@1.1.2", + "name": "vary", + "version": "1.1.2", + "purl": "pkg:npm/vary@1.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/vary@1.1.2", - "name" : "vary", - "version" : "1.1.2", - "purl" : "pkg:npm/vary@1.1.2" + "type": "library", + "bom-ref": "pkg:npm/jws@3.2.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" : "jws", - "version" : "3.2.2", - "purl" : "pkg:npm/jws@3.2.2" + "type": "library", + "bom-ref": "pkg:npm/lodash.includes@4.3.0", + "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.includes", - "version" : "4.3.0", - "purl" : "pkg:npm/lodash.includes@4.3.0" + "type": "library", + "bom-ref": "pkg:npm/lodash.isboolean@3.0.3", + "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.isboolean", - "version" : "3.0.3", - "purl" : "pkg:npm/lodash.isboolean@3.0.3" + "type": "library", + "bom-ref": "pkg:npm/lodash.isinteger@4.0.4", + "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.isinteger", - "version" : "4.0.4", - "purl" : "pkg:npm/lodash.isinteger@4.0.4" + "type": "library", + "bom-ref": "pkg:npm/lodash.isnumber@3.0.3", + "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.isnumber", - "version" : "3.0.3", - "purl" : "pkg:npm/lodash.isnumber@3.0.3" + "type": "library", + "bom-ref": "pkg:npm/lodash.isplainobject@4.0.6", + "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.isplainobject", - "version" : "4.0.6", - "purl" : "pkg:npm/lodash.isplainobject@4.0.6" + "type": "library", + "bom-ref": "pkg:npm/lodash.isstring@4.0.1", + "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.isstring", - "version" : "4.0.1", - "purl" : "pkg:npm/lodash.isstring@4.0.1" + "type": "library", + "bom-ref": "pkg:npm/lodash.once@4.1.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" : "lodash.once", - "version" : "4.1.1", - "purl" : "pkg:npm/lodash.once@4.1.1" + "type": "library", + "bom-ref": "pkg:npm/semver@5.7.2", + "name": "semver", + "version": "5.7.2", + "purl": "pkg:npm/semver@5.7.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/semver@5.7.2", - "name" : "semver", - "version" : "5.7.2", - "purl" : "pkg:npm/semver@5.7.2" + "type": "library", + "bom-ref": "pkg:npm/%40types/bson@4.0.5", + "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" : "bson", - "version" : "4.0.5", - "purl" : "pkg:npm/%40types/bson@4.0.5" + "type": "library", + "bom-ref": "pkg:npm/%40types/mongodb@3.6.20", + "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", - "group" : "@types", - "name" : "mongodb", - "version" : "3.6.20", - "purl" : "pkg:npm/%40types/mongodb@3.6.20" + "type": "library", + "bom-ref": "pkg:npm/bson@1.1.6", + "name": "bson", + "version": "1.1.6", + "purl": "pkg:npm/bson@1.1.6" }, { - "type" : "library", - "bom-ref" : "pkg:npm/bson@1.1.6", - "name" : "bson", - "version" : "1.1.6", - "purl" : "pkg:npm/bson@1.1.6" + "type": "library", + "bom-ref": "pkg:npm/kareem@2.3.2", + "name": "kareem", + "version": "2.3.2", + "purl": "pkg:npm/kareem@2.3.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/kareem@2.3.2", - "name" : "kareem", - "version" : "2.3.2", - "purl" : "pkg:npm/kareem@2.3.2" + "type": "library", + "bom-ref": "pkg:npm/mongodb@3.7.4", + "name": "mongodb", + "version": "3.7.4", + "purl": "pkg:npm/mongodb@3.7.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/mongodb@3.7.4", - "name" : "mongodb", - "version" : "3.7.4", - "purl" : "pkg:npm/mongodb@3.7.4" + "type": "library", + "bom-ref": "pkg:npm/mongoose-legacy-pluralize@1.0.2", + "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" : "mongoose-legacy-pluralize", - "version" : "1.0.2", - "purl" : "pkg:npm/mongoose-legacy-pluralize@1.0.2" + "type": "library", + "bom-ref": "pkg:npm/mpath@0.8.4", + "name": "mpath", + "version": "0.8.4", + "purl": "pkg:npm/mpath@0.8.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/mpath@0.8.4", - "name" : "mpath", - "version" : "0.8.4", - "purl" : "pkg:npm/mpath@0.8.4" + "type": "library", + "bom-ref": "pkg:npm/mquery@3.2.5", + "name": "mquery", + "version": "3.2.5", + "purl": "pkg:npm/mquery@3.2.5" }, { - "type" : "library", - "bom-ref" : "pkg:npm/mquery@3.2.5", - "name" : "mquery", - "version" : "3.2.5", - "purl" : "pkg:npm/mquery@3.2.5" + "type": "library", + "bom-ref": "pkg:npm/optional-require@1.0.3", + "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" : "optional-require", - "version" : "1.0.3", - "purl" : "pkg:npm/optional-require@1.0.3" + "type": "library", + "bom-ref": "pkg:npm/regexp-clone@1.0.0", + "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" : "regexp-clone", - "version" : "1.0.0", - "purl" : "pkg:npm/regexp-clone@1.0.0" + "type": "library", + "bom-ref": "pkg:npm/sift@13.5.2", + "name": "sift", + "version": "13.5.2", + "purl": "pkg:npm/sift@13.5.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/sift@13.5.2", - "name" : "sift", - "version" : "13.5.2", - "purl" : "pkg:npm/sift@13.5.2" + "type": "library", + "bom-ref": "pkg:npm/sliced@1.0.1", + "name": "sliced", + "version": "1.0.1", + "purl": "pkg:npm/sliced@1.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/sliced@1.0.1", - "name" : "sliced", - "version" : "1.0.1", - "purl" : "pkg:npm/sliced@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/ms@2.1.2", + "name": "ms", + "version": "2.1.2", + "purl": "pkg:npm/ms@2.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/ms@2.1.2", - "name" : "ms", - "version" : "2.1.2", - "purl" : "pkg:npm/ms@2.1.2" + "type": "library", + "bom-ref": "pkg:npm/chokidar@3.6.0", + "name": "chokidar", + "version": "3.6.0", + "purl": "pkg:npm/chokidar@3.6.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/chokidar@3.6.0", - "name" : "chokidar", - "version" : "3.6.0", - "purl" : "pkg:npm/chokidar@3.6.0" + "type": "library", + "bom-ref": "pkg:npm/ignore-by-default@1.0.1", + "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" : "ignore-by-default", - "version" : "1.0.1", - "purl" : "pkg:npm/ignore-by-default@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/minimatch@3.1.2", + "name": "minimatch", + "version": "3.1.2", + "purl": "pkg:npm/minimatch@3.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/minimatch@3.1.2", - "name" : "minimatch", - "version" : "3.1.2", - "purl" : "pkg:npm/minimatch@3.1.2" + "type": "library", + "bom-ref": "pkg:npm/pstree.remy@1.1.8", + "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" : "pstree.remy", - "version" : "1.1.8", - "purl" : "pkg:npm/pstree.remy@1.1.8" + "type": "library", + "bom-ref": "pkg:npm/simple-update-notifier@1.1.0", + "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" : "simple-update-notifier", - "version" : "1.1.0", - "purl" : "pkg:npm/simple-update-notifier@1.1.0" + "type": "library", + "bom-ref": "pkg:npm/supports-color@5.5.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" : "supports-color", - "version" : "5.5.0", - "purl" : "pkg:npm/supports-color@5.5.0" + "type": "library", + "bom-ref": "pkg:npm/touch@3.1.1", + "name": "touch", + "version": "3.1.1", + "purl": "pkg:npm/touch@3.1.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/touch@3.1.1", - "name" : "touch", - "version" : "3.1.1", - "purl" : "pkg:npm/touch@3.1.1" + "type": "library", + "bom-ref": "pkg:npm/undefsafe@2.0.5", + "name": "undefsafe", + "version": "2.0.5", + "purl": "pkg:npm/undefsafe@2.0.5" }, { - "type" : "library", - "bom-ref" : "pkg:npm/undefsafe@2.0.5", - "name" : "undefsafe", - "version" : "2.0.5", - "purl" : "pkg:npm/undefsafe@2.0.5" + "type": "library", + "bom-ref": "pkg:npm/debug@3.2.7", + "name": "debug", + "version": "3.2.7", + "purl": "pkg:npm/debug@3.2.7" }, { - "type" : "library", - "bom-ref" : "pkg:npm/debug@3.2.7", - "name" : "debug", - "version" : "3.2.7", - "purl" : "pkg:npm/debug@3.2.7" + "type": "library", + "bom-ref": "pkg:npm/follow-redirects@1.5.10", + "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" : "follow-redirects", - "version" : "1.5.10", - "purl" : "pkg:npm/follow-redirects@1.5.10" + "type": "library", + "bom-ref": "pkg:npm/%40types/node@22.14.1", + "group": "@types", + "name": "node", + "version": "22.14.1", + "purl": "pkg:npm/%40types/node@22.14.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/%40types/node@22.14.1", - "group" : "@types", - "name" : "node", - "version" : "22.14.1", - "purl" : "pkg:npm/%40types/node@22.14.1" + "type": "library", + "bom-ref": "pkg:npm/%40types/bson@4.2.4", + "group": "@types", + "name": "bson", + "version": "4.2.4", + "purl": "pkg:npm/%40types/bson@4.2.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/%40types/bson@4.2.4", - "group" : "@types", - "name" : "bson", - "version" : "4.2.4", - "purl" : "pkg:npm/%40types/bson@4.2.4" + "type": "library", + "bom-ref": "pkg:npm/bson@6.10.3", + "name": "bson", + "version": "6.10.3", + "purl": "pkg:npm/bson@6.10.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/bson@6.10.3", - "name" : "bson", - "version" : "6.10.3", - "purl" : "pkg:npm/bson@6.10.3" + "type": "library", + "bom-ref": "pkg:npm/mime-types@2.1.35", + "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-types", - "version" : "2.1.35", - "purl" : "pkg:npm/mime-types@2.1.35" + "type": "library", + "bom-ref": "pkg:npm/negotiator@0.6.3", + "name": "negotiator", + "version": "0.6.3", + "purl": "pkg:npm/negotiator@0.6.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/negotiator@0.6.3", - "name" : "negotiator", - "version" : "0.6.3", - "purl" : "pkg:npm/negotiator@0.6.3" + "type": "library", + "bom-ref": "pkg:npm/bytes@3.1.2", + "name": "bytes", + "version": "3.1.2", + "purl": "pkg:npm/bytes@3.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/bytes@3.1.2", - "name" : "bytes", - "version" : "3.1.2", - "purl" : "pkg:npm/bytes@3.1.2" + "type": "library", + "bom-ref": "pkg:npm/destroy@1.2.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" : "destroy", - "version" : "1.2.0", - "purl" : "pkg:npm/destroy@1.2.0" + "type": "library", + "bom-ref": "pkg:npm/iconv-lite@0.4.24", + "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" : "iconv-lite", - "version" : "0.4.24", - "purl" : "pkg:npm/iconv-lite@0.4.24" + "type": "library", + "bom-ref": "pkg:npm/raw-body@2.5.2", + "name": "raw-body", + "version": "2.5.2", + "purl": "pkg:npm/raw-body@2.5.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/raw-body@2.5.2", - "name" : "raw-body", - "version" : "2.5.2", - "purl" : "pkg:npm/raw-body@2.5.2" + "type": "library", + "bom-ref": "pkg:npm/unpipe@1.0.0", + "name": "unpipe", + "version": "1.0.0", + "purl": "pkg:npm/unpipe@1.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/unpipe@1.0.0", - "name" : "unpipe", - "version" : "1.0.0", - "purl" : "pkg:npm/unpipe@1.0.0" + "type": "library", + "bom-ref": "pkg:npm/anymatch@3.1.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" : "anymatch", - "version" : "3.1.3", - "purl" : "pkg:npm/anymatch@3.1.3" + "type": "library", + "bom-ref": "pkg:npm/braces@3.0.3", + "name": "braces", + "version": "3.0.3", + "purl": "pkg:npm/braces@3.0.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/braces@3.0.3", - "name" : "braces", - "version" : "3.0.3", - "purl" : "pkg:npm/braces@3.0.3" + "type": "library", + "bom-ref": "pkg:npm/glob-parent@5.1.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" : "glob-parent", - "version" : "5.1.2", - "purl" : "pkg:npm/glob-parent@5.1.2" + "type": "library", + "bom-ref": "pkg:npm/is-binary-path@2.1.0", + "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" : "is-binary-path", - "version" : "2.1.0", - "purl" : "pkg:npm/is-binary-path@2.1.0" + "type": "library", + "bom-ref": "pkg:npm/is-glob@4.0.3", + "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-glob", - "version" : "4.0.3", - "purl" : "pkg:npm/is-glob@4.0.3" + "type": "library", + "bom-ref": "pkg:npm/normalize-path@3.0.0", + "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" : "normalize-path", - "version" : "3.0.0", - "purl" : "pkg:npm/normalize-path@3.0.0" + "type": "library", + "bom-ref": "pkg:npm/readdirp@3.6.0", + "name": "readdirp", + "version": "3.6.0", + "purl": "pkg:npm/readdirp@3.6.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/readdirp@3.6.0", - "name" : "readdirp", - "version" : "3.6.0", - "purl" : "pkg:npm/readdirp@3.6.0" + "type": "library", + "bom-ref": "pkg:npm/fsevents@2.3.3", + "name": "fsevents", + "version": "2.3.3", + "purl": "pkg:npm/fsevents@2.3.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/fsevents@2.3.3", - "name" : "fsevents", - "version" : "2.3.3", - "purl" : "pkg:npm/fsevents@2.3.3" + "type": "library", + "bom-ref": "pkg:npm/debug@3.1.0", + "name": "debug", + "version": "3.1.0", + "purl": "pkg:npm/debug@3.1.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/debug@3.1.0", - "name" : "debug", - "version" : "3.1.0", - "purl" : "pkg:npm/debug@3.1.0" + "type": "library", + "bom-ref": "pkg:npm/inherits@2.0.4", + "name": "inherits", + "version": "2.0.4", + "purl": "pkg:npm/inherits@2.0.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/inherits@2.0.4", - "name" : "inherits", - "version" : "2.0.4", - "purl" : "pkg:npm/inherits@2.0.4" + "type": "library", + "bom-ref": "pkg:npm/toidentifier@1.0.1", + "name": "toidentifier", + "version": "1.0.1", + "purl": "pkg:npm/toidentifier@1.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/toidentifier@1.0.1", - "name" : "toidentifier", - "version" : "1.0.1", - "purl" : "pkg:npm/toidentifier@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/jwa@1.4.1", + "name": "jwa", + "version": "1.4.1", + "purl": "pkg:npm/jwa@1.4.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/jwa@1.4.1", - "name" : "jwa", - "version" : "1.4.1", - "purl" : "pkg:npm/jwa@1.4.1" + "type": "library", + "bom-ref": "pkg:npm/brace-expansion@1.1.11", + "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" : "brace-expansion", - "version" : "1.1.11", - "purl" : "pkg:npm/brace-expansion@1.1.11" + "type": "library", + "bom-ref": "pkg:npm/bl@2.2.1", + "name": "bl", + "version": "2.2.1", + "purl": "pkg:npm/bl@2.2.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/bl@2.2.1", - "name" : "bl", - "version" : "2.2.1", - "purl" : "pkg:npm/bl@2.2.1" + "type": "library", + "bom-ref": "pkg:npm/denque@1.5.1", + "name": "denque", + "version": "1.5.1", + "purl": "pkg:npm/denque@1.5.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/denque@1.5.1", - "name" : "denque", - "version" : "1.5.1", - "purl" : "pkg:npm/denque@1.5.1" + "type": "library", + "bom-ref": "pkg:npm/saslprep@1.0.3", + "name": "saslprep", + "version": "1.0.3", + "purl": "pkg:npm/saslprep@1.0.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/saslprep@1.0.3", - "name" : "saslprep", - "version" : "1.0.3", - "purl" : "pkg:npm/saslprep@1.0.3" + "type": "library", + "bom-ref": "pkg:npm/optional-require@1.1.8", + "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" : "optional-require", - "version" : "1.1.8", - "purl" : "pkg:npm/optional-require@1.1.8" + "type": "library", + "bom-ref": "pkg:npm/require-at@1.0.6", + "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" : "require-at", - "version" : "1.0.6", - "purl" : "pkg:npm/require-at@1.0.6" + "type": "library", + "bom-ref": "pkg:npm/bluebird@3.5.1", + "name": "bluebird", + "version": "3.5.1", + "purl": "pkg:npm/bluebird@3.5.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/bluebird@3.5.1", - "name" : "bluebird", - "version" : "3.5.1", - "purl" : "pkg:npm/bluebird@3.5.1" + "type": "library", + "bom-ref": "pkg:npm/safe-buffer@5.1.2", + "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" : "safe-buffer", - "version" : "5.1.2", - "purl" : "pkg:npm/safe-buffer@5.1.2" + "type": "library", + "bom-ref": "pkg:npm/ee-first@1.1.1", + "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" : "ee-first", - "version" : "1.1.1", - "purl" : "pkg:npm/ee-first@1.1.1" + "type": "library", + "bom-ref": "pkg:npm/forwarded@0.2.0", + "name": "forwarded", + "version": "0.2.0", + "purl": "pkg:npm/forwarded@0.2.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/forwarded@0.2.0", - "name" : "forwarded", - "version" : "0.2.0", - "purl" : "pkg:npm/forwarded@0.2.0" + "type": "library", + "bom-ref": "pkg:npm/ipaddr.js@1.9.1", + "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" : "ipaddr.js", - "version" : "1.9.1", - "purl" : "pkg:npm/ipaddr.js@1.9.1" + "type": "library", + "bom-ref": "pkg:npm/side-channel@1.1.0", + "name": "side-channel", + "version": "1.1.0", + "purl": "pkg:npm/side-channel@1.1.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/side-channel@1.1.0", - "name" : "side-channel", - "version" : "1.1.0", - "purl" : "pkg:npm/side-channel@1.1.0" + "type": "library", + "bom-ref": "pkg:npm/mime@1.6.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" : "mime", - "version" : "1.6.0", - "purl" : "pkg:npm/mime@1.6.0" + "type": "library", + "bom-ref": "pkg:npm/encodeurl@1.0.2", + "name": "encodeurl", + "version": "1.0.2", + "purl": "pkg:npm/encodeurl@1.0.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/encodeurl@1.0.2", - "name" : "encodeurl", - "version" : "1.0.2", - "purl" : "pkg:npm/encodeurl@1.0.2" + "type": "library", + "bom-ref": "pkg:npm/semver@7.0.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" : "semver", - "version" : "7.0.0", - "purl" : "pkg:npm/semver@7.0.0" + "type": "library", + "bom-ref": "pkg:npm/has-flag@3.0.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" : "has-flag", - "version" : "3.0.0", - "purl" : "pkg:npm/has-flag@3.0.0" + "type": "library", + "bom-ref": "pkg:npm/media-typer@0.3.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" : "media-typer", - "version" : "0.3.0", - "purl" : "pkg:npm/media-typer@0.3.0" + "type": "library", + "bom-ref": "pkg:npm/undici-types@6.21.0", + "name": "undici-types", + "version": "6.21.0", + "purl": "pkg:npm/undici-types@6.21.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/undici-types@6.21.0", - "name" : "undici-types", - "version" : "6.21.0", - "purl" : "pkg:npm/undici-types@6.21.0" + "type": "library", + "bom-ref": "pkg:npm/picomatch@2.3.1", + "name": "picomatch", + "version": "2.3.1", + "purl": "pkg:npm/picomatch@2.3.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/picomatch@2.3.1", - "name" : "picomatch", - "version" : "2.3.1", - "purl" : "pkg:npm/picomatch@2.3.1" + "type": "library", + "bom-ref": "pkg:npm/readable-stream@2.3.8", + "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" : "readable-stream", - "version" : "2.3.8", - "purl" : "pkg:npm/readable-stream@2.3.8" + "type": "library", + "bom-ref": "pkg:npm/balanced-match@1.0.2", + "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" : "balanced-match", - "version" : "1.0.2", - "purl" : "pkg:npm/balanced-match@1.0.2" + "type": "library", + "bom-ref": "pkg:npm/concat-map@0.0.1", + "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" : "concat-map", - "version" : "0.0.1", - "purl" : "pkg:npm/concat-map@0.0.1" + "type": "library", + "bom-ref": "pkg:npm/fill-range@7.1.1", + "name": "fill-range", + "version": "7.1.1", + "purl": "pkg:npm/fill-range@7.1.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/fill-range@7.1.1", - "name" : "fill-range", - "version" : "7.1.1", - "purl" : "pkg:npm/fill-range@7.1.1" + "type": "library", + "bom-ref": "pkg:npm/safer-buffer@2.1.2", + "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" : "safer-buffer", - "version" : "2.1.2", - "purl" : "pkg:npm/safer-buffer@2.1.2" + "type": "library", + "bom-ref": "pkg:npm/binary-extensions@2.3.0", + "name": "binary-extensions", + "version": "2.3.0", + "purl": "pkg:npm/binary-extensions@2.3.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/binary-extensions@2.3.0", - "name" : "binary-extensions", - "version" : "2.3.0", - "purl" : "pkg:npm/binary-extensions@2.3.0" + "type": "library", + "bom-ref": "pkg:npm/is-extglob@2.1.1", + "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" : "is-extglob", - "version" : "2.1.1", - "purl" : "pkg:npm/is-extglob@2.1.1" + "type": "library", + "bom-ref": "pkg:npm/buffer-equal-constant-time@1.0.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" : "buffer-equal-constant-time", - "version" : "1.0.1", - "purl" : "pkg:npm/buffer-equal-constant-time@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/ecdsa-sig-formatter@1.0.11", + "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" : "ecdsa-sig-formatter", - "version" : "1.0.11", - "purl" : "pkg:npm/ecdsa-sig-formatter@1.0.11" + "type": "library", + "bom-ref": "pkg:npm/mime-db@1.52.0", + "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" : "mime-db", - "version" : "1.52.0", - "purl" : "pkg:npm/mime-db@1.52.0" + "type": "library", + "bom-ref": "pkg:npm/sparse-bitfield@3.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" : "sparse-bitfield", - "version" : "3.0.3", - "purl" : "pkg:npm/sparse-bitfield@3.0.3" + "type": "library", + "bom-ref": "pkg:npm/es-errors@1.3.0", + "name": "es-errors", + "version": "1.3.0", + "purl": "pkg:npm/es-errors@1.3.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/es-errors@1.3.0", - "name" : "es-errors", - "version" : "1.3.0", - "purl" : "pkg:npm/es-errors@1.3.0" + "type": "library", + "bom-ref": "pkg:npm/object-inspect@1.13.4", + "name": "object-inspect", + "version": "1.13.4", + "purl": "pkg:npm/object-inspect@1.13.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/object-inspect@1.13.4", - "name" : "object-inspect", - "version" : "1.13.4", - "purl" : "pkg:npm/object-inspect@1.13.4" + "type": "library", + "bom-ref": "pkg:npm/side-channel-list@1.0.0", + "name": "side-channel-list", + "version": "1.0.0", + "purl": "pkg:npm/side-channel-list@1.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/side-channel-list@1.0.0", - "name" : "side-channel-list", - "version" : "1.0.0", - "purl" : "pkg:npm/side-channel-list@1.0.0" + "type": "library", + "bom-ref": "pkg:npm/side-channel-map@1.0.1", + "name": "side-channel-map", + "version": "1.0.1", + "purl": "pkg:npm/side-channel-map@1.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/side-channel-map@1.0.1", - "name" : "side-channel-map", - "version" : "1.0.1", - "purl" : "pkg:npm/side-channel-map@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/side-channel-weakmap@1.0.2", + "name": "side-channel-weakmap", + "version": "1.0.2", + "purl": "pkg:npm/side-channel-weakmap@1.0.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/side-channel-weakmap@1.0.2", - "name" : "side-channel-weakmap", - "version" : "1.0.2", - "purl" : "pkg:npm/side-channel-weakmap@1.0.2" + "type": "library", + "bom-ref": "pkg:npm/to-regex-range@5.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" : "to-regex-range", - "version" : "5.0.1", - "purl" : "pkg:npm/to-regex-range@5.0.1" + "type": "library", + "bom-ref": "pkg:npm/core-util-is@1.0.3", + "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" : "core-util-is", - "version" : "1.0.3", - "purl" : "pkg:npm/core-util-is@1.0.3" + "type": "library", + "bom-ref": "pkg:npm/isarray@1.0.0", + "name": "isarray", + "version": "1.0.0", + "purl": "pkg:npm/isarray@1.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/isarray@1.0.0", - "name" : "isarray", - "version" : "1.0.0", - "purl" : "pkg:npm/isarray@1.0.0" + "type": "library", + "bom-ref": "pkg:npm/process-nextick-args@2.0.1", + "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" : "process-nextick-args", - "version" : "2.0.1", - "purl" : "pkg:npm/process-nextick-args@2.0.1" + "type": "library", + "bom-ref": "pkg:npm/string_decoder@1.1.1", + "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" : "string_decoder", - "version" : "1.1.1", - "purl" : "pkg:npm/string_decoder@1.1.1" + "type": "library", + "bom-ref": "pkg:npm/util-deprecate@1.0.2", + "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" : "util-deprecate", - "version" : "1.0.2", - "purl" : "pkg:npm/util-deprecate@1.0.2" + "type": "library", + "bom-ref": "pkg:npm/call-bound@1.0.4", + "name": "call-bound", + "version": "1.0.4", + "purl": "pkg:npm/call-bound@1.0.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/call-bound@1.0.4", - "name" : "call-bound", - "version" : "1.0.4", - "purl" : "pkg:npm/call-bound@1.0.4" + "type": "library", + "bom-ref": "pkg:npm/get-intrinsic@1.3.0", + "name": "get-intrinsic", + "version": "1.3.0", + "purl": "pkg:npm/get-intrinsic@1.3.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/get-intrinsic@1.3.0", - "name" : "get-intrinsic", - "version" : "1.3.0", - "purl" : "pkg:npm/get-intrinsic@1.3.0" + "type": "library", + "bom-ref": "pkg:npm/memory-pager@1.5.0", + "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" : "memory-pager", - "version" : "1.5.0", - "purl" : "pkg:npm/memory-pager@1.5.0" + "type": "library", + "bom-ref": "pkg:npm/call-bind-apply-helpers@1.0.2", + "name": "call-bind-apply-helpers", + "version": "1.0.2", + "purl": "pkg:npm/call-bind-apply-helpers@1.0.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/call-bind-apply-helpers@1.0.2", - "name" : "call-bind-apply-helpers", - "version" : "1.0.2", - "purl" : "pkg:npm/call-bind-apply-helpers@1.0.2" + "type": "library", + "bom-ref": "pkg:npm/es-define-property@1.0.1", + "name": "es-define-property", + "version": "1.0.1", + "purl": "pkg:npm/es-define-property@1.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/es-define-property@1.0.1", - "name" : "es-define-property", - "version" : "1.0.1", - "purl" : "pkg:npm/es-define-property@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/es-object-atoms@1.1.1", + "name": "es-object-atoms", + "version": "1.1.1", + "purl": "pkg:npm/es-object-atoms@1.1.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/es-object-atoms@1.1.1", - "name" : "es-object-atoms", - "version" : "1.1.1", - "purl" : "pkg:npm/es-object-atoms@1.1.1" + "type": "library", + "bom-ref": "pkg:npm/function-bind@1.1.2", + "name": "function-bind", + "version": "1.1.2", + "purl": "pkg:npm/function-bind@1.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/function-bind@1.1.2", - "name" : "function-bind", - "version" : "1.1.2", - "purl" : "pkg:npm/function-bind@1.1.2" + "type": "library", + "bom-ref": "pkg:npm/get-proto@1.0.1", + "name": "get-proto", + "version": "1.0.1", + "purl": "pkg:npm/get-proto@1.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/get-proto@1.0.1", - "name" : "get-proto", - "version" : "1.0.1", - "purl" : "pkg:npm/get-proto@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/gopd@1.2.0", + "name": "gopd", + "version": "1.2.0", + "purl": "pkg:npm/gopd@1.2.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/gopd@1.2.0", - "name" : "gopd", - "version" : "1.2.0", - "purl" : "pkg:npm/gopd@1.2.0" + "type": "library", + "bom-ref": "pkg:npm/has-symbols@1.1.0", + "name": "has-symbols", + "version": "1.1.0", + "purl": "pkg:npm/has-symbols@1.1.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/has-symbols@1.1.0", - "name" : "has-symbols", - "version" : "1.1.0", - "purl" : "pkg:npm/has-symbols@1.1.0" + "type": "library", + "bom-ref": "pkg:npm/hasown@2.0.2", + "name": "hasown", + "version": "2.0.2", + "purl": "pkg:npm/hasown@2.0.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/hasown@2.0.2", - "name" : "hasown", - "version" : "2.0.2", - "purl" : "pkg:npm/hasown@2.0.2" + "type": "library", + "bom-ref": "pkg:npm/math-intrinsics@1.1.0", + "name": "math-intrinsics", + "version": "1.1.0", + "purl": "pkg:npm/math-intrinsics@1.1.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/math-intrinsics@1.1.0", - "name" : "math-intrinsics", - "version" : "1.1.0", - "purl" : "pkg:npm/math-intrinsics@1.1.0" + "type": "library", + "bom-ref": "pkg:npm/is-number@7.0.0", + "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" : "is-number", - "version" : "7.0.0", - "purl" : "pkg:npm/is-number@7.0.0" - }, - { - "type" : "library", - "bom-ref" : "pkg:npm/dunder-proto@1.0.1", - "name" : "dunder-proto", - "version" : "1.0.1", - "purl" : "pkg:npm/dunder-proto@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/dunder-proto@1.0.1", + "name": "dunder-proto", + "version": "1.0.1", + "purl": "pkg:npm/dunder-proto@1.0.1" } ], - "dependencies" : [ + "dependencies": [ { - "ref" : "pkg:npm/backend@1.0.0", - "dependsOn" : [ + "ref": "pkg:npm/backend@1.0.0", + "dependsOn": [ "pkg:npm/%40hapi/joi@17.1.1", "pkg:npm/backend@0.0.0", "pkg:npm/bcryptjs@2.4.3", @@ -1131,8 +1124,8 @@ ] }, { - "ref" : "pkg:npm/%40hapi/joi@17.1.1", - "dependsOn" : [ + "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", @@ -1141,20 +1134,20 @@ ] }, { - "ref" : "pkg:npm/backend@0.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/backend@0.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/bcryptjs@2.4.3", - "dependsOn" : [ ] + "ref": "pkg:npm/bcryptjs@2.4.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/dotenv@8.6.0", - "dependsOn" : [ ] + "ref": "pkg:npm/dotenv@8.6.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/express@4.21.2", - "dependsOn" : [ + "ref": "pkg:npm/express@4.21.2", + "dependsOn": [ "pkg:npm/accepts@1.3.8", "pkg:npm/array-flatten@1.1.1", "pkg:npm/body-parser@1.20.3", @@ -1189,8 +1182,8 @@ ] }, { - "ref" : "pkg:npm/mongoose@5.13.23", - "dependsOn" : [ + "ref": "pkg:npm/mongoose@5.13.23", + "dependsOn": [ "pkg:npm/%40types/bson@4.0.5", "pkg:npm/%40types/mongodb@3.6.20", "pkg:npm/bson@1.1.6", @@ -1209,8 +1202,8 @@ ] }, { - "ref" : "pkg:npm/nodemon@2.0.22", - "dependsOn" : [ + "ref": "pkg:npm/nodemon@2.0.22", + "dependsOn": [ "pkg:npm/chokidar@3.6.0", "pkg:npm/debug@2.6.9", "pkg:npm/ignore-by-default@1.0.1", @@ -1225,64 +1218,64 @@ ] }, { - "ref" : "pkg:npm/axios@0.19.2", - "dependsOn" : [ + "ref": "pkg:npm/axios@0.19.2", + "dependsOn": [ "pkg:npm/follow-redirects@1.5.10" ] }, { - "ref" : "pkg:npm/debug@2.6.9", - "dependsOn" : [ + "ref": "pkg:npm/debug@2.6.9", + "dependsOn": [ "pkg:npm/ms@2.1.3", "pkg:npm/ms@2.0.0" ] }, { - "ref" : "pkg:npm/ms@2.1.3", - "dependsOn" : [ ] + "ref": "pkg:npm/ms@2.1.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/ms@2.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/ms@2.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40hapi/address@4.1.0", - "dependsOn" : [ + "ref": "pkg:npm/%40hapi/address@4.1.0", + "dependsOn": [ "pkg:npm/%40hapi/hoek@9.3.0" ] }, { - "ref" : "pkg:npm/%40hapi/formula@2.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/%40hapi/formula@2.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40hapi/hoek@9.3.0", - "dependsOn" : [ ] + "ref": "pkg:npm/%40hapi/hoek@9.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40hapi/pinpoint@2.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/%40hapi/pinpoint@2.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40hapi/topo@5.1.0", - "dependsOn" : [ + "ref": "pkg:npm/%40hapi/topo@5.1.0", + "dependsOn": [ "pkg:npm/%40hapi/hoek@9.3.0" ] }, { - "ref" : "pkg:npm/accepts@1.3.8", - "dependsOn" : [ + "ref": "pkg:npm/accepts@1.3.8", + "dependsOn": [ "pkg:npm/mime-types@2.1.35", "pkg:npm/negotiator@0.6.3" ] }, { - "ref" : "pkg:npm/array-flatten@1.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/array-flatten@1.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/body-parser@1.20.3", - "dependsOn" : [ + "ref": "pkg:npm/body-parser@1.20.3", + "dependsOn": [ "pkg:npm/bytes@3.1.2", "pkg:npm/content-type@1.0.5", "pkg:npm/debug@2.6.9", @@ -1298,42 +1291,42 @@ ] }, { - "ref" : "pkg:npm/content-disposition@0.5.4", - "dependsOn" : [ + "ref": "pkg:npm/content-disposition@0.5.4", + "dependsOn": [ "pkg:npm/safe-buffer@5.2.1" ] }, { - "ref" : "pkg:npm/content-type@1.0.5", - "dependsOn" : [ ] + "ref": "pkg:npm/content-type@1.0.5", + "dependsOn": [] }, { - "ref" : "pkg:npm/cookie@0.7.1", - "dependsOn" : [ ] + "ref": "pkg:npm/cookie@0.7.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/cookie-signature@1.0.6", - "dependsOn" : [ ] + "ref": "pkg:npm/cookie-signature@1.0.6", + "dependsOn": [] }, { - "ref" : "pkg:npm/depd@2.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/depd@2.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/encodeurl@2.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/encodeurl@2.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/escape-html@1.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/escape-html@1.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/etag@1.8.1", - "dependsOn" : [ ] + "ref": "pkg:npm/etag@1.8.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/finalhandler@1.3.1", - "dependsOn" : [ + "ref": "pkg:npm/finalhandler@1.3.1", + "dependsOn": [ "pkg:npm/debug@2.6.9", "pkg:npm/encodeurl@2.0.0", "pkg:npm/escape-html@1.0.3", @@ -1344,12 +1337,12 @@ ] }, { - "ref" : "pkg:npm/fresh@0.5.2", - "dependsOn" : [ ] + "ref": "pkg:npm/fresh@0.5.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/http-errors@2.0.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", @@ -1358,51 +1351,51 @@ ] }, { - "ref" : "pkg:npm/merge-descriptors@1.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/merge-descriptors@1.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/methods@1.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/methods@1.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/on-finished@2.4.1", - "dependsOn" : [ + "ref": "pkg:npm/on-finished@2.4.1", + "dependsOn": [ "pkg:npm/ee-first@1.1.1" ] }, { - "ref" : "pkg:npm/parseurl@1.3.3", - "dependsOn" : [ ] + "ref": "pkg:npm/parseurl@1.3.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/path-to-regexp@0.1.12", - "dependsOn" : [ ] + "ref": "pkg:npm/path-to-regexp@0.1.12", + "dependsOn": [] }, { - "ref" : "pkg:npm/proxy-addr@2.0.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/qs@6.13.0", - "dependsOn" : [ + "ref": "pkg:npm/qs@6.13.0", + "dependsOn": [ "pkg:npm/side-channel@1.1.0" ] }, { - "ref" : "pkg:npm/range-parser@1.2.1", - "dependsOn" : [ ] + "ref": "pkg:npm/range-parser@1.2.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/safe-buffer@5.2.1", - "dependsOn" : [ ] + "ref": "pkg:npm/safe-buffer@5.2.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/send@0.19.0", - "dependsOn" : [ + "ref": "pkg:npm/send@0.19.0", + "dependsOn": [ "pkg:npm/debug@2.6.9", "pkg:npm/depd@2.0.0", "pkg:npm/destroy@1.2.0", @@ -1420,8 +1413,8 @@ ] }, { - "ref" : "pkg:npm/serve-static@1.16.2", - "dependsOn" : [ + "ref": "pkg:npm/serve-static@1.16.2", + "dependsOn": [ "pkg:npm/encodeurl@2.0.0", "pkg:npm/escape-html@1.0.3", "pkg:npm/parseurl@1.3.3", @@ -1429,76 +1422,76 @@ ] }, { - "ref" : "pkg:npm/setprototypeof@1.2.0", - "dependsOn" : [ ] + "ref": "pkg:npm/setprototypeof@1.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/statuses@2.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/statuses@2.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/type-is@1.6.18", - "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/utils-merge@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/utils-merge@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/vary@1.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/vary@1.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/jws@3.2.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/lodash.includes@4.3.0", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.includes@4.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isboolean@3.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isboolean@3.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isinteger@4.0.4", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isinteger@4.0.4", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isnumber@3.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isnumber@3.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isplainobject@4.0.6", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isplainobject@4.0.6", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isstring@4.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isstring@4.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.once@4.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.once@4.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/semver@5.7.2", - "dependsOn" : [ ] + "ref": "pkg:npm/semver@5.7.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40types/bson@4.0.5", - "dependsOn" : [ + "ref": "pkg:npm/%40types/bson@4.0.5", + "dependsOn": [ "pkg:npm/%40types/node@22.14.1" ] }, { - "ref" : "pkg:npm/%40types/mongodb@3.6.20", - "dependsOn" : [ + "ref": "pkg:npm/%40types/mongodb@3.6.20", + "dependsOn": [ "pkg:npm/%40types/bson@4.0.5", "pkg:npm/%40types/node@22.14.1", "pkg:npm/%40types/bson@4.2.4", @@ -1506,16 +1499,16 @@ ] }, { - "ref" : "pkg:npm/bson@1.1.6", - "dependsOn" : [ ] + "ref": "pkg:npm/bson@1.1.6", + "dependsOn": [] }, { - "ref" : "pkg:npm/kareem@2.3.2", - "dependsOn" : [ ] + "ref": "pkg:npm/kareem@2.3.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/mongodb@3.7.4", - "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", @@ -1526,16 +1519,16 @@ ] }, { - "ref" : "pkg:npm/mongoose-legacy-pluralize@1.0.2", - "dependsOn" : [ ] + "ref": "pkg:npm/mongoose-legacy-pluralize@1.0.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/mpath@0.8.4", - "dependsOn" : [ ] + "ref": "pkg:npm/mpath@0.8.4", + "dependsOn": [] }, { - "ref" : "pkg:npm/mquery@3.2.5", - "dependsOn" : [ + "ref": "pkg:npm/mquery@3.2.5", + "dependsOn": [ "pkg:npm/bluebird@3.5.1", "pkg:npm/debug@2.6.9", "pkg:npm/regexp-clone@1.0.0", @@ -1547,28 +1540,28 @@ ] }, { - "ref" : "pkg:npm/optional-require@1.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/optional-require@1.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/regexp-clone@1.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/regexp-clone@1.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/sift@13.5.2", - "dependsOn" : [ ] + "ref": "pkg:npm/sift@13.5.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/sliced@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/sliced@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/ms@2.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/ms@2.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/chokidar@3.6.0", - "dependsOn" : [ + "ref": "pkg:npm/chokidar@3.6.0", + "dependsOn": [ "pkg:npm/anymatch@3.1.3", "pkg:npm/braces@3.0.3", "pkg:npm/glob-parent@5.1.2", @@ -1580,97 +1573,97 @@ ] }, { - "ref" : "pkg:npm/ignore-by-default@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/ignore-by-default@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/minimatch@3.1.2", - "dependsOn" : [ + "ref": "pkg:npm/minimatch@3.1.2", + "dependsOn": [ "pkg:npm/brace-expansion@1.1.11" ] }, { - "ref" : "pkg:npm/pstree.remy@1.1.8", - "dependsOn" : [ ] + "ref": "pkg:npm/pstree.remy@1.1.8", + "dependsOn": [] }, { - "ref" : "pkg:npm/simple-update-notifier@1.1.0", - "dependsOn" : [ + "ref": "pkg:npm/simple-update-notifier@1.1.0", + "dependsOn": [ "pkg:npm/semver@5.7.2", "pkg:npm/semver@7.0.0" ] }, { - "ref" : "pkg:npm/supports-color@5.5.0", - "dependsOn" : [ + "ref": "pkg:npm/supports-color@5.5.0", + "dependsOn": [ "pkg:npm/has-flag@3.0.0" ] }, { - "ref" : "pkg:npm/touch@3.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/touch@3.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/undefsafe@2.0.5", - "dependsOn" : [ ] + "ref": "pkg:npm/undefsafe@2.0.5", + "dependsOn": [] }, { - "ref" : "pkg:npm/debug@3.2.7", - "dependsOn" : [ + "ref": "pkg:npm/debug@3.2.7", + "dependsOn": [ "pkg:npm/ms@2.1.3" ] }, { - "ref" : "pkg:npm/follow-redirects@1.5.10", - "dependsOn" : [ + "ref": "pkg:npm/follow-redirects@1.5.10", + "dependsOn": [ "pkg:npm/debug@2.6.9", "pkg:npm/debug@3.1.0", "pkg:npm/ms@2.0.0" ] }, { - "ref" : "pkg:npm/%40types/node@22.14.1", - "dependsOn" : [ + "ref": "pkg:npm/%40types/node@22.14.1", + "dependsOn": [ "pkg:npm/undici-types@6.21.0" ] }, { - "ref" : "pkg:npm/%40types/bson@4.2.4", - "dependsOn" : [ + "ref": "pkg:npm/%40types/bson@4.2.4", + "dependsOn": [ "pkg:npm/bson@1.1.6" ] }, { - "ref" : "pkg:npm/bson@6.10.3", - "dependsOn" : [ ] + "ref": "pkg:npm/bson@6.10.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/mime-types@2.1.35", - "dependsOn" : [ + "ref": "pkg:npm/mime-types@2.1.35", + "dependsOn": [ "pkg:npm/mime-db@1.52.0" ] }, { - "ref" : "pkg:npm/negotiator@0.6.3", - "dependsOn" : [ ] + "ref": "pkg:npm/negotiator@0.6.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/bytes@3.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/bytes@3.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/destroy@1.2.0", - "dependsOn" : [ ] + "ref": "pkg:npm/destroy@1.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/iconv-lite@0.4.24", - "dependsOn" : [ + "ref": "pkg:npm/iconv-lite@0.4.24", + "dependsOn": [ "pkg:npm/safer-buffer@2.1.2" ] }, { - "ref" : "pkg:npm/raw-body@2.5.2", - "dependsOn" : [ + "ref": "pkg:npm/raw-body@2.5.2", + "dependsOn": [ "pkg:npm/bytes@3.1.2", "pkg:npm/http-errors@2.0.0", "pkg:npm/iconv-lite@0.4.24", @@ -1678,133 +1671,133 @@ ] }, { - "ref" : "pkg:npm/unpipe@1.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/unpipe@1.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/anymatch@3.1.3", - "dependsOn" : [ + "ref": "pkg:npm/anymatch@3.1.3", + "dependsOn": [ "pkg:npm/normalize-path@3.0.0", "pkg:npm/picomatch@2.3.1" ] }, { - "ref" : "pkg:npm/braces@3.0.3", - "dependsOn" : [ + "ref": "pkg:npm/braces@3.0.3", + "dependsOn": [ "pkg:npm/fill-range@7.1.1" ] }, { - "ref" : "pkg:npm/glob-parent@5.1.2", - "dependsOn" : [ + "ref": "pkg:npm/glob-parent@5.1.2", + "dependsOn": [ "pkg:npm/is-glob@4.0.3" ] }, { - "ref" : "pkg:npm/is-binary-path@2.1.0", - "dependsOn" : [ + "ref": "pkg:npm/is-binary-path@2.1.0", + "dependsOn": [ "pkg:npm/binary-extensions@2.3.0" ] }, { - "ref" : "pkg:npm/is-glob@4.0.3", - "dependsOn" : [ + "ref": "pkg:npm/is-glob@4.0.3", + "dependsOn": [ "pkg:npm/is-extglob@2.1.1" ] }, { - "ref" : "pkg:npm/normalize-path@3.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/normalize-path@3.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/readdirp@3.6.0", - "dependsOn" : [ + "ref": "pkg:npm/readdirp@3.6.0", + "dependsOn": [ "pkg:npm/picomatch@2.3.1" ] }, { - "ref" : "pkg:npm/fsevents@2.3.3", - "dependsOn" : [ ] + "ref": "pkg:npm/fsevents@2.3.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/debug@3.1.0", - "dependsOn" : [ + "ref": "pkg:npm/debug@3.1.0", + "dependsOn": [ "pkg:npm/ms@2.1.3" ] }, { - "ref" : "pkg:npm/inherits@2.0.4", - "dependsOn" : [ ] + "ref": "pkg:npm/inherits@2.0.4", + "dependsOn": [] }, { - "ref" : "pkg:npm/toidentifier@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/toidentifier@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/jwa@1.4.1", - "dependsOn" : [ + "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/brace-expansion@1.1.11", - "dependsOn" : [ + "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/bl@2.2.1", - "dependsOn" : [ + "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/denque@1.5.1", - "dependsOn" : [ ] + "ref": "pkg:npm/denque@1.5.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/saslprep@1.0.3", - "dependsOn" : [ + "ref": "pkg:npm/saslprep@1.0.3", + "dependsOn": [ "pkg:npm/sparse-bitfield@3.0.3" ] }, { - "ref" : "pkg:npm/optional-require@1.1.8", - "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/require-at@1.0.6", + "dependsOn": [] }, { - "ref" : "pkg:npm/bluebird@3.5.1", - "dependsOn" : [ ] + "ref": "pkg:npm/bluebird@3.5.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/safe-buffer@5.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/safe-buffer@5.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/ee-first@1.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/ee-first@1.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/forwarded@0.2.0", - "dependsOn" : [ ] + "ref": "pkg:npm/forwarded@0.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/ipaddr.js@1.9.1", - "dependsOn" : [ ] + "ref": "pkg:npm/ipaddr.js@1.9.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/side-channel@1.1.0", - "dependsOn" : [ + "ref": "pkg:npm/side-channel@1.1.0", + "dependsOn": [ "pkg:npm/es-errors@1.3.0", "pkg:npm/object-inspect@1.13.4", "pkg:npm/side-channel-list@1.0.0", @@ -1813,36 +1806,36 @@ ] }, { - "ref" : "pkg:npm/mime@1.6.0", - "dependsOn" : [ ] + "ref": "pkg:npm/mime@1.6.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/encodeurl@1.0.2", - "dependsOn" : [ ] + "ref": "pkg:npm/encodeurl@1.0.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/semver@7.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/semver@7.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/has-flag@3.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/has-flag@3.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/media-typer@0.3.0", - "dependsOn" : [ ] + "ref": "pkg:npm/media-typer@0.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/undici-types@6.21.0", - "dependsOn" : [ ] + "ref": "pkg:npm/undici-types@6.21.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/picomatch@2.3.1", - "dependsOn" : [ ] + "ref": "pkg:npm/picomatch@2.3.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/readable-stream@2.3.8", - "dependsOn" : [ + "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", @@ -1854,69 +1847,69 @@ ] }, { - "ref" : "pkg:npm/balanced-match@1.0.2", - "dependsOn" : [ ] + "ref": "pkg:npm/balanced-match@1.0.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/concat-map@0.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/concat-map@0.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/fill-range@7.1.1", - "dependsOn" : [ + "ref": "pkg:npm/fill-range@7.1.1", + "dependsOn": [ "pkg:npm/to-regex-range@5.0.1" ] }, { - "ref" : "pkg:npm/safer-buffer@2.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/safer-buffer@2.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/binary-extensions@2.3.0", - "dependsOn" : [ ] + "ref": "pkg:npm/binary-extensions@2.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/is-extglob@2.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/is-extglob@2.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/buffer-equal-constant-time@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/buffer-equal-constant-time@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/ecdsa-sig-formatter@1.0.11", - "dependsOn" : [ + "ref": "pkg:npm/ecdsa-sig-formatter@1.0.11", + "dependsOn": [ "pkg:npm/safe-buffer@5.2.1" ] }, { - "ref" : "pkg:npm/mime-db@1.52.0", - "dependsOn" : [ ] + "ref": "pkg:npm/mime-db@1.52.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/sparse-bitfield@3.0.3", - "dependsOn" : [ + "ref": "pkg:npm/sparse-bitfield@3.0.3", + "dependsOn": [ "pkg:npm/memory-pager@1.5.0" ] }, { - "ref" : "pkg:npm/es-errors@1.3.0", - "dependsOn" : [ ] + "ref": "pkg:npm/es-errors@1.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/object-inspect@1.13.4", - "dependsOn" : [ ] + "ref": "pkg:npm/object-inspect@1.13.4", + "dependsOn": [] }, { - "ref" : "pkg:npm/side-channel-list@1.0.0", - "dependsOn" : [ + "ref": "pkg:npm/side-channel-list@1.0.0", + "dependsOn": [ "pkg:npm/es-errors@1.3.0", "pkg:npm/object-inspect@1.13.4" ] }, { - "ref" : "pkg:npm/side-channel-map@1.0.1", - "dependsOn" : [ + "ref": "pkg:npm/side-channel-map@1.0.1", + "dependsOn": [ "pkg:npm/call-bound@1.0.4", "pkg:npm/es-errors@1.3.0", "pkg:npm/get-intrinsic@1.3.0", @@ -1924,8 +1917,8 @@ ] }, { - "ref" : "pkg:npm/side-channel-weakmap@1.0.2", - "dependsOn" : [ + "ref": "pkg:npm/side-channel-weakmap@1.0.2", + "dependsOn": [ "pkg:npm/call-bound@1.0.4", "pkg:npm/es-errors@1.3.0", "pkg:npm/get-intrinsic@1.3.0", @@ -1934,44 +1927,44 @@ ] }, { - "ref" : "pkg:npm/to-regex-range@5.0.1", - "dependsOn" : [ + "ref": "pkg:npm/to-regex-range@5.0.1", + "dependsOn": [ "pkg:npm/is-number@7.0.0" ] }, { - "ref" : "pkg:npm/core-util-is@1.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/core-util-is@1.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/isarray@1.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/isarray@1.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/process-nextick-args@2.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/process-nextick-args@2.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/string_decoder@1.1.1", - "dependsOn" : [ + "ref": "pkg:npm/string_decoder@1.1.1", + "dependsOn": [ "pkg:npm/safe-buffer@5.2.1", "pkg:npm/safe-buffer@5.1.2" ] }, { - "ref" : "pkg:npm/util-deprecate@1.0.2", - "dependsOn" : [ ] + "ref": "pkg:npm/util-deprecate@1.0.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/call-bound@1.0.4", - "dependsOn" : [ + "ref": "pkg:npm/call-bound@1.0.4", + "dependsOn": [ "pkg:npm/call-bind-apply-helpers@1.0.2", "pkg:npm/get-intrinsic@1.3.0" ] }, { - "ref" : "pkg:npm/get-intrinsic@1.3.0", - "dependsOn" : [ + "ref": "pkg:npm/get-intrinsic@1.3.0", + "dependsOn": [ "pkg:npm/call-bind-apply-helpers@1.0.2", "pkg:npm/es-define-property@1.0.1", "pkg:npm/es-errors@1.3.0", @@ -1985,66 +1978,66 @@ ] }, { - "ref" : "pkg:npm/memory-pager@1.5.0", - "dependsOn" : [ ] + "ref": "pkg:npm/memory-pager@1.5.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/call-bind-apply-helpers@1.0.2", - "dependsOn" : [ + "ref": "pkg:npm/call-bind-apply-helpers@1.0.2", + "dependsOn": [ "pkg:npm/es-errors@1.3.0", "pkg:npm/function-bind@1.1.2" ] }, { - "ref" : "pkg:npm/es-define-property@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/es-define-property@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/es-object-atoms@1.1.1", - "dependsOn" : [ + "ref": "pkg:npm/es-object-atoms@1.1.1", + "dependsOn": [ "pkg:npm/es-errors@1.3.0" ] }, { - "ref" : "pkg:npm/function-bind@1.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/function-bind@1.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/get-proto@1.0.1", - "dependsOn" : [ + "ref": "pkg:npm/get-proto@1.0.1", + "dependsOn": [ "pkg:npm/dunder-proto@1.0.1", "pkg:npm/es-object-atoms@1.1.1" ] }, { - "ref" : "pkg:npm/gopd@1.2.0", - "dependsOn" : [ ] + "ref": "pkg:npm/gopd@1.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/has-symbols@1.1.0", - "dependsOn" : [ ] + "ref": "pkg:npm/has-symbols@1.1.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/hasown@2.0.2", - "dependsOn" : [ + "ref": "pkg:npm/hasown@2.0.2", + "dependsOn": [ "pkg:npm/function-bind@1.1.2" ] }, { - "ref" : "pkg:npm/math-intrinsics@1.1.0", - "dependsOn" : [ ] + "ref": "pkg:npm/math-intrinsics@1.1.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/is-number@7.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/is-number@7.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/dunder-proto@1.0.1", - "dependsOn" : [ + "ref": "pkg:npm/dunder-proto@1.0.1", + "dependsOn": [ "pkg:npm/call-bind-apply-helpers@1.0.2", "pkg:npm/es-errors@1.3.0", "pkg:npm/gopd@1.2.0" ] } ] -} \ No newline at end of file +} diff --git a/test/providers/tst_manifests/yarn-classic/package_json_deps_without_exhortignore_object/stack_expected_sbom.json b/test/providers/tst_manifests/yarn-classic/package_json_deps_without_exhortignore_object/stack_expected_sbom.json index 523b8eba..0d2e4fb4 100644 --- a/test/providers/tst_manifests/yarn-classic/package_json_deps_without_exhortignore_object/stack_expected_sbom.json +++ b/test/providers/tst_manifests/yarn-classic/package_json_deps_without_exhortignore_object/stack_expected_sbom.json @@ -1,1132 +1,1125 @@ { - "bomFormat" : "CycloneDX", - "specVersion" : "1.4", - "version" : 1, - "metadata" : { - "timestamp" : "2025-04-16T14:36:52Z", - "component" : { - "type" : "application", - "bom-ref" : "pkg:npm/backend@1.0.0", - "name" : "backend", - "version" : "1.0.0", - "purl" : "pkg:npm/backend@1.0.0" + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2025-04-16T14:36:52Z", + "component": { + "type": "application", + "bom-ref": "pkg:npm/backend@1.0.0", + "name": "backend", + "version": "1.0.0", + "purl": "pkg:npm/backend@1.0.0" } }, - "components" : [ + "components": [ { - "type" : "application", - "bom-ref" : "pkg:npm/backend@1.0.0", - "name" : "backend", - "version" : "1.0.0", - "purl" : "pkg:npm/backend@1.0.0" + "type": "library", + "bom-ref": "pkg:npm/%40hapi/joi@17.1.1", + "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" : "joi", - "version" : "17.1.1", - "purl" : "pkg:npm/%40hapi/joi@17.1.1" + "type": "library", + "bom-ref": "pkg:npm/backend@0.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" : "backend", - "version" : "0.0.0", - "purl" : "pkg:npm/backend@0.0.0" + "type": "library", + "bom-ref": "pkg:npm/bcryptjs@2.4.3", + "name": "bcryptjs", + "version": "2.4.3", + "purl": "pkg:npm/bcryptjs@2.4.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/bcryptjs@2.4.3", - "name" : "bcryptjs", - "version" : "2.4.3", - "purl" : "pkg:npm/bcryptjs@2.4.3" + "type": "library", + "bom-ref": "pkg:npm/dotenv@8.6.0", + "name": "dotenv", + "version": "8.6.0", + "purl": "pkg:npm/dotenv@8.6.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/dotenv@8.6.0", - "name" : "dotenv", - "version" : "8.6.0", - "purl" : "pkg:npm/dotenv@8.6.0" + "type": "library", + "bom-ref": "pkg:npm/express@4.21.2", + "name": "express", + "version": "4.21.2", + "purl": "pkg:npm/express@4.21.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/express@4.21.2", - "name" : "express", - "version" : "4.21.2", - "purl" : "pkg:npm/express@4.21.2" + "type": "library", + "bom-ref": "pkg:npm/jsonwebtoken@8.5.1", + "name": "jsonwebtoken", + "version": "8.5.1", + "purl": "pkg:npm/jsonwebtoken@8.5.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/jsonwebtoken@8.5.1", - "name" : "jsonwebtoken", - "version" : "8.5.1", - "purl" : "pkg:npm/jsonwebtoken@8.5.1" + "type": "library", + "bom-ref": "pkg:npm/mongoose@5.13.23", + "name": "mongoose", + "version": "5.13.23", + "purl": "pkg:npm/mongoose@5.13.23" }, { - "type" : "library", - "bom-ref" : "pkg:npm/mongoose@5.13.23", - "name" : "mongoose", - "version" : "5.13.23", - "purl" : "pkg:npm/mongoose@5.13.23" + "type": "library", + "bom-ref": "pkg:npm/nodemon@2.0.22", + "name": "nodemon", + "version": "2.0.22", + "purl": "pkg:npm/nodemon@2.0.22" }, { - "type" : "library", - "bom-ref" : "pkg:npm/nodemon@2.0.22", - "name" : "nodemon", - "version" : "2.0.22", - "purl" : "pkg:npm/nodemon@2.0.22" + "type": "library", + "bom-ref": "pkg:npm/axios@0.19.2", + "name": "axios", + "version": "0.19.2", + "purl": "pkg:npm/axios@0.19.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/axios@0.19.2", - "name" : "axios", - "version" : "0.19.2", - "purl" : "pkg:npm/axios@0.19.2" + "type": "library", + "bom-ref": "pkg:npm/debug@2.6.9", + "name": "debug", + "version": "2.6.9", + "purl": "pkg:npm/debug@2.6.9" }, { - "type" : "library", - "bom-ref" : "pkg:npm/debug@2.6.9", - "name" : "debug", - "version" : "2.6.9", - "purl" : "pkg:npm/debug@2.6.9" + "type": "library", + "bom-ref": "pkg:npm/ms@2.1.3", + "name": "ms", + "version": "2.1.3", + "purl": "pkg:npm/ms@2.1.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/ms@2.1.3", - "name" : "ms", - "version" : "2.1.3", - "purl" : "pkg:npm/ms@2.1.3" + "type": "library", + "bom-ref": "pkg:npm/ms@2.0.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" : "ms", - "version" : "2.0.0", - "purl" : "pkg:npm/ms@2.0.0" + "type": "library", + "bom-ref": "pkg:npm/%40hapi/address@4.1.0", + "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" : "address", - "version" : "4.1.0", - "purl" : "pkg:npm/%40hapi/address@4.1.0" + "type": "library", + "bom-ref": "pkg:npm/%40hapi/formula@2.0.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" : "formula", - "version" : "2.0.0", - "purl" : "pkg:npm/%40hapi/formula@2.0.0" + "type": "library", + "bom-ref": "pkg:npm/%40hapi/hoek@9.3.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" : "hoek", - "version" : "9.3.0", - "purl" : "pkg:npm/%40hapi/hoek@9.3.0" + "type": "library", + "bom-ref": "pkg:npm/%40hapi/pinpoint@2.0.1", + "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" : "pinpoint", - "version" : "2.0.1", - "purl" : "pkg:npm/%40hapi/pinpoint@2.0.1" + "type": "library", + "bom-ref": "pkg:npm/%40hapi/topo@5.1.0", + "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", - "group" : "@hapi", - "name" : "topo", - "version" : "5.1.0", - "purl" : "pkg:npm/%40hapi/topo@5.1.0" + "type": "library", + "bom-ref": "pkg:npm/accepts@1.3.8", + "name": "accepts", + "version": "1.3.8", + "purl": "pkg:npm/accepts@1.3.8" }, { - "type" : "library", - "bom-ref" : "pkg:npm/accepts@1.3.8", - "name" : "accepts", - "version" : "1.3.8", - "purl" : "pkg:npm/accepts@1.3.8" + "type": "library", + "bom-ref": "pkg:npm/array-flatten@1.1.1", + "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" : "array-flatten", - "version" : "1.1.1", - "purl" : "pkg:npm/array-flatten@1.1.1" + "type": "library", + "bom-ref": "pkg:npm/body-parser@1.20.3", + "name": "body-parser", + "version": "1.20.3", + "purl": "pkg:npm/body-parser@1.20.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/body-parser@1.20.3", - "name" : "body-parser", - "version" : "1.20.3", - "purl" : "pkg:npm/body-parser@1.20.3" + "type": "library", + "bom-ref": "pkg:npm/content-disposition@0.5.4", + "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" : "content-disposition", - "version" : "0.5.4", - "purl" : "pkg:npm/content-disposition@0.5.4" + "type": "library", + "bom-ref": "pkg:npm/content-type@1.0.5", + "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" : "content-type", - "version" : "1.0.5", - "purl" : "pkg:npm/content-type@1.0.5" + "type": "library", + "bom-ref": "pkg:npm/cookie@0.7.1", + "name": "cookie", + "version": "0.7.1", + "purl": "pkg:npm/cookie@0.7.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/cookie@0.7.1", - "name" : "cookie", - "version" : "0.7.1", - "purl" : "pkg:npm/cookie@0.7.1" + "type": "library", + "bom-ref": "pkg:npm/cookie-signature@1.0.6", + "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-signature", - "version" : "1.0.6", - "purl" : "pkg:npm/cookie-signature@1.0.6" + "type": "library", + "bom-ref": "pkg:npm/depd@2.0.0", + "name": "depd", + "version": "2.0.0", + "purl": "pkg:npm/depd@2.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/depd@2.0.0", - "name" : "depd", - "version" : "2.0.0", - "purl" : "pkg:npm/depd@2.0.0" + "type": "library", + "bom-ref": "pkg:npm/encodeurl@2.0.0", + "name": "encodeurl", + "version": "2.0.0", + "purl": "pkg:npm/encodeurl@2.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/encodeurl@2.0.0", - "name" : "encodeurl", - "version" : "2.0.0", - "purl" : "pkg:npm/encodeurl@2.0.0" + "type": "library", + "bom-ref": "pkg:npm/escape-html@1.0.3", + "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" : "escape-html", - "version" : "1.0.3", - "purl" : "pkg:npm/escape-html@1.0.3" + "type": "library", + "bom-ref": "pkg:npm/etag@1.8.1", + "name": "etag", + "version": "1.8.1", + "purl": "pkg:npm/etag@1.8.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/etag@1.8.1", - "name" : "etag", - "version" : "1.8.1", - "purl" : "pkg:npm/etag@1.8.1" + "type": "library", + "bom-ref": "pkg:npm/finalhandler@1.3.1", + "name": "finalhandler", + "version": "1.3.1", + "purl": "pkg:npm/finalhandler@1.3.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/finalhandler@1.3.1", - "name" : "finalhandler", - "version" : "1.3.1", - "purl" : "pkg:npm/finalhandler@1.3.1" + "type": "library", + "bom-ref": "pkg:npm/fresh@0.5.2", + "name": "fresh", + "version": "0.5.2", + "purl": "pkg:npm/fresh@0.5.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/fresh@0.5.2", - "name" : "fresh", - "version" : "0.5.2", - "purl" : "pkg:npm/fresh@0.5.2" + "type": "library", + "bom-ref": "pkg:npm/http-errors@2.0.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" : "http-errors", - "version" : "2.0.0", - "purl" : "pkg:npm/http-errors@2.0.0" + "type": "library", + "bom-ref": "pkg:npm/merge-descriptors@1.0.3", + "name": "merge-descriptors", + "version": "1.0.3", + "purl": "pkg:npm/merge-descriptors@1.0.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/merge-descriptors@1.0.3", - "name" : "merge-descriptors", - "version" : "1.0.3", - "purl" : "pkg:npm/merge-descriptors@1.0.3" + "type": "library", + "bom-ref": "pkg:npm/methods@1.1.2", + "name": "methods", + "version": "1.1.2", + "purl": "pkg:npm/methods@1.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/methods@1.1.2", - "name" : "methods", - "version" : "1.1.2", - "purl" : "pkg:npm/methods@1.1.2" + "type": "library", + "bom-ref": "pkg:npm/on-finished@2.4.1", + "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" : "on-finished", - "version" : "2.4.1", - "purl" : "pkg:npm/on-finished@2.4.1" + "type": "library", + "bom-ref": "pkg:npm/parseurl@1.3.3", + "name": "parseurl", + "version": "1.3.3", + "purl": "pkg:npm/parseurl@1.3.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/parseurl@1.3.3", - "name" : "parseurl", - "version" : "1.3.3", - "purl" : "pkg:npm/parseurl@1.3.3" + "type": "library", + "bom-ref": "pkg:npm/path-to-regexp@0.1.12", + "name": "path-to-regexp", + "version": "0.1.12", + "purl": "pkg:npm/path-to-regexp@0.1.12" }, { - "type" : "library", - "bom-ref" : "pkg:npm/path-to-regexp@0.1.12", - "name" : "path-to-regexp", - "version" : "0.1.12", - "purl" : "pkg:npm/path-to-regexp@0.1.12" + "type": "library", + "bom-ref": "pkg:npm/proxy-addr@2.0.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" : "proxy-addr", - "version" : "2.0.7", - "purl" : "pkg:npm/proxy-addr@2.0.7" + "type": "library", + "bom-ref": "pkg:npm/qs@6.13.0", + "name": "qs", + "version": "6.13.0", + "purl": "pkg:npm/qs@6.13.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/qs@6.13.0", - "name" : "qs", - "version" : "6.13.0", - "purl" : "pkg:npm/qs@6.13.0" + "type": "library", + "bom-ref": "pkg:npm/range-parser@1.2.1", + "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" : "range-parser", - "version" : "1.2.1", - "purl" : "pkg:npm/range-parser@1.2.1" + "type": "library", + "bom-ref": "pkg:npm/safe-buffer@5.2.1", + "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" : "safe-buffer", - "version" : "5.2.1", - "purl" : "pkg:npm/safe-buffer@5.2.1" + "type": "library", + "bom-ref": "pkg:npm/send@0.19.0", + "name": "send", + "version": "0.19.0", + "purl": "pkg:npm/send@0.19.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/send@0.19.0", - "name" : "send", - "version" : "0.19.0", - "purl" : "pkg:npm/send@0.19.0" + "type": "library", + "bom-ref": "pkg:npm/serve-static@1.16.2", + "name": "serve-static", + "version": "1.16.2", + "purl": "pkg:npm/serve-static@1.16.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/serve-static@1.16.2", - "name" : "serve-static", - "version" : "1.16.2", - "purl" : "pkg:npm/serve-static@1.16.2" + "type": "library", + "bom-ref": "pkg:npm/setprototypeof@1.2.0", + "name": "setprototypeof", + "version": "1.2.0", + "purl": "pkg:npm/setprototypeof@1.2.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/setprototypeof@1.2.0", - "name" : "setprototypeof", - "version" : "1.2.0", - "purl" : "pkg:npm/setprototypeof@1.2.0" + "type": "library", + "bom-ref": "pkg:npm/statuses@2.0.1", + "name": "statuses", + "version": "2.0.1", + "purl": "pkg:npm/statuses@2.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/statuses@2.0.1", - "name" : "statuses", - "version" : "2.0.1", - "purl" : "pkg:npm/statuses@2.0.1" + "type": "library", + "bom-ref": "pkg:npm/type-is@1.6.18", + "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" : "type-is", - "version" : "1.6.18", - "purl" : "pkg:npm/type-is@1.6.18" + "type": "library", + "bom-ref": "pkg:npm/utils-merge@1.0.1", + "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" : "utils-merge", - "version" : "1.0.1", - "purl" : "pkg:npm/utils-merge@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/vary@1.1.2", + "name": "vary", + "version": "1.1.2", + "purl": "pkg:npm/vary@1.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/vary@1.1.2", - "name" : "vary", - "version" : "1.1.2", - "purl" : "pkg:npm/vary@1.1.2" + "type": "library", + "bom-ref": "pkg:npm/jws@3.2.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" : "jws", - "version" : "3.2.2", - "purl" : "pkg:npm/jws@3.2.2" + "type": "library", + "bom-ref": "pkg:npm/lodash.includes@4.3.0", + "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.includes", - "version" : "4.3.0", - "purl" : "pkg:npm/lodash.includes@4.3.0" + "type": "library", + "bom-ref": "pkg:npm/lodash.isboolean@3.0.3", + "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.isboolean", - "version" : "3.0.3", - "purl" : "pkg:npm/lodash.isboolean@3.0.3" + "type": "library", + "bom-ref": "pkg:npm/lodash.isinteger@4.0.4", + "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.isinteger", - "version" : "4.0.4", - "purl" : "pkg:npm/lodash.isinteger@4.0.4" + "type": "library", + "bom-ref": "pkg:npm/lodash.isnumber@3.0.3", + "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.isnumber", - "version" : "3.0.3", - "purl" : "pkg:npm/lodash.isnumber@3.0.3" + "type": "library", + "bom-ref": "pkg:npm/lodash.isplainobject@4.0.6", + "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.isplainobject", - "version" : "4.0.6", - "purl" : "pkg:npm/lodash.isplainobject@4.0.6" + "type": "library", + "bom-ref": "pkg:npm/lodash.isstring@4.0.1", + "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.isstring", - "version" : "4.0.1", - "purl" : "pkg:npm/lodash.isstring@4.0.1" + "type": "library", + "bom-ref": "pkg:npm/lodash.once@4.1.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" : "lodash.once", - "version" : "4.1.1", - "purl" : "pkg:npm/lodash.once@4.1.1" + "type": "library", + "bom-ref": "pkg:npm/semver@5.7.2", + "name": "semver", + "version": "5.7.2", + "purl": "pkg:npm/semver@5.7.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/semver@5.7.2", - "name" : "semver", - "version" : "5.7.2", - "purl" : "pkg:npm/semver@5.7.2" + "type": "library", + "bom-ref": "pkg:npm/%40types/bson@4.0.5", + "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" : "bson", - "version" : "4.0.5", - "purl" : "pkg:npm/%40types/bson@4.0.5" + "type": "library", + "bom-ref": "pkg:npm/%40types/mongodb@3.6.20", + "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", - "group" : "@types", - "name" : "mongodb", - "version" : "3.6.20", - "purl" : "pkg:npm/%40types/mongodb@3.6.20" + "type": "library", + "bom-ref": "pkg:npm/bson@1.1.6", + "name": "bson", + "version": "1.1.6", + "purl": "pkg:npm/bson@1.1.6" }, { - "type" : "library", - "bom-ref" : "pkg:npm/bson@1.1.6", - "name" : "bson", - "version" : "1.1.6", - "purl" : "pkg:npm/bson@1.1.6" + "type": "library", + "bom-ref": "pkg:npm/kareem@2.3.2", + "name": "kareem", + "version": "2.3.2", + "purl": "pkg:npm/kareem@2.3.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/kareem@2.3.2", - "name" : "kareem", - "version" : "2.3.2", - "purl" : "pkg:npm/kareem@2.3.2" + "type": "library", + "bom-ref": "pkg:npm/mongodb@3.7.4", + "name": "mongodb", + "version": "3.7.4", + "purl": "pkg:npm/mongodb@3.7.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/mongodb@3.7.4", - "name" : "mongodb", - "version" : "3.7.4", - "purl" : "pkg:npm/mongodb@3.7.4" + "type": "library", + "bom-ref": "pkg:npm/mongoose-legacy-pluralize@1.0.2", + "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" : "mongoose-legacy-pluralize", - "version" : "1.0.2", - "purl" : "pkg:npm/mongoose-legacy-pluralize@1.0.2" + "type": "library", + "bom-ref": "pkg:npm/mpath@0.8.4", + "name": "mpath", + "version": "0.8.4", + "purl": "pkg:npm/mpath@0.8.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/mpath@0.8.4", - "name" : "mpath", - "version" : "0.8.4", - "purl" : "pkg:npm/mpath@0.8.4" + "type": "library", + "bom-ref": "pkg:npm/mquery@3.2.5", + "name": "mquery", + "version": "3.2.5", + "purl": "pkg:npm/mquery@3.2.5" }, { - "type" : "library", - "bom-ref" : "pkg:npm/mquery@3.2.5", - "name" : "mquery", - "version" : "3.2.5", - "purl" : "pkg:npm/mquery@3.2.5" + "type": "library", + "bom-ref": "pkg:npm/optional-require@1.0.3", + "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" : "optional-require", - "version" : "1.0.3", - "purl" : "pkg:npm/optional-require@1.0.3" + "type": "library", + "bom-ref": "pkg:npm/regexp-clone@1.0.0", + "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" : "regexp-clone", - "version" : "1.0.0", - "purl" : "pkg:npm/regexp-clone@1.0.0" + "type": "library", + "bom-ref": "pkg:npm/sift@13.5.2", + "name": "sift", + "version": "13.5.2", + "purl": "pkg:npm/sift@13.5.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/sift@13.5.2", - "name" : "sift", - "version" : "13.5.2", - "purl" : "pkg:npm/sift@13.5.2" + "type": "library", + "bom-ref": "pkg:npm/sliced@1.0.1", + "name": "sliced", + "version": "1.0.1", + "purl": "pkg:npm/sliced@1.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/sliced@1.0.1", - "name" : "sliced", - "version" : "1.0.1", - "purl" : "pkg:npm/sliced@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/ms@2.1.2", + "name": "ms", + "version": "2.1.2", + "purl": "pkg:npm/ms@2.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/ms@2.1.2", - "name" : "ms", - "version" : "2.1.2", - "purl" : "pkg:npm/ms@2.1.2" + "type": "library", + "bom-ref": "pkg:npm/chokidar@3.6.0", + "name": "chokidar", + "version": "3.6.0", + "purl": "pkg:npm/chokidar@3.6.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/chokidar@3.6.0", - "name" : "chokidar", - "version" : "3.6.0", - "purl" : "pkg:npm/chokidar@3.6.0" + "type": "library", + "bom-ref": "pkg:npm/ignore-by-default@1.0.1", + "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" : "ignore-by-default", - "version" : "1.0.1", - "purl" : "pkg:npm/ignore-by-default@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/minimatch@3.1.2", + "name": "minimatch", + "version": "3.1.2", + "purl": "pkg:npm/minimatch@3.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/minimatch@3.1.2", - "name" : "minimatch", - "version" : "3.1.2", - "purl" : "pkg:npm/minimatch@3.1.2" + "type": "library", + "bom-ref": "pkg:npm/pstree.remy@1.1.8", + "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" : "pstree.remy", - "version" : "1.1.8", - "purl" : "pkg:npm/pstree.remy@1.1.8" + "type": "library", + "bom-ref": "pkg:npm/simple-update-notifier@1.1.0", + "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" : "simple-update-notifier", - "version" : "1.1.0", - "purl" : "pkg:npm/simple-update-notifier@1.1.0" + "type": "library", + "bom-ref": "pkg:npm/supports-color@5.5.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" : "supports-color", - "version" : "5.5.0", - "purl" : "pkg:npm/supports-color@5.5.0" + "type": "library", + "bom-ref": "pkg:npm/touch@3.1.1", + "name": "touch", + "version": "3.1.1", + "purl": "pkg:npm/touch@3.1.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/touch@3.1.1", - "name" : "touch", - "version" : "3.1.1", - "purl" : "pkg:npm/touch@3.1.1" + "type": "library", + "bom-ref": "pkg:npm/undefsafe@2.0.5", + "name": "undefsafe", + "version": "2.0.5", + "purl": "pkg:npm/undefsafe@2.0.5" }, { - "type" : "library", - "bom-ref" : "pkg:npm/undefsafe@2.0.5", - "name" : "undefsafe", - "version" : "2.0.5", - "purl" : "pkg:npm/undefsafe@2.0.5" + "type": "library", + "bom-ref": "pkg:npm/debug@3.2.7", + "name": "debug", + "version": "3.2.7", + "purl": "pkg:npm/debug@3.2.7" }, { - "type" : "library", - "bom-ref" : "pkg:npm/debug@3.2.7", - "name" : "debug", - "version" : "3.2.7", - "purl" : "pkg:npm/debug@3.2.7" + "type": "library", + "bom-ref": "pkg:npm/follow-redirects@1.5.10", + "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" : "follow-redirects", - "version" : "1.5.10", - "purl" : "pkg:npm/follow-redirects@1.5.10" + "type": "library", + "bom-ref": "pkg:npm/%40types/node@22.14.1", + "group": "@types", + "name": "node", + "version": "22.14.1", + "purl": "pkg:npm/%40types/node@22.14.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/%40types/node@22.14.1", - "group" : "@types", - "name" : "node", - "version" : "22.14.1", - "purl" : "pkg:npm/%40types/node@22.14.1" + "type": "library", + "bom-ref": "pkg:npm/%40types/bson@4.2.4", + "group": "@types", + "name": "bson", + "version": "4.2.4", + "purl": "pkg:npm/%40types/bson@4.2.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/%40types/bson@4.2.4", - "group" : "@types", - "name" : "bson", - "version" : "4.2.4", - "purl" : "pkg:npm/%40types/bson@4.2.4" + "type": "library", + "bom-ref": "pkg:npm/bson@6.10.3", + "name": "bson", + "version": "6.10.3", + "purl": "pkg:npm/bson@6.10.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/bson@6.10.3", - "name" : "bson", - "version" : "6.10.3", - "purl" : "pkg:npm/bson@6.10.3" + "type": "library", + "bom-ref": "pkg:npm/mime-types@2.1.35", + "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-types", - "version" : "2.1.35", - "purl" : "pkg:npm/mime-types@2.1.35" + "type": "library", + "bom-ref": "pkg:npm/negotiator@0.6.3", + "name": "negotiator", + "version": "0.6.3", + "purl": "pkg:npm/negotiator@0.6.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/negotiator@0.6.3", - "name" : "negotiator", - "version" : "0.6.3", - "purl" : "pkg:npm/negotiator@0.6.3" + "type": "library", + "bom-ref": "pkg:npm/bytes@3.1.2", + "name": "bytes", + "version": "3.1.2", + "purl": "pkg:npm/bytes@3.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/bytes@3.1.2", - "name" : "bytes", - "version" : "3.1.2", - "purl" : "pkg:npm/bytes@3.1.2" + "type": "library", + "bom-ref": "pkg:npm/destroy@1.2.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" : "destroy", - "version" : "1.2.0", - "purl" : "pkg:npm/destroy@1.2.0" + "type": "library", + "bom-ref": "pkg:npm/iconv-lite@0.4.24", + "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" : "iconv-lite", - "version" : "0.4.24", - "purl" : "pkg:npm/iconv-lite@0.4.24" + "type": "library", + "bom-ref": "pkg:npm/raw-body@2.5.2", + "name": "raw-body", + "version": "2.5.2", + "purl": "pkg:npm/raw-body@2.5.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/raw-body@2.5.2", - "name" : "raw-body", - "version" : "2.5.2", - "purl" : "pkg:npm/raw-body@2.5.2" + "type": "library", + "bom-ref": "pkg:npm/unpipe@1.0.0", + "name": "unpipe", + "version": "1.0.0", + "purl": "pkg:npm/unpipe@1.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/unpipe@1.0.0", - "name" : "unpipe", - "version" : "1.0.0", - "purl" : "pkg:npm/unpipe@1.0.0" + "type": "library", + "bom-ref": "pkg:npm/anymatch@3.1.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" : "anymatch", - "version" : "3.1.3", - "purl" : "pkg:npm/anymatch@3.1.3" + "type": "library", + "bom-ref": "pkg:npm/braces@3.0.3", + "name": "braces", + "version": "3.0.3", + "purl": "pkg:npm/braces@3.0.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/braces@3.0.3", - "name" : "braces", - "version" : "3.0.3", - "purl" : "pkg:npm/braces@3.0.3" + "type": "library", + "bom-ref": "pkg:npm/glob-parent@5.1.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" : "glob-parent", - "version" : "5.1.2", - "purl" : "pkg:npm/glob-parent@5.1.2" + "type": "library", + "bom-ref": "pkg:npm/is-binary-path@2.1.0", + "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" : "is-binary-path", - "version" : "2.1.0", - "purl" : "pkg:npm/is-binary-path@2.1.0" + "type": "library", + "bom-ref": "pkg:npm/is-glob@4.0.3", + "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-glob", - "version" : "4.0.3", - "purl" : "pkg:npm/is-glob@4.0.3" + "type": "library", + "bom-ref": "pkg:npm/normalize-path@3.0.0", + "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" : "normalize-path", - "version" : "3.0.0", - "purl" : "pkg:npm/normalize-path@3.0.0" + "type": "library", + "bom-ref": "pkg:npm/readdirp@3.6.0", + "name": "readdirp", + "version": "3.6.0", + "purl": "pkg:npm/readdirp@3.6.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/readdirp@3.6.0", - "name" : "readdirp", - "version" : "3.6.0", - "purl" : "pkg:npm/readdirp@3.6.0" + "type": "library", + "bom-ref": "pkg:npm/fsevents@2.3.3", + "name": "fsevents", + "version": "2.3.3", + "purl": "pkg:npm/fsevents@2.3.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/fsevents@2.3.3", - "name" : "fsevents", - "version" : "2.3.3", - "purl" : "pkg:npm/fsevents@2.3.3" + "type": "library", + "bom-ref": "pkg:npm/debug@3.1.0", + "name": "debug", + "version": "3.1.0", + "purl": "pkg:npm/debug@3.1.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/debug@3.1.0", - "name" : "debug", - "version" : "3.1.0", - "purl" : "pkg:npm/debug@3.1.0" + "type": "library", + "bom-ref": "pkg:npm/inherits@2.0.4", + "name": "inherits", + "version": "2.0.4", + "purl": "pkg:npm/inherits@2.0.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/inherits@2.0.4", - "name" : "inherits", - "version" : "2.0.4", - "purl" : "pkg:npm/inherits@2.0.4" + "type": "library", + "bom-ref": "pkg:npm/toidentifier@1.0.1", + "name": "toidentifier", + "version": "1.0.1", + "purl": "pkg:npm/toidentifier@1.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/toidentifier@1.0.1", - "name" : "toidentifier", - "version" : "1.0.1", - "purl" : "pkg:npm/toidentifier@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/jwa@1.4.1", + "name": "jwa", + "version": "1.4.1", + "purl": "pkg:npm/jwa@1.4.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/jwa@1.4.1", - "name" : "jwa", - "version" : "1.4.1", - "purl" : "pkg:npm/jwa@1.4.1" + "type": "library", + "bom-ref": "pkg:npm/brace-expansion@1.1.11", + "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" : "brace-expansion", - "version" : "1.1.11", - "purl" : "pkg:npm/brace-expansion@1.1.11" + "type": "library", + "bom-ref": "pkg:npm/bl@2.2.1", + "name": "bl", + "version": "2.2.1", + "purl": "pkg:npm/bl@2.2.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/bl@2.2.1", - "name" : "bl", - "version" : "2.2.1", - "purl" : "pkg:npm/bl@2.2.1" + "type": "library", + "bom-ref": "pkg:npm/denque@1.5.1", + "name": "denque", + "version": "1.5.1", + "purl": "pkg:npm/denque@1.5.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/denque@1.5.1", - "name" : "denque", - "version" : "1.5.1", - "purl" : "pkg:npm/denque@1.5.1" + "type": "library", + "bom-ref": "pkg:npm/saslprep@1.0.3", + "name": "saslprep", + "version": "1.0.3", + "purl": "pkg:npm/saslprep@1.0.3" }, { - "type" : "library", - "bom-ref" : "pkg:npm/saslprep@1.0.3", - "name" : "saslprep", - "version" : "1.0.3", - "purl" : "pkg:npm/saslprep@1.0.3" + "type": "library", + "bom-ref": "pkg:npm/optional-require@1.1.8", + "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" : "optional-require", - "version" : "1.1.8", - "purl" : "pkg:npm/optional-require@1.1.8" + "type": "library", + "bom-ref": "pkg:npm/require-at@1.0.6", + "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" : "require-at", - "version" : "1.0.6", - "purl" : "pkg:npm/require-at@1.0.6" + "type": "library", + "bom-ref": "pkg:npm/bluebird@3.5.1", + "name": "bluebird", + "version": "3.5.1", + "purl": "pkg:npm/bluebird@3.5.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/bluebird@3.5.1", - "name" : "bluebird", - "version" : "3.5.1", - "purl" : "pkg:npm/bluebird@3.5.1" + "type": "library", + "bom-ref": "pkg:npm/safe-buffer@5.1.2", + "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" : "safe-buffer", - "version" : "5.1.2", - "purl" : "pkg:npm/safe-buffer@5.1.2" + "type": "library", + "bom-ref": "pkg:npm/ee-first@1.1.1", + "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" : "ee-first", - "version" : "1.1.1", - "purl" : "pkg:npm/ee-first@1.1.1" + "type": "library", + "bom-ref": "pkg:npm/forwarded@0.2.0", + "name": "forwarded", + "version": "0.2.0", + "purl": "pkg:npm/forwarded@0.2.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/forwarded@0.2.0", - "name" : "forwarded", - "version" : "0.2.0", - "purl" : "pkg:npm/forwarded@0.2.0" + "type": "library", + "bom-ref": "pkg:npm/ipaddr.js@1.9.1", + "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" : "ipaddr.js", - "version" : "1.9.1", - "purl" : "pkg:npm/ipaddr.js@1.9.1" + "type": "library", + "bom-ref": "pkg:npm/side-channel@1.1.0", + "name": "side-channel", + "version": "1.1.0", + "purl": "pkg:npm/side-channel@1.1.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/side-channel@1.1.0", - "name" : "side-channel", - "version" : "1.1.0", - "purl" : "pkg:npm/side-channel@1.1.0" + "type": "library", + "bom-ref": "pkg:npm/mime@1.6.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" : "mime", - "version" : "1.6.0", - "purl" : "pkg:npm/mime@1.6.0" + "type": "library", + "bom-ref": "pkg:npm/encodeurl@1.0.2", + "name": "encodeurl", + "version": "1.0.2", + "purl": "pkg:npm/encodeurl@1.0.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/encodeurl@1.0.2", - "name" : "encodeurl", - "version" : "1.0.2", - "purl" : "pkg:npm/encodeurl@1.0.2" + "type": "library", + "bom-ref": "pkg:npm/semver@7.0.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" : "semver", - "version" : "7.0.0", - "purl" : "pkg:npm/semver@7.0.0" + "type": "library", + "bom-ref": "pkg:npm/has-flag@3.0.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" : "has-flag", - "version" : "3.0.0", - "purl" : "pkg:npm/has-flag@3.0.0" + "type": "library", + "bom-ref": "pkg:npm/media-typer@0.3.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" : "media-typer", - "version" : "0.3.0", - "purl" : "pkg:npm/media-typer@0.3.0" + "type": "library", + "bom-ref": "pkg:npm/undici-types@6.21.0", + "name": "undici-types", + "version": "6.21.0", + "purl": "pkg:npm/undici-types@6.21.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/undici-types@6.21.0", - "name" : "undici-types", - "version" : "6.21.0", - "purl" : "pkg:npm/undici-types@6.21.0" + "type": "library", + "bom-ref": "pkg:npm/picomatch@2.3.1", + "name": "picomatch", + "version": "2.3.1", + "purl": "pkg:npm/picomatch@2.3.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/picomatch@2.3.1", - "name" : "picomatch", - "version" : "2.3.1", - "purl" : "pkg:npm/picomatch@2.3.1" + "type": "library", + "bom-ref": "pkg:npm/readable-stream@2.3.8", + "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" : "readable-stream", - "version" : "2.3.8", - "purl" : "pkg:npm/readable-stream@2.3.8" + "type": "library", + "bom-ref": "pkg:npm/balanced-match@1.0.2", + "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" : "balanced-match", - "version" : "1.0.2", - "purl" : "pkg:npm/balanced-match@1.0.2" + "type": "library", + "bom-ref": "pkg:npm/concat-map@0.0.1", + "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" : "concat-map", - "version" : "0.0.1", - "purl" : "pkg:npm/concat-map@0.0.1" + "type": "library", + "bom-ref": "pkg:npm/fill-range@7.1.1", + "name": "fill-range", + "version": "7.1.1", + "purl": "pkg:npm/fill-range@7.1.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/fill-range@7.1.1", - "name" : "fill-range", - "version" : "7.1.1", - "purl" : "pkg:npm/fill-range@7.1.1" + "type": "library", + "bom-ref": "pkg:npm/safer-buffer@2.1.2", + "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" : "safer-buffer", - "version" : "2.1.2", - "purl" : "pkg:npm/safer-buffer@2.1.2" + "type": "library", + "bom-ref": "pkg:npm/binary-extensions@2.3.0", + "name": "binary-extensions", + "version": "2.3.0", + "purl": "pkg:npm/binary-extensions@2.3.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/binary-extensions@2.3.0", - "name" : "binary-extensions", - "version" : "2.3.0", - "purl" : "pkg:npm/binary-extensions@2.3.0" + "type": "library", + "bom-ref": "pkg:npm/is-extglob@2.1.1", + "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" : "is-extglob", - "version" : "2.1.1", - "purl" : "pkg:npm/is-extglob@2.1.1" + "type": "library", + "bom-ref": "pkg:npm/buffer-equal-constant-time@1.0.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" : "buffer-equal-constant-time", - "version" : "1.0.1", - "purl" : "pkg:npm/buffer-equal-constant-time@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/ecdsa-sig-formatter@1.0.11", + "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" : "ecdsa-sig-formatter", - "version" : "1.0.11", - "purl" : "pkg:npm/ecdsa-sig-formatter@1.0.11" + "type": "library", + "bom-ref": "pkg:npm/mime-db@1.52.0", + "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" : "mime-db", - "version" : "1.52.0", - "purl" : "pkg:npm/mime-db@1.52.0" + "type": "library", + "bom-ref": "pkg:npm/sparse-bitfield@3.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" : "sparse-bitfield", - "version" : "3.0.3", - "purl" : "pkg:npm/sparse-bitfield@3.0.3" + "type": "library", + "bom-ref": "pkg:npm/es-errors@1.3.0", + "name": "es-errors", + "version": "1.3.0", + "purl": "pkg:npm/es-errors@1.3.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/es-errors@1.3.0", - "name" : "es-errors", - "version" : "1.3.0", - "purl" : "pkg:npm/es-errors@1.3.0" + "type": "library", + "bom-ref": "pkg:npm/object-inspect@1.13.4", + "name": "object-inspect", + "version": "1.13.4", + "purl": "pkg:npm/object-inspect@1.13.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/object-inspect@1.13.4", - "name" : "object-inspect", - "version" : "1.13.4", - "purl" : "pkg:npm/object-inspect@1.13.4" + "type": "library", + "bom-ref": "pkg:npm/side-channel-list@1.0.0", + "name": "side-channel-list", + "version": "1.0.0", + "purl": "pkg:npm/side-channel-list@1.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/side-channel-list@1.0.0", - "name" : "side-channel-list", - "version" : "1.0.0", - "purl" : "pkg:npm/side-channel-list@1.0.0" + "type": "library", + "bom-ref": "pkg:npm/side-channel-map@1.0.1", + "name": "side-channel-map", + "version": "1.0.1", + "purl": "pkg:npm/side-channel-map@1.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/side-channel-map@1.0.1", - "name" : "side-channel-map", - "version" : "1.0.1", - "purl" : "pkg:npm/side-channel-map@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/side-channel-weakmap@1.0.2", + "name": "side-channel-weakmap", + "version": "1.0.2", + "purl": "pkg:npm/side-channel-weakmap@1.0.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/side-channel-weakmap@1.0.2", - "name" : "side-channel-weakmap", - "version" : "1.0.2", - "purl" : "pkg:npm/side-channel-weakmap@1.0.2" + "type": "library", + "bom-ref": "pkg:npm/to-regex-range@5.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" : "to-regex-range", - "version" : "5.0.1", - "purl" : "pkg:npm/to-regex-range@5.0.1" + "type": "library", + "bom-ref": "pkg:npm/core-util-is@1.0.3", + "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" : "core-util-is", - "version" : "1.0.3", - "purl" : "pkg:npm/core-util-is@1.0.3" + "type": "library", + "bom-ref": "pkg:npm/isarray@1.0.0", + "name": "isarray", + "version": "1.0.0", + "purl": "pkg:npm/isarray@1.0.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/isarray@1.0.0", - "name" : "isarray", - "version" : "1.0.0", - "purl" : "pkg:npm/isarray@1.0.0" + "type": "library", + "bom-ref": "pkg:npm/process-nextick-args@2.0.1", + "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" : "process-nextick-args", - "version" : "2.0.1", - "purl" : "pkg:npm/process-nextick-args@2.0.1" + "type": "library", + "bom-ref": "pkg:npm/string_decoder@1.1.1", + "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" : "string_decoder", - "version" : "1.1.1", - "purl" : "pkg:npm/string_decoder@1.1.1" + "type": "library", + "bom-ref": "pkg:npm/util-deprecate@1.0.2", + "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" : "util-deprecate", - "version" : "1.0.2", - "purl" : "pkg:npm/util-deprecate@1.0.2" + "type": "library", + "bom-ref": "pkg:npm/call-bound@1.0.4", + "name": "call-bound", + "version": "1.0.4", + "purl": "pkg:npm/call-bound@1.0.4" }, { - "type" : "library", - "bom-ref" : "pkg:npm/call-bound@1.0.4", - "name" : "call-bound", - "version" : "1.0.4", - "purl" : "pkg:npm/call-bound@1.0.4" + "type": "library", + "bom-ref": "pkg:npm/get-intrinsic@1.3.0", + "name": "get-intrinsic", + "version": "1.3.0", + "purl": "pkg:npm/get-intrinsic@1.3.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/get-intrinsic@1.3.0", - "name" : "get-intrinsic", - "version" : "1.3.0", - "purl" : "pkg:npm/get-intrinsic@1.3.0" + "type": "library", + "bom-ref": "pkg:npm/memory-pager@1.5.0", + "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" : "memory-pager", - "version" : "1.5.0", - "purl" : "pkg:npm/memory-pager@1.5.0" + "type": "library", + "bom-ref": "pkg:npm/call-bind-apply-helpers@1.0.2", + "name": "call-bind-apply-helpers", + "version": "1.0.2", + "purl": "pkg:npm/call-bind-apply-helpers@1.0.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/call-bind-apply-helpers@1.0.2", - "name" : "call-bind-apply-helpers", - "version" : "1.0.2", - "purl" : "pkg:npm/call-bind-apply-helpers@1.0.2" + "type": "library", + "bom-ref": "pkg:npm/es-define-property@1.0.1", + "name": "es-define-property", + "version": "1.0.1", + "purl": "pkg:npm/es-define-property@1.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/es-define-property@1.0.1", - "name" : "es-define-property", - "version" : "1.0.1", - "purl" : "pkg:npm/es-define-property@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/es-object-atoms@1.1.1", + "name": "es-object-atoms", + "version": "1.1.1", + "purl": "pkg:npm/es-object-atoms@1.1.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/es-object-atoms@1.1.1", - "name" : "es-object-atoms", - "version" : "1.1.1", - "purl" : "pkg:npm/es-object-atoms@1.1.1" + "type": "library", + "bom-ref": "pkg:npm/function-bind@1.1.2", + "name": "function-bind", + "version": "1.1.2", + "purl": "pkg:npm/function-bind@1.1.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/function-bind@1.1.2", - "name" : "function-bind", - "version" : "1.1.2", - "purl" : "pkg:npm/function-bind@1.1.2" + "type": "library", + "bom-ref": "pkg:npm/get-proto@1.0.1", + "name": "get-proto", + "version": "1.0.1", + "purl": "pkg:npm/get-proto@1.0.1" }, { - "type" : "library", - "bom-ref" : "pkg:npm/get-proto@1.0.1", - "name" : "get-proto", - "version" : "1.0.1", - "purl" : "pkg:npm/get-proto@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/gopd@1.2.0", + "name": "gopd", + "version": "1.2.0", + "purl": "pkg:npm/gopd@1.2.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/gopd@1.2.0", - "name" : "gopd", - "version" : "1.2.0", - "purl" : "pkg:npm/gopd@1.2.0" + "type": "library", + "bom-ref": "pkg:npm/has-symbols@1.1.0", + "name": "has-symbols", + "version": "1.1.0", + "purl": "pkg:npm/has-symbols@1.1.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/has-symbols@1.1.0", - "name" : "has-symbols", - "version" : "1.1.0", - "purl" : "pkg:npm/has-symbols@1.1.0" + "type": "library", + "bom-ref": "pkg:npm/hasown@2.0.2", + "name": "hasown", + "version": "2.0.2", + "purl": "pkg:npm/hasown@2.0.2" }, { - "type" : "library", - "bom-ref" : "pkg:npm/hasown@2.0.2", - "name" : "hasown", - "version" : "2.0.2", - "purl" : "pkg:npm/hasown@2.0.2" + "type": "library", + "bom-ref": "pkg:npm/math-intrinsics@1.1.0", + "name": "math-intrinsics", + "version": "1.1.0", + "purl": "pkg:npm/math-intrinsics@1.1.0" }, { - "type" : "library", - "bom-ref" : "pkg:npm/math-intrinsics@1.1.0", - "name" : "math-intrinsics", - "version" : "1.1.0", - "purl" : "pkg:npm/math-intrinsics@1.1.0" + "type": "library", + "bom-ref": "pkg:npm/is-number@7.0.0", + "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" : "is-number", - "version" : "7.0.0", - "purl" : "pkg:npm/is-number@7.0.0" - }, - { - "type" : "library", - "bom-ref" : "pkg:npm/dunder-proto@1.0.1", - "name" : "dunder-proto", - "version" : "1.0.1", - "purl" : "pkg:npm/dunder-proto@1.0.1" + "type": "library", + "bom-ref": "pkg:npm/dunder-proto@1.0.1", + "name": "dunder-proto", + "version": "1.0.1", + "purl": "pkg:npm/dunder-proto@1.0.1" } ], - "dependencies" : [ + "dependencies": [ { - "ref" : "pkg:npm/backend@1.0.0", - "dependsOn" : [ + "ref": "pkg:npm/backend@1.0.0", + "dependsOn": [ "pkg:npm/%40hapi/joi@17.1.1", "pkg:npm/backend@0.0.0", "pkg:npm/bcryptjs@2.4.3", @@ -1139,8 +1132,8 @@ ] }, { - "ref" : "pkg:npm/%40hapi/joi@17.1.1", - "dependsOn" : [ + "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", @@ -1149,20 +1142,20 @@ ] }, { - "ref" : "pkg:npm/backend@0.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/backend@0.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/bcryptjs@2.4.3", - "dependsOn" : [ ] + "ref": "pkg:npm/bcryptjs@2.4.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/dotenv@8.6.0", - "dependsOn" : [ ] + "ref": "pkg:npm/dotenv@8.6.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/express@4.21.2", - "dependsOn" : [ + "ref": "pkg:npm/express@4.21.2", + "dependsOn": [ "pkg:npm/accepts@1.3.8", "pkg:npm/array-flatten@1.1.1", "pkg:npm/body-parser@1.20.3", @@ -1197,8 +1190,8 @@ ] }, { - "ref" : "pkg:npm/jsonwebtoken@8.5.1", - "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", @@ -1212,8 +1205,8 @@ ] }, { - "ref" : "pkg:npm/mongoose@5.13.23", - "dependsOn" : [ + "ref": "pkg:npm/mongoose@5.13.23", + "dependsOn": [ "pkg:npm/%40types/bson@4.0.5", "pkg:npm/%40types/mongodb@3.6.20", "pkg:npm/bson@1.1.6", @@ -1232,8 +1225,8 @@ ] }, { - "ref" : "pkg:npm/nodemon@2.0.22", - "dependsOn" : [ + "ref": "pkg:npm/nodemon@2.0.22", + "dependsOn": [ "pkg:npm/chokidar@3.6.0", "pkg:npm/debug@2.6.9", "pkg:npm/ignore-by-default@1.0.1", @@ -1248,64 +1241,64 @@ ] }, { - "ref" : "pkg:npm/axios@0.19.2", - "dependsOn" : [ + "ref": "pkg:npm/axios@0.19.2", + "dependsOn": [ "pkg:npm/follow-redirects@1.5.10" ] }, { - "ref" : "pkg:npm/debug@2.6.9", - "dependsOn" : [ + "ref": "pkg:npm/debug@2.6.9", + "dependsOn": [ "pkg:npm/ms@2.1.3", "pkg:npm/ms@2.0.0" ] }, { - "ref" : "pkg:npm/ms@2.1.3", - "dependsOn" : [ ] + "ref": "pkg:npm/ms@2.1.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/ms@2.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/ms@2.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40hapi/address@4.1.0", - "dependsOn" : [ + "ref": "pkg:npm/%40hapi/address@4.1.0", + "dependsOn": [ "pkg:npm/%40hapi/hoek@9.3.0" ] }, { - "ref" : "pkg:npm/%40hapi/formula@2.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/%40hapi/formula@2.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40hapi/hoek@9.3.0", - "dependsOn" : [ ] + "ref": "pkg:npm/%40hapi/hoek@9.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40hapi/pinpoint@2.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/%40hapi/pinpoint@2.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40hapi/topo@5.1.0", - "dependsOn" : [ + "ref": "pkg:npm/%40hapi/topo@5.1.0", + "dependsOn": [ "pkg:npm/%40hapi/hoek@9.3.0" ] }, { - "ref" : "pkg:npm/accepts@1.3.8", - "dependsOn" : [ + "ref": "pkg:npm/accepts@1.3.8", + "dependsOn": [ "pkg:npm/mime-types@2.1.35", "pkg:npm/negotiator@0.6.3" ] }, { - "ref" : "pkg:npm/array-flatten@1.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/array-flatten@1.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/body-parser@1.20.3", - "dependsOn" : [ + "ref": "pkg:npm/body-parser@1.20.3", + "dependsOn": [ "pkg:npm/bytes@3.1.2", "pkg:npm/content-type@1.0.5", "pkg:npm/debug@2.6.9", @@ -1321,42 +1314,42 @@ ] }, { - "ref" : "pkg:npm/content-disposition@0.5.4", - "dependsOn" : [ + "ref": "pkg:npm/content-disposition@0.5.4", + "dependsOn": [ "pkg:npm/safe-buffer@5.2.1" ] }, { - "ref" : "pkg:npm/content-type@1.0.5", - "dependsOn" : [ ] + "ref": "pkg:npm/content-type@1.0.5", + "dependsOn": [] }, { - "ref" : "pkg:npm/cookie@0.7.1", - "dependsOn" : [ ] + "ref": "pkg:npm/cookie@0.7.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/cookie-signature@1.0.6", - "dependsOn" : [ ] + "ref": "pkg:npm/cookie-signature@1.0.6", + "dependsOn": [] }, { - "ref" : "pkg:npm/depd@2.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/depd@2.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/encodeurl@2.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/encodeurl@2.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/escape-html@1.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/escape-html@1.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/etag@1.8.1", - "dependsOn" : [ ] + "ref": "pkg:npm/etag@1.8.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/finalhandler@1.3.1", - "dependsOn" : [ + "ref": "pkg:npm/finalhandler@1.3.1", + "dependsOn": [ "pkg:npm/debug@2.6.9", "pkg:npm/encodeurl@2.0.0", "pkg:npm/escape-html@1.0.3", @@ -1367,12 +1360,12 @@ ] }, { - "ref" : "pkg:npm/fresh@0.5.2", - "dependsOn" : [ ] + "ref": "pkg:npm/fresh@0.5.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/http-errors@2.0.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", @@ -1381,51 +1374,51 @@ ] }, { - "ref" : "pkg:npm/merge-descriptors@1.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/merge-descriptors@1.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/methods@1.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/methods@1.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/on-finished@2.4.1", - "dependsOn" : [ + "ref": "pkg:npm/on-finished@2.4.1", + "dependsOn": [ "pkg:npm/ee-first@1.1.1" ] }, { - "ref" : "pkg:npm/parseurl@1.3.3", - "dependsOn" : [ ] + "ref": "pkg:npm/parseurl@1.3.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/path-to-regexp@0.1.12", - "dependsOn" : [ ] + "ref": "pkg:npm/path-to-regexp@0.1.12", + "dependsOn": [] }, { - "ref" : "pkg:npm/proxy-addr@2.0.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/qs@6.13.0", - "dependsOn" : [ + "ref": "pkg:npm/qs@6.13.0", + "dependsOn": [ "pkg:npm/side-channel@1.1.0" ] }, { - "ref" : "pkg:npm/range-parser@1.2.1", - "dependsOn" : [ ] + "ref": "pkg:npm/range-parser@1.2.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/safe-buffer@5.2.1", - "dependsOn" : [ ] + "ref": "pkg:npm/safe-buffer@5.2.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/send@0.19.0", - "dependsOn" : [ + "ref": "pkg:npm/send@0.19.0", + "dependsOn": [ "pkg:npm/debug@2.6.9", "pkg:npm/depd@2.0.0", "pkg:npm/destroy@1.2.0", @@ -1443,8 +1436,8 @@ ] }, { - "ref" : "pkg:npm/serve-static@1.16.2", - "dependsOn" : [ + "ref": "pkg:npm/serve-static@1.16.2", + "dependsOn": [ "pkg:npm/encodeurl@2.0.0", "pkg:npm/escape-html@1.0.3", "pkg:npm/parseurl@1.3.3", @@ -1452,76 +1445,76 @@ ] }, { - "ref" : "pkg:npm/setprototypeof@1.2.0", - "dependsOn" : [ ] + "ref": "pkg:npm/setprototypeof@1.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/statuses@2.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/statuses@2.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/type-is@1.6.18", - "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/utils-merge@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/utils-merge@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/vary@1.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/vary@1.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/jws@3.2.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/lodash.includes@4.3.0", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.includes@4.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isboolean@3.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isboolean@3.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isinteger@4.0.4", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isinteger@4.0.4", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isnumber@3.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isnumber@3.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isplainobject@4.0.6", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isplainobject@4.0.6", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.isstring@4.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.isstring@4.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/lodash.once@4.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/lodash.once@4.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/semver@5.7.2", - "dependsOn" : [ ] + "ref": "pkg:npm/semver@5.7.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/%40types/bson@4.0.5", - "dependsOn" : [ + "ref": "pkg:npm/%40types/bson@4.0.5", + "dependsOn": [ "pkg:npm/%40types/node@22.14.1" ] }, { - "ref" : "pkg:npm/%40types/mongodb@3.6.20", - "dependsOn" : [ + "ref": "pkg:npm/%40types/mongodb@3.6.20", + "dependsOn": [ "pkg:npm/%40types/bson@4.0.5", "pkg:npm/%40types/node@22.14.1", "pkg:npm/%40types/bson@4.2.4", @@ -1529,16 +1522,16 @@ ] }, { - "ref" : "pkg:npm/bson@1.1.6", - "dependsOn" : [ ] + "ref": "pkg:npm/bson@1.1.6", + "dependsOn": [] }, { - "ref" : "pkg:npm/kareem@2.3.2", - "dependsOn" : [ ] + "ref": "pkg:npm/kareem@2.3.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/mongodb@3.7.4", - "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", @@ -1549,16 +1542,16 @@ ] }, { - "ref" : "pkg:npm/mongoose-legacy-pluralize@1.0.2", - "dependsOn" : [ ] + "ref": "pkg:npm/mongoose-legacy-pluralize@1.0.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/mpath@0.8.4", - "dependsOn" : [ ] + "ref": "pkg:npm/mpath@0.8.4", + "dependsOn": [] }, { - "ref" : "pkg:npm/mquery@3.2.5", - "dependsOn" : [ + "ref": "pkg:npm/mquery@3.2.5", + "dependsOn": [ "pkg:npm/bluebird@3.5.1", "pkg:npm/debug@2.6.9", "pkg:npm/regexp-clone@1.0.0", @@ -1570,28 +1563,28 @@ ] }, { - "ref" : "pkg:npm/optional-require@1.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/optional-require@1.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/regexp-clone@1.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/regexp-clone@1.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/sift@13.5.2", - "dependsOn" : [ ] + "ref": "pkg:npm/sift@13.5.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/sliced@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/sliced@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/ms@2.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/ms@2.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/chokidar@3.6.0", - "dependsOn" : [ + "ref": "pkg:npm/chokidar@3.6.0", + "dependsOn": [ "pkg:npm/anymatch@3.1.3", "pkg:npm/braces@3.0.3", "pkg:npm/glob-parent@5.1.2", @@ -1603,97 +1596,97 @@ ] }, { - "ref" : "pkg:npm/ignore-by-default@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/ignore-by-default@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/minimatch@3.1.2", - "dependsOn" : [ + "ref": "pkg:npm/minimatch@3.1.2", + "dependsOn": [ "pkg:npm/brace-expansion@1.1.11" ] }, { - "ref" : "pkg:npm/pstree.remy@1.1.8", - "dependsOn" : [ ] + "ref": "pkg:npm/pstree.remy@1.1.8", + "dependsOn": [] }, { - "ref" : "pkg:npm/simple-update-notifier@1.1.0", - "dependsOn" : [ + "ref": "pkg:npm/simple-update-notifier@1.1.0", + "dependsOn": [ "pkg:npm/semver@5.7.2", "pkg:npm/semver@7.0.0" ] }, { - "ref" : "pkg:npm/supports-color@5.5.0", - "dependsOn" : [ + "ref": "pkg:npm/supports-color@5.5.0", + "dependsOn": [ "pkg:npm/has-flag@3.0.0" ] }, { - "ref" : "pkg:npm/touch@3.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/touch@3.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/undefsafe@2.0.5", - "dependsOn" : [ ] + "ref": "pkg:npm/undefsafe@2.0.5", + "dependsOn": [] }, { - "ref" : "pkg:npm/debug@3.2.7", - "dependsOn" : [ + "ref": "pkg:npm/debug@3.2.7", + "dependsOn": [ "pkg:npm/ms@2.1.3" ] }, { - "ref" : "pkg:npm/follow-redirects@1.5.10", - "dependsOn" : [ + "ref": "pkg:npm/follow-redirects@1.5.10", + "dependsOn": [ "pkg:npm/debug@2.6.9", "pkg:npm/debug@3.1.0", "pkg:npm/ms@2.0.0" ] }, { - "ref" : "pkg:npm/%40types/node@22.14.1", - "dependsOn" : [ + "ref": "pkg:npm/%40types/node@22.14.1", + "dependsOn": [ "pkg:npm/undici-types@6.21.0" ] }, { - "ref" : "pkg:npm/%40types/bson@4.2.4", - "dependsOn" : [ + "ref": "pkg:npm/%40types/bson@4.2.4", + "dependsOn": [ "pkg:npm/bson@1.1.6" ] }, { - "ref" : "pkg:npm/bson@6.10.3", - "dependsOn" : [ ] + "ref": "pkg:npm/bson@6.10.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/mime-types@2.1.35", - "dependsOn" : [ + "ref": "pkg:npm/mime-types@2.1.35", + "dependsOn": [ "pkg:npm/mime-db@1.52.0" ] }, { - "ref" : "pkg:npm/negotiator@0.6.3", - "dependsOn" : [ ] + "ref": "pkg:npm/negotiator@0.6.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/bytes@3.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/bytes@3.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/destroy@1.2.0", - "dependsOn" : [ ] + "ref": "pkg:npm/destroy@1.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/iconv-lite@0.4.24", - "dependsOn" : [ + "ref": "pkg:npm/iconv-lite@0.4.24", + "dependsOn": [ "pkg:npm/safer-buffer@2.1.2" ] }, { - "ref" : "pkg:npm/raw-body@2.5.2", - "dependsOn" : [ + "ref": "pkg:npm/raw-body@2.5.2", + "dependsOn": [ "pkg:npm/bytes@3.1.2", "pkg:npm/http-errors@2.0.0", "pkg:npm/iconv-lite@0.4.24", @@ -1701,133 +1694,133 @@ ] }, { - "ref" : "pkg:npm/unpipe@1.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/unpipe@1.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/anymatch@3.1.3", - "dependsOn" : [ + "ref": "pkg:npm/anymatch@3.1.3", + "dependsOn": [ "pkg:npm/normalize-path@3.0.0", "pkg:npm/picomatch@2.3.1" ] }, { - "ref" : "pkg:npm/braces@3.0.3", - "dependsOn" : [ + "ref": "pkg:npm/braces@3.0.3", + "dependsOn": [ "pkg:npm/fill-range@7.1.1" ] }, { - "ref" : "pkg:npm/glob-parent@5.1.2", - "dependsOn" : [ + "ref": "pkg:npm/glob-parent@5.1.2", + "dependsOn": [ "pkg:npm/is-glob@4.0.3" ] }, { - "ref" : "pkg:npm/is-binary-path@2.1.0", - "dependsOn" : [ + "ref": "pkg:npm/is-binary-path@2.1.0", + "dependsOn": [ "pkg:npm/binary-extensions@2.3.0" ] }, { - "ref" : "pkg:npm/is-glob@4.0.3", - "dependsOn" : [ + "ref": "pkg:npm/is-glob@4.0.3", + "dependsOn": [ "pkg:npm/is-extglob@2.1.1" ] }, { - "ref" : "pkg:npm/normalize-path@3.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/normalize-path@3.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/readdirp@3.6.0", - "dependsOn" : [ + "ref": "pkg:npm/readdirp@3.6.0", + "dependsOn": [ "pkg:npm/picomatch@2.3.1" ] }, { - "ref" : "pkg:npm/fsevents@2.3.3", - "dependsOn" : [ ] + "ref": "pkg:npm/fsevents@2.3.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/debug@3.1.0", - "dependsOn" : [ + "ref": "pkg:npm/debug@3.1.0", + "dependsOn": [ "pkg:npm/ms@2.1.3" ] }, { - "ref" : "pkg:npm/inherits@2.0.4", - "dependsOn" : [ ] + "ref": "pkg:npm/inherits@2.0.4", + "dependsOn": [] }, { - "ref" : "pkg:npm/toidentifier@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/toidentifier@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/jwa@1.4.1", - "dependsOn" : [ + "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/brace-expansion@1.1.11", - "dependsOn" : [ + "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/bl@2.2.1", - "dependsOn" : [ + "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/denque@1.5.1", - "dependsOn" : [ ] + "ref": "pkg:npm/denque@1.5.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/saslprep@1.0.3", - "dependsOn" : [ + "ref": "pkg:npm/saslprep@1.0.3", + "dependsOn": [ "pkg:npm/sparse-bitfield@3.0.3" ] }, { - "ref" : "pkg:npm/optional-require@1.1.8", - "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/require-at@1.0.6", + "dependsOn": [] }, { - "ref" : "pkg:npm/bluebird@3.5.1", - "dependsOn" : [ ] + "ref": "pkg:npm/bluebird@3.5.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/safe-buffer@5.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/safe-buffer@5.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/ee-first@1.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/ee-first@1.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/forwarded@0.2.0", - "dependsOn" : [ ] + "ref": "pkg:npm/forwarded@0.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/ipaddr.js@1.9.1", - "dependsOn" : [ ] + "ref": "pkg:npm/ipaddr.js@1.9.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/side-channel@1.1.0", - "dependsOn" : [ + "ref": "pkg:npm/side-channel@1.1.0", + "dependsOn": [ "pkg:npm/es-errors@1.3.0", "pkg:npm/object-inspect@1.13.4", "pkg:npm/side-channel-list@1.0.0", @@ -1836,36 +1829,36 @@ ] }, { - "ref" : "pkg:npm/mime@1.6.0", - "dependsOn" : [ ] + "ref": "pkg:npm/mime@1.6.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/encodeurl@1.0.2", - "dependsOn" : [ ] + "ref": "pkg:npm/encodeurl@1.0.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/semver@7.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/semver@7.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/has-flag@3.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/has-flag@3.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/media-typer@0.3.0", - "dependsOn" : [ ] + "ref": "pkg:npm/media-typer@0.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/undici-types@6.21.0", - "dependsOn" : [ ] + "ref": "pkg:npm/undici-types@6.21.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/picomatch@2.3.1", - "dependsOn" : [ ] + "ref": "pkg:npm/picomatch@2.3.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/readable-stream@2.3.8", - "dependsOn" : [ + "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", @@ -1877,69 +1870,69 @@ ] }, { - "ref" : "pkg:npm/balanced-match@1.0.2", - "dependsOn" : [ ] + "ref": "pkg:npm/balanced-match@1.0.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/concat-map@0.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/concat-map@0.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/fill-range@7.1.1", - "dependsOn" : [ + "ref": "pkg:npm/fill-range@7.1.1", + "dependsOn": [ "pkg:npm/to-regex-range@5.0.1" ] }, { - "ref" : "pkg:npm/safer-buffer@2.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/safer-buffer@2.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/binary-extensions@2.3.0", - "dependsOn" : [ ] + "ref": "pkg:npm/binary-extensions@2.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/is-extglob@2.1.1", - "dependsOn" : [ ] + "ref": "pkg:npm/is-extglob@2.1.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/buffer-equal-constant-time@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/buffer-equal-constant-time@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/ecdsa-sig-formatter@1.0.11", - "dependsOn" : [ + "ref": "pkg:npm/ecdsa-sig-formatter@1.0.11", + "dependsOn": [ "pkg:npm/safe-buffer@5.2.1" ] }, { - "ref" : "pkg:npm/mime-db@1.52.0", - "dependsOn" : [ ] + "ref": "pkg:npm/mime-db@1.52.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/sparse-bitfield@3.0.3", - "dependsOn" : [ + "ref": "pkg:npm/sparse-bitfield@3.0.3", + "dependsOn": [ "pkg:npm/memory-pager@1.5.0" ] }, { - "ref" : "pkg:npm/es-errors@1.3.0", - "dependsOn" : [ ] + "ref": "pkg:npm/es-errors@1.3.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/object-inspect@1.13.4", - "dependsOn" : [ ] + "ref": "pkg:npm/object-inspect@1.13.4", + "dependsOn": [] }, { - "ref" : "pkg:npm/side-channel-list@1.0.0", - "dependsOn" : [ + "ref": "pkg:npm/side-channel-list@1.0.0", + "dependsOn": [ "pkg:npm/es-errors@1.3.0", "pkg:npm/object-inspect@1.13.4" ] }, { - "ref" : "pkg:npm/side-channel-map@1.0.1", - "dependsOn" : [ + "ref": "pkg:npm/side-channel-map@1.0.1", + "dependsOn": [ "pkg:npm/call-bound@1.0.4", "pkg:npm/es-errors@1.3.0", "pkg:npm/get-intrinsic@1.3.0", @@ -1947,8 +1940,8 @@ ] }, { - "ref" : "pkg:npm/side-channel-weakmap@1.0.2", - "dependsOn" : [ + "ref": "pkg:npm/side-channel-weakmap@1.0.2", + "dependsOn": [ "pkg:npm/call-bound@1.0.4", "pkg:npm/es-errors@1.3.0", "pkg:npm/get-intrinsic@1.3.0", @@ -1957,44 +1950,44 @@ ] }, { - "ref" : "pkg:npm/to-regex-range@5.0.1", - "dependsOn" : [ + "ref": "pkg:npm/to-regex-range@5.0.1", + "dependsOn": [ "pkg:npm/is-number@7.0.0" ] }, { - "ref" : "pkg:npm/core-util-is@1.0.3", - "dependsOn" : [ ] + "ref": "pkg:npm/core-util-is@1.0.3", + "dependsOn": [] }, { - "ref" : "pkg:npm/isarray@1.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/isarray@1.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/process-nextick-args@2.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/process-nextick-args@2.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/string_decoder@1.1.1", - "dependsOn" : [ + "ref": "pkg:npm/string_decoder@1.1.1", + "dependsOn": [ "pkg:npm/safe-buffer@5.2.1", "pkg:npm/safe-buffer@5.1.2" ] }, { - "ref" : "pkg:npm/util-deprecate@1.0.2", - "dependsOn" : [ ] + "ref": "pkg:npm/util-deprecate@1.0.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/call-bound@1.0.4", - "dependsOn" : [ + "ref": "pkg:npm/call-bound@1.0.4", + "dependsOn": [ "pkg:npm/call-bind-apply-helpers@1.0.2", "pkg:npm/get-intrinsic@1.3.0" ] }, { - "ref" : "pkg:npm/get-intrinsic@1.3.0", - "dependsOn" : [ + "ref": "pkg:npm/get-intrinsic@1.3.0", + "dependsOn": [ "pkg:npm/call-bind-apply-helpers@1.0.2", "pkg:npm/es-define-property@1.0.1", "pkg:npm/es-errors@1.3.0", @@ -2008,66 +2001,66 @@ ] }, { - "ref" : "pkg:npm/memory-pager@1.5.0", - "dependsOn" : [ ] + "ref": "pkg:npm/memory-pager@1.5.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/call-bind-apply-helpers@1.0.2", - "dependsOn" : [ + "ref": "pkg:npm/call-bind-apply-helpers@1.0.2", + "dependsOn": [ "pkg:npm/es-errors@1.3.0", "pkg:npm/function-bind@1.1.2" ] }, { - "ref" : "pkg:npm/es-define-property@1.0.1", - "dependsOn" : [ ] + "ref": "pkg:npm/es-define-property@1.0.1", + "dependsOn": [] }, { - "ref" : "pkg:npm/es-object-atoms@1.1.1", - "dependsOn" : [ + "ref": "pkg:npm/es-object-atoms@1.1.1", + "dependsOn": [ "pkg:npm/es-errors@1.3.0" ] }, { - "ref" : "pkg:npm/function-bind@1.1.2", - "dependsOn" : [ ] + "ref": "pkg:npm/function-bind@1.1.2", + "dependsOn": [] }, { - "ref" : "pkg:npm/get-proto@1.0.1", - "dependsOn" : [ + "ref": "pkg:npm/get-proto@1.0.1", + "dependsOn": [ "pkg:npm/dunder-proto@1.0.1", "pkg:npm/es-object-atoms@1.1.1" ] }, { - "ref" : "pkg:npm/gopd@1.2.0", - "dependsOn" : [ ] + "ref": "pkg:npm/gopd@1.2.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/has-symbols@1.1.0", - "dependsOn" : [ ] + "ref": "pkg:npm/has-symbols@1.1.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/hasown@2.0.2", - "dependsOn" : [ + "ref": "pkg:npm/hasown@2.0.2", + "dependsOn": [ "pkg:npm/function-bind@1.1.2" ] }, { - "ref" : "pkg:npm/math-intrinsics@1.1.0", - "dependsOn" : [ ] + "ref": "pkg:npm/math-intrinsics@1.1.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/is-number@7.0.0", - "dependsOn" : [ ] + "ref": "pkg:npm/is-number@7.0.0", + "dependsOn": [] }, { - "ref" : "pkg:npm/dunder-proto@1.0.1", - "dependsOn" : [ + "ref": "pkg:npm/dunder-proto@1.0.1", + "dependsOn": [ "pkg:npm/call-bind-apply-helpers@1.0.2", "pkg:npm/es-errors@1.3.0", "pkg:npm/gopd@1.2.0" ] } ] -} \ No newline at end of file +} From 9988076022be8cbaefbc53acf6e04fb0dfb28607 Mon Sep 17 00:00:00 2001 From: Adva Oren Date: Tue, 24 Mar 2026 10:46:47 +0200 Subject: [PATCH 093/102] fix: update npm before npm ci in CI workflows (#427) --- .github/workflows/publish.yml | 4 ++-- .github/workflows/push-to-registry.yml | 3 +++ .github/workflows/release.yml | 3 +++ .github/workflows/test.yml | 3 +++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a3da2862..9cd277a5 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -37,7 +37,7 @@ jobs: registry-url: 'https://registry.npmjs.org' - name: Update npm - run: npm install -g npm@latest + run: npm install -g npm@11.11.1 - name: Configure git run: | @@ -103,7 +103,7 @@ jobs: registry-url: 'https://registry.npmjs.org' - name: Update npm - run: npm install -g npm@latest + run: npm install -g npm@11.11.1 - name: Install project modules run: npm ci diff --git a/.github/workflows/push-to-registry.yml b/.github/workflows/push-to-registry.yml index ba734ebe..7316da1d 100644 --- a/.github/workflows/push-to-registry.yml +++ b/.github/workflows/push-to-registry.yml @@ -31,6 +31,9 @@ jobs: node-version: 24 cache: npm + - name: Install latest npm + run: npm install -g npm@11.11.1 + - name: Install project modules run: npm ci diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 04cb1e80..b9f238d7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -49,6 +49,9 @@ jobs: NEW_VERSION=$(npm version ${{ inputs.version_type }} --no-git-tag-version | sed 's/v//') echo "version=$NEW_VERSION" >> "$GITHUB_OUTPUT" + - name: Install latest npm + run: npm install -g npm@11.11.1 + - name: Install project modules run: npm ci diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9146f2d7..6ee51c31 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -79,6 +79,9 @@ jobs: - name: Setup skopeo run: sudo apt update && sudo apt-get -y install skopeo + - name: Install latest npm + run: npm install -g npm@11.11.1 + - name: Install project modules run: npm ci From 2ea1d77148aced42f4ef075359f70c604e5aabe7 Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Tue, 24 Mar 2026 14:05:47 +0100 Subject: [PATCH 094/102] feat: support JS/TS monorepo workspace batch analysis (#423) * feat: allow monorepo lock files using workspaceDir Signed-off-by: Ruben Romero Montes Co-authored-by: Cursor Implements TC-3862 * refactor: improve workspace discovery robustness and batch analysis maintainability - Replace hand-rolled pnpm-workspace.yaml parser with js-yaml - Fix negation pattern handling in workspace discovery (e.g. !**/test/**) - Refactor stackAnalysisBatch into focused helpers, eliminating duplicated SBOM generation logic between fail-fast and continue-on-error paths - Add integration tests for stackAnalysisBatch with mocked providers and HTTP backend Co-Authored-By: Claude Opus 4.6 Implements TC-3862 * fix: address qodo review findings for batch analysis - Make generateOneSbom async and await provider.provideStack() to support async providers (e.g. python_pip) - Propagate workspaceDir as cwd for package manager commands so npm/pnpm/yarn run from workspace root in monorepos - Fix CLI --html --metadata printing wrapper object instead of HTML string Implements TC-3862 Co-Authored-By: Claude Opus 4.6 * refactor: use TRUSTIFY_DA_WORKSPACE_DIR convention consistently Remove the opts.workspaceDir fallback pattern and use only the TRUSTIFY_DA_WORKSPACE_DIR key through getCustom(), keeping the existing single-convention pattern for option propagation. TC-3862 Co-Authored-By: Claude Opus 4.6 * fix: resolve eslint warnings in workspace.js and batch test Use named import for js-yaml load function and fix import ordering in stack_analysis_batch.test.js. TC-3862 Co-Authored-By: Claude Opus 4.6 --------- Signed-off-by: Ruben Romero Montes Co-authored-by: Cursor Co-authored-by: Claude Opus 4.6 --- README.md | 56 +++++- package-lock.json | 119 ++++++++--- package.json | 4 + src/analysis.js | 50 ++++- src/batch_opts.js | 37 ++++ src/cli.js | 129 +++++++++++- src/index.js | 315 +++++++++++++++++++++++++++++- src/provider.js | 9 +- src/providers/base_javascript.js | 30 +-- src/providers/javascript_pnpm.js | 4 +- src/providers/rust_cargo.js | 13 +- src/workspace.js | 271 +++++++++++++++++++++++++ test/batch_opts.test.js | 51 +++++ test/providers/javascript.test.js | 15 ++ test/providers/rust_cargo.test.js | 17 ++ test/providers/workspace.test.js | 189 ++++++++++++++++++ test/stack_analysis_batch.test.js | 289 +++++++++++++++++++++++++++ 17 files changed, 1541 insertions(+), 57 deletions(-) create mode 100644 src/batch_opts.js create mode 100644 src/workspace.js create mode 100644 test/batch_opts.test.js create mode 100644 test/providers/workspace.test.js create mode 100644 test/stack_analysis_batch.test.js diff --git a/README.md b/README.md index 4457b361..de7ddb9f 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,11 @@ let stackAnalysis = await client.stackAnalysis('/path/to/pom.xml') let stackAnalysisHtml = await client.stackAnalysis('/path/to/pom.xml', true) // Get component analysis in JSON format let componentAnalysis = await client.componentAnalysis('/path/to/pom.xml') +// For monorepos, pass workspace root so the client finds the lock file +let monorepoOpts = { workspaceDir: '/path/to/workspace-root' } +let stackAnalysisMonorepo = await client.stackAnalysis('/path/to/package.json', false, monorepoOpts) +// Batch analysis for entire workspace (Cargo or JS/TS); optional parallel SBOM generation +let batchReport = await client.stackAnalysisBatch('/path/to/workspace-root', false, { batchConcurrency: 10 }) // Get image analysis in JSON format let imageAnalysis = await client.imageAnalysis(['docker.io/library/node:18']) // Get image analysis in HTML format (string) @@ -101,8 +106,9 @@ $ npx @trustify-da/trustify-da-javascript-client help Usage: trustify-da-javascript-client {component|stack|image|validate-token|license} Commands: - trustify-da-javascript-client stack [--html|--summary] produce stack report for manifest path - trustify-da-javascript-client component [--summary] produce component report for a manifest type and content + trustify-da-javascript-client stack [--workspace-dir ] [--html|--summary] produce stack report for manifest path + trustify-da-javascript-client stack-batch [--html|--summary] produce stack report for all packages/crates in workspace + trustify-da-javascript-client component [--workspace-dir ] produce component report for a manifest type and content trustify-da-javascript-client image [--html|--summary] produce image analysis report for OCI image references trustify-da-javascript-client license display project license information from manifest and LICENSE file in JSON format @@ -121,9 +127,21 @@ $ npx @trustify-da/trustify-da-javascript-client stack /path/to/pom.xml --summar # get stack analysis in html format format $ npx @trustify-da/trustify-da-javascript-client stack /path/to/pom.xml --html +# get stack analysis for monorepo (lock file at workspace root) +$ npx @trustify-da/trustify-da-javascript-client stack /path/to/package.json --workspace-dir /path/to/workspace-root + # get component analysis $ npx @trustify-da/trustify-da-javascript-client component /path/to/pom.xml +# get component analysis for monorepo +$ npx @trustify-da/trustify-da-javascript-client component /path/to/package.json -w /path/to/workspace-root + +# batch stack analysis for entire workspace (Cargo or JS/TS) +$ npx @trustify-da/trustify-da-javascript-client stack-batch /path/to/workspace-root + +# optional: extra discovery excludes (merged with defaults); repeat --ignore or use TRUSTIFY_DA_WORKSPACE_DISCOVERY_IGNORE +$ npx @trustify-da/trustify-da-javascript-client stack-batch /path/to/workspace-root --ignore '**/fixtures/**' + # get image analysis in json format $ npx @trustify-da/trustify-da-javascript-client image docker.io/library/node:18 @@ -162,9 +180,21 @@ $ trustify-da-javascript-client stack /path/to/pom.xml --summary # get stack analysis in html format format $ trustify-da-javascript-client stack /path/to/pom.xml --html +# get stack analysis for monorepo (lock file at workspace root) +$ trustify-da-javascript-client stack /path/to/package.json --workspace-dir /path/to/workspace-root + # get component analysis $ trustify-da-javascript-client component /path/to/pom.xml +# get component analysis for monorepo +$ trustify-da-javascript-client component /path/to/package.json -w /path/to/workspace-root + +# batch stack analysis for entire workspace +$ trustify-da-javascript-client stack-batch /path/to/workspace-root + +# with extra discovery excludes +$ trustify-da-javascript-client stack-batch /path/to/workspace-root -i '**/vendor/**' + # get image analysis in json format $ trustify-da-javascript-client image docker.io/library/node:18 @@ -382,6 +412,8 @@ let options = { 'TRUSTIFY_DA_PIP_PATH' : '/path/to/pip', 'TRUSTIFY_DA_GRADLE_PATH' : '/path/to/gradle', 'TRUSTIFY_DA_CARGO_PATH' : '/path/to/cargo', + // Workspace root for monorepos (Cargo, npm/pnpm/yarn); lock file expected here + 'workspaceDir': '/path/to/workspace-root', // Configure proxy for all requests 'TRUSTIFY_DA_PROXY_URL': 'http://proxy.example.com:8080' } @@ -404,6 +436,21 @@ let imageAnalysisWithArch = await client.imageAnalysis(['httpd:2.4.49^^amd64'], **_Environment variables takes precedence._**

+

Monorepo / Workspace Support

+

+For monorepos (Cargo workspaces, npm/pnpm/yarn workspaces) where the lock file lives at the workspace root rather than next to the manifest, pass the workspace root via workspaceDir or TRUSTIFY_DA_WORKSPACE_DIR: +

+
    +
  • Cargo: When set, the client checks only the given directory for Cargo.lock instead of walking up from the manifest.
  • +
  • JavaScript (npm, pnpm, yarn): When set, the client looks for the lock file (package-lock.json, pnpm-lock.yaml, yarn.lock) at the workspace root.
  • +
+

+Use stackAnalysisBatch(workspaceRoot, html, opts) to analyze all packages/crates in a workspace in one request. Supports Cargo workspaces and JS/TS workspaces (pnpm, npm, yarn). Optional batchConcurrency (or TRUSTIFY_DA_BATCH_CONCURRENCY) limits parallel SBOM generation (default 10). For JS/TS, each package.json must have non-empty name and version; invalid manifests are skipped (warnings). Per-manifest SBOM failures are skipped if at least one SBOM succeeds (unless continueOnError: false). Set batchMetadata: true (or TRUSTIFY_DA_BATCH_METADATA) to receive { analysis, metadata } with errors[]. CLI: stack-batch --metadata, --fail-fast. See monorepo implementation plan §2.3 and §3.5. +

+

+See VS Code Extension Integration Requirements for integration details. +

+

Proxy Configuration

You can configure a proxy for all HTTP/HTTPS requests made by the API. This is useful when your environment requires going through a proxy to access external services. @@ -508,6 +555,11 @@ following keys for setting custom paths for the said executables. cargo TRUSTIFY_DA_CARGO_PATH + +Workspace root (monorepos) +— +workspaceDir / TRUSTIFY_DA_WORKSPACE_DIR + #### Match Manifest Versions Feature diff --git a/package-lock.json b/package-lock.json index 9b3cef0d..05d039ed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,11 +12,15 @@ "@babel/core": "^7.23.2", "@cyclonedx/cyclonedx-library": "^6.13.0", "eslint-import-resolver-typescript": "^4.4.4", + "fast-glob": "^3.3.3", "fast-toml": "^0.5.4", "fast-xml-parser": "^5.3.4", "help": "^3.0.2", "https-proxy-agent": "^7.0.6", + "js-yaml": "^4.1.1", + "micromatch": "^4.0.8", "node-fetch": "^3.3.2", + "p-limit": "^5.0.0", "packageurl-js": "~1.0.2", "smol-toml": "^1.6.0", "tree-sitter-requirements": "github:Strum355/tree-sitter-requirements#d0261ee76b84253997fe70d7d397e78c006c3801", @@ -772,7 +776,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -786,7 +789,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -796,7 +798,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -1498,7 +1499,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, "license": "Python-2.0" }, "node_modules/array-buffer-byte-length": { @@ -1754,7 +1754,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -3323,6 +3322,34 @@ "devOptional": true, "license": "MIT" }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -3382,7 +3409,6 @@ "version": "1.20.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", - "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -3435,7 +3461,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -4341,7 +4366,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -4397,7 +4421,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -4450,7 +4473,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -4734,7 +4756,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -4971,6 +4992,28 @@ "node": ">= 0.4" } }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/mimic-response": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", @@ -5941,16 +5984,15 @@ } }, "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "yocto-queue": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -5972,6 +6014,35 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", @@ -6103,7 +6174,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -6208,7 +6278,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -6446,7 +6515,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -6496,7 +6564,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -7495,7 +7562,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -8210,13 +8276,12 @@ } }, "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" diff --git a/package.json b/package.json index 31d072fd..e21a9540 100644 --- a/package.json +++ b/package.json @@ -50,11 +50,15 @@ "@babel/core": "^7.23.2", "@cyclonedx/cyclonedx-library": "^6.13.0", "eslint-import-resolver-typescript": "^4.4.4", + "fast-glob": "^3.3.3", "fast-toml": "^0.5.4", "fast-xml-parser": "^5.3.4", "help": "^3.0.2", "https-proxy-agent": "^7.0.6", + "js-yaml": "^4.1.1", + "micromatch": "^4.0.8", "node-fetch": "^3.3.2", + "p-limit": "^5.0.0", "packageurl-js": "~1.0.2", "smol-toml": "^1.6.0", "tree-sitter-requirements": "github:Strum355/tree-sitter-requirements#d0261ee76b84253997fe70d7d397e78c006c3801", diff --git a/src/analysis.js b/src/analysis.js index 2d56fad5..f25274dd 100644 --- a/src/analysis.js +++ b/src/analysis.js @@ -6,7 +6,7 @@ import { runLicenseCheck } from "./license/index.js"; import { generateImageSBOM, parseImageRef } from "./oci_image/utils.js"; import { addProxyAgent, getCustom, getTokenHeaders , TRUSTIFY_DA_OPERATION_TYPE_HEADER, TRUSTIFY_DA_PACKAGE_MANAGER_HEADER } from "./tools.js"; -export default { requestComponent, requestStack, requestImages, validateToken } +export default { requestComponent, requestStack, requestStackBatch, requestImages, validateToken } /** * Send a stack analysis request and get the report as 'text/html' or 'application/json'. @@ -137,6 +137,54 @@ async function requestComponent(provider, manifest, url, opts = {}) { return Promise.resolve(result) } +/** + * Send a batch stack analysis request for multiple manifests (SBOMs keyed by purl). + * @param {Object.} sbomByPurl - Map of root purl to CycloneDX SBOM object + * @param {string} url - the backend url + * @param {boolean} [html=false] - true returns HTML, false returns JSON + * @param {import("index.js").Options} [opts={}] + * @returns {Promise>} + */ +async function requestStackBatch(sbomByPurl, url, html = false, opts = {}) { + const finalUrl = new URL(`${url}/api/v5/batch-analysis`) + if (opts['TRUSTIFY_DA_RECOMMENDATIONS_ENABLED'] === 'false') { + finalUrl.searchParams.append('recommend', 'false') + } + + const fetchOptions = addProxyAgent({ + method: 'POST', + headers: { + 'Accept': html ? 'text/html' : 'application/json', + 'Content-Type': 'application/json', + ...getTokenHeaders(opts) + }, + body: JSON.stringify(sbomByPurl) + }, opts) + + const resp = await fetch(finalUrl, fetchOptions) + + if (resp.status === 200) { + let result + if (!html) { + result = await resp.json() + } else { + result = await resp.text() + } + if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { + const exRequestId = resp.headers.get("ex-request-id") + if (exRequestId) { + console.log("Unique Identifier associated with this request - ex-request-id=" + exRequestId) + } + console.log("Response body received from Trustify DA backend server : " + EOL + EOL) + console.log(JSON.stringify(result, null, 4)) + console.log("Ending time of sending batch stack analysis request to Trustify DA backend server= " + new Date()) + } + return result + } else { + throw new Error(`Got error response from Trustify DA backend - http return code : ${resp.status}, ex-request-id: ${resp.headers.get("ex-request-id")} error message => ${await resp.text()}`) + } +} + /** * * @param {Array} imageRefs diff --git a/src/batch_opts.js b/src/batch_opts.js new file mode 100644 index 00000000..9c18d841 --- /dev/null +++ b/src/batch_opts.js @@ -0,0 +1,37 @@ +import { getCustom } from './tools.js' + +/** + * Whether to skip failed manifests and continue (default), or fail on first SBOM/validation error. + * `opts.continueOnError` overrides; env `TRUSTIFY_DA_CONTINUE_ON_ERROR=false` disables continuation. + * + * @param {{ continueOnError?: boolean, TRUSTIFY_DA_CONTINUE_ON_ERROR?: string, [key: string]: unknown }} [opts={}] + * @returns {boolean} true = collect errors (default), false = fail-fast + */ +export function resolveContinueOnError(opts = {}) { + if (typeof opts.continueOnError === 'boolean') { + return opts.continueOnError + } + const v = getCustom('TRUSTIFY_DA_CONTINUE_ON_ERROR', null, opts) + if (v != null && String(v).trim() !== '') { + return String(v).toLowerCase() !== 'false' + } + return true +} + +/** + * When true, `stackAnalysisBatch` returns `{ analysis, metadata }` instead of the backend response only. + * `opts.batchMetadata` overrides; env `TRUSTIFY_DA_BATCH_METADATA=true` enables. + * + * @param {{ batchMetadata?: boolean, TRUSTIFY_DA_BATCH_METADATA?: string, [key: string]: unknown }} [opts={}] + * @returns {boolean} + */ +export function resolveBatchMetadata(opts = {}) { + if (typeof opts.batchMetadata === 'boolean') { + return opts.batchMetadata + } + const v = getCustom('TRUSTIFY_DA_BATCH_METADATA', null, opts) + if (v != null && String(v).trim() !== '') { + return String(v).toLowerCase() === 'true' + } + return false +} diff --git a/src/cli.js b/src/cli.js index 3e289c6e..1550c4aa 100644 --- a/src/cli.js +++ b/src/cli.js @@ -21,10 +21,18 @@ const component = { type: 'string', normalize: true, } - ), + ).options({ + workspaceDir: { + alias: 'w', + desc: 'Workspace root directory (for monorepos; lock file is expected here)', + type: 'string', + normalize: true, + } + }), handler: async args => { let manifestName = args['/path/to/manifest'] - let res = await client.componentAnalysis(manifestName) + const opts = args.workspaceDir ? { TRUSTIFY_DA_WORKSPACE_DIR: args.workspaceDir } : {} + let res = await client.componentAnalysis(manifestName, opts) console.log(JSON.stringify(res, null, 2)) } } @@ -137,15 +145,22 @@ const stack = { desc: 'For JSON report, get only the \'summary\'', type: 'boolean', conflicts: 'html' + }, + workspaceDir: { + alias: 'w', + desc: 'Workspace root directory (for monorepos; lock file is expected here)', + type: 'string', + normalize: true, } }), handler: async args => { let manifest = args['/path/to/manifest'] let html = args['html'] let summary = args['summary'] + const opts = args.workspaceDir ? { TRUSTIFY_DA_WORKSPACE_DIR: args.workspaceDir } : {} let theProvidersSummary = new Map(); let theProvidersObject ={} - let res = await client.stackAnalysis(manifest, html) + let res = await client.stackAnalysis(manifest, html, opts) if(summary) { for (let provider in res.providers ) { @@ -169,6 +184,111 @@ const stack = { } } +// command for batch stack analysis (workspace) +const stackBatch = { + command: 'stack-batch [--html|--summary] [--concurrency ] [--ignore ...] [--metadata] [--fail-fast]', + desc: 'produce stack report for all packages/crates in a workspace (Cargo or JS/TS)', + builder: yargs => yargs.positional( + '/path/to/workspace-root', + { + desc: 'workspace root directory (containing Cargo.toml+Cargo.lock or package.json+lock file)', + type: 'string', + normalize: true, + } + ).options({ + html: { + alias: 'r', + desc: 'Get the report as HTML instead of JSON', + type: 'boolean', + conflicts: 'summary' + }, + summary: { + alias: 's', + desc: 'For JSON report, get only the \'summary\' per package', + type: 'boolean', + conflicts: 'html' + }, + concurrency: { + alias: 'c', + desc: 'Max parallel SBOM generations (default: 10, env: TRUSTIFY_DA_BATCH_CONCURRENCY)', + type: 'number', + }, + ignore: { + alias: 'i', + desc: 'Extra glob patterns excluded from workspace discovery (merged with defaults). Repeat flag per pattern. Env: TRUSTIFY_DA_WORKSPACE_DISCOVERY_IGNORE (comma-separated)', + type: 'string', + array: true, + }, + metadata: { + alias: 'm', + desc: 'Return { analysis, metadata } with per-manifest errors (env: TRUSTIFY_DA_BATCH_METADATA=true)', + type: 'boolean', + default: false, + }, + failFast: { + desc: 'Stop on first invalid package.json or SBOM error (env: TRUSTIFY_DA_CONTINUE_ON_ERROR=false)', + type: 'boolean', + default: false, + } + }), + handler: async args => { + const workspaceRoot = args['/path/to/workspace-root'] + const html = args['html'] + const summary = args['summary'] + const opts = {} + if (args.concurrency != null) { + opts.batchConcurrency = args.concurrency + } + const extraIgnores = Array.isArray(args.ignore) ? args.ignore.filter(p => p != null && String(p).trim()) : [] + if (extraIgnores.length > 0) { + opts.workspaceDiscoveryIgnore = extraIgnores + } + if (args.metadata) { + opts.batchMetadata = true + } + if (args.failFast) { + opts.continueOnError = false + } + let res = await client.stackAnalysisBatch(workspaceRoot, html, opts) + const batchAnalysis = + res && typeof res === 'object' && res != null && 'analysis' in res ? res.analysis : res + if (summary && !html && typeof batchAnalysis === 'object') { + const summaries = {} + for (const [purl, report] of Object.entries(batchAnalysis)) { + if (report?.providers) { + for (const provider of Object.keys(report.providers)) { + const sources = report.providers[provider]?.sources + if (sources) { + for (const [source, data] of Object.entries(sources)) { + if (data?.summary) { + if (!summaries[purl]) { + summaries[purl] = {} + } + if (!summaries[purl][provider]) { + summaries[purl][provider] = {} + } + summaries[purl][provider][source] = data.summary + } + } + } + } + } + } + if (res && typeof res === 'object' && res != null && 'metadata' in res) { + res = { analysis: summaries, metadata: res.metadata } + } else { + res = summaries + } + } + if (html) { + const htmlContent = res && typeof res === 'object' && 'analysis' in res ? res.analysis : res + console.log(htmlContent) + } else { + console.log(JSON.stringify(res, null, 2)) + } + } +} + // command for license checking const license = { command: 'license ', @@ -243,8 +363,9 @@ const license = { // parse and invoke the command yargs(hideBin(process.argv)) - .usage(`Usage: ${process.argv[0].includes("node") ? path.parse(process.argv[1]).base : path.parse(process.argv[0]).base} {component|stack|image|validate-token|license}`) + .usage(`Usage: ${process.argv[0].includes("node") ? path.parse(process.argv[1]).base : path.parse(process.argv[0]).base} {component|stack|stack-batch|image|validate-token|license}`) .command(stack) + .command(stackBatch) .command(component) .command(image) .command(validateToken) diff --git a/src/index.js b/src/index.js index 3dfdf976..a3980992 100644 --- a/src/index.js +++ b/src/index.js @@ -1,9 +1,19 @@ import path from "node:path"; import { EOL } from "os"; +import pLimit from 'p-limit' + import { availableProviders, match } from './provider.js' import analysis from './analysis.js' import fs from 'node:fs' import { getCustom } from "./tools.js"; +import { resolveBatchMetadata, resolveContinueOnError } from './batch_opts.js' +import { + discoverWorkspaceCrates, + discoverWorkspacePackages, + filterManifestPathsByDiscoveryIgnore, + resolveWorkspaceDiscoveryIgnore, + validatePackageJson, +} from './workspace.js' import.meta.dirname import * as url from 'url'; @@ -11,7 +21,16 @@ export { parseImageRef } from "./oci_image/utils.js"; export { ImageRef } from "./oci_image/images.js"; export { getProjectLicense, findLicenseFilePath, identifyLicense, getLicenseDetails, licensesFromReport, normalizeLicensesResponse, runLicenseCheck, getCompatibility } from "./license/index.js"; -export default { componentAnalysis, stackAnalysis, imageAnalysis, validateToken } +export default { componentAnalysis, stackAnalysis, stackAnalysisBatch, imageAnalysis, validateToken } +export { + discoverWorkspacePackages, + discoverWorkspaceCrates, + validatePackageJson, + resolveWorkspaceDiscoveryIgnore, + filterManifestPathsByDiscoveryIgnore, + resolveContinueOnError, + resolveBatchMetadata, +} /** * @typedef {{ @@ -40,15 +59,36 @@ export default { componentAnalysis, stackAnalysis, imageAnalysis, validateToken * TRUSTIFY_DA_SYFT_CONFIG_PATH?: string | undefined, * TRUSTIFY_DA_SYFT_PATH?: string | undefined, * TRUSTIFY_DA_YARN_PATH?: string | undefined, + * TRUSTIFY_DA_WORKSPACE_DIR?: string | undefined, * TRUSTIFY_DA_LICENSE_CHECK?: string | undefined, * MATCH_MANIFEST_VERSIONS?: string | undefined, * TRUSTIFY_DA_SOURCE?: string | undefined, * TRUSTIFY_DA_TOKEN?: string | undefined, * TRUSTIFY_DA_TELEMETRY_ID?: string | undefined, - * [key: string]: string | undefined, + * TRUSTIFY_DA_WORKSPACE_DIR?: string | undefined, + * batchConcurrency?: number | undefined, + * TRUSTIFY_DA_BATCH_CONCURRENCY?: string | undefined, + * workspaceDiscoveryIgnore?: string[] | undefined, + * TRUSTIFY_DA_WORKSPACE_DISCOVERY_IGNORE?: string | undefined, + * continueOnError?: boolean | undefined, + * TRUSTIFY_DA_CONTINUE_ON_ERROR?: string | undefined, + * batchMetadata?: boolean | undefined, + * TRUSTIFY_DA_BATCH_METADATA?: string | undefined, + * [key: string]: string | number | boolean | string[] | undefined, * }} Options */ +/** + * @typedef {{ + * workspaceRoot: string, + * ecosystem: 'javascript' | 'cargo' | 'unknown', + * total: number, + * successful: number, + * failed: number, + * errors: Array<{ manifestPath: string, phase: 'validation' | 'sbom', reason: string }> + * }} BatchAnalysisMetadata + */ + /** * Logs messages to the console if the TRUSTIFY_DA_DEBUG environment variable is set to "true". @@ -144,7 +184,7 @@ export function selectTrustifyDABackend(opts = {}) { async function stackAnalysis(manifest, html = false, opts = {}) { const theUrl = selectTrustifyDABackend(opts) fs.accessSync(manifest, fs.constants.R_OK) // throws error if file unreadable - let provider = match(manifest, availableProviders) // throws error if no matching provider + let provider = match(manifest, availableProviders, opts) // throws error if no matching provider return await analysis.requestStack(provider, manifest, theUrl, html, opts) // throws error request sending failed } @@ -159,7 +199,7 @@ async function componentAnalysis(manifest, opts = {}) { const theUrl = selectTrustifyDABackend(opts) fs.accessSync(manifest, fs.constants.R_OK) opts["manifest-type"] = path.basename(manifest) - let provider = match(manifest, availableProviders) // throws error if no matching provider + let provider = match(manifest, availableProviders, opts) // throws error if no matching provider return await analysis.requestComponent(provider, manifest, theUrl, opts) // throws error request sending failed } @@ -196,6 +236,273 @@ async function imageAnalysis(imageRefs, html = false, opts = {}) { return await analysis.requestImages(imageRefs, theUrl, html, opts) } +/** + * Max concurrent SBOM generations for batch workspace analysis. Env/opts override default 10. + * @param {Options} opts + * @returns {number} + * @private + */ +function resolveBatchConcurrency(opts) { + const fromEnv = getCustom('TRUSTIFY_DA_BATCH_CONCURRENCY', null, opts) + const raw = opts.batchConcurrency ?? fromEnv ?? '10' + const n = typeof raw === 'number' ? raw : parseInt(String(raw), 10) + if (!Number.isFinite(n) || n < 1) { + return 10 + } + return Math.min(256, n) +} + +/** + * @param {string} root + * @param {'javascript' | 'cargo' | 'unknown'} ecosystem + * @param {number} totalSbomAttempts + * @param {number} successfulSbomCount + * @param {Array<{ manifestPath: string, phase: 'validation' | 'sbom', reason: string }>} errors + * @returns {BatchAnalysisMetadata} + * @private + */ +function buildBatchAnalysisMetadata(root, ecosystem, totalSbomAttempts, successfulSbomCount, errors) { + return { + workspaceRoot: root, + ecosystem, + total: totalSbomAttempts, + successful: successfulSbomCount, + failed: errors.length, + errors: [...errors], + } +} + +/** + * @typedef {{ ok: true, purl: string, sbom: object } | { ok: false, manifestPath: string, reason: string }} SbomResult + */ + +/** + * Generate an SBOM for a single manifest, returning a normalized result. + * + * @param {string} manifestPath + * @param {Options} workspaceOpts - opts with `TRUSTIFY_DA_WORKSPACE_DIR` set + * @returns {Promise} + * @private + */ +async function generateOneSbom(manifestPath, workspaceOpts) { + const provider = match(manifestPath, availableProviders, workspaceOpts) + const provided = await provider.provideStack(manifestPath, workspaceOpts) + const sbom = JSON.parse(provided.content) + const purl = sbom?.metadata?.component?.purl || sbom?.metadata?.component?.['bom-ref'] + if (!purl) { + return { ok: false, manifestPath, reason: 'missing purl in SBOM' } + } + return { ok: true, purl, sbom } +} + +/** + * Detect the workspace ecosystem and discover manifest paths. + * + * @param {string} root - Resolved workspace root + * @param {Options} opts + * @returns {Promise<{ ecosystem: 'javascript' | 'cargo' | 'unknown', manifestPaths: string[] }>} + * @private + */ +async function detectWorkspaceManifests(root, opts) { + const cargoToml = path.join(root, 'Cargo.toml') + const cargoLock = path.join(root, 'Cargo.lock') + const packageJson = path.join(root, 'package.json') + + if (fs.existsSync(cargoToml) && fs.existsSync(cargoLock)) { + return { ecosystem: 'cargo', manifestPaths: await discoverWorkspaceCrates(root, opts) } + } + + const hasJsLock = fs.existsSync(path.join(root, 'pnpm-lock.yaml')) + || fs.existsSync(path.join(root, 'yarn.lock')) + || fs.existsSync(path.join(root, 'package-lock.json')) + + if (fs.existsSync(packageJson) && hasJsLock) { + let manifestPaths = await discoverWorkspacePackages(root, opts) + if (manifestPaths.length === 0) { + manifestPaths = [packageJson] + } + return { ecosystem: 'javascript', manifestPaths } + } + + return { ecosystem: 'unknown', manifestPaths: [] } +} + +/** + * Validate discovered JS package.json manifests, collecting errors. + * + * @param {string[]} manifestPaths + * @param {boolean} continueOnError + * @param {Array<{ manifestPath: string, phase: 'validation' | 'sbom', reason: string }>} collectedErrors - mutated in place + * @returns {{ validPaths: string[] }} + * @throws {Error} on first invalid manifest when `continueOnError` is false + * @private + */ +function validateJsManifests(manifestPaths, continueOnError, collectedErrors) { + const validPaths = [] + for (const p of manifestPaths) { + const v = validatePackageJson(p) + if (v.valid) { + validPaths.push(p) + } else { + collectedErrors.push({ manifestPath: p, phase: 'validation', reason: v.error }) + console.warn(`Skipping invalid package.json (${v.error}): ${p}`) + if (!continueOnError) { + throw new Error(`Invalid package.json (${v.error}): ${p}`) + } + } + } + return { validPaths } +} + +/** + * Generate SBOMs for all manifests. In fail-fast mode, stops on first error. + * In continue-on-error mode, runs concurrently and collects failures. + * + * @param {string[]} manifestPaths + * @param {Options} workspaceOpts + * @param {boolean} continueOnError + * @param {number} concurrency + * @param {Array<{ manifestPath: string, phase: 'validation' | 'sbom', reason: string }>} collectedErrors - mutated in place + * @returns {Promise>} sbomByPurl map + * @throws {Error} on first SBOM failure when `continueOnError` is false + * @private + */ +async function generateSboms(manifestPaths, workspaceOpts, continueOnError, concurrency, collectedErrors) { + /** @type {SbomResult[]} */ + const results = [] + + if (!continueOnError) { + for (const manifestPath of manifestPaths) { + const result = await generateOneSbom(manifestPath, workspaceOpts) + if (!result.ok) { + collectedErrors.push({ manifestPath: result.manifestPath, phase: 'sbom', reason: result.reason }) + throw new Error(`${result.manifestPath}: ${result.reason}`) + } + results.push(result) + } + } else { + const limit = pLimit(concurrency) + const settled = await Promise.all( + manifestPaths.map(manifestPath => limit(async () => { + try { + return await generateOneSbom(manifestPath, workspaceOpts) + } catch (err) { + const msg = err instanceof Error ? err.message : String(err) + if (process.env["TRUSTIFY_DA_DEBUG"] === "true") { + console.log(`Skipping ${manifestPath}: ${msg}`) + } + return { ok: false, manifestPath, reason: msg } + } + })) + ) + for (const r of settled) { + results.push(r) + if (!r.ok) { + collectedErrors.push({ manifestPath: r.manifestPath, phase: 'sbom', reason: r.reason }) + } + } + } + + const sbomByPurl = {} + for (const r of results) { + if (r.ok) { + sbomByPurl[r.purl] = r.sbom + } + } + return sbomByPurl +} + +/** + * Create an Error with optional `batchMetadata` attached. + * @param {string} message + * @param {boolean} wantMetadata + * @param {BatchAnalysisMetadata} [metadata] + * @returns {Error} + * @private + */ +function batchError(message, wantMetadata, metadata) { + const err = new Error(message) + if (wantMetadata && metadata) { + err.batchMetadata = metadata + } + return err +} + +/** + * Get stack analysis for all workspace packages/crates (batch). + * Detects ecosystem from workspace root: Cargo (Cargo.toml + Cargo.lock) or JS/TS (package.json + lock file). + * SBOMs are generated in parallel (see `batchConcurrency`) unless `continueOnError: false` (fail-fast sequential). + * With `opts.batchMetadata` / `TRUSTIFY_DA_BATCH_METADATA`, returns `{ analysis, metadata }` including validation and SBOM errors. + * + * @param {string} workspaceRoot - Path to workspace root (containing lock file and workspace config) + * @param {boolean} [html=false] - true returns HTML, false returns JSON report + * @param {Options} [opts={}] - `batchConcurrency`, discovery ignores, `continueOnError` (default true), `batchMetadata` (default false) + * @returns {Promise|{ analysis: string|Object., metadata: BatchAnalysisMetadata }>} + * @throws {Error} if workspace root invalid, no manifests found, no packages pass validation, no SBOMs produced, or backend request failed. When `opts.batchMetadata` is set, `error.batchMetadata` may be set on thrown errors. + */ +async function stackAnalysisBatch(workspaceRoot, html = false, opts = {}) { + const theUrl = selectTrustifyDABackend(opts) + const root = path.resolve(workspaceRoot) + fs.accessSync(root, fs.constants.R_OK) + + const continueOnError = resolveContinueOnError(opts) + const wantMetadata = resolveBatchMetadata(opts) + + /** @type {Array<{ manifestPath: string, phase: 'validation' | 'sbom', reason: string }>} */ + const collectedErrors = [] + + const { ecosystem, manifestPaths: discovered } = await detectWorkspaceManifests(root, opts) + let manifestPaths = discovered + + if (ecosystem === 'javascript') { + try { + const { validPaths } = validateJsManifests(manifestPaths, continueOnError, collectedErrors) + manifestPaths = validPaths + } catch (err) { + throw batchError(err.message, wantMetadata, + buildBatchAnalysisMetadata(root, ecosystem, 0, 0, collectedErrors)) + } + if (manifestPaths.length === 0 && discovered.length > 0) { + const detail = collectedErrors.map(e => `${e.manifestPath}: ${e.reason}`).join('; ') + throw batchError(`No valid packages after validation at ${root}. ${detail}`, wantMetadata, + buildBatchAnalysisMetadata(root, ecosystem, 0, 0, collectedErrors)) + } + } + + if (manifestPaths.length === 0) { + throw new Error(`No workspace manifests found at ${root}. Ensure Cargo.toml+Cargo.lock or package.json+lock file exist.`) + } + + const workspaceOpts = { ...opts, TRUSTIFY_DA_WORKSPACE_DIR: root } + const concurrency = resolveBatchConcurrency(opts) + + let sbomByPurl + try { + sbomByPurl = await generateSboms(manifestPaths, workspaceOpts, continueOnError, concurrency, collectedErrors) + } catch (err) { + throw batchError(err.message, wantMetadata, + buildBatchAnalysisMetadata(root, ecosystem, manifestPaths.length, 0, collectedErrors)) + } + + if (Object.keys(sbomByPurl).length === 0) { + throw batchError( + `No valid SBOMs produced from ${manifestPaths.length} manifest(s) at ${root}`, + wantMetadata, + buildBatchAnalysisMetadata(root, ecosystem, manifestPaths.length, 0, collectedErrors) + ) + } + + const analysisResult = await analysis.requestStackBatch(sbomByPurl, theUrl, html, opts) + const meta = buildBatchAnalysisMetadata( + root, ecosystem, manifestPaths.length, Object.keys(sbomByPurl).length, collectedErrors + ) + + if (wantMetadata) { + return { analysis: analysisResult, metadata: meta } + } + return analysisResult +} + /** * Validates the Exhort token. * @param {Options} [opts={}] - Optional parameters, potentially including token override. diff --git a/src/provider.js b/src/provider.js index 4bfa8b52..0a1fa94a 100644 --- a/src/provider.js +++ b/src/provider.js @@ -11,7 +11,7 @@ import pythonPipProvider from './providers/python_pip.js' import rustCargoProvider from './providers/rust_cargo.js' /** @typedef {{ecosystem: string, contentType: string, content: string}} Provided */ -/** @typedef {{isSupported: function(string): boolean, validateLockFile: function(string): void, provideComponent: function(string, {}): Provided | Promise, provideStack: function(string, {}): Provided | Promise, readLicenseFromManifest: function(string): string | null}} Provider */ +/** @typedef {{isSupported: function(string): boolean, validateLockFile: function(string, Object): void, provideComponent: function(string, {}): Provided | Promise, provideStack: function(string, {}): Provided | Promise, readLicenseFromManifest: function(string): string | null}} Provider */ /** * MUST include all providers here. @@ -21,9 +21,9 @@ export const availableProviders = [ new Java_maven(), new Java_gradle_groovy(), new Java_gradle_kotlin(), - new Javascript_npm(), new Javascript_pnpm(), new Javascript_yarn(), + new Javascript_npm(), golangGomodulesProvider, pythonPipProvider, rustCargoProvider] @@ -51,16 +51,17 @@ export function matchForLicense(manifestPath, providers) { * Each provider MUST export 'provideStack' taking manifest path returning a {@link Provided}. * @param {string} manifest - the name-type or path of the manifest * @param {[Provider]} providers - list of providers to iterate over + * @param {{TRUSTIFY_DA_WORKSPACE_DIR?: string}} [opts={}] - optional; TRUSTIFY_DA_WORKSPACE_DIR overrides lock file location for workspaces * @returns {Provider} * @throws {Error} when the manifest is not supported and no provider was matched */ -export function match(manifest, providers) { +export function match(manifest, providers, opts = {}) { 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`) } - const provider = supported.find(prov => prov.validateLockFile(manifestPath.dir)) + const provider = supported.find(prov => prov.validateLockFile(manifestPath.dir, opts)) if(!provider) { throw new Error(`${manifestPath.base} requires a lock file. Use your preferred package manager to generate the lock file.`); } diff --git a/src/providers/base_javascript.js b/src/providers/base_javascript.js index 2d863539..64af7f22 100644 --- a/src/providers/base_javascript.js +++ b/src/providers/base_javascript.js @@ -4,7 +4,7 @@ import path from 'node:path' import { getLicense } from '../license/license_utils.js' import Sbom from '../sbom.js' -import { getCustom, getCustomPath, invokeCommand, toPurl, toPurlFromString } from "../tools.js"; +import { getCustom, getCustomPath, invokeCommand, toPurl, toPurlFromString } from '../tools.js' import Manifest from './manifest.js'; @@ -112,13 +112,18 @@ export default class Base_javascript { } /** - * Checks if a required lock file exists in the same path as the manifest + * Checks if a required lock file exists in the manifest directory or at the workspace root. + * When TRUSTIFY_DA_WORKSPACE_DIR is provided (via env var or opts), + * checks only that directory for the lock file. * @param {string} manifestDir - The base directory where the manifest is located + * @param {{TRUSTIFY_DA_WORKSPACE_DIR?: string}} [opts={}] - optional workspace root * @returns {boolean} True if the lock file exists */ - validateLockFile(manifestDir) { - const lock = path.join(manifestDir, this._lockFileName()); - return fs.existsSync(lock); + validateLockFile(manifestDir, opts = {}) { + const workspaceDir = getCustom('TRUSTIFY_DA_WORKSPACE_DIR', null, opts) + const dirToCheck = workspaceDir ? path.resolve(workspaceDir) : manifestDir + const lock = path.join(dirToCheck, this._lockFileName()) + return fs.existsSync(lock) } /** @@ -176,15 +181,18 @@ export default class Base_javascript { /** * Builds the dependency tree for the project * @param {boolean} includeTransitive - Whether to include transitive dependencies + * @param {Object} [opts={}] - Configuration options; when `TRUSTIFY_DA_WORKSPACE_DIR` is set, commands run from workspace root * @returns {Object} The dependency tree * @protected */ - _buildDependencyTree(includeTransitive) { + _buildDependencyTree(includeTransitive, opts = {}) { this._version(); - let manifestDir = path.dirname(this.#manifest.manifestPath); - this.#createLockFile(manifestDir); + const manifestDir = path.dirname(this.#manifest.manifestPath); + const workspaceDir = getCustom('TRUSTIFY_DA_WORKSPACE_DIR', null, opts) + const cmdDir = workspaceDir ? path.resolve(workspaceDir) : manifestDir; + this.#createLockFile(cmdDir); - let output = this.#executeListCmd(includeTransitive, manifestDir); + let output = this.#executeListCmd(includeTransitive, cmdDir); output = this._parseDepTreeOutput(output); return JSON.parse(output); } @@ -196,7 +204,7 @@ export default class Base_javascript { * @private */ #getSBOM(opts = {}) { - const depsObject = this._buildDependencyTree(true); + const depsObject = this._buildDependencyTree(true, opts); let mainComponent = toPurl(purlType, this.#manifest.name, this.#manifest.version); const license = this.readLicenseFromManifest(this.#manifest.manifestPath); @@ -255,7 +263,7 @@ export default class Base_javascript { * @private */ #getDirectDependencySbom(opts = {}) { - const depTree = this._buildDependencyTree(false); + const depTree = this._buildDependencyTree(false, opts); let mainComponent = toPurl(purlType, this.#manifest.name, this.#manifest.version); const license = this.readLicenseFromManifest(this.#manifest.manifestPath); diff --git a/src/providers/javascript_pnpm.js b/src/providers/javascript_pnpm.js index 9cb723f5..142add02 100644 --- a/src/providers/javascript_pnpm.js +++ b/src/providers/javascript_pnpm.js @@ -18,8 +18,8 @@ export default class Javascript_pnpm extends Base_javascript { return ['install', '--frozen-lockfile']; } - _buildDependencyTree(includeTransitive, manifest) { - const tree = super._buildDependencyTree(includeTransitive, manifest); + _buildDependencyTree(includeTransitive, opts = {}) { + const tree = super._buildDependencyTree(includeTransitive, opts); if (Array.isArray(tree) && tree.length > 0) { return tree[0]; } diff --git a/src/providers/rust_cargo.js b/src/providers/rust_cargo.js index bbe52c10..bfe62eba 100644 --- a/src/providers/rust_cargo.js +++ b/src/providers/rust_cargo.js @@ -6,7 +6,7 @@ import { parse as parseToml } from 'smol-toml' import { getLicense } from '../license/license_utils.js' import Sbom from '../sbom.js' -import { getCustomPath, invokeCommand } from '../tools.js' +import { getCustom, getCustomPath, invokeCommand } from '../tools.js' export default { isSupported, validateLockFile, provideComponent, provideStack, readLicenseFromManifest } @@ -102,10 +102,19 @@ function readLicenseFromManifest(manifestPath) { * up the directory tree looking for Cargo.lock (stopping when we find a * Cargo.toml that contains a [workspace] section, or when we reach the * filesystem root). + * When TRUSTIFY_DA_WORKSPACE_DIR is provided (via env var or opts), + * checks only that directory for Cargo.lock — no walk-up. * @param {string} manifestDir - the directory where the manifest lies + * @param {{TRUSTIFY_DA_WORKSPACE_DIR?: string}} [opts={}] - optional workspace root * @returns {boolean} true if Cargo.lock is found */ -function validateLockFile(manifestDir) { +function validateLockFile(manifestDir, opts = {}) { + const workspaceDir = getCustom('TRUSTIFY_DA_WORKSPACE_DIR', null, opts) + if (workspaceDir) { + const dir = path.resolve(workspaceDir) + return fs.existsSync(path.join(dir, 'Cargo.lock')) + } + let dir = path.resolve(manifestDir) let parent = dir diff --git a/src/workspace.js b/src/workspace.js new file mode 100644 index 00000000..f71d5e18 --- /dev/null +++ b/src/workspace.js @@ -0,0 +1,271 @@ +import fs from 'node:fs' +import path from 'node:path' + +import fg from 'fast-glob' +import { load as yamlLoad } from 'js-yaml' +import micromatch from 'micromatch' + +import { getCustom, getCustomPath, invokeCommand } from './tools.js' + +/** Default paths skipped during JS workspace discovery (merged with user patterns). */ +const DEFAULT_WORKSPACE_DISCOVERY_IGNORE = [ + '**/node_modules/**', + '**/.git/**', +] + +/** + * Resolve ignore globs for workspace discovery: defaults + `TRUSTIFY_DA_WORKSPACE_DISCOVERY_IGNORE` + `opts.workspaceDiscoveryIgnore`. + * Patterns are fast-glob / micromatch style, relative to the workspace root (forward slashes). + * + * @param {{ workspaceDiscoveryIgnore?: string[], TRUSTIFY_DA_WORKSPACE_DISCOVERY_IGNORE?: string, [key: string]: unknown }} [opts={}] + * @returns {string[]} + */ +export function resolveWorkspaceDiscoveryIgnore(opts = {}) { + const merged = [...DEFAULT_WORKSPACE_DISCOVERY_IGNORE] + const fromEnv = getCustom('TRUSTIFY_DA_WORKSPACE_DISCOVERY_IGNORE', null, opts) + if (fromEnv && String(fromEnv).trim()) { + merged.push(...String(fromEnv).split(',').map(s => s.trim()).filter(Boolean)) + } + const extra = opts.workspaceDiscoveryIgnore + if (Array.isArray(extra)) { + for (const p of extra) { + if (typeof p === 'string' && p.trim()) { + merged.push(p.trim()) + } + } + } + return [...new Set(merged)] +} + +/** + * @param {string} root - Workspace root (absolute) + * @param {string[]} ignorePatterns + */ +function buildWorkspaceDiscoveryGlobOptions(root, ignorePatterns) { + return { + cwd: root, + absolute: true, + onlyFiles: true, + ignore: ignorePatterns, + followSymbolicLinks: false, + } +} + +/** + * @param {string} filePath - Absolute path + * @param {string} root - Workspace root (absolute) + * @returns {string} Relative path with forward slashes + */ +function relativePathForGlobMatch(filePath, root) { + const rel = path.relative(root, filePath) + return rel.split(path.sep).join('/') +} + +/** + * Drop manifest paths whose location matches an ignore pattern (e.g. root unshift, Cargo paths). + * + * @param {string[]} manifestPaths + * @param {string} root + * @param {string[]} ignorePatterns + * @returns {string[]} + */ +export function filterManifestPathsByDiscoveryIgnore(manifestPaths, root, ignorePatterns) { + if (!ignorePatterns.length) { + return manifestPaths + } + const resolvedRoot = path.resolve(root) + return manifestPaths.filter(absPath => { + const rel = relativePathForGlobMatch(absPath, resolvedRoot) + if (rel === '') { + return true + } + return !ignorePatterns.some(pattern => micromatch.isMatch(rel, pattern, { dot: true })) + }) +} + +/** + * @typedef {{ valid: true, name: string, version: string } | { valid: false, error: string }} ValidatePackageJsonResult + */ + +/** + * Validate a package.json has non-empty `name` and `version` (required for stable SBOM root identity in batch). + * + * @param {string} packageJsonPath - Absolute or relative path to package.json + * @returns {ValidatePackageJsonResult} + */ +export function validatePackageJson(packageJsonPath) { + let content + try { + const raw = fs.readFileSync(packageJsonPath, 'utf-8') + content = JSON.parse(raw) + } catch (err) { + const msg = err instanceof Error ? err.message : String(err) + return { valid: false, error: `Invalid package.json: ${msg}` } + } + if (!content || typeof content !== 'object') { + return { valid: false, error: 'package.json must be a JSON object' } + } + const name = content.name + const version = content.version + if (typeof name !== 'string' || !name.trim()) { + return { valid: false, error: 'Missing or invalid name' } + } + if (typeof version !== 'string' || !version.trim()) { + return { valid: false, error: 'Missing or invalid version' } + } + return { valid: true, name: name.trim(), version: version.trim() } +} + +/** + * Discover all package.json paths in a JS/TS workspace. + * Reads pnpm-workspace.yaml or package.json workspaces. + * + * @param {string} workspaceRoot - Absolute or relative path to workspace root + * @param {{ workspaceDiscoveryIgnore?: string[], TRUSTIFY_DA_WORKSPACE_DISCOVERY_IGNORE?: string, [key: string]: unknown }} [opts={}] - optional `workspaceDiscoveryIgnore` globs (merged with defaults and env) + * @returns {Promise} Paths to package.json files (absolute) + */ +export async function discoverWorkspacePackages(workspaceRoot, opts = {}) { + const root = path.resolve(workspaceRoot) + const ignorePatterns = resolveWorkspaceDiscoveryIgnore(opts) + const globOpts = buildWorkspaceDiscoveryGlobOptions(root, ignorePatterns) + const pnpmWorkspace = path.join(root, 'pnpm-workspace.yaml') + const packageJson = path.join(root, 'package.json') + + if (fs.existsSync(pnpmWorkspace)) { + return discoverFromPnpmWorkspace(root, pnpmWorkspace, globOpts, ignorePatterns) + } + if (fs.existsSync(packageJson)) { + return discoverFromPackageJsonWorkspaces(root, packageJson, globOpts, ignorePatterns) + } + return [] +} + +/** + * @param {string} root + * @param {string} pnpmWorkspacePath + * @param {object} globOpts - fast-glob options (cwd, ignore, followSymbolicLinks, …) + * @param {string[]} ignorePatterns - for post-filter + * @returns {Promise} + */ +async function discoverFromPnpmWorkspace(root, pnpmWorkspacePath, globOpts, ignorePatterns) { + const content = fs.readFileSync(pnpmWorkspacePath, 'utf-8') + const packages = parsePnpmPackages(content) + if (packages.length === 0) { + return [] + } + const patterns = toManifestGlobPatterns(packages, 'package.json') + const manifestPaths = await fg(patterns, globOpts) + return filterManifestPathsByDiscoveryIgnore(manifestPaths, root, ignorePatterns) +} + +/** + * Parse the `packages` array from pnpm-workspace.yaml content. + * @param {string} content - Raw YAML content + * @returns {string[]} + */ +function parsePnpmPackages(content) { + let doc + try { + doc = yamlLoad(content) + } catch { + return [] + } + if (!doc || typeof doc !== 'object' || !Array.isArray(doc.packages)) { + return [] + } + return doc.packages.filter(p => typeof p === 'string' && p.trim()).map(p => p.trim()) +} + +/** + * Convert workspace glob patterns to manifest-file glob patterns, + * correctly handling negation prefixes. + * + * @param {string[]} patterns - Workspace glob patterns (may include negations) + * @param {string} manifestFileName - e.g. 'package.json' or 'Cargo.toml' + * @returns {string[]} + */ +function toManifestGlobPatterns(patterns, manifestFileName) { + return patterns.map(p => { + if (p.startsWith('!')) { + return `!${p.slice(1)}/${manifestFileName}` + } + return `${p}/${manifestFileName}` + }) +} + +/** + * @param {string} root + * @param {string} packageJsonPath + * @param {object} globOpts + * @param {string[]} ignorePatterns + * @returns {Promise} + */ +async function discoverFromPackageJsonWorkspaces(root, packageJsonPath, globOpts, ignorePatterns) { + let pkg + try { + pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8')) + } catch { + return [] + } + const workspaces = pkg.workspaces + if (!workspaces) { + return [] + } + const raw = Array.isArray(workspaces) ? workspaces : workspaces.packages || [] + const patterns = toManifestGlobPatterns(raw.filter(p => typeof p === 'string'), 'package.json') + if (patterns.length === 0) { + return [] + } + const manifestPaths = await fg(patterns, globOpts) + const rootPkg = path.join(root, 'package.json') + if (fs.existsSync(rootPkg) && !manifestPaths.includes(rootPkg)) { + manifestPaths.unshift(rootPkg) + } + return filterManifestPathsByDiscoveryIgnore(manifestPaths, root, ignorePatterns) +} + +/** + * Discover all Cargo.toml manifest paths in a Cargo workspace. + * Uses `cargo metadata` to get workspace members. + * + * @param {string} workspaceRoot - Absolute or relative path to workspace root (must contain Cargo.toml and Cargo.lock) + * @param {import('./index.js').Options} [opts={}] + * @returns {Promise} Paths to Cargo.toml files (absolute) + */ +export async function discoverWorkspaceCrates(workspaceRoot, opts = {}) { + const root = path.resolve(workspaceRoot) + const cargoToml = path.join(root, 'Cargo.toml') + const cargoLock = path.join(root, 'Cargo.lock') + + if (!fs.existsSync(cargoToml) || !fs.existsSync(cargoLock)) { + return [] + } + + const cargoBin = getCustomPath('cargo', opts) + let output + try { + output = invokeCommand(cargoBin, ['metadata', '--format-version', '1', '--no-deps'], { cwd: root }) + } catch { + return [] + } + + let metadata + try { + metadata = JSON.parse(output.toString().trim()) + } catch { + return [] + } + + const memberIds = new Set(metadata.workspace_members || []) + const manifestPaths = [] + for (const pkg of metadata.packages || []) { + if (memberIds.has(pkg.id) && pkg.manifest_path) { + const manifestPath = path.resolve(pkg.manifest_path) + if (fs.existsSync(manifestPath)) { + manifestPaths.push(manifestPath) + } + } + } + const ignorePatterns = resolveWorkspaceDiscoveryIgnore(opts) + return filterManifestPathsByDiscoveryIgnore(manifestPaths, root, ignorePatterns) +} diff --git a/test/batch_opts.test.js b/test/batch_opts.test.js new file mode 100644 index 00000000..b3f1b97f --- /dev/null +++ b/test/batch_opts.test.js @@ -0,0 +1,51 @@ +import { expect } from 'chai' + +import { resolveBatchMetadata, resolveContinueOnError } from '../src/batch_opts.js' + +suite('resolveContinueOnError', () => { + test('defaults to true', () => { + expect(resolveContinueOnError({})).to.be.true + }) + + test('opts false disables', () => { + expect(resolveContinueOnError({ continueOnError: false })).to.be.false + }) + + test('env false disables', () => { + const prev = process.env.TRUSTIFY_DA_CONTINUE_ON_ERROR + process.env.TRUSTIFY_DA_CONTINUE_ON_ERROR = 'false' + try { + expect(resolveContinueOnError({})).to.be.false + } finally { + if (prev === undefined) { + delete process.env.TRUSTIFY_DA_CONTINUE_ON_ERROR + } else { + process.env.TRUSTIFY_DA_CONTINUE_ON_ERROR = prev + } + } + }) +}) + +suite('resolveBatchMetadata', () => { + test('defaults to false', () => { + expect(resolveBatchMetadata({})).to.be.false + }) + + test('opts true enables', () => { + expect(resolveBatchMetadata({ batchMetadata: true })).to.be.true + }) + + test('env true enables', () => { + const prev = process.env.TRUSTIFY_DA_BATCH_METADATA + process.env.TRUSTIFY_DA_BATCH_METADATA = 'true' + try { + expect(resolveBatchMetadata({})).to.be.true + } finally { + if (prev === undefined) { + delete process.env.TRUSTIFY_DA_BATCH_METADATA + } else { + process.env.TRUSTIFY_DA_BATCH_METADATA = prev + } + } + }) +}) diff --git a/test/providers/javascript.test.js b/test/providers/javascript.test.js index 861166d4..59708b08 100644 --- a/test/providers/javascript.test.js +++ b/test/providers/javascript.test.js @@ -152,5 +152,20 @@ suite('testing the javascript-npm data provider', async () => { expect(() => new Manifest(manifestPath)).to.throw(Error); }); + test('verify match with opts.TRUSTIFY_DA_WORKSPACE_DIR finds npm provider when lock is at workspace root', () => { + const manifest = 'test/providers/provider_manifests/npm/with_lock_file/package.json' + const opts = { TRUSTIFY_DA_WORKSPACE_DIR: 'test/providers/provider_manifests/npm/with_lock_file' } + const provider = match(manifest, availableProviders, opts) + expect(provider).to.not.be.null + expect(provider.isSupported('package.json')).to.be.true + }) + + test('verify match with opts.TRUSTIFY_DA_WORKSPACE_DIR finds pnpm provider when lock is at workspace root', () => { + const manifest = 'test/providers/provider_manifests/pnpm/with_lock_file/package.json' + const opts = { TRUSTIFY_DA_WORKSPACE_DIR: 'test/providers/provider_manifests/pnpm/with_lock_file' } + const provider = match(manifest, availableProviders, opts) + expect(provider).to.not.be.null + expect(provider.isSupported('package.json')).to.be.true + }) }).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); diff --git a/test/providers/rust_cargo.test.js b/test/providers/rust_cargo.test.js index dda73448..edcd01b7 100644 --- a/test/providers/rust_cargo.test.js +++ b/test/providers/rust_cargo.test.js @@ -125,6 +125,23 @@ suite('testing the rust-cargo data provider', () => { test('verify validateLockFile returns false for workspace member when workspace root has no Cargo.lock', () => { expect(rustCargo.validateLockFile('test/providers/provider_manifests/cargo/workspace_member_without_lock/member1')).to.equal(false) }) + + test('verify validateLockFile with opts.TRUSTIFY_DA_WORKSPACE_DIR returns true when Cargo.lock exists at workspace root', () => { + const workspaceRoot = 'test/providers/provider_manifests/cargo/workspace_member_with_lock' + expect(rustCargo.validateLockFile('test/providers/provider_manifests/cargo/workspace_member_with_lock/member1', { TRUSTIFY_DA_WORKSPACE_DIR: workspaceRoot })).to.equal(true) + }) + + test('verify validateLockFile with opts.TRUSTIFY_DA_WORKSPACE_DIR returns false when Cargo.lock is not at workspace root', () => { + const wrongDir = 'test/providers/provider_manifests/cargo/workspace_member_without_lock' + expect(rustCargo.validateLockFile('test/providers/provider_manifests/cargo/workspace_member_with_lock/member1', { TRUSTIFY_DA_WORKSPACE_DIR: wrongDir })).to.equal(false) + }) + + test('verify match with opts.TRUSTIFY_DA_WORKSPACE_DIR finds Cargo provider when lock is at workspace root', () => { + const opts = { TRUSTIFY_DA_WORKSPACE_DIR: 'test/providers/provider_manifests/cargo/workspace_member_with_lock' } + const provider = match('test/providers/provider_manifests/cargo/workspace_member_with_lock/member1/Cargo.toml', availableProviders, opts) + expect(provider).to.not.be.null + expect(provider.isSupported('Cargo.toml')).to.be.true + }) }).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); suite('testing the rust-cargo single crate without ignore', () => { diff --git a/test/providers/workspace.test.js b/test/providers/workspace.test.js new file mode 100644 index 00000000..5c06b68a --- /dev/null +++ b/test/providers/workspace.test.js @@ -0,0 +1,189 @@ +import fs from 'node:fs' +import path from 'node:path' + +import { expect } from 'chai' +import esmock from 'esmock' + +import { + discoverWorkspaceCrates, + discoverWorkspacePackages, + filterManifestPathsByDiscoveryIgnore, + resolveWorkspaceDiscoveryIgnore, + validatePackageJson, +} from '../../src/workspace.js' + +suite('discoverWorkspacePackages', () => { + test('returns empty when no pnpm-workspace.yaml or package.json workspaces', async () => { + const root = 'test/providers/tst_manifests/npm/package_json_deps_without_exhortignore_object' + const result = await discoverWorkspacePackages(root) + expect(result).to.be.an('array') + expect(result).to.have.lengthOf(0) + }) + + test('excludes paths matching workspaceDiscoveryIgnore', async () => { + const pkgContent = { name: 'root', version: '1.0.0', workspaces: ['packages/*'] } + const memberA = { name: 'a', version: '1.0.0' } + const memberB = { name: 'b', version: '1.0.0' } + const tmpDir = path.join(process.cwd(), 'test/providers/tst_manifests/tmp_workspace_ignore') + fs.mkdirSync(path.join(tmpDir, 'packages/a'), { recursive: true }) + fs.mkdirSync(path.join(tmpDir, 'packages/b'), { recursive: true }) + fs.writeFileSync(path.join(tmpDir, 'package.json'), JSON.stringify(pkgContent)) + fs.writeFileSync(path.join(tmpDir, 'packages/a/package.json'), JSON.stringify(memberA)) + fs.writeFileSync(path.join(tmpDir, 'packages/b/package.json'), JSON.stringify(memberB)) + try { + const result = await discoverWorkspacePackages(tmpDir, { + workspaceDiscoveryIgnore: ['**/packages/b/**'], + }) + expect(result.some(p => p.endsWith('packages/a/package.json'))).to.be.true + expect(result.some(p => p.endsWith('packages/b/package.json'))).to.be.false + } finally { + fs.rmSync(tmpDir, { recursive: true, force: true }) + } + }) + + test('discovers packages from package.json workspaces array', async () => { + const pkgContent = { name: 'root', version: '1.0.0', workspaces: ['packages/*'] } + const memberPkg = { name: 'member', version: '1.0.0' } + const tmpDir = path.join(process.cwd(), 'test/providers/tst_manifests/tmp_workspace_test') + fs.mkdirSync(path.join(tmpDir, 'packages/member'), { recursive: true }) + fs.writeFileSync(path.join(tmpDir, 'package.json'), JSON.stringify(pkgContent)) + fs.writeFileSync(path.join(tmpDir, 'packages/member/package.json'), JSON.stringify(memberPkg)) + try { + const result = await discoverWorkspacePackages(tmpDir) + expect(result).to.be.an('array') + expect(result.length).to.be.at.least(1) + expect(result.some(p => p.endsWith('packages/member/package.json'))).to.be.true + } finally { + fs.rmSync(tmpDir, { recursive: true, force: true }) + } + }) + + test('returns empty when package.json has no workspaces (single package)', async () => { + const root = 'test/providers/provider_manifests/npm/with_lock_file' + const result = await discoverWorkspacePackages(root) + expect(result).to.be.an('array') + expect(result).to.have.lengthOf(0) + }) +}) + +suite('resolveWorkspaceDiscoveryIgnore', () => { + test('merges defaults with opts and dedupes', () => { + const r = resolveWorkspaceDiscoveryIgnore({ + workspaceDiscoveryIgnore: ['**/vendor/**', '**/node_modules/**'], + }) + expect(r).to.include('**/node_modules/**') + expect(r).to.include('**/.git/**') + expect(r).to.include('**/vendor/**') + }) +}) + +suite('filterManifestPathsByDiscoveryIgnore', () => { + test('removes paths matching a pattern', () => { + const root = path.resolve('test/providers/tst_manifests') + const paths = [ + path.join(root, 'a/package.json'), + path.join(root, 'node_modules/x/package.json'), + ] + const filtered = filterManifestPathsByDiscoveryIgnore(paths, root, ['**/node_modules/**']) + expect(filtered).to.have.lengthOf(1) + expect(filtered[0]).to.include('a/package.json') + }) +}) + +suite('validatePackageJson', () => { + test('accepts valid name and version', () => { + const tmpDir = path.join(process.cwd(), 'test/providers/tst_manifests/tmp_validate_pkg') + fs.mkdirSync(tmpDir, { recursive: true }) + const p = path.join(tmpDir, 'package.json') + fs.writeFileSync(p, JSON.stringify({ name: 'foo', version: '1.0.0' })) + try { + const r = validatePackageJson(p) + expect(r.valid).to.be.true + if (r.valid) { + expect(r.name).to.equal('foo') + expect(r.version).to.equal('1.0.0') + } + } finally { + fs.rmSync(tmpDir, { recursive: true, force: true }) + } + }) + + test('rejects missing name', () => { + const tmpDir = path.join(process.cwd(), 'test/providers/tst_manifests/tmp_validate_pkg2') + fs.mkdirSync(tmpDir, { recursive: true }) + const p = path.join(tmpDir, 'package.json') + fs.writeFileSync(p, JSON.stringify({ version: '1.0.0' })) + try { + const r = validatePackageJson(p) + expect(r.valid).to.be.false + if (!r.valid) { + expect(r.error).to.match(/name/i) + } + } finally { + fs.rmSync(tmpDir, { recursive: true, force: true }) + } + }) + + test('rejects missing version', () => { + const tmpDir = path.join(process.cwd(), 'test/providers/tst_manifests/tmp_validate_pkg3') + fs.mkdirSync(tmpDir, { recursive: true }) + const p = path.join(tmpDir, 'package.json') + fs.writeFileSync(p, JSON.stringify({ name: 'foo' })) + try { + const r = validatePackageJson(p) + expect(r.valid).to.be.false + if (!r.valid) { + expect(r.error).to.match(/version/i) + } + } finally { + fs.rmSync(tmpDir, { recursive: true, force: true }) + } + }) + + test('rejects invalid JSON', () => { + const tmpDir = path.join(process.cwd(), 'test/providers/tst_manifests/tmp_validate_pkg4') + fs.mkdirSync(tmpDir, { recursive: true }) + const p = path.join(tmpDir, 'package.json') + fs.writeFileSync(p, '{ not json') + try { + const r = validatePackageJson(p) + expect(r.valid).to.be.false + if (!r.valid) { + expect(r.error).to.match(/Invalid package\.json/i) + } + } finally { + fs.rmSync(tmpDir, { recursive: true, force: true }) + } + }) +}) + +suite('discoverWorkspaceCrates', () => { + test('returns empty when no Cargo.toml or Cargo.lock at root', async () => { + const result = await discoverWorkspaceCrates('test/providers/tst_manifests/npm') + expect(result).to.be.an('array') + expect(result).to.have.lengthOf(0) + }) + + test('discovers workspace members from Cargo workspace', async () => { + const root = path.resolve('test/providers/tst_manifests/cargo/cargo_virtual_workspace') + const metadata = { + packages: [ + { id: `path+file://${root}/crate-a#0.1.0`, manifest_path: path.join(root, 'crate-a/Cargo.toml') }, + { id: `path+file://${root}/crate-b#0.2.0`, manifest_path: path.join(root, 'crate-b/Cargo.toml') } + ], + workspace_members: [`path+file://${root}/crate-a#0.1.0`, `path+file://${root}/crate-b#0.2.0`] + } + const { discoverWorkspaceCrates } = await esmock('../../src/workspace.js', { + '../../src/tools.js': { + getCustomPath: () => 'cargo', + invokeCommand: () => Buffer.from(JSON.stringify(metadata)) + } + }) + const result = await discoverWorkspaceCrates(root) + expect(result).to.be.an('array') + expect(result).to.have.lengthOf(2) + expect(result.every(p => p.endsWith('Cargo.toml'))).to.be.true + expect(result.some(p => p.includes('crate-a'))).to.be.true + expect(result.some(p => p.includes('crate-b'))).to.be.true + }) +}) diff --git a/test/stack_analysis_batch.test.js b/test/stack_analysis_batch.test.js new file mode 100644 index 00000000..c9bcbc69 --- /dev/null +++ b/test/stack_analysis_batch.test.js @@ -0,0 +1,289 @@ +import fs from 'node:fs' +import path from 'node:path' + +import { expect } from 'chai' +import esmock from 'esmock' +import { http, HttpResponse } from 'msw' +import { setupServer } from 'msw/node' + +const BACKEND_URL = 'http://localhost:9999' +const BACKEND_OPTS = { TRUSTIFY_DA_BACKEND_URL: BACKEND_URL } + +/** + * Helper: create a temporary monorepo workspace on disk. + * Returns the root path and a cleanup function. + */ +function createTmpWorkspace(name, { packages = [], pnpmWorkspace = null, rootPkg = null, lockFile = 'package-lock.json' } = {}) { + const tmpDir = path.resolve(`test/tst_manifests_batch_${name}`) + fs.mkdirSync(tmpDir, { recursive: true }) + + if (rootPkg) { + fs.writeFileSync(path.join(tmpDir, 'package.json'), JSON.stringify(rootPkg)) + } + if (pnpmWorkspace) { + fs.writeFileSync(path.join(tmpDir, 'pnpm-workspace.yaml'), pnpmWorkspace) + } + if (lockFile) { + fs.writeFileSync(path.join(tmpDir, lockFile), '{}') + } + + for (const pkg of packages) { + const pkgDir = path.join(tmpDir, pkg.dir) + fs.mkdirSync(pkgDir, { recursive: true }) + fs.writeFileSync(path.join(pkgDir, 'package.json'), JSON.stringify(pkg.content)) + } + + return { root: tmpDir, cleanup: () => fs.rmSync(tmpDir, { recursive: true, force: true }) } +} + +/** + * Build a mock provider module that returns a deterministic SBOM for each manifest. + */ +function buildMockProviders(sbomMap) { + const mockProvider = { + isSupported: () => true, + validateLockFile: () => true, + provideStack: (manifestPath) => { + const sbom = sbomMap[manifestPath] + if (!sbom) { + throw new Error(`No mock SBOM for ${manifestPath}`) + } + return { + ecosystem: 'npm', + content: JSON.stringify(sbom), + contentType: 'application/vnd.cyclonedx+json', + } + }, + } + return { + availableProviders: [mockProvider], + match: () => mockProvider, + } +} + +function makeSbom(name, version) { + return { + metadata: { + component: { + purl: `pkg:npm/${name}@${version}`, + 'bom-ref': `pkg:npm/${name}@${version}`, + }, + }, + components: [], + } +} + +suite('stackAnalysisBatch', () => { + let server + let capturedBody + + suiteSetup(() => { + server = setupServer( + http.post(`${BACKEND_URL}/api/v5/batch-analysis`, async ({ request }) => { + capturedBody = await request.json() + const report = {} + for (const purl of Object.keys(capturedBody)) { + report[purl] = { providers: {} } + } + return HttpResponse.json(report) + }) + ) + server.listen() + }) + + suiteTeardown(() => { + server.close() + }) + + setup(() => { + capturedBody = null + }) + + test('discovers JS workspace packages, generates SBOMs, and sends batch request', async () => { + const { root, cleanup } = createTmpWorkspace('js_batch', { + rootPkg: { name: 'root', version: '1.0.0', workspaces: ['packages/*'] }, + packages: [ + { dir: 'packages/app-a', content: { name: 'app-a', version: '1.0.0' } }, + { dir: 'packages/app-b', content: { name: 'app-b', version: '2.0.0' } }, + ], + }) + + try { + const appASbom = makeSbom('app-a', '1.0.0') + const appBSbom = makeSbom('app-b', '2.0.0') + const rootSbom = makeSbom('root', '1.0.0') + + const sbomMap = {} + sbomMap[path.join(root, 'package.json')] = rootSbom + sbomMap[path.join(root, 'packages/app-a/package.json')] = appASbom + sbomMap[path.join(root, 'packages/app-b/package.json')] = appBSbom + + const mockProviders = buildMockProviders(sbomMap) + const client = await esmock('../src/index.js', { + '../src/provider.js': mockProviders, + }) + + const result = await client.stackAnalysisBatch(root, false, BACKEND_OPTS) + + expect(result).to.be.an('object') + expect(capturedBody).to.be.an('object') + const purls = Object.keys(capturedBody) + expect(purls).to.include('pkg:npm/app-a@1.0.0') + expect(purls).to.include('pkg:npm/app-b@2.0.0') + expect(purls).to.include('pkg:npm/root@1.0.0') + } finally { + cleanup() + } + }) + + test('returns metadata when batchMetadata option is set', async () => { + const { root, cleanup } = createTmpWorkspace('js_meta', { + rootPkg: { name: 'meta-root', version: '1.0.0', workspaces: ['packages/*'] }, + packages: [ + { dir: 'packages/pkg-a', content: { name: 'pkg-a', version: '1.0.0' } }, + ], + }) + + try { + const sbomMap = {} + sbomMap[path.join(root, 'package.json')] = makeSbom('meta-root', '1.0.0') + sbomMap[path.join(root, 'packages/pkg-a/package.json')] = makeSbom('pkg-a', '1.0.0') + + const mockProviders = buildMockProviders(sbomMap) + const client = await esmock('../src/index.js', { + '../src/provider.js': mockProviders, + }) + + const result = await client.stackAnalysisBatch(root, false, { + ...BACKEND_OPTS, + batchMetadata: true, + }) + + expect(result).to.have.property('analysis') + expect(result).to.have.property('metadata') + expect(result.metadata.ecosystem).to.equal('javascript') + expect(result.metadata.successful).to.equal(2) + expect(result.metadata.failed).to.equal(0) + } finally { + cleanup() + } + }) + + test('skips invalid package.json and continues in default mode', async () => { + const { root, cleanup } = createTmpWorkspace('js_invalid', { + rootPkg: { name: 'root-inv', version: '1.0.0', workspaces: ['packages/*'] }, + packages: [ + { dir: 'packages/good', content: { name: 'good', version: '1.0.0' } }, + { dir: 'packages/bad', content: { version: '1.0.0' } }, // missing name + ], + }) + + try { + const sbomMap = {} + sbomMap[path.join(root, 'package.json')] = makeSbom('root-inv', '1.0.0') + sbomMap[path.join(root, 'packages/good/package.json')] = makeSbom('good', '1.0.0') + + const mockProviders = buildMockProviders(sbomMap) + const client = await esmock('../src/index.js', { + '../src/provider.js': mockProviders, + }) + + const result = await client.stackAnalysisBatch(root, false, { + ...BACKEND_OPTS, + batchMetadata: true, + }) + + expect(result.metadata.failed).to.be.at.least(1) + expect(result.metadata.errors.some(e => e.phase === 'validation')).to.be.true + expect(capturedBody).to.be.an('object') + expect(Object.keys(capturedBody)).to.include('pkg:npm/good@1.0.0') + } finally { + cleanup() + } + }) + + test('throws on first invalid package.json in fail-fast mode', async () => { + const { root, cleanup } = createTmpWorkspace('js_failfast', { + rootPkg: { name: 'root-ff', version: '1.0.0', workspaces: ['packages/*'] }, + packages: [ + { dir: 'packages/bad', content: { version: '1.0.0' } }, // missing name + { dir: 'packages/good', content: { name: 'good', version: '1.0.0' } }, + ], + }) + + try { + const sbomMap = {} + sbomMap[path.join(root, 'package.json')] = makeSbom('root-ff', '1.0.0') + sbomMap[path.join(root, 'packages/good/package.json')] = makeSbom('good', '1.0.0') + + const mockProviders = buildMockProviders(sbomMap) + const client = await esmock('../src/index.js', { + '../src/provider.js': mockProviders, + }) + + try { + await client.stackAnalysisBatch(root, false, { + ...BACKEND_OPTS, + continueOnError: false, + batchMetadata: true, + }) + expect.fail('should have thrown') + } catch (err) { + expect(err.message).to.match(/Invalid package\.json/i) + expect(err.batchMetadata).to.be.an('object') + } + } finally { + cleanup() + } + }) + + test('throws when no workspace manifests found', async () => { + const tmpDir = path.resolve('test/tst_manifests_batch_empty') + fs.mkdirSync(tmpDir, { recursive: true }) + + try { + const client = await esmock('../src/index.js', { + '../src/provider.js': buildMockProviders({}), + }) + + try { + await client.stackAnalysisBatch(tmpDir, false, BACKEND_OPTS) + expect.fail('should have thrown') + } catch (err) { + expect(err.message).to.match(/No workspace manifests found/) + } + } finally { + fs.rmSync(tmpDir, { recursive: true, force: true }) + } + }) + + test('discovers pnpm workspace packages', async () => { + const pnpmYaml = `packages:\n - 'apps/*'\n` + const { root, cleanup } = createTmpWorkspace('pnpm_batch', { + rootPkg: { name: 'pnpm-root', version: '1.0.0' }, + pnpmWorkspace: pnpmYaml, + lockFile: 'pnpm-lock.yaml', + packages: [ + { dir: 'apps/web', content: { name: 'web', version: '1.0.0' } }, + ], + }) + + try { + const sbomMap = {} + sbomMap[path.join(root, 'apps/web/package.json')] = makeSbom('web', '1.0.0') + + const mockProviders = buildMockProviders(sbomMap) + const client = await esmock('../src/index.js', { + '../src/provider.js': mockProviders, + }) + + const result = await client.stackAnalysisBatch(root, false, BACKEND_OPTS) + + expect(result).to.be.an('object') + expect(capturedBody).to.be.an('object') + expect(Object.keys(capturedBody)).to.include('pkg:npm/web@1.0.0') + } finally { + cleanup() + } + }) +}) From 714495238ce71cdc3cbc49847765c4bfac365edc Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Tue, 24 Mar 2026 17:32:52 +0100 Subject: [PATCH 095/102] fix: wrong content type for batch-analysis (#429) Signed-off-by: Ruben Romero Montes --- src/analysis.js | 7 +++++-- test/stack_analysis_batch.test.js | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/analysis.js b/src/analysis.js index f25274dd..8675ac34 100644 --- a/src/analysis.js +++ b/src/analysis.js @@ -6,6 +6,9 @@ import { runLicenseCheck } from "./license/index.js"; import { generateImageSBOM, parseImageRef } from "./oci_image/utils.js"; import { addProxyAgent, getCustom, getTokenHeaders , TRUSTIFY_DA_OPERATION_TYPE_HEADER, TRUSTIFY_DA_PACKAGE_MANAGER_HEADER } from "./tools.js"; +/** Media type for CycloneDX JSON batch payloads (batch-analysis API). */ +export const CYCLONEDX_JSON_MEDIA_TYPE = 'application/vnd.cyclonedx+json' + export default { requestComponent, requestStack, requestStackBatch, requestImages, validateToken } /** @@ -155,7 +158,7 @@ async function requestStackBatch(sbomByPurl, url, html = false, opts = {}) { method: 'POST', headers: { 'Accept': html ? 'text/html' : 'application/json', - 'Content-Type': 'application/json', + 'Content-Type': CYCLONEDX_JSON_MEDIA_TYPE, ...getTokenHeaders(opts) }, body: JSON.stringify(sbomByPurl) @@ -208,7 +211,7 @@ async function requestImages(imageRefs, url, html = false, opts = {}) { method: 'POST', headers: { 'Accept': html ? 'text/html' : 'application/json', - 'Content-Type': 'application/vnd.cyclonedx+json', + 'Content-Type': CYCLONEDX_JSON_MEDIA_TYPE, ...getTokenHeaders(opts) }, body: JSON.stringify(imageSboms), diff --git a/test/stack_analysis_batch.test.js b/test/stack_analysis_batch.test.js index c9bcbc69..8385b43d 100644 --- a/test/stack_analysis_batch.test.js +++ b/test/stack_analysis_batch.test.js @@ -6,6 +6,8 @@ import esmock from 'esmock' import { http, HttpResponse } from 'msw' import { setupServer } from 'msw/node' +import { CYCLONEDX_JSON_MEDIA_TYPE } from '../src/analysis.js' + const BACKEND_URL = 'http://localhost:9999' const BACKEND_OPTS = { TRUSTIFY_DA_BACKEND_URL: BACKEND_URL } @@ -73,13 +75,22 @@ function makeSbom(name, version) { } } +function mediaTypeWithoutParameters(contentType) { + if (!contentType) { + return '' + } + return contentType.split(';')[0].trim() +} + suite('stackAnalysisBatch', () => { let server let capturedBody + let capturedContentType suiteSetup(() => { server = setupServer( http.post(`${BACKEND_URL}/api/v5/batch-analysis`, async ({ request }) => { + capturedContentType = request.headers.get('content-type') capturedBody = await request.json() const report = {} for (const purl of Object.keys(capturedBody)) { @@ -97,6 +108,7 @@ suite('stackAnalysisBatch', () => { setup(() => { capturedBody = null + capturedContentType = null }) test('discovers JS workspace packages, generates SBOMs, and sends batch request', async () => { @@ -127,6 +139,7 @@ suite('stackAnalysisBatch', () => { expect(result).to.be.an('object') expect(capturedBody).to.be.an('object') + expect(mediaTypeWithoutParameters(capturedContentType)).to.equal(CYCLONEDX_JSON_MEDIA_TYPE) const purls = Object.keys(capturedBody) expect(purls).to.include('pkg:npm/app-a@1.0.0') expect(purls).to.include('pkg:npm/app-b@2.0.0') @@ -164,6 +177,7 @@ suite('stackAnalysisBatch', () => { expect(result.metadata.ecosystem).to.equal('javascript') expect(result.metadata.successful).to.equal(2) expect(result.metadata.failed).to.equal(0) + expect(mediaTypeWithoutParameters(capturedContentType)).to.equal(CYCLONEDX_JSON_MEDIA_TYPE) } finally { cleanup() } @@ -196,6 +210,7 @@ suite('stackAnalysisBatch', () => { expect(result.metadata.failed).to.be.at.least(1) expect(result.metadata.errors.some(e => e.phase === 'validation')).to.be.true expect(capturedBody).to.be.an('object') + expect(mediaTypeWithoutParameters(capturedContentType)).to.equal(CYCLONEDX_JSON_MEDIA_TYPE) expect(Object.keys(capturedBody)).to.include('pkg:npm/good@1.0.0') } finally { cleanup() @@ -281,6 +296,7 @@ suite('stackAnalysisBatch', () => { expect(result).to.be.an('object') expect(capturedBody).to.be.an('object') + expect(mediaTypeWithoutParameters(capturedContentType)).to.equal(CYCLONEDX_JSON_MEDIA_TYPE) expect(Object.keys(capturedBody)).to.include('pkg:npm/web@1.0.0') } finally { cleanup() From 4689ffb5c65b4e7982146ab6137d5a2090a5e74f Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Wed, 25 Mar 2026 20:17:30 +0100 Subject: [PATCH 096/102] feat: walk up directory tree to find JS lockfile in monorepos (#431) * feat: walk up directory tree to find JS lockfile in monorepos Add parent-traversal logic to Base_javascript.validateLockFile and _buildDependencyTree, matching the existing Cargo provider pattern. When a nested package.json has no lockfile in its directory, the provider now walks up looking for package-lock.json/yarn.lock/ pnpm-lock.yaml, stopping at a package.json with "workspaces" field (the workspace root boundary) or the filesystem root. This enables single-file stack analysis to work for modules in JS/TS monorepos where the lockfile lives at the workspace root. TRUSTIFY_DA_WORKSPACE_DIR still takes precedence as an explicit override (no walk-up when set). Assisted-by: Claude Code Ref: TC-3891 * fix: pass correct cwd to commands and trim unnecessary comments Address Qodo review: #executeListCmd and #createLockFile now pass { cwd: manifestDir } to #invokeCommand so commands run from the lockfile directory, not the manifest directory. Co-Authored-By: Claude Opus 4.6 Ref: TC-3891 * fix: add pnpm-workspace.yaml as workspace root boundary Address Qodo review: _findLockFileDir now also stops at directories containing pnpm-workspace.yaml, preventing the walk-up from escaping pnpm workspace roots that don't use package.json#workspaces. Ref: TC-3891 Co-Authored-By: Claude Opus 4.6 --------- Co-authored-by: Claude Opus 4.6 --- src/providers/base_javascript.js | 77 +++++++++++++++---- test/providers/javascript.test.js | 36 +++++++++ .../package-lock.json | 4 + .../workspace_member_with_lock/package.json | 5 ++ .../packages/module-a/package.json | 4 + .../package.json | 5 ++ .../packages/module-a/package.json | 4 + .../package.json | 4 + .../packages/module-a/package.json | 4 + .../pnpm-workspace.yaml | 2 + 10 files changed, 131 insertions(+), 14 deletions(-) create mode 100644 test/providers/provider_manifests/npm/workspace_member_with_lock/package-lock.json create mode 100644 test/providers/provider_manifests/npm/workspace_member_with_lock/package.json create mode 100644 test/providers/provider_manifests/npm/workspace_member_with_lock/packages/module-a/package.json create mode 100644 test/providers/provider_manifests/npm/workspace_member_without_lock/package.json create mode 100644 test/providers/provider_manifests/npm/workspace_member_without_lock/packages/module-a/package.json create mode 100644 test/providers/provider_manifests/pnpm/workspace_member_without_lock/package.json create mode 100644 test/providers/provider_manifests/pnpm/workspace_member_without_lock/packages/module-a/package.json create mode 100644 test/providers/provider_manifests/pnpm/workspace_member_without_lock/pnpm-workspace.yaml diff --git a/src/providers/base_javascript.js b/src/providers/base_javascript.js index 64af7f22..100c03fa 100644 --- a/src/providers/base_javascript.js +++ b/src/providers/base_javascript.js @@ -112,18 +112,70 @@ export default class Base_javascript { } /** - * Checks if a required lock file exists in the manifest directory or at the workspace root. - * When TRUSTIFY_DA_WORKSPACE_DIR is provided (via env var or opts), - * checks only that directory for the lock file. + * Walks up the directory tree from manifestDir looking for the lock file. + * Stops when the lock file is found, when a package.json with a "workspaces" + * field is encountered without a lock file (workspace root boundary), or + * when the filesystem root is reached. + * + * When TRUSTIFY_DA_WORKSPACE_DIR is set, checks only that directory (no walk-up). + * + * @param {string} manifestDir - The directory to start searching from + * @param {Object} [opts={}] - optional; may contain TRUSTIFY_DA_WORKSPACE_DIR + * @returns {string|null} The directory containing the lock file, or null + * @protected + */ + _isWorkspaceRoot(dir) { + if (fs.existsSync(path.join(dir, 'pnpm-workspace.yaml'))) { + return true + } + const pkgJsonPath = path.join(dir, 'package.json') + if (fs.existsSync(pkgJsonPath)) { + try { + const content = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf-8')) + if (content.workspaces) { + return true + } + } catch (_) { + // ignore parse errors + } + } + return false + } + + _findLockFileDir(manifestDir, opts = {}) { + const workspaceDir = getCustom('TRUSTIFY_DA_WORKSPACE_DIR', null, opts) + if (workspaceDir) { + const dir = path.resolve(workspaceDir) + return fs.existsSync(path.join(dir, this._lockFileName())) ? dir : null + } + + let dir = path.resolve(manifestDir) + let parent = dir + + do { + dir = parent + + if (fs.existsSync(path.join(dir, this._lockFileName()))) { + return dir + } + + if (this._isWorkspaceRoot(dir)) { + return null + } + + parent = path.dirname(dir) + } while (parent !== dir) + + return null + } + + /** * @param {string} manifestDir - The base directory where the manifest is located - * @param {{TRUSTIFY_DA_WORKSPACE_DIR?: string}} [opts={}] - optional workspace root + * @param {Object} [opts={}] - optional; may contain TRUSTIFY_DA_WORKSPACE_DIR * @returns {boolean} True if the lock file exists */ validateLockFile(manifestDir, opts = {}) { - const workspaceDir = getCustom('TRUSTIFY_DA_WORKSPACE_DIR', null, opts) - const dirToCheck = workspaceDir ? path.resolve(workspaceDir) : manifestDir - const lock = path.join(dirToCheck, this._lockFileName()) - return fs.existsSync(lock) + return this._findLockFileDir(manifestDir, opts) !== null } /** @@ -188,8 +240,7 @@ export default class Base_javascript { _buildDependencyTree(includeTransitive, opts = {}) { this._version(); const manifestDir = path.dirname(this.#manifest.manifestPath); - const workspaceDir = getCustom('TRUSTIFY_DA_WORKSPACE_DIR', null, opts) - const cmdDir = workspaceDir ? path.resolve(workspaceDir) : manifestDir; + const cmdDir = this._findLockFileDir(manifestDir, opts) || manifestDir; this.#createLockFile(cmdDir); let output = this.#executeListCmd(includeTransitive, cmdDir); @@ -310,7 +361,7 @@ export default class Base_javascript { */ #executeListCmd(includeTransitive, manifestDir) { const listArgs = this._listCmdArgs(includeTransitive, manifestDir); - return this.#invokeCommand(listArgs); + return this.#invokeCommand(listArgs, { cwd: manifestDir }); } /** @@ -332,14 +383,12 @@ export default class Base_javascript { const isWindows = os.platform() === 'win32'; if (isWindows) { - // On Windows, --prefix flag doesn't work as expected - // Instead of installing from the prefix folder, it installs from current working directory process.chdir(manifestDir); } try { const args = this._updateLockFileCmdArgs(manifestDir); - this.#invokeCommand(args); + this.#invokeCommand(args, { cwd: manifestDir }); } finally { if (isWindows) { process.chdir(originalDir); diff --git a/test/providers/javascript.test.js b/test/providers/javascript.test.js index 59708b08..eec02da1 100644 --- a/test/providers/javascript.test.js +++ b/test/providers/javascript.test.js @@ -53,6 +53,8 @@ suite('testing the javascript-npm data provider', async () => { [ { name: 'npm/with_lock_file', validation: true }, { name: 'npm/without_lock_file', validation: false }, + { name: 'npm/workspace_member_with_lock/packages/module-a', validation: true }, + { name: 'npm/workspace_member_without_lock/packages/module-a', validation: false }, { name: 'pnpm/with_lock_file', validation: true }, { name: 'pnpm/without_lock_file', validation: false }, { name: 'yarn-classic/with_lock_file', validation: true }, @@ -168,4 +170,38 @@ suite('testing the javascript-npm data provider', async () => { expect(provider.isSupported('package.json')).to.be.true }) + test('verify workspace member walks up and finds lock file at workspace root', () => { + const manifest = 'test/providers/provider_manifests/npm/workspace_member_with_lock/packages/module-a/package.json' + const provider = match(manifest, availableProviders) + expect(provider).to.not.be.null + expect(provider.isSupported('package.json')).to.be.true + }) + + test('verify workspace member throws when workspace root has no lock file', () => { + const manifest = 'test/providers/provider_manifests/npm/workspace_member_without_lock/packages/module-a/package.json' + expect(() => match(manifest, availableProviders)) + .to.throw('package.json requires a lock file') + }) + + test('verify match with opts.TRUSTIFY_DA_WORKSPACE_DIR overrides walk-up for workspace member', () => { + const manifest = 'test/providers/provider_manifests/npm/workspace_member_with_lock/packages/module-a/package.json' + const opts = { TRUSTIFY_DA_WORKSPACE_DIR: 'test/providers/provider_manifests/npm/workspace_member_with_lock' } + const provider = match(manifest, availableProviders, opts) + expect(provider).to.not.be.null + expect(provider.isSupported('package.json')).to.be.true + }) + + test('verify pnpm workspace member stops at pnpm-workspace.yaml boundary', () => { + const manifest = 'test/providers/provider_manifests/pnpm/workspace_member_without_lock/packages/module-a/package.json' + expect(() => match(manifest, availableProviders)) + .to.throw('package.json requires a lock file') + }) + + test('verify match with wrong TRUSTIFY_DA_WORKSPACE_DIR fails even when walk-up would succeed', () => { + const manifest = 'test/providers/provider_manifests/npm/workspace_member_with_lock/packages/module-a/package.json' + const opts = { TRUSTIFY_DA_WORKSPACE_DIR: 'test/providers/provider_manifests/npm/workspace_member_without_lock' } + expect(() => match(manifest, availableProviders, opts)) + .to.throw('package.json requires a lock file') + }) + }).beforeAll(() => clock = useFakeTimers(new Date('2023-08-07T00:00:00.000Z'))).afterAll(() => clock.restore()); diff --git a/test/providers/provider_manifests/npm/workspace_member_with_lock/package-lock.json b/test/providers/provider_manifests/npm/workspace_member_with_lock/package-lock.json new file mode 100644 index 00000000..268208f5 --- /dev/null +++ b/test/providers/provider_manifests/npm/workspace_member_with_lock/package-lock.json @@ -0,0 +1,4 @@ +{ + "name": "test-workspace-root", + "lockfileVersion": 3 +} diff --git a/test/providers/provider_manifests/npm/workspace_member_with_lock/package.json b/test/providers/provider_manifests/npm/workspace_member_with_lock/package.json new file mode 100644 index 00000000..98101a90 --- /dev/null +++ b/test/providers/provider_manifests/npm/workspace_member_with_lock/package.json @@ -0,0 +1,5 @@ +{ + "name": "test-workspace-root", + "private": true, + "workspaces": ["packages/*"] +} diff --git a/test/providers/provider_manifests/npm/workspace_member_with_lock/packages/module-a/package.json b/test/providers/provider_manifests/npm/workspace_member_with_lock/packages/module-a/package.json new file mode 100644 index 00000000..05c16625 --- /dev/null +++ b/test/providers/provider_manifests/npm/workspace_member_with_lock/packages/module-a/package.json @@ -0,0 +1,4 @@ +{ + "name": "module-a", + "version": "1.0.0" +} diff --git a/test/providers/provider_manifests/npm/workspace_member_without_lock/package.json b/test/providers/provider_manifests/npm/workspace_member_without_lock/package.json new file mode 100644 index 00000000..98101a90 --- /dev/null +++ b/test/providers/provider_manifests/npm/workspace_member_without_lock/package.json @@ -0,0 +1,5 @@ +{ + "name": "test-workspace-root", + "private": true, + "workspaces": ["packages/*"] +} diff --git a/test/providers/provider_manifests/npm/workspace_member_without_lock/packages/module-a/package.json b/test/providers/provider_manifests/npm/workspace_member_without_lock/packages/module-a/package.json new file mode 100644 index 00000000..05c16625 --- /dev/null +++ b/test/providers/provider_manifests/npm/workspace_member_without_lock/packages/module-a/package.json @@ -0,0 +1,4 @@ +{ + "name": "module-a", + "version": "1.0.0" +} diff --git a/test/providers/provider_manifests/pnpm/workspace_member_without_lock/package.json b/test/providers/provider_manifests/pnpm/workspace_member_without_lock/package.json new file mode 100644 index 00000000..2266cc9d --- /dev/null +++ b/test/providers/provider_manifests/pnpm/workspace_member_without_lock/package.json @@ -0,0 +1,4 @@ +{ + "name": "test-pnpm-workspace-root", + "private": true +} diff --git a/test/providers/provider_manifests/pnpm/workspace_member_without_lock/packages/module-a/package.json b/test/providers/provider_manifests/pnpm/workspace_member_without_lock/packages/module-a/package.json new file mode 100644 index 00000000..05c16625 --- /dev/null +++ b/test/providers/provider_manifests/pnpm/workspace_member_without_lock/packages/module-a/package.json @@ -0,0 +1,4 @@ +{ + "name": "module-a", + "version": "1.0.0" +} diff --git a/test/providers/provider_manifests/pnpm/workspace_member_without_lock/pnpm-workspace.yaml b/test/providers/provider_manifests/pnpm/workspace_member_without_lock/pnpm-workspace.yaml new file mode 100644 index 00000000..18ec407e --- /dev/null +++ b/test/providers/provider_manifests/pnpm/workspace_member_without_lock/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - 'packages/*' From b8af0f813a40ee7a4ae9a3a4887f5c21ac10b15a Mon Sep 17 00:00:00 2001 From: Ruben Romero Montes Date: Mon, 30 Mar 2026 10:19:47 +0200 Subject: [PATCH 097/102] fix: downgrade p-limit from v5 to v4 for webpack compatibility (#444) p-limit v5 uses Node.js subpath imports (#async_hooks) which webpack cannot resolve, breaking downstream consumers that bundle the client (e.g., the VS Code extension). v4 has an identical API without the subpath imports. Fixes #443 Co-authored-by: Claude Opus 4.6 --- package-lock.json | 10 +++++----- package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 05d039ed..96feaf72 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "js-yaml": "^4.1.1", "micromatch": "^4.0.8", "node-fetch": "^3.3.2", - "p-limit": "^5.0.0", + "p-limit": "^4.0.0", "packageurl-js": "~1.0.2", "smol-toml": "^1.6.0", "tree-sitter-requirements": "github:Strum355/tree-sitter-requirements#d0261ee76b84253997fe70d7d397e78c006c3801", @@ -5984,15 +5984,15 @@ } }, "node_modules/p-limit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", - "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "license": "MIT", "dependencies": { "yocto-queue": "^1.0.0" }, "engines": { - "node": ">=18" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" diff --git a/package.json b/package.json index e21a9540..429fa5a2 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "js-yaml": "^4.1.1", "micromatch": "^4.0.8", "node-fetch": "^3.3.2", - "p-limit": "^5.0.0", + "p-limit": "^4.0.0", "packageurl-js": "~1.0.2", "smol-toml": "^1.6.0", "tree-sitter-requirements": "github:Strum355/tree-sitter-requirements#d0261ee76b84253997fe70d7d397e78c006c3801", From decf73e0a2c1a82ba798435683e31ad5af6d2f53 Mon Sep 17 00:00:00 2001 From: Chao Wang Date: Fri, 3 Apr 2026 10:49:42 +0800 Subject: [PATCH 098/102] fix: include peer, optional, and bundled deps in JS stack/component analysis pnpm, yarn classic, and yarn berry providers were missing peer and/or optional dependencies from the SBOM, while yarn berry additionally included devDependencies. This caused inconsistent vulnerability reports across package managers for the same package.json. Root causes: - Manifest.loadDependencies() only read content.dependencies - base_javascript _getRootDependencies() and _addDependenciesToSbom() ignored pnpm's separate optionalDependencies key - yarn berry had no mechanism to filter out devDependencies from yarn info --all output Fixes: - Manifest now loads peer, optional, and bundled dependencies - Base JS provider merges optionalDependencies from dep tree output - ensurePeerAndOptionalDeps() injects manifest-declared peer/optional deps when the package manager does not resolve them - Yarn berry processor filters root dependencies against manifest Co-Authored-By: Claude Sonnet 4 --- src/providers/base_javascript.js | 36 ++++++- src/providers/manifest.js | 26 ++++- .../processors/yarn_berry_processor.js | 21 +++- test/providers/javascript.test.js | 18 +++- .../component_expected_sbom.json | 72 ++++++++++++++ .../listing_component.json | 26 +++++ .../listing_stack.json | 40 ++++++++ .../package-lock.json | 5 + .../package.json | 21 ++++ .../stack_expected_sbom.json | 98 +++++++++++++++++++ .../listing_component.json | 30 ++++++ .../listing_stack.json | 44 +++++++++ .../package.json | 21 ++++ .../pnpm-lock.yaml | 1 + .../stack_expected_sbom.json | 98 +++++++++++++++++++ .../listing_component.json | 6 ++ .../listing_stack.json | 8 ++ .../package.json | 22 +++++ .../stack_expected_sbom.json | 98 +++++++++++++++++++ .../yarn.lock | 2 + .../listing_component.json | 1 + .../listing_stack.json | 1 + .../package.json | 21 ++++ .../stack_expected_sbom.json | 98 +++++++++++++++++++ .../yarn.lock | 1 + 25 files changed, 802 insertions(+), 13 deletions(-) create mode 100644 test/providers/tst_manifests/js-common/package_json_deps_with_mixed_dep_types/component_expected_sbom.json create mode 100644 test/providers/tst_manifests/npm/package_json_deps_with_mixed_dep_types/listing_component.json create mode 100644 test/providers/tst_manifests/npm/package_json_deps_with_mixed_dep_types/listing_stack.json create mode 100644 test/providers/tst_manifests/npm/package_json_deps_with_mixed_dep_types/package-lock.json create mode 100644 test/providers/tst_manifests/npm/package_json_deps_with_mixed_dep_types/package.json create mode 100644 test/providers/tst_manifests/npm/package_json_deps_with_mixed_dep_types/stack_expected_sbom.json create mode 100644 test/providers/tst_manifests/pnpm/package_json_deps_with_mixed_dep_types/listing_component.json create mode 100644 test/providers/tst_manifests/pnpm/package_json_deps_with_mixed_dep_types/listing_stack.json create mode 100644 test/providers/tst_manifests/pnpm/package_json_deps_with_mixed_dep_types/package.json create mode 100644 test/providers/tst_manifests/pnpm/package_json_deps_with_mixed_dep_types/pnpm-lock.yaml create mode 100644 test/providers/tst_manifests/pnpm/package_json_deps_with_mixed_dep_types/stack_expected_sbom.json create mode 100644 test/providers/tst_manifests/yarn-berry/package_json_deps_with_mixed_dep_types/listing_component.json create mode 100644 test/providers/tst_manifests/yarn-berry/package_json_deps_with_mixed_dep_types/listing_stack.json create mode 100644 test/providers/tst_manifests/yarn-berry/package_json_deps_with_mixed_dep_types/package.json create mode 100644 test/providers/tst_manifests/yarn-berry/package_json_deps_with_mixed_dep_types/stack_expected_sbom.json create mode 100644 test/providers/tst_manifests/yarn-berry/package_json_deps_with_mixed_dep_types/yarn.lock create mode 100644 test/providers/tst_manifests/yarn-classic/package_json_deps_with_mixed_dep_types/listing_component.json create mode 100644 test/providers/tst_manifests/yarn-classic/package_json_deps_with_mixed_dep_types/listing_stack.json create mode 100644 test/providers/tst_manifests/yarn-classic/package_json_deps_with_mixed_dep_types/package.json create mode 100644 test/providers/tst_manifests/yarn-classic/package_json_deps_with_mixed_dep_types/stack_expected_sbom.json create mode 100644 test/providers/tst_manifests/yarn-classic/package_json_deps_with_mixed_dep_types/yarn.lock diff --git a/src/providers/base_javascript.js b/src/providers/base_javascript.js index 100c03fa..423eafe6 100644 --- a/src/providers/base_javascript.js +++ b/src/providers/base_javascript.js @@ -264,10 +264,32 @@ export default class Base_javascript { sbom.addRoot(mainComponent, license); this._addDependenciesToSbom(sbom, depsObject); + this.#ensurePeerAndOptionalDeps(sbom); sbom.filterIgnoredDeps(this.#manifest.ignored); return sbom.getAsJsonString(opts); } + /** + * Ensures peer and optional dependencies declared in the manifest are + * present in the SBOM, even when the package manager does not resolve them + * (e.g. yarn does not include peer deps in its dependency listing). + * @param {Sbom} sbom - The SBOM to supplement + * @private + */ + #ensurePeerAndOptionalDeps(sbom) { + const rootPurl = toPurl(purlType, this.#manifest.name, this.#manifest.version); + const rootComponent = sbom.getRoot(); + const depSources = [this.#manifest.peerDependencies, this.#manifest.optionalDependencies]; + for (const source of depSources) { + for (const [name, version] of Object.entries(source)) { + if (!sbom.checkIfPackageInsideDependsOnList(rootComponent, name)) { + const target = toPurl(purlType, name, version); + sbom.addDependency(rootPurl, target); + } + } + } + } + /** * Recursively builds the Sbom from the JSON that npm listing returns * @param {Sbom} sbom - The SBOM object to add dependencies to @@ -275,7 +297,10 @@ export default class Base_javascript { * @protected */ _addDependenciesToSbom(sbom, depTree) { - const dependencies = depTree["dependencies"] || {}; + const dependencies = { + ...depTree["dependencies"], + ...depTree["optionalDependencies"], + }; Object.entries(dependencies) .forEach(entry => { @@ -330,6 +355,7 @@ export default class Base_javascript { const rootPurl = toPurlFromString(sbom.getRoot().purl); sbom.addDependency(rootPurl, rootDeps.get(key)); } + this.#ensurePeerAndOptionalDeps(sbom); sbom.filterIgnoredDeps(this.#manifest.ignored); return sbom.getAsJsonString(opts); } @@ -341,12 +367,16 @@ export default class Base_javascript { * @protected */ _getRootDependencies(depTree) { - if (!depTree.dependencies) { + const allDeps = { + ...depTree.dependencies, + ...depTree.optionalDependencies, + }; + if (Object.keys(allDeps).length === 0) { return new Map(); } return new Map( - Object.entries(depTree.dependencies).map( + Object.entries(allDeps).map( ([key, value]) => [key, toPurl(purlType, key, value.version)] ) ); diff --git a/src/providers/manifest.js b/src/providers/manifest.js index 3b283c62..fe96699a 100644 --- a/src/providers/manifest.js +++ b/src/providers/manifest.js @@ -12,6 +12,8 @@ export default class Manifest { this.manifestPath = manifestPath; const content = this.loadManifest(); this.dependencies = this.loadDependencies(content); + this.peerDependencies = content.peerDependencies || {}; + this.optionalDependencies = content.optionalDependencies || {}; this.name = content.name; this.version = content.version || DEFAULT_VERSION; this.ignored = this.loadIgnored(content); @@ -30,11 +32,27 @@ export default class Manifest { loadDependencies(content) { let deps = []; - if(!content.dependencies) { - return deps; + const depSources = [ + content.dependencies, + content.peerDependencies, + content.optionalDependencies, + ]; + for (const source of depSources) { + if (source) { + for (let dep in source) { + if (!deps.includes(dep)) { + deps.push(dep); + } + } + } } - for(let dep in content.dependencies) { - deps.push(dep); + // bundledDependencies is an array of package names (subset of dependencies) + if (Array.isArray(content.bundledDependencies)) { + for (const dep of content.bundledDependencies) { + if (!deps.includes(dep)) { + deps.push(dep); + } + } } return deps; } diff --git a/src/providers/processors/yarn_berry_processor.js b/src/providers/processors/yarn_berry_processor.js index b5ca0329..edee7f0d 100644 --- a/src/providers/processors/yarn_berry_processor.js +++ b/src/providers/processors/yarn_berry_processor.js @@ -58,15 +58,15 @@ export default class Yarn_berry_processor extends Yarn_processor { } return new Map( - depTree.filter(dep => !this.#isRoot(dep.value)).map( - dep => { + depTree.filter(dep => !this.#isRoot(dep.value)) + .map(dep => { const depName = dep.value; const idx = depName.lastIndexOf('@'); const name = depName.substring(0, idx); const version = dep.children.Version; return [name, toPurl(purlType, name, version)]; - } - ) + }) + .filter(([name]) => this._manifest.dependencies.includes(name)) ); } @@ -93,14 +93,25 @@ export default class Yarn_berry_processor extends Yarn_processor { return; } + // Collect names of production dependencies to filter out devDeps from root + const prodDeps = new Set(this._manifest.dependencies); + depTree.forEach(n => { const depName = n.value; - const from = this.#isRoot(depName) ? toPurlFromString(sbom.getRoot().purl) : this.#purlFromNode(depName, n); + const isRoot = this.#isRoot(depName); + const from = isRoot ? toPurlFromString(sbom.getRoot().purl) : this.#purlFromNode(depName, n); const deps = n.children?.Dependencies; if(!deps) {return;} deps.forEach(d => { const to = this.#purlFromLocator(d.locator); if(to) { + // For root node, only add production dependencies (exclude devDeps) + if (isRoot) { + const fullName = to.namespace ? `${to.namespace}/${to.name}` : to.name; + if (!prodDeps.has(fullName)) { + return; + } + } sbom.addDependency(from, to); } }); diff --git a/test/providers/javascript.test.js b/test/providers/javascript.test.js index eec02da1..5101d80f 100644 --- a/test/providers/javascript.test.js +++ b/test/providers/javascript.test.js @@ -75,7 +75,8 @@ suite('testing the javascript-npm data provider', async () => { }); ['npm', 'pnpm', 'yarn-classic', 'yarn-berry'].flatMap(providerName => [ "package_json_deps_without_exhortignore_object", - "package_json_deps_with_exhortignore_object" + "package_json_deps_with_exhortignore_object", + "package_json_deps_with_mixed_dep_types" ].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 () => { @@ -148,6 +149,21 @@ suite('testing the javascript-npm data provider', async () => { expect(m.ignored).to.be.empty; }); + test('loads a manifest with mixed dependency types (peer, optional, bundled)', () => { + const testCase = 'package_json_deps_with_mixed_dep_types'; + const manifestPath = `test/providers/tst_manifests/npm/${testCase}/package.json`; + const m = new Manifest(manifestPath); + expect(m.name).to.be.equals('mixed-deps-test'); + expect(m.version).to.be.equals('1.0.0'); + expect(m.dependencies).to.have.all.members([ + 'express', 'axios', 'minimist', 'lodash']); + expect(m.dependencies).to.not.include('jest'); + expect(m.dependencies).to.not.include('eslint'); + expect(m.peerDependencies).to.deep.equal({ minimist: '1.2.0' }); + expect(m.optionalDependencies).to.deep.equal({ lodash: '4.17.19' }); + expect(m.ignored).to.be.empty; + }); + test('fails when the manifest does not exist', () => { const testCase = 'wrong_folder'; const manifestPath = `test/providers/tst_manifests/npm/${testCase}/package.json`; diff --git a/test/providers/tst_manifests/js-common/package_json_deps_with_mixed_dep_types/component_expected_sbom.json b/test/providers/tst_manifests/js-common/package_json_deps_with_mixed_dep_types/component_expected_sbom.json new file mode 100644 index 00000000..fd792c94 --- /dev/null +++ b/test/providers/tst_manifests/js-common/package_json_deps_with_mixed_dep_types/component_expected_sbom.json @@ -0,0 +1,72 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "mixed-deps-test", + "version": "1.0.0", + "purl": "pkg:npm/mixed-deps-test@1.0.0", + "type": "application", + "bom-ref": "pkg:npm/mixed-deps-test@1.0.0" + } + }, + "components": [ + { + "name": "axios", + "version": "0.19.0", + "purl": "pkg:npm/axios@0.19.0", + "type": "library", + "bom-ref": "pkg:npm/axios@0.19.0" + }, + { + "name": "express", + "version": "4.17.1", + "purl": "pkg:npm/express@4.17.1", + "type": "library", + "bom-ref": "pkg:npm/express@4.17.1" + }, + { + "name": "lodash", + "version": "4.17.19", + "purl": "pkg:npm/lodash@4.17.19", + "type": "library", + "bom-ref": "pkg:npm/lodash@4.17.19" + }, + { + "name": "minimist", + "version": "1.2.0", + "purl": "pkg:npm/minimist@1.2.0", + "type": "library", + "bom-ref": "pkg:npm/minimist@1.2.0" + } + ], + "dependencies": [ + { + "ref": "pkg:npm/mixed-deps-test@1.0.0", + "dependsOn": [ + "pkg:npm/axios@0.19.0", + "pkg:npm/express@4.17.1", + "pkg:npm/lodash@4.17.19", + "pkg:npm/minimist@1.2.0" + ] + }, + { + "ref": "pkg:npm/axios@0.19.0", + "dependsOn": [] + }, + { + "ref": "pkg:npm/express@4.17.1", + "dependsOn": [] + }, + { + "ref": "pkg:npm/lodash@4.17.19", + "dependsOn": [] + }, + { + "ref": "pkg:npm/minimist@1.2.0", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/npm/package_json_deps_with_mixed_dep_types/listing_component.json b/test/providers/tst_manifests/npm/package_json_deps_with_mixed_dep_types/listing_component.json new file mode 100644 index 00000000..2a4ce931 --- /dev/null +++ b/test/providers/tst_manifests/npm/package_json_deps_with_mixed_dep_types/listing_component.json @@ -0,0 +1,26 @@ +{ + "version": "1.0.0", + "name": "mixed-deps-test", + "dependencies": { + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "overridden": false + }, + "axios": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", + "overridden": false + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "overridden": false + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "overridden": false + } + } +} diff --git a/test/providers/tst_manifests/npm/package_json_deps_with_mixed_dep_types/listing_stack.json b/test/providers/tst_manifests/npm/package_json_deps_with_mixed_dep_types/listing_stack.json new file mode 100644 index 00000000..94c6ee69 --- /dev/null +++ b/test/providers/tst_manifests/npm/package_json_deps_with_mixed_dep_types/listing_stack.json @@ -0,0 +1,40 @@ +{ + "version": "1.0.0", + "name": "mixed-deps-test", + "dependencies": { + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "overridden": false, + "dependencies": { + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "overridden": false + } + } + }, + "axios": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.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 + } + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "overridden": false + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "overridden": false + } + } +} diff --git a/test/providers/tst_manifests/npm/package_json_deps_with_mixed_dep_types/package-lock.json b/test/providers/tst_manifests/npm/package_json_deps_with_mixed_dep_types/package-lock.json new file mode 100644 index 00000000..6c6813fe --- /dev/null +++ b/test/providers/tst_manifests/npm/package_json_deps_with_mixed_dep_types/package-lock.json @@ -0,0 +1,5 @@ +{ + "name": "mixed-deps-test", + "version": "1.0.0", + "lockfileVersion": 3 +} diff --git a/test/providers/tst_manifests/npm/package_json_deps_with_mixed_dep_types/package.json b/test/providers/tst_manifests/npm/package_json_deps_with_mixed_dep_types/package.json new file mode 100644 index 00000000..eb16da72 --- /dev/null +++ b/test/providers/tst_manifests/npm/package_json_deps_with_mixed_dep_types/package.json @@ -0,0 +1,21 @@ +{ + "name": "mixed-deps-test", + "version": "1.0.0", + "dependencies": { + "express": "4.17.1", + "axios": "0.19.0" + }, + "peerDependencies": { + "minimist": "1.2.0" + }, + "optionalDependencies": { + "lodash": "4.17.19" + }, + "bundledDependencies": [ + "express" + ], + "devDependencies": { + "jest": "26.0.0", + "eslint": "7.0.0" + } +} diff --git a/test/providers/tst_manifests/npm/package_json_deps_with_mixed_dep_types/stack_expected_sbom.json b/test/providers/tst_manifests/npm/package_json_deps_with_mixed_dep_types/stack_expected_sbom.json new file mode 100644 index 00000000..a3c9274a --- /dev/null +++ b/test/providers/tst_manifests/npm/package_json_deps_with_mixed_dep_types/stack_expected_sbom.json @@ -0,0 +1,98 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "mixed-deps-test", + "version": "1.0.0", + "purl": "pkg:npm/mixed-deps-test@1.0.0", + "type": "application", + "bom-ref": "pkg:npm/mixed-deps-test@1.0.0" + } + }, + "components": [ + { + "name": "express", + "version": "4.17.1", + "purl": "pkg:npm/express@4.17.1", + "type": "library", + "bom-ref": "pkg:npm/express@4.17.1" + }, + { + "name": "body-parser", + "version": "1.19.0", + "purl": "pkg:npm/body-parser@1.19.0", + "type": "library", + "bom-ref": "pkg:npm/body-parser@1.19.0" + }, + { + "name": "axios", + "version": "0.19.0", + "purl": "pkg:npm/axios@0.19.0", + "type": "library", + "bom-ref": "pkg:npm/axios@0.19.0" + }, + { + "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": "minimist", + "version": "1.2.0", + "purl": "pkg:npm/minimist@1.2.0", + "type": "library", + "bom-ref": "pkg:npm/minimist@1.2.0" + }, + { + "name": "lodash", + "version": "4.17.19", + "purl": "pkg:npm/lodash@4.17.19", + "type": "library", + "bom-ref": "pkg:npm/lodash@4.17.19" + } + ], + "dependencies": [ + { + "ref": "pkg:npm/mixed-deps-test@1.0.0", + "dependsOn": [ + "pkg:npm/express@4.17.1", + "pkg:npm/axios@0.19.0", + "pkg:npm/minimist@1.2.0", + "pkg:npm/lodash@4.17.19" + ] + }, + { + "ref": "pkg:npm/express@4.17.1", + "dependsOn": [ + "pkg:npm/body-parser@1.19.0" + ] + }, + { + "ref": "pkg:npm/body-parser@1.19.0", + "dependsOn": [] + }, + { + "ref": "pkg:npm/axios@0.19.0", + "dependsOn": [ + "pkg:npm/follow-redirects@1.5.10" + ] + }, + { + "ref": "pkg:npm/follow-redirects@1.5.10", + "dependsOn": [] + }, + { + "ref": "pkg:npm/minimist@1.2.0", + "dependsOn": [] + }, + { + "ref": "pkg:npm/lodash@4.17.19", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/pnpm/package_json_deps_with_mixed_dep_types/listing_component.json b/test/providers/tst_manifests/pnpm/package_json_deps_with_mixed_dep_types/listing_component.json new file mode 100644 index 00000000..83ca6388 --- /dev/null +++ b/test/providers/tst_manifests/pnpm/package_json_deps_with_mixed_dep_types/listing_component.json @@ -0,0 +1,30 @@ +[ + { + "name": "mixed-deps-test", + "version": "1.0.0", + "dependencies": { + "express": { + "from": "express", + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz" + }, + "axios": { + "from": "axios", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz" + }, + "minimist": { + "from": "minimist", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" + } + }, + "optionalDependencies": { + "lodash": { + "from": "lodash", + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz" + } + } + } +] diff --git a/test/providers/tst_manifests/pnpm/package_json_deps_with_mixed_dep_types/listing_stack.json b/test/providers/tst_manifests/pnpm/package_json_deps_with_mixed_dep_types/listing_stack.json new file mode 100644 index 00000000..c4b2ef41 --- /dev/null +++ b/test/providers/tst_manifests/pnpm/package_json_deps_with_mixed_dep_types/listing_stack.json @@ -0,0 +1,44 @@ +[ + { + "name": "mixed-deps-test", + "version": "1.0.0", + "dependencies": { + "express": { + "from": "express", + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "dependencies": { + "body-parser": { + "from": "body-parser", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz" + } + } + }, + "axios": { + "from": "axios", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", + "dependencies": { + "follow-redirects": { + "from": "follow-redirects", + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz" + } + } + }, + "minimist": { + "from": "minimist", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" + } + }, + "optionalDependencies": { + "lodash": { + "from": "lodash", + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz" + } + } + } +] diff --git a/test/providers/tst_manifests/pnpm/package_json_deps_with_mixed_dep_types/package.json b/test/providers/tst_manifests/pnpm/package_json_deps_with_mixed_dep_types/package.json new file mode 100644 index 00000000..eb16da72 --- /dev/null +++ b/test/providers/tst_manifests/pnpm/package_json_deps_with_mixed_dep_types/package.json @@ -0,0 +1,21 @@ +{ + "name": "mixed-deps-test", + "version": "1.0.0", + "dependencies": { + "express": "4.17.1", + "axios": "0.19.0" + }, + "peerDependencies": { + "minimist": "1.2.0" + }, + "optionalDependencies": { + "lodash": "4.17.19" + }, + "bundledDependencies": [ + "express" + ], + "devDependencies": { + "jest": "26.0.0", + "eslint": "7.0.0" + } +} diff --git a/test/providers/tst_manifests/pnpm/package_json_deps_with_mixed_dep_types/pnpm-lock.yaml b/test/providers/tst_manifests/pnpm/package_json_deps_with_mixed_dep_types/pnpm-lock.yaml new file mode 100644 index 00000000..b0a073a9 --- /dev/null +++ b/test/providers/tst_manifests/pnpm/package_json_deps_with_mixed_dep_types/pnpm-lock.yaml @@ -0,0 +1 @@ +lockfileVersion: '9.0' diff --git a/test/providers/tst_manifests/pnpm/package_json_deps_with_mixed_dep_types/stack_expected_sbom.json b/test/providers/tst_manifests/pnpm/package_json_deps_with_mixed_dep_types/stack_expected_sbom.json new file mode 100644 index 00000000..a3c9274a --- /dev/null +++ b/test/providers/tst_manifests/pnpm/package_json_deps_with_mixed_dep_types/stack_expected_sbom.json @@ -0,0 +1,98 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "mixed-deps-test", + "version": "1.0.0", + "purl": "pkg:npm/mixed-deps-test@1.0.0", + "type": "application", + "bom-ref": "pkg:npm/mixed-deps-test@1.0.0" + } + }, + "components": [ + { + "name": "express", + "version": "4.17.1", + "purl": "pkg:npm/express@4.17.1", + "type": "library", + "bom-ref": "pkg:npm/express@4.17.1" + }, + { + "name": "body-parser", + "version": "1.19.0", + "purl": "pkg:npm/body-parser@1.19.0", + "type": "library", + "bom-ref": "pkg:npm/body-parser@1.19.0" + }, + { + "name": "axios", + "version": "0.19.0", + "purl": "pkg:npm/axios@0.19.0", + "type": "library", + "bom-ref": "pkg:npm/axios@0.19.0" + }, + { + "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": "minimist", + "version": "1.2.0", + "purl": "pkg:npm/minimist@1.2.0", + "type": "library", + "bom-ref": "pkg:npm/minimist@1.2.0" + }, + { + "name": "lodash", + "version": "4.17.19", + "purl": "pkg:npm/lodash@4.17.19", + "type": "library", + "bom-ref": "pkg:npm/lodash@4.17.19" + } + ], + "dependencies": [ + { + "ref": "pkg:npm/mixed-deps-test@1.0.0", + "dependsOn": [ + "pkg:npm/express@4.17.1", + "pkg:npm/axios@0.19.0", + "pkg:npm/minimist@1.2.0", + "pkg:npm/lodash@4.17.19" + ] + }, + { + "ref": "pkg:npm/express@4.17.1", + "dependsOn": [ + "pkg:npm/body-parser@1.19.0" + ] + }, + { + "ref": "pkg:npm/body-parser@1.19.0", + "dependsOn": [] + }, + { + "ref": "pkg:npm/axios@0.19.0", + "dependsOn": [ + "pkg:npm/follow-redirects@1.5.10" + ] + }, + { + "ref": "pkg:npm/follow-redirects@1.5.10", + "dependsOn": [] + }, + { + "ref": "pkg:npm/minimist@1.2.0", + "dependsOn": [] + }, + { + "ref": "pkg:npm/lodash@4.17.19", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/yarn-berry/package_json_deps_with_mixed_dep_types/listing_component.json b/test/providers/tst_manifests/yarn-berry/package_json_deps_with_mixed_dep_types/listing_component.json new file mode 100644 index 00000000..95d537b2 --- /dev/null +++ b/test/providers/tst_manifests/yarn-berry/package_json_deps_with_mixed_dep_types/listing_component.json @@ -0,0 +1,6 @@ +{"value":"axios@npm:0.19.0","children":{"Version":"0.19.0","Dependencies":[{"descriptor":"follow-redirects@npm:1.5.10","locator":"follow-redirects@npm:1.5.10"}]}} +{"value":"eslint@npm:7.0.0","children":{"Version":"7.0.0"}} +{"value":"express@npm:4.17.1","children":{"Version":"4.17.1","Dependencies":[{"descriptor":"body-parser@npm:1.19.0","locator":"body-parser@npm:1.19.0"}]}} +{"value":"jest@npm:26.0.0","children":{"Version":"26.0.0"}} +{"value":"lodash@npm:4.17.19","children":{"Version":"4.17.19"}} +{"value":"mixed-deps-test@workspace:.","children":{"Version":"1.0.0","Dependencies":[{"descriptor":"axios@npm:0.19.0","locator":"axios@npm:0.19.0"},{"descriptor":"eslint@npm:7.0.0","locator":"eslint@npm:7.0.0"},{"descriptor":"express@npm:4.17.1","locator":"express@npm:4.17.1"},{"descriptor":"jest@npm:26.0.0","locator":"jest@npm:26.0.0"},{"descriptor":"lodash@npm:4.17.19","locator":"lodash@npm:4.17.19"}]}} diff --git a/test/providers/tst_manifests/yarn-berry/package_json_deps_with_mixed_dep_types/listing_stack.json b/test/providers/tst_manifests/yarn-berry/package_json_deps_with_mixed_dep_types/listing_stack.json new file mode 100644 index 00000000..8c494ea6 --- /dev/null +++ b/test/providers/tst_manifests/yarn-berry/package_json_deps_with_mixed_dep_types/listing_stack.json @@ -0,0 +1,8 @@ +{"value":"axios@npm:0.19.0","children":{"Version":"0.19.0","Dependencies":[{"descriptor":"follow-redirects@npm:1.5.10","locator":"follow-redirects@npm:1.5.10"}]}} +{"value":"body-parser@npm:1.19.0","children":{"Version":"1.19.0"}} +{"value":"eslint@npm:7.0.0","children":{"Version":"7.0.0"}} +{"value":"express@npm:4.17.1","children":{"Version":"4.17.1","Dependencies":[{"descriptor":"body-parser@npm:1.19.0","locator":"body-parser@npm:1.19.0"}]}} +{"value":"follow-redirects@npm:1.5.10","children":{"Version":"1.5.10"}} +{"value":"jest@npm:26.0.0","children":{"Version":"26.0.0"}} +{"value":"lodash@npm:4.17.19","children":{"Version":"4.17.19"}} +{"value":"mixed-deps-test@workspace:.","children":{"Version":"1.0.0","Dependencies":[{"descriptor":"axios@npm:0.19.0","locator":"axios@npm:0.19.0"},{"descriptor":"eslint@npm:7.0.0","locator":"eslint@npm:7.0.0"},{"descriptor":"express@npm:4.17.1","locator":"express@npm:4.17.1"},{"descriptor":"jest@npm:26.0.0","locator":"jest@npm:26.0.0"},{"descriptor":"lodash@npm:4.17.19","locator":"lodash@npm:4.17.19"}]}} diff --git a/test/providers/tst_manifests/yarn-berry/package_json_deps_with_mixed_dep_types/package.json b/test/providers/tst_manifests/yarn-berry/package_json_deps_with_mixed_dep_types/package.json new file mode 100644 index 00000000..a8268c74 --- /dev/null +++ b/test/providers/tst_manifests/yarn-berry/package_json_deps_with_mixed_dep_types/package.json @@ -0,0 +1,22 @@ +{ + "name": "mixed-deps-test", + "version": "1.0.0", + "dependencies": { + "express": "4.17.1", + "axios": "0.19.0" + }, + "peerDependencies": { + "minimist": "1.2.0" + }, + "optionalDependencies": { + "lodash": "4.17.19" + }, + "bundledDependencies": [ + "express" + ], + "devDependencies": { + "jest": "26.0.0", + "eslint": "7.0.0" + }, + "packageManager": "yarn@4.9.1" +} diff --git a/test/providers/tst_manifests/yarn-berry/package_json_deps_with_mixed_dep_types/stack_expected_sbom.json b/test/providers/tst_manifests/yarn-berry/package_json_deps_with_mixed_dep_types/stack_expected_sbom.json new file mode 100644 index 00000000..23094ff6 --- /dev/null +++ b/test/providers/tst_manifests/yarn-berry/package_json_deps_with_mixed_dep_types/stack_expected_sbom.json @@ -0,0 +1,98 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "mixed-deps-test", + "version": "1.0.0", + "purl": "pkg:npm/mixed-deps-test@1.0.0", + "type": "application", + "bom-ref": "pkg:npm/mixed-deps-test@1.0.0" + } + }, + "components": [ + { + "name": "express", + "version": "4.17.1", + "purl": "pkg:npm/express@4.17.1", + "type": "library", + "bom-ref": "pkg:npm/express@4.17.1" + }, + { + "name": "body-parser", + "version": "1.19.0", + "purl": "pkg:npm/body-parser@1.19.0", + "type": "library", + "bom-ref": "pkg:npm/body-parser@1.19.0" + }, + { + "name": "axios", + "version": "0.19.0", + "purl": "pkg:npm/axios@0.19.0", + "type": "library", + "bom-ref": "pkg:npm/axios@0.19.0" + }, + { + "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": "minimist", + "version": "1.2.0", + "purl": "pkg:npm/minimist@1.2.0", + "type": "library", + "bom-ref": "pkg:npm/minimist@1.2.0" + }, + { + "name": "lodash", + "version": "4.17.19", + "purl": "pkg:npm/lodash@4.17.19", + "type": "library", + "bom-ref": "pkg:npm/lodash@4.17.19" + } + ], + "dependencies": [ + { + "ref": "pkg:npm/mixed-deps-test@1.0.0", + "dependsOn": [ + "pkg:npm/axios@0.19.0", + "pkg:npm/express@4.17.1", + "pkg:npm/lodash@4.17.19", + "pkg:npm/minimist@1.2.0" + ] + }, + { + "ref": "pkg:npm/express@4.17.1", + "dependsOn": [ + "pkg:npm/body-parser@1.19.0" + ] + }, + { + "ref": "pkg:npm/body-parser@1.19.0", + "dependsOn": [] + }, + { + "ref": "pkg:npm/axios@0.19.0", + "dependsOn": [ + "pkg:npm/follow-redirects@1.5.10" + ] + }, + { + "ref": "pkg:npm/follow-redirects@1.5.10", + "dependsOn": [] + }, + { + "ref": "pkg:npm/minimist@1.2.0", + "dependsOn": [] + }, + { + "ref": "pkg:npm/lodash@4.17.19", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/yarn-berry/package_json_deps_with_mixed_dep_types/yarn.lock b/test/providers/tst_manifests/yarn-berry/package_json_deps_with_mixed_dep_types/yarn.lock new file mode 100644 index 00000000..19d1db70 --- /dev/null +++ b/test/providers/tst_manifests/yarn-berry/package_json_deps_with_mixed_dep_types/yarn.lock @@ -0,0 +1,2 @@ +__metadata: + version: 8 diff --git a/test/providers/tst_manifests/yarn-classic/package_json_deps_with_mixed_dep_types/listing_component.json b/test/providers/tst_manifests/yarn-classic/package_json_deps_with_mixed_dep_types/listing_component.json new file mode 100644 index 00000000..8c27d084 --- /dev/null +++ b/test/providers/tst_manifests/yarn-classic/package_json_deps_with_mixed_dep_types/listing_component.json @@ -0,0 +1 @@ +{"type":"tree","data":{"type":"list","trees":[{"name":"express@4.17.1","children":[],"hint":null,"color":null,"depth":0},{"name":"axios@0.19.0","children":[],"hint":null,"color":null,"depth":0},{"name":"lodash@4.17.19","children":[],"hint":null,"color":null,"depth":0}]}} diff --git a/test/providers/tst_manifests/yarn-classic/package_json_deps_with_mixed_dep_types/listing_stack.json b/test/providers/tst_manifests/yarn-classic/package_json_deps_with_mixed_dep_types/listing_stack.json new file mode 100644 index 00000000..7c090ccb --- /dev/null +++ b/test/providers/tst_manifests/yarn-classic/package_json_deps_with_mixed_dep_types/listing_stack.json @@ -0,0 +1 @@ +{"type":"tree","data":{"type":"list","trees":[{"name":"express@4.17.1","children":[{"name":"body-parser@1.19.0","children":[],"hint":null,"color":null,"depth":0}],"hint":null,"color":null,"depth":0},{"name":"axios@0.19.0","children":[{"name":"follow-redirects@1.5.10","children":[],"hint":null,"color":null,"depth":0}],"hint":null,"color":null,"depth":0},{"name":"lodash@4.17.19","children":[],"hint":null,"color":null,"depth":0},{"name":"body-parser@1.19.0","children":[],"hint":null,"color":null,"depth":0},{"name":"follow-redirects@1.5.10","children":[],"hint":null,"color":null,"depth":0}]}} diff --git a/test/providers/tst_manifests/yarn-classic/package_json_deps_with_mixed_dep_types/package.json b/test/providers/tst_manifests/yarn-classic/package_json_deps_with_mixed_dep_types/package.json new file mode 100644 index 00000000..eb16da72 --- /dev/null +++ b/test/providers/tst_manifests/yarn-classic/package_json_deps_with_mixed_dep_types/package.json @@ -0,0 +1,21 @@ +{ + "name": "mixed-deps-test", + "version": "1.0.0", + "dependencies": { + "express": "4.17.1", + "axios": "0.19.0" + }, + "peerDependencies": { + "minimist": "1.2.0" + }, + "optionalDependencies": { + "lodash": "4.17.19" + }, + "bundledDependencies": [ + "express" + ], + "devDependencies": { + "jest": "26.0.0", + "eslint": "7.0.0" + } +} diff --git a/test/providers/tst_manifests/yarn-classic/package_json_deps_with_mixed_dep_types/stack_expected_sbom.json b/test/providers/tst_manifests/yarn-classic/package_json_deps_with_mixed_dep_types/stack_expected_sbom.json new file mode 100644 index 00000000..75a0c47a --- /dev/null +++ b/test/providers/tst_manifests/yarn-classic/package_json_deps_with_mixed_dep_types/stack_expected_sbom.json @@ -0,0 +1,98 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "name": "mixed-deps-test", + "version": "1.0.0", + "purl": "pkg:npm/mixed-deps-test@1.0.0", + "type": "application", + "bom-ref": "pkg:npm/mixed-deps-test@1.0.0" + } + }, + "components": [ + { + "name": "express", + "version": "4.17.1", + "purl": "pkg:npm/express@4.17.1", + "type": "library", + "bom-ref": "pkg:npm/express@4.17.1" + }, + { + "name": "body-parser", + "version": "1.19.0", + "purl": "pkg:npm/body-parser@1.19.0", + "type": "library", + "bom-ref": "pkg:npm/body-parser@1.19.0" + }, + { + "name": "axios", + "version": "0.19.0", + "purl": "pkg:npm/axios@0.19.0", + "type": "library", + "bom-ref": "pkg:npm/axios@0.19.0" + }, + { + "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": "minimist", + "version": "1.2.0", + "purl": "pkg:npm/minimist@1.2.0", + "type": "library", + "bom-ref": "pkg:npm/minimist@1.2.0" + }, + { + "name": "lodash", + "version": "4.17.19", + "purl": "pkg:npm/lodash@4.17.19", + "type": "library", + "bom-ref": "pkg:npm/lodash@4.17.19" + } + ], + "dependencies": [ + { + "ref": "pkg:npm/mixed-deps-test@1.0.0", + "dependsOn": [ + "pkg:npm/express@4.17.1", + "pkg:npm/axios@0.19.0", + "pkg:npm/lodash@4.17.19", + "pkg:npm/minimist@1.2.0" + ] + }, + { + "ref": "pkg:npm/express@4.17.1", + "dependsOn": [ + "pkg:npm/body-parser@1.19.0" + ] + }, + { + "ref": "pkg:npm/body-parser@1.19.0", + "dependsOn": [] + }, + { + "ref": "pkg:npm/axios@0.19.0", + "dependsOn": [ + "pkg:npm/follow-redirects@1.5.10" + ] + }, + { + "ref": "pkg:npm/follow-redirects@1.5.10", + "dependsOn": [] + }, + { + "ref": "pkg:npm/minimist@1.2.0", + "dependsOn": [] + }, + { + "ref": "pkg:npm/lodash@4.17.19", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/yarn-classic/package_json_deps_with_mixed_dep_types/yarn.lock b/test/providers/tst_manifests/yarn-classic/package_json_deps_with_mixed_dep_types/yarn.lock new file mode 100644 index 00000000..ef452491 --- /dev/null +++ b/test/providers/tst_manifests/yarn-classic/package_json_deps_with_mixed_dep_types/yarn.lock @@ -0,0 +1 @@ +# yarn lockfile v1 From b94e0009432d815f21f9723edeac0c6a49cd710d Mon Sep 17 00:00:00 2001 From: Chao Wang Date: Fri, 3 Apr 2026 12:11:42 +0800 Subject: [PATCH 099/102] fix: exclude devDep transitive trees from yarn berry SBOM and use exact purl matching MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Address two review comments: 1. Yarn berry addDependenciesToSbom() now builds a reachable set via BFS from root production deps, so devDependency nodes and their entire transitive trees are excluded from the SBOM — not just the root edges. 2. Replace substring-based checkIfPackageInsideDependsOnList() with purl-prefix matching in ensurePeerAndOptionalDeps() to avoid false positives (e.g. "minimist" matching "minimist-options") and false negatives (e.g. "@hapi/joi" not matching URL-encoded "%40hapi/joi"). Co-Authored-By: Claude Sonnet 4 --- src/cyclone_dx_sbom.js | 15 ++++ src/providers/base_javascript.js | 10 ++- .../processors/yarn_berry_processor.js | 80 +++++++++++++++++-- src/sbom.js | 10 +++ 4 files changed, 103 insertions(+), 12 deletions(-) diff --git a/src/cyclone_dx_sbom.js b/src/cyclone_dx_sbom.js index bfc4fbdf..c56db0cd 100644 --- a/src/cyclone_dx_sbom.js +++ b/src/cyclone_dx_sbom.js @@ -282,6 +282,21 @@ export default class CycloneDxSbom { } } + /** + * Checks if any entry in the dependsOn list of sourceRef starts with the given purl prefix. + * @param {PackageURL} sourceRef - The source component + * @param {string} purlPrefix - The purl prefix to match (e.g. "pkg:npm/minimist@") + * @return {boolean} + */ + checkDependsOnByPurlPrefix(sourceRef, purlPrefix) { + const sourcePurl = sourceRef.toString(); + const depIndex = this.getDependencyIndex(sourcePurl); + if (depIndex < 0) { + return false; + } + return this.dependencies[depIndex].dependsOn.some(dep => dep.startsWith(purlPrefix)); + } + /** Removes the root component from the sbom */ removeRootComponent() { diff --git a/src/providers/base_javascript.js b/src/providers/base_javascript.js index 423eafe6..aec43e36 100644 --- a/src/providers/base_javascript.js +++ b/src/providers/base_javascript.js @@ -278,13 +278,15 @@ export default class Base_javascript { */ #ensurePeerAndOptionalDeps(sbom) { const rootPurl = toPurl(purlType, this.#manifest.name, this.#manifest.version); - const rootComponent = sbom.getRoot(); const depSources = [this.#manifest.peerDependencies, this.#manifest.optionalDependencies]; for (const source of depSources) { for (const [name, version] of Object.entries(source)) { - if (!sbom.checkIfPackageInsideDependsOnList(rootComponent, name)) { - const target = toPurl(purlType, name, version); - sbom.addDependency(rootPurl, target); + // Build the purl prefix for exact matching (e.g. "pkg:npm/minimist@" + // or "pkg:npm/%40hapi/joi@") to avoid substring false positives + const probe = toPurl(purlType, name, version); + const purlPrefix = probe.toString().replace(/@[^@]*$/, '@'); + if (!sbom.checkDependsOnByPurlPrefix(rootPurl, purlPrefix)) { + sbom.addDependency(rootPurl, probe); } } } diff --git a/src/providers/processors/yarn_berry_processor.js b/src/providers/processors/yarn_berry_processor.js index edee7f0d..7da52689 100644 --- a/src/providers/processors/yarn_berry_processor.js +++ b/src/providers/processors/yarn_berry_processor.js @@ -93,31 +93,95 @@ export default class Yarn_berry_processor extends Yarn_processor { return; } - // Collect names of production dependencies to filter out devDeps from root + // Build index of nodes by their value for quick lookup + const nodeIndex = new Map(); + depTree.forEach(n => nodeIndex.set(n.value, n)); + + // Determine the set of node values reachable from root via production deps const prodDeps = new Set(this._manifest.dependencies); + const reachable = new Set(); + const queue = []; + + // Seed with root's production dependencies + const rootNode = depTree.find(n => this.#isRoot(n.value)); + if (rootNode?.children?.Dependencies) { + for (const d of rootNode.children.Dependencies) { + const to = this.#purlFromLocator(d.locator); + if (to) { + const fullName = to.namespace ? `${to.namespace}/${to.name}` : to.name; + if (prodDeps.has(fullName)) { + queue.push(d.locator); + } + } + } + } + // BFS to find all transitively reachable packages + while (queue.length > 0) { + const locator = queue.shift(); + if (reachable.has(locator)) {continue;} + reachable.add(locator); + + const node = nodeIndex.get(this.#nodeValueFromLocator(locator)); + if (node?.children?.Dependencies) { + for (const d of node.children.Dependencies) { + if (!reachable.has(d.locator)) { + queue.push(d.locator); + } + } + } + } + + // Only emit edges for root and reachable nodes depTree.forEach(n => { const depName = n.value; const isRoot = this.#isRoot(depName); + if (!isRoot && !this.#isReachableNode(depName, reachable)) {return;} + const from = isRoot ? toPurlFromString(sbom.getRoot().purl) : this.#purlFromNode(depName, n); const deps = n.children?.Dependencies; if(!deps) {return;} deps.forEach(d => { + if (!reachable.has(d.locator)) {return;} const to = this.#purlFromLocator(d.locator); if(to) { - // For root node, only add production dependencies (exclude devDeps) - if (isRoot) { - const fullName = to.namespace ? `${to.namespace}/${to.name}` : to.name; - if (!prodDeps.has(fullName)) { - return; - } - } sbom.addDependency(from, to); } }); }) } + /** + * Converts a locator to the node value format used in yarn info output + * @param {string} locator - e.g. "express@npm:4.17.1" + * @returns {string} The node value, same as locator for non-virtual + * @private + */ + #nodeValueFromLocator(locator) { + // Virtual locators: "@scope/name@virtual:hash#npm:version" → "@scope/name@npm:version" + const virtualMatch = Yarn_berry_processor.VIRTUAL_LOCATOR_PATTERN.exec(locator); + if (virtualMatch) { + return `${virtualMatch[1]}@npm:${virtualMatch[2]}`; + } + return locator; + } + + /** + * Checks if a node is in the reachable set by matching its value against reachable locators + * @param {string} depName - The node value (e.g. "express@npm:4.17.1") + * @param {Set} reachable - Set of reachable locators + * @returns {boolean} + * @private + */ + #isReachableNode(depName, reachable) { + if (reachable.has(depName)) {return true;} + // Check if any reachable locator resolves to this node value + for (const locator of reachable) { + if (this.#nodeValueFromLocator(locator) === depName) {return true;} + } + return false; + } + /** * Creates a PackageURL from a dependency locator * @param {string} locator - The dependency locator diff --git a/src/sbom.js b/src/sbom.js index a708410b..adf1cf4a 100644 --- a/src/sbom.js +++ b/src/sbom.js @@ -86,6 +86,16 @@ export default class Sbom { return this.sbomModel.checkIfPackageInsideDependsOnList(component, name) } + /** + * Checks if any entry in the dependsOn list of sourceRef starts with the given purl prefix. + * @param {PackageURL} sourceRef - The source component to check + * @param {string} purlPrefix - The purl prefix to match (e.g. "pkg:npm/minimist@") + * @return {boolean} + */ + checkDependsOnByPurlPrefix(sourceRef, purlPrefix) { + return this.sbomModel.checkDependsOnByPurlPrefix(sourceRef, purlPrefix) + } + /** Removes the root component from the sbom */ removeRootComponent() { From de12f6a67ede1a400f0b31e3ddfcd2cf6c1156fb Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Tue, 7 Apr 2026 11:40:22 +0100 Subject: [PATCH 100/102] chore: correctly parse and differentiate between indirect & direct dependencies in go.mod files (#416) --- .gitignore | 2 +- README.md | 23 +- package-lock.json | 470 +++++- package.json | 7 +- src/providers/golang_gomodules.js | 229 ++- src/providers/gomod_parser.js | 21 + src/providers/python_pip.js | 2 +- test/providers/golang_gomodules.test.js | 12 +- .../expected_sbom_component_analysis.json | 109 +- .../expected_sbom_stack_analysis.json | 31 +- .../expected_sbom_stack_analysis.json | 1486 ++++++++--------- .../expected_sbom_component_analysis.json | 722 ++------ .../expected_sbom_stack_analysis.json | 1486 ++++++++--------- .../expected_sbom_component_analysis.json | 579 ++----- .../expected_sbom_stack_analysis.json | 817 +++++---- .../expected_sbom_component_analysis.json | 32 +- .../expected_sbom_component_analysis.json | 670 ++------ .../expected_sbom_stack_analysis.json | 1340 ++++++++------- .../golang/go_mod_with_ignore/go.mod | 4 +- 19 files changed, 3513 insertions(+), 4529 deletions(-) create mode 100644 src/providers/gomod_parser.js diff --git a/.gitignore b/.gitignore index 25177c4b..50a69abc 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,4 @@ unit-tests-result.json build target .npmrc -src/providers/tree-sitter-requirements.wasm +src/providers/*.wasm diff --git a/README.md b/README.md index de7ddb9f..855331fa 100644 --- a/README.md +++ b/README.md @@ -287,8 +287,11 @@ Excluding a package from any analysis can be achieved by marking the package for ] } ``` + + +

  • +Golang users can add in go.mod a comment with // exhortignore next to the package to be ignored, or to "piggyback" on existing comment ( e.g - // indirect), for example: -Golang users can add in go.mod a comment with //exhortignore next to the package to be ignored, or to "piggyback" on existing comment ( e.g - //indirect) , for example: ```go module github.com/trustify-da/SaaSi/deployer @@ -297,7 +300,7 @@ go 1.19 require ( github.com/gin-gonic/gin v1.9.1 github.com/google/uuid v1.1.2 - github.com/jessevdk/go-flags v1.5.0 //exhortignore + github.com/jessevdk/go-flags v1.5.0 // exhortignore github.com/kr/pretty v0.3.1 gopkg.in/yaml.v2 v2.4.0 k8s.io/apimachinery v0.26.1 @@ -305,14 +308,20 @@ require ( ) require ( - github.com/davecgh/go-spew v1.1.1 // indirect exhortignore + github.com/davecgh/go-spew v1.1.1 // indirect; exhortignore github.com/emicklei/go-restful/v3 v3.9.0 // indirect - github.com/go-logr/logr v1.2.3 // indirect //exhortignore + github.com/go-logr/logr v1.2.3 // indirect; exhortignore ) ``` +NOTE: It is important to format exhortignore markers on indirect dependencies as shown above, otherwise the Go tooling (as well as this library) may incorrectly parse dependencies marked as indirect as being direct dependencies instead. +
  • + + +
  • Python pip users can add in requirements.txt a comment with #exhortignore(or # exhortignore) to the right of the same artifact to be ignored, for example: + ```properties anyio==3.6.2 asgiref==3.4.1 @@ -343,11 +352,14 @@ Werkzeug==2.0.3 zipp==3.6.0 ``` +
  • +
  • Gradle users can add in build.gradle a comment with //exhortignore next to the package to be ignored: + ```build.gradle plugins { -id 'java' + id 'java' } group = 'groupName' @@ -381,7 +393,6 @@ log = "0.4" # trustify-da-ignore All of the 6 above examples are valid for marking a package to be ignored
  • -

    Customization

    diff --git a/package-lock.json b/package-lock.json index 96feaf72..a78eb73c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,8 +23,9 @@ "p-limit": "^4.0.0", "packageurl-js": "~1.0.2", "smol-toml": "^1.6.0", + "tree-sitter-gomod": "github:strum355/tree-sitter-go-mod#56326f2ad478892ace58ff247a97d492a3cbcdda", "tree-sitter-requirements": "github:Strum355/tree-sitter-requirements#d0261ee76b84253997fe70d7d397e78c006c3801", - "web-tree-sitter": "^0.26.6", + "web-tree-sitter": "^0.26.7", "yargs": "^18.0.0" }, "bin": { @@ -452,6 +453,15 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@gar/promise-retry": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@gar/promise-retry/-/promise-retry-1.0.3.tgz", + "integrity": "sha512-GmzA9ckNokPypTg10pgpeHNQe7ph+iIKKmhKu3Ob9ANkswreCx7R3cKmY781K8QK3AqVL3xVh9A42JvIAbkkSA==", + "license": "MIT", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", @@ -681,6 +691,18 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -857,6 +879,15 @@ "node": ">=10" } }, + "node_modules/@npmcli/redact": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-4.0.0.tgz", + "integrity": "sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, "node_modules/@one-ini/wasm": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz", @@ -2726,7 +2757,6 @@ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "license": "MIT", - "optional": true, "engines": { "node": ">=6" } @@ -3305,8 +3335,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", - "license": "Apache-2.0", - "optional": true + "license": "Apache-2.0" }, "node_modules/extend": { "version": "3.0.2", @@ -3575,7 +3604,6 @@ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "license": "ISC", - "optional": true, "dependencies": { "minipass": "^7.0.3" }, @@ -3881,8 +3909,7 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC", - "optional": true + "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", @@ -4029,15 +4056,13 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", - "license": "BSD-2-Clause", - "optional": true + "license": "BSD-2-Clause" }, "node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "license": "MIT", - "optional": true, "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -4186,7 +4211,6 @@ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "license": "MIT", - "optional": true, "engines": { "node": ">= 12" } @@ -5054,7 +5078,6 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "devOptional": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" @@ -5065,7 +5088,6 @@ "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", "license": "ISC", - "optional": true, "dependencies": { "minipass": "^7.0.3" }, @@ -5096,7 +5118,6 @@ "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "license": "ISC", - "optional": true, "dependencies": { "minipass": "^3.0.0" }, @@ -5109,7 +5130,6 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "license": "ISC", - "optional": true, "dependencies": { "yallist": "^4.0.0" }, @@ -5121,15 +5141,13 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC", - "optional": true + "license": "ISC" }, "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "license": "ISC", - "optional": true, "dependencies": { "minipass": "^3.0.0" }, @@ -5142,7 +5160,6 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "license": "ISC", - "optional": true, "dependencies": { "yallist": "^4.0.0" }, @@ -5154,8 +5171,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC", - "optional": true + "license": "ISC" }, "node_modules/minipass-sized": { "version": "1.0.3", @@ -6940,7 +6956,6 @@ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "license": "MIT", - "optional": true, "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -6976,7 +6991,6 @@ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", "license": "MIT", - "optional": true, "dependencies": { "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" @@ -6991,7 +7005,6 @@ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", "license": "MIT", - "optional": true, "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", @@ -7494,7 +7507,6 @@ "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", @@ -7511,7 +7523,6 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, "license": "MIT", "engines": { "node": ">=12.0.0" @@ -7529,7 +7540,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -7583,6 +7593,406 @@ "node": ">=16" } }, + "node_modules/tree-sitter": { + "version": "0.22.4", + "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.22.4.tgz", + "integrity": "sha512-usbHZP9/oxNsUY65MQUsduGRqDHQOou1cagUSwjhoSYAmSahjQDAVsh9s+SlZkn8X8+O1FULRGwHu7AFP3kjzg==", + "hasInstallScript": true, + "license": "MIT", + "peer": true, + "dependencies": { + "node-addon-api": "^8.3.0", + "node-gyp-build": "^4.8.4" + } + }, + "node_modules/tree-sitter-gomod": { + "version": "1.1.1", + "resolved": "git+ssh://git@github.com/strum355/tree-sitter-go-mod.git#56326f2ad478892ace58ff247a97d492a3cbcdda", + "integrity": "sha512-NQ/6pAjcjy7cmhQGOMFMXO3mf0PEwwKHXir0yz3h82NX/04Z6Q0FtAq2bAFNZz6bQ+kzX1snJAMRVy+NT9+w5A==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^8.0.0", + "node-gyp": "^12.2.0", + "node-gyp-build": "^4.8.1" + }, + "peerDependencies": { + "tree-sitter": "^0.22.4" + }, + "peerDependenciesMeta": { + "tree_sitter": { + "optional": true + } + } + }, + "node_modules/tree-sitter-gomod/node_modules/@npmcli/agent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz", + "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==", + "license": "ISC", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^11.2.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/tree-sitter-gomod/node_modules/@npmcli/fs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-5.0.0.tgz", + "integrity": "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==", + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/tree-sitter-gomod/node_modules/abbrev": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz", + "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/tree-sitter-gomod/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/tree-sitter-gomod/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/tree-sitter-gomod/node_modules/cacache": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.4.tgz", + "integrity": "sha512-M3Lab8NPYlZU2exsL3bMVvMrMqgwCnMWfdZbK28bn3pK6APT/Te/I8hjRPNu1uwORY9a1eEQoifXbKPQMfMTOA==", + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^5.0.0", + "fs-minipass": "^3.0.0", + "glob": "^13.0.0", + "lru-cache": "^11.1.0", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^7.0.2", + "ssri": "^13.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/tree-sitter-gomod/node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/tree-sitter-gomod/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tree-sitter-gomod/node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/tree-sitter-gomod/node_modules/isexe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=20" + } + }, + "node_modules/tree-sitter-gomod/node_modules/lru-cache": { + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/tree-sitter-gomod/node_modules/make-fetch-happen": { + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.5.tgz", + "integrity": "sha512-uCbIa8jWWmQZt4dSnEStkVC6gdakiinAm4PiGsywIkguF0eWMdcjDz0ECYhUolFU3pFLOev9VNPCEygydXnddg==", + "license": "ISC", + "dependencies": { + "@gar/promise-retry": "^1.0.0", + "@npmcli/agent": "^4.0.0", + "@npmcli/redact": "^4.0.0", + "cacache": "^20.0.1", + "http-cache-semantics": "^4.1.1", + "minipass": "^7.0.2", + "minipass-fetch": "^5.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^1.0.0", + "proc-log": "^6.0.0", + "ssri": "^13.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/tree-sitter-gomod/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tree-sitter-gomod/node_modules/minipass-fetch": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-5.0.2.tgz", + "integrity": "sha512-2d0q2a8eCi2IRg/IGubCNRJoYbA1+YPXAzQVRFmB45gdGZafyivnZ5YSEfo3JikbjGxOdntGFvBQGqaSMXlAFQ==", + "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^2.0.0", + "minizlib": "^3.0.1" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + }, + "optionalDependencies": { + "iconv-lite": "^0.7.2" + } + }, + "node_modules/tree-sitter-gomod/node_modules/minipass-sized": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-2.0.0.tgz", + "integrity": "sha512-zSsHhto5BcUVM2m1LurnXY6M//cGhVaegT71OfOXoprxT6o780GZd792ea6FfrQkuU4usHZIUczAQMRUE2plzA==", + "license": "ISC", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tree-sitter-gomod/node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/tree-sitter-gomod/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/tree-sitter-gomod/node_modules/node-gyp": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-12.2.0.tgz", + "integrity": "sha512-q23WdzrQv48KozXlr0U1v9dwO/k59NHeSzn6loGcasyf0UnSrtzs8kRxM+mfwJSf0DkX0s43hcqgnSO4/VNthQ==", + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^15.0.0", + "nopt": "^9.0.0", + "proc-log": "^6.0.0", + "semver": "^7.3.5", + "tar": "^7.5.4", + "tinyglobby": "^0.2.12", + "which": "^6.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/tree-sitter-gomod/node_modules/nopt": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-9.0.0.tgz", + "integrity": "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==", + "license": "ISC", + "dependencies": { + "abbrev": "^4.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/tree-sitter-gomod/node_modules/p-map": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", + "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tree-sitter-gomod/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tree-sitter-gomod/node_modules/proc-log": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", + "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/tree-sitter-gomod/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tree-sitter-gomod/node_modules/ssri": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.1.tgz", + "integrity": "sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/tree-sitter-gomod/node_modules/tar": { + "version": "7.5.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz", + "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tree-sitter-gomod/node_modules/which": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", + "license": "ISC", + "dependencies": { + "isexe": "^4.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/tree-sitter-gomod/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/tree-sitter-requirements": { "version": "0.5.0", "resolved": "git+ssh://git@github.com/Strum355/tree-sitter-requirements.git#d0261ee76b84253997fe70d7d397e78c006c3801", @@ -7949,9 +8359,9 @@ } }, "node_modules/web-tree-sitter": { - "version": "0.26.6", - "resolved": "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.26.6.tgz", - "integrity": "sha512-fSPR7VBW/fZQdUSp/bXTDLT+i/9dwtbnqgEBMzowrM4U3DzeCwDbY3MKo0584uQxID4m/1xpLflrlT/rLIRPew==", + "version": "0.26.8", + "resolved": "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.26.8.tgz", + "integrity": "sha512-4sUwi7ZyOrIk5KLgYLkc2A/F0LFMQnBhfb+2Cdl7ik4ePJ6JD+fk4ofI2sA5eGawBKBaK4Vntt7Ww5KcEsay4A==", "license": "MIT" }, "node_modules/which": { diff --git a/package.json b/package.json index 429fa5a2..80c7493a 100644 --- a/package.json +++ b/package.json @@ -40,11 +40,11 @@ "test": "c8 npm run tests", "tests": "mocha --config .mocharc.json --grep \".*analysis module.*\" --invert", "tests:rep": "mocha --reporter-option maxDiffSize=0 --reporter json > unit-tests-result.json", - "pretest": "cp node_modules/tree-sitter-requirements/tree-sitter-requirements.wasm src/providers/tree-sitter-requirements.wasm", + "pretest": "cp node_modules/tree-sitter-requirements/tree-sitter-requirements.wasm src/providers/tree-sitter-requirements.wasm && cp node_modules/tree-sitter-gomod/tree-sitter-gomod.wasm src/providers/tree-sitter-gomod.wasm", "precompile": "rm -rf dist", "compile": "tsc -p tsconfig.json", "compile:dev": "tsc -p tsconfig.dev.json", - "postcompile": "cp node_modules/tree-sitter-requirements/tree-sitter-requirements.wasm dist/src/providers/tree-sitter-requirements.wasm" + "postcompile": "cp node_modules/tree-sitter-requirements/tree-sitter-requirements.wasm dist/src/providers/tree-sitter-requirements.wasm && cp node_modules/tree-sitter-gomod/tree-sitter-gomod.wasm dist/src/providers/tree-sitter-gomod.wasm" }, "dependencies": { "@babel/core": "^7.23.2", @@ -61,8 +61,9 @@ "p-limit": "^4.0.0", "packageurl-js": "~1.0.2", "smol-toml": "^1.6.0", + "tree-sitter-gomod": "github:strum355/tree-sitter-go-mod#56326f2ad478892ace58ff247a97d492a3cbcdda", "tree-sitter-requirements": "github:Strum355/tree-sitter-requirements#d0261ee76b84253997fe70d7d397e78c006c3801", - "web-tree-sitter": "^0.26.6", + "web-tree-sitter": "^0.26.7", "yargs": "^18.0.0" }, "devDependencies": { diff --git a/src/providers/golang_gomodules.js b/src/providers/golang_gomodules.js index f741e8d3..850f1e2f 100644 --- a/src/providers/golang_gomodules.js +++ b/src/providers/golang_gomodules.js @@ -1,6 +1,5 @@ import fs from 'node:fs' import path from 'node:path' -import { EOL } from "os"; import { PackageURL } from 'packageurl-js' @@ -8,7 +7,7 @@ import { readLicenseFile } from '../license/license_utils.js' import Sbom from '../sbom.js' import { getCustom, getCustomPath, invokeCommand } from "../tools.js"; - +import { getParser, getRequireQuery } from './gomod_parser.js' export default { isSupported, validateLockFile, provideComponent, provideStack, readLicenseFromManifest } @@ -28,8 +27,8 @@ const ecosystem = 'golang' const defaultMainModuleVersion = "v0.0.0"; /** - * @param {string} manifestName - the subject manifest name-type - * @returns {boolean} - return true if `pom.xml` is the manifest name-type + * @param {string} manifestName the subject manifest name-type + * @returns {boolean} return true if `pom.xml` is the manifest name-type */ function isSupported(manifestName) { return 'go.mod' === manifestName @@ -37,41 +36,41 @@ function isSupported(manifestName) { /** * Go modules have no standard license field in go.mod - * @param {string} manifestPath - path to go.mod + * @param {string} manifestPath path to go.mod * @returns {string|null} */ // eslint-disable-next-line no-unused-vars function readLicenseFromManifest(manifestPath) { return readLicenseFile(manifestPath); } /** - * @param {string} manifestDir - the directory where the manifest lies + * @param {string} manifestDir the directory where the manifest lies */ function validateLockFile() { return true; } /** * 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} + * @param {string} manifest the manifest path or name + * @param {{}} [opts={}] optional various options to pass along the application + * @returns {Promise} */ -function provideStack(manifest, opts = {}) { +async function provideStack(manifest, opts = {}) { return { ecosystem, - content: getSBOM(manifest, opts, true), + content: await getSBOM(manifest, opts, true), contentType: 'application/vnd.cyclonedx+json' } } /** * Provide content and content type for maven-maven component analysis. - * @param {string} manifest - path to go.mod for component report - * @param {{}} [opts={}] - optional various options to pass along the application - * @returns {Provided} + * @param {string} manifest path to go.mod for component report + * @param {{}} [opts={}] optional various options to pass along the application + * @returns {Promise} */ -function provideComponent(manifest, opts = {}) { +async function provideComponent(manifest, opts = {}) { return { ecosystem, - content: getSBOM(manifest, opts, false), + content: await getSBOM(manifest, opts, false), contentType: 'application/vnd.cyclonedx+json' } } @@ -94,54 +93,54 @@ function getChildVertexFromEdge(edge) { } /** - * - * @param line one row from go.mod file - * @return {boolean} whether line from go.mod should be considered as ignored or not + * Check whether a require_spec has a valid exhortignore marker. + * For direct dependencies: `//exhortignore` or `// exhortignore` + * For indirect dependencies: `// indirect; exhortignore` (semicolon-separated) + * @param {import('web-tree-sitter').SyntaxNode} specNode + * @return {boolean} */ -function ignoredLine(line) { - let result = false - if(line.match(".*exhortignore.*")) { - if(line.match(".+//\\s*exhortignore") || line.match(".+//\\sindirect (//)?\\s*exhortignore")) { - let trimmedRow = line.trim() - if(!trimmedRow.startsWith("module ") && !trimmedRow.startsWith("go ") && !trimmedRow.startsWith("require (") && !trimmedRow.startsWith("require(") - && !trimmedRow.startsWith("exclude ") && !trimmedRow.startsWith("replace ") && !trimmedRow.startsWith("retract ") && !trimmedRow.startsWith("use ") - && !trimmedRow.includes("=>")) - { - if( trimmedRow.startsWith("require ") || trimmedRow.match("^[a-z.0-9/-]+\\s{1,2}[vV][0-9]\\.[0-9](\\.[0-9]){0,2}.*")) { - result = true - } - } +function hasExhortIgnore(specNode) { + // Ideally this would be the following tree-sitter query instead, but for some + // reason it throws an error here but not in the playground. + // (require_spec) ((module_path) @path (version) (comment) @comment (#match? @comment "^//.*exhortignore")) + // QueryError: Bad pattern structure at offset 53: '(comment) @comment (#match? @comment "^//.*exhortignore")) @spec'... + let comments = specNode.children.filter(c => c.type === 'comment') + for (let comment of comments) { + let text = comment.text + if (/^\/\/\s*indirect;\s*exhortignore/.test(text)) { + return true + } + if (/^\/\/\s*exhortignore/.test(text)) { + return true } } - return result -} - -/** - * extract package name from go.mod line that contains exhortignore comment. - * @param line a row contains exhortignore as part of a comment - * @return {string} the full package name + group/namespace + version - * @private - */ -function extractPackageName(line) { - let trimmedRow = line.trim(); - let firstRemarkNotationOccurrence = trimmedRow.indexOf("//"); - return trimmedRow.substring(0,firstRemarkNotationOccurrence).trim(); + return false } /** * - * @param {string } manifest - path to manifest - * @return {[PackageURL]} list of ignored dependencies d + * @param {string} manifestContent go.mod file contents + * @param {import('web-tree-sitter').Parser} parser + * @param {import('web-tree-sitter').Query} requireQuery + * @return {PackageURL[]} list of ignored dependencies */ -function getIgnoredDeps(manifest) { - let goMod = fs.readFileSync(manifest).toString().trim() - let lines = goMod.split(getLineSeparatorGolang()); - return lines.filter(line => ignoredLine(line)).map(line=> extractPackageName(line)).map(dep => toPurl(dep,/[ ]{1,3}/)) +function getIgnoredDeps(manifestContent, parser, requireQuery) { + let tree = parser.parse(manifestContent) + return requireQuery.matches(tree.rootNode) + .filter(match => { + let specNode = match.captures.find(c => c.name === 'spec').node + return hasExhortIgnore(specNode) + }) + .map(match => { + let name = match.captures.find(c => c.name === 'name').node.text + let version = match.captures.find(c => c.name === 'version').node.text + return toPurl(`${name} ${version}`, /[ ]{1,3}/) + }) } /** * - * @param {[PackageURL]}allIgnoredDeps - list of purls of all dependencies that should be ignored + * @param {PackageURL[]} allIgnoredDeps list of purls of all dependencies that should be ignored * @param {PackageURL} purl object to be checked if needed to be ignored * @return {boolean} */ @@ -162,68 +161,30 @@ function enforceRemovingIgnoredDepsInCaseOfAutomaticVersionUpdate(ignoredDeps, s /** * - * @param {[string]} lines - array of lines of go.mod manifest - * @param {string} goMod - content of go.mod manifest - * @return {[string]} all dependencies from go.mod file as array + * @param {string} manifestContent go.mod file contents + * @param {import('web-tree-sitter').Parser} parser + * @param {import('web-tree-sitter').Query} requireQuery + * @return {string[]} all dependencies from go.mod file as "name version" strings */ -function collectAllDepsFromManifest(lines, goMod) { - let result - // collect all deps that starts with require keyword - - result = lines.filter((line) => line.trim().startsWith("require") && !line.includes("(")).map((dep) => dep.substring("require".length).trim()) - - - - // collect all deps that are inside `require` blocks - let currentSegmentOfGoMod = goMod - let requirePositionObject = decideRequireBlockIndex(currentSegmentOfGoMod) - while(requirePositionObject.index > -1) { - let depsInsideRequirementsBlock = currentSegmentOfGoMod.substring(requirePositionObject.index + requirePositionObject.startingOffeset).trim(); - let endOfBlockIndex = depsInsideRequirementsBlock.indexOf(")") - let currentIndex = 0 - while(currentIndex < endOfBlockIndex) - { - let endOfLinePosition = depsInsideRequirementsBlock.indexOf(EOL, currentIndex); - let dependency = depsInsideRequirementsBlock.substring(currentIndex, endOfLinePosition) - result.push(dependency.trim()) - currentIndex = endOfLinePosition + 1 - } - currentSegmentOfGoMod = currentSegmentOfGoMod.substring(endOfBlockIndex + 1).trim() - requirePositionObject = decideRequireBlockIndex(currentSegmentOfGoMod) - } - - function decideRequireBlockIndex(goMod) { - let object = {} - let index = goMod.indexOf("require(") - object.startingOffeset = "require(".length - if (index === -1) - { - index = goMod.indexOf("require (") - object.startingOffeset = "require (".length - if(index === -1) - { - index = goMod.indexOf("require (") - object.startingOffeset = "require (".length - } - } - object.index = index - return object - } - return result +function collectAllDepsFromManifest(manifestContent, parser, requireQuery) { + let tree = parser.parse(manifestContent) + return requireQuery.matches(tree.rootNode).map(match => { + let name = match.captures.find(c => c.name === 'name').node.text + let version = match.captures.find(c => c.name === 'version').node.text + return `${name} ${version}` + }) } /** * * @param {string} rootElementName the rootElementName element of go mod graph, to compare only direct deps from go mod graph against go.mod manifest - * @param{[string]} goModGraphOutputRows the goModGraphOutputRows from go mod graph' output - * @param {string }manifest path to go.mod manifest on file system + * @param {string[]} goModGraphOutputRows the goModGraphOutputRows from go mod graph' output + * @param {string} manifestContent go.mod file contents * @private */ -function performManifestVersionsCheck(rootElementName, goModGraphOutputRows, manifest) { - let goMod = fs.readFileSync(manifest).toString().trim() - let lines = goMod.split(getLineSeparatorGolang()); +function performManifestVersionsCheck(rootElementName, goModGraphOutputRows, manifestContent, parser, requireQuery) { let comparisonLines = goModGraphOutputRows.filter((line)=> line.startsWith(rootElementName)).map((line)=> getChildVertexFromEdge(line)) - let manifestDeps = collectAllDepsFromManifest(lines,goMod) + let manifestDeps = collectAllDepsFromManifest(manifestContent, parser, requireQuery) try { comparisonLines.forEach((dependency) => { let parts = dependency.split("@") @@ -235,7 +196,7 @@ function performManifestVersionsCheck(rootElementName, goModGraphOutputRows, man let currentVersion = components[1] if (currentDepName === depName) { if (currentVersion !== version) { - throw new Error(`versions mismatch for dependency name ${depName}, manifest version=${currentVersion}, installed Version=${version}, if you want to allow version mismatch for analysis between installed and requested packages, set environment variable/setting - MATCH_MANIFEST_VERSIONS=false`) + throw new Error(`version mismatch for dependency "${depName}", manifest version=${currentVersion}, installed version=${version}, if you want to allow version mismatch for analysis between installed and requested packages, set environment variable/setting MATCH_MANIFEST_VERSIONS=false`) } } }) @@ -252,10 +213,10 @@ function performManifestVersionsCheck(rootElementName, goModGraphOutputRows, man * @param {string} manifest - path for go.mod * @param {{}} [opts={}] - optional various options to pass along the application * @param {boolean} includeTransitive - whether the sbom should contain transitive dependencies of the main module or not. - * @returns {string} the SBOM json content + * @returns {Promise} the SBOM json content * @private */ -function getSBOM(manifest, opts = {}, includeTransitive) { +async function getSBOM(manifest, opts = {}, includeTransitive) { // get custom goBin path let goBin = getCustomPath('go', opts) // verify goBin is accessible @@ -280,14 +241,26 @@ function getSBOM(manifest, opts = {}, includeTransitive) { throw new Error('failed to determine root module name', {cause: error}) } - let ignoredDeps = getIgnoredDeps(manifest); + let manifestContent = fs.readFileSync(manifest).toString() + let [parser, requireQuery] = await Promise.all([getParser(), getRequireQuery()]); + let ignoredDeps = getIgnoredDeps(manifestContent, parser, requireQuery); let allIgnoredDeps = ignoredDeps.map((dep) => dep.toString()) let sbom = new Sbom(); let rows = goGraphOutput.split(getLineSeparatorGolang()).filter(line => !line.includes(' go@')); - let root = getParentVertexFromEdge(goModEditOutput['Module']['Path']) + let root = goModEditOutput['Module']['Path'] + + // Build set of direct dependency paths from go mod edit -json + let directDepPaths = new Set() + if (goModEditOutput['Require']) { + goModEditOutput['Require'].forEach(req => { + if (!req['Indirect']) { + directDepPaths.add(req['Path']) + } + }) + } let matchManifestVersions = getCustom("MATCH_MANIFEST_VERSIONS", "false", opts); if(matchManifestVersions === "true") { - performManifestVersionsCheck(root, rows, manifest) + performManifestVersionsCheck(root, rows, manifestContent, parser, requireQuery) } const mainModule = toPurl(root, "@") @@ -306,7 +279,11 @@ function getSBOM(manifest, opts = {}, includeTransitive) { currentParent = getParentVertexFromEdge(row) source = toPurl(currentParent, "@"); } - let target = toPurl(getChildVertexFromEdge(row), "@"); + let child = getChildVertexFromEdge(row) + let target = toPurl(child, "@"); + if (getParentVertexFromEdge(row) === root && !directDepPaths.has(getPackageName(child))) { + return; + } sbom.addDependency(source, target) }) @@ -316,13 +293,15 @@ function getSBOM(manifest, opts = {}, includeTransitive) { } else { let directDependencies = rows.filter(row => row.startsWith(root)); directDependencies.forEach(pair => { - let dependency = getChildVertexFromEdge(pair) - let depPurl = toPurl(dependency, "@"); - if(dependencyNotIgnored(ignoredDeps, depPurl)) { - sbom.addDependency(mainModule, depPurl) + let child = getChildVertexFromEdge(pair) + let target = toPurl(child, "@"); + if(dependencyNotIgnored(ignoredDeps, target)) { + if (directDepPaths.has(getPackageName(child))) { + sbom.addDependency(mainModule, target) + } } }) - enforceRemovingIgnoredDepsInCaseOfAutomaticVersionUpdate(ignoredDeps,sbom) + enforceRemovingIgnoredDepsInCaseOfAutomaticVersionUpdate(ignoredDeps, sbom) } return sbom.getAsJsonString(opts) @@ -332,7 +311,7 @@ function getSBOM(manifest, opts = {}, includeTransitive) { /** * Utility function for creating Purl String - * @param {string }dependency the name of the artifact, can include a namespace(group) or not - namespace/artifactName. + * @param {string} dependency the name of the artifact, can include a namespace(group) or not - namespace/artifactName. * @param {RegExp} delimiter delimiter between name of dependency and version * @private * @returns {PackageURL|null} PackageUrl Object ready to be used in SBOM @@ -344,7 +323,7 @@ function toPurl(dependency, delimiter) { let splitParts = dependency.split(delimiter); pkg = new PackageURL(ecosystem, undefined, splitParts[0], splitParts[1], undefined, undefined) } else { - let namespace = dependency.slice(0,lastSlashIndex) + let namespace = dependency.slice(0, lastSlashIndex) let dependencyAndVersion = dependency.slice(lastSlashIndex+1) let parts = dependencyAndVersion.split(delimiter); if(parts.length === 2 ) { @@ -356,14 +335,14 @@ function toPurl(dependency, delimiter) { return pkg } -/** This function gets rows from go mod graph , and go.mod graph, and selecting for all +/** This function gets rows from go mod graph, and go.mod graph, and selecting for all * packages the has more than one minor the final versions as selected by golang MVS algorithm. - * @param {[string]}rows all the rows from go modules dependency tree + * @param {string[]} rows all the rows from go modules dependency tree * @param {string} manifestPath the path of the go.mod file * @param {string} path to go binary - * @return {[string]} rows that contains final versions. + * @return {string[]} rows that contains final versions. */ -function getFinalPackagesVersionsForModule(rows,manifestPath,goBin) { +function getFinalPackagesVersionsForModule(rows, manifestPath, goBin) { let manifestDir = path.dirname(manifestPath) let options = {cwd: manifestDir} // TODO: determine whether this is necessary @@ -416,7 +395,7 @@ function getFinalPackagesVersionsForModule(rows,manifestPath,goBin) { /** * * @param {string} fullPackage - full package with its name and version - * @return -{string} package name only + * @return {string} package name only * @private */ function getPackageName(fullPackage) { @@ -436,7 +415,7 @@ function isSpecialGoModule(moduleName) { /** * * @param {string} fullPackage - full package with its name and version - * @return -{string} package version only + * @return {string|undefined} package version only * @private */ function getVersionOfPackage(fullPackage) { diff --git a/src/providers/gomod_parser.js b/src/providers/gomod_parser.js new file mode 100644 index 00000000..4a0e8e21 --- /dev/null +++ b/src/providers/gomod_parser.js @@ -0,0 +1,21 @@ +import { readFile } from 'node:fs/promises'; + +import { Language, Parser, Query } from 'web-tree-sitter'; + +const wasmUrl = new URL('./tree-sitter-gomod.wasm', import.meta.url); + +async function init() { + await Parser.init(); + const wasmBytes = new Uint8Array(await readFile(wasmUrl)); + return await Language.load(wasmBytes); +} + +export async function getParser() { + const language = await init(); + return new Parser().setLanguage(language); +} + +export async function getRequireQuery() { + const language = await init(); + return new Query(language, '(require_spec (module_path) @name (version) @version) @spec'); +} diff --git a/src/providers/python_pip.js b/src/providers/python_pip.js index 139b4544..1d55ec4a 100644 --- a/src/providers/python_pip.js +++ b/src/providers/python_pip.js @@ -94,7 +94,7 @@ function addAllDependencies(source, dep, sbom) { /** * * @param {string} manifest - path to requirements.txt - * @return {PackageURL []} + * @return {Promise} */ async function getIgnoredDependencies(manifest) { const [parser, ignoreQuery, pinnedVersionQuery] = await Promise.all([ diff --git a/test/providers/golang_gomodules.test.js b/test/providers/golang_gomodules.test.js index 1a4d2df2..fc07ce0a 100644 --- a/test/providers/golang_gomodules.test.js +++ b/test/providers/golang_gomodules.test.js @@ -27,12 +27,12 @@ suite('testing the golang-go-modules data provider', () => { "go_mod_empty" ].forEach(testCase => { let scenario = testCase.replace('go_mod_', '').replaceAll('_', ' ') - test(`verify go.mod sbom provided for stack analysis with scenario ${scenario}`, () => { + test(`verify go.mod sbom provided for stack analysis with scenario ${scenario}`, async () => { // load the expected graph for the scenario let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/golang/${testCase}/expected_sbom_stack_analysis.json`).toString() expectedSbom = JSON.stringify(JSON.parse(expectedSbom),null, 4) // invoke sut stack analysis for scenario manifest - let providedDataForStack = golangGoModules.provideStack(`test/providers/tst_manifests/golang/${testCase}/go.mod`) + let providedDataForStack = await golangGoModules.provideStack(`test/providers/tst_manifests/golang/${testCase}/go.mod`) // 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\\-\\:]+\"","") @@ -43,12 +43,12 @@ suite('testing the golang-go-modules data provider', () => { // 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 go.mod sbom provided for component analysis with scenario ${scenario}`, () => { + test(`verify go.mod sbom provided for component analysis with scenario ${scenario}`, async () => { // load the expected list for the scenario let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/golang/${testCase}/expected_sbom_component_analysis.json`).toString().trimEnd() expectedSbom = JSON.stringify(JSON.parse(expectedSbom),null, 4) // invoke sut stack analysis for scenario manifest - let providedDataForComponent = golangGoModules.provideComponent(`test/providers/tst_manifests/golang/${testCase}/go.mod`) + let providedDataForComponent = await golangGoModules.provideComponent(`test/providers/tst_manifests/golang/${testCase}/go.mod`) // verify returned data matches expectation expect(providedDataForComponent.ecosystem).equal('golang') expect(providedDataForComponent.contentType).equal('application/vnd.cyclonedx+json') @@ -63,12 +63,12 @@ suite('testing the golang-go-modules data provider', () => { ].forEach(testCase => { let scenario = testCase.replace('go_mod_', '').replaceAll('_', ' ') - test(`verify go.mod sbom provided for stack analysis with scenario ${scenario}`, () => { + test(`verify go.mod sbom provided for stack analysis with scenario ${scenario}`, async () => { // load the expected graph for the scenario let expectedSbom = fs.readFileSync(`test/providers/tst_manifests/golang/${testCase}/expected_sbom_stack_analysis.json`,).toString() // expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) // invoke sut stack analysis for scenario manifest - let providedDataForStack = golangGoModules.provideStack(`test/providers/tst_manifests/golang/${testCase}/go.mod`,{"TRUSTIFY_DA_GO_MVS_LOGIC_ENABLED" : "true"}) + let providedDataForStack = await golangGoModules.provideStack(`test/providers/tst_manifests/golang/${testCase}/go.mod`,{"TRUSTIFY_DA_GO_MVS_LOGIC_ENABLED" : "true"}) // 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\\-\\:]+\"","") diff --git a/test/providers/tst_manifests/golang/go_mod_light_no_ignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/golang/go_mod_light_no_ignore/expected_sbom_component_analysis.json index 10138b88..e47ebce4 100644 --- a/test/providers/tst_manifests/golang/go_mod_light_no_ignore/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_light_no_ignore/expected_sbom_component_analysis.json @@ -1,64 +1,51 @@ { - "bomFormat": "CycloneDX", - "specVersion": "1.4", - "version": 1, - "metadata": { - "timestamp": "2023-08-07T00:00:00.000Z", - "component": { - "group": "golang.org/x", - "name": "example", - "version": "v0.0.0", - "purl": "pkg:golang/golang.org/x/example@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/golang.org/x/example@v0.0.0" - } - }, - "components": [ - { - "group": "github.com/spf13", - "name": "cobra", - "version": "v0.0.5", - "purl": "pkg:golang/github.com/spf13/cobra@v0.0.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/spf13/cobra@v0.0.5" + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "group": "golang.org/x", + "name": "example", + "version": "v0.0.0", + "purl": "pkg:golang/golang.org/x/example@v0.0.0", + "type": "application", + "bom-ref": "pkg:golang/golang.org/x/example@v0.0.0" + } }, - { - "group": "golang.org/x", - "name": "tools", - "version": "v0.0.0-20210112183307-1e6ecd4bf1b0", - "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0" - }, - { - "group": "gopkg.in", - "name": "yaml.v3", - "version": "v3.0.1", - "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1" - } - ], - "dependencies": [ - { - "ref": "pkg:golang/golang.org/x/example@v0.0.0", - "dependsOn": [ - "pkg:golang/github.com/spf13/cobra@v0.0.5", - "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/spf13/cobra@v0.0.5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "dependsOn": [] - } - ] + "components": [ + { + "group": "github.com/spf13", + "name": "cobra", + "version": "v0.0.5", + "purl": "pkg:golang/github.com/spf13/cobra@v0.0.5", + "type": "library", + "bom-ref": "pkg:golang/github.com/spf13/cobra@v0.0.5" + }, + { + "group": "golang.org/x", + "name": "tools", + "version": "v0.0.0-20210112183307-1e6ecd4bf1b0", + "purl": "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0" + } + ], + "dependencies": [ + { + "ref": "pkg:golang/golang.org/x/example@v0.0.0", + "dependsOn": [ + "pkg:golang/github.com/spf13/cobra@v0.0.5", + "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0" + ] + }, + { + "ref": "pkg:golang/github.com/spf13/cobra@v0.0.5", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0", + "dependsOn": [] + } + ] } diff --git a/test/providers/tst_manifests/golang/go_mod_light_no_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/golang/go_mod_light_no_ignore/expected_sbom_stack_analysis.json index 22745b56..71d593e9 100644 --- a/test/providers/tst_manifests/golang/go_mod_light_no_ignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_light_no_ignore/expected_sbom_stack_analysis.json @@ -30,14 +30,6 @@ "type": "library", "bom-ref": "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0" }, - { - "group": "gopkg.in", - "name": "yaml.v3", - "version": "v3.0.1", - "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1" - }, { "group": "github.com/BurntSushi", "name": "toml", @@ -134,6 +126,14 @@ "type": "library", "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" }, + { + "group": "gopkg.in", + "name": "yaml.v3", + "version": "v3.0.1", + "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1" + }, { "group": "gopkg.in", "name": "check.v1", @@ -316,8 +316,7 @@ "ref": "pkg:golang/golang.org/x/example@v0.0.0", "dependsOn": [ "pkg:golang/github.com/spf13/cobra@v0.0.5", - "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1" + "pkg:golang/golang.org/x/tools@v0.0.0-20210112183307-1e6ecd4bf1b0" ] }, { @@ -342,12 +341,6 @@ "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" ] }, - { - "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" - ] - }, { "ref": "pkg:golang/github.com/BurntSushi/toml@v0.3.1", "dependsOn": [] @@ -429,6 +422,12 @@ "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", "dependsOn": [] }, + { + "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "dependsOn": [ + "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405" + ] + }, { "ref": "pkg:golang/gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405", "dependsOn": [] diff --git a/test/providers/tst_manifests/golang/go_mod_mvs_versions/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/golang/go_mod_mvs_versions/expected_sbom_stack_analysis.json index 0b1fdd12..56234681 100644 --- a/test/providers/tst_manifests/golang/go_mod_mvs_versions/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_mvs_versions/expected_sbom_stack_analysis.json @@ -14,22 +14,6 @@ } }, "components": [ - { - "group": "github.com/davecgh", - "name": "go-spew", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1" - }, - { - "group": "github.com/emicklei/go-restful", - "name": "v3", - "version": "v3.9.0", - "purl": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0" - }, { "group": "github.com/gin-gonic", "name": "gin", @@ -38,78 +22,6 @@ "type": "library", "bom-ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1" }, - { - "group": "github.com/go-logr", - "name": "logr", - "version": "v1.2.3", - "purl": "pkg:golang/github.com/go-logr/logr@v1.2.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-logr/logr@v1.2.3" - }, - { - "group": "github.com/go-openapi", - "name": "jsonpointer", - "version": "v0.19.5", - "purl": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5" - }, - { - "group": "github.com/go-openapi", - "name": "jsonreference", - "version": "v0.20.0", - "purl": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0" - }, - { - "group": "github.com/go-openapi", - "name": "swag", - "version": "v0.19.14", - "purl": "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14" - }, - { - "group": "github.com/gogo", - "name": "protobuf", - "version": "v1.3.2", - "purl": "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.5.2", - "purl": "pkg:golang/github.com/golang/protobuf@v1.5.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.2" - }, - { - "group": "github.com/google", - "name": "gnostic", - "version": "v0.5.7-v3refs", - "purl": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.9", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.9", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.9" - }, - { - "group": "github.com/google", - "name": "gofuzz", - "version": "v1.1.0", - "purl": "pkg:golang/github.com/google/gofuzz@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/gofuzz@v1.1.0" - }, { "group": "github.com/google", "name": "uuid", @@ -118,14 +30,6 @@ "type": "library", "bom-ref": "pkg:golang/github.com/google/uuid@v1.1.2" }, - { - "group": "github.com/imdario", - "name": "mergo", - "version": "v0.3.6", - "purl": "pkg:golang/github.com/imdario/mergo@v0.3.6", - "type": "library", - "bom-ref": "pkg:golang/github.com/imdario/mergo@v0.3.6" - }, { "group": "github.com/jessevdk", "name": "go-flags", @@ -134,22 +38,6 @@ "type": "library", "bom-ref": "pkg:golang/github.com/jessevdk/go-flags@v1.5.0" }, - { - "group": "github.com/josharian", - "name": "intern", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/josharian/intern@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/josharian/intern@v1.0.0" - }, - { - "group": "github.com/json-iterator", - "name": "go", - "version": "v1.1.12", - "purl": "pkg:golang/github.com/json-iterator/go@v1.1.12", - "type": "library", - "bom-ref": "pkg:golang/github.com/json-iterator/go@v1.1.12" - }, { "group": "github.com/kr", "name": "pretty", @@ -159,116 +47,108 @@ "bom-ref": "pkg:golang/github.com/kr/pretty@v0.3.1" }, { - "group": "github.com/kr", - "name": "text", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/kr/text@v0.2.0", + "group": "gopkg.in", + "name": "yaml.v2", + "version": "v2.4.0", + "purl": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", "type": "library", - "bom-ref": "pkg:golang/github.com/kr/text@v0.2.0" + "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0" }, { - "group": "github.com/mailru", - "name": "easyjson", - "version": "v0.7.6", - "purl": "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "group": "k8s.io", + "name": "apimachinery", + "version": "v0.26.1", + "purl": "pkg:golang/k8s.io/apimachinery@v0.26.1", "type": "library", - "bom-ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6" + "bom-ref": "pkg:golang/k8s.io/apimachinery@v0.26.1" }, { - "group": "github.com/modern-go", - "name": "concurrent", - "version": "v0.0.0-20180306012644-bacd9c7ef1dd", - "purl": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "group": "k8s.io", + "name": "client-go", + "version": "v0.26.1", + "purl": "pkg:golang/k8s.io/client-go@v0.26.1", "type": "library", - "bom-ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" + "bom-ref": "pkg:golang/k8s.io/client-go@v0.26.1" }, { - "group": "github.com/modern-go", - "name": "reflect2", - "version": "v1.0.2", - "purl": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "group": "github.com/bytedance", + "name": "sonic", + "version": "v1.9.1", + "purl": "pkg:golang/github.com/bytedance/sonic@v1.9.1", "type": "library", - "bom-ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2" + "bom-ref": "pkg:golang/github.com/bytedance/sonic@v1.9.1" }, { - "group": "github.com/munnerz", - "name": "goautoneg", - "version": "v0.0.0-20191010083416-a7dc8b61c822", - "purl": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "group": "github.com/gin-contrib", + "name": "sse", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/gin-contrib/sse@v0.1.0", "type": "library", - "bom-ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822" + "bom-ref": "pkg:golang/github.com/gin-contrib/sse@v0.1.0" }, { - "group": "github.com/rogpeppe", - "name": "go-internal", - "version": "v1.9.0", - "purl": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", + "group": "github.com/go-playground/validator", + "name": "v10", + "version": "v10.14.0", + "purl": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", "type": "library", - "bom-ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" + "bom-ref": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0" }, { - "group": "github.com/spf13", - "name": "pflag", - "version": "v1.0.5", - "purl": "pkg:golang/github.com/spf13/pflag@v1.0.5", + "group": "github.com/goccy", + "name": "go-json", + "version": "v0.10.2", + "purl": "pkg:golang/github.com/goccy/go-json@v0.10.2", "type": "library", - "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.5" + "bom-ref": "pkg:golang/github.com/goccy/go-json@v0.10.2" }, { - "group": "golang.org/x", - "name": "net", - "version": "v0.10.0", - "purl": "pkg:golang/golang.org/x/net@v0.10.0", + "group": "github.com/json-iterator", + "name": "go", + "version": "v1.1.12", + "purl": "pkg:golang/github.com/json-iterator/go@v1.1.12", "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.10.0" + "bom-ref": "pkg:golang/github.com/json-iterator/go@v1.1.12" }, { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20220223155221-ee480838109b", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "group": "github.com/mattn", + "name": "go-isatty", + "version": "v0.0.19", + "purl": "pkg:golang/github.com/mattn/go-isatty@v0.0.19", "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b" + "bom-ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.19" }, { - "group": "golang.org/x", - "name": "sys", - "version": "v0.8.0", - "purl": "pkg:golang/golang.org/x/sys@v0.8.0", + "group": "github.com/pelletier/go-toml", + "name": "v2", + "version": "v2.0.8", + "purl": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.8.0" + "bom-ref": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8" }, { - "group": "golang.org/x", - "name": "term", - "version": "v0.8.0", - "purl": "pkg:golang/golang.org/x/term@v0.8.0", + "group": "github.com/stretchr", + "name": "testify", + "version": "v1.8.3", + "purl": "pkg:golang/github.com/stretchr/testify@v1.8.3", "type": "library", - "bom-ref": "pkg:golang/golang.org/x/term@v0.8.0" + "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.8.3" }, { - "group": "golang.org/x", - "name": "text", - "version": "v0.9.0", - "purl": "pkg:golang/golang.org/x/text@v0.9.0", + "group": "github.com/ugorji/go", + "name": "codec", + "version": "v1.2.11", + "purl": "pkg:golang/github.com/ugorji/go/codec@v1.2.11", "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.9.0" + "bom-ref": "pkg:golang/github.com/ugorji/go/codec@v1.2.11" }, { "group": "golang.org/x", - "name": "time", - "version": "v0.0.0-20220210224613-90d013bbcef8", - "purl": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.6.7", - "purl": "pkg:golang/google.golang.org/appengine@v1.6.7", + "name": "net", + "version": "v0.10.0", + "purl": "pkg:golang/golang.org/x/net@v0.10.0", "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.7" + "bom-ref": "pkg:golang/golang.org/x/net@v0.10.0" }, { "group": "google.golang.org", @@ -280,163 +160,11 @@ }, { "group": "gopkg.in", - "name": "inf.v0", - "version": "v0.9.1", - "purl": "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "name": "yaml.v3", + "version": "v3.0.1", + "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", "type": "library", - "bom-ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1" - }, - { - "group": "gopkg.in", - "name": "yaml.v2", - "version": "v2.4.0", - "purl": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0" - }, - { - "group": "gopkg.in", - "name": "yaml.v3", - "version": "v3.0.1", - "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1" - }, - { - "group": "k8s.io", - "name": "api", - "version": "v0.26.1", - "purl": "pkg:golang/k8s.io/api@v0.26.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/api@v0.26.1" - }, - { - "group": "k8s.io", - "name": "apimachinery", - "version": "v0.26.1", - "purl": "pkg:golang/k8s.io/apimachinery@v0.26.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/apimachinery@v0.26.1" - }, - { - "group": "k8s.io", - "name": "client-go", - "version": "v0.26.1", - "purl": "pkg:golang/k8s.io/client-go@v0.26.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/client-go@v0.26.1" - }, - { - "group": "k8s.io/klog", - "name": "v2", - "version": "v2.80.1", - "purl": "pkg:golang/k8s.io/klog/v2@v2.80.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/klog/v2@v2.80.1" - }, - { - "group": "k8s.io", - "name": "kube-openapi", - "version": "v0.0.0-20221012153701-172d655c2280", - "purl": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280" - }, - { - "group": "k8s.io", - "name": "utils", - "version": "v0.0.0-20221107191617-1a15be271d1d", - "purl": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d" - }, - { - "group": "sigs.k8s.io", - "name": "json", - "version": "v0.0.0-20220713155537-f223a00ba0e2", - "purl": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2" - }, - { - "group": "sigs.k8s.io/structured-merge-diff", - "name": "v4", - "version": "v4.2.3", - "purl": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3" - }, - { - "group": "sigs.k8s.io", - "name": "yaml", - "version": "v1.3.0", - "purl": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0" - }, - { - "group": "github.com/bytedance", - "name": "sonic", - "version": "v1.9.1", - "purl": "pkg:golang/github.com/bytedance/sonic@v1.9.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/bytedance/sonic@v1.9.1" - }, - { - "group": "github.com/gin-contrib", - "name": "sse", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/gin-contrib/sse@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/gin-contrib/sse@v0.1.0" - }, - { - "group": "github.com/go-playground/validator", - "name": "v10", - "version": "v10.14.0", - "purl": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0" - }, - { - "group": "github.com/goccy", - "name": "go-json", - "version": "v0.10.2", - "purl": "pkg:golang/github.com/goccy/go-json@v0.10.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/goccy/go-json@v0.10.2" - }, - { - "group": "github.com/mattn", - "name": "go-isatty", - "version": "v0.0.19", - "purl": "pkg:golang/github.com/mattn/go-isatty@v0.0.19", - "type": "library", - "bom-ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.19" - }, - { - "group": "github.com/pelletier/go-toml", - "name": "v2", - "version": "v2.0.8", - "purl": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", - "type": "library", - "bom-ref": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.8.3", - "purl": "pkg:golang/github.com/stretchr/testify@v1.8.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.8.3" - }, - { - "group": "github.com/ugorji/go", - "name": "codec", - "version": "v1.2.11", - "purl": "pkg:golang/github.com/ugorji/go/codec@v1.2.11", - "type": "library", - "bom-ref": "pkg:golang/github.com/ugorji/go/codec@v1.2.11" + "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1" }, { "group": "github.com/chenzhuoyu", @@ -446,6 +174,14 @@ "type": "library", "bom-ref": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311" }, + { + "group": "github.com/davecgh", + "name": "go-spew", + "version": "v1.1.1", + "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1" + }, { "group": "github.com/gabriel-vasile", "name": "mimetype", @@ -486,6 +222,22 @@ "type": "library", "bom-ref": "pkg:golang/github.com/leodido/go-urn@v1.2.4" }, + { + "group": "github.com/modern-go", + "name": "concurrent", + "version": "v0.0.0-20180306012644-bacd9c7ef1dd", + "purl": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "type": "library", + "bom-ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" + }, + { + "group": "github.com/modern-go", + "name": "reflect2", + "version": "v1.0.2", + "purl": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2" + }, { "group": "github.com/pmezard", "name": "go-difflib", @@ -518,6 +270,62 @@ "type": "library", "bom-ref": "pkg:golang/golang.org/x/crypto@v0.9.0" }, + { + "group": "golang.org/x", + "name": "sys", + "version": "v0.8.0", + "purl": "pkg:golang/golang.org/x/sys@v0.8.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/sys@v0.8.0" + }, + { + "group": "golang.org/x", + "name": "text", + "version": "v0.9.0", + "purl": "pkg:golang/golang.org/x/text@v0.9.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/text@v0.9.0" + }, + { + "group": "github.com/go-openapi", + "name": "jsonpointer", + "version": "v0.19.5", + "purl": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5" + }, + { + "group": "github.com/go-openapi", + "name": "swag", + "version": "v0.19.14", + "purl": "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14" + }, + { + "group": "github.com/mailru", + "name": "easyjson", + "version": "v0.7.6", + "purl": "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "type": "library", + "bom-ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6" + }, + { + "group": "github.com/go-openapi", + "name": "jsonreference", + "version": "v0.20.0", + "purl": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0" + }, + { + "group": "github.com/kr", + "name": "text", + "version": "v0.2.0", + "purl": "pkg:golang/github.com/kr/text@v0.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/kr/text@v0.2.0" + }, { "group": "github.com/niemeyer", "name": "pretty", @@ -534,6 +342,14 @@ "type": "library", "bom-ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" }, + { + "group": "github.com/gogo", + "name": "protobuf", + "version": "v1.3.2", + "purl": "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2" + }, { "group": "github.com/kisielk", "name": "errcheck", @@ -559,20 +375,44 @@ "bom-ref": "pkg:golang/golang.org/x/tools@v0.6.0" }, { - "group": "github.com/docopt", - "name": "docopt-go", - "version": "v0.0.0-20180111231733-ee0de3bc6815", - "purl": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", + "group": "github.com/golang", + "name": "protobuf", + "version": "v1.5.2", + "purl": "pkg:golang/github.com/golang/protobuf@v1.5.2", "type": "library", - "bom-ref": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815" + "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.2" }, { - "group": "github.com/stoewer", - "name": "go-strcase", - "version": "v1.2.0", - "purl": "pkg:golang/github.com/stoewer/go-strcase@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/stoewer/go-strcase@v1.2.0" + "group": "github.com/google", + "name": "go-cmp", + "version": "v0.5.9", + "purl": "pkg:golang/github.com/google/go-cmp@v0.5.9", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.9" + }, + { + "group": "github.com/google", + "name": "gnostic", + "version": "v0.5.7-v3refs", + "purl": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs" + }, + { + "group": "github.com/docopt", + "name": "docopt-go", + "version": "v0.0.0-20180111231733-ee0de3bc6815", + "purl": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", + "type": "library", + "bom-ref": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815" + }, + { + "group": "github.com/stoewer", + "name": "go-strcase", + "version": "v1.2.0", + "purl": "pkg:golang/github.com/stoewer/go-strcase@v1.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/stoewer/go-strcase@v1.2.0" }, { "group": "golang.org/x", @@ -590,6 +430,22 @@ "type": "library", "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154" }, + { + "group": "github.com/google", + "name": "gofuzz", + "version": "v1.1.0", + "purl": "pkg:golang/github.com/google/gofuzz@v1.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/gofuzz@v1.1.0" + }, + { + "group": "github.com/rogpeppe", + "name": "go-internal", + "version": "v1.9.0", + "purl": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" + }, { "group": "github.com/creack", "name": "pty", @@ -598,6 +454,14 @@ "type": "library", "bom-ref": "pkg:golang/github.com/creack/pty@v1.1.9" }, + { + "group": "github.com/josharian", + "name": "intern", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/josharian/intern@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/josharian/intern@v1.0.0" + }, { "group": "github.com/pkg", "name": "diff", @@ -606,6 +470,22 @@ "type": "library", "bom-ref": "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e" }, + { + "group": "golang.org/x", + "name": "term", + "version": "v0.8.0", + "purl": "pkg:golang/golang.org/x/term@v0.8.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/term@v0.8.0" + }, + { + "group": "golang.org/x", + "name": "oauth2", + "version": "v0.0.0-20220223155221-ee480838109b", + "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b" + }, { "group": "cloud.google.com", "name": "go", @@ -614,6 +494,14 @@ "type": "library", "bom-ref": "pkg:golang/cloud.google.com/go@v0.65.0" }, + { + "group": "google.golang.org", + "name": "appengine", + "version": "v1.6.7", + "purl": "pkg:golang/google.golang.org/appengine@v1.6.7", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.7" + }, { "group": "golang.org/x", "name": "mod", @@ -622,6 +510,78 @@ "type": "library", "bom-ref": "pkg:golang/golang.org/x/mod@v0.8.0" }, + { + "group": "k8s.io", + "name": "api", + "version": "v0.26.1", + "purl": "pkg:golang/k8s.io/api@v0.26.1", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/api@v0.26.1" + }, + { + "group": "github.com/go-logr", + "name": "logr", + "version": "v1.2.3", + "purl": "pkg:golang/github.com/go-logr/logr@v1.2.3", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-logr/logr@v1.2.3" + }, + { + "group": "github.com/spf13", + "name": "pflag", + "version": "v1.0.5", + "purl": "pkg:golang/github.com/spf13/pflag@v1.0.5", + "type": "library", + "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.5" + }, + { + "group": "gopkg.in", + "name": "inf.v0", + "version": "v0.9.1", + "purl": "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1" + }, + { + "group": "k8s.io/klog", + "name": "v2", + "version": "v2.80.1", + "purl": "pkg:golang/k8s.io/klog/v2@v2.80.1", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/klog/v2@v2.80.1" + }, + { + "group": "k8s.io", + "name": "utils", + "version": "v0.0.0-20221107191617-1a15be271d1d", + "purl": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d" + }, + { + "group": "sigs.k8s.io", + "name": "json", + "version": "v0.0.0-20220713155537-f223a00ba0e2", + "purl": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "type": "library", + "bom-ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2" + }, + { + "group": "sigs.k8s.io/structured-merge-diff", + "name": "v4", + "version": "v4.2.3", + "purl": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "type": "library", + "bom-ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3" + }, + { + "group": "sigs.k8s.io", + "name": "yaml", + "version": "v1.3.0", + "purl": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "type": "library", + "bom-ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0" + }, { "group": "github.com/armon", "name": "go-socks5", @@ -662,6 +622,14 @@ "type": "library", "bom-ref": "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f" }, + { + "group": "k8s.io", + "name": "kube-openapi", + "version": "v0.0.0-20221012153701-172d655c2280", + "purl": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280" + }, { "group": "github.com/onsi/ginkgo", "name": "v2", @@ -702,6 +670,14 @@ "type": "library", "bom-ref": "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7" }, + { + "group": "github.com/imdario", + "name": "mergo", + "version": "v0.3.6", + "purl": "pkg:golang/github.com/imdario/mergo@v0.3.6", + "type": "library", + "bom-ref": "pkg:golang/github.com/imdario/mergo@v0.3.6" + }, { "group": "github.com/peterbourgon", "name": "diskv", @@ -710,6 +686,22 @@ "type": "library", "bom-ref": "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible" }, + { + "group": "golang.org/x", + "name": "time", + "version": "v0.0.0-20220210224613-90d013bbcef8", + "purl": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8" + }, + { + "group": "github.com/emicklei/go-restful", + "name": "v3", + "version": "v3.9.0", + "purl": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0" + }, { "group": "github.com/google", "name": "btree", @@ -718,6 +710,14 @@ "type": "library", "bom-ref": "pkg:golang/github.com/google/btree@v1.0.1" }, + { + "group": "github.com/munnerz", + "name": "goautoneg", + "version": "v0.0.0-20191010083416-a7dc8b61c822", + "purl": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "type": "library", + "bom-ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822" + }, { "group": "github.com/NYTimes", "name": "gziphandler", @@ -1104,358 +1104,86 @@ { "group": "rsc.io", "name": "binaryregexp", - "version": "v0.2.0", - "purl": "pkg:golang/rsc.io/binaryregexp@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/rsc.io/binaryregexp@v0.2.0" - }, - { - "group": "github.com/go-gl", - "name": "glfw", - "version": "v0.0.0-20190409004039-e6da0acd62b1", - "purl": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1" - } - ], - "dependencies": [ - { - "ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "pkg:golang/github.com/gin-gonic/gin@v1.9.1", - "pkg:golang/github.com/go-logr/logr@v1.2.3", - "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/github.com/imdario/mergo@v0.3.6", - "pkg:golang/github.com/jessevdk/go-flags@v1.5.0", - "pkg:golang/github.com/josharian/intern@v1.0.0", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/kr/pretty@v0.3.1", - "pkg:golang/github.com/kr/text@v0.2.0", - "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/term@v0.8.0", - "pkg:golang/golang.org/x/text@v0.9.0", - "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/protobuf@v1.30.0", - "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/k8s.io/api@v0.26.1", - "pkg:golang/k8s.io/apimachinery@v0.26.1", - "pkg:golang/k8s.io/client-go@v0.26.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", - "dependsOn": [ - "pkg:golang/github.com/bytedance/sonic@v1.9.1", - "pkg:golang/github.com/gin-contrib/sse@v0.1.0", - "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", - "pkg:golang/github.com/goccy/go-json@v0.10.2", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/mattn/go-isatty@v0.0.19", - "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", - "pkg:golang/github.com/stretchr/testify@v1.8.3", - "pkg:golang/github.com/ugorji/go/codec@v1.2.11", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/google.golang.org/protobuf@v1.30.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", - "pkg:golang/github.com/go-playground/locales@v0.14.1", - "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", - "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", - "pkg:golang/github.com/leodido/go-urn@v1.2.4", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", - "pkg:golang/golang.org/x/arch@v0.3.0", - "pkg:golang/golang.org/x/crypto@v0.9.0", - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/text@v0.9.0" - ] - }, - { - "ref": "pkg:golang/github.com/go-logr/logr@v1.2.3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "dependsOn": [ - "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "pkg:golang/github.com/stretchr/testify@v1.8.3" - ] - }, - { - "ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "dependsOn": [ - "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "pkg:golang/github.com/stretchr/testify@v1.8.3" - ] - }, - { - "ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/kr/text@v0.2.0", - "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", - "pkg:golang/github.com/stretchr/testify@v1.8.3", - "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/github.com/kr/pretty@v0.3.1" - ] - }, - { - "ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "dependsOn": [ - "pkg:golang/github.com/kisielk/errcheck@v1.5.0", - "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "pkg:golang/golang.org/x/tools@v0.6.0" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.5.2", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/google.golang.org/protobuf@v1.30.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/kr/pretty@v0.3.1", - "pkg:golang/github.com/stoewer/go-strcase@v1.2.0", - "pkg:golang/golang.org/x/tools@v0.6.0", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", - "pkg:golang/google.golang.org/protobuf@v1.30.0", - "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.9", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/github.com/google/gofuzz@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/uuid@v1.1.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/imdario/mergo@v0.3.6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/jessevdk/go-flags@v1.5.0", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.8.0" - ] - }, - { - "ref": "pkg:golang/github.com/josharian/intern@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/json-iterator/go@v1.1.12", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/stretchr/testify@v1.8.3" - ] - }, - { - "ref": "pkg:golang/github.com/kr/pretty@v0.3.1", - "dependsOn": [ - "pkg:golang/github.com/kr/text@v0.2.0", - "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" - ] - }, - { - "ref": "pkg:golang/github.com/kr/text@v0.2.0", - "dependsOn": [ - "pkg:golang/github.com/creack/pty@v1.1.9", - "pkg:golang/github.com/kr/pty@v1.1.1" - ] - }, - { - "ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "dependsOn": [ - "pkg:golang/github.com/josharian/intern@v1.0.0" - ] - }, - { - "ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", - "dependsOn": [ - "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e", - "pkg:golang/gopkg.in/errgo.v2@v2.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/spf13/pflag@v1.0.5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.10.0", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/term@v0.8.0", - "pkg:golang/golang.org/x/text@v0.9.0", - "pkg:golang/golang.org/x/crypto@v0.9.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.8.0", - "dependsOn": [] + "version": "v0.2.0", + "purl": "pkg:golang/rsc.io/binaryregexp@v0.2.0", + "type": "library", + "bom-ref": "pkg:golang/rsc.io/binaryregexp@v0.2.0" }, { - "ref": "pkg:golang/golang.org/x/term@v0.8.0", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.8.0" - ] - }, + "group": "github.com/go-gl", + "name": "glfw", + "version": "v0.0.0-20190409004039-e6da0acd62b1", + "purl": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1" + } + ], + "dependencies": [ { - "ref": "pkg:golang/golang.org/x/text@v0.9.0", + "ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.6.0", - "pkg:golang/golang.org/x/mod@v0.8.0", - "pkg:golang/golang.org/x/sys@v0.8.0" + "pkg:golang/github.com/gin-gonic/gin@v1.9.1", + "pkg:golang/github.com/google/uuid@v1.1.2", + "pkg:golang/github.com/jessevdk/go-flags@v1.5.0", + "pkg:golang/github.com/kr/pretty@v0.3.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/k8s.io/apimachinery@v0.26.1", + "pkg:golang/k8s.io/client-go@v0.26.1" ] }, { - "ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.6.7", + "ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/bytedance/sonic@v1.9.1", + "pkg:golang/github.com/gin-contrib/sse@v0.1.0", + "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", + "pkg:golang/github.com/goccy/go-json@v0.10.2", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/mattn/go-isatty@v0.0.19", + "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/github.com/ugorji/go/codec@v1.2.11", "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", + "pkg:golang/github.com/go-playground/locales@v0.14.1", + "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", + "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", + "pkg:golang/github.com/leodido/go-urn@v1.2.4", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", + "pkg:golang/golang.org/x/arch@v0.3.0", "pkg:golang/golang.org/x/crypto@v0.9.0", "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/tools@v0.6.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.30.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154" + "pkg:golang/golang.org/x/text@v0.9.0" ] }, { - "ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "ref": "pkg:golang/github.com/google/uuid@v1.1.2", "dependsOn": [] }, { - "ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "ref": "pkg:golang/github.com/jessevdk/go-flags@v1.5.0", "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" + "pkg:golang/golang.org/x/sys@v0.8.0" ] }, { - "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "ref": "pkg:golang/github.com/kr/pretty@v0.3.1", "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" + "pkg:golang/github.com/kr/text@v0.2.0", + "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" ] }, { - "ref": "pkg:golang/k8s.io/api@v0.26.1", + "ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", "dependsOn": [ - "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "pkg:golang/github.com/stretchr/testify@v1.8.3", - "pkg:golang/k8s.io/apimachinery@v0.26.1", - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/go-logr/logr@v1.2.3", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/golang.org/x/text@v0.9.0", - "pkg:golang/google.golang.org/protobuf@v1.30.0", - "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.3.0" + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" ] }, { @@ -1554,163 +1282,183 @@ ] }, { - "ref": "pkg:golang/k8s.io/klog/v2@v2.80.1", - "dependsOn": [ - "pkg:golang/github.com/go-logr/logr@v1.2.3" - ] + "ref": "pkg:golang/github.com/bytedance/sonic@v1.9.1", + "dependsOn": [] }, { - "ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", + "ref": "pkg:golang/github.com/gin-contrib/sse@v0.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/goccy/go-json@v0.10.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/json-iterator/go@v1.1.12", "dependsOn": [ - "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", - "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a", - "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", - "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", - "pkg:golang/github.com/onsi/gomega@v1.23.0", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/github.com/stretchr/testify@v1.8.3", - "pkg:golang/google.golang.org/protobuf@v1.30.0", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.3.0", - "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1", - "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578", "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/go-logr/logr@v1.2.3", - "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/google/gofuzz@v1.1.0", "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/golang.org/x/mod@v0.8.0", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/text@v0.9.0", - "pkg:golang/golang.org/x/tools@v0.6.0", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + "pkg:golang/github.com/stretchr/testify@v1.8.3" ] }, { - "ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.19", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/stretchr/testify@v1.8.3", "dependsOn": [ "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/github.com/go-logr/logr@v1.2.3" + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/github.com/stretchr/objx@v0.1.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0" ] }, { - "ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "ref": "pkg:golang/github.com/ugorji/go/codec@v1.2.11", "dependsOn": [] }, { - "ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "ref": "pkg:golang/golang.org/x/net@v0.10.0", "dependsOn": [ - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/term@v0.8.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/crypto@v0.9.0" ] }, { - "ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "ref": "pkg:golang/google.golang.org/protobuf@v1.30.0", "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0" + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154" ] }, { - "ref": "pkg:golang/github.com/bytedance/sonic@v1.9.1", + "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "dependsOn": [ + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" + ] + }, + { + "ref": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/gin-contrib/sse@v0.1.0", + "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", + "ref": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/goccy/go-json@v0.10.2", + "ref": "pkg:golang/github.com/go-playground/locales@v0.14.1", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.19", + "ref": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", + "ref": "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/stretchr/testify@v1.8.3", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/objx@v0.1.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0" - ] + "ref": "pkg:golang/github.com/leodido/go-urn@v1.2.4", + "dependsOn": [] }, { - "ref": "pkg:golang/github.com/ugorji/go/codec@v1.2.11", + "ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", + "ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", + "ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/go-playground/locales@v0.14.1", + "ref": "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", + "ref": "pkg:golang/golang.org/x/arch@v0.3.0", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", + "ref": "pkg:golang/golang.org/x/crypto@v0.9.0", + "dependsOn": [ + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/net@v0.10.0" + ] + }, + { + "ref": "pkg:golang/golang.org/x/sys@v0.8.0", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/leodido/go-urn@v1.2.4", - "dependsOn": [] + "ref": "pkg:golang/golang.org/x/text@v0.9.0", + "dependsOn": [ + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/golang.org/x/sys@v0.8.0" + ] + }, + { + "ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "dependsOn": [ + "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/stretchr/testify@v1.8.3" + ] }, { - "ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "dependsOn": [] + "ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/kr/text@v0.2.0", + "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/github.com/kr/pretty@v0.3.1" + ] }, { - "ref": "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", - "dependsOn": [] + "ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "dependsOn": [ + "pkg:golang/github.com/josharian/intern@v1.0.0" + ] }, { - "ref": "pkg:golang/golang.org/x/arch@v0.3.0", - "dependsOn": [] + "ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", + "dependsOn": [ + "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "pkg:golang/github.com/stretchr/testify@v1.8.3" + ] }, { - "ref": "pkg:golang/golang.org/x/crypto@v0.9.0", + "ref": "pkg:golang/github.com/kr/text@v0.2.0", "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/net@v0.10.0" + "pkg:golang/github.com/creack/pty@v1.1.9", + "pkg:golang/github.com/kr/pty@v1.1.1" ] }, { @@ -1723,6 +1471,14 @@ "ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", "dependsOn": [] }, + { + "ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "dependsOn": [ + "pkg:golang/github.com/kisielk/errcheck@v1.5.0", + "pkg:golang/github.com/kisielk/gotool@v1.0.0", + "pkg:golang/golang.org/x/tools@v0.6.0" + ] + }, { "ref": "pkg:golang/github.com/kisielk/errcheck@v1.5.0", "dependsOn": [ @@ -1744,6 +1500,35 @@ "pkg:golang/google.golang.org/appengine@v1.6.7" ] }, + { + "ref": "pkg:golang/github.com/golang/protobuf@v1.5.2", + "dependsOn": [ + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/google.golang.org/protobuf@v1.30.0" + ] + }, + { + "ref": "pkg:golang/github.com/google/go-cmp@v0.5.9", + "dependsOn": [ + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + ] + }, + { + "ref": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/kr/pretty@v0.3.1", + "pkg:golang/github.com/stoewer/go-strcase@v1.2.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1" + ] + }, { "ref": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", "dependsOn": [] @@ -1772,14 +1557,44 @@ "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" ] }, + { + "ref": "pkg:golang/github.com/google/gofuzz@v1.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", + "dependsOn": [ + "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e", + "pkg:golang/gopkg.in/errgo.v2@v2.1.0" + ] + }, { "ref": "pkg:golang/github.com/creack/pty@v1.1.9", "dependsOn": [] }, + { + "ref": "pkg:golang/github.com/josharian/intern@v1.0.0", + "dependsOn": [] + }, { "ref": "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e", "dependsOn": [] }, + { + "ref": "pkg:golang/golang.org/x/term@v0.8.0", + "dependsOn": [ + "pkg:golang/golang.org/x/sys@v0.8.0" + ] + }, + { + "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.65.0", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" + ] + }, { "ref": "pkg:golang/cloud.google.com/go@v0.65.0", "dependsOn": [ @@ -1818,6 +1633,17 @@ "pkg:golang/rsc.io/binaryregexp@v0.2.0" ] }, + { + "ref": "pkg:golang/google.golang.org/appengine@v1.6.7", + "dependsOn": [ + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/crypto@v0.9.0", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/tools@v0.6.0" + ] + }, { "ref": "pkg:golang/golang.org/x/mod@v0.8.0", "dependsOn": [ @@ -1826,6 +1652,81 @@ "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" ] }, + { + "ref": "pkg:golang/k8s.io/api@v0.26.1", + "dependsOn": [ + "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/k8s.io/apimachinery@v0.26.1", + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/go-logr/logr@v1.2.3", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/github.com/spf13/pflag@v1.0.5", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/k8s.io/klog/v2@v2.80.1", + "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "pkg:golang/sigs.k8s.io/yaml@v1.3.0" + ] + }, + { + "ref": "pkg:golang/github.com/go-logr/logr@v1.2.3", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/spf13/pflag@v1.0.5", + "dependsOn": [] + }, + { + "ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/k8s.io/klog/v2@v2.80.1", + "dependsOn": [ + "pkg:golang/github.com/go-logr/logr@v1.2.3" + ] + }, + { + "ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/k8s.io/klog/v2@v2.80.1", + "pkg:golang/github.com/go-logr/logr@v1.2.3" + ] + }, + { + "ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "dependsOn": [ + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" + ] + }, + { + "ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0" + ] + }, { "ref": "pkg:golang/github.com/armon/go-socks5@v0.0.0-20160902184237-e75332964ef5", "dependsOn": [] @@ -1846,6 +1747,51 @@ "ref": "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f", "dependsOn": [] }, + { + "ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", + "dependsOn": [ + "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", + "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a", + "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", + "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", + "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/google/uuid@v1.1.2", + "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", + "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", + "pkg:golang/github.com/onsi/gomega@v1.23.0", + "pkg:golang/github.com/spf13/pflag@v1.0.5", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c", + "pkg:golang/k8s.io/klog/v2@v2.80.1", + "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1", + "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578", + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/go-logr/logr@v1.2.3", + "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + ] + }, { "ref": "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", "dependsOn": [] @@ -1866,14 +1812,30 @@ "ref": "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7", "dependsOn": [] }, + { + "ref": "pkg:golang/github.com/imdario/mergo@v0.3.6", + "dependsOn": [] + }, { "ref": "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible", "dependsOn": [] }, + { + "ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", + "dependsOn": [] + }, { "ref": "pkg:golang/github.com/google/btree@v1.0.1", "dependsOn": [] }, + { + "ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "dependsOn": [] + }, { "ref": "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", "dependsOn": [] diff --git a/test/providers/tst_manifests/golang/go_mod_no_ignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/golang/go_mod_no_ignore/expected_sbom_component_analysis.json index 610c5b54..d132874e 100644 --- a/test/providers/tst_manifests/golang/go_mod_no_ignore/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_no_ignore/expected_sbom_component_analysis.json @@ -1,610 +1,116 @@ { - "bomFormat": "CycloneDX", - "specVersion": "1.4", - "version": 1, - "metadata": { - "timestamp": "2023-08-07T00:00:00.000Z", - "component": { - "group": "github.com/RHEcosystemAppEng/SaaSi", - "name": "deployer", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0" - } - }, - "components": [ - { - "group": "github.com/davecgh", - "name": "go-spew", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1" - }, - { - "group": "github.com/emicklei/go-restful", - "name": "v3", - "version": "v3.9.0", - "purl": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0" - }, - { - "group": "github.com/gin-gonic", - "name": "gin", - "version": "v1.9.1", - "purl": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1" - }, - { - "group": "github.com/go-logr", - "name": "logr", - "version": "v1.2.3", - "purl": "pkg:golang/github.com/go-logr/logr@v1.2.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-logr/logr@v1.2.3" - }, - { - "group": "github.com/go-openapi", - "name": "jsonpointer", - "version": "v0.19.5", - "purl": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5" - }, - { - "group": "github.com/go-openapi", - "name": "jsonreference", - "version": "v0.20.0", - "purl": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0" - }, - { - "group": "github.com/go-openapi", - "name": "swag", - "version": "v0.19.14", - "purl": "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14" - }, - { - "group": "github.com/gogo", - "name": "protobuf", - "version": "v1.3.2", - "purl": "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.5.2", - "purl": "pkg:golang/github.com/golang/protobuf@v1.5.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.2" - }, - { - "group": "github.com/google", - "name": "gnostic", - "version": "v0.5.7-v3refs", - "purl": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.9", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.9", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.9" - }, - { - "group": "github.com/google", - "name": "gofuzz", - "version": "v1.1.0", - "purl": "pkg:golang/github.com/google/gofuzz@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/gofuzz@v1.1.0" - }, - { - "group": "github.com/google", - "name": "uuid", - "version": "v1.1.2", - "purl": "pkg:golang/github.com/google/uuid@v1.1.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/uuid@v1.1.2" - }, - { - "group": "github.com/imdario", - "name": "mergo", - "version": "v0.3.6", - "purl": "pkg:golang/github.com/imdario/mergo@v0.3.6", - "type": "library", - "bom-ref": "pkg:golang/github.com/imdario/mergo@v0.3.6" - }, - { - "group": "github.com/jessevdk", - "name": "go-flags", - "version": "v1.5.0", - "purl": "pkg:golang/github.com/jessevdk/go-flags@v1.5.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/jessevdk/go-flags@v1.5.0" - }, - { - "group": "github.com/josharian", - "name": "intern", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/josharian/intern@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/josharian/intern@v1.0.0" - }, - { - "group": "github.com/json-iterator", - "name": "go", - "version": "v1.1.12", - "purl": "pkg:golang/github.com/json-iterator/go@v1.1.12", - "type": "library", - "bom-ref": "pkg:golang/github.com/json-iterator/go@v1.1.12" - }, - { - "group": "github.com/kr", - "name": "pretty", - "version": "v0.3.1", - "purl": "pkg:golang/github.com/kr/pretty@v0.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/pretty@v0.3.1" - }, - { - "group": "github.com/kr", - "name": "text", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/kr/text@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/text@v0.2.0" - }, - { - "group": "github.com/mailru", - "name": "easyjson", - "version": "v0.7.6", - "purl": "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "type": "library", - "bom-ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6" - }, - { - "group": "github.com/modern-go", - "name": "concurrent", - "version": "v0.0.0-20180306012644-bacd9c7ef1dd", - "purl": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "type": "library", - "bom-ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" - }, - { - "group": "github.com/modern-go", - "name": "reflect2", - "version": "v1.0.2", - "purl": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2" - }, - { - "group": "github.com/munnerz", - "name": "goautoneg", - "version": "v0.0.0-20191010083416-a7dc8b61c822", - "purl": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "type": "library", - "bom-ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822" - }, - { - "group": "github.com/rogpeppe", - "name": "go-internal", - "version": "v1.9.0", - "purl": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" - }, - { - "group": "github.com/spf13", - "name": "pflag", - "version": "v1.0.5", - "purl": "pkg:golang/github.com/spf13/pflag@v1.0.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.5" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.10.0", - "purl": "pkg:golang/golang.org/x/net@v0.10.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.10.0" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20220223155221-ee480838109b", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.8.0", - "purl": "pkg:golang/golang.org/x/sys@v0.8.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.8.0" - }, - { - "group": "golang.org/x", - "name": "term", - "version": "v0.8.0", - "purl": "pkg:golang/golang.org/x/term@v0.8.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/term@v0.8.0" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.9.0", - "purl": "pkg:golang/golang.org/x/text@v0.9.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.9.0" - }, - { - "group": "golang.org/x", - "name": "time", - "version": "v0.0.0-20220210224613-90d013bbcef8", - "purl": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.6.7", - "purl": "pkg:golang/google.golang.org/appengine@v1.6.7", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.7" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.30.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.30.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.30.0" - }, - { - "group": "gopkg.in", - "name": "inf.v0", - "version": "v0.9.1", - "purl": "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1" - }, - { - "group": "gopkg.in", - "name": "yaml.v2", - "version": "v2.4.0", - "purl": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0" - }, - { - "group": "gopkg.in", - "name": "yaml.v3", - "version": "v3.0.1", - "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1" - }, - { - "group": "k8s.io", - "name": "api", - "version": "v0.26.1", - "purl": "pkg:golang/k8s.io/api@v0.26.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/api@v0.26.1" - }, - { - "group": "k8s.io", - "name": "apimachinery", - "version": "v0.26.1", - "purl": "pkg:golang/k8s.io/apimachinery@v0.26.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/apimachinery@v0.26.1" - }, - { - "group": "k8s.io", - "name": "client-go", - "version": "v0.26.1", - "purl": "pkg:golang/k8s.io/client-go@v0.26.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/client-go@v0.26.1" - }, - { - "group": "k8s.io/klog", - "name": "v2", - "version": "v2.80.1", - "purl": "pkg:golang/k8s.io/klog/v2@v2.80.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/klog/v2@v2.80.1" - }, - { - "group": "k8s.io", - "name": "kube-openapi", - "version": "v0.0.0-20221012153701-172d655c2280", - "purl": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280" - }, - { - "group": "k8s.io", - "name": "utils", - "version": "v0.0.0-20221107191617-1a15be271d1d", - "purl": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d" - }, - { - "group": "sigs.k8s.io", - "name": "json", - "version": "v0.0.0-20220713155537-f223a00ba0e2", - "purl": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2" - }, - { - "group": "sigs.k8s.io/structured-merge-diff", - "name": "v4", - "version": "v4.2.3", - "purl": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3" - }, - { - "group": "sigs.k8s.io", - "name": "yaml", - "version": "v1.3.0", - "purl": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0" - } - ], - "dependencies": [ - { - "ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "pkg:golang/github.com/gin-gonic/gin@v1.9.1", - "pkg:golang/github.com/go-logr/logr@v1.2.3", - "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/github.com/imdario/mergo@v0.3.6", - "pkg:golang/github.com/jessevdk/go-flags@v1.5.0", - "pkg:golang/github.com/josharian/intern@v1.0.0", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/kr/pretty@v0.3.1", - "pkg:golang/github.com/kr/text@v0.2.0", - "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/term@v0.8.0", - "pkg:golang/golang.org/x/text@v0.9.0", - "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/protobuf@v1.30.0", - "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/k8s.io/api@v0.26.1", - "pkg:golang/k8s.io/apimachinery@v0.26.1", - "pkg:golang/k8s.io/client-go@v0.26.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-logr/logr@v1.2.3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.5.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.9", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/gofuzz@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/uuid@v1.1.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/imdario/mergo@v0.3.6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/jessevdk/go-flags@v1.5.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/josharian/intern@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/json-iterator/go@v1.1.12", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/kr/pretty@v0.3.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/kr/text@v0.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/spf13/pflag@v1.0.5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.10.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.8.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/term@v0.8.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.9.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.6.7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.30.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/k8s.io/api@v0.26.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/k8s.io/apimachinery@v0.26.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/k8s.io/client-go@v0.26.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/k8s.io/klog/v2@v2.80.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "dependsOn": [] - }, - { - "ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "dependsOn": [] - }, - { - "ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", - "dependsOn": [] - } - ] + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "group": "github.com/RHEcosystemAppEng/SaaSi", + "name": "deployer", + "version": "v0.0.0", + "purl": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", + "type": "application", + "bom-ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0" + } + }, + "components": [ + { + "group": "github.com/gin-gonic", + "name": "gin", + "version": "v1.9.1", + "purl": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1" + }, + { + "group": "github.com/google", + "name": "uuid", + "version": "v1.1.2", + "purl": "pkg:golang/github.com/google/uuid@v1.1.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/uuid@v1.1.2" + }, + { + "group": "github.com/jessevdk", + "name": "go-flags", + "version": "v1.5.0", + "purl": "pkg:golang/github.com/jessevdk/go-flags@v1.5.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/jessevdk/go-flags@v1.5.0" + }, + { + "group": "github.com/kr", + "name": "pretty", + "version": "v0.3.1", + "purl": "pkg:golang/github.com/kr/pretty@v0.3.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/kr/pretty@v0.3.1" + }, + { + "group": "gopkg.in", + "name": "yaml.v2", + "version": "v2.4.0", + "purl": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0" + }, + { + "group": "k8s.io", + "name": "apimachinery", + "version": "v0.26.1", + "purl": "pkg:golang/k8s.io/apimachinery@v0.26.1", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/apimachinery@v0.26.1" + }, + { + "group": "k8s.io", + "name": "client-go", + "version": "v0.26.1", + "purl": "pkg:golang/k8s.io/client-go@v0.26.1", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/client-go@v0.26.1" + } + ], + "dependencies": [ + { + "ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", + "dependsOn": [ + "pkg:golang/github.com/gin-gonic/gin@v1.9.1", + "pkg:golang/github.com/google/uuid@v1.1.2", + "pkg:golang/github.com/jessevdk/go-flags@v1.5.0", + "pkg:golang/github.com/kr/pretty@v0.3.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/k8s.io/apimachinery@v0.26.1", + "pkg:golang/k8s.io/client-go@v0.26.1" + ] + }, + { + "ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/google/uuid@v1.1.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/jessevdk/go-flags@v1.5.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/kr/pretty@v0.3.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/k8s.io/apimachinery@v0.26.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/k8s.io/client-go@v0.26.1", + "dependsOn": [] + } + ] } diff --git a/test/providers/tst_manifests/golang/go_mod_no_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/golang/go_mod_no_ignore/expected_sbom_stack_analysis.json index 0b1fdd12..56234681 100644 --- a/test/providers/tst_manifests/golang/go_mod_no_ignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_no_ignore/expected_sbom_stack_analysis.json @@ -14,22 +14,6 @@ } }, "components": [ - { - "group": "github.com/davecgh", - "name": "go-spew", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1" - }, - { - "group": "github.com/emicklei/go-restful", - "name": "v3", - "version": "v3.9.0", - "purl": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0" - }, { "group": "github.com/gin-gonic", "name": "gin", @@ -38,78 +22,6 @@ "type": "library", "bom-ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1" }, - { - "group": "github.com/go-logr", - "name": "logr", - "version": "v1.2.3", - "purl": "pkg:golang/github.com/go-logr/logr@v1.2.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-logr/logr@v1.2.3" - }, - { - "group": "github.com/go-openapi", - "name": "jsonpointer", - "version": "v0.19.5", - "purl": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5" - }, - { - "group": "github.com/go-openapi", - "name": "jsonreference", - "version": "v0.20.0", - "purl": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0" - }, - { - "group": "github.com/go-openapi", - "name": "swag", - "version": "v0.19.14", - "purl": "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14" - }, - { - "group": "github.com/gogo", - "name": "protobuf", - "version": "v1.3.2", - "purl": "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.5.2", - "purl": "pkg:golang/github.com/golang/protobuf@v1.5.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.2" - }, - { - "group": "github.com/google", - "name": "gnostic", - "version": "v0.5.7-v3refs", - "purl": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.9", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.9", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.9" - }, - { - "group": "github.com/google", - "name": "gofuzz", - "version": "v1.1.0", - "purl": "pkg:golang/github.com/google/gofuzz@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/gofuzz@v1.1.0" - }, { "group": "github.com/google", "name": "uuid", @@ -118,14 +30,6 @@ "type": "library", "bom-ref": "pkg:golang/github.com/google/uuid@v1.1.2" }, - { - "group": "github.com/imdario", - "name": "mergo", - "version": "v0.3.6", - "purl": "pkg:golang/github.com/imdario/mergo@v0.3.6", - "type": "library", - "bom-ref": "pkg:golang/github.com/imdario/mergo@v0.3.6" - }, { "group": "github.com/jessevdk", "name": "go-flags", @@ -134,22 +38,6 @@ "type": "library", "bom-ref": "pkg:golang/github.com/jessevdk/go-flags@v1.5.0" }, - { - "group": "github.com/josharian", - "name": "intern", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/josharian/intern@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/josharian/intern@v1.0.0" - }, - { - "group": "github.com/json-iterator", - "name": "go", - "version": "v1.1.12", - "purl": "pkg:golang/github.com/json-iterator/go@v1.1.12", - "type": "library", - "bom-ref": "pkg:golang/github.com/json-iterator/go@v1.1.12" - }, { "group": "github.com/kr", "name": "pretty", @@ -159,116 +47,108 @@ "bom-ref": "pkg:golang/github.com/kr/pretty@v0.3.1" }, { - "group": "github.com/kr", - "name": "text", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/kr/text@v0.2.0", + "group": "gopkg.in", + "name": "yaml.v2", + "version": "v2.4.0", + "purl": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", "type": "library", - "bom-ref": "pkg:golang/github.com/kr/text@v0.2.0" + "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0" }, { - "group": "github.com/mailru", - "name": "easyjson", - "version": "v0.7.6", - "purl": "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "group": "k8s.io", + "name": "apimachinery", + "version": "v0.26.1", + "purl": "pkg:golang/k8s.io/apimachinery@v0.26.1", "type": "library", - "bom-ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6" + "bom-ref": "pkg:golang/k8s.io/apimachinery@v0.26.1" }, { - "group": "github.com/modern-go", - "name": "concurrent", - "version": "v0.0.0-20180306012644-bacd9c7ef1dd", - "purl": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "group": "k8s.io", + "name": "client-go", + "version": "v0.26.1", + "purl": "pkg:golang/k8s.io/client-go@v0.26.1", "type": "library", - "bom-ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" + "bom-ref": "pkg:golang/k8s.io/client-go@v0.26.1" }, { - "group": "github.com/modern-go", - "name": "reflect2", - "version": "v1.0.2", - "purl": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "group": "github.com/bytedance", + "name": "sonic", + "version": "v1.9.1", + "purl": "pkg:golang/github.com/bytedance/sonic@v1.9.1", "type": "library", - "bom-ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2" + "bom-ref": "pkg:golang/github.com/bytedance/sonic@v1.9.1" }, { - "group": "github.com/munnerz", - "name": "goautoneg", - "version": "v0.0.0-20191010083416-a7dc8b61c822", - "purl": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "group": "github.com/gin-contrib", + "name": "sse", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/gin-contrib/sse@v0.1.0", "type": "library", - "bom-ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822" + "bom-ref": "pkg:golang/github.com/gin-contrib/sse@v0.1.0" }, { - "group": "github.com/rogpeppe", - "name": "go-internal", - "version": "v1.9.0", - "purl": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", + "group": "github.com/go-playground/validator", + "name": "v10", + "version": "v10.14.0", + "purl": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", "type": "library", - "bom-ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" + "bom-ref": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0" }, { - "group": "github.com/spf13", - "name": "pflag", - "version": "v1.0.5", - "purl": "pkg:golang/github.com/spf13/pflag@v1.0.5", + "group": "github.com/goccy", + "name": "go-json", + "version": "v0.10.2", + "purl": "pkg:golang/github.com/goccy/go-json@v0.10.2", "type": "library", - "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.5" + "bom-ref": "pkg:golang/github.com/goccy/go-json@v0.10.2" }, { - "group": "golang.org/x", - "name": "net", - "version": "v0.10.0", - "purl": "pkg:golang/golang.org/x/net@v0.10.0", + "group": "github.com/json-iterator", + "name": "go", + "version": "v1.1.12", + "purl": "pkg:golang/github.com/json-iterator/go@v1.1.12", "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.10.0" + "bom-ref": "pkg:golang/github.com/json-iterator/go@v1.1.12" }, { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20220223155221-ee480838109b", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "group": "github.com/mattn", + "name": "go-isatty", + "version": "v0.0.19", + "purl": "pkg:golang/github.com/mattn/go-isatty@v0.0.19", "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b" + "bom-ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.19" }, { - "group": "golang.org/x", - "name": "sys", - "version": "v0.8.0", - "purl": "pkg:golang/golang.org/x/sys@v0.8.0", + "group": "github.com/pelletier/go-toml", + "name": "v2", + "version": "v2.0.8", + "purl": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.8.0" + "bom-ref": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8" }, { - "group": "golang.org/x", - "name": "term", - "version": "v0.8.0", - "purl": "pkg:golang/golang.org/x/term@v0.8.0", + "group": "github.com/stretchr", + "name": "testify", + "version": "v1.8.3", + "purl": "pkg:golang/github.com/stretchr/testify@v1.8.3", "type": "library", - "bom-ref": "pkg:golang/golang.org/x/term@v0.8.0" + "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.8.3" }, { - "group": "golang.org/x", - "name": "text", - "version": "v0.9.0", - "purl": "pkg:golang/golang.org/x/text@v0.9.0", + "group": "github.com/ugorji/go", + "name": "codec", + "version": "v1.2.11", + "purl": "pkg:golang/github.com/ugorji/go/codec@v1.2.11", "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.9.0" + "bom-ref": "pkg:golang/github.com/ugorji/go/codec@v1.2.11" }, { "group": "golang.org/x", - "name": "time", - "version": "v0.0.0-20220210224613-90d013bbcef8", - "purl": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.6.7", - "purl": "pkg:golang/google.golang.org/appengine@v1.6.7", + "name": "net", + "version": "v0.10.0", + "purl": "pkg:golang/golang.org/x/net@v0.10.0", "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.7" + "bom-ref": "pkg:golang/golang.org/x/net@v0.10.0" }, { "group": "google.golang.org", @@ -280,163 +160,11 @@ }, { "group": "gopkg.in", - "name": "inf.v0", - "version": "v0.9.1", - "purl": "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "name": "yaml.v3", + "version": "v3.0.1", + "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", "type": "library", - "bom-ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1" - }, - { - "group": "gopkg.in", - "name": "yaml.v2", - "version": "v2.4.0", - "purl": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0" - }, - { - "group": "gopkg.in", - "name": "yaml.v3", - "version": "v3.0.1", - "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1" - }, - { - "group": "k8s.io", - "name": "api", - "version": "v0.26.1", - "purl": "pkg:golang/k8s.io/api@v0.26.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/api@v0.26.1" - }, - { - "group": "k8s.io", - "name": "apimachinery", - "version": "v0.26.1", - "purl": "pkg:golang/k8s.io/apimachinery@v0.26.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/apimachinery@v0.26.1" - }, - { - "group": "k8s.io", - "name": "client-go", - "version": "v0.26.1", - "purl": "pkg:golang/k8s.io/client-go@v0.26.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/client-go@v0.26.1" - }, - { - "group": "k8s.io/klog", - "name": "v2", - "version": "v2.80.1", - "purl": "pkg:golang/k8s.io/klog/v2@v2.80.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/klog/v2@v2.80.1" - }, - { - "group": "k8s.io", - "name": "kube-openapi", - "version": "v0.0.0-20221012153701-172d655c2280", - "purl": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280" - }, - { - "group": "k8s.io", - "name": "utils", - "version": "v0.0.0-20221107191617-1a15be271d1d", - "purl": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d" - }, - { - "group": "sigs.k8s.io", - "name": "json", - "version": "v0.0.0-20220713155537-f223a00ba0e2", - "purl": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2" - }, - { - "group": "sigs.k8s.io/structured-merge-diff", - "name": "v4", - "version": "v4.2.3", - "purl": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3" - }, - { - "group": "sigs.k8s.io", - "name": "yaml", - "version": "v1.3.0", - "purl": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0" - }, - { - "group": "github.com/bytedance", - "name": "sonic", - "version": "v1.9.1", - "purl": "pkg:golang/github.com/bytedance/sonic@v1.9.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/bytedance/sonic@v1.9.1" - }, - { - "group": "github.com/gin-contrib", - "name": "sse", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/gin-contrib/sse@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/gin-contrib/sse@v0.1.0" - }, - { - "group": "github.com/go-playground/validator", - "name": "v10", - "version": "v10.14.0", - "purl": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0" - }, - { - "group": "github.com/goccy", - "name": "go-json", - "version": "v0.10.2", - "purl": "pkg:golang/github.com/goccy/go-json@v0.10.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/goccy/go-json@v0.10.2" - }, - { - "group": "github.com/mattn", - "name": "go-isatty", - "version": "v0.0.19", - "purl": "pkg:golang/github.com/mattn/go-isatty@v0.0.19", - "type": "library", - "bom-ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.19" - }, - { - "group": "github.com/pelletier/go-toml", - "name": "v2", - "version": "v2.0.8", - "purl": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", - "type": "library", - "bom-ref": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8" - }, - { - "group": "github.com/stretchr", - "name": "testify", - "version": "v1.8.3", - "purl": "pkg:golang/github.com/stretchr/testify@v1.8.3", - "type": "library", - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.8.3" - }, - { - "group": "github.com/ugorji/go", - "name": "codec", - "version": "v1.2.11", - "purl": "pkg:golang/github.com/ugorji/go/codec@v1.2.11", - "type": "library", - "bom-ref": "pkg:golang/github.com/ugorji/go/codec@v1.2.11" + "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1" }, { "group": "github.com/chenzhuoyu", @@ -446,6 +174,14 @@ "type": "library", "bom-ref": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311" }, + { + "group": "github.com/davecgh", + "name": "go-spew", + "version": "v1.1.1", + "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1" + }, { "group": "github.com/gabriel-vasile", "name": "mimetype", @@ -486,6 +222,22 @@ "type": "library", "bom-ref": "pkg:golang/github.com/leodido/go-urn@v1.2.4" }, + { + "group": "github.com/modern-go", + "name": "concurrent", + "version": "v0.0.0-20180306012644-bacd9c7ef1dd", + "purl": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "type": "library", + "bom-ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" + }, + { + "group": "github.com/modern-go", + "name": "reflect2", + "version": "v1.0.2", + "purl": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2" + }, { "group": "github.com/pmezard", "name": "go-difflib", @@ -518,6 +270,62 @@ "type": "library", "bom-ref": "pkg:golang/golang.org/x/crypto@v0.9.0" }, + { + "group": "golang.org/x", + "name": "sys", + "version": "v0.8.0", + "purl": "pkg:golang/golang.org/x/sys@v0.8.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/sys@v0.8.0" + }, + { + "group": "golang.org/x", + "name": "text", + "version": "v0.9.0", + "purl": "pkg:golang/golang.org/x/text@v0.9.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/text@v0.9.0" + }, + { + "group": "github.com/go-openapi", + "name": "jsonpointer", + "version": "v0.19.5", + "purl": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5" + }, + { + "group": "github.com/go-openapi", + "name": "swag", + "version": "v0.19.14", + "purl": "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14" + }, + { + "group": "github.com/mailru", + "name": "easyjson", + "version": "v0.7.6", + "purl": "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "type": "library", + "bom-ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6" + }, + { + "group": "github.com/go-openapi", + "name": "jsonreference", + "version": "v0.20.0", + "purl": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0" + }, + { + "group": "github.com/kr", + "name": "text", + "version": "v0.2.0", + "purl": "pkg:golang/github.com/kr/text@v0.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/kr/text@v0.2.0" + }, { "group": "github.com/niemeyer", "name": "pretty", @@ -534,6 +342,14 @@ "type": "library", "bom-ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" }, + { + "group": "github.com/gogo", + "name": "protobuf", + "version": "v1.3.2", + "purl": "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2" + }, { "group": "github.com/kisielk", "name": "errcheck", @@ -559,20 +375,44 @@ "bom-ref": "pkg:golang/golang.org/x/tools@v0.6.0" }, { - "group": "github.com/docopt", - "name": "docopt-go", - "version": "v0.0.0-20180111231733-ee0de3bc6815", - "purl": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", + "group": "github.com/golang", + "name": "protobuf", + "version": "v1.5.2", + "purl": "pkg:golang/github.com/golang/protobuf@v1.5.2", "type": "library", - "bom-ref": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815" + "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.2" }, { - "group": "github.com/stoewer", - "name": "go-strcase", - "version": "v1.2.0", - "purl": "pkg:golang/github.com/stoewer/go-strcase@v1.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/stoewer/go-strcase@v1.2.0" + "group": "github.com/google", + "name": "go-cmp", + "version": "v0.5.9", + "purl": "pkg:golang/github.com/google/go-cmp@v0.5.9", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.9" + }, + { + "group": "github.com/google", + "name": "gnostic", + "version": "v0.5.7-v3refs", + "purl": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs" + }, + { + "group": "github.com/docopt", + "name": "docopt-go", + "version": "v0.0.0-20180111231733-ee0de3bc6815", + "purl": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", + "type": "library", + "bom-ref": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815" + }, + { + "group": "github.com/stoewer", + "name": "go-strcase", + "version": "v1.2.0", + "purl": "pkg:golang/github.com/stoewer/go-strcase@v1.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/stoewer/go-strcase@v1.2.0" }, { "group": "golang.org/x", @@ -590,6 +430,22 @@ "type": "library", "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154" }, + { + "group": "github.com/google", + "name": "gofuzz", + "version": "v1.1.0", + "purl": "pkg:golang/github.com/google/gofuzz@v1.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/gofuzz@v1.1.0" + }, + { + "group": "github.com/rogpeppe", + "name": "go-internal", + "version": "v1.9.0", + "purl": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" + }, { "group": "github.com/creack", "name": "pty", @@ -598,6 +454,14 @@ "type": "library", "bom-ref": "pkg:golang/github.com/creack/pty@v1.1.9" }, + { + "group": "github.com/josharian", + "name": "intern", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/josharian/intern@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/josharian/intern@v1.0.0" + }, { "group": "github.com/pkg", "name": "diff", @@ -606,6 +470,22 @@ "type": "library", "bom-ref": "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e" }, + { + "group": "golang.org/x", + "name": "term", + "version": "v0.8.0", + "purl": "pkg:golang/golang.org/x/term@v0.8.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/term@v0.8.0" + }, + { + "group": "golang.org/x", + "name": "oauth2", + "version": "v0.0.0-20220223155221-ee480838109b", + "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b" + }, { "group": "cloud.google.com", "name": "go", @@ -614,6 +494,14 @@ "type": "library", "bom-ref": "pkg:golang/cloud.google.com/go@v0.65.0" }, + { + "group": "google.golang.org", + "name": "appengine", + "version": "v1.6.7", + "purl": "pkg:golang/google.golang.org/appengine@v1.6.7", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.7" + }, { "group": "golang.org/x", "name": "mod", @@ -622,6 +510,78 @@ "type": "library", "bom-ref": "pkg:golang/golang.org/x/mod@v0.8.0" }, + { + "group": "k8s.io", + "name": "api", + "version": "v0.26.1", + "purl": "pkg:golang/k8s.io/api@v0.26.1", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/api@v0.26.1" + }, + { + "group": "github.com/go-logr", + "name": "logr", + "version": "v1.2.3", + "purl": "pkg:golang/github.com/go-logr/logr@v1.2.3", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-logr/logr@v1.2.3" + }, + { + "group": "github.com/spf13", + "name": "pflag", + "version": "v1.0.5", + "purl": "pkg:golang/github.com/spf13/pflag@v1.0.5", + "type": "library", + "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.5" + }, + { + "group": "gopkg.in", + "name": "inf.v0", + "version": "v0.9.1", + "purl": "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1" + }, + { + "group": "k8s.io/klog", + "name": "v2", + "version": "v2.80.1", + "purl": "pkg:golang/k8s.io/klog/v2@v2.80.1", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/klog/v2@v2.80.1" + }, + { + "group": "k8s.io", + "name": "utils", + "version": "v0.0.0-20221107191617-1a15be271d1d", + "purl": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d" + }, + { + "group": "sigs.k8s.io", + "name": "json", + "version": "v0.0.0-20220713155537-f223a00ba0e2", + "purl": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "type": "library", + "bom-ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2" + }, + { + "group": "sigs.k8s.io/structured-merge-diff", + "name": "v4", + "version": "v4.2.3", + "purl": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "type": "library", + "bom-ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3" + }, + { + "group": "sigs.k8s.io", + "name": "yaml", + "version": "v1.3.0", + "purl": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "type": "library", + "bom-ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0" + }, { "group": "github.com/armon", "name": "go-socks5", @@ -662,6 +622,14 @@ "type": "library", "bom-ref": "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f" }, + { + "group": "k8s.io", + "name": "kube-openapi", + "version": "v0.0.0-20221012153701-172d655c2280", + "purl": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280" + }, { "group": "github.com/onsi/ginkgo", "name": "v2", @@ -702,6 +670,14 @@ "type": "library", "bom-ref": "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7" }, + { + "group": "github.com/imdario", + "name": "mergo", + "version": "v0.3.6", + "purl": "pkg:golang/github.com/imdario/mergo@v0.3.6", + "type": "library", + "bom-ref": "pkg:golang/github.com/imdario/mergo@v0.3.6" + }, { "group": "github.com/peterbourgon", "name": "diskv", @@ -710,6 +686,22 @@ "type": "library", "bom-ref": "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible" }, + { + "group": "golang.org/x", + "name": "time", + "version": "v0.0.0-20220210224613-90d013bbcef8", + "purl": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8" + }, + { + "group": "github.com/emicklei/go-restful", + "name": "v3", + "version": "v3.9.0", + "purl": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0" + }, { "group": "github.com/google", "name": "btree", @@ -718,6 +710,14 @@ "type": "library", "bom-ref": "pkg:golang/github.com/google/btree@v1.0.1" }, + { + "group": "github.com/munnerz", + "name": "goautoneg", + "version": "v0.0.0-20191010083416-a7dc8b61c822", + "purl": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "type": "library", + "bom-ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822" + }, { "group": "github.com/NYTimes", "name": "gziphandler", @@ -1104,358 +1104,86 @@ { "group": "rsc.io", "name": "binaryregexp", - "version": "v0.2.0", - "purl": "pkg:golang/rsc.io/binaryregexp@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/rsc.io/binaryregexp@v0.2.0" - }, - { - "group": "github.com/go-gl", - "name": "glfw", - "version": "v0.0.0-20190409004039-e6da0acd62b1", - "purl": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1" - } - ], - "dependencies": [ - { - "ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "pkg:golang/github.com/gin-gonic/gin@v1.9.1", - "pkg:golang/github.com/go-logr/logr@v1.2.3", - "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/github.com/imdario/mergo@v0.3.6", - "pkg:golang/github.com/jessevdk/go-flags@v1.5.0", - "pkg:golang/github.com/josharian/intern@v1.0.0", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/kr/pretty@v0.3.1", - "pkg:golang/github.com/kr/text@v0.2.0", - "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/term@v0.8.0", - "pkg:golang/golang.org/x/text@v0.9.0", - "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/protobuf@v1.30.0", - "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/k8s.io/api@v0.26.1", - "pkg:golang/k8s.io/apimachinery@v0.26.1", - "pkg:golang/k8s.io/client-go@v0.26.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", - "dependsOn": [ - "pkg:golang/github.com/bytedance/sonic@v1.9.1", - "pkg:golang/github.com/gin-contrib/sse@v0.1.0", - "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", - "pkg:golang/github.com/goccy/go-json@v0.10.2", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/mattn/go-isatty@v0.0.19", - "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", - "pkg:golang/github.com/stretchr/testify@v1.8.3", - "pkg:golang/github.com/ugorji/go/codec@v1.2.11", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/google.golang.org/protobuf@v1.30.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", - "pkg:golang/github.com/go-playground/locales@v0.14.1", - "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", - "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", - "pkg:golang/github.com/leodido/go-urn@v1.2.4", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", - "pkg:golang/golang.org/x/arch@v0.3.0", - "pkg:golang/golang.org/x/crypto@v0.9.0", - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/text@v0.9.0" - ] - }, - { - "ref": "pkg:golang/github.com/go-logr/logr@v1.2.3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "dependsOn": [ - "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "pkg:golang/github.com/stretchr/testify@v1.8.3" - ] - }, - { - "ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "dependsOn": [ - "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "pkg:golang/github.com/stretchr/testify@v1.8.3" - ] - }, - { - "ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/kr/text@v0.2.0", - "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", - "pkg:golang/github.com/stretchr/testify@v1.8.3", - "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/github.com/kr/pretty@v0.3.1" - ] - }, - { - "ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "dependsOn": [ - "pkg:golang/github.com/kisielk/errcheck@v1.5.0", - "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "pkg:golang/golang.org/x/tools@v0.6.0" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.5.2", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/google.golang.org/protobuf@v1.30.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/kr/pretty@v0.3.1", - "pkg:golang/github.com/stoewer/go-strcase@v1.2.0", - "pkg:golang/golang.org/x/tools@v0.6.0", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", - "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", - "pkg:golang/google.golang.org/protobuf@v1.30.0", - "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.9", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/github.com/google/gofuzz@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/uuid@v1.1.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/imdario/mergo@v0.3.6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/jessevdk/go-flags@v1.5.0", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.8.0" - ] - }, - { - "ref": "pkg:golang/github.com/josharian/intern@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/json-iterator/go@v1.1.12", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/stretchr/testify@v1.8.3" - ] - }, - { - "ref": "pkg:golang/github.com/kr/pretty@v0.3.1", - "dependsOn": [ - "pkg:golang/github.com/kr/text@v0.2.0", - "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" - ] - }, - { - "ref": "pkg:golang/github.com/kr/text@v0.2.0", - "dependsOn": [ - "pkg:golang/github.com/creack/pty@v1.1.9", - "pkg:golang/github.com/kr/pty@v1.1.1" - ] - }, - { - "ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "dependsOn": [ - "pkg:golang/github.com/josharian/intern@v1.0.0" - ] - }, - { - "ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", - "dependsOn": [ - "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e", - "pkg:golang/gopkg.in/errgo.v2@v2.1.0" - ] - }, - { - "ref": "pkg:golang/github.com/spf13/pflag@v1.0.5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.10.0", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/term@v0.8.0", - "pkg:golang/golang.org/x/text@v0.9.0", - "pkg:golang/golang.org/x/crypto@v0.9.0" - ] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" - ] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.8.0", - "dependsOn": [] + "version": "v0.2.0", + "purl": "pkg:golang/rsc.io/binaryregexp@v0.2.0", + "type": "library", + "bom-ref": "pkg:golang/rsc.io/binaryregexp@v0.2.0" }, { - "ref": "pkg:golang/golang.org/x/term@v0.8.0", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.8.0" - ] - }, + "group": "github.com/go-gl", + "name": "glfw", + "version": "v0.0.0-20190409004039-e6da0acd62b1", + "purl": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1" + } + ], + "dependencies": [ { - "ref": "pkg:golang/golang.org/x/text@v0.9.0", + "ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.6.0", - "pkg:golang/golang.org/x/mod@v0.8.0", - "pkg:golang/golang.org/x/sys@v0.8.0" + "pkg:golang/github.com/gin-gonic/gin@v1.9.1", + "pkg:golang/github.com/google/uuid@v1.1.2", + "pkg:golang/github.com/jessevdk/go-flags@v1.5.0", + "pkg:golang/github.com/kr/pretty@v0.3.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/k8s.io/apimachinery@v0.26.1", + "pkg:golang/k8s.io/client-go@v0.26.1" ] }, { - "ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.6.7", + "ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/bytedance/sonic@v1.9.1", + "pkg:golang/github.com/gin-contrib/sse@v0.1.0", + "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", + "pkg:golang/github.com/goccy/go-json@v0.10.2", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/mattn/go-isatty@v0.0.19", + "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/github.com/ugorji/go/codec@v1.2.11", "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", + "pkg:golang/github.com/go-playground/locales@v0.14.1", + "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", + "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", + "pkg:golang/github.com/leodido/go-urn@v1.2.4", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", + "pkg:golang/golang.org/x/arch@v0.3.0", "pkg:golang/golang.org/x/crypto@v0.9.0", "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/tools@v0.6.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.30.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154" + "pkg:golang/golang.org/x/text@v0.9.0" ] }, { - "ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "ref": "pkg:golang/github.com/google/uuid@v1.1.2", "dependsOn": [] }, { - "ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "ref": "pkg:golang/github.com/jessevdk/go-flags@v1.5.0", "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" + "pkg:golang/golang.org/x/sys@v0.8.0" ] }, { - "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "ref": "pkg:golang/github.com/kr/pretty@v0.3.1", "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" + "pkg:golang/github.com/kr/text@v0.2.0", + "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" ] }, { - "ref": "pkg:golang/k8s.io/api@v0.26.1", + "ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", "dependsOn": [ - "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "pkg:golang/github.com/stretchr/testify@v1.8.3", - "pkg:golang/k8s.io/apimachinery@v0.26.1", - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/go-logr/logr@v1.2.3", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/golang.org/x/text@v0.9.0", - "pkg:golang/google.golang.org/protobuf@v1.30.0", - "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.3.0" + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" ] }, { @@ -1554,163 +1282,183 @@ ] }, { - "ref": "pkg:golang/k8s.io/klog/v2@v2.80.1", - "dependsOn": [ - "pkg:golang/github.com/go-logr/logr@v1.2.3" - ] + "ref": "pkg:golang/github.com/bytedance/sonic@v1.9.1", + "dependsOn": [] }, { - "ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", + "ref": "pkg:golang/github.com/gin-contrib/sse@v0.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/goccy/go-json@v0.10.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/json-iterator/go@v1.1.12", "dependsOn": [ - "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", - "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a", - "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", - "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", - "pkg:golang/github.com/onsi/gomega@v1.23.0", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/github.com/stretchr/testify@v1.8.3", - "pkg:golang/google.golang.org/protobuf@v1.30.0", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.3.0", - "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1", - "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578", "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/go-logr/logr@v1.2.3", - "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/google/gofuzz@v1.1.0", "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/golang.org/x/mod@v0.8.0", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/text@v0.9.0", - "pkg:golang/golang.org/x/tools@v0.6.0", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + "pkg:golang/github.com/stretchr/testify@v1.8.3" ] }, { - "ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.19", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/stretchr/testify@v1.8.3", "dependsOn": [ "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/github.com/go-logr/logr@v1.2.3" + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/github.com/stretchr/objx@v0.1.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0" ] }, { - "ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "ref": "pkg:golang/github.com/ugorji/go/codec@v1.2.11", "dependsOn": [] }, { - "ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "ref": "pkg:golang/golang.org/x/net@v0.10.0", "dependsOn": [ - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/term@v0.8.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/crypto@v0.9.0" ] }, { - "ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "ref": "pkg:golang/google.golang.org/protobuf@v1.30.0", "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0" + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154" ] }, { - "ref": "pkg:golang/github.com/bytedance/sonic@v1.9.1", + "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "dependsOn": [ + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" + ] + }, + { + "ref": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/gin-contrib/sse@v0.1.0", + "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", + "ref": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/goccy/go-json@v0.10.2", + "ref": "pkg:golang/github.com/go-playground/locales@v0.14.1", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.19", + "ref": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", + "ref": "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/stretchr/testify@v1.8.3", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/objx@v0.1.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0" - ] + "ref": "pkg:golang/github.com/leodido/go-urn@v1.2.4", + "dependsOn": [] }, { - "ref": "pkg:golang/github.com/ugorji/go/codec@v1.2.11", + "ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", + "ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", + "ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/go-playground/locales@v0.14.1", + "ref": "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", + "ref": "pkg:golang/golang.org/x/arch@v0.3.0", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", + "ref": "pkg:golang/golang.org/x/crypto@v0.9.0", + "dependsOn": [ + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/net@v0.10.0" + ] + }, + { + "ref": "pkg:golang/golang.org/x/sys@v0.8.0", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/leodido/go-urn@v1.2.4", - "dependsOn": [] + "ref": "pkg:golang/golang.org/x/text@v0.9.0", + "dependsOn": [ + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/golang.org/x/sys@v0.8.0" + ] + }, + { + "ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "dependsOn": [ + "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/stretchr/testify@v1.8.3" + ] }, { - "ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "dependsOn": [] + "ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/kr/text@v0.2.0", + "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/github.com/kr/pretty@v0.3.1" + ] }, { - "ref": "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", - "dependsOn": [] + "ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "dependsOn": [ + "pkg:golang/github.com/josharian/intern@v1.0.0" + ] }, { - "ref": "pkg:golang/golang.org/x/arch@v0.3.0", - "dependsOn": [] + "ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", + "dependsOn": [ + "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "pkg:golang/github.com/stretchr/testify@v1.8.3" + ] }, { - "ref": "pkg:golang/golang.org/x/crypto@v0.9.0", + "ref": "pkg:golang/github.com/kr/text@v0.2.0", "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/net@v0.10.0" + "pkg:golang/github.com/creack/pty@v1.1.9", + "pkg:golang/github.com/kr/pty@v1.1.1" ] }, { @@ -1723,6 +1471,14 @@ "ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", "dependsOn": [] }, + { + "ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "dependsOn": [ + "pkg:golang/github.com/kisielk/errcheck@v1.5.0", + "pkg:golang/github.com/kisielk/gotool@v1.0.0", + "pkg:golang/golang.org/x/tools@v0.6.0" + ] + }, { "ref": "pkg:golang/github.com/kisielk/errcheck@v1.5.0", "dependsOn": [ @@ -1744,6 +1500,35 @@ "pkg:golang/google.golang.org/appengine@v1.6.7" ] }, + { + "ref": "pkg:golang/github.com/golang/protobuf@v1.5.2", + "dependsOn": [ + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/google.golang.org/protobuf@v1.30.0" + ] + }, + { + "ref": "pkg:golang/github.com/google/go-cmp@v0.5.9", + "dependsOn": [ + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + ] + }, + { + "ref": "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/kr/pretty@v0.3.1", + "pkg:golang/github.com/stoewer/go-strcase@v1.2.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1" + ] + }, { "ref": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", "dependsOn": [] @@ -1772,14 +1557,44 @@ "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" ] }, + { + "ref": "pkg:golang/github.com/google/gofuzz@v1.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", + "dependsOn": [ + "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e", + "pkg:golang/gopkg.in/errgo.v2@v2.1.0" + ] + }, { "ref": "pkg:golang/github.com/creack/pty@v1.1.9", "dependsOn": [] }, + { + "ref": "pkg:golang/github.com/josharian/intern@v1.0.0", + "dependsOn": [] + }, { "ref": "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e", "dependsOn": [] }, + { + "ref": "pkg:golang/golang.org/x/term@v0.8.0", + "dependsOn": [ + "pkg:golang/golang.org/x/sys@v0.8.0" + ] + }, + { + "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.65.0", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" + ] + }, { "ref": "pkg:golang/cloud.google.com/go@v0.65.0", "dependsOn": [ @@ -1818,6 +1633,17 @@ "pkg:golang/rsc.io/binaryregexp@v0.2.0" ] }, + { + "ref": "pkg:golang/google.golang.org/appengine@v1.6.7", + "dependsOn": [ + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/crypto@v0.9.0", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/tools@v0.6.0" + ] + }, { "ref": "pkg:golang/golang.org/x/mod@v0.8.0", "dependsOn": [ @@ -1826,6 +1652,81 @@ "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" ] }, + { + "ref": "pkg:golang/k8s.io/api@v0.26.1", + "dependsOn": [ + "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/k8s.io/apimachinery@v0.26.1", + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/go-logr/logr@v1.2.3", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/github.com/spf13/pflag@v1.0.5", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/k8s.io/klog/v2@v2.80.1", + "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "pkg:golang/sigs.k8s.io/yaml@v1.3.0" + ] + }, + { + "ref": "pkg:golang/github.com/go-logr/logr@v1.2.3", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/spf13/pflag@v1.0.5", + "dependsOn": [] + }, + { + "ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/k8s.io/klog/v2@v2.80.1", + "dependsOn": [ + "pkg:golang/github.com/go-logr/logr@v1.2.3" + ] + }, + { + "ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/k8s.io/klog/v2@v2.80.1", + "pkg:golang/github.com/go-logr/logr@v1.2.3" + ] + }, + { + "ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "dependsOn": [ + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" + ] + }, + { + "ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0" + ] + }, { "ref": "pkg:golang/github.com/armon/go-socks5@v0.0.0-20160902184237-e75332964ef5", "dependsOn": [] @@ -1846,6 +1747,51 @@ "ref": "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f", "dependsOn": [] }, + { + "ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", + "dependsOn": [ + "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", + "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a", + "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", + "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", + "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/gnostic@v0.5.7-v3refs", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/google/uuid@v1.1.2", + "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", + "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", + "pkg:golang/github.com/onsi/gomega@v1.23.0", + "pkg:golang/github.com/spf13/pflag@v1.0.5", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c", + "pkg:golang/k8s.io/klog/v2@v2.80.1", + "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1", + "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578", + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/go-logr/logr@v1.2.3", + "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + ] + }, { "ref": "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", "dependsOn": [] @@ -1866,14 +1812,30 @@ "ref": "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7", "dependsOn": [] }, + { + "ref": "pkg:golang/github.com/imdario/mergo@v0.3.6", + "dependsOn": [] + }, { "ref": "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible", "dependsOn": [] }, + { + "ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", + "dependsOn": [] + }, { "ref": "pkg:golang/github.com/google/btree@v1.0.1", "dependsOn": [] }, + { + "ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "dependsOn": [] + }, { "ref": "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", "dependsOn": [] diff --git a/test/providers/tst_manifests/golang/go_mod_test_ignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/golang/go_mod_test_ignore/expected_sbom_component_analysis.json index e3e18533..bb56585a 100644 --- a/test/providers/tst_manifests/golang/go_mod_test_ignore/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_test_ignore/expected_sbom_component_analysis.json @@ -1,454 +1,129 @@ { - "bomFormat": "CycloneDX", - "specVersion": "1.4", - "version": 1, - "metadata": { - "timestamp": "2023-08-07T00:00:00.000Z", - "component": { - "group": "github.com/GoogleCloudPlatform/microservices-demo/src", - "name": "checkoutservice", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0" - } - }, - "components": [ - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.100.2", - "purl": "pkg:golang/cloud.google.com/go@v0.100.2", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.100.2" - }, - { - "group": "cloud.google.com/go", - "name": "compute", - "version": "v1.6.1", - "purl": "pkg:golang/cloud.google.com/go/compute@v1.6.1", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/compute@v1.6.1" - }, - { - "group": "cloud.google.com/go", - "name": "monitoring", - "version": "v1.1.0", - "purl": "pkg:golang/cloud.google.com/go/monitoring@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/monitoring@v1.1.0" - }, - { - "group": "cloud.google.com/go", - "name": "profiler", - "version": "v0.3.0", - "purl": "pkg:golang/cloud.google.com/go/profiler@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/profiler@v0.3.0" - }, - { - "group": "cloud.google.com/go", - "name": "trace", - "version": "v1.0.0", - "purl": "pkg:golang/cloud.google.com/go/trace@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/trace@v1.0.0" - }, - { - "group": "contrib.go.opencensus.io/exporter", - "name": "jaeger", - "version": "v0.2.1", - "purl": "pkg:golang/contrib.go.opencensus.io/exporter/jaeger@v0.2.1", - "type": "library", - "bom-ref": "pkg:golang/contrib.go.opencensus.io/exporter/jaeger@v0.2.1" - }, - { - "group": "contrib.go.opencensus.io/exporter", - "name": "stackdriver", - "version": "v0.13.12", - "purl": "pkg:golang/contrib.go.opencensus.io/exporter/stackdriver@v0.13.12", - "type": "library", - "bom-ref": "pkg:golang/contrib.go.opencensus.io/exporter/stackdriver@v0.13.12" - }, - { - "group": "github.com/aws", - "name": "aws-sdk-go", - "version": "v1.43.31", - "purl": "pkg:golang/github.com/aws/aws-sdk-go@v1.43.31", - "type": "library", - "bom-ref": "pkg:golang/github.com/aws/aws-sdk-go@v1.43.31" - }, - { - "group": "github.com/census-instrumentation", - "name": "opencensus-proto", - "version": "v0.3.0", - "purl": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0" - }, - { - "group": "github.com/cespare", - "name": "xxhash", - "version": "v1.1.0", - "purl": "pkg:golang/github.com/cespare/xxhash@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/cespare/xxhash@v1.1.0" - }, - { - "group": "github.com/cncf/udpa", - "name": "go", - "version": "v0.0.0-20210930031921-04548b0d99d4", - "purl": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", - "type": "library", - "bom-ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4" - }, - { - "group": "github.com/cncf/xds", - "name": "go", - "version": "v0.0.0-20211011173535-cb28da3451f1", - "purl": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", - "type": "library", - "bom-ref": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1" - }, - { - "group": "github.com/envoyproxy", - "name": "go-control-plane", - "version": "v0.10.2-0.20220325020618-49ff273808a1", - "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1", - "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1" - }, - { - "group": "github.com/envoyproxy", - "name": "protoc-gen-validate", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0" - }, - { - "group": "github.com/golang", - "name": "groupcache", - "version": "v0.0.0-20210331224755-41bb18bfe9da", - "purl": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.5.2", - "purl": "pkg:golang/github.com/golang/protobuf@v1.5.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.2" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.8", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.8", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.8" - }, - { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20220412212628-83db2b799d1f", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f" - }, - { - "group": "github.com/google", - "name": "uuid", - "version": "v1.3.0", - "purl": "pkg:golang/github.com/google/uuid@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/uuid@v1.3.0" - }, - { - "group": "github.com/googleapis/gax-go", - "name": "v2", - "version": "v2.4.0", - "purl": "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0" - }, - { - "group": "github.com/jmespath", - "name": "go-jmespath", - "version": "v0.4.0", - "purl": "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0" - }, - { - "group": "github.com/prometheus", - "name": "prometheus", - "version": "v2.5.0+incompatible", - "purl": "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible", - "type": "library", - "bom-ref": "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible" - }, - { - "group": "github.com/sirupsen", - "name": "logrus", - "version": "v1.8.1", - "purl": "pkg:golang/github.com/sirupsen/logrus@v1.8.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/sirupsen/logrus@v1.8.1" - }, - { - "group": "github.com/uber", - "name": "jaeger-client-go", - "version": "v2.25.0+incompatible", - "purl": "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible", - "type": "library", - "bom-ref": "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20220802222814-0bcc04d9c69b", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20220411215720-9780585627b5", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5" - }, - { - "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20210220032951-036812b2e83c", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.7", - "purl": "pkg:golang/golang.org/x/text@v0.3.7", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.7" - }, - { - "group": "google.golang.org", - "name": "api", - "version": "v0.78.0", - "purl": "pkg:golang/google.golang.org/api@v0.78.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/api@v0.78.0" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.6.7", - "purl": "pkg:golang/google.golang.org/appengine@v1.6.7", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.7" - }, - { - "group": "google.golang.org", - "name": "genproto", - "version": "v0.0.0-20220518221133-4f43b3371335", - "purl": "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335" - }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.48.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.48.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.48.0" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.28.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.28.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.28.0" - } - ], - "dependencies": [ - { - "ref": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.100.2", - "pkg:golang/cloud.google.com/go/compute@v1.6.1", - "pkg:golang/cloud.google.com/go/monitoring@v1.1.0", - "pkg:golang/cloud.google.com/go/profiler@v0.3.0", - "pkg:golang/cloud.google.com/go/trace@v1.0.0", - "pkg:golang/contrib.go.opencensus.io/exporter/jaeger@v0.2.1", - "pkg:golang/contrib.go.opencensus.io/exporter/stackdriver@v0.13.12", - "pkg:golang/github.com/aws/aws-sdk-go@v1.43.31", - "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0", - "pkg:golang/github.com/cespare/xxhash@v1.1.0", - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", - "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.8", - "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f", - "pkg:golang/github.com/google/uuid@v1.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", - "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0", - "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible", - "pkg:golang/github.com/sirupsen/logrus@v1.8.1", - "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible", - "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/text@v0.3.7", - "pkg:golang/google.golang.org/api@v0.78.0", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", - "pkg:golang/google.golang.org/grpc@v1.48.0", - "pkg:golang/google.golang.org/protobuf@v1.28.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.100.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go/compute@v1.6.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go/monitoring@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go/profiler@v0.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/cloud.google.com/go/trace@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/contrib.go.opencensus.io/exporter/jaeger@v0.2.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/contrib.go.opencensus.io/exporter/stackdriver@v0.13.12", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/aws/aws-sdk-go@v1.43.31", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/cespare/xxhash@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.5.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/uuid@v1.3.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/sirupsen/logrus@v1.8.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/api@v0.78.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.6.7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.48.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.28.0", - "dependsOn": [] - } - ] + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "group": "github.com/GoogleCloudPlatform/microservices-demo/src", + "name": "checkoutservice", + "version": "v0.0.0", + "purl": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0", + "type": "application", + "bom-ref": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0" + } + }, + "components": [ + { + "group": "cloud.google.com/go", + "name": "profiler", + "version": "v0.3.0", + "purl": "pkg:golang/cloud.google.com/go/profiler@v0.3.0", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go/profiler@v0.3.0" + }, + { + "group": "contrib.go.opencensus.io/exporter", + "name": "jaeger", + "version": "v0.2.1", + "purl": "pkg:golang/contrib.go.opencensus.io/exporter/jaeger@v0.2.1", + "type": "library", + "bom-ref": "pkg:golang/contrib.go.opencensus.io/exporter/jaeger@v0.2.1" + }, + { + "group": "contrib.go.opencensus.io/exporter", + "name": "stackdriver", + "version": "v0.13.12", + "purl": "pkg:golang/contrib.go.opencensus.io/exporter/stackdriver@v0.13.12", + "type": "library", + "bom-ref": "pkg:golang/contrib.go.opencensus.io/exporter/stackdriver@v0.13.12" + }, + { + "group": "github.com/golang", + "name": "protobuf", + "version": "v1.5.2", + "purl": "pkg:golang/github.com/golang/protobuf@v1.5.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.2" + }, + { + "group": "github.com/google", + "name": "uuid", + "version": "v1.3.0", + "purl": "pkg:golang/github.com/google/uuid@v1.3.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/uuid@v1.3.0" + }, + { + "group": "github.com/sirupsen", + "name": "logrus", + "version": "v1.8.1", + "purl": "pkg:golang/github.com/sirupsen/logrus@v1.8.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/sirupsen/logrus@v1.8.1" + }, + { + "group": "golang.org/x", + "name": "net", + "version": "v0.0.0-20220802222814-0bcc04d9c69b", + "purl": "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b" + }, + { + "group": "google.golang.org", + "name": "grpc", + "version": "v1.48.0", + "purl": "pkg:golang/google.golang.org/grpc@v1.48.0", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/grpc@v1.48.0" + } + ], + "dependencies": [ + { + "ref": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0", + "dependsOn": [ + "pkg:golang/cloud.google.com/go/profiler@v0.3.0", + "pkg:golang/contrib.go.opencensus.io/exporter/jaeger@v0.2.1", + "pkg:golang/contrib.go.opencensus.io/exporter/stackdriver@v0.13.12", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/uuid@v1.3.0", + "pkg:golang/github.com/sirupsen/logrus@v1.8.1", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/google.golang.org/grpc@v1.48.0" + ] + }, + { + "ref": "pkg:golang/cloud.google.com/go/profiler@v0.3.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/contrib.go.opencensus.io/exporter/jaeger@v0.2.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/contrib.go.opencensus.io/exporter/stackdriver@v0.13.12", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/golang/protobuf@v1.5.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/google/uuid@v1.3.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/sirupsen/logrus@v1.8.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "dependsOn": [] + }, + { + "ref": "pkg:golang/google.golang.org/grpc@v1.48.0", + "dependsOn": [] + } + ] } diff --git a/test/providers/tst_manifests/golang/go_mod_test_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/golang/go_mod_test_ignore/expected_sbom_stack_analysis.json index 802bea64..59599edb 100644 --- a/test/providers/tst_manifests/golang/go_mod_test_ignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_test_ignore/expected_sbom_stack_analysis.json @@ -14,30 +14,6 @@ } }, "components": [ - { - "group": "cloud.google.com", - "name": "go", - "version": "v0.100.2", - "purl": "pkg:golang/cloud.google.com/go@v0.100.2", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go@v0.100.2" - }, - { - "group": "cloud.google.com/go", - "name": "compute", - "version": "v1.6.1", - "purl": "pkg:golang/cloud.google.com/go/compute@v1.6.1", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/compute@v1.6.1" - }, - { - "group": "cloud.google.com/go", - "name": "monitoring", - "version": "v1.1.0", - "purl": "pkg:golang/cloud.google.com/go/monitoring@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/monitoring@v1.1.0" - }, { "group": "cloud.google.com/go", "name": "profiler", @@ -46,14 +22,6 @@ "type": "library", "bom-ref": "pkg:golang/cloud.google.com/go/profiler@v0.3.0" }, - { - "group": "cloud.google.com/go", - "name": "trace", - "version": "v1.0.0", - "purl": "pkg:golang/cloud.google.com/go/trace@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/cloud.google.com/go/trace@v1.0.0" - }, { "group": "contrib.go.opencensus.io/exporter", "name": "jaeger", @@ -71,76 +39,60 @@ "bom-ref": "pkg:golang/contrib.go.opencensus.io/exporter/stackdriver@v0.13.12" }, { - "group": "github.com/aws", - "name": "aws-sdk-go", - "version": "v1.43.31", - "purl": "pkg:golang/github.com/aws/aws-sdk-go@v1.43.31", - "type": "library", - "bom-ref": "pkg:golang/github.com/aws/aws-sdk-go@v1.43.31" - }, - { - "group": "github.com/census-instrumentation", - "name": "opencensus-proto", - "version": "v0.3.0", - "purl": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0" - }, - { - "group": "github.com/cespare", - "name": "xxhash", - "version": "v1.1.0", - "purl": "pkg:golang/github.com/cespare/xxhash@v1.1.0", + "group": "github.com/golang", + "name": "protobuf", + "version": "v1.5.2", + "purl": "pkg:golang/github.com/golang/protobuf@v1.5.2", "type": "library", - "bom-ref": "pkg:golang/github.com/cespare/xxhash@v1.1.0" + "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.2" }, { - "group": "github.com/cncf/udpa", - "name": "go", - "version": "v0.0.0-20210930031921-04548b0d99d4", - "purl": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", + "group": "github.com/google", + "name": "uuid", + "version": "v1.3.0", + "purl": "pkg:golang/github.com/google/uuid@v1.3.0", "type": "library", - "bom-ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4" + "bom-ref": "pkg:golang/github.com/google/uuid@v1.3.0" }, { - "group": "github.com/cncf/xds", - "name": "go", - "version": "v0.0.0-20211011173535-cb28da3451f1", - "purl": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", + "group": "github.com/sirupsen", + "name": "logrus", + "version": "v1.8.1", + "purl": "pkg:golang/github.com/sirupsen/logrus@v1.8.1", "type": "library", - "bom-ref": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1" + "bom-ref": "pkg:golang/github.com/sirupsen/logrus@v1.8.1" }, { - "group": "github.com/envoyproxy", - "name": "go-control-plane", - "version": "v0.10.2-0.20220325020618-49ff273808a1", - "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1", + "group": "golang.org/x", + "name": "net", + "version": "v0.0.0-20220802222814-0bcc04d9c69b", + "purl": "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1" + "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b" }, { - "group": "github.com/envoyproxy", - "name": "protoc-gen-validate", - "version": "v0.1.0", - "purl": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "group": "google.golang.org", + "name": "grpc", + "version": "v1.48.0", + "purl": "pkg:golang/google.golang.org/grpc@v1.48.0", "type": "library", - "bom-ref": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0" + "bom-ref": "pkg:golang/google.golang.org/grpc@v1.48.0" }, { - "group": "github.com/golang", - "name": "groupcache", - "version": "v0.0.0-20210331224755-41bb18bfe9da", - "purl": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "group": "cloud.google.com", + "name": "go", + "version": "v0.100.2", + "purl": "pkg:golang/cloud.google.com/go@v0.100.2", "type": "library", - "bom-ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da" + "bom-ref": "pkg:golang/cloud.google.com/go@v0.100.2" }, { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.5.2", - "purl": "pkg:golang/github.com/golang/protobuf@v1.5.2", + "group": "cloud.google.com/go", + "name": "compute", + "version": "v1.6.1", + "purl": "pkg:golang/cloud.google.com/go/compute@v1.6.1", "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.2" + "bom-ref": "pkg:golang/cloud.google.com/go/compute@v1.6.1" }, { "group": "github.com/google", @@ -151,20 +103,12 @@ "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.8" }, { - "group": "github.com/google", - "name": "pprof", - "version": "v0.0.0-20220412212628-83db2b799d1f", - "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f" - }, - { - "group": "github.com/google", - "name": "uuid", - "version": "v1.3.0", - "purl": "pkg:golang/github.com/google/uuid@v1.3.0", + "group": "github.com/google/martian", + "name": "v3", + "version": "v3.2.1", + "purl": "pkg:golang/github.com/google/martian/v3@v3.2.1", "type": "library", - "bom-ref": "pkg:golang/github.com/google/uuid@v1.3.0" + "bom-ref": "pkg:golang/github.com/google/martian/v3@v3.2.1" }, { "group": "github.com/googleapis/gax-go", @@ -175,44 +119,11 @@ "bom-ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0" }, { - "group": "github.com/jmespath", - "name": "go-jmespath", - "version": "v0.4.0", - "purl": "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0" - }, - { - "group": "github.com/prometheus", - "name": "prometheus", - "version": "v2.5.0+incompatible", - "purl": "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible", - "type": "library", - "bom-ref": "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible" - }, - { - "group": "github.com/sirupsen", - "name": "logrus", - "version": "v1.8.1", - "purl": "pkg:golang/github.com/sirupsen/logrus@v1.8.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/sirupsen/logrus@v1.8.1" - }, - { - "group": "github.com/uber", - "name": "jaeger-client-go", - "version": "v2.25.0+incompatible", - "purl": "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible", - "type": "library", - "bom-ref": "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.0.0-20220802222814-0bcc04d9c69b", - "purl": "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "name": "go.opencensus.io", + "version": "v0.23.0", + "purl": "pkg:golang/go.opencensus.io@v0.23.0", "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b" + "bom-ref": "pkg:golang/go.opencensus.io@v0.23.0" }, { "group": "golang.org/x", @@ -224,19 +135,11 @@ }, { "group": "golang.org/x", - "name": "sync", - "version": "v0.0.0-20210220032951-036812b2e83c", - "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.3.7", - "purl": "pkg:golang/golang.org/x/text@v0.3.7", + "name": "xerrors", + "version": "v0.0.0-20220411194840-2f41105eb62f", + "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f", "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.3.7" + "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f" }, { "group": "google.golang.org", @@ -246,14 +149,6 @@ "type": "library", "bom-ref": "pkg:golang/google.golang.org/api@v0.78.0" }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.6.7", - "purl": "pkg:golang/google.golang.org/appengine@v1.6.7", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.7" - }, { "group": "google.golang.org", "name": "genproto", @@ -262,14 +157,6 @@ "type": "library", "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335" }, - { - "group": "google.golang.org", - "name": "grpc", - "version": "v1.48.0", - "purl": "pkg:golang/google.golang.org/grpc@v1.48.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/grpc@v1.48.0" - }, { "group": "google.golang.org", "name": "protobuf", @@ -279,27 +166,12 @@ "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.28.0" }, { - "group": "github.com/google/martian", - "name": "v3", - "version": "v3.2.1", - "purl": "pkg:golang/github.com/google/martian/v3@v3.2.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/martian/v3@v3.2.1" - }, - { - "name": "go.opencensus.io", - "version": "v0.23.0", - "purl": "pkg:golang/go.opencensus.io@v0.23.0", - "type": "library", - "bom-ref": "pkg:golang/go.opencensus.io@v0.23.0" - }, - { - "group": "golang.org/x", - "name": "xerrors", - "version": "v0.0.0-20220411194840-2f41105eb62f", - "purl": "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f", + "group": "cloud.google.com/go", + "name": "monitoring", + "version": "v1.1.0", + "purl": "pkg:golang/cloud.google.com/go/monitoring@v1.1.0", "type": "library", - "bom-ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f" + "bom-ref": "pkg:golang/cloud.google.com/go/monitoring@v1.1.0" }, { "group": "cloud.google.com/go", @@ -317,6 +189,54 @@ "type": "library", "bom-ref": "pkg:golang/github.com/golang/mock@v1.6.0" }, + { + "group": "github.com/google", + "name": "pprof", + "version": "v0.0.0-20220412212628-83db2b799d1f", + "purl": "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f" + }, + { + "group": "cloud.google.com/go", + "name": "trace", + "version": "v1.0.0", + "purl": "pkg:golang/cloud.google.com/go/trace@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/cloud.google.com/go/trace@v1.0.0" + }, + { + "group": "github.com/uber", + "name": "jaeger-client-go", + "version": "v2.25.0+incompatible", + "purl": "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible", + "type": "library", + "bom-ref": "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible" + }, + { + "group": "golang.org/x", + "name": "sync", + "version": "v0.0.0-20210220032951-036812b2e83c", + "purl": "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c" + }, + { + "group": "github.com/aws", + "name": "aws-sdk-go", + "version": "v1.43.31", + "purl": "pkg:golang/github.com/aws/aws-sdk-go@v1.43.31", + "type": "library", + "bom-ref": "pkg:golang/github.com/aws/aws-sdk-go@v1.43.31" + }, + { + "group": "github.com/census-instrumentation", + "name": "opencensus-proto", + "version": "v0.3.0", + "purl": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0" + }, { "group": "github.com/jstemmer", "name": "go-junit-report", @@ -325,6 +245,14 @@ "type": "library", "bom-ref": "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1" }, + { + "group": "github.com/prometheus", + "name": "prometheus", + "version": "v2.5.0+incompatible", + "purl": "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible", + "type": "library", + "bom-ref": "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible" + }, { "group": "golang.org/x", "name": "lint", @@ -349,13 +277,29 @@ "type": "library", "bom-ref": "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4" }, + { + "group": "github.com/jmespath", + "name": "go-jmespath", + "version": "v0.4.0", + "purl": "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0" + }, { "group": "github.com/pkg", "name": "errors", "version": "v0.9.1", "purl": "pkg:golang/github.com/pkg/errors@v0.9.1", "type": "library", - "bom-ref": "pkg:golang/github.com/pkg/errors@v0.9.1" + "bom-ref": "pkg:golang/github.com/pkg/errors@v0.9.1" + }, + { + "group": "github.com/cespare", + "name": "xxhash", + "version": "v1.1.0", + "purl": "pkg:golang/github.com/cespare/xxhash@v1.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/cespare/xxhash@v1.1.0" }, { "group": "github.com/OneOfOne", @@ -373,6 +317,38 @@ "type": "library", "bom-ref": "pkg:golang/github.com/spaolacci/murmur3@v0.0.0-20180118202830-f09979ecbc72" }, + { + "group": "github.com/cncf/udpa", + "name": "go", + "version": "v0.0.0-20210930031921-04548b0d99d4", + "purl": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", + "type": "library", + "bom-ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4" + }, + { + "group": "github.com/cncf/xds", + "name": "go", + "version": "v0.0.0-20211011173535-cb28da3451f1", + "purl": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", + "type": "library", + "bom-ref": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1" + }, + { + "group": "github.com/envoyproxy", + "name": "protoc-gen-validate", + "version": "v0.1.0", + "purl": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0" + }, + { + "group": "github.com/envoyproxy", + "name": "go-control-plane", + "version": "v0.10.2-0.20220325020618-49ff273808a1", + "purl": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1", + "type": "library", + "bom-ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1" + }, { "group": "github.com/prometheus", "name": "client_model", @@ -461,6 +437,22 @@ "type": "library", "bom-ref": "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211" }, + { + "group": "golang.org/x", + "name": "text", + "version": "v0.3.7", + "purl": "pkg:golang/golang.org/x/text@v0.3.7", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/text@v0.3.7" + }, + { + "group": "google.golang.org", + "name": "appengine", + "version": "v1.6.7", + "purl": "pkg:golang/google.golang.org/appengine@v1.6.7", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.7" + }, { "group": "github.com/cespare/xxhash", "name": "v2", @@ -493,6 +485,14 @@ "type": "library", "bom-ref": "pkg:golang/google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1.0" }, + { + "group": "github.com/golang", + "name": "groupcache", + "version": "v0.0.0-20210331224755-41bb18bfe9da", + "purl": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "type": "library", + "bom-ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da" + }, { "group": "cloud.google.com/go", "name": "iam", @@ -810,102 +810,14 @@ { "ref": "pkg:golang/github.com/GoogleCloudPlatform/microservices-demo/src/checkoutservice@v0.0.0", "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.100.2", - "pkg:golang/cloud.google.com/go/compute@v1.6.1", - "pkg:golang/cloud.google.com/go/monitoring@v1.1.0", "pkg:golang/cloud.google.com/go/profiler@v0.3.0", - "pkg:golang/cloud.google.com/go/trace@v1.0.0", "pkg:golang/contrib.go.opencensus.io/exporter/jaeger@v0.2.1", "pkg:golang/contrib.go.opencensus.io/exporter/stackdriver@v0.13.12", - "pkg:golang/github.com/aws/aws-sdk-go@v1.43.31", - "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0", - "pkg:golang/github.com/cespare/xxhash@v1.1.0", - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", - "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.8", - "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f", "pkg:golang/github.com/google/uuid@v1.3.0", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", - "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0", - "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible", "pkg:golang/github.com/sirupsen/logrus@v1.8.1", - "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible", - "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/text@v0.3.7", - "pkg:golang/google.golang.org/api@v0.78.0", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", - "pkg:golang/google.golang.org/grpc@v1.48.0", - "pkg:golang/google.golang.org/protobuf@v1.28.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go@v0.100.2", - "dependsOn": [ - "pkg:golang/cloud.google.com/go/compute@v1.6.1", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.8", - "pkg:golang/github.com/google/martian/v3@v3.2.1", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", - "pkg:golang/go.opencensus.io@v0.23.0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f", - "pkg:golang/google.golang.org/api@v0.78.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", - "pkg:golang/google.golang.org/grpc@v1.48.0", - "pkg:golang/google.golang.org/protobuf@v1.28.0", - "pkg:golang/cloud.google.com/go/storage@v1.22.1", - "pkg:golang/github.com/golang/mock@v1.6.0", - "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f", - "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", - "pkg:golang/golang.org/x/text@v0.3.7", - "pkg:golang/golang.org/x/tools@v0.1.5", - "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", - "pkg:golang/cloud.google.com/go/datastore@v1.1.0", - "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", - "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", - "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", - "pkg:golang/golang.org/x/mod@v0.4.2", - "pkg:golang/github.com/google/btree@v1.0.0", - "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0", - "pkg:golang/rsc.io/binaryregexp@v0.2.0" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/compute@v1.6.1", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.100.2", - "pkg:golang/github.com/google/go-cmp@v0.5.8", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", - "pkg:golang/google.golang.org/api@v0.78.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", - "pkg:golang/google.golang.org/grpc@v1.48.0", - "pkg:golang/google.golang.org/protobuf@v1.28.0", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f" - ] - }, - { - "ref": "pkg:golang/cloud.google.com/go/monitoring@v1.1.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.100.2", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", - "pkg:golang/google.golang.org/api@v0.78.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", - "pkg:golang/google.golang.org/grpc@v1.48.0", - "pkg:golang/google.golang.org/protobuf@v1.28.0" + "pkg:golang/google.golang.org/grpc@v1.48.0" ] }, { @@ -924,18 +836,6 @@ "pkg:golang/google.golang.org/grpc@v1.48.0" ] }, - { - "ref": "pkg:golang/cloud.google.com/go/trace@v1.0.0", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.100.2", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", - "pkg:golang/google.golang.org/api@v0.78.0", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", - "pkg:golang/google.golang.org/grpc@v1.48.0", - "pkg:golang/google.golang.org/protobuf@v1.28.0" - ] - }, { "ref": "pkg:golang/contrib.go.opencensus.io/exporter/jaeger@v0.2.1", "dependsOn": [ @@ -970,72 +870,110 @@ ] }, { - "ref": "pkg:golang/github.com/aws/aws-sdk-go@v1.43.31", + "ref": "pkg:golang/github.com/golang/protobuf@v1.5.2", "dependsOn": [ - "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0", - "pkg:golang/github.com/pkg/errors@v0.9.1", - "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b" + "pkg:golang/github.com/google/go-cmp@v0.5.8", + "pkg:golang/google.golang.org/protobuf@v1.28.0" ] }, { - "ref": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0", + "ref": "pkg:golang/github.com/google/uuid@v1.3.0", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/cespare/xxhash@v1.1.0", + "ref": "pkg:golang/github.com/sirupsen/logrus@v1.8.1", "dependsOn": [ - "pkg:golang/github.com/OneOfOne/xxhash@v1.2.2", - "pkg:golang/github.com/spaolacci/murmur3@v0.0.0-20180118202830-f09979ecbc72" + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/github.com/stretchr/testify@v1.7.0" ] }, { - "ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", + "ref": "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", "dependsOn": [ - "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/google.golang.org/grpc@v1.48.0" + "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211", + "pkg:golang/golang.org/x/text@v0.3.7", + "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9" ] }, { - "ref": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", + "ref": "pkg:golang/google.golang.org/grpc@v1.48.0", "dependsOn": [ - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "pkg:golang/github.com/cespare/xxhash/v2@v2.1.1", + "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", + "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", + "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1", + "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/google.golang.org/grpc@v1.48.0" + "pkg:golang/github.com/google/go-cmp@v0.5.8", + "pkg:golang/github.com/google/uuid@v1.3.0", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/protobuf@v1.28.0", + "pkg:golang/github.com/cespare/xxhash@v1.1.0", + "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "pkg:golang/github.com/golang/mock@v1.6.0", + "pkg:golang/cloud.google.com/go@v0.100.2", + "pkg:golang/github.com/BurntSushi/toml@v0.3.1", + "pkg:golang/github.com/client9/misspell@v0.3.4", + "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", + "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", + "pkg:golang/golang.org/x/tools@v0.1.5", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "pkg:golang/golang.org/x/text@v0.3.7" ] }, { - "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1", + "ref": "pkg:golang/cloud.google.com/go@v0.100.2", "dependsOn": [ - "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0", - "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "pkg:golang/cloud.google.com/go/compute@v1.6.1", "pkg:golang/github.com/golang/protobuf@v1.5.2", "pkg:golang/github.com/google/go-cmp@v0.5.8", - "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", - "pkg:golang/github.com/stretchr/testify@v1.7.0", - "pkg:golang/go.opentelemetry.io/proto/otlp@v0.7.0", - "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/github.com/google/martian/v3@v3.2.1", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", + "pkg:golang/go.opencensus.io@v0.23.0", + "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f", + "pkg:golang/google.golang.org/api@v0.78.0", "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", "pkg:golang/google.golang.org/grpc@v1.48.0", "pkg:golang/google.golang.org/protobuf@v1.28.0", - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4" - ] - }, - { - "ref": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", - "dependsOn": [] + "pkg:golang/cloud.google.com/go/storage@v1.22.1", + "pkg:golang/github.com/golang/mock@v1.6.0", + "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f", + "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", + "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/golang.org/x/text@v0.3.7", + "pkg:golang/golang.org/x/tools@v0.1.5", + "pkg:golang/cloud.google.com/go/bigquery@v1.8.0", + "pkg:golang/cloud.google.com/go/datastore@v1.1.0", + "pkg:golang/cloud.google.com/go/pubsub@v1.3.1", + "pkg:golang/github.com/google/martian@v2.1.0%2Bincompatible", + "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", + "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "pkg:golang/golang.org/x/exp@v0.0.0-20200224162631-6cc2880d07d6", + "pkg:golang/golang.org/x/mod@v0.4.2", + "pkg:golang/github.com/google/btree@v1.0.0", + "pkg:golang/golang.org/x/time@v0.0.0-20191024005414-555d28b269f0", + "pkg:golang/rsc.io/binaryregexp@v0.2.0" + ] }, { - "ref": "pkg:golang/github.com/golang/protobuf@v1.5.2", + "ref": "pkg:golang/cloud.google.com/go/compute@v1.6.1", "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.100.2", "pkg:golang/github.com/google/go-cmp@v0.5.8", - "pkg:golang/google.golang.org/protobuf@v1.28.0" + "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", + "pkg:golang/google.golang.org/api@v0.78.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/google.golang.org/protobuf@v1.28.0", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f" ] }, { @@ -1045,18 +983,16 @@ ] }, { - "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f", + "ref": "pkg:golang/github.com/google/martian/v3@v3.2.1", "dependsOn": [ - "pkg:golang/github.com/chzyer/logex@v1.1.10", - "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", - "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", - "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20210905161508-09a460cdf81d" + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/golang/snappy@v0.0.3", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1.0", + "pkg:golang/google.golang.org/protobuf@v1.28.0" ] }, - { - "ref": "pkg:golang/github.com/google/uuid@v1.3.0", - "dependsOn": [] - }, { "ref": "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", "dependsOn": [ @@ -1068,33 +1004,17 @@ ] }, { - "ref": "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0", - "dependsOn": [ - "pkg:golang/github.com/jmespath/go-jmespath/internal/testify@v1.5.1" - ] - }, - { - "ref": "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/sirupsen/logrus@v1.8.1", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/stretchr/testify@v1.7.0" - ] - }, - { - "ref": "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "ref": "pkg:golang/go.opencensus.io@v0.23.0", "dependsOn": [ - "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211", + "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.8", + "pkg:golang/github.com/stretchr/testify@v1.7.0", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/google.golang.org/grpc@v1.48.0", "pkg:golang/golang.org/x/text@v0.3.7", - "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9" + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1" ] }, { @@ -1107,15 +1027,9 @@ ] }, { - "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", + "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f", "dependsOn": [] }, - { - "ref": "pkg:golang/golang.org/x/text@v0.3.7", - "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.1.5" - ] - }, { "ref": "pkg:golang/google.golang.org/api@v0.78.0", "dependsOn": [ @@ -1139,16 +1053,6 @@ "pkg:golang/github.com/golang/protobuf@v1.5.2" ] }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.6.7", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", - "pkg:golang/golang.org/x/text@v0.3.7", - "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", - "pkg:golang/golang.org/x/tools@v0.1.5" - ] - }, { "ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", "dependsOn": [ @@ -1164,35 +1068,6 @@ "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c" ] }, - { - "ref": "pkg:golang/google.golang.org/grpc@v1.48.0", - "dependsOn": [ - "pkg:golang/github.com/cespare/xxhash/v2@v2.1.1", - "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", - "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", - "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1", - "pkg:golang/github.com/golang/glog@v0.0.0-20160126235308-23def4e6c14b", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.8", - "pkg:golang/github.com/google/uuid@v1.3.0", - "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20220411215720-9780585627b5", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", - "pkg:golang/google.golang.org/protobuf@v1.28.0", - "pkg:golang/github.com/cespare/xxhash@v1.1.0", - "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", - "pkg:golang/github.com/golang/mock@v1.6.0", - "pkg:golang/cloud.google.com/go@v0.100.2", - "pkg:golang/github.com/BurntSushi/toml@v0.3.1", - "pkg:golang/github.com/client9/misspell@v0.3.4", - "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", - "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", - "pkg:golang/golang.org/x/tools@v0.1.5", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/honnef.co/go/tools@v0.0.1-2020.1.4", - "pkg:golang/golang.org/x/text@v0.3.7" - ] - }, { "ref": "pkg:golang/google.golang.org/protobuf@v1.28.0", "dependsOn": [ @@ -1202,34 +1077,17 @@ ] }, { - "ref": "pkg:golang/github.com/google/martian/v3@v3.2.1", + "ref": "pkg:golang/cloud.google.com/go/monitoring@v1.1.0", "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.100.2", "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/golang/snappy@v0.0.3", - "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", + "pkg:golang/google.golang.org/api@v0.78.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", "pkg:golang/google.golang.org/grpc@v1.48.0", - "pkg:golang/google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1.0", "pkg:golang/google.golang.org/protobuf@v1.28.0" ] }, - { - "ref": "pkg:golang/go.opencensus.io@v0.23.0", - "dependsOn": [ - "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.8", - "pkg:golang/github.com/stretchr/testify@v1.7.0", - "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", - "pkg:golang/google.golang.org/grpc@v1.48.0", - "pkg:golang/golang.org/x/text@v0.3.7", - "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", - "pkg:golang/github.com/hashicorp/golang-lru@v0.5.1" - ] - }, - { - "ref": "pkg:golang/golang.org/x/xerrors@v0.0.0-20220411194840-2f41105eb62f", - "dependsOn": [] - }, { "ref": "pkg:golang/cloud.google.com/go/storage@v1.22.1", "dependsOn": [ @@ -1268,10 +1126,55 @@ "pkg:golang/rsc.io/quote/v3@v3.1.0" ] }, + { + "ref": "pkg:golang/github.com/google/pprof@v0.0.0-20220412212628-83db2b799d1f", + "dependsOn": [ + "pkg:golang/github.com/chzyer/logex@v1.1.10", + "pkg:golang/github.com/chzyer/readline@v0.0.0-20180603132655-2972be24d48e", + "pkg:golang/github.com/chzyer/test@v0.0.0-20180213035817-a1ea475d72b1", + "pkg:golang/github.com/ianlancetaylor/demangle@v0.0.0-20210905161508-09a460cdf81d" + ] + }, + { + "ref": "pkg:golang/cloud.google.com/go/trace@v1.0.0", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.100.2", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/googleapis/gax-go/v2@v2.4.0", + "pkg:golang/google.golang.org/api@v0.78.0", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/google.golang.org/protobuf@v1.28.0" + ] + }, + { + "ref": "pkg:golang/github.com/uber/jaeger-client-go@v2.25.0%2Bincompatible", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/sync@v0.0.0-20210220032951-036812b2e83c", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/aws/aws-sdk-go@v1.43.31", + "dependsOn": [ + "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0", + "pkg:golang/github.com/pkg/errors@v0.9.1", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b" + ] + }, + { + "ref": "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0", + "dependsOn": [] + }, { "ref": "pkg:golang/github.com/jstemmer/go-junit-report@v0.9.1", "dependsOn": [] }, + { + "ref": "pkg:golang/github.com/prometheus/prometheus@v2.5.0%2Bincompatible", + "dependsOn": [] + }, { "ref": "pkg:golang/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616", "dependsOn": [ @@ -1300,10 +1203,23 @@ "pkg:golang/golang.org/x/tools@v0.1.5" ] }, + { + "ref": "pkg:golang/github.com/jmespath/go-jmespath@v0.4.0", + "dependsOn": [ + "pkg:golang/github.com/jmespath/go-jmespath/internal/testify@v1.5.1" + ] + }, { "ref": "pkg:golang/github.com/pkg/errors@v0.9.1", "dependsOn": [] }, + { + "ref": "pkg:golang/github.com/cespare/xxhash@v1.1.0", + "dependsOn": [ + "pkg:golang/github.com/OneOfOne/xxhash@v1.2.2", + "pkg:golang/github.com/spaolacci/murmur3@v0.0.0-20180118202830-f09979ecbc72" + ] + }, { "ref": "pkg:golang/github.com/OneOfOne/xxhash@v1.2.2", "dependsOn": [] @@ -1312,6 +1228,45 @@ "ref": "pkg:golang/github.com/spaolacci/murmur3@v0.0.0-20180118202830-f09979ecbc72", "dependsOn": [] }, + { + "ref": "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4", + "dependsOn": [ + "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", + "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/google.golang.org/grpc@v1.48.0" + ] + }, + { + "ref": "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", + "dependsOn": [ + "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/google.golang.org/grpc@v1.48.0" + ] + }, + { + "ref": "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/envoyproxy/go-control-plane@v0.10.2-0.20220325020618-49ff273808a1", + "dependsOn": [ + "pkg:golang/github.com/census-instrumentation/opencensus-proto@v0.3.0", + "pkg:golang/github.com/cncf/xds/go@v0.0.0-20211011173535-cb28da3451f1", + "pkg:golang/github.com/envoyproxy/protoc-gen-validate@v0.1.0", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.8", + "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", + "pkg:golang/github.com/stretchr/testify@v1.7.0", + "pkg:golang/go.opentelemetry.io/proto/otlp@v0.7.0", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/google.golang.org/genproto@v0.0.0-20220518221133-4f43b3371335", + "pkg:golang/google.golang.org/grpc@v1.48.0", + "pkg:golang/google.golang.org/protobuf@v1.28.0", + "pkg:golang/github.com/cncf/udpa/go@v0.0.0-20210930031921-04548b0d99d4" + ] + }, { "ref": "pkg:golang/github.com/prometheus/client_model@v0.0.0-20190812154241-14fe0d1b01d4", "dependsOn": [ @@ -1375,6 +1330,22 @@ "ref": "pkg:golang/golang.org/x/term@v0.0.0-20210927222741-03fcf44c2211", "dependsOn": [] }, + { + "ref": "pkg:golang/golang.org/x/text@v0.3.7", + "dependsOn": [ + "pkg:golang/golang.org/x/tools@v0.1.5" + ] + }, + { + "ref": "pkg:golang/google.golang.org/appengine@v1.6.7", + "dependsOn": [ + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/golang.org/x/net@v0.0.0-20220802222814-0bcc04d9c69b", + "pkg:golang/golang.org/x/text@v0.3.7", + "pkg:golang/golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9", + "pkg:golang/golang.org/x/tools@v0.1.5" + ] + }, { "ref": "pkg:golang/github.com/cespare/xxhash/v2@v2.1.1", "dependsOn": [] @@ -1393,6 +1364,10 @@ "pkg:golang/google.golang.org/protobuf@v1.28.0" ] }, + { + "ref": "pkg:golang/github.com/golang/groupcache@v0.0.0-20210331224755-41bb18bfe9da", + "dependsOn": [] + }, { "ref": "pkg:golang/cloud.google.com/go/iam@v0.3.0", "dependsOn": [ diff --git a/test/providers/tst_manifests/golang/go_mod_with_all_ignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/golang/go_mod_with_all_ignore/expected_sbom_component_analysis.json index 8277f49d..f58ffd68 100644 --- a/test/providers/tst_manifests/golang/go_mod_with_all_ignore/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_with_all_ignore/expected_sbom_component_analysis.json @@ -1,18 +1,18 @@ { - "bomFormat": "CycloneDX", - "specVersion": "1.4", - "version": 1, - "metadata": { - "timestamp": "2023-08-07T00:00:00.000Z", - "component": { - "group": "github.com/devfile-samples", - "name": "devfile-sample-go-basic", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/devfile-samples/devfile-sample-go-basic@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/devfile-samples/devfile-sample-go-basic@v0.0.0" - } - }, - "components": [], - "dependencies": [] + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "group": "github.com/devfile-samples", + "name": "devfile-sample-go-basic", + "version": "v0.0.0", + "purl": "pkg:golang/github.com/devfile-samples/devfile-sample-go-basic@v0.0.0", + "type": "application", + "bom-ref": "pkg:golang/github.com/devfile-samples/devfile-sample-go-basic@v0.0.0" + } + }, + "components": [], + "dependencies": [] } diff --git a/test/providers/tst_manifests/golang/go_mod_with_ignore/expected_sbom_component_analysis.json b/test/providers/tst_manifests/golang/go_mod_with_ignore/expected_sbom_component_analysis.json index 86eb3bfb..61b33c2e 100644 --- a/test/providers/tst_manifests/golang/go_mod_with_ignore/expected_sbom_component_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_with_ignore/expected_sbom_component_analysis.json @@ -1,571 +1,103 @@ { - "bomFormat": "CycloneDX", - "specVersion": "1.4", - "version": 1, - "metadata": { - "timestamp": "2023-08-07T00:00:00.000Z", - "component": { - "group": "github.com/RHEcosystemAppEng/SaaSi", - "name": "deployer", - "version": "v0.0.0", - "purl": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", - "type": "application", - "bom-ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0" - } - }, - "components": [ - { - "group": "github.com/davecgh", - "name": "go-spew", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1" - }, - { - "group": "github.com/emicklei/go-restful", - "name": "v3", - "version": "v3.9.0", - "purl": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0" - }, - { - "group": "github.com/gin-gonic", - "name": "gin", - "version": "v1.9.1", - "purl": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1" - }, - { - "group": "github.com/go-openapi", - "name": "jsonpointer", - "version": "v0.19.5", - "purl": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5" - }, - { - "group": "github.com/go-openapi", - "name": "jsonreference", - "version": "v0.20.0", - "purl": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0" - }, - { - "group": "github.com/go-openapi", - "name": "swag", - "version": "v0.19.14", - "purl": "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14" - }, - { - "group": "github.com/gogo", - "name": "protobuf", - "version": "v1.3.2", - "purl": "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.5.2", - "purl": "pkg:golang/github.com/golang/protobuf@v1.5.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.2" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.9", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.9", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.9" - }, - { - "group": "github.com/google", - "name": "gofuzz", - "version": "v1.1.0", - "purl": "pkg:golang/github.com/google/gofuzz@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/gofuzz@v1.1.0" - }, - { - "group": "github.com/google", - "name": "uuid", - "version": "v1.1.2", - "purl": "pkg:golang/github.com/google/uuid@v1.1.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/uuid@v1.1.2" - }, - { - "group": "github.com/imdario", - "name": "mergo", - "version": "v0.3.6", - "purl": "pkg:golang/github.com/imdario/mergo@v0.3.6", - "type": "library", - "bom-ref": "pkg:golang/github.com/imdario/mergo@v0.3.6" - }, - { - "group": "github.com/josharian", - "name": "intern", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/josharian/intern@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/josharian/intern@v1.0.0" - }, - { - "group": "github.com/json-iterator", - "name": "go", - "version": "v1.1.12", - "purl": "pkg:golang/github.com/json-iterator/go@v1.1.12", - "type": "library", - "bom-ref": "pkg:golang/github.com/json-iterator/go@v1.1.12" - }, - { - "group": "github.com/kr", - "name": "pretty", - "version": "v0.3.1", - "purl": "pkg:golang/github.com/kr/pretty@v0.3.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/pretty@v0.3.1" - }, - { - "group": "github.com/kr", - "name": "text", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/kr/text@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/text@v0.2.0" - }, - { - "group": "github.com/mailru", - "name": "easyjson", - "version": "v0.7.6", - "purl": "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "type": "library", - "bom-ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6" - }, - { - "group": "github.com/modern-go", - "name": "concurrent", - "version": "v0.0.0-20180306012644-bacd9c7ef1dd", - "purl": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "type": "library", - "bom-ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" - }, - { - "group": "github.com/modern-go", - "name": "reflect2", - "version": "v1.0.2", - "purl": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2" - }, - { - "group": "github.com/munnerz", - "name": "goautoneg", - "version": "v0.0.0-20191010083416-a7dc8b61c822", - "purl": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "type": "library", - "bom-ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822" - }, - { - "group": "github.com/rogpeppe", - "name": "go-internal", - "version": "v1.9.0", - "purl": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" - }, - { - "group": "github.com/spf13", - "name": "pflag", - "version": "v1.0.5", - "purl": "pkg:golang/github.com/spf13/pflag@v1.0.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.5" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.10.0", - "purl": "pkg:golang/golang.org/x/net@v0.10.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.10.0" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20220223155221-ee480838109b", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.8.0", - "purl": "pkg:golang/golang.org/x/sys@v0.8.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.8.0" - }, - { - "group": "golang.org/x", - "name": "term", - "version": "v0.8.0", - "purl": "pkg:golang/golang.org/x/term@v0.8.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/term@v0.8.0" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.9.0", - "purl": "pkg:golang/golang.org/x/text@v0.9.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.9.0" - }, - { - "group": "golang.org/x", - "name": "time", - "version": "v0.0.0-20220210224613-90d013bbcef8", - "purl": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.6.7", - "purl": "pkg:golang/google.golang.org/appengine@v1.6.7", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.7" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.30.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.30.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.30.0" - }, - { - "group": "gopkg.in", - "name": "inf.v0", - "version": "v0.9.1", - "purl": "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1" - }, - { - "group": "gopkg.in", - "name": "yaml.v2", - "version": "v2.4.0", - "purl": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0" - }, - { - "group": "gopkg.in", - "name": "yaml.v3", - "version": "v3.0.1", - "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1" - }, - { - "group": "k8s.io", - "name": "api", - "version": "v0.26.1", - "purl": "pkg:golang/k8s.io/api@v0.26.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/api@v0.26.1" - }, - { - "group": "k8s.io", - "name": "apimachinery", - "version": "v0.26.1", - "purl": "pkg:golang/k8s.io/apimachinery@v0.26.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/apimachinery@v0.26.1" - }, - { - "group": "k8s.io", - "name": "client-go", - "version": "v0.26.1", - "purl": "pkg:golang/k8s.io/client-go@v0.26.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/client-go@v0.26.1" - }, - { - "group": "k8s.io/klog", - "name": "v2", - "version": "v2.80.1", - "purl": "pkg:golang/k8s.io/klog/v2@v2.80.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/klog/v2@v2.80.1" - }, - { - "group": "k8s.io", - "name": "kube-openapi", - "version": "v0.0.0-20221012153701-172d655c2280", - "purl": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280" - }, - { - "group": "k8s.io", - "name": "utils", - "version": "v0.0.0-20221107191617-1a15be271d1d", - "purl": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d" - }, - { - "group": "sigs.k8s.io", - "name": "json", - "version": "v0.0.0-20220713155537-f223a00ba0e2", - "purl": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2" - }, - { - "group": "sigs.k8s.io/structured-merge-diff", - "name": "v4", - "version": "v4.2.3", - "purl": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3" - }, - { - "group": "sigs.k8s.io", - "name": "yaml", - "version": "v1.3.0", - "purl": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0" - } - ], - "dependencies": [ - { - "ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "pkg:golang/github.com/gin-gonic/gin@v1.9.1", - "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/github.com/imdario/mergo@v0.3.6", - "pkg:golang/github.com/josharian/intern@v1.0.0", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/kr/pretty@v0.3.1", - "pkg:golang/github.com/kr/text@v0.2.0", - "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/term@v0.8.0", - "pkg:golang/golang.org/x/text@v0.9.0", - "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/protobuf@v1.30.0", - "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/k8s.io/api@v0.26.1", - "pkg:golang/k8s.io/apimachinery@v0.26.1", - "pkg:golang/k8s.io/client-go@v0.26.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.5.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.9", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/gofuzz@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/uuid@v1.1.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/imdario/mergo@v0.3.6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/josharian/intern@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/json-iterator/go@v1.1.12", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/kr/pretty@v0.3.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/kr/text@v0.2.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/spf13/pflag@v1.0.5", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/net@v0.10.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/sys@v0.8.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/term@v0.8.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/text@v0.9.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.6.7", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.30.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/k8s.io/api@v0.26.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/k8s.io/apimachinery@v0.26.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/k8s.io/client-go@v0.26.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/k8s.io/klog/v2@v2.80.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "dependsOn": [] - }, - { - "ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "dependsOn": [] - }, - { - "ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "dependsOn": [] - }, - { - "ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", - "dependsOn": [] - } - ] + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-08-07T00:00:00.000Z", + "component": { + "group": "github.com/RHEcosystemAppEng/SaaSi", + "name": "deployer", + "version": "v0.0.0", + "purl": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", + "type": "application", + "bom-ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0" + } + }, + "components": [ + { + "group": "github.com/gin-gonic", + "name": "gin", + "version": "v1.9.1", + "purl": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1" + }, + { + "group": "github.com/google", + "name": "uuid", + "version": "v1.1.2", + "purl": "pkg:golang/github.com/google/uuid@v1.1.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/uuid@v1.1.2" + }, + { + "group": "github.com/kr", + "name": "pretty", + "version": "v0.3.1", + "purl": "pkg:golang/github.com/kr/pretty@v0.3.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/kr/pretty@v0.3.1" + }, + { + "group": "gopkg.in", + "name": "yaml.v2", + "version": "v2.4.0", + "purl": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0" + }, + { + "group": "k8s.io", + "name": "apimachinery", + "version": "v0.26.1", + "purl": "pkg:golang/k8s.io/apimachinery@v0.26.1", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/apimachinery@v0.26.1" + }, + { + "group": "k8s.io", + "name": "client-go", + "version": "v0.26.1", + "purl": "pkg:golang/k8s.io/client-go@v0.26.1", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/client-go@v0.26.1" + } + ], + "dependencies": [ + { + "ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", + "dependsOn": [ + "pkg:golang/github.com/gin-gonic/gin@v1.9.1", + "pkg:golang/github.com/google/uuid@v1.1.2", + "pkg:golang/github.com/kr/pretty@v0.3.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/k8s.io/apimachinery@v0.26.1", + "pkg:golang/k8s.io/client-go@v0.26.1" + ] + }, + { + "ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/google/uuid@v1.1.2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/kr/pretty@v0.3.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/k8s.io/apimachinery@v0.26.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/k8s.io/client-go@v0.26.1", + "dependsOn": [] + } + ] } diff --git a/test/providers/tst_manifests/golang/go_mod_with_ignore/expected_sbom_stack_analysis.json b/test/providers/tst_manifests/golang/go_mod_with_ignore/expected_sbom_stack_analysis.json index e4a684a3..faabcae3 100644 --- a/test/providers/tst_manifests/golang/go_mod_with_ignore/expected_sbom_stack_analysis.json +++ b/test/providers/tst_manifests/golang/go_mod_with_ignore/expected_sbom_stack_analysis.json @@ -14,22 +14,6 @@ } }, "components": [ - { - "group": "github.com/davecgh", - "name": "go-spew", - "version": "v1.1.1", - "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "type": "library", - "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1" - }, - { - "group": "github.com/emicklei/go-restful", - "name": "v3", - "version": "v3.9.0", - "purl": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0" - }, { "group": "github.com/gin-gonic", "name": "gin", @@ -38,62 +22,6 @@ "type": "library", "bom-ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1" }, - { - "group": "github.com/go-openapi", - "name": "jsonpointer", - "version": "v0.19.5", - "purl": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5" - }, - { - "group": "github.com/go-openapi", - "name": "jsonreference", - "version": "v0.20.0", - "purl": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0" - }, - { - "group": "github.com/go-openapi", - "name": "swag", - "version": "v0.19.14", - "purl": "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14" - }, - { - "group": "github.com/gogo", - "name": "protobuf", - "version": "v1.3.2", - "purl": "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2" - }, - { - "group": "github.com/golang", - "name": "protobuf", - "version": "v1.5.2", - "purl": "pkg:golang/github.com/golang/protobuf@v1.5.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.2" - }, - { - "group": "github.com/google", - "name": "go-cmp", - "version": "v0.5.9", - "purl": "pkg:golang/github.com/google/go-cmp@v0.5.9", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.9" - }, - { - "group": "github.com/google", - "name": "gofuzz", - "version": "v1.1.0", - "purl": "pkg:golang/github.com/google/gofuzz@v1.1.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/google/gofuzz@v1.1.0" - }, { "group": "github.com/google", "name": "uuid", @@ -102,30 +30,6 @@ "type": "library", "bom-ref": "pkg:golang/github.com/google/uuid@v1.1.2" }, - { - "group": "github.com/imdario", - "name": "mergo", - "version": "v0.3.6", - "purl": "pkg:golang/github.com/imdario/mergo@v0.3.6", - "type": "library", - "bom-ref": "pkg:golang/github.com/imdario/mergo@v0.3.6" - }, - { - "group": "github.com/josharian", - "name": "intern", - "version": "v1.0.0", - "purl": "pkg:golang/github.com/josharian/intern@v1.0.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/josharian/intern@v1.0.0" - }, - { - "group": "github.com/json-iterator", - "name": "go", - "version": "v1.1.12", - "purl": "pkg:golang/github.com/json-iterator/go@v1.1.12", - "type": "library", - "bom-ref": "pkg:golang/github.com/json-iterator/go@v1.1.12" - }, { "group": "github.com/kr", "name": "pretty", @@ -134,134 +38,6 @@ "type": "library", "bom-ref": "pkg:golang/github.com/kr/pretty@v0.3.1" }, - { - "group": "github.com/kr", - "name": "text", - "version": "v0.2.0", - "purl": "pkg:golang/github.com/kr/text@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/kr/text@v0.2.0" - }, - { - "group": "github.com/mailru", - "name": "easyjson", - "version": "v0.7.6", - "purl": "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "type": "library", - "bom-ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6" - }, - { - "group": "github.com/modern-go", - "name": "concurrent", - "version": "v0.0.0-20180306012644-bacd9c7ef1dd", - "purl": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "type": "library", - "bom-ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" - }, - { - "group": "github.com/modern-go", - "name": "reflect2", - "version": "v1.0.2", - "purl": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "type": "library", - "bom-ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2" - }, - { - "group": "github.com/munnerz", - "name": "goautoneg", - "version": "v0.0.0-20191010083416-a7dc8b61c822", - "purl": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "type": "library", - "bom-ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822" - }, - { - "group": "github.com/rogpeppe", - "name": "go-internal", - "version": "v1.9.0", - "purl": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", - "type": "library", - "bom-ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" - }, - { - "group": "github.com/spf13", - "name": "pflag", - "version": "v1.0.5", - "purl": "pkg:golang/github.com/spf13/pflag@v1.0.5", - "type": "library", - "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.5" - }, - { - "group": "golang.org/x", - "name": "net", - "version": "v0.10.0", - "purl": "pkg:golang/golang.org/x/net@v0.10.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/net@v0.10.0" - }, - { - "group": "golang.org/x", - "name": "oauth2", - "version": "v0.0.0-20220223155221-ee480838109b", - "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b" - }, - { - "group": "golang.org/x", - "name": "sys", - "version": "v0.8.0", - "purl": "pkg:golang/golang.org/x/sys@v0.8.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/sys@v0.8.0" - }, - { - "group": "golang.org/x", - "name": "term", - "version": "v0.8.0", - "purl": "pkg:golang/golang.org/x/term@v0.8.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/term@v0.8.0" - }, - { - "group": "golang.org/x", - "name": "text", - "version": "v0.9.0", - "purl": "pkg:golang/golang.org/x/text@v0.9.0", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/text@v0.9.0" - }, - { - "group": "golang.org/x", - "name": "time", - "version": "v0.0.0-20220210224613-90d013bbcef8", - "purl": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8" - }, - { - "group": "google.golang.org", - "name": "appengine", - "version": "v1.6.7", - "purl": "pkg:golang/google.golang.org/appengine@v1.6.7", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.7" - }, - { - "group": "google.golang.org", - "name": "protobuf", - "version": "v1.30.0", - "purl": "pkg:golang/google.golang.org/protobuf@v1.30.0", - "type": "library", - "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.30.0" - }, - { - "group": "gopkg.in", - "name": "inf.v0", - "version": "v0.9.1", - "purl": "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1" - }, { "group": "gopkg.in", "name": "yaml.v2", @@ -270,22 +46,6 @@ "type": "library", "bom-ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0" }, - { - "group": "gopkg.in", - "name": "yaml.v3", - "version": "v3.0.1", - "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1" - }, - { - "group": "k8s.io", - "name": "api", - "version": "v0.26.1", - "purl": "pkg:golang/k8s.io/api@v0.26.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/api@v0.26.1" - }, { "group": "k8s.io", "name": "apimachinery", @@ -302,54 +62,6 @@ "type": "library", "bom-ref": "pkg:golang/k8s.io/client-go@v0.26.1" }, - { - "group": "k8s.io/klog", - "name": "v2", - "version": "v2.80.1", - "purl": "pkg:golang/k8s.io/klog/v2@v2.80.1", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/klog/v2@v2.80.1" - }, - { - "group": "k8s.io", - "name": "kube-openapi", - "version": "v0.0.0-20221012153701-172d655c2280", - "purl": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280" - }, - { - "group": "k8s.io", - "name": "utils", - "version": "v0.0.0-20221107191617-1a15be271d1d", - "purl": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "type": "library", - "bom-ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d" - }, - { - "group": "sigs.k8s.io", - "name": "json", - "version": "v0.0.0-20220713155537-f223a00ba0e2", - "purl": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2" - }, - { - "group": "sigs.k8s.io/structured-merge-diff", - "name": "v4", - "version": "v4.2.3", - "purl": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3" - }, - { - "group": "sigs.k8s.io", - "name": "yaml", - "version": "v1.3.0", - "purl": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0" - }, { "group": "github.com/bytedance", "name": "sonic", @@ -382,6 +94,14 @@ "type": "library", "bom-ref": "pkg:golang/github.com/goccy/go-json@v0.10.2" }, + { + "group": "github.com/json-iterator", + "name": "go", + "version": "v1.1.12", + "purl": "pkg:golang/github.com/json-iterator/go@v1.1.12", + "type": "library", + "bom-ref": "pkg:golang/github.com/json-iterator/go@v1.1.12" + }, { "group": "github.com/mattn", "name": "go-isatty", @@ -412,7 +132,31 @@ "version": "v1.2.11", "purl": "pkg:golang/github.com/ugorji/go/codec@v1.2.11", "type": "library", - "bom-ref": "pkg:golang/github.com/ugorji/go/codec@v1.2.11" + "bom-ref": "pkg:golang/github.com/ugorji/go/codec@v1.2.11" + }, + { + "group": "golang.org/x", + "name": "net", + "version": "v0.10.0", + "purl": "pkg:golang/golang.org/x/net@v0.10.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/net@v0.10.0" + }, + { + "group": "google.golang.org", + "name": "protobuf", + "version": "v1.30.0", + "purl": "pkg:golang/google.golang.org/protobuf@v1.30.0", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/protobuf@v1.30.0" + }, + { + "group": "gopkg.in", + "name": "yaml.v3", + "version": "v3.0.1", + "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1" }, { "group": "github.com/chenzhuoyu", @@ -422,6 +166,14 @@ "type": "library", "bom-ref": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311" }, + { + "group": "github.com/davecgh", + "name": "go-spew", + "version": "v1.1.1", + "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "type": "library", + "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1" + }, { "group": "github.com/gabriel-vasile", "name": "mimetype", @@ -462,6 +214,22 @@ "type": "library", "bom-ref": "pkg:golang/github.com/leodido/go-urn@v1.2.4" }, + { + "group": "github.com/modern-go", + "name": "concurrent", + "version": "v0.0.0-20180306012644-bacd9c7ef1dd", + "purl": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "type": "library", + "bom-ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" + }, + { + "group": "github.com/modern-go", + "name": "reflect2", + "version": "v1.0.2", + "purl": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2" + }, { "group": "github.com/pmezard", "name": "go-difflib", @@ -494,6 +262,62 @@ "type": "library", "bom-ref": "pkg:golang/golang.org/x/crypto@v0.9.0" }, + { + "group": "golang.org/x", + "name": "sys", + "version": "v0.8.0", + "purl": "pkg:golang/golang.org/x/sys@v0.8.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/sys@v0.8.0" + }, + { + "group": "golang.org/x", + "name": "text", + "version": "v0.9.0", + "purl": "pkg:golang/golang.org/x/text@v0.9.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/text@v0.9.0" + }, + { + "group": "github.com/go-openapi", + "name": "jsonpointer", + "version": "v0.19.5", + "purl": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5" + }, + { + "group": "github.com/go-openapi", + "name": "swag", + "version": "v0.19.14", + "purl": "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14" + }, + { + "group": "github.com/mailru", + "name": "easyjson", + "version": "v0.7.6", + "purl": "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "type": "library", + "bom-ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6" + }, + { + "group": "github.com/go-openapi", + "name": "jsonreference", + "version": "v0.20.0", + "purl": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0" + }, + { + "group": "github.com/kr", + "name": "text", + "version": "v0.2.0", + "purl": "pkg:golang/github.com/kr/text@v0.2.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/kr/text@v0.2.0" + }, { "group": "github.com/niemeyer", "name": "pretty", @@ -510,6 +334,14 @@ "type": "library", "bom-ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" }, + { + "group": "github.com/gogo", + "name": "protobuf", + "version": "v1.3.2", + "purl": "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2" + }, { "group": "github.com/kisielk", "name": "errcheck", @@ -534,6 +366,22 @@ "type": "library", "bom-ref": "pkg:golang/golang.org/x/tools@v0.6.0" }, + { + "group": "github.com/golang", + "name": "protobuf", + "version": "v1.5.2", + "purl": "pkg:golang/github.com/golang/protobuf@v1.5.2", + "type": "library", + "bom-ref": "pkg:golang/github.com/golang/protobuf@v1.5.2" + }, + { + "group": "github.com/google", + "name": "go-cmp", + "version": "v0.5.9", + "purl": "pkg:golang/github.com/google/go-cmp@v0.5.9", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/go-cmp@v0.5.9" + }, { "group": "github.com/docopt", "name": "docopt-go", @@ -566,6 +414,22 @@ "type": "library", "bom-ref": "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154" }, + { + "group": "github.com/google", + "name": "gofuzz", + "version": "v1.1.0", + "purl": "pkg:golang/github.com/google/gofuzz@v1.1.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/google/gofuzz@v1.1.0" + }, + { + "group": "github.com/rogpeppe", + "name": "go-internal", + "version": "v1.9.0", + "purl": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" + }, { "group": "github.com/creack", "name": "pty", @@ -574,6 +438,14 @@ "type": "library", "bom-ref": "pkg:golang/github.com/creack/pty@v1.1.9" }, + { + "group": "github.com/josharian", + "name": "intern", + "version": "v1.0.0", + "purl": "pkg:golang/github.com/josharian/intern@v1.0.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/josharian/intern@v1.0.0" + }, { "group": "github.com/pkg", "name": "diff", @@ -582,6 +454,22 @@ "type": "library", "bom-ref": "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e" }, + { + "group": "golang.org/x", + "name": "term", + "version": "v0.8.0", + "purl": "pkg:golang/golang.org/x/term@v0.8.0", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/term@v0.8.0" + }, + { + "group": "golang.org/x", + "name": "oauth2", + "version": "v0.0.0-20220223155221-ee480838109b", + "purl": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b" + }, { "group": "cloud.google.com", "name": "go", @@ -590,6 +478,14 @@ "type": "library", "bom-ref": "pkg:golang/cloud.google.com/go@v0.65.0" }, + { + "group": "google.golang.org", + "name": "appengine", + "version": "v1.6.7", + "purl": "pkg:golang/google.golang.org/appengine@v1.6.7", + "type": "library", + "bom-ref": "pkg:golang/google.golang.org/appengine@v1.6.7" + }, { "group": "golang.org/x", "name": "mod", @@ -598,6 +494,70 @@ "type": "library", "bom-ref": "pkg:golang/golang.org/x/mod@v0.8.0" }, + { + "group": "k8s.io", + "name": "api", + "version": "v0.26.1", + "purl": "pkg:golang/k8s.io/api@v0.26.1", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/api@v0.26.1" + }, + { + "group": "github.com/spf13", + "name": "pflag", + "version": "v1.0.5", + "purl": "pkg:golang/github.com/spf13/pflag@v1.0.5", + "type": "library", + "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.5" + }, + { + "group": "gopkg.in", + "name": "inf.v0", + "version": "v0.9.1", + "purl": "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1" + }, + { + "group": "k8s.io/klog", + "name": "v2", + "version": "v2.80.1", + "purl": "pkg:golang/k8s.io/klog/v2@v2.80.1", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/klog/v2@v2.80.1" + }, + { + "group": "k8s.io", + "name": "utils", + "version": "v0.0.0-20221107191617-1a15be271d1d", + "purl": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d" + }, + { + "group": "sigs.k8s.io", + "name": "json", + "version": "v0.0.0-20220713155537-f223a00ba0e2", + "purl": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "type": "library", + "bom-ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2" + }, + { + "group": "sigs.k8s.io/structured-merge-diff", + "name": "v4", + "version": "v4.2.3", + "purl": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "type": "library", + "bom-ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3" + }, + { + "group": "sigs.k8s.io", + "name": "yaml", + "version": "v1.3.0", + "purl": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "type": "library", + "bom-ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0" + }, { "group": "github.com/armon", "name": "go-socks5", @@ -638,6 +598,14 @@ "type": "library", "bom-ref": "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f" }, + { + "group": "k8s.io", + "name": "kube-openapi", + "version": "v0.0.0-20221012153701-172d655c2280", + "purl": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", + "type": "library", + "bom-ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280" + }, { "group": "github.com/onsi/ginkgo", "name": "v2", @@ -678,13 +646,37 @@ "type": "library", "bom-ref": "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7" }, + { + "group": "github.com/imdario", + "name": "mergo", + "version": "v0.3.6", + "purl": "pkg:golang/github.com/imdario/mergo@v0.3.6", + "type": "library", + "bom-ref": "pkg:golang/github.com/imdario/mergo@v0.3.6" + }, { "group": "github.com/peterbourgon", "name": "diskv", "version": "v2.0.1+incompatible", "purl": "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible", "type": "library", - "bom-ref": "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible" + "bom-ref": "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible" + }, + { + "group": "golang.org/x", + "name": "time", + "version": "v0.0.0-20220210224613-90d013bbcef8", + "purl": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8" + }, + { + "group": "github.com/emicklei/go-restful", + "name": "v3", + "version": "v3.9.0", + "purl": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", + "type": "library", + "bom-ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0" }, { "group": "github.com/google", @@ -694,6 +686,14 @@ "type": "library", "bom-ref": "pkg:golang/github.com/google/btree@v1.0.1" }, + { + "group": "github.com/munnerz", + "name": "goautoneg", + "version": "v0.0.0-20191010083416-a7dc8b61c822", + "purl": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "type": "library", + "bom-ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822" + }, { "group": "github.com/NYTimes", "name": "gziphandler", @@ -1049,361 +1049,112 @@ "group": "golang.org/x", "name": "image", "version": "v0.0.0-20190802002840-cff245a6509b", - "purl": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b" - }, - { - "group": "golang.org/x", - "name": "mobile", - "version": "v0.0.0-20190719004257-d2bd2a29d028", - "purl": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", - "type": "library", - "bom-ref": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028" - }, - { - "group": "rsc.io", - "name": "sampler", - "version": "v1.3.0", - "purl": "pkg:golang/rsc.io/sampler@v1.3.0", - "type": "library", - "bom-ref": "pkg:golang/rsc.io/sampler@v1.3.0" - }, - { - "group": "gopkg.in", - "name": "errgo.v2", - "version": "v2.1.0", - "purl": "pkg:golang/gopkg.in/errgo.v2@v2.1.0", - "type": "library", - "bom-ref": "pkg:golang/gopkg.in/errgo.v2@v2.1.0" - }, - { - "group": "rsc.io", - "name": "binaryregexp", - "version": "v0.2.0", - "purl": "pkg:golang/rsc.io/binaryregexp@v0.2.0", - "type": "library", - "bom-ref": "pkg:golang/rsc.io/binaryregexp@v0.2.0" - }, - { - "group": "github.com/go-gl", - "name": "glfw", - "version": "v0.0.0-20190409004039-e6da0acd62b1", - "purl": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", - "type": "library", - "bom-ref": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1" - } - ], - "dependencies": [ - { - "ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "pkg:golang/github.com/gin-gonic/gin@v1.9.1", - "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/github.com/imdario/mergo@v0.3.6", - "pkg:golang/github.com/josharian/intern@v1.0.0", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/kr/pretty@v0.3.1", - "pkg:golang/github.com/kr/text@v0.2.0", - "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/term@v0.8.0", - "pkg:golang/golang.org/x/text@v0.9.0", - "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/google.golang.org/protobuf@v1.30.0", - "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/k8s.io/api@v0.26.1", - "pkg:golang/k8s.io/apimachinery@v0.26.1", - "pkg:golang/k8s.io/client-go@v0.26.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.3.0" - ] - }, - { - "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", - "dependsOn": [ - "pkg:golang/github.com/bytedance/sonic@v1.9.1", - "pkg:golang/github.com/gin-contrib/sse@v0.1.0", - "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", - "pkg:golang/github.com/goccy/go-json@v0.10.2", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/mattn/go-isatty@v0.0.19", - "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", - "pkg:golang/github.com/stretchr/testify@v1.8.3", - "pkg:golang/github.com/ugorji/go/codec@v1.2.11", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/google.golang.org/protobuf@v1.30.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", - "pkg:golang/github.com/go-playground/locales@v0.14.1", - "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", - "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", - "pkg:golang/github.com/leodido/go-urn@v1.2.4", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", - "pkg:golang/golang.org/x/arch@v0.3.0", - "pkg:golang/golang.org/x/crypto@v0.9.0", - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/text@v0.9.0" - ] - }, - { - "ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "dependsOn": [ - "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "pkg:golang/github.com/stretchr/testify@v1.8.3" - ] - }, - { - "ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "dependsOn": [ - "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "pkg:golang/github.com/stretchr/testify@v1.8.3" - ] - }, - { - "ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/kr/text@v0.2.0", - "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", - "pkg:golang/github.com/stretchr/testify@v1.8.3", - "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/github.com/kr/pretty@v0.3.1" - ] - }, - { - "ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "dependsOn": [ - "pkg:golang/github.com/kisielk/errcheck@v1.5.0", - "pkg:golang/github.com/kisielk/gotool@v1.0.0", - "pkg:golang/golang.org/x/tools@v0.6.0" - ] - }, - { - "ref": "pkg:golang/github.com/golang/protobuf@v1.5.2", - "dependsOn": [ - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/google.golang.org/protobuf@v1.30.0" - ] - }, - { - "ref": "pkg:golang/github.com/google/go-cmp@v0.5.9", - "dependsOn": [ - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/github.com/google/gofuzz@v1.1.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/google/uuid@v1.1.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/imdario/mergo@v0.3.6", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/josharian/intern@v1.0.0", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/json-iterator/go@v1.1.12", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/stretchr/testify@v1.8.3" - ] - }, - { - "ref": "pkg:golang/github.com/kr/pretty@v0.3.1", - "dependsOn": [ - "pkg:golang/github.com/kr/text@v0.2.0", - "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" - ] - }, - { - "ref": "pkg:golang/github.com/kr/text@v0.2.0", - "dependsOn": [ - "pkg:golang/github.com/creack/pty@v1.1.9", - "pkg:golang/github.com/kr/pty@v1.1.1" - ] - }, - { - "ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "dependsOn": [ - "pkg:golang/github.com/josharian/intern@v1.0.0" - ] - }, - { - "ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "dependsOn": [] - }, - { - "ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", - "dependsOn": [ - "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e", - "pkg:golang/gopkg.in/errgo.v2@v2.1.0" - ] + "purl": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/image@v0.0.0-20190802002840-cff245a6509b" }, { - "ref": "pkg:golang/github.com/spf13/pflag@v1.0.5", - "dependsOn": [] + "group": "golang.org/x", + "name": "mobile", + "version": "v0.0.0-20190719004257-d2bd2a29d028", + "purl": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028", + "type": "library", + "bom-ref": "pkg:golang/golang.org/x/mobile@v0.0.0-20190719004257-d2bd2a29d028" }, { - "ref": "pkg:golang/golang.org/x/net@v0.10.0", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/term@v0.8.0", - "pkg:golang/golang.org/x/text@v0.9.0", - "pkg:golang/golang.org/x/crypto@v0.9.0" - ] + "group": "rsc.io", + "name": "sampler", + "version": "v1.3.0", + "purl": "pkg:golang/rsc.io/sampler@v1.3.0", + "type": "library", + "bom-ref": "pkg:golang/rsc.io/sampler@v1.3.0" }, { - "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", - "dependsOn": [ - "pkg:golang/cloud.google.com/go@v0.65.0", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/google.golang.org/appengine@v1.6.7", - "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" - ] + "group": "gopkg.in", + "name": "errgo.v2", + "version": "v2.1.0", + "purl": "pkg:golang/gopkg.in/errgo.v2@v2.1.0", + "type": "library", + "bom-ref": "pkg:golang/gopkg.in/errgo.v2@v2.1.0" }, { - "ref": "pkg:golang/golang.org/x/sys@v0.8.0", - "dependsOn": [] + "group": "rsc.io", + "name": "binaryregexp", + "version": "v0.2.0", + "purl": "pkg:golang/rsc.io/binaryregexp@v0.2.0", + "type": "library", + "bom-ref": "pkg:golang/rsc.io/binaryregexp@v0.2.0" }, { - "ref": "pkg:golang/golang.org/x/term@v0.8.0", - "dependsOn": [ - "pkg:golang/golang.org/x/sys@v0.8.0" - ] - }, + "group": "github.com/go-gl", + "name": "glfw", + "version": "v0.0.0-20190409004039-e6da0acd62b1", + "purl": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1", + "type": "library", + "bom-ref": "pkg:golang/github.com/go-gl/glfw@v0.0.0-20190409004039-e6da0acd62b1" + } + ], + "dependencies": [ { - "ref": "pkg:golang/golang.org/x/text@v0.9.0", + "ref": "pkg:golang/github.com/RHEcosystemAppEng/SaaSi/deployer@v0.0.0", "dependsOn": [ - "pkg:golang/golang.org/x/tools@v0.6.0", - "pkg:golang/golang.org/x/mod@v0.8.0", - "pkg:golang/golang.org/x/sys@v0.8.0" + "pkg:golang/github.com/gin-gonic/gin@v1.9.1", + "pkg:golang/github.com/google/uuid@v1.1.2", + "pkg:golang/github.com/kr/pretty@v0.3.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/k8s.io/apimachinery@v0.26.1", + "pkg:golang/k8s.io/client-go@v0.26.1" ] }, { - "ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", - "dependsOn": [] - }, - { - "ref": "pkg:golang/google.golang.org/appengine@v1.6.7", + "ref": "pkg:golang/github.com/gin-gonic/gin@v1.9.1", "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/bytedance/sonic@v1.9.1", + "pkg:golang/github.com/gin-contrib/sse@v0.1.0", + "pkg:golang/github.com/go-playground/validator/v10@v10.14.0", + "pkg:golang/github.com/goccy/go-json@v0.10.2", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/mattn/go-isatty@v0.0.19", + "pkg:golang/github.com/pelletier/go-toml/v2@v2.0.8", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/github.com/ugorji/go/codec@v1.2.11", "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/gabriel-vasile/mimetype@v1.4.2", + "pkg:golang/github.com/go-playground/locales@v0.14.1", + "pkg:golang/github.com/go-playground/universal-translator@v0.18.1", + "pkg:golang/github.com/klauspost/cpuid/v2@v2.2.4", + "pkg:golang/github.com/leodido/go-urn@v1.2.4", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/github.com/twitchyliquid64/golang-asm@v0.15.1", + "pkg:golang/golang.org/x/arch@v0.3.0", "pkg:golang/golang.org/x/crypto@v0.9.0", "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/tools@v0.6.0" - ] - }, - { - "ref": "pkg:golang/google.golang.org/protobuf@v1.30.0", - "dependsOn": [ - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154" + "pkg:golang/golang.org/x/text@v0.9.0" ] }, { - "ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "ref": "pkg:golang/github.com/google/uuid@v1.1.2", "dependsOn": [] }, { - "ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "ref": "pkg:golang/github.com/kr/pretty@v0.3.1", "dependsOn": [ - "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" + "pkg:golang/github.com/kr/text@v0.2.0", + "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0" ] }, { - "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "ref": "pkg:golang/gopkg.in/yaml.v2@v2.4.0", "dependsOn": [ "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" ] }, - { - "ref": "pkg:golang/k8s.io/api@v0.26.1", - "dependsOn": [ - "pkg:golang/github.com/gogo/protobuf@v1.3.2", - "pkg:golang/github.com/stretchr/testify@v1.8.3", - "pkg:golang/k8s.io/apimachinery@v0.26.1", - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/golang.org/x/text@v0.9.0", - "pkg:golang/google.golang.org/protobuf@v1.30.0", - "pkg:golang/gopkg.in/inf.v0@v0.9.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.3.0" - ] - }, { "ref": "pkg:golang/k8s.io/apimachinery@v0.26.1", "dependsOn": [ @@ -1495,80 +1246,6 @@ "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2" ] }, - { - "ref": "pkg:golang/k8s.io/klog/v2@v2.80.1", - "dependsOn": [] - }, - { - "ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", - "dependsOn": [ - "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", - "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a", - "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", - "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", - "pkg:golang/github.com/go-openapi/swag@v0.19.14", - "pkg:golang/github.com/golang/protobuf@v1.5.2", - "pkg:golang/github.com/google/go-cmp@v0.5.9", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/google/uuid@v1.1.2", - "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", - "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", - "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", - "pkg:golang/github.com/onsi/gomega@v1.23.0", - "pkg:golang/github.com/spf13/pflag@v1.0.5", - "pkg:golang/github.com/stretchr/testify@v1.8.3", - "pkg:golang/google.golang.org/protobuf@v1.30.0", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/gopkg.in/yaml.v3@v3.0.1", - "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c", - "pkg:golang/k8s.io/klog/v2@v2.80.1", - "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "pkg:golang/sigs.k8s.io/yaml@v1.3.0", - "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1", - "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578", - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/mailru/easyjson@v0.7.6", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", - "pkg:golang/github.com/modern-go/reflect2@v1.0.2", - "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", - "pkg:golang/golang.org/x/mod@v0.8.0", - "pkg:golang/golang.org/x/net@v0.10.0", - "pkg:golang/golang.org/x/sys@v0.8.0", - "pkg:golang/golang.org/x/text@v0.9.0", - "pkg:golang/golang.org/x/tools@v0.6.0", - "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" - ] - }, - { - "ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/k8s.io/klog/v2@v2.80.1" - ] - }, - { - "ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", - "dependsOn": [] - }, - { - "ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", - "dependsOn": [ - "pkg:golang/gopkg.in/yaml.v2@v2.4.0", - "pkg:golang/github.com/google/gofuzz@v1.1.0", - "pkg:golang/github.com/json-iterator/go@v1.1.12", - "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" - ] - }, - { - "ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", - "dependsOn": [ - "pkg:golang/github.com/davecgh/go-spew@v1.1.1", - "pkg:golang/gopkg.in/yaml.v2@v2.4.0" - ] - }, { "ref": "pkg:golang/github.com/bytedance/sonic@v1.9.1", "dependsOn": [] @@ -1585,6 +1262,16 @@ "ref": "pkg:golang/github.com/goccy/go-json@v0.10.2", "dependsOn": [] }, + { + "ref": "pkg:golang/github.com/json-iterator/go@v1.1.12", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/stretchr/testify@v1.8.3" + ] + }, { "ref": "pkg:golang/github.com/mattn/go-isatty@v0.0.19", "dependsOn": [] @@ -1604,11 +1291,38 @@ ] }, { - "ref": "pkg:golang/github.com/ugorji/go/codec@v1.2.11", + "ref": "pkg:golang/github.com/ugorji/go/codec@v1.2.11", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/net@v0.10.0", + "dependsOn": [ + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/term@v0.8.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/crypto@v0.9.0" + ] + }, + { + "ref": "pkg:golang/google.golang.org/protobuf@v1.30.0", + "dependsOn": [ + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/google.golang.org/genproto@v0.0.0-20201019141844-1ed22bb0c154" + ] + }, + { + "ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "dependsOn": [ + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f" + ] + }, + { + "ref": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", "dependsOn": [] }, { - "ref": "pkg:golang/github.com/chenzhuoyu/base64x@v0.0.0-20221115062448-fe3a3abad311", + "ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", "dependsOn": [] }, { @@ -1631,6 +1345,14 @@ "ref": "pkg:golang/github.com/leodido/go-urn@v1.2.4", "dependsOn": [] }, + { + "ref": "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "dependsOn": [] + }, { "ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", "dependsOn": [] @@ -1650,6 +1372,60 @@ "pkg:golang/golang.org/x/net@v0.10.0" ] }, + { + "ref": "pkg:golang/golang.org/x/sys@v0.8.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/golang.org/x/text@v0.9.0", + "dependsOn": [ + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/golang.org/x/sys@v0.8.0" + ] + }, + { + "ref": "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "dependsOn": [ + "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/stretchr/testify@v1.8.3" + ] + }, + { + "ref": "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/kr/text@v0.2.0", + "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/github.com/kr/pretty@v0.3.1" + ] + }, + { + "ref": "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "dependsOn": [ + "pkg:golang/github.com/josharian/intern@v1.0.0" + ] + }, + { + "ref": "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", + "dependsOn": [ + "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "pkg:golang/github.com/stretchr/testify@v1.8.3" + ] + }, + { + "ref": "pkg:golang/github.com/kr/text@v0.2.0", + "dependsOn": [ + "pkg:golang/github.com/creack/pty@v1.1.9", + "pkg:golang/github.com/kr/pty@v1.1.1" + ] + }, { "ref": "pkg:golang/github.com/niemeyer/pretty@v0.0.0-20200227124842-a10e7caefd8e", "dependsOn": [ @@ -1660,6 +1436,14 @@ "ref": "pkg:golang/gopkg.in/check.v1@v1.0.0-20200227125254-8fa46927fb4f", "dependsOn": [] }, + { + "ref": "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "dependsOn": [ + "pkg:golang/github.com/kisielk/errcheck@v1.5.0", + "pkg:golang/github.com/kisielk/gotool@v1.0.0", + "pkg:golang/golang.org/x/tools@v0.6.0" + ] + }, { "ref": "pkg:golang/github.com/kisielk/errcheck@v1.5.0", "dependsOn": [ @@ -1681,6 +1465,19 @@ "pkg:golang/google.golang.org/appengine@v1.6.7" ] }, + { + "ref": "pkg:golang/github.com/golang/protobuf@v1.5.2", + "dependsOn": [ + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/google.golang.org/protobuf@v1.30.0" + ] + }, + { + "ref": "pkg:golang/github.com/google/go-cmp@v0.5.9", + "dependsOn": [ + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + ] + }, { "ref": "pkg:golang/github.com/docopt/docopt-go@v0.0.0-20180111231733-ee0de3bc6815", "dependsOn": [] @@ -1709,14 +1506,44 @@ "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" ] }, + { + "ref": "pkg:golang/github.com/google/gofuzz@v1.1.0", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/rogpeppe/go-internal@v1.9.0", + "dependsOn": [ + "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e", + "pkg:golang/gopkg.in/errgo.v2@v2.1.0" + ] + }, { "ref": "pkg:golang/github.com/creack/pty@v1.1.9", "dependsOn": [] }, + { + "ref": "pkg:golang/github.com/josharian/intern@v1.0.0", + "dependsOn": [] + }, { "ref": "pkg:golang/github.com/pkg/diff@v0.0.0-20210226163009-20ebb0f2a09e", "dependsOn": [] }, + { + "ref": "pkg:golang/golang.org/x/term@v0.8.0", + "dependsOn": [ + "pkg:golang/golang.org/x/sys@v0.8.0" + ] + }, + { + "ref": "pkg:golang/golang.org/x/oauth2@v0.0.0-20220223155221-ee480838109b", + "dependsOn": [ + "pkg:golang/cloud.google.com/go@v0.65.0", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/google.golang.org/appengine@v1.6.7", + "pkg:golang/golang.org/x/sync@v0.0.0-20201020160332-67f06af15bc9" + ] + }, { "ref": "pkg:golang/cloud.google.com/go@v0.65.0", "dependsOn": [ @@ -1755,6 +1582,17 @@ "pkg:golang/rsc.io/binaryregexp@v0.2.0" ] }, + { + "ref": "pkg:golang/google.golang.org/appengine@v1.6.7", + "dependsOn": [ + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/crypto@v0.9.0", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/tools@v0.6.0" + ] + }, { "ref": "pkg:golang/golang.org/x/mod@v0.8.0", "dependsOn": [ @@ -1763,6 +1601,73 @@ "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" ] }, + { + "ref": "pkg:golang/k8s.io/api@v0.26.1", + "dependsOn": [ + "pkg:golang/github.com/gogo/protobuf@v1.3.2", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/k8s.io/apimachinery@v0.26.1", + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/github.com/spf13/pflag@v1.0.5", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/k8s.io/klog/v2@v2.80.1", + "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "pkg:golang/sigs.k8s.io/yaml@v1.3.0" + ] + }, + { + "ref": "pkg:golang/github.com/spf13/pflag@v1.0.5", + "dependsOn": [] + }, + { + "ref": "pkg:golang/gopkg.in/inf.v0@v0.9.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/k8s.io/klog/v2@v2.80.1", + "dependsOn": [] + }, + { + "ref": "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/k8s.io/klog/v2@v2.80.1" + ] + }, + { + "ref": "pkg:golang/sigs.k8s.io/json@v0.0.0-20220713155537-f223a00ba0e2", + "dependsOn": [] + }, + { + "ref": "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "dependsOn": [ + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd" + ] + }, + { + "ref": "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "dependsOn": [ + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0" + ] + }, { "ref": "pkg:golang/github.com/armon/go-socks5@v0.0.0-20160902184237-e75332964ef5", "dependsOn": [] @@ -1783,6 +1688,49 @@ "ref": "pkg:golang/github.com/mxk/go-flowrate@v0.0.0-20140419014527-cca7078d478f", "dependsOn": [] }, + { + "ref": "pkg:golang/k8s.io/kube-openapi@v0.0.0-20221012153701-172d655c2280", + "dependsOn": [ + "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", + "pkg:golang/github.com/asaskevich/govalidator@v0.0.0-20190424111038-f61b66f89f4a", + "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", + "pkg:golang/github.com/go-openapi/jsonreference@v0.20.0", + "pkg:golang/github.com/go-openapi/swag@v0.19.14", + "pkg:golang/github.com/golang/protobuf@v1.5.2", + "pkg:golang/github.com/google/go-cmp@v0.5.9", + "pkg:golang/github.com/google/gofuzz@v1.1.0", + "pkg:golang/github.com/google/uuid@v1.1.2", + "pkg:golang/github.com/mitchellh/mapstructure@v1.1.2", + "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", + "pkg:golang/github.com/onsi/gomega@v1.23.0", + "pkg:golang/github.com/spf13/pflag@v1.0.5", + "pkg:golang/github.com/stretchr/testify@v1.8.3", + "pkg:golang/google.golang.org/protobuf@v1.30.0", + "pkg:golang/gopkg.in/yaml.v2@v2.4.0", + "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "pkg:golang/k8s.io/gengo@v0.0.0-20210813121822-485abfe95c7c", + "pkg:golang/k8s.io/klog/v2@v2.80.1", + "pkg:golang/k8s.io/utils@v0.0.0-20221107191617-1a15be271d1d", + "pkg:golang/sigs.k8s.io/structured-merge-diff/v4@v4.2.3", + "pkg:golang/sigs.k8s.io/yaml@v1.3.0", + "pkg:golang/github.com/PuerkitoBio/purell@v1.1.1", + "pkg:golang/github.com/PuerkitoBio/urlesc@v0.0.0-20170810143723-de5bf2ad4578", + "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "pkg:golang/github.com/go-openapi/jsonpointer@v0.19.5", + "pkg:golang/github.com/json-iterator/go@v1.1.12", + "pkg:golang/github.com/mailru/easyjson@v0.7.6", + "pkg:golang/github.com/modern-go/concurrent@v0.0.0-20180306012644-bacd9c7ef1dd", + "pkg:golang/github.com/modern-go/reflect2@v1.0.2", + "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "pkg:golang/golang.org/x/mod@v0.8.0", + "pkg:golang/golang.org/x/net@v0.10.0", + "pkg:golang/golang.org/x/sys@v0.8.0", + "pkg:golang/golang.org/x/text@v0.9.0", + "pkg:golang/golang.org/x/tools@v0.6.0", + "pkg:golang/golang.org/x/xerrors@v0.0.0-20200804184101-5ec99f83aff1" + ] + }, { "ref": "pkg:golang/github.com/onsi/ginkgo/v2@v2.4.0", "dependsOn": [] @@ -1803,14 +1751,30 @@ "ref": "pkg:golang/github.com/gregjones/httpcache@v0.0.0-20180305231024-9cad4c3443a7", "dependsOn": [] }, + { + "ref": "pkg:golang/github.com/imdario/mergo@v0.3.6", + "dependsOn": [] + }, { "ref": "pkg:golang/github.com/peterbourgon/diskv@v2.0.1%2Bincompatible", "dependsOn": [] }, + { + "ref": "pkg:golang/golang.org/x/time@v0.0.0-20220210224613-90d013bbcef8", + "dependsOn": [] + }, + { + "ref": "pkg:golang/github.com/emicklei/go-restful/v3@v3.9.0", + "dependsOn": [] + }, { "ref": "pkg:golang/github.com/google/btree@v1.0.1", "dependsOn": [] }, + { + "ref": "pkg:golang/github.com/munnerz/goautoneg@v0.0.0-20191010083416-a7dc8b61c822", + "dependsOn": [] + }, { "ref": "pkg:golang/github.com/NYTimes/gziphandler@v0.0.0-20170623195520-56545f4a5d46", "dependsOn": [] diff --git a/test/providers/tst_manifests/golang/go_mod_with_ignore/go.mod b/test/providers/tst_manifests/golang/go_mod_with_ignore/go.mod index 7ee7a08f..ff13131e 100644 --- a/test/providers/tst_manifests/golang/go_mod_with_ignore/go.mod +++ b/test/providers/tst_manifests/golang/go_mod_with_ignore/go.mod @@ -15,13 +15,13 @@ require ( require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/emicklei/go-restful/v3 v3.9.0 // indirect - github.com/go-logr/logr v1.2.3 // indirect exhortignore + github.com/go-logr/logr v1.2.3 // indirect; exhortignore github.com/go-openapi/jsonpointer v0.19.5 // indirect github.com/go-openapi/jsonreference v0.20.0 // indirect github.com/go-openapi/swag v0.19.14 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.2 // indirect - github.com/google/gnostic v0.5.7-v3refs // indirect //exhortignore + github.com/google/gnostic v0.5.7-v3refs // indirect; exhortignore github.com/google/go-cmp v0.5.9 // indirect github.com/google/gofuzz v1.1.0 // indirect github.com/imdario/mergo v0.3.6 // indirect From f2d5d72c4cd08cdebc0b87cff94cf9cb05e398ed Mon Sep 17 00:00:00 2001 From: Noah S-C Date: Wed, 8 Apr 2026 14:42:25 +0100 Subject: [PATCH 101/102] feat: add support for pyproject.toml via uv & poetry (#432) Implements: [TC-3850](https://redhat.atlassian.net/browse/TC-3850) --- .github/workflows/test.yml | 6 + README.md | 58 ++- src/index.js | 2 + src/provider.js | 4 + src/providers/base_pyproject.js | 309 ++++++++++++ src/providers/python_pip.js | 8 +- src/providers/python_poetry.js | 159 ++++++ src/providers/python_uv.js | 135 ++++++ test/provider.test.js | 7 + test/providers/python_pyproject.test.js | 199 ++++++++ .../expected_component_sbom.json | 72 +++ .../expected_stack_sbom.json | 183 +++++++ .../pep621_ignore_and_extras/pyproject.toml | 11 + .../pep621_ignore_and_extras/uv.lock | 361 ++++++++++++++ .../poetry_lock/expected_component_sbom.json | 48 ++ .../poetry_lock/expected_stack_sbom.json | 159 ++++++ .../pyproject/poetry_lock/poetry.lock | 424 ++++++++++++++++ .../pyproject/poetry_lock/pyproject.toml | 14 + .../expected_component_sbom.json | 60 +++ .../poetry_only_deps/expected_stack_sbom.json | 222 +++++++++ .../pyproject/poetry_only_deps/poetry.lock | 454 ++++++++++++++++++ .../pyproject/poetry_only_deps/pyproject.toml | 10 + .../uv_lock/expected_component_sbom.json | 48 ++ .../uv_lock/expected_stack_sbom.json | 172 +++++++ .../pyproject/uv_lock/pyproject.toml | 7 + .../tst_manifests/pyproject/uv_lock/uv.lock | 141 ++++++ 26 files changed, 3267 insertions(+), 6 deletions(-) create mode 100644 src/providers/base_pyproject.js create mode 100644 src/providers/python_poetry.js create mode 100644 src/providers/python_uv.js create mode 100644 test/providers/python_pyproject.test.js create mode 100644 test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/expected_component_sbom.json create mode 100644 test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/expected_stack_sbom.json create mode 100644 test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/pyproject.toml create mode 100644 test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/uv.lock create mode 100644 test/providers/tst_manifests/pyproject/poetry_lock/expected_component_sbom.json create mode 100644 test/providers/tst_manifests/pyproject/poetry_lock/expected_stack_sbom.json create mode 100644 test/providers/tst_manifests/pyproject/poetry_lock/poetry.lock create mode 100644 test/providers/tst_manifests/pyproject/poetry_lock/pyproject.toml create mode 100644 test/providers/tst_manifests/pyproject/poetry_only_deps/expected_component_sbom.json create mode 100644 test/providers/tst_manifests/pyproject/poetry_only_deps/expected_stack_sbom.json create mode 100644 test/providers/tst_manifests/pyproject/poetry_only_deps/poetry.lock create mode 100644 test/providers/tst_manifests/pyproject/poetry_only_deps/pyproject.toml create mode 100644 test/providers/tst_manifests/pyproject/uv_lock/expected_component_sbom.json create mode 100644 test/providers/tst_manifests/pyproject/uv_lock/expected_stack_sbom.json create mode 100644 test/providers/tst_manifests/pyproject/uv_lock/pyproject.toml create mode 100644 test/providers/tst_manifests/pyproject/uv_lock/uv.lock diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6ee51c31..8e3c6bc5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -60,6 +60,12 @@ jobs: run: | echo "python-bin-location=$(echo $pythonLocation)/bin" >> $GITHUB_OUTPUT + - name: Install uv + uses: astral-sh/setup-uv@v6 + + - name: Install Poetry + run: pipx install poetry + - name: setup go uses: actions/setup-go@v6 with: diff --git a/README.md b/README.md index 855331fa..b02d4161 100644 --- a/README.md +++ b/README.md @@ -224,7 +224,8 @@ $ trustify-da-javascript-client license /path/to/package.json
  • JavaScript - pnpm
  • JavaScript - Yarn Classic / Yarn Berry
  • Golang - Go Modules
  • -
  • Python - pip Installer
  • +
  • Python - pip Installer (requirements.txt)
  • +
  • Python - Poetry / uv (pyproject.toml)
  • Gradle (Groovy and Kotlin DSL) - Gradle Installation
  • Rust - Cargo
  • @@ -391,7 +392,30 @@ version = "1.10" log = "0.4" # trustify-da-ignore ``` -All of the 6 above examples are valid for marking a package to be ignored + +Python pyproject.toml users can add a comment with #exhortignore (or # trustify-da-ignore) next to the dependency in pyproject.toml. + +PEP 621 style ([project] dependencies): +```toml +[project] +dependencies = [ + "flask>=2.0.3", + "requests>=2.25.1", + "uvicorn>=0.17.0", #exhortignore + "click>=8.0.4", # trustify-da-ignore +] +``` + +Poetry style ([tool.poetry.dependencies]): +```toml +[tool.poetry.dependencies] +flask = "^2.0.3" +requests = "^2.25.1" +uvicorn = "^0.17.0" #exhortignore +click = "^8.0.4" # trustify-da-ignore +``` + +All of the above examples are valid for marking a package to be ignored @@ -421,6 +445,8 @@ let options = { 'TRUSTIFY_DA_PIP3_PATH' : '/path/to/pip3', 'TRUSTIFY_DA_PYTHON_PATH' : '/path/to/python', 'TRUSTIFY_DA_PIP_PATH' : '/path/to/pip', + 'TRUSTIFY_DA_UV_PATH' : '/path/to/uv', + 'TRUSTIFY_DA_POETRY_PATH' : '/path/to/poetry', 'TRUSTIFY_DA_GRADLE_PATH' : '/path/to/gradle', 'TRUSTIFY_DA_CARGO_PATH' : '/path/to/cargo', // Workspace root for monorepos (Cargo, npm/pnpm/yarn); lock file expected here @@ -567,6 +593,16 @@ following keys for setting custom paths for the said executables. TRUSTIFY_DA_CARGO_PATH +uv +uv +TRUSTIFY_DA_UV_PATH + + +Poetry +poetry +TRUSTIFY_DA_POETRY_PATH + + Workspace root (monorepos) — workspaceDir / TRUSTIFY_DA_WORKSPACE_DIR @@ -619,6 +655,24 @@ TRUSTIFY_DA_GO_MVS_LOGIC_ENABLED=false #### Python Support +The client supports two Python manifest formats: + +- **`requirements.txt`** — uses pip/pip3 to resolve dependencies +- **`pyproject.toml`** — uses [uv](https://docs.astral.sh/uv/) or [Poetry](https://python-poetry.org/) to resolve dependencies + +##### pyproject.toml + +For `pyproject.toml` projects, the client detects which tool manages the project by checking for lock files: +- If `poetry.lock` is present and `[tool.poetry]` is defined, **Poetry** is used (`poetry show --tree` and `poetry show --all`) +- If `uv.lock` is present, **uv** is used (`uv export --format requirements.txt --frozen --no-hashes`) +- If neither lock file is found, an error is thrown + +Both PEP 621 (`[project]` dependencies) and Poetry-style (`[tool.poetry.dependencies]`) are supported. + +Custom executable paths can be set via `TRUSTIFY_DA_UV_PATH` and `TRUSTIFY_DA_POETRY_PATH`. + +##### requirements.txt + By default, For python support, the api assumes that the package is installed using the pip/pip3 binary on the system PATH, or using the customized Binaries passed to environment variables. In any case, If the package is not installed , then an error will be thrown. diff --git a/src/index.js b/src/index.js index a3980992..7b204f56 100644 --- a/src/index.js +++ b/src/index.js @@ -74,6 +74,8 @@ export { * TRUSTIFY_DA_CONTINUE_ON_ERROR?: string | undefined, * batchMetadata?: boolean | undefined, * TRUSTIFY_DA_BATCH_METADATA?: string | undefined, + * TRUSTIFY_DA_UV_PATH?: string | undefined, + * TRUSTIFY_DA_POETRY_PATH?: string | undefined, * [key: string]: string | number | boolean | string[] | undefined, * }} Options */ diff --git a/src/provider.js b/src/provider.js index 0a1fa94a..9a7f3074 100644 --- a/src/provider.js +++ b/src/provider.js @@ -8,6 +8,8 @@ import Javascript_npm from './providers/javascript_npm.js'; import Javascript_pnpm from './providers/javascript_pnpm.js'; import Javascript_yarn from './providers/javascript_yarn.js'; import pythonPipProvider from './providers/python_pip.js' +import Python_poetry from './providers/python_poetry.js' +import Python_uv from './providers/python_uv.js' import rustCargoProvider from './providers/rust_cargo.js' /** @typedef {{ecosystem: string, contentType: string, content: string}} Provided */ @@ -26,6 +28,8 @@ export const availableProviders = [ new Javascript_npm(), golangGomodulesProvider, pythonPipProvider, + new Python_poetry(), + new Python_uv(), rustCargoProvider] /** diff --git a/src/providers/base_pyproject.js b/src/providers/base_pyproject.js new file mode 100644 index 00000000..eb5755a3 --- /dev/null +++ b/src/providers/base_pyproject.js @@ -0,0 +1,309 @@ +import fs from 'node:fs' +import path from 'node:path' + +import { PackageURL } from 'packageurl-js' +import { parse as parseToml } from 'smol-toml' + +import { getLicense } from '../license/license_utils.js' +import Sbom from '../sbom.js' + +const ecosystem = 'pip' + +const IGNORE_MARKERS = ['exhortignore', 'trustify-da-ignore'] + +const DEFAULT_ROOT_NAME = 'default-pip-root' +const DEFAULT_ROOT_VERSION = '0.0.0' + +/** @typedef {{name: string, version: string, children: string[]}} GraphEntry */ +/** @typedef {{name: string, version: string, dependencies: DepTreeEntry[]}} DepTreeEntry */ +/** @typedef {{directDeps: string[], graph: Map}} DependencyData */ +/** @typedef {{ecosystem: string, content: string, contentType: string}} Provided */ + +export default class Base_pyproject { + + /** + * @param {string} manifestName + * @returns {boolean} + */ + isSupported(manifestName) { + return 'pyproject.toml' === manifestName + } + + /** + * @param {string} manifestDir + * @returns {boolean} + */ + validateLockFile(manifestDir) { + return fs.existsSync(path.join(manifestDir, this._lockFileName())) + } + + /** + * Read project license from pyproject.toml, with fallback to LICENSE file. + * @param {string} manifestPath + * @returns {string|null} + */ + readLicenseFromManifest(manifestPath) { + let fromManifest = null + try { + let content = fs.readFileSync(manifestPath, 'utf-8') + let parsed = parseToml(content) + fromManifest = parsed.project?.license + if (typeof fromManifest === 'object' && fromManifest != null) { + fromManifest = fromManifest.text || null + } + if (!fromManifest) { + fromManifest = parsed.tool?.poetry?.license || null + } + } catch (_) { + // leave fromManifest as null + } + return getLicense(fromManifest, manifestPath) + } + + /** + * @param {string} manifest - path to pyproject.toml + * @param {Object} [opts={}] + * @returns {Promise} + */ + async provideStack(manifest, opts = {}) { + return { + ecosystem, + content: await this._createSbom(manifest, opts, true), + contentType: 'application/vnd.cyclonedx+json' + } + } + + /** + * @param {string} manifest - path to pyproject.toml + * @param {Object} [opts={}] + * @returns {Promise} + */ + async provideComponent(manifest, opts = {}) { + return { + ecosystem, + content: await this._createSbom(manifest, opts, false), + contentType: 'application/vnd.cyclonedx+json' + } + } + + // --- abstract methods (subclasses must override) --- + + /** + * @returns {string} + * @protected + */ + _lockFileName() { + throw new TypeError('_lockFileName must be implemented') + } + + /** + * @returns {string} + * @protected + */ + _cmdName() { + throw new TypeError('_cmdName must be implemented') + } + + /** + * Resolve dependencies using the tool-specific command and parser. + * @param {string} manifestDir + * @param {object} parsed - parsed pyproject.toml + * @param {Object} opts + * @returns {Promise} + * @protected + */ + // eslint-disable-next-line no-unused-vars + async _getDependencyData(manifestDir, parsed, opts) { + throw new TypeError('_getDependencyData must be implemented') + } + + // --- shared helpers --- + + /** + * Canonicalize a Python package name per PEP 503. + * @param {string} name + * @returns {string} + * @protected + */ + _canonicalize(name) { + return name.toLowerCase().replace(/[-_.]+/g, '-') + } + + /** + * Get the project name from pyproject.toml. + * @param {object} parsed + * @returns {string|null} + * @protected + */ + _getProjectName(parsed) { + return parsed.project?.name || parsed.tool?.poetry?.name || null + } + + /** + * Get the project version from pyproject.toml. + * @param {object} parsed + * @returns {string|null} + * @protected + */ + _getProjectVersion(parsed) { + return parsed.project?.version || parsed.tool?.poetry?.version || null + } + + /** + * Scan raw pyproject.toml text for dependencies with ignore markers. + * @param {string} manifestPath + * @returns {Set} + * @protected + */ + _getIgnoredDeps(manifestPath) { + let ignored = new Set() + let content = fs.readFileSync(manifestPath, 'utf-8') + let lines = content.split(/\r?\n/) + + for (let line of lines) { + if (!IGNORE_MARKERS.some(m => line.includes(m))) { continue } + + // PEP 621 style: "requests>=2.25" #exhortignore + let pep621Match = line.match(/^\s*"([^"]+)"/) + if (pep621Match) { + let reqStr = pep621Match[1] + let nameMatch = reqStr.match(/^([A-Za-z0-9]([A-Za-z0-9._-]*[A-Za-z0-9])?)/) + if (nameMatch) { + ignored.add(this._canonicalize(nameMatch[1])) + } + continue + } + + // Poetry style: requests = "^2.25" #exhortignore + let poetryMatch = line.match(/^\s*([A-Za-z0-9][A-Za-z0-9._-]*)\s*=/) + if (poetryMatch) { + ignored.add(this._canonicalize(poetryMatch[1])) + } + } + + return ignored + } + + /** + * Build dependency tree from graph, starting from direct deps. + * @param {Map} graph + * @param {string[]} directDeps - canonical names of direct deps + * @param {Set} ignoredDeps + * @param {boolean} includeTransitive + * @returns {DepTreeEntry[]} + * @protected + */ + _buildDependencyTree(graph, directDeps, ignoredDeps, includeTransitive) { + let result = [] + + for (let key of directDeps) { + if (ignoredDeps.has(key)) { continue } + + let entry = graph.get(key) + if (!entry) { continue } + + let depTree = [] + if (includeTransitive) { + let visited = new Set() + visited.add(key) + this._collectTransitive(graph, entry.children, depTree, ignoredDeps, visited) + } + + result.push({ name: entry.name, version: entry.version, dependencies: depTree }) + } + + result.sort((a, b) => a.name.toLowerCase().localeCompare(b.name.toLowerCase())) + return result + } + + /** + * Recursively collect transitive dependencies. + * @param {Map} graph + * @param {string[]} childKeys + * @param {DepTreeEntry[]} result - mutated in place + * @param {Set} ignoredDeps + * @param {Set} visited + * @returns {void} + * @protected + */ + _collectTransitive(graph, childKeys, result, ignoredDeps, visited) { + for (let childKey of childKeys) { + let canonKey = this._canonicalize(childKey) + if (ignoredDeps.has(canonKey)) { continue } + if (visited.has(canonKey)) { continue } + visited.add(canonKey) + + let entry = graph.get(canonKey) + if (!entry) { continue } + + let childDeps = [] + this._collectTransitive(graph, entry.children, childDeps, ignoredDeps, visited) + + result.push({ name: entry.name, version: entry.version, dependencies: childDeps }) + } + + result.sort((a, b) => a.name.toLowerCase().localeCompare(b.name.toLowerCase())) + } + + /** + * @param {string} name + * @param {string} version + * @returns {PackageURL} + * @protected + */ + _toPurl(name, version) { + return new PackageURL('pypi', undefined, name, version, undefined, undefined) + } + + /** + * Recursively add a dependency and its transitive deps to the SBOM. + * @param {PackageURL} source + * @param {DepTreeEntry} dep + * @param {Sbom} sbom + * @returns {void} + * @private + */ + _addAllDependencies(source, dep, sbom) { + let targetPurl = this._toPurl(dep.name, dep.version) + sbom.addDependency(source, targetPurl) + if (dep.dependencies && dep.dependencies.length > 0) { + dep.dependencies.forEach(child => this._addAllDependencies(this._toPurl(dep.name, dep.version), child, sbom)) + } + } + + /** + * Create SBOM json string for a pyproject.toml project. + * @param {string} manifest - path to pyproject.toml + * @param {Object} opts + * @param {boolean} includeTransitive + * @returns {Promise} + * @private + */ + async _createSbom(manifest, opts, includeTransitive) { + let manifestDir = path.dirname(manifest) + let content = fs.readFileSync(manifest, 'utf-8') + let parsed = parseToml(content) + + let { directDeps, graph } = await this._getDependencyData(manifestDir, parsed, opts) + + let ignoredDeps = this._getIgnoredDeps(manifest) + let dependencies = this._buildDependencyTree(graph, directDeps, ignoredDeps, includeTransitive) + + let sbom = new Sbom() + let rootName = this._getProjectName(parsed) || DEFAULT_ROOT_NAME + let rootVersion = this._getProjectVersion(parsed) || DEFAULT_ROOT_VERSION + let rootPurl = this._toPurl(rootName, rootVersion) + let license = this.readLicenseFromManifest(manifest) + sbom.addRoot(rootPurl, license) + + dependencies.forEach(dep => { + if (includeTransitive) { + this._addAllDependencies(rootPurl, dep, sbom) + } else { + sbom.addDependency(rootPurl, this._toPurl(dep.name, dep.version)) + } + }) + + return sbom.getAsJsonString(opts) + } +} diff --git a/src/providers/python_pip.js b/src/providers/python_pip.js index 1d55ec4a..3cd8fdee 100644 --- a/src/providers/python_pip.js +++ b/src/providers/python_pip.js @@ -87,7 +87,7 @@ function addAllDependencies(source, dep, sbom) { sbom.addDependency(source, targetPurl) let directDeps = dep["dependencies"] if (directDeps !== undefined && directDeps.length > 0) { - directDeps.forEach((dependency) => { addAllDependencies(toPurl(dep["name"],dep["version"]), dependency, sbom) }) + directDeps.forEach((dependency) => { addAllDependencies(toPurl(dep["name"], dep["version"]), dependency, sbom) }) } } @@ -123,7 +123,7 @@ async function getIgnoredDependencies(manifest) { async function handleIgnoredDependencies(manifest, sbom, opts = {}) { let ignoredDeps = await getIgnoredDependencies(manifest) let matchManifestVersions = getCustom("MATCH_MANIFEST_VERSIONS", "true", opts); - if(matchManifestVersions === "true") { + if (matchManifestVersions === "true") { const ignoredDepsVersion = ignoredDeps.filter(dep => dep.version !== undefined); sbom.filterIgnoredDepsIncludingVersion(ignoredDepsVersion.map(dep => dep.toString())) } else { @@ -150,7 +150,7 @@ function getPythonPipBinaries(binaries, opts) { invokeCommand(python, ['--version']) invokeCommand(pip, ['--version']) } catch (error) { - throw new Error(`Failed checking for python/pip binaries from supplied environment variables`, {cause: error}) + throw new Error(`Failed checking for python/pip binaries from supplied environment variables`, { cause: error }) } } binaries.pip = pip @@ -240,6 +240,6 @@ async function getSbomForComponentAnalysis(manifest, opts = {}) { * @param version * @return {PackageURL} */ -function toPurl(name,version) { +function toPurl(name, version) { return new PackageURL('pypi', undefined, name, version, undefined, undefined); } diff --git a/src/providers/python_poetry.js b/src/providers/python_poetry.js new file mode 100644 index 00000000..686ac4c6 --- /dev/null +++ b/src/providers/python_poetry.js @@ -0,0 +1,159 @@ +import { environmentVariableIsPopulated, getCustomPath, invokeCommand } from '../tools.js' + +import Base_pyproject from './base_pyproject.js' + +export default class Python_poetry extends Base_pyproject { + + /** @returns {string} */ + _lockFileName() { + return 'poetry.lock' + } + + /** @returns {string} */ + _cmdName() { + return 'poetry' + } + + /** + * @param {string} manifestDir + * @param {object} parsed - parsed pyproject.toml + * @param {Object} opts + * @returns {Promise<{directDeps: string[], graph: Map}>} + */ + async _getDependencyData(manifestDir, parsed, opts) { + let treeOutput = this._getPoetryShowTreeOutput(manifestDir, opts) + let showAllOutput = this._getPoetryShowAllOutput(manifestDir, opts) + let versionMap = this._parsePoetryShowAll(showAllOutput) + return this._parsePoetryTree(treeOutput, versionMap) + } + + /** + * Get poetry show --tree output. + * @param {string} manifestDir + * @param {Object} opts + * @returns {string} + */ + _getPoetryShowTreeOutput(manifestDir, opts) { + if (environmentVariableIsPopulated('TRUSTIFY_DA_POETRY_SHOW_TREE')) { + return Buffer.from(process.env['TRUSTIFY_DA_POETRY_SHOW_TREE'], 'base64').toString('utf-8') + } + let poetryBin = getCustomPath('poetry', opts) + return invokeCommand(poetryBin, ['show', '--tree', '--no-ansi'], { cwd: manifestDir }).toString() + } + + /** + * Get poetry show --all output (flat list with resolved versions). + * @param {string} manifestDir + * @param {Object} opts + * @returns {string} + */ + _getPoetryShowAllOutput(manifestDir, opts) { + if (environmentVariableIsPopulated('TRUSTIFY_DA_POETRY_SHOW_ALL')) { + return Buffer.from(process.env['TRUSTIFY_DA_POETRY_SHOW_ALL'], 'base64').toString('utf-8') + } + let poetryBin = getCustomPath('poetry', opts) + return invokeCommand(poetryBin, ['show', '--no-ansi', '--all'], { cwd: manifestDir }).toString() + } + + /** + * Parse poetry show --all output into a version map. + * Lines look like: "name (!) 1.2.3 Description text..." + * or: "name 1.2.3 Description text..." + * @param {string} output + * @returns {Map} canonical name -> version + */ + _parsePoetryShowAll(output) { + let versions = new Map() + let lines = output.split(/\r?\n/) + for (let line of lines) { + let trimmed = line.trim() + if (!trimmed) { continue } + let match = trimmed.match(/^([A-Za-z0-9][A-Za-z0-9._-]*)\s+(?:\(!\)\s+)?(\S+)/) + if (match) { + versions.set(this._canonicalize(match[1]), match[2]) + } + } + return versions + } + + /** + * Parse poetry show --tree output into a dependency graph structure. + * Top-level lines (no indentation/tree chars) are direct deps: "name version description" + * Indented lines are transitive deps with tree chars: "├── name >=constraint" + * + * @param {string} treeOutput + * @param {Map} versionMap - canonical name -> resolved version + * @returns {{directDeps: string[], graph: Map}} + */ + _parsePoetryTree(treeOutput, versionMap) { + let lines = treeOutput.split(/\r?\n/) + let graph = new Map() + let directDeps = [] + + let stack = [] // [{key, depth}] + let currentDirectDep = null + + for (let line of lines) { + if (!line.trim()) { continue } + + // top-level line: "name version description..." + let topMatch = line.match(/^([A-Za-z0-9][A-Za-z0-9._-]*)\s+(\S+)\s/) + if (topMatch) { + let name = topMatch[1] + let version = topMatch[2] + let key = this._canonicalize(name) + directDeps.push(key) + if (!graph.has(key)) { + graph.set(key, { name, version, children: [] }) + } + currentDirectDep = key + stack = [{ key, depth: -1 }] + continue + } + + if (!currentDirectDep) { continue } + + // indented line with tree chars (UTF-8 box-drawing: ├── └── │) + let nameStart = line.search(/[A-Za-z0-9]/) + if (nameStart < 0) { continue } + + let rest = line.substring(nameStart) + let depMatch = rest.match(/^([A-Za-z0-9][A-Za-z0-9._-]*)/) + if (!depMatch) { continue } + + let depName = depMatch[1] + let depKey = this._canonicalize(depName) + + // determine depth by counting tree-drawing groups in the prefix + let prefix = line.substring(0, nameStart) + let depth = (prefix.match(/(?:[├└│ ][\s─]{2} ?)/g) || []).length + + // resolve version from the version map + let version = versionMap.get(depKey) || null + if (!version) { + throw new Error(`poetry: package '${depName}' has no resolved version`) + } + + if (!graph.has(depKey)) { + graph.set(depKey, { name: depName, version, children: [] }) + } + + // pop stack back to find the parent at depth-1 + while (stack.length > 0 && stack[stack.length - 1].depth >= depth) { + stack.pop() + } + + if (stack.length > 0) { + let parentKey = stack[stack.length - 1].key + let parentEntry = graph.get(parentKey) + if (parentEntry && !parentEntry.children.includes(depKey)) { + parentEntry.children.push(depKey) + } + } + + stack.push({ key: depKey, depth }) + } + + return { directDeps, graph } + } +} diff --git a/src/providers/python_uv.js b/src/providers/python_uv.js new file mode 100644 index 00000000..9fa85b89 --- /dev/null +++ b/src/providers/python_uv.js @@ -0,0 +1,135 @@ +import { environmentVariableIsPopulated, getCustomPath, invokeCommand } from '../tools.js' + +import Base_pyproject from './base_pyproject.js' +import { getParser, getPinnedVersionQuery } from './requirements_parser.js' + +export default class Python_uv extends Base_pyproject { + + /** @returns {string} */ + _lockFileName() { + return 'uv.lock' + } + + /** @returns {string} */ + _cmdName() { + return 'uv' + } + + /** + * @param {string} manifestDir + * @param {object} parsed - parsed pyproject.toml + * @param {Object} opts + * @returns {Promise<{directDeps: string[], graph: Map}>} + */ + async _getDependencyData(manifestDir, parsed, opts) { + let projectName = this._getProjectName(parsed) + let uvOutput = this._getUvExportOutput(manifestDir, opts) + return this._parseUvExport(uvOutput, projectName) + } + + /** + * Get the uv export output, either from env var or by running the command. + * @param {string} manifestDir + * @param {Object} opts + * @returns {string} + */ + _getUvExportOutput(manifestDir, opts) { + if (environmentVariableIsPopulated('TRUSTIFY_DA_UV_EXPORT')) { + return Buffer.from(process.env['TRUSTIFY_DA_UV_EXPORT'], 'base64').toString('ascii') + } + let uvBin = getCustomPath('uv', opts) + return invokeCommand(uvBin, ['export', '--format', 'requirements.txt', '--frozen', '--no-hashes'], { cwd: manifestDir }).toString() + } + + /** + * Parse uv export output into a dependency graph using tree-sitter-requirements + * for package/version extraction and string parsing for "# via" comments. + * + * @param {string} output + * @param {string} projectName - canonical project name to identify direct deps + * @returns {Promise<{directDeps: string[], graph: Map}>} + */ + async _parseUvExport(output, projectName) { + let [parser, pinnedVersionQuery] = await Promise.all([ + getParser(), getPinnedVersionQuery() + ]) + let tree = parser.parse(output) + let root = tree.rootNode + let canonProjectName = this._canonicalize(projectName) + + let packages = new Map() // canonical name -> {name, version, parents: Set} + let currentPkg = null + let collectingVia = false + + for (let child of root.children) { + if (child.type === 'requirement') { + let nameNode = child.children.find(c => c.type === 'package') + if (!nameNode) { continue } + + let name = nameNode.text + let version = null + let versionMatches = pinnedVersionQuery.matches(child) + if (versionMatches.length > 0) { + version = versionMatches[0].captures.find(c => c.name === 'version').node.text + } + + if (!version) { + throw new Error(`uv export: package '${name}' has no pinned version`) + } + + let key = this._canonicalize(name) + currentPkg = { name, version, parents: new Set() } + packages.set(key, currentPkg) + collectingVia = false + continue + } + + if (child.type === 'comment' && currentPkg) { + let text = child.text.trim() + + let viaSingle = text.match(/^# via ([A-Za-z0-9][A-Za-z0-9._-]*)$/) + if (viaSingle) { + currentPkg.parents.add(this._canonicalize(viaSingle[1])) + collectingVia = false + continue + } + + if (text === '# via') { + collectingVia = true + continue + } + + if (collectingVia) { + let parentMatch = text.match(/^#\s+([A-Za-z0-9][A-Za-z0-9._-]*)$/) + if (parentMatch) { + currentPkg.parents.add(this._canonicalize(parentMatch[1])) + continue + } + collectingVia = false + } + } + } + + // Build forward dependency map and extract direct deps in one pass + let graph = new Map() + let directDeps = [] + + for (let [key, pkg] of packages) { + graph.set(key, { name: pkg.name, version: pkg.version, children: [] }) + } + for (let [childKey, pkg] of packages) { + for (let parentKey of pkg.parents) { + if (parentKey === canonProjectName) { + directDeps.push(childKey) + continue + } + let parentEntry = graph.get(parentKey) + if (parentEntry) { + parentEntry.children.push(childKey) + } + } + } + + return { directDeps, graph } + } +} diff --git a/test/provider.test.js b/test/provider.test.js index 87e383b7..034eaa63 100644 --- a/test/provider.test.js +++ b/test/provider.test.js @@ -124,6 +124,12 @@ suite('testing the matchForLicense utility function', () => { expect(provider.isSupported('requirements.txt')).to.be.true; }); + test('should match Python pyproject provider for pyproject.toml', () => { + const provider = matchForLicense('/some/path/pyproject.toml', availableProviders); + expect(provider).to.exist; + expect(provider.isSupported('pyproject.toml')).to.be.true; + }); + test('should match Rust Cargo provider for Cargo.toml', () => { const provider = matchForLicense('/some/path/Cargo.toml', availableProviders); expect(provider).to.exist; @@ -138,6 +144,7 @@ suite('testing the matchForLicense utility function', () => { 'package.json', 'go.mod', 'requirements.txt', + 'pyproject.toml', 'Cargo.toml' ]; diff --git a/test/providers/python_pyproject.test.js b/test/providers/python_pyproject.test.js new file mode 100644 index 00000000..c27bb796 --- /dev/null +++ b/test/providers/python_pyproject.test.js @@ -0,0 +1,199 @@ +import fs from 'fs' + +import { expect } from 'chai' +import { useFakeTimers } from 'sinon' + +import Python_poetry from '../../src/providers/python_poetry.js' +import Python_uv from '../../src/providers/python_uv.js' + +let clock + +const TIMEOUT = process.env.GITHUB_ACTIONS ? 30000 : 10000 + +const uvProvider = new Python_uv() +const poetryProvider = new Python_poetry() + +suite('testing the python-pyproject data provider', () => { + [ + {name: 'pyproject.toml', expected: true}, + {name: 'requirements.txt', expected: false}, + {name: 'Cargo.toml', expected: false}, + ].forEach(testCase => { + test(`verify isSupported returns ${testCase.expected} for ${testCase.name}`, () => + expect(uvProvider.isSupported(testCase.name)).to.equal(testCase.expected) + ) + }) + + test('verify uv validateLockFile returns true when uv.lock exists', () => { + expect(uvProvider.validateLockFile('test/providers/tst_manifests/pyproject/uv_lock')).to.equal(true) + }) + + test('verify uv validateLockFile returns false when uv.lock is missing', () => { + expect(uvProvider.validateLockFile('test/providers/tst_manifests/pyproject/poetry_lock')).to.equal(false) + }) + + test('verify poetry validateLockFile returns true when poetry.lock exists', () => { + expect(poetryProvider.validateLockFile('test/providers/tst_manifests/pyproject/poetry_lock')).to.equal(true) + }) + + test('verify poetry validateLockFile returns false when poetry.lock is missing', () => { + expect(poetryProvider.validateLockFile('test/providers/tst_manifests/pyproject/uv_lock')).to.equal(false) + }) + + suite('uv projects (via uv export)', () => { + test('verify pyproject.toml sbom provided for stack analysis with uv', async () => { + let expectedSbom = fs.readFileSync('test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/expected_stack_sbom.json').toString() + expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) + let result = await uvProvider.provideStack('test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/pyproject.toml') + expect(result).to.deep.equal({ + ecosystem: 'pip', + contentType: 'application/vnd.cyclonedx+json', + content: expectedSbom + }) + }).timeout(TIMEOUT) + + test('verify pyproject.toml sbom provided for component analysis with uv', async () => { + let expectedSbom = fs.readFileSync('test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/expected_component_sbom.json').toString().trim() + expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) + let result = await uvProvider.provideComponent('test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/pyproject.toml') + expect(result).to.deep.equal({ + ecosystem: 'pip', + contentType: 'application/vnd.cyclonedx+json', + content: expectedSbom + }) + }).timeout(TIMEOUT) + + test('exhortignore and trustify-da-ignore exclude deps from component analysis', async () => { + let result = await uvProvider.provideComponent('test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/pyproject.toml') + let sbom = JSON.parse(result.content) + let names = sbom.components.map(c => c.name) + expect(names).to.not.include('uvicorn') + expect(names).to.not.include('markupsafe') + expect(names).to.include('flask') + expect(names).to.include('requests') + }).timeout(TIMEOUT) + + test('ignored transitive dep excluded from stack analysis tree', async () => { + let result = await uvProvider.provideStack('test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/pyproject.toml') + let sbom = JSON.parse(result.content) + let names = sbom.components.map(c => c.name) + expect(names).to.not.include('uvicorn') + expect(names).to.not.include('markupsafe') + let jinja2Dep = sbom.dependencies.find(d => d.ref.includes('/jinja2@')) + expect(jinja2Dep).to.exist + expect(jinja2Dep.dependsOn).to.deep.equal([]) + }).timeout(TIMEOUT) + + test('name canonicalization: typing_extensions matches typing-extensions', async () => { + let result = await uvProvider.provideComponent('test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/pyproject.toml') + let sbom = JSON.parse(result.content) + let typingExt = sbom.components.find(c => c.name === 'typing-extensions') + expect(typingExt).to.exist + expect(typingExt.version).to.equal('4.1.1') + }).timeout(TIMEOUT) + }) + + suite('uv projects - uv_lock manifest', () => { + test('verify pyproject.toml sbom provided for stack analysis with uv_lock', async () => { + let expectedSbom = fs.readFileSync('test/providers/tst_manifests/pyproject/uv_lock/expected_stack_sbom.json').toString() + expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) + let result = await uvProvider.provideStack('test/providers/tst_manifests/pyproject/uv_lock/pyproject.toml') + expect(result).to.deep.equal({ + ecosystem: 'pip', + contentType: 'application/vnd.cyclonedx+json', + content: expectedSbom + }) + }).timeout(TIMEOUT) + + test('verify pyproject.toml sbom provided for component analysis with uv_lock', async () => { + let expectedSbom = fs.readFileSync('test/providers/tst_manifests/pyproject/uv_lock/expected_component_sbom.json').toString().trim() + expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) + let result = await uvProvider.provideComponent('test/providers/tst_manifests/pyproject/uv_lock/pyproject.toml') + expect(result).to.deep.equal({ + ecosystem: 'pip', + contentType: 'application/vnd.cyclonedx+json', + content: expectedSbom + }) + }).timeout(TIMEOUT) + }) + + suite('poetry projects (via poetry show)', () => { + test('verify pyproject.toml sbom provided for stack analysis with poetry', async () => { + let expectedSbom = fs.readFileSync('test/providers/tst_manifests/pyproject/poetry_lock/expected_stack_sbom.json').toString() + expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) + let result = await poetryProvider.provideStack('test/providers/tst_manifests/pyproject/poetry_lock/pyproject.toml') + expect(result).to.deep.equal({ + ecosystem: 'pip', + contentType: 'application/vnd.cyclonedx+json', + content: expectedSbom + }) + }).timeout(TIMEOUT) + + test('verify pyproject.toml sbom provided for component analysis with poetry', async () => { + let expectedSbom = fs.readFileSync('test/providers/tst_manifests/pyproject/poetry_lock/expected_component_sbom.json').toString().trim() + expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) + let result = await poetryProvider.provideComponent('test/providers/tst_manifests/pyproject/poetry_lock/pyproject.toml') + expect(result).to.deep.equal({ + ecosystem: 'pip', + contentType: 'application/vnd.cyclonedx+json', + content: expectedSbom + }) + }).timeout(TIMEOUT) + + test('resolved versions come from poetry show --all, not constraints', async () => { + let result = await poetryProvider.provideStack('test/providers/tst_manifests/pyproject/poetry_lock/pyproject.toml') + let sbom = JSON.parse(result.content) + let markupsafe = sbom.components.find(c => c.name === 'markupsafe') + expect(markupsafe.version).to.equal('3.0.3') + let urllib3 = sbom.components.find(c => c.name === 'urllib3') + expect(urllib3.version).to.equal('2.6.3') + }).timeout(TIMEOUT) + + test('exhortignore filtering excludes click and its exclusive transitive deps', async () => { + let result = await poetryProvider.provideStack('test/providers/tst_manifests/pyproject/poetry_lock/pyproject.toml') + let sbom = JSON.parse(result.content) + let names = sbom.components.map(c => c.name) + expect(names).to.not.include('click') + expect(names).to.include('flask') + expect(names).to.include('requests') + }).timeout(TIMEOUT) + }) + + suite('poetry projects - poetry_only_deps manifest', () => { + test('verify pyproject.toml sbom provided for stack analysis with poetry_only_deps', async () => { + let expectedSbom = fs.readFileSync('test/providers/tst_manifests/pyproject/poetry_only_deps/expected_stack_sbom.json').toString() + expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) + let result = await poetryProvider.provideStack('test/providers/tst_manifests/pyproject/poetry_only_deps/pyproject.toml') + expect(result).to.deep.equal({ + ecosystem: 'pip', + contentType: 'application/vnd.cyclonedx+json', + content: expectedSbom + }) + }).timeout(TIMEOUT) + + test('verify pyproject.toml sbom provided for component analysis with poetry_only_deps', async () => { + let expectedSbom = fs.readFileSync('test/providers/tst_manifests/pyproject/poetry_only_deps/expected_component_sbom.json').toString().trim() + expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) + let result = await poetryProvider.provideComponent('test/providers/tst_manifests/pyproject/poetry_only_deps/pyproject.toml') + expect(result).to.deep.equal({ + ecosystem: 'pip', + contentType: 'application/vnd.cyclonedx+json', + content: expectedSbom + }) + }).timeout(TIMEOUT) + }) + + test('validateLockFile returns false when no lock file is present', () => { + let tmpDir = 'test/providers/tst_manifests/pyproject/no_lock_file_dummy' + fs.mkdirSync(tmpDir, { recursive: true }) + fs.writeFileSync(`${tmpDir}/pyproject.toml`, + '[project]\nname = "test"\nversion = "1.0.0"\ndependencies = ["requests>=2.0"]') + try { + expect(uvProvider.validateLockFile(tmpDir)).to.equal(false) + expect(poetryProvider.validateLockFile(tmpDir)).to.equal(false) + } finally { + fs.rmSync(tmpDir, { recursive: true, force: true }) + } + }) + +}).beforeAll(() => clock = useFakeTimers(new Date('2023-10-01T00:00:00.000Z'))).afterAll(() => clock.restore()) diff --git a/test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/expected_component_sbom.json b/test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/expected_component_sbom.json new file mode 100644 index 00000000..49fc7f43 --- /dev/null +++ b/test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/expected_component_sbom.json @@ -0,0 +1,72 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-10-01T00:00:00.000Z", + "component": { + "name": "test-project", + "version": "1.0.0", + "purl": "pkg:pypi/test-project@1.0.0", + "type": "application", + "bom-ref": "pkg:pypi/test-project@1.0.0" + } + }, + "components": [ + { + "name": "flask", + "version": "2.0.3", + "purl": "pkg:pypi/flask@2.0.3", + "type": "library", + "bom-ref": "pkg:pypi/flask@2.0.3" + }, + { + "name": "pywin32", + "version": "311", + "purl": "pkg:pypi/pywin32@311", + "type": "library", + "bom-ref": "pkg:pypi/pywin32@311" + }, + { + "name": "requests", + "version": "2.25.1", + "purl": "pkg:pypi/requests@2.25.1", + "type": "library", + "bom-ref": "pkg:pypi/requests@2.25.1" + }, + { + "name": "typing-extensions", + "version": "4.1.1", + "purl": "pkg:pypi/typing-extensions@4.1.1", + "type": "library", + "bom-ref": "pkg:pypi/typing-extensions@4.1.1" + } + ], + "dependencies": [ + { + "ref": "pkg:pypi/test-project@1.0.0", + "dependsOn": [ + "pkg:pypi/flask@2.0.3", + "pkg:pypi/pywin32@311", + "pkg:pypi/requests@2.25.1", + "pkg:pypi/typing-extensions@4.1.1" + ] + }, + { + "ref": "pkg:pypi/flask@2.0.3", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/pywin32@311", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/requests@2.25.1", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/typing-extensions@4.1.1", + "dependsOn": [] + } + ] +} \ No newline at end of file diff --git a/test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/expected_stack_sbom.json b/test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/expected_stack_sbom.json new file mode 100644 index 00000000..d7a29d9b --- /dev/null +++ b/test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/expected_stack_sbom.json @@ -0,0 +1,183 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-10-01T00:00:00.000Z", + "component": { + "name": "test-project", + "version": "1.0.0", + "purl": "pkg:pypi/test-project@1.0.0", + "type": "application", + "bom-ref": "pkg:pypi/test-project@1.0.0" + } + }, + "components": [ + { + "name": "flask", + "version": "2.0.3", + "purl": "pkg:pypi/flask@2.0.3", + "type": "library", + "bom-ref": "pkg:pypi/flask@2.0.3" + }, + { + "name": "click", + "version": "8.3.1", + "purl": "pkg:pypi/click@8.3.1", + "type": "library", + "bom-ref": "pkg:pypi/click@8.3.1" + }, + { + "name": "colorama", + "version": "0.4.6", + "purl": "pkg:pypi/colorama@0.4.6", + "type": "library", + "bom-ref": "pkg:pypi/colorama@0.4.6" + }, + { + "name": "itsdangerous", + "version": "2.0.1", + "purl": "pkg:pypi/itsdangerous@2.0.1", + "type": "library", + "bom-ref": "pkg:pypi/itsdangerous@2.0.1" + }, + { + "name": "jinja2", + "version": "3.0.3", + "purl": "pkg:pypi/jinja2@3.0.3", + "type": "library", + "bom-ref": "pkg:pypi/jinja2@3.0.3" + }, + { + "name": "werkzeug", + "version": "2.0.3", + "purl": "pkg:pypi/werkzeug@2.0.3", + "type": "library", + "bom-ref": "pkg:pypi/werkzeug@2.0.3" + }, + { + "name": "pywin32", + "version": "311", + "purl": "pkg:pypi/pywin32@311", + "type": "library", + "bom-ref": "pkg:pypi/pywin32@311" + }, + { + "name": "requests", + "version": "2.25.1", + "purl": "pkg:pypi/requests@2.25.1", + "type": "library", + "bom-ref": "pkg:pypi/requests@2.25.1" + }, + { + "name": "certifi", + "version": "2023.7.22", + "purl": "pkg:pypi/certifi@2023.7.22", + "type": "library", + "bom-ref": "pkg:pypi/certifi@2023.7.22" + }, + { + "name": "chardet", + "version": "4.0.0", + "purl": "pkg:pypi/chardet@4.0.0", + "type": "library", + "bom-ref": "pkg:pypi/chardet@4.0.0" + }, + { + "name": "idna", + "version": "2.10", + "purl": "pkg:pypi/idna@2.10", + "type": "library", + "bom-ref": "pkg:pypi/idna@2.10" + }, + { + "name": "urllib3", + "version": "1.26.16", + "purl": "pkg:pypi/urllib3@1.26.16", + "type": "library", + "bom-ref": "pkg:pypi/urllib3@1.26.16" + }, + { + "name": "typing-extensions", + "version": "4.1.1", + "purl": "pkg:pypi/typing-extensions@4.1.1", + "type": "library", + "bom-ref": "pkg:pypi/typing-extensions@4.1.1" + } + ], + "dependencies": [ + { + "ref": "pkg:pypi/test-project@1.0.0", + "dependsOn": [ + "pkg:pypi/flask@2.0.3", + "pkg:pypi/pywin32@311", + "pkg:pypi/requests@2.25.1", + "pkg:pypi/typing-extensions@4.1.1" + ] + }, + { + "ref": "pkg:pypi/flask@2.0.3", + "dependsOn": [ + "pkg:pypi/click@8.3.1", + "pkg:pypi/itsdangerous@2.0.1", + "pkg:pypi/jinja2@3.0.3", + "pkg:pypi/werkzeug@2.0.3" + ] + }, + { + "ref": "pkg:pypi/click@8.3.1", + "dependsOn": [ + "pkg:pypi/colorama@0.4.6" + ] + }, + { + "ref": "pkg:pypi/colorama@0.4.6", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/itsdangerous@2.0.1", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/jinja2@3.0.3", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/werkzeug@2.0.3", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/pywin32@311", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/requests@2.25.1", + "dependsOn": [ + "pkg:pypi/certifi@2023.7.22", + "pkg:pypi/chardet@4.0.0", + "pkg:pypi/idna@2.10", + "pkg:pypi/urllib3@1.26.16" + ] + }, + { + "ref": "pkg:pypi/certifi@2023.7.22", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/chardet@4.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/idna@2.10", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/urllib3@1.26.16", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/typing-extensions@4.1.1", + "dependsOn": [] + } + ] +} \ No newline at end of file diff --git a/test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/pyproject.toml b/test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/pyproject.toml new file mode 100644 index 00000000..4317a63b --- /dev/null +++ b/test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/pyproject.toml @@ -0,0 +1,11 @@ +[project] +name = "test-project" +version = "1.0.0" +dependencies = [ + "Flask==2.0.3", + "typing_extensions==4.1.1", + "uvicorn[standard]==0.17.0", # trustify-da-ignore + "MarkupSafe==2.0.1", #exhortignore + "requests==2.25.1", + "pywin32==311; sys_platform == 'win32'", +] diff --git a/test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/uv.lock b/test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/uv.lock new file mode 100644 index 00000000..a9037e44 --- /dev/null +++ b/test/providers/tst_manifests/pyproject/pep621_ignore_and_extras/uv.lock @@ -0,0 +1,361 @@ +version = 1 +revision = 3 +requires-python = ">=3.13" + +[[package]] +name = "anyio" +version = "3.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "sniffio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/99/2dfd53fd55ce9838e6ff2d4dac20ce58263798bd1a0dbe18b3a9af3fcfce/anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780", size = 142927, upload-time = "2023-07-05T16:45:02.294Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/24/44299477fe7dcc9cb58d0a57d5a7588d6af2ff403fdd2d47a246c91a3246/anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5", size = 80896, upload-time = "2023-07-05T16:44:59.805Z" }, +] + +[[package]] +name = "asgiref" +version = "3.11.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/63/40/f03da1264ae8f7cfdbf9146542e5e7e8100a4c66ab48e791df9a03d3f6c0/asgiref-3.11.1.tar.gz", hash = "sha256:5f184dc43b7e763efe848065441eac62229c9f7b0475f41f80e207a114eda4ce", size = 38550, upload-time = "2026-02-03T13:30:14.33Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/0a/a72d10ed65068e115044937873362e6e32fab1b7dce0046aeb224682c989/asgiref-3.11.1-py3-none-any.whl", hash = "sha256:e8667a091e69529631969fd45dc268fa79b99c92c5fcdda727757e52146ec133", size = 24345, upload-time = "2026-02-03T13:30:13.039Z" }, +] + +[[package]] +name = "certifi" +version = "2023.7.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/98/c2ff18671db109c9f10ed27f5ef610ae05b73bd876664139cf95bd1429aa/certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082", size = 159517, upload-time = "2023-07-22T08:39:27.482Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/dd/2234eab22353ffc7d94e8d13177aaa050113286e93e7b40eae01fbf7c3d9/certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9", size = 158334, upload-time = "2023-07-22T08:39:25.345Z" }, +] + +[[package]] +name = "chardet" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/2d/9cdc2b527e127b4c9db64b86647d567985940ac3698eeabc7ffaccb4ea61/chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa", size = 1907771, upload-time = "2020-12-10T19:35:33.971Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/c7/fa589626997dd07bd87d9269342ccb74b1720384a4d739a1872bd84fbe68/chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5", size = 178743, upload-time = "2020-12-10T19:35:32.469Z" }, +] + +[[package]] +name = "click" +version = "8.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "flask" +version = "2.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "itsdangerous" }, + { name = "jinja2" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/84/9d/66347e6b3e2eb78647392d3969c23bdc2d8b2fdc32bd078c817c15cb81ad/Flask-2.0.3.tar.gz", hash = "sha256:e1120c228ca2f553b470df4a5fa927ab66258467526069981b3eb0a91902687d", size = 629304, upload-time = "2022-02-14T20:01:09.281Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/77/59df23681f4fd19b7cbbb5e92484d46ad587554f5d490f33ef907e456132/Flask-2.0.3-py3-none-any.whl", hash = "sha256:59da8a3170004800a2837844bfa84d49b022550616070f7cb1a659682b2e7c9f", size = 95575, upload-time = "2022-02-14T20:01:06.923Z" }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, +] + +[[package]] +name = "httptools" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/0c/649c671aaf8c22bffd48e2c5e3fdd1fe24be5cb10042073ed6f6183e2cd3/httptools-0.3.0.tar.gz", hash = "sha256:3f9b4856d46ba1f0c850f4e84b264a9a8b4460acb20e865ec00978ad9fbaa4cf", size = 170395, upload-time = "2021-08-10T18:49:49.544Z" } + +[[package]] +name = "idna" +version = "2.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ea/b7/e0e3c1c467636186c39925827be42f16fee389dc404ac29e930e9136be70/idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", size = 175616, upload-time = "2020-06-27T23:45:05.21Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/38/928ddce2273eaa564f6f50de919327bf3a00f091b5baba8dfa9460f3a8a8/idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0", size = 58811, upload-time = "2020-06-27T23:45:03.457Z" }, +] + +[[package]] +name = "itsdangerous" +version = "2.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/66/d6c5859dcac92b442626427a8c7a42322068c5cd5d4a463ce78b93f730b7/itsdangerous-2.0.1.tar.gz", hash = "sha256:9e724d68fc22902a1435351f84c3fb8623f303fffcc566a4cb952df8c572cff0", size = 59336, upload-time = "2021-05-18T15:09:44.532Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/96/26f935afba9cd6140216da5add223a0c465b99d0f112b68a4ca426441019/itsdangerous-2.0.1-py3-none-any.whl", hash = "sha256:5174094b9637652bdb841a3029700391451bd092ba3db90600dea710ba28e97c", size = 18326, upload-time = "2021-05-18T15:09:42.542Z" }, +] + +[[package]] +name = "jinja2" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/91/a5/429efc6246119e1e3fbf562c00187d04e83e54619249eb732bb423efa6c6/Jinja2-3.0.3.tar.gz", hash = "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7", size = 269196, upload-time = "2021-11-09T20:27:29.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/9a/e5d9ec41927401e41aea8af6d16e78b5e612bca4699d417f646a9610a076/Jinja2-3.0.3-py3-none-any.whl", hash = "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8", size = 133630, upload-time = "2021-11-09T20:27:27.116Z" }, +] + +[[package]] +name = "markupsafe" +version = "2.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/10/ff66fea6d1788c458663a84d88787bae15d45daa16f6b3ef33322a51fc7e/MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a", size = 18596, upload-time = "2021-05-18T17:18:22.856Z" } + +[[package]] +name = "python-dotenv" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", hash = "sha256:2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3", size = 50135, upload-time = "2026-03-01T16:00:26.196Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", hash = "sha256:1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a", size = 22101, upload-time = "2026-03-01T16:00:25.09Z" }, +] + +[[package]] +name = "pywin32" +version = "311" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700, upload-time = "2025-07-14T20:13:26.471Z" }, + { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700, upload-time = "2025-07-14T20:13:28.243Z" }, + { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318, upload-time = "2025-07-14T20:13:30.348Z" }, + { url = "https://files.pythonhosted.org/packages/c9/31/097f2e132c4f16d99a22bfb777e0fd88bd8e1c634304e102f313af69ace5/pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee", size = 8840714, upload-time = "2025-07-14T20:13:32.449Z" }, + { url = "https://files.pythonhosted.org/packages/90/4b/07c77d8ba0e01349358082713400435347df8426208171ce297da32c313d/pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87", size = 9656800, upload-time = "2025-07-14T20:13:34.312Z" }, + { url = "https://files.pythonhosted.org/packages/c0/d2/21af5c535501a7233e734b8af901574572da66fcc254cb35d0609c9080dd/pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42", size = 8932540, upload-time = "2025-07-14T20:13:36.379Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, + { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, +] + +[[package]] +name = "requests" +version = "2.25.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "chardet" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6b/47/c14abc08432ab22dc18b9892252efaf005ab44066de871e72a38d6af464b/requests-2.25.1.tar.gz", hash = "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804", size = 102161, upload-time = "2020-12-16T19:38:36.779Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/29/c1/24814557f1d22c56d50280771a17307e6bf87b70727d975fd6b2ce6b014a/requests-2.25.1-py2.py3-none-any.whl", hash = "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e", size = 61216, upload-time = "2020-12-16T19:38:34.329Z" }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, +] + +[[package]] +name = "test-project" +version = "1.0.0" +source = { virtual = "." } +dependencies = [ + { name = "flask" }, + { name = "markupsafe" }, + { name = "pywin32", marker = "sys_platform == 'win32'" }, + { name = "requests" }, + { name = "typing-extensions" }, + { name = "uvicorn", extra = ["standard"] }, +] + +[package.metadata] +requires-dist = [ + { name = "flask", specifier = "==2.0.3" }, + { name = "markupsafe", specifier = "==2.0.1" }, + { name = "pywin32", marker = "sys_platform == 'win32'", specifier = "==311" }, + { name = "requests", specifier = "==2.25.1" }, + { name = "typing-extensions", specifier = "==4.1.1" }, + { name = "uvicorn", extras = ["standard"], specifier = "==0.17.0" }, +] + +[[package]] +name = "typing-extensions" +version = "4.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b1/5a/8b5fbb891ef3f81fc923bf3cb4a578c0abf9471eb50ce0f51c74212182ab/typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42", size = 26694, upload-time = "2022-02-14T03:19:57.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/6b/44f7f8f1e110027cf88956b59f2fad776cca7e1704396d043f89effd3a0e/typing_extensions-4.1.1-py3-none-any.whl", hash = "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2", size = 26844, upload-time = "2022-02-14T03:19:55.773Z" }, +] + +[[package]] +name = "urllib3" +version = "1.26.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e2/7d/539e6f0cf9f0b95b71dd701a56dae89f768cd39fd8ce0096af3546aeb5a3/urllib3-1.26.16.tar.gz", hash = "sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14", size = 303733, upload-time = "2023-05-23T12:18:43.917Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/05/c214b32d21c0b465506f95c4f28ccbcba15022e000b043b72b3df7728471/urllib3-1.26.16-py2.py3-none-any.whl", hash = "sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f", size = 143106, upload-time = "2023-05-23T12:18:41.548Z" }, +] + +[[package]] +name = "uvicorn" +version = "0.17.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asgiref" }, + { name = "click" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/82/50/3c1ae075f624dbbd5beae39c55189e316f96b4175e5f62c4c946124cf1f5/uvicorn-0.17.0.tar.gz", hash = "sha256:192c2422b056a3beb512c6c260bf77a7a884204a4ae41856719c1913ead63bbb", size = 39362, upload-time = "2022-01-14T10:45:41.982Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/bb/1f93757efc22e6e047021dd10255ae471e7930cfc1676ad18b9c70de48e5/uvicorn-0.17.0-py3-none-any.whl", hash = "sha256:0b89c91bb8fe84c4bded9996af13c4b8c0de799d29bffeaa0c8ad298f2be0934", size = 54828, upload-time = "2022-01-14T10:45:40.86Z" }, +] + +[package.optional-dependencies] +standard = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "httptools" }, + { name = "python-dotenv" }, + { name = "pyyaml" }, + { name = "uvloop", marker = "platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'" }, + { name = "watchgod" }, + { name = "websockets" }, +] + +[[package]] +name = "uvloop" +version = "0.22.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/06/f0/18d39dbd1971d6d62c4629cc7fa67f74821b0dc1f5a77af43719de7936a7/uvloop-0.22.1.tar.gz", hash = "sha256:6c84bae345b9147082b17371e3dd5d42775bddce91f885499017f4607fdaf39f", size = 2443250, upload-time = "2025-10-16T22:17:19.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/89/8c/182a2a593195bfd39842ea68ebc084e20c850806117213f5a299dfc513d9/uvloop-0.22.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:561577354eb94200d75aca23fbde86ee11be36b00e52a4eaf8f50fb0c86b7705", size = 1358611, upload-time = "2025-10-16T22:16:36.833Z" }, + { url = "https://files.pythonhosted.org/packages/d2/14/e301ee96a6dc95224b6f1162cd3312f6d1217be3907b79173b06785f2fe7/uvloop-0.22.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cdf5192ab3e674ca26da2eada35b288d2fa49fdd0f357a19f0e7c4e7d5077c8", size = 751811, upload-time = "2025-10-16T22:16:38.275Z" }, + { url = "https://files.pythonhosted.org/packages/b7/02/654426ce265ac19e2980bfd9ea6590ca96a56f10c76e63801a2df01c0486/uvloop-0.22.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e2ea3d6190a2968f4a14a23019d3b16870dd2190cd69c8180f7c632d21de68d", size = 4288562, upload-time = "2025-10-16T22:16:39.375Z" }, + { url = "https://files.pythonhosted.org/packages/15/c0/0be24758891ef825f2065cd5db8741aaddabe3e248ee6acc5e8a80f04005/uvloop-0.22.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0530a5fbad9c9e4ee3f2b33b148c6a64d47bbad8000ea63704fa8260f4cf728e", size = 4366890, upload-time = "2025-10-16T22:16:40.547Z" }, + { url = "https://files.pythonhosted.org/packages/d2/53/8369e5219a5855869bcee5f4d317f6da0e2c669aecf0ef7d371e3d084449/uvloop-0.22.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bc5ef13bbc10b5335792360623cc378d52d7e62c2de64660616478c32cd0598e", size = 4119472, upload-time = "2025-10-16T22:16:41.694Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ba/d69adbe699b768f6b29a5eec7b47dd610bd17a69de51b251126a801369ea/uvloop-0.22.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1f38ec5e3f18c8a10ded09742f7fb8de0108796eb673f30ce7762ce1b8550cad", size = 4239051, upload-time = "2025-10-16T22:16:43.224Z" }, + { url = "https://files.pythonhosted.org/packages/90/cd/b62bdeaa429758aee8de8b00ac0dd26593a9de93d302bff3d21439e9791d/uvloop-0.22.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3879b88423ec7e97cd4eba2a443aa26ed4e59b45e6b76aabf13fe2f27023a142", size = 1362067, upload-time = "2025-10-16T22:16:44.503Z" }, + { url = "https://files.pythonhosted.org/packages/0d/f8/a132124dfda0777e489ca86732e85e69afcd1ff7686647000050ba670689/uvloop-0.22.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4baa86acedf1d62115c1dc6ad1e17134476688f08c6efd8a2ab076e815665c74", size = 752423, upload-time = "2025-10-16T22:16:45.968Z" }, + { url = "https://files.pythonhosted.org/packages/a3/94/94af78c156f88da4b3a733773ad5ba0b164393e357cc4bd0ab2e2677a7d6/uvloop-0.22.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:297c27d8003520596236bdb2335e6b3f649480bd09e00d1e3a99144b691d2a35", size = 4272437, upload-time = "2025-10-16T22:16:47.451Z" }, + { url = "https://files.pythonhosted.org/packages/b5/35/60249e9fd07b32c665192cec7af29e06c7cd96fa1d08b84f012a56a0b38e/uvloop-0.22.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c1955d5a1dd43198244d47664a5858082a3239766a839b2102a269aaff7a4e25", size = 4292101, upload-time = "2025-10-16T22:16:49.318Z" }, + { url = "https://files.pythonhosted.org/packages/02/62/67d382dfcb25d0a98ce73c11ed1a6fba5037a1a1d533dcbb7cab033a2636/uvloop-0.22.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b31dc2fccbd42adc73bc4e7cdbae4fc5086cf378979e53ca5d0301838c5682c6", size = 4114158, upload-time = "2025-10-16T22:16:50.517Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/f1171b4a882a5d13c8b7576f348acfe6074d72eaf52cccef752f748d4a9f/uvloop-0.22.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:93f617675b2d03af4e72a5333ef89450dfaa5321303ede6e67ba9c9d26878079", size = 4177360, upload-time = "2025-10-16T22:16:52.646Z" }, + { url = "https://files.pythonhosted.org/packages/79/7b/b01414f31546caf0919da80ad57cbfe24c56b151d12af68cee1b04922ca8/uvloop-0.22.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:37554f70528f60cad66945b885eb01f1bb514f132d92b6eeed1c90fd54ed6289", size = 1454790, upload-time = "2025-10-16T22:16:54.355Z" }, + { url = "https://files.pythonhosted.org/packages/d4/31/0bb232318dd838cad3fa8fb0c68c8b40e1145b32025581975e18b11fab40/uvloop-0.22.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:b76324e2dc033a0b2f435f33eb88ff9913c156ef78e153fb210e03c13da746b3", size = 796783, upload-time = "2025-10-16T22:16:55.906Z" }, + { url = "https://files.pythonhosted.org/packages/42/38/c9b09f3271a7a723a5de69f8e237ab8e7803183131bc57c890db0b6bb872/uvloop-0.22.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:badb4d8e58ee08dad957002027830d5c3b06aea446a6a3744483c2b3b745345c", size = 4647548, upload-time = "2025-10-16T22:16:57.008Z" }, + { url = "https://files.pythonhosted.org/packages/c1/37/945b4ca0ac27e3dc4952642d4c900edd030b3da6c9634875af6e13ae80e5/uvloop-0.22.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b91328c72635f6f9e0282e4a57da7470c7350ab1c9f48546c0f2866205349d21", size = 4467065, upload-time = "2025-10-16T22:16:58.206Z" }, + { url = "https://files.pythonhosted.org/packages/97/cc/48d232f33d60e2e2e0b42f4e73455b146b76ebe216487e862700457fbf3c/uvloop-0.22.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:daf620c2995d193449393d6c62131b3fbd40a63bf7b307a1527856ace637fe88", size = 4328384, upload-time = "2025-10-16T22:16:59.36Z" }, + { url = "https://files.pythonhosted.org/packages/e4/16/c1fd27e9549f3c4baf1dc9c20c456cd2f822dbf8de9f463824b0c0357e06/uvloop-0.22.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6cde23eeda1a25c75b2e07d39970f3374105d5eafbaab2a4482be82f272d5a5e", size = 4296730, upload-time = "2025-10-16T22:17:00.744Z" }, +] + +[[package]] +name = "watchgod" +version = "0.8.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e8/6e/3904af0715e03fc5b2636cb8cf8b0eabc45b1f2cf6e4cf8453ddb6d23042/watchgod-0.8.2.tar.gz", hash = "sha256:cb11ff66657befba94d828e3b622d5fb76f22fbda1376f355f3e6e51e97d9450", size = 13865, upload-time = "2022-04-01T12:18:05.163Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/60/cfd9150167cb8ec0ac07642fe1383d27300729e0b2b877ff89cb0862bbeb/watchgod-0.8.2-py3-none-any.whl", hash = "sha256:2f3e8137d98f493ff58af54ea00f4d1433a6afe2ed08ab331a657df468c6bfce", size = 12255, upload-time = "2022-04-01T12:18:03.879Z" }, +] + +[[package]] +name = "websockets" +version = "16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/04/24/4b2031d72e840ce4c1ccb255f693b15c334757fc50023e4db9537080b8c4/websockets-16.0.tar.gz", hash = "sha256:5f6261a5e56e8d5c42a4497b364ea24d94d9563e8fbd44e78ac40879c60179b5", size = 179346, upload-time = "2026-01-10T09:23:47.181Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/9c/baa8456050d1c1b08dd0ec7346026668cbc6f145ab4e314d707bb845bf0d/websockets-16.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:878b336ac47938b474c8f982ac2f7266a540adc3fa4ad74ae96fea9823a02cc9", size = 177364, upload-time = "2026-01-10T09:22:59.333Z" }, + { url = "https://files.pythonhosted.org/packages/7e/0c/8811fc53e9bcff68fe7de2bcbe75116a8d959ac699a3200f4847a8925210/websockets-16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:52a0fec0e6c8d9a784c2c78276a48a2bdf099e4ccc2a4cad53b27718dbfd0230", size = 175039, upload-time = "2026-01-10T09:23:01.171Z" }, + { url = "https://files.pythonhosted.org/packages/aa/82/39a5f910cb99ec0b59e482971238c845af9220d3ab9fa76dd9162cda9d62/websockets-16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e6578ed5b6981005df1860a56e3617f14a6c307e6a71b4fff8c48fdc50f3ed2c", size = 175323, upload-time = "2026-01-10T09:23:02.341Z" }, + { url = "https://files.pythonhosted.org/packages/bd/28/0a25ee5342eb5d5f297d992a77e56892ecb65e7854c7898fb7d35e9b33bd/websockets-16.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:95724e638f0f9c350bb1c2b0a7ad0e83d9cc0c9259f3ea94e40d7b02a2179ae5", size = 184975, upload-time = "2026-01-10T09:23:03.756Z" }, + { url = "https://files.pythonhosted.org/packages/f9/66/27ea52741752f5107c2e41fda05e8395a682a1e11c4e592a809a90c6a506/websockets-16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c0204dc62a89dc9d50d682412c10b3542d748260d743500a85c13cd1ee4bde82", size = 186203, upload-time = "2026-01-10T09:23:05.01Z" }, + { url = "https://files.pythonhosted.org/packages/37/e5/8e32857371406a757816a2b471939d51c463509be73fa538216ea52b792a/websockets-16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:52ac480f44d32970d66763115edea932f1c5b1312de36df06d6b219f6741eed8", size = 185653, upload-time = "2026-01-10T09:23:06.301Z" }, + { url = "https://files.pythonhosted.org/packages/9b/67/f926bac29882894669368dc73f4da900fcdf47955d0a0185d60103df5737/websockets-16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6e5a82b677f8f6f59e8dfc34ec06ca6b5b48bc4fcda346acd093694cc2c24d8f", size = 184920, upload-time = "2026-01-10T09:23:07.492Z" }, + { url = "https://files.pythonhosted.org/packages/3c/a1/3d6ccdcd125b0a42a311bcd15a7f705d688f73b2a22d8cf1c0875d35d34a/websockets-16.0-cp313-cp313-win32.whl", hash = "sha256:abf050a199613f64c886ea10f38b47770a65154dc37181bfaff70c160f45315a", size = 178255, upload-time = "2026-01-10T09:23:09.245Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ae/90366304d7c2ce80f9b826096a9e9048b4bb760e44d3b873bb272cba696b/websockets-16.0-cp313-cp313-win_amd64.whl", hash = "sha256:3425ac5cf448801335d6fdc7ae1eb22072055417a96cc6b31b3861f455fbc156", size = 178689, upload-time = "2026-01-10T09:23:10.483Z" }, + { url = "https://files.pythonhosted.org/packages/f3/1d/e88022630271f5bd349ed82417136281931e558d628dd52c4d8621b4a0b2/websockets-16.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8cc451a50f2aee53042ac52d2d053d08bf89bcb31ae799cb4487587661c038a0", size = 177406, upload-time = "2026-01-10T09:23:12.178Z" }, + { url = "https://files.pythonhosted.org/packages/f2/78/e63be1bf0724eeb4616efb1ae1c9044f7c3953b7957799abb5915bffd38e/websockets-16.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:daa3b6ff70a9241cf6c7fc9e949d41232d9d7d26fd3522b1ad2b4d62487e9904", size = 175085, upload-time = "2026-01-10T09:23:13.511Z" }, + { url = "https://files.pythonhosted.org/packages/bb/f4/d3c9220d818ee955ae390cf319a7c7a467beceb24f05ee7aaaa2414345ba/websockets-16.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:fd3cb4adb94a2a6e2b7c0d8d05cb94e6f1c81a0cf9dc2694fb65c7e8d94c42e4", size = 175328, upload-time = "2026-01-10T09:23:14.727Z" }, + { url = "https://files.pythonhosted.org/packages/63/bc/d3e208028de777087e6fb2b122051a6ff7bbcca0d6df9d9c2bf1dd869ae9/websockets-16.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:781caf5e8eee67f663126490c2f96f40906594cb86b408a703630f95550a8c3e", size = 185044, upload-time = "2026-01-10T09:23:15.939Z" }, + { url = "https://files.pythonhosted.org/packages/ad/6e/9a0927ac24bd33a0a9af834d89e0abc7cfd8e13bed17a86407a66773cc0e/websockets-16.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:caab51a72c51973ca21fa8a18bd8165e1a0183f1ac7066a182ff27107b71e1a4", size = 186279, upload-time = "2026-01-10T09:23:17.148Z" }, + { url = "https://files.pythonhosted.org/packages/b9/ca/bf1c68440d7a868180e11be653c85959502efd3a709323230314fda6e0b3/websockets-16.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:19c4dc84098e523fd63711e563077d39e90ec6702aff4b5d9e344a60cb3c0cb1", size = 185711, upload-time = "2026-01-10T09:23:18.372Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f8/fdc34643a989561f217bb477cbc47a3a07212cbda91c0e4389c43c296ebf/websockets-16.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:a5e18a238a2b2249c9a9235466b90e96ae4795672598a58772dd806edc7ac6d3", size = 184982, upload-time = "2026-01-10T09:23:19.652Z" }, + { url = "https://files.pythonhosted.org/packages/dd/d1/574fa27e233764dbac9c52730d63fcf2823b16f0856b3329fc6268d6ae4f/websockets-16.0-cp314-cp314-win32.whl", hash = "sha256:a069d734c4a043182729edd3e9f247c3b2a4035415a9172fd0f1b71658a320a8", size = 177915, upload-time = "2026-01-10T09:23:21.458Z" }, + { url = "https://files.pythonhosted.org/packages/8a/f1/ae6b937bf3126b5134ce1f482365fde31a357c784ac51852978768b5eff4/websockets-16.0-cp314-cp314-win_amd64.whl", hash = "sha256:c0ee0e63f23914732c6d7e0cce24915c48f3f1512ec1d079ed01fc629dab269d", size = 178381, upload-time = "2026-01-10T09:23:22.715Z" }, + { url = "https://files.pythonhosted.org/packages/06/9b/f791d1db48403e1f0a27577a6beb37afae94254a8c6f08be4a23e4930bc0/websockets-16.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:a35539cacc3febb22b8f4d4a99cc79b104226a756aa7400adc722e83b0d03244", size = 177737, upload-time = "2026-01-10T09:23:24.523Z" }, + { url = "https://files.pythonhosted.org/packages/bd/40/53ad02341fa33b3ce489023f635367a4ac98b73570102ad2cdd770dacc9a/websockets-16.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:b784ca5de850f4ce93ec85d3269d24d4c82f22b7212023c974c401d4980ebc5e", size = 175268, upload-time = "2026-01-10T09:23:25.781Z" }, + { url = "https://files.pythonhosted.org/packages/74/9b/6158d4e459b984f949dcbbb0c5d270154c7618e11c01029b9bbd1bb4c4f9/websockets-16.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:569d01a4e7fba956c5ae4fc988f0d4e187900f5497ce46339c996dbf24f17641", size = 175486, upload-time = "2026-01-10T09:23:27.033Z" }, + { url = "https://files.pythonhosted.org/packages/e5/2d/7583b30208b639c8090206f95073646c2c9ffd66f44df967981a64f849ad/websockets-16.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:50f23cdd8343b984957e4077839841146f67a3d31ab0d00e6b824e74c5b2f6e8", size = 185331, upload-time = "2026-01-10T09:23:28.259Z" }, + { url = "https://files.pythonhosted.org/packages/45/b0/cce3784eb519b7b5ad680d14b9673a31ab8dcb7aad8b64d81709d2430aa8/websockets-16.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:152284a83a00c59b759697b7f9e9cddf4e3c7861dd0d964b472b70f78f89e80e", size = 186501, upload-time = "2026-01-10T09:23:29.449Z" }, + { url = "https://files.pythonhosted.org/packages/19/60/b8ebe4c7e89fb5f6cdf080623c9d92789a53636950f7abacfc33fe2b3135/websockets-16.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bc59589ab64b0022385f429b94697348a6a234e8ce22544e3681b2e9331b5944", size = 186062, upload-time = "2026-01-10T09:23:31.368Z" }, + { url = "https://files.pythonhosted.org/packages/88/a8/a080593f89b0138b6cba1b28f8df5673b5506f72879322288b031337c0b8/websockets-16.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:32da954ffa2814258030e5a57bc73a3635463238e797c7375dc8091327434206", size = 185356, upload-time = "2026-01-10T09:23:32.627Z" }, + { url = "https://files.pythonhosted.org/packages/c2/b6/b9afed2afadddaf5ebb2afa801abf4b0868f42f8539bfe4b071b5266c9fe/websockets-16.0-cp314-cp314t-win32.whl", hash = "sha256:5a4b4cc550cb665dd8a47f868c8d04c8230f857363ad3c9caf7a0c3bf8c61ca6", size = 178085, upload-time = "2026-01-10T09:23:33.816Z" }, + { url = "https://files.pythonhosted.org/packages/9f/3e/28135a24e384493fa804216b79a6a6759a38cc4ff59118787b9fb693df93/websockets-16.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b14dc141ed6d2dde437cddb216004bcac6a1df0935d79656387bd41632ba0bbd", size = 178531, upload-time = "2026-01-10T09:23:35.016Z" }, + { url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec", size = 171598, upload-time = "2026-01-10T09:23:45.395Z" }, +] + +[[package]] +name = "werkzeug" +version = "2.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/a8/60514fade2318e277453c9588545d0c335ea3ea6440ce5cdabfca7f73117/Werkzeug-2.0.3.tar.gz", hash = "sha256:b863f8ff057c522164b6067c9e28b041161b4be5ba4d0daceeaa50a163822d3c", size = 895551, upload-time = "2022-02-07T21:04:39.14Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/f3/22afbdb20cc4654b10c98043414a14057cd27fdba9d4ae61cea596000ba2/Werkzeug-2.0.3-py3-none-any.whl", hash = "sha256:1421ebfc7648a39a5c58c601b154165d05cf47a3cd0ccb70857cbdacf6c8f2b8", size = 289232, upload-time = "2022-02-07T21:04:36.336Z" }, +] diff --git a/test/providers/tst_manifests/pyproject/poetry_lock/expected_component_sbom.json b/test/providers/tst_manifests/pyproject/poetry_lock/expected_component_sbom.json new file mode 100644 index 00000000..846a9746 --- /dev/null +++ b/test/providers/tst_manifests/pyproject/poetry_lock/expected_component_sbom.json @@ -0,0 +1,48 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-10-01T00:00:00.000Z", + "component": { + "name": "test-project", + "version": "1.0.0", + "purl": "pkg:pypi/test-project@1.0.0", + "type": "application", + "bom-ref": "pkg:pypi/test-project@1.0.0" + } + }, + "components": [ + { + "name": "flask", + "version": "3.1.3", + "purl": "pkg:pypi/flask@3.1.3", + "type": "library", + "bom-ref": "pkg:pypi/flask@3.1.3" + }, + { + "name": "requests", + "version": "2.33.0", + "purl": "pkg:pypi/requests@2.33.0", + "type": "library", + "bom-ref": "pkg:pypi/requests@2.33.0" + } + ], + "dependencies": [ + { + "ref": "pkg:pypi/test-project@1.0.0", + "dependsOn": [ + "pkg:pypi/flask@3.1.3", + "pkg:pypi/requests@2.33.0" + ] + }, + { + "ref": "pkg:pypi/flask@3.1.3", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/requests@2.33.0", + "dependsOn": [] + } + ] +} \ No newline at end of file diff --git a/test/providers/tst_manifests/pyproject/poetry_lock/expected_stack_sbom.json b/test/providers/tst_manifests/pyproject/poetry_lock/expected_stack_sbom.json new file mode 100644 index 00000000..a70f75a5 --- /dev/null +++ b/test/providers/tst_manifests/pyproject/poetry_lock/expected_stack_sbom.json @@ -0,0 +1,159 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-10-01T00:00:00.000Z", + "component": { + "name": "test-project", + "version": "1.0.0", + "purl": "pkg:pypi/test-project@1.0.0", + "type": "application", + "bom-ref": "pkg:pypi/test-project@1.0.0" + } + }, + "components": [ + { + "name": "flask", + "version": "3.1.3", + "purl": "pkg:pypi/flask@3.1.3", + "type": "library", + "bom-ref": "pkg:pypi/flask@3.1.3" + }, + { + "name": "blinker", + "version": "1.9.0", + "purl": "pkg:pypi/blinker@1.9.0", + "type": "library", + "bom-ref": "pkg:pypi/blinker@1.9.0" + }, + { + "name": "itsdangerous", + "version": "2.2.0", + "purl": "pkg:pypi/itsdangerous@2.2.0", + "type": "library", + "bom-ref": "pkg:pypi/itsdangerous@2.2.0" + }, + { + "name": "jinja2", + "version": "3.1.6", + "purl": "pkg:pypi/jinja2@3.1.6", + "type": "library", + "bom-ref": "pkg:pypi/jinja2@3.1.6" + }, + { + "name": "markupsafe", + "version": "3.0.3", + "purl": "pkg:pypi/markupsafe@3.0.3", + "type": "library", + "bom-ref": "pkg:pypi/markupsafe@3.0.3" + }, + { + "name": "werkzeug", + "version": "3.1.7", + "purl": "pkg:pypi/werkzeug@3.1.7", + "type": "library", + "bom-ref": "pkg:pypi/werkzeug@3.1.7" + }, + { + "name": "requests", + "version": "2.33.0", + "purl": "pkg:pypi/requests@2.33.0", + "type": "library", + "bom-ref": "pkg:pypi/requests@2.33.0" + }, + { + "name": "certifi", + "version": "2026.2.25", + "purl": "pkg:pypi/certifi@2026.2.25", + "type": "library", + "bom-ref": "pkg:pypi/certifi@2026.2.25" + }, + { + "name": "charset-normalizer", + "version": "3.4.6", + "purl": "pkg:pypi/charset-normalizer@3.4.6", + "type": "library", + "bom-ref": "pkg:pypi/charset-normalizer@3.4.6" + }, + { + "name": "idna", + "version": "3.11", + "purl": "pkg:pypi/idna@3.11", + "type": "library", + "bom-ref": "pkg:pypi/idna@3.11" + }, + { + "name": "urllib3", + "version": "2.6.3", + "purl": "pkg:pypi/urllib3@2.6.3", + "type": "library", + "bom-ref": "pkg:pypi/urllib3@2.6.3" + } + ], + "dependencies": [ + { + "ref": "pkg:pypi/test-project@1.0.0", + "dependsOn": [ + "pkg:pypi/flask@3.1.3", + "pkg:pypi/requests@2.33.0" + ] + }, + { + "ref": "pkg:pypi/flask@3.1.3", + "dependsOn": [ + "pkg:pypi/blinker@1.9.0", + "pkg:pypi/itsdangerous@2.2.0", + "pkg:pypi/jinja2@3.1.6", + "pkg:pypi/werkzeug@3.1.7" + ] + }, + { + "ref": "pkg:pypi/blinker@1.9.0", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/itsdangerous@2.2.0", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/jinja2@3.1.6", + "dependsOn": [ + "pkg:pypi/markupsafe@3.0.3" + ] + }, + { + "ref": "pkg:pypi/markupsafe@3.0.3", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/werkzeug@3.1.7", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/requests@2.33.0", + "dependsOn": [ + "pkg:pypi/certifi@2026.2.25", + "pkg:pypi/charset-normalizer@3.4.6", + "pkg:pypi/idna@3.11", + "pkg:pypi/urllib3@2.6.3" + ] + }, + { + "ref": "pkg:pypi/certifi@2026.2.25", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/charset-normalizer@3.4.6", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/idna@3.11", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/urllib3@2.6.3", + "dependsOn": [] + } + ] +} \ No newline at end of file diff --git a/test/providers/tst_manifests/pyproject/poetry_lock/poetry.lock b/test/providers/tst_manifests/pyproject/poetry_lock/poetry.lock new file mode 100644 index 00000000..7eec73e1 --- /dev/null +++ b/test/providers/tst_manifests/pyproject/poetry_lock/poetry.lock @@ -0,0 +1,424 @@ +# This file is automatically @generated by Poetry 2.3.2 and should not be changed by hand. + +[[package]] +name = "blinker" +version = "1.9.0" +description = "Fast, simple object-to-object and broadcast signaling" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc"}, + {file = "blinker-1.9.0.tar.gz", hash = "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf"}, +] + +[[package]] +name = "certifi" +version = "2026.2.25" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa"}, + {file = "certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.6" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "charset_normalizer-3.4.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2e1d8ca8611099001949d1cdfaefc510cf0f212484fe7c565f735b68c78c3c95"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e25369dc110d58ddf29b949377a93e0716d72a24f62bad72b2b39f155949c1fd"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:259695e2ccc253feb2a016303543d691825e920917e31f894ca1a687982b1de4"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:dda86aba335c902b6149a02a55b38e96287157e609200811837678214ba2b1db"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51fb3c322c81d20567019778cb5a4a6f2dc1c200b886bc0d636238e364848c89"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:4482481cb0572180b6fd976a4d5c72a30263e98564da68b86ec91f0fe35e8565"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:39f5068d35621da2881271e5c3205125cc456f54e9030d3f723288c873a71bf9"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8bea55c4eef25b0b19a0337dc4e3f9a15b00d569c77211fa8cde38684f234fb7"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:f0cdaecd4c953bfae0b6bb64910aaaca5a424ad9c72d85cb88417bb9814f7550"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:150b8ce8e830eb7ccb029ec9ca36022f756986aaaa7956aad6d9ec90089338c0"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:e68c14b04827dd76dcbd1aeea9e604e3e4b78322d8faf2f8132c7138efa340a8"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:3778fd7d7cd04ae8f54651f4a7a0bd6e39a0cf20f801720a4c21d80e9b7ad6b0"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:dad6e0f2e481fffdcf776d10ebee25e0ef89f16d691f1e5dee4b586375fdc64b"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-win32.whl", hash = "sha256:74a2e659c7ecbc73562e2a15e05039f1e22c75b7c7618b4b574a3ea9118d1557"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-win_amd64.whl", hash = "sha256:aa9cccf4a44b9b62d8ba8b4dd06c649ba683e4bf04eea606d2e94cfc2d6ff4d6"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-win_arm64.whl", hash = "sha256:e985a16ff513596f217cee86c21371b8cd011c0f6f056d0920aa2d926c544058"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:82060f995ab5003a2d6e0f4ad29065b7672b6593c8c63559beefe5b443242c3e"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:60c74963d8350241a79cb8feea80e54d518f72c26db618862a8f53e5023deaf9"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f6e4333fb15c83f7d1482a76d45a0818897b3d33f00efd215528ff7c51b8e35d"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:bc72863f4d9aba2e8fd9085e63548a324ba706d2ea2c83b260da08a59b9482de"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9cc4fc6c196d6a8b76629a70ddfcd4635a6898756e2d9cac5565cf0654605d73"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:0c173ce3a681f309f31b87125fecec7a5d1347261ea11ebbb856fa6006b23c8c"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c907cdc8109f6c619e6254212e794d6548373cc40e1ec75e6e3823d9135d29cc"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:404a1e552cf5b675a87f0651f8b79f5f1e6fd100ee88dc612f89aa16abd4486f"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:e3c701e954abf6fc03a49f7c579cc80c2c6cc52525340ca3186c41d3f33482ef"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7a6967aaf043bceabab5412ed6bd6bd26603dae84d5cb75bf8d9a74a4959d398"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:5feb91325bbceade6afab43eb3b508c63ee53579fe896c77137ded51c6b6958e"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:f820f24b09e3e779fe84c3c456cb4108a7aa639b0d1f02c28046e11bfcd088ed"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b35b200d6a71b9839a46b9b7fff66b6638bb52fc9658aa58796b0326595d3021"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-win32.whl", hash = "sha256:9ca4c0b502ab399ef89248a2c84c54954f77a070f28e546a85e91da627d1301e"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-win_amd64.whl", hash = "sha256:a9e68c9d88823b274cf1e72f28cb5dc89c990edf430b0bfd3e2fb0785bfeabf4"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-win_arm64.whl", hash = "sha256:97d0235baafca5f2b09cf332cc275f021e694e8362c6bb9c96fc9a0eb74fc316"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2ef7fedc7a6ecbe99969cd09632516738a97eeb8bd7258bf8a0f23114c057dab"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a4ea868bc28109052790eb2b52a9ab33f3aa7adc02f96673526ff47419490e21"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:836ab36280f21fc1a03c99cd05c6b7af70d2697e374c7af0b61ed271401a72a2"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f1ce721c8a7dfec21fcbdfe04e8f68174183cf4e8188e0645e92aa23985c57ff"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e28d62a8fc7a1fa411c43bd65e346f3bce9716dc51b897fbe930c5987b402d5"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:530d548084c4a9f7a16ed4a294d459b4f229db50df689bfe92027452452943a0"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:30f445ae60aad5e1f8bdbb3108e39f6fbc09f4ea16c815c66578878325f8f15a"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ac2393c73378fea4e52aa56285a3d64be50f1a12395afef9cce47772f60334c2"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:90ca27cd8da8118b18a52d5f547859cc1f8354a00cd1e8e5120df3e30d6279e5"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8e5a94886bedca0f9b78fecd6afb6629142fd2605aa70a125d49f4edc6037ee6"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:695f5c2823691a25f17bc5d5ffe79fa90972cc34b002ac6c843bb8a1720e950d"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:231d4da14bcd9301310faf492051bee27df11f2bc7549bc0bb41fef11b82daa2"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a056d1ad2633548ca18ffa2f85c202cfb48b68615129143915b8dc72a806a923"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-win32.whl", hash = "sha256:c2274ca724536f173122f36c98ce188fd24ce3dad886ec2b7af859518ce008a4"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-win_amd64.whl", hash = "sha256:c8ae56368f8cc97c7e40a7ee18e1cedaf8e780cd8bc5ed5ac8b81f238614facb"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-win_arm64.whl", hash = "sha256:899d28f422116b08be5118ef350c292b36fc15ec2daeb9ea987c89281c7bb5c4"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:11afb56037cbc4b1555a34dd69151e8e069bee82e613a73bef6e714ce733585f"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:423fb7e748a08f854a08a222b983f4df1912b1daedce51a72bd24fe8f26a1843"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d73beaac5e90173ac3deb9928a74763a6d230f494e4bfb422c217a0ad8e629bf"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d60377dce4511655582e300dc1e5a5f24ba0cb229005a1d5c8d0cb72bb758ab8"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:530e8cebeea0d76bdcf93357aa5e41336f48c3dc709ac52da2bb167c5b8271d9"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:a26611d9987b230566f24a0a125f17fe0de6a6aff9f25c9f564aaa2721a5fb88"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:34315ff4fc374b285ad7f4a0bf7dcbfe769e1b104230d40f49f700d4ab6bbd84"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5f8ddd609f9e1af8c7bd6e2aca279c931aefecd148a14402d4e368f3171769fd"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:80d0a5615143c0b3225e5e3ef22c8d5d51f3f72ce0ea6fb84c943546c7b25b6c"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:92734d4d8d187a354a556626c221cd1a892a4e0802ccb2af432a1d85ec012194"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:613f19aa6e082cf96e17e3ffd89383343d0d589abda756b7764cf78361fd41dc"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:2b1a63e8224e401cafe7739f77efd3f9e7f5f2026bda4aead8e59afab537784f"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6cceb5473417d28edd20c6c984ab6fee6c6267d38d906823ebfe20b03d607dc2"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-win32.whl", hash = "sha256:d7de2637729c67d67cf87614b566626057e95c303bc0a55ffe391f5205e7003d"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-win_amd64.whl", hash = "sha256:572d7c822caf521f0525ba1bce1a622a0b85cf47ffbdae6c9c19e3b5ac3c4389"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-win_arm64.whl", hash = "sha256:a4474d924a47185a06411e0064b803c68be044be2d60e50e8bddcc2649957c1f"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:9cc6e6d9e571d2f863fa77700701dae73ed5f78881efc8b3f9a4398772ff53e8"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef5960d965e67165d75b7c7ffc60a83ec5abfc5c11b764ec13ea54fbef8b4421"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b3694e3f87f8ac7ce279d4355645b3c878d24d1424581b46282f24b92f5a4ae2"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5d11595abf8dd942a77883a39d81433739b287b6aa71620f15164f8096221b30"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7bda6eebafd42133efdca535b04ccb338ab29467b3f7bf79569883676fc628db"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:bbc8c8650c6e51041ad1be191742b8b421d05bbd3410f43fa2a00c8db87678e8"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:22c6f0c2fbc31e76c3b8a86fba1a56eda6166e238c29cdd3d14befdb4a4e4815"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7edbed096e4a4798710ed6bc75dcaa2a21b68b6c356553ac4823c3658d53743a"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:7f9019c9cb613f084481bd6a100b12e1547cf2efe362d873c2e31e4035a6fa43"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:58c948d0d086229efc484fe2f30c2d382c86720f55cd9bc33591774348ad44e0"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:419a9d91bd238052642a51938af8ac05da5b3343becde08d5cdeab9046df9ee1"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:5273b9f0b5835ff0350c0828faea623c68bfa65b792720c453e22b25cc72930f"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:0e901eb1049fdb80f5bd11ed5ea1e498ec423102f7a9b9e4645d5b8204ff2815"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-win32.whl", hash = "sha256:b4ff1d35e8c5bd078be89349b6f3a845128e685e751b6ea1169cf2160b344c4d"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-win_amd64.whl", hash = "sha256:74119174722c4349af9708993118581686f343adc1c8c9c007d59be90d077f3f"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-win_arm64.whl", hash = "sha256:e5bcc1a1ae744e0bb59641171ae53743760130600da8db48cbb6e4918e186e4e"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ad8faf8df23f0378c6d527d8b0b15ea4a2e23c89376877c598c4870d1b2c7866"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f5ea69428fa1b49573eef0cc44a1d43bebd45ad0c611eb7d7eac760c7ae771bc"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:06a7e86163334edfc5d20fe104db92fcd666e5a5df0977cb5680a506fe26cc8e"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e1f6e2f00a6b8edb562826e4632e26d063ac10307e80f7461f7de3ad8ef3f077"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95b52c68d64c1878818687a473a10547b3292e82b6f6fe483808fb1468e2f52f"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:7504e9b7dc05f99a9bbb4525c67a2c155073b44d720470a148b34166a69c054e"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:172985e4ff804a7ad08eebec0a1640ece87ba5041d565fff23c8f99c1f389484"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:4be9f4830ba8741527693848403e2c457c16e499100963ec711b1c6f2049b7c7"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:79090741d842f564b1b2827c0b82d846405b744d31e84f18d7a7b41c20e473ff"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:87725cfb1a4f1f8c2fc9890ae2f42094120f4b44db9360be5d99a4c6b0e03a9e"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:fcce033e4021347d80ed9c66dcf1e7b1546319834b74445f561d2e2221de5659"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:ca0276464d148c72defa8bb4390cce01b4a0e425f3b50d1435aa6d7a18107602"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:197c1a244a274bb016dd8b79204850144ef77fe81c5b797dc389327adb552407"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-win32.whl", hash = "sha256:2a24157fa36980478dd1770b585c0f30d19e18f4fb0c47c13aa568f871718579"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-win_amd64.whl", hash = "sha256:cd5e2801c89992ed8c0a3f0293ae83c159a60d9a5d685005383ef4caca77f2c4"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-win_arm64.whl", hash = "sha256:47955475ac79cc504ef2704b192364e51d0d473ad452caedd0002605f780101c"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:659a1e1b500fac8f2779dd9e1570464e012f43e580371470b45277a27baa7532"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f61aa92e4aad0be58eb6eb4e0c21acf32cf8065f4b2cae5665da756c4ceef982"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f50498891691e0864dc3da965f340fada0771f6142a378083dc4608f4ea513e2"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:bf625105bb9eef28a56a943fec8c8a98aeb80e7d7db99bd3c388137e6eb2d237"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2bd9d128ef93637a5d7a6af25363cf5dec3fa21cf80e68055aad627f280e8afa"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-manylinux_2_31_armv7l.whl", hash = "sha256:d08ec48f0a1c48d75d0356cea971921848fb620fdeba805b28f937e90691209f"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1ed80ff870ca6de33f4d953fda4d55654b9a2b340ff39ab32fa3adbcd718f264"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f98059e4fcd3e3e4e2d632b7cf81c2faae96c43c60b569e9c621468082f1d104"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:ab30e5e3e706e3063bc6de96b118688cb10396b70bb9864a430f67df98c61ecc"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:d5f5d1e9def3405f60e3ca8232d56f35c98fb7bf581efcc60051ebf53cb8b611"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-musllinux_1_2_riscv64.whl", hash = "sha256:461598cd852bfa5a61b09cae2b1c02e2efcd166ee5516e243d540ac24bfa68a7"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:71be7e0e01753a89cf024abf7ecb6bca2c81738ead80d43004d9b5e3f1244e64"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:df01808ee470038c3f8dc4f48620df7225c49c2d6639e38f96e6d6ac6e6f7b0e"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-win32.whl", hash = "sha256:69dd852c2f0ad631b8b60cfbe25a28c0058a894de5abb566619c205ce0550eae"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-win_amd64.whl", hash = "sha256:517ad0e93394ac532745129ceabdf2696b609ec9f87863d337140317ebce1c14"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:31215157227939b4fb3d740cd23fe27be0439afef67b785a1eb78a3ae69cba9e"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecbbd45615a6885fe3240eb9db73b9e62518b611850fdf8ab08bd56de7ad2b17"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c45a03a4c69820a399f1dda9e1d8fbf3562eda46e7720458180302021b08f778"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e8aeb10fcbe92767f0fa69ad5a72deca50d0dca07fbde97848997d778a50c9fe"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:54fae94be3d75f3e573c9a1b5402dc593de19377013c9a0e4285e3d402dd3a2a"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-manylinux_2_31_armv7l.whl", hash = "sha256:2f7fdd9b6e6c529d6a2501a2d36b240109e78a8ceaef5687cfcfa2bbe671d297"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4d1d02209e06550bdaef34af58e041ad71b88e624f5d825519da3a3308e22687"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8bc5f0687d796c05b1e28ab0d38a50e6309906ee09375dd3aff6a9c09dd6e8f4"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:ee4ec14bc1680d6b0afab9aea2ef27e26d2024f18b24a2d7155a52b60da7e833"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:d1a2ee9c1499fc8f86f4521f27a973c914b211ffa87322f4ee33bb35392da2c5"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:48696db7f18afb80a068821504296eb0787d9ce239b91ca15059d1d3eaacf13b"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4f41da960b196ea355357285ad1316a00099f22d0929fe168343b99b254729c9"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:802168e03fba8bbc5ce0d866d589e4b1ca751d06edee69f7f3a19c5a9fe6b597"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-win32.whl", hash = "sha256:8761ac29b6c81574724322a554605608a9960769ea83d2c73e396f3df896ad54"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-win_amd64.whl", hash = "sha256:1cf0a70018692f85172348fe06d3a4b63f94ecb055e13a00c644d368eb82e5b8"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-win_arm64.whl", hash = "sha256:3516bbb8d42169de9e61b8520cbeeeb716f12f4ecfe3fd30a9919aa16c806ca8"}, + {file = "charset_normalizer-3.4.6-py3-none-any.whl", hash = "sha256:947cf925bc916d90adba35a64c82aace04fa39b46b52d4630ece166655905a69"}, + {file = "charset_normalizer-3.4.6.tar.gz", hash = "sha256:1ae6b62897110aa7c79ea2f5dd38d1abca6db663687c0b1ad9aed6f6bae3d9d6"}, +] + +[[package]] +name = "click" +version = "8.3.1" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6"}, + {file = "click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main"] +markers = "platform_system == \"Windows\"" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "flask" +version = "3.1.3" +description = "A simple framework for building complex web applications." +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "flask-3.1.3-py3-none-any.whl", hash = "sha256:f4bcbefc124291925f1a26446da31a5178f9483862233b23c0c96a20701f670c"}, + {file = "flask-3.1.3.tar.gz", hash = "sha256:0ef0e52b8a9cd932855379197dd8f94047b359ca0a78695144304cb45f87c9eb"}, +] + +[package.dependencies] +blinker = ">=1.9.0" +click = ">=8.1.3" +itsdangerous = ">=2.2.0" +jinja2 = ">=3.1.2" +markupsafe = ">=2.1.1" +werkzeug = ">=3.1.0" + +[package.extras] +async = ["asgiref (>=3.2)"] +dotenv = ["python-dotenv"] + +[[package]] +name = "idna" +version = "3.11" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea"}, + {file = "idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902"}, +] + +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + +[[package]] +name = "itsdangerous" +version = "2.2.0" +description = "Safely pass data to untrusted environments and back." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef"}, + {file = "itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173"}, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, + {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "markupsafe" +version = "3.0.3" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "markupsafe-3.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2f981d352f04553a7171b8e44369f2af4055f888dfb147d55e42d29e29e74559"}, + {file = "markupsafe-3.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e1c1493fb6e50ab01d20a22826e57520f1284df32f2d8601fdd90b6304601419"}, + {file = "markupsafe-3.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ba88449deb3de88bd40044603fafffb7bc2b055d626a330323a9ed736661695"}, + {file = "markupsafe-3.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f42d0984e947b8adf7dd6dde396e720934d12c506ce84eea8476409563607591"}, + {file = "markupsafe-3.0.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c0c0b3ade1c0b13b936d7970b1d37a57acde9199dc2aecc4c336773e1d86049c"}, + {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0303439a41979d9e74d18ff5e2dd8c43ed6c6001fd40e5bf2e43f7bd9bbc523f"}, + {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:d2ee202e79d8ed691ceebae8e0486bd9a2cd4794cec4824e1c99b6f5009502f6"}, + {file = "markupsafe-3.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:177b5253b2834fe3678cb4a5f0059808258584c559193998be2601324fdeafb1"}, + {file = "markupsafe-3.0.3-cp310-cp310-win32.whl", hash = "sha256:2a15a08b17dd94c53a1da0438822d70ebcd13f8c3a95abe3a9ef9f11a94830aa"}, + {file = "markupsafe-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:c4ffb7ebf07cfe8931028e3e4c85f0357459a3f9f9490886198848f4fa002ec8"}, + {file = "markupsafe-3.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:e2103a929dfa2fcaf9bb4e7c091983a49c9ac3b19c9061b6d5427dd7d14d81a1"}, + {file = "markupsafe-3.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1cc7ea17a6824959616c525620e387f6dd30fec8cb44f649e31712db02123dad"}, + {file = "markupsafe-3.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bd4cd07944443f5a265608cc6aab442e4f74dff8088b0dfc8238647b8f6ae9a"}, + {file = "markupsafe-3.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b5420a1d9450023228968e7e6a9ce57f65d148ab56d2313fcd589eee96a7a50"}, + {file = "markupsafe-3.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bf2a864d67e76e5c9a34dc26ec616a66b9888e25e7b9460e1c76d3293bd9dbf"}, + {file = "markupsafe-3.0.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc51efed119bc9cfdf792cdeaa4d67e8f6fcccab66ed4bfdd6bde3e59bfcbb2f"}, + {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:068f375c472b3e7acbe2d5318dea141359e6900156b5b2ba06a30b169086b91a"}, + {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7be7b61bb172e1ed687f1754f8e7484f1c8019780f6f6b0786e76bb01c2ae115"}, + {file = "markupsafe-3.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f9e130248f4462aaa8e2552d547f36ddadbeaa573879158d721bbd33dfe4743a"}, + {file = "markupsafe-3.0.3-cp311-cp311-win32.whl", hash = "sha256:0db14f5dafddbb6d9208827849fad01f1a2609380add406671a26386cdf15a19"}, + {file = "markupsafe-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:de8a88e63464af587c950061a5e6a67d3632e36df62b986892331d4620a35c01"}, + {file = "markupsafe-3.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:3b562dd9e9ea93f13d53989d23a7e775fdfd1066c33494ff43f5418bc8c58a5c"}, + {file = "markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e"}, + {file = "markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce"}, + {file = "markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d"}, + {file = "markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d"}, + {file = "markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a"}, + {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b"}, + {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f"}, + {file = "markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b"}, + {file = "markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d"}, + {file = "markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c"}, + {file = "markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f"}, + {file = "markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795"}, + {file = "markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219"}, + {file = "markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6"}, + {file = "markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676"}, + {file = "markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9"}, + {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1"}, + {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc"}, + {file = "markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12"}, + {file = "markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed"}, + {file = "markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5"}, + {file = "markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485"}, + {file = "markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73"}, + {file = "markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37"}, + {file = "markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19"}, + {file = "markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025"}, + {file = "markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6"}, + {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f"}, + {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb"}, + {file = "markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009"}, + {file = "markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354"}, + {file = "markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218"}, + {file = "markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287"}, + {file = "markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe"}, + {file = "markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026"}, + {file = "markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737"}, + {file = "markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97"}, + {file = "markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d"}, + {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda"}, + {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf"}, + {file = "markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe"}, + {file = "markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9"}, + {file = "markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581"}, + {file = "markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4"}, + {file = "markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab"}, + {file = "markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175"}, + {file = "markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634"}, + {file = "markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50"}, + {file = "markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e"}, + {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5"}, + {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523"}, + {file = "markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc"}, + {file = "markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d"}, + {file = "markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9"}, + {file = "markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa"}, + {file = "markupsafe-3.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15d939a21d546304880945ca1ecb8a039db6b4dc49b2c5a400387cdae6a62e26"}, + {file = "markupsafe-3.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f71a396b3bf33ecaa1626c255855702aca4d3d9fea5e051b41ac59a9c1c41edc"}, + {file = "markupsafe-3.0.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f4b68347f8c5eab4a13419215bdfd7f8c9b19f2b25520968adfad23eb0ce60c"}, + {file = "markupsafe-3.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8fc20152abba6b83724d7ff268c249fa196d8259ff481f3b1476383f8f24e42"}, + {file = "markupsafe-3.0.3-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:949b8d66bc381ee8b007cd945914c721d9aba8e27f71959d750a46f7c282b20b"}, + {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:3537e01efc9d4dccdf77221fb1cb3b8e1a38d5428920e0657ce299b20324d758"}, + {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:591ae9f2a647529ca990bc681daebdd52c8791ff06c2bfa05b65163e28102ef2"}, + {file = "markupsafe-3.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a320721ab5a1aba0a233739394eb907f8c8da5c98c9181d1161e77a0c8e36f2d"}, + {file = "markupsafe-3.0.3-cp39-cp39-win32.whl", hash = "sha256:df2449253ef108a379b8b5d6b43f4b1a8e81a061d6537becd5582fba5f9196d7"}, + {file = "markupsafe-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:7c3fb7d25180895632e5d3148dbdc29ea38ccb7fd210aa27acbd1201a1902c6e"}, + {file = "markupsafe-3.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:38664109c14ffc9e7437e86b4dceb442b0096dfe3541d7864d9cbe1da4cf36c8"}, + {file = "markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698"}, +] + +[[package]] +name = "requests" +version = "2.33.0" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "requests-2.33.0-py3-none-any.whl", hash = "sha256:3324635456fa185245e24865e810cecec7b4caf933d7eb133dcde67d48cee69b"}, + {file = "requests-2.33.0.tar.gz", hash = "sha256:c7ebc5e8b0f21837386ad0e1c8fe8b829fa5f544d8df3b2253bff14ef29d7652"}, +] + +[package.dependencies] +certifi = ">=2023.5.7" +charset_normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.26,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +test = ["PySocks (>=1.5.6,!=1.5.7)", "pytest (>=3)", "pytest-cov", "pytest-httpbin (==2.1.0)", "pytest-mock", "pytest-xdist"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<8)"] + +[[package]] +name = "urllib3" +version = "2.6.3" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4"}, + {file = "urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed"}, +] + +[package.extras] +brotli = ["brotli (>=1.2.0) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=1.2.0.0) ; platform_python_implementation != \"CPython\""] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["backports-zstd (>=1.0.0) ; python_version < \"3.14\""] + +[[package]] +name = "werkzeug" +version = "3.1.7" +description = "The comprehensive WSGI web application library." +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "werkzeug-3.1.7-py3-none-any.whl", hash = "sha256:4b314d81163a3e1a169b6a0be2a000a0e204e8873c5de6586f453c55688d422f"}, + {file = "werkzeug-3.1.7.tar.gz", hash = "sha256:fb8c01fe6ab13b9b7cdb46892b99b1d66754e1d7ab8e542e865ec13f526b5351"}, +] + +[package.dependencies] +markupsafe = ">=2.1.1" + +[package.extras] +watchdog = ["watchdog (>=2.3)"] + +[metadata] +lock-version = "2.1" +python-versions = "^3.11" +content-hash = "eb868b11bfba7b0ee596e7653ef3cbeda20604ed713fda827d666e9e04956142" diff --git a/test/providers/tst_manifests/pyproject/poetry_lock/pyproject.toml b/test/providers/tst_manifests/pyproject/poetry_lock/pyproject.toml new file mode 100644 index 00000000..534775ab --- /dev/null +++ b/test/providers/tst_manifests/pyproject/poetry_lock/pyproject.toml @@ -0,0 +1,14 @@ +[project] +name = "test-project" +version = "1.0.0" +dependencies = [ + "Flask==3.1.3", + "requests==2.33.0", + "click==8.3.1", #exhortignore +] + +[tool.poetry.dependencies] +python = "^3.11" + +[tool.poetry] +name = "test-project" diff --git a/test/providers/tst_manifests/pyproject/poetry_only_deps/expected_component_sbom.json b/test/providers/tst_manifests/pyproject/poetry_only_deps/expected_component_sbom.json new file mode 100644 index 00000000..06737c4e --- /dev/null +++ b/test/providers/tst_manifests/pyproject/poetry_only_deps/expected_component_sbom.json @@ -0,0 +1,60 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-10-01T00:00:00.000Z", + "component": { + "name": "poetry-only-project", + "version": "1.0.0", + "purl": "pkg:pypi/poetry-only-project@1.0.0", + "type": "application", + "bom-ref": "pkg:pypi/poetry-only-project@1.0.0" + } + }, + "components": [ + { + "name": "click", + "version": "8.1.8", + "purl": "pkg:pypi/click@8.1.8", + "type": "library", + "bom-ref": "pkg:pypi/click@8.1.8" + }, + { + "name": "flask", + "version": "2.3.3", + "purl": "pkg:pypi/flask@2.3.3", + "type": "library", + "bom-ref": "pkg:pypi/flask@2.3.3" + }, + { + "name": "requests", + "version": "2.32.4", + "purl": "pkg:pypi/requests@2.32.4", + "type": "library", + "bom-ref": "pkg:pypi/requests@2.32.4" + } + ], + "dependencies": [ + { + "ref": "pkg:pypi/poetry-only-project@1.0.0", + "dependsOn": [ + "pkg:pypi/click@8.1.8", + "pkg:pypi/flask@2.3.3", + "pkg:pypi/requests@2.32.4" + ] + }, + { + "ref": "pkg:pypi/click@8.1.8", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/flask@2.3.3", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/requests@2.32.4", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/pyproject/poetry_only_deps/expected_stack_sbom.json b/test/providers/tst_manifests/pyproject/poetry_only_deps/expected_stack_sbom.json new file mode 100644 index 00000000..2f7167af --- /dev/null +++ b/test/providers/tst_manifests/pyproject/poetry_only_deps/expected_stack_sbom.json @@ -0,0 +1,222 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-10-01T00:00:00.000Z", + "component": { + "name": "poetry-only-project", + "version": "1.0.0", + "purl": "pkg:pypi/poetry-only-project@1.0.0", + "type": "application", + "bom-ref": "pkg:pypi/poetry-only-project@1.0.0" + } + }, + "components": [ + { + "name": "click", + "version": "8.1.8", + "purl": "pkg:pypi/click@8.1.8", + "type": "library", + "bom-ref": "pkg:pypi/click@8.1.8" + }, + { + "name": "colorama", + "version": "0.4.6", + "purl": "pkg:pypi/colorama@0.4.6", + "type": "library", + "bom-ref": "pkg:pypi/colorama@0.4.6" + }, + { + "name": "flask", + "version": "2.3.3", + "purl": "pkg:pypi/flask@2.3.3", + "type": "library", + "bom-ref": "pkg:pypi/flask@2.3.3" + }, + { + "name": "blinker", + "version": "1.8.2", + "purl": "pkg:pypi/blinker@1.8.2", + "type": "library", + "bom-ref": "pkg:pypi/blinker@1.8.2" + }, + { + "name": "importlib-metadata", + "version": "8.5.0", + "purl": "pkg:pypi/importlib-metadata@8.5.0", + "type": "library", + "bom-ref": "pkg:pypi/importlib-metadata@8.5.0" + }, + { + "name": "zipp", + "version": "3.20.2", + "purl": "pkg:pypi/zipp@3.20.2", + "type": "library", + "bom-ref": "pkg:pypi/zipp@3.20.2" + }, + { + "name": "itsdangerous", + "version": "2.2.0", + "purl": "pkg:pypi/itsdangerous@2.2.0", + "type": "library", + "bom-ref": "pkg:pypi/itsdangerous@2.2.0" + }, + { + "name": "jinja2", + "version": "3.1.6", + "purl": "pkg:pypi/jinja2@3.1.6", + "type": "library", + "bom-ref": "pkg:pypi/jinja2@3.1.6" + }, + { + "name": "markupsafe", + "version": "2.1.5", + "purl": "pkg:pypi/markupsafe@2.1.5", + "type": "library", + "bom-ref": "pkg:pypi/markupsafe@2.1.5" + }, + { + "name": "werkzeug", + "version": "3.0.6", + "purl": "pkg:pypi/werkzeug@3.0.6", + "type": "library", + "bom-ref": "pkg:pypi/werkzeug@3.0.6" + }, + { + "name": "requests", + "version": "2.32.4", + "purl": "pkg:pypi/requests@2.32.4", + "type": "library", + "bom-ref": "pkg:pypi/requests@2.32.4" + }, + { + "name": "certifi", + "version": "2026.2.25", + "purl": "pkg:pypi/certifi@2026.2.25", + "type": "library", + "bom-ref": "pkg:pypi/certifi@2026.2.25" + }, + { + "name": "charset-normalizer", + "version": "3.4.6", + "purl": "pkg:pypi/charset-normalizer@3.4.6", + "type": "library", + "bom-ref": "pkg:pypi/charset-normalizer@3.4.6" + }, + { + "name": "idna", + "version": "3.11", + "purl": "pkg:pypi/idna@3.11", + "type": "library", + "bom-ref": "pkg:pypi/idna@3.11" + }, + { + "name": "pysocks", + "version": "1.7.1", + "purl": "pkg:pypi/pysocks@1.7.1", + "type": "library", + "bom-ref": "pkg:pypi/pysocks@1.7.1" + }, + { + "name": "urllib3", + "version": "2.2.3", + "purl": "pkg:pypi/urllib3@2.2.3", + "type": "library", + "bom-ref": "pkg:pypi/urllib3@2.2.3" + } + ], + "dependencies": [ + { + "ref": "pkg:pypi/poetry-only-project@1.0.0", + "dependsOn": [ + "pkg:pypi/click@8.1.8", + "pkg:pypi/flask@2.3.3", + "pkg:pypi/requests@2.32.4" + ] + }, + { + "ref": "pkg:pypi/click@8.1.8", + "dependsOn": [ + "pkg:pypi/colorama@0.4.6" + ] + }, + { + "ref": "pkg:pypi/colorama@0.4.6", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/flask@2.3.3", + "dependsOn": [ + "pkg:pypi/blinker@1.8.2", + "pkg:pypi/click@8.1.8", + "pkg:pypi/importlib-metadata@8.5.0", + "pkg:pypi/itsdangerous@2.2.0", + "pkg:pypi/jinja2@3.1.6", + "pkg:pypi/werkzeug@3.0.6" + ] + }, + { + "ref": "pkg:pypi/blinker@1.8.2", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/importlib-metadata@8.5.0", + "dependsOn": [ + "pkg:pypi/zipp@3.20.2" + ] + }, + { + "ref": "pkg:pypi/zipp@3.20.2", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/itsdangerous@2.2.0", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/jinja2@3.1.6", + "dependsOn": [ + "pkg:pypi/markupsafe@2.1.5" + ] + }, + { + "ref": "pkg:pypi/markupsafe@2.1.5", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/werkzeug@3.0.6", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/requests@2.32.4", + "dependsOn": [ + "pkg:pypi/certifi@2026.2.25", + "pkg:pypi/charset-normalizer@3.4.6", + "pkg:pypi/idna@3.11", + "pkg:pypi/pysocks@1.7.1", + "pkg:pypi/urllib3@2.2.3" + ] + }, + { + "ref": "pkg:pypi/certifi@2026.2.25", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/charset-normalizer@3.4.6", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/idna@3.11", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/pysocks@1.7.1", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/urllib3@2.2.3", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/pyproject/poetry_only_deps/poetry.lock b/test/providers/tst_manifests/pyproject/poetry_only_deps/poetry.lock new file mode 100644 index 00000000..d613e7f9 --- /dev/null +++ b/test/providers/tst_manifests/pyproject/poetry_only_deps/poetry.lock @@ -0,0 +1,454 @@ +# This file is automatically @generated by Poetry 2.3.2 and should not be changed by hand. + +[[package]] +name = "blinker" +version = "1.8.2" +description = "Fast, simple object-to-object and broadcast signaling" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "blinker-1.8.2-py3-none-any.whl", hash = "sha256:1779309f71bf239144b9399d06ae925637cf6634cf6bd131104184531bf67c01"}, + {file = "blinker-1.8.2.tar.gz", hash = "sha256:8f77b09d3bf7c795e969e9486f39c2c5e9c39d4ee07424be2bc594ece9642d83"}, +] + +[[package]] +name = "certifi" +version = "2026.2.25" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa"}, + {file = "certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.6" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "charset_normalizer-3.4.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2e1d8ca8611099001949d1cdfaefc510cf0f212484fe7c565f735b68c78c3c95"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e25369dc110d58ddf29b949377a93e0716d72a24f62bad72b2b39f155949c1fd"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:259695e2ccc253feb2a016303543d691825e920917e31f894ca1a687982b1de4"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:dda86aba335c902b6149a02a55b38e96287157e609200811837678214ba2b1db"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51fb3c322c81d20567019778cb5a4a6f2dc1c200b886bc0d636238e364848c89"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:4482481cb0572180b6fd976a4d5c72a30263e98564da68b86ec91f0fe35e8565"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:39f5068d35621da2881271e5c3205125cc456f54e9030d3f723288c873a71bf9"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8bea55c4eef25b0b19a0337dc4e3f9a15b00d569c77211fa8cde38684f234fb7"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:f0cdaecd4c953bfae0b6bb64910aaaca5a424ad9c72d85cb88417bb9814f7550"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:150b8ce8e830eb7ccb029ec9ca36022f756986aaaa7956aad6d9ec90089338c0"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:e68c14b04827dd76dcbd1aeea9e604e3e4b78322d8faf2f8132c7138efa340a8"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:3778fd7d7cd04ae8f54651f4a7a0bd6e39a0cf20f801720a4c21d80e9b7ad6b0"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:dad6e0f2e481fffdcf776d10ebee25e0ef89f16d691f1e5dee4b586375fdc64b"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-win32.whl", hash = "sha256:74a2e659c7ecbc73562e2a15e05039f1e22c75b7c7618b4b574a3ea9118d1557"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-win_amd64.whl", hash = "sha256:aa9cccf4a44b9b62d8ba8b4dd06c649ba683e4bf04eea606d2e94cfc2d6ff4d6"}, + {file = "charset_normalizer-3.4.6-cp310-cp310-win_arm64.whl", hash = "sha256:e985a16ff513596f217cee86c21371b8cd011c0f6f056d0920aa2d926c544058"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:82060f995ab5003a2d6e0f4ad29065b7672b6593c8c63559beefe5b443242c3e"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:60c74963d8350241a79cb8feea80e54d518f72c26db618862a8f53e5023deaf9"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f6e4333fb15c83f7d1482a76d45a0818897b3d33f00efd215528ff7c51b8e35d"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:bc72863f4d9aba2e8fd9085e63548a324ba706d2ea2c83b260da08a59b9482de"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9cc4fc6c196d6a8b76629a70ddfcd4635a6898756e2d9cac5565cf0654605d73"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:0c173ce3a681f309f31b87125fecec7a5d1347261ea11ebbb856fa6006b23c8c"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c907cdc8109f6c619e6254212e794d6548373cc40e1ec75e6e3823d9135d29cc"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:404a1e552cf5b675a87f0651f8b79f5f1e6fd100ee88dc612f89aa16abd4486f"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:e3c701e954abf6fc03a49f7c579cc80c2c6cc52525340ca3186c41d3f33482ef"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7a6967aaf043bceabab5412ed6bd6bd26603dae84d5cb75bf8d9a74a4959d398"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:5feb91325bbceade6afab43eb3b508c63ee53579fe896c77137ded51c6b6958e"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:f820f24b09e3e779fe84c3c456cb4108a7aa639b0d1f02c28046e11bfcd088ed"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b35b200d6a71b9839a46b9b7fff66b6638bb52fc9658aa58796b0326595d3021"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-win32.whl", hash = "sha256:9ca4c0b502ab399ef89248a2c84c54954f77a070f28e546a85e91da627d1301e"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-win_amd64.whl", hash = "sha256:a9e68c9d88823b274cf1e72f28cb5dc89c990edf430b0bfd3e2fb0785bfeabf4"}, + {file = "charset_normalizer-3.4.6-cp311-cp311-win_arm64.whl", hash = "sha256:97d0235baafca5f2b09cf332cc275f021e694e8362c6bb9c96fc9a0eb74fc316"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2ef7fedc7a6ecbe99969cd09632516738a97eeb8bd7258bf8a0f23114c057dab"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a4ea868bc28109052790eb2b52a9ab33f3aa7adc02f96673526ff47419490e21"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:836ab36280f21fc1a03c99cd05c6b7af70d2697e374c7af0b61ed271401a72a2"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f1ce721c8a7dfec21fcbdfe04e8f68174183cf4e8188e0645e92aa23985c57ff"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e28d62a8fc7a1fa411c43bd65e346f3bce9716dc51b897fbe930c5987b402d5"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:530d548084c4a9f7a16ed4a294d459b4f229db50df689bfe92027452452943a0"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:30f445ae60aad5e1f8bdbb3108e39f6fbc09f4ea16c815c66578878325f8f15a"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ac2393c73378fea4e52aa56285a3d64be50f1a12395afef9cce47772f60334c2"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:90ca27cd8da8118b18a52d5f547859cc1f8354a00cd1e8e5120df3e30d6279e5"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8e5a94886bedca0f9b78fecd6afb6629142fd2605aa70a125d49f4edc6037ee6"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:695f5c2823691a25f17bc5d5ffe79fa90972cc34b002ac6c843bb8a1720e950d"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:231d4da14bcd9301310faf492051bee27df11f2bc7549bc0bb41fef11b82daa2"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a056d1ad2633548ca18ffa2f85c202cfb48b68615129143915b8dc72a806a923"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-win32.whl", hash = "sha256:c2274ca724536f173122f36c98ce188fd24ce3dad886ec2b7af859518ce008a4"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-win_amd64.whl", hash = "sha256:c8ae56368f8cc97c7e40a7ee18e1cedaf8e780cd8bc5ed5ac8b81f238614facb"}, + {file = "charset_normalizer-3.4.6-cp312-cp312-win_arm64.whl", hash = "sha256:899d28f422116b08be5118ef350c292b36fc15ec2daeb9ea987c89281c7bb5c4"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:11afb56037cbc4b1555a34dd69151e8e069bee82e613a73bef6e714ce733585f"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:423fb7e748a08f854a08a222b983f4df1912b1daedce51a72bd24fe8f26a1843"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d73beaac5e90173ac3deb9928a74763a6d230f494e4bfb422c217a0ad8e629bf"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d60377dce4511655582e300dc1e5a5f24ba0cb229005a1d5c8d0cb72bb758ab8"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:530e8cebeea0d76bdcf93357aa5e41336f48c3dc709ac52da2bb167c5b8271d9"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:a26611d9987b230566f24a0a125f17fe0de6a6aff9f25c9f564aaa2721a5fb88"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:34315ff4fc374b285ad7f4a0bf7dcbfe769e1b104230d40f49f700d4ab6bbd84"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5f8ddd609f9e1af8c7bd6e2aca279c931aefecd148a14402d4e368f3171769fd"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:80d0a5615143c0b3225e5e3ef22c8d5d51f3f72ce0ea6fb84c943546c7b25b6c"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:92734d4d8d187a354a556626c221cd1a892a4e0802ccb2af432a1d85ec012194"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:613f19aa6e082cf96e17e3ffd89383343d0d589abda756b7764cf78361fd41dc"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:2b1a63e8224e401cafe7739f77efd3f9e7f5f2026bda4aead8e59afab537784f"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6cceb5473417d28edd20c6c984ab6fee6c6267d38d906823ebfe20b03d607dc2"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-win32.whl", hash = "sha256:d7de2637729c67d67cf87614b566626057e95c303bc0a55ffe391f5205e7003d"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-win_amd64.whl", hash = "sha256:572d7c822caf521f0525ba1bce1a622a0b85cf47ffbdae6c9c19e3b5ac3c4389"}, + {file = "charset_normalizer-3.4.6-cp313-cp313-win_arm64.whl", hash = "sha256:a4474d924a47185a06411e0064b803c68be044be2d60e50e8bddcc2649957c1f"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:9cc6e6d9e571d2f863fa77700701dae73ed5f78881efc8b3f9a4398772ff53e8"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef5960d965e67165d75b7c7ffc60a83ec5abfc5c11b764ec13ea54fbef8b4421"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b3694e3f87f8ac7ce279d4355645b3c878d24d1424581b46282f24b92f5a4ae2"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5d11595abf8dd942a77883a39d81433739b287b6aa71620f15164f8096221b30"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7bda6eebafd42133efdca535b04ccb338ab29467b3f7bf79569883676fc628db"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:bbc8c8650c6e51041ad1be191742b8b421d05bbd3410f43fa2a00c8db87678e8"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:22c6f0c2fbc31e76c3b8a86fba1a56eda6166e238c29cdd3d14befdb4a4e4815"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7edbed096e4a4798710ed6bc75dcaa2a21b68b6c356553ac4823c3658d53743a"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:7f9019c9cb613f084481bd6a100b12e1547cf2efe362d873c2e31e4035a6fa43"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:58c948d0d086229efc484fe2f30c2d382c86720f55cd9bc33591774348ad44e0"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:419a9d91bd238052642a51938af8ac05da5b3343becde08d5cdeab9046df9ee1"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:5273b9f0b5835ff0350c0828faea623c68bfa65b792720c453e22b25cc72930f"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:0e901eb1049fdb80f5bd11ed5ea1e498ec423102f7a9b9e4645d5b8204ff2815"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-win32.whl", hash = "sha256:b4ff1d35e8c5bd078be89349b6f3a845128e685e751b6ea1169cf2160b344c4d"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-win_amd64.whl", hash = "sha256:74119174722c4349af9708993118581686f343adc1c8c9c007d59be90d077f3f"}, + {file = "charset_normalizer-3.4.6-cp314-cp314-win_arm64.whl", hash = "sha256:e5bcc1a1ae744e0bb59641171ae53743760130600da8db48cbb6e4918e186e4e"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ad8faf8df23f0378c6d527d8b0b15ea4a2e23c89376877c598c4870d1b2c7866"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f5ea69428fa1b49573eef0cc44a1d43bebd45ad0c611eb7d7eac760c7ae771bc"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:06a7e86163334edfc5d20fe104db92fcd666e5a5df0977cb5680a506fe26cc8e"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e1f6e2f00a6b8edb562826e4632e26d063ac10307e80f7461f7de3ad8ef3f077"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95b52c68d64c1878818687a473a10547b3292e82b6f6fe483808fb1468e2f52f"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:7504e9b7dc05f99a9bbb4525c67a2c155073b44d720470a148b34166a69c054e"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:172985e4ff804a7ad08eebec0a1640ece87ba5041d565fff23c8f99c1f389484"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:4be9f4830ba8741527693848403e2c457c16e499100963ec711b1c6f2049b7c7"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:79090741d842f564b1b2827c0b82d846405b744d31e84f18d7a7b41c20e473ff"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:87725cfb1a4f1f8c2fc9890ae2f42094120f4b44db9360be5d99a4c6b0e03a9e"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:fcce033e4021347d80ed9c66dcf1e7b1546319834b74445f561d2e2221de5659"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:ca0276464d148c72defa8bb4390cce01b4a0e425f3b50d1435aa6d7a18107602"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:197c1a244a274bb016dd8b79204850144ef77fe81c5b797dc389327adb552407"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-win32.whl", hash = "sha256:2a24157fa36980478dd1770b585c0f30d19e18f4fb0c47c13aa568f871718579"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-win_amd64.whl", hash = "sha256:cd5e2801c89992ed8c0a3f0293ae83c159a60d9a5d685005383ef4caca77f2c4"}, + {file = "charset_normalizer-3.4.6-cp314-cp314t-win_arm64.whl", hash = "sha256:47955475ac79cc504ef2704b192364e51d0d473ad452caedd0002605f780101c"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:659a1e1b500fac8f2779dd9e1570464e012f43e580371470b45277a27baa7532"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f61aa92e4aad0be58eb6eb4e0c21acf32cf8065f4b2cae5665da756c4ceef982"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f50498891691e0864dc3da965f340fada0771f6142a378083dc4608f4ea513e2"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:bf625105bb9eef28a56a943fec8c8a98aeb80e7d7db99bd3c388137e6eb2d237"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2bd9d128ef93637a5d7a6af25363cf5dec3fa21cf80e68055aad627f280e8afa"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-manylinux_2_31_armv7l.whl", hash = "sha256:d08ec48f0a1c48d75d0356cea971921848fb620fdeba805b28f937e90691209f"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1ed80ff870ca6de33f4d953fda4d55654b9a2b340ff39ab32fa3adbcd718f264"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:f98059e4fcd3e3e4e2d632b7cf81c2faae96c43c60b569e9c621468082f1d104"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:ab30e5e3e706e3063bc6de96b118688cb10396b70bb9864a430f67df98c61ecc"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:d5f5d1e9def3405f60e3ca8232d56f35c98fb7bf581efcc60051ebf53cb8b611"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-musllinux_1_2_riscv64.whl", hash = "sha256:461598cd852bfa5a61b09cae2b1c02e2efcd166ee5516e243d540ac24bfa68a7"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:71be7e0e01753a89cf024abf7ecb6bca2c81738ead80d43004d9b5e3f1244e64"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:df01808ee470038c3f8dc4f48620df7225c49c2d6639e38f96e6d6ac6e6f7b0e"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-win32.whl", hash = "sha256:69dd852c2f0ad631b8b60cfbe25a28c0058a894de5abb566619c205ce0550eae"}, + {file = "charset_normalizer-3.4.6-cp38-cp38-win_amd64.whl", hash = "sha256:517ad0e93394ac532745129ceabdf2696b609ec9f87863d337140317ebce1c14"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:31215157227939b4fb3d740cd23fe27be0439afef67b785a1eb78a3ae69cba9e"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecbbd45615a6885fe3240eb9db73b9e62518b611850fdf8ab08bd56de7ad2b17"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c45a03a4c69820a399f1dda9e1d8fbf3562eda46e7720458180302021b08f778"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e8aeb10fcbe92767f0fa69ad5a72deca50d0dca07fbde97848997d778a50c9fe"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:54fae94be3d75f3e573c9a1b5402dc593de19377013c9a0e4285e3d402dd3a2a"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-manylinux_2_31_armv7l.whl", hash = "sha256:2f7fdd9b6e6c529d6a2501a2d36b240109e78a8ceaef5687cfcfa2bbe671d297"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4d1d02209e06550bdaef34af58e041ad71b88e624f5d825519da3a3308e22687"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8bc5f0687d796c05b1e28ab0d38a50e6309906ee09375dd3aff6a9c09dd6e8f4"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:ee4ec14bc1680d6b0afab9aea2ef27e26d2024f18b24a2d7155a52b60da7e833"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:d1a2ee9c1499fc8f86f4521f27a973c914b211ffa87322f4ee33bb35392da2c5"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:48696db7f18afb80a068821504296eb0787d9ce239b91ca15059d1d3eaacf13b"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4f41da960b196ea355357285ad1316a00099f22d0929fe168343b99b254729c9"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:802168e03fba8bbc5ce0d866d589e4b1ca751d06edee69f7f3a19c5a9fe6b597"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-win32.whl", hash = "sha256:8761ac29b6c81574724322a554605608a9960769ea83d2c73e396f3df896ad54"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-win_amd64.whl", hash = "sha256:1cf0a70018692f85172348fe06d3a4b63f94ecb055e13a00c644d368eb82e5b8"}, + {file = "charset_normalizer-3.4.6-cp39-cp39-win_arm64.whl", hash = "sha256:3516bbb8d42169de9e61b8520cbeeeb716f12f4ecfe3fd30a9919aa16c806ca8"}, + {file = "charset_normalizer-3.4.6-py3-none-any.whl", hash = "sha256:947cf925bc916d90adba35a64c82aace04fa39b46b52d4630ece166655905a69"}, + {file = "charset_normalizer-3.4.6.tar.gz", hash = "sha256:1ae6b62897110aa7c79ea2f5dd38d1abca6db663687c0b1ad9aed6f6bae3d9d6"}, +] + +[[package]] +name = "click" +version = "8.1.8" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, + {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main"] +markers = "platform_system == \"Windows\"" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "flask" +version = "2.3.3" +description = "A simple framework for building complex web applications." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "flask-2.3.3-py3-none-any.whl", hash = "sha256:f69fcd559dc907ed196ab9df0e48471709175e696d6e698dd4dbe940f96ce66b"}, + {file = "flask-2.3.3.tar.gz", hash = "sha256:09c347a92aa7ff4a8e7f3206795f30d826654baf38b873d0744cd571ca609efc"}, +] + +[package.dependencies] +blinker = ">=1.6.2" +click = ">=8.1.3" +importlib-metadata = {version = ">=3.6.0", markers = "python_version < \"3.10\""} +itsdangerous = ">=2.1.2" +Jinja2 = ">=3.1.2" +Werkzeug = ">=2.3.7" + +[package.extras] +async = ["asgiref (>=3.2)"] +dotenv = ["python-dotenv"] + +[[package]] +name = "idna" +version = "3.11" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea"}, + {file = "idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902"}, +] + +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + +[[package]] +name = "importlib-metadata" +version = "8.5.0" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.8" +groups = ["main"] +markers = "python_version < \"3.10\"" +files = [ + {file = "importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b"}, + {file = "importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7"}, +] + +[package.dependencies] +zipp = ">=3.20" + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +perf = ["ipython"] +test = ["flufl.flake8", "importlib-resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +type = ["pytest-mypy"] + +[[package]] +name = "itsdangerous" +version = "2.2.0" +description = "Safely pass data to untrusted environments and back." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef"}, + {file = "itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173"}, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, + {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "markupsafe" +version = "2.1.5" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, +] + +[[package]] +name = "pysocks" +version = "1.7.1" +description = "A Python SOCKS client module. See https://github.com/Anorov/PySocks for more information." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["main"] +files = [ + {file = "PySocks-1.7.1-py27-none-any.whl", hash = "sha256:08e69f092cc6dbe92a0fdd16eeb9b9ffbc13cadfe5ca4c7bd92ffb078b293299"}, + {file = "PySocks-1.7.1-py3-none-any.whl", hash = "sha256:2725bd0a9925919b9b51739eea5f9e2bae91e83288108a9ad338b2e3a4435ee5"}, + {file = "PySocks-1.7.1.tar.gz", hash = "sha256:3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0"}, +] + +[[package]] +name = "requests" +version = "2.32.4" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c"}, + {file = "requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset_normalizer = ">=2,<4" +idna = ">=2.5,<4" +PySocks = {version = ">=1.5.6,<1.5.7 || >1.5.7", optional = true, markers = "extra == \"socks\""} +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "urllib3" +version = "2.2.3" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "werkzeug" +version = "3.0.6" +description = "The comprehensive WSGI web application library." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "werkzeug-3.0.6-py3-none-any.whl", hash = "sha256:1bc0c2310d2fbb07b1dd1105eba2f7af72f322e1e455f2f93c993bee8c8a5f17"}, + {file = "werkzeug-3.0.6.tar.gz", hash = "sha256:a8dd59d4de28ca70471a34cba79bed5f7ef2e036a76b3ab0835474246eb41f8d"}, +] + +[package.dependencies] +MarkupSafe = ">=2.1.1" + +[package.extras] +watchdog = ["watchdog (>=2.3)"] + +[[package]] +name = "zipp" +version = "3.20.2" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.8" +groups = ["main"] +markers = "python_version < \"3.10\"" +files = [ + {file = "zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350"}, + {file = "zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29"}, +] + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "importlib-resources ; python_version < \"3.9\"", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] + +[metadata] +lock-version = "2.1" +python-versions = "^3.8" +content-hash = "5d824396d5c4ef2cb141c1e7789c2e73641d604cd165f06fbc1418c46219915c" diff --git a/test/providers/tst_manifests/pyproject/poetry_only_deps/pyproject.toml b/test/providers/tst_manifests/pyproject/poetry_only_deps/pyproject.toml new file mode 100644 index 00000000..1f740fe8 --- /dev/null +++ b/test/providers/tst_manifests/pyproject/poetry_only_deps/pyproject.toml @@ -0,0 +1,10 @@ +[tool.poetry] +name = "poetry-only-project" +version = "1.0.0" +description = "A project using only poetry dependencies" + +[tool.poetry.dependencies] +python = "^3.8" +Flask = "^2.0.3" +requests = {version = "^2.25.1", extras = ["socks"]} +click = "^8.0.4" diff --git a/test/providers/tst_manifests/pyproject/uv_lock/expected_component_sbom.json b/test/providers/tst_manifests/pyproject/uv_lock/expected_component_sbom.json new file mode 100644 index 00000000..7d952815 --- /dev/null +++ b/test/providers/tst_manifests/pyproject/uv_lock/expected_component_sbom.json @@ -0,0 +1,48 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-10-01T00:00:00.000Z", + "component": { + "name": "test-project", + "version": "1.0.0", + "purl": "pkg:pypi/test-project@1.0.0", + "type": "application", + "bom-ref": "pkg:pypi/test-project@1.0.0" + } + }, + "components": [ + { + "name": "flask", + "version": "2.0.3", + "purl": "pkg:pypi/flask@2.0.3", + "type": "library", + "bom-ref": "pkg:pypi/flask@2.0.3" + }, + { + "name": "requests", + "version": "2.25.1", + "purl": "pkg:pypi/requests@2.25.1", + "type": "library", + "bom-ref": "pkg:pypi/requests@2.25.1" + } + ], + "dependencies": [ + { + "ref": "pkg:pypi/test-project@1.0.0", + "dependsOn": [ + "pkg:pypi/flask@2.0.3", + "pkg:pypi/requests@2.25.1" + ] + }, + { + "ref": "pkg:pypi/flask@2.0.3", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/requests@2.25.1", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/pyproject/uv_lock/expected_stack_sbom.json b/test/providers/tst_manifests/pyproject/uv_lock/expected_stack_sbom.json new file mode 100644 index 00000000..6d528dd8 --- /dev/null +++ b/test/providers/tst_manifests/pyproject/uv_lock/expected_stack_sbom.json @@ -0,0 +1,172 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-10-01T00:00:00.000Z", + "component": { + "name": "test-project", + "version": "1.0.0", + "purl": "pkg:pypi/test-project@1.0.0", + "type": "application", + "bom-ref": "pkg:pypi/test-project@1.0.0" + } + }, + "components": [ + { + "name": "flask", + "version": "2.0.3", + "purl": "pkg:pypi/flask@2.0.3", + "type": "library", + "bom-ref": "pkg:pypi/flask@2.0.3" + }, + { + "name": "click", + "version": "8.3.1", + "purl": "pkg:pypi/click@8.3.1", + "type": "library", + "bom-ref": "pkg:pypi/click@8.3.1" + }, + { + "name": "colorama", + "version": "0.4.6", + "purl": "pkg:pypi/colorama@0.4.6", + "type": "library", + "bom-ref": "pkg:pypi/colorama@0.4.6" + }, + { + "name": "itsdangerous", + "version": "2.0.1", + "purl": "pkg:pypi/itsdangerous@2.0.1", + "type": "library", + "bom-ref": "pkg:pypi/itsdangerous@2.0.1" + }, + { + "name": "jinja2", + "version": "3.0.3", + "purl": "pkg:pypi/jinja2@3.0.3", + "type": "library", + "bom-ref": "pkg:pypi/jinja2@3.0.3" + }, + { + "name": "markupsafe", + "version": "2.0.1", + "purl": "pkg:pypi/markupsafe@2.0.1", + "type": "library", + "bom-ref": "pkg:pypi/markupsafe@2.0.1" + }, + { + "name": "werkzeug", + "version": "2.0.3", + "purl": "pkg:pypi/werkzeug@2.0.3", + "type": "library", + "bom-ref": "pkg:pypi/werkzeug@2.0.3" + }, + { + "name": "requests", + "version": "2.25.1", + "purl": "pkg:pypi/requests@2.25.1", + "type": "library", + "bom-ref": "pkg:pypi/requests@2.25.1" + }, + { + "name": "certifi", + "version": "2023.7.22", + "purl": "pkg:pypi/certifi@2023.7.22", + "type": "library", + "bom-ref": "pkg:pypi/certifi@2023.7.22" + }, + { + "name": "chardet", + "version": "4.0.0", + "purl": "pkg:pypi/chardet@4.0.0", + "type": "library", + "bom-ref": "pkg:pypi/chardet@4.0.0" + }, + { + "name": "idna", + "version": "2.10", + "purl": "pkg:pypi/idna@2.10", + "type": "library", + "bom-ref": "pkg:pypi/idna@2.10" + }, + { + "name": "urllib3", + "version": "1.26.16", + "purl": "pkg:pypi/urllib3@1.26.16", + "type": "library", + "bom-ref": "pkg:pypi/urllib3@1.26.16" + } + ], + "dependencies": [ + { + "ref": "pkg:pypi/test-project@1.0.0", + "dependsOn": [ + "pkg:pypi/flask@2.0.3", + "pkg:pypi/requests@2.25.1" + ] + }, + { + "ref": "pkg:pypi/flask@2.0.3", + "dependsOn": [ + "pkg:pypi/click@8.3.1", + "pkg:pypi/itsdangerous@2.0.1", + "pkg:pypi/jinja2@3.0.3", + "pkg:pypi/werkzeug@2.0.3" + ] + }, + { + "ref": "pkg:pypi/click@8.3.1", + "dependsOn": [ + "pkg:pypi/colorama@0.4.6" + ] + }, + { + "ref": "pkg:pypi/colorama@0.4.6", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/itsdangerous@2.0.1", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/jinja2@3.0.3", + "dependsOn": [ + "pkg:pypi/markupsafe@2.0.1" + ] + }, + { + "ref": "pkg:pypi/markupsafe@2.0.1", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/werkzeug@2.0.3", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/requests@2.25.1", + "dependsOn": [ + "pkg:pypi/certifi@2023.7.22", + "pkg:pypi/chardet@4.0.0", + "pkg:pypi/idna@2.10", + "pkg:pypi/urllib3@1.26.16" + ] + }, + { + "ref": "pkg:pypi/certifi@2023.7.22", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/chardet@4.0.0", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/idna@2.10", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/urllib3@1.26.16", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/pyproject/uv_lock/pyproject.toml b/test/providers/tst_manifests/pyproject/uv_lock/pyproject.toml new file mode 100644 index 00000000..5e6f5dc0 --- /dev/null +++ b/test/providers/tst_manifests/pyproject/uv_lock/pyproject.toml @@ -0,0 +1,7 @@ +[project] +name = "test-project" +version = "1.0.0" +dependencies = [ + "flask==2.0.3", + "requests==2.25.1", +] diff --git a/test/providers/tst_manifests/pyproject/uv_lock/uv.lock b/test/providers/tst_manifests/pyproject/uv_lock/uv.lock new file mode 100644 index 00000000..114f3d20 --- /dev/null +++ b/test/providers/tst_manifests/pyproject/uv_lock/uv.lock @@ -0,0 +1,141 @@ +version = 1 +revision = 3 +requires-python = ">=3.13" + +[[package]] +name = "certifi" +version = "2023.7.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/98/c2ff18671db109c9f10ed27f5ef610ae05b73bd876664139cf95bd1429aa/certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082", size = 159517, upload-time = "2023-07-22T08:39:27.482Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/dd/2234eab22353ffc7d94e8d13177aaa050113286e93e7b40eae01fbf7c3d9/certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9", size = 158334, upload-time = "2023-07-22T08:39:25.345Z" }, +] + +[[package]] +name = "chardet" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/2d/9cdc2b527e127b4c9db64b86647d567985940ac3698eeabc7ffaccb4ea61/chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa", size = 1907771, upload-time = "2020-12-10T19:35:33.971Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/c7/fa589626997dd07bd87d9269342ccb74b1720384a4d739a1872bd84fbe68/chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5", size = 178743, upload-time = "2020-12-10T19:35:32.469Z" }, +] + +[[package]] +name = "click" +version = "8.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "flask" +version = "2.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "itsdangerous" }, + { name = "jinja2" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/84/9d/66347e6b3e2eb78647392d3969c23bdc2d8b2fdc32bd078c817c15cb81ad/Flask-2.0.3.tar.gz", hash = "sha256:e1120c228ca2f553b470df4a5fa927ab66258467526069981b3eb0a91902687d", size = 629304, upload-time = "2022-02-14T20:01:09.281Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/77/59df23681f4fd19b7cbbb5e92484d46ad587554f5d490f33ef907e456132/Flask-2.0.3-py3-none-any.whl", hash = "sha256:59da8a3170004800a2837844bfa84d49b022550616070f7cb1a659682b2e7c9f", size = 95575, upload-time = "2022-02-14T20:01:06.923Z" }, +] + +[[package]] +name = "idna" +version = "2.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ea/b7/e0e3c1c467636186c39925827be42f16fee389dc404ac29e930e9136be70/idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", size = 175616, upload-time = "2020-06-27T23:45:05.21Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/38/928ddce2273eaa564f6f50de919327bf3a00f091b5baba8dfa9460f3a8a8/idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0", size = 58811, upload-time = "2020-06-27T23:45:03.457Z" }, +] + +[[package]] +name = "itsdangerous" +version = "2.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/66/d6c5859dcac92b442626427a8c7a42322068c5cd5d4a463ce78b93f730b7/itsdangerous-2.0.1.tar.gz", hash = "sha256:9e724d68fc22902a1435351f84c3fb8623f303fffcc566a4cb952df8c572cff0", size = 59336, upload-time = "2021-05-18T15:09:44.532Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/96/26f935afba9cd6140216da5add223a0c465b99d0f112b68a4ca426441019/itsdangerous-2.0.1-py3-none-any.whl", hash = "sha256:5174094b9637652bdb841a3029700391451bd092ba3db90600dea710ba28e97c", size = 18326, upload-time = "2021-05-18T15:09:42.542Z" }, +] + +[[package]] +name = "jinja2" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/91/a5/429efc6246119e1e3fbf562c00187d04e83e54619249eb732bb423efa6c6/Jinja2-3.0.3.tar.gz", hash = "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7", size = 269196, upload-time = "2021-11-09T20:27:29.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/9a/e5d9ec41927401e41aea8af6d16e78b5e612bca4699d417f646a9610a076/Jinja2-3.0.3-py3-none-any.whl", hash = "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8", size = 133630, upload-time = "2021-11-09T20:27:27.116Z" }, +] + +[[package]] +name = "markupsafe" +version = "2.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/10/ff66fea6d1788c458663a84d88787bae15d45daa16f6b3ef33322a51fc7e/MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a", size = 18596, upload-time = "2021-05-18T17:18:22.856Z" } + +[[package]] +name = "requests" +version = "2.25.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "chardet" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6b/47/c14abc08432ab22dc18b9892252efaf005ab44066de871e72a38d6af464b/requests-2.25.1.tar.gz", hash = "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804", size = 102161, upload-time = "2020-12-16T19:38:36.779Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/29/c1/24814557f1d22c56d50280771a17307e6bf87b70727d975fd6b2ce6b014a/requests-2.25.1-py2.py3-none-any.whl", hash = "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e", size = 61216, upload-time = "2020-12-16T19:38:34.329Z" }, +] + +[[package]] +name = "test-project" +version = "1.0.0" +source = { virtual = "." } +dependencies = [ + { name = "flask" }, + { name = "requests" }, +] + +[package.metadata] +requires-dist = [ + { name = "flask", specifier = "==2.0.3" }, + { name = "requests", specifier = "==2.25.1" }, +] + +[[package]] +name = "urllib3" +version = "1.26.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e2/7d/539e6f0cf9f0b95b71dd701a56dae89f768cd39fd8ce0096af3546aeb5a3/urllib3-1.26.16.tar.gz", hash = "sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14", size = 303733, upload-time = "2023-05-23T12:18:43.917Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/05/c214b32d21c0b465506f95c4f28ccbcba15022e000b043b72b3df7728471/urllib3-1.26.16-py2.py3-none-any.whl", hash = "sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f", size = 143106, upload-time = "2023-05-23T12:18:41.548Z" }, +] + +[[package]] +name = "werkzeug" +version = "2.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/a8/60514fade2318e277453c9588545d0c335ea3ea6440ce5cdabfca7f73117/Werkzeug-2.0.3.tar.gz", hash = "sha256:b863f8ff057c522164b6067c9e28b041161b4be5ba4d0daceeaa50a163822d3c", size = 895551, upload-time = "2022-02-07T21:04:39.14Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/f3/22afbdb20cc4654b10c98043414a14057cd27fdba9d4ae61cea596000ba2/Werkzeug-2.0.3-py3-none-any.whl", hash = "sha256:1421ebfc7648a39a5c58c601b154165d05cf47a3cd0ccb70857cbdacf6c8f2b8", size = 289232, upload-time = "2022-02-07T21:04:36.336Z" }, +] From 4b1bc6a52fad1986e5091f968d152f8381dded72 Mon Sep 17 00:00:00 2001 From: Noah Santschi-Cooney Date: Thu, 9 Apr 2026 14:50:50 +0100 Subject: [PATCH 102/102] feat: add support for UV/poetry workspaces Implements TC-4039 --- src/providers/base_pyproject.js | 71 ++++- src/providers/python_uv.js | 34 ++- test/providers/python_pyproject.test.js | 184 ++++++++++++ .../expected_component_sbom.json | 36 +++ .../poetry_workspace/expected_stack_sbom.json | 85 ++++++ .../sub-pkg/expected_component_sbom.json | 36 +++ .../packages/sub-pkg/expected_stack_sbom.json | 85 ++++++ .../packages/sub-pkg/pyproject.toml | 7 + .../pyproject/poetry_workspace/poetry.lock | 212 ++++++++++++++ .../pyproject/poetry_workspace/pyproject.toml | 8 + .../uv_workspace/expected_component_sbom.json | 48 ++++ .../uv_workspace/expected_stack_sbom.json | 198 +++++++++++++ .../mid-pkg/expected_component_sbom.json | 36 +++ .../packages/mid-pkg/expected_stack_sbom.json | 98 +++++++ .../packages/mid-pkg/pyproject.toml | 9 + .../sub-pkg/expected_component_sbom.json | 36 +++ .../packages/sub-pkg/expected_stack_sbom.json | 85 ++++++ .../packages/sub-pkg/pyproject.toml | 6 + .../pyproject/uv_workspace/pyproject.toml | 13 + .../pyproject/uv_workspace/uv.lock | 267 ++++++++++++++++++ 20 files changed, 1549 insertions(+), 5 deletions(-) create mode 100644 test/providers/tst_manifests/pyproject/poetry_workspace/expected_component_sbom.json create mode 100644 test/providers/tst_manifests/pyproject/poetry_workspace/expected_stack_sbom.json create mode 100644 test/providers/tst_manifests/pyproject/poetry_workspace/packages/sub-pkg/expected_component_sbom.json create mode 100644 test/providers/tst_manifests/pyproject/poetry_workspace/packages/sub-pkg/expected_stack_sbom.json create mode 100644 test/providers/tst_manifests/pyproject/poetry_workspace/packages/sub-pkg/pyproject.toml create mode 100644 test/providers/tst_manifests/pyproject/poetry_workspace/poetry.lock create mode 100644 test/providers/tst_manifests/pyproject/poetry_workspace/pyproject.toml create mode 100644 test/providers/tst_manifests/pyproject/uv_workspace/expected_component_sbom.json create mode 100644 test/providers/tst_manifests/pyproject/uv_workspace/expected_stack_sbom.json create mode 100644 test/providers/tst_manifests/pyproject/uv_workspace/packages/mid-pkg/expected_component_sbom.json create mode 100644 test/providers/tst_manifests/pyproject/uv_workspace/packages/mid-pkg/expected_stack_sbom.json create mode 100644 test/providers/tst_manifests/pyproject/uv_workspace/packages/mid-pkg/pyproject.toml create mode 100644 test/providers/tst_manifests/pyproject/uv_workspace/packages/sub-pkg/expected_component_sbom.json create mode 100644 test/providers/tst_manifests/pyproject/uv_workspace/packages/sub-pkg/expected_stack_sbom.json create mode 100644 test/providers/tst_manifests/pyproject/uv_workspace/packages/sub-pkg/pyproject.toml create mode 100644 test/providers/tst_manifests/pyproject/uv_workspace/pyproject.toml create mode 100644 test/providers/tst_manifests/pyproject/uv_workspace/uv.lock diff --git a/src/providers/base_pyproject.js b/src/providers/base_pyproject.js index eb5755a3..2c5595ae 100644 --- a/src/providers/base_pyproject.js +++ b/src/providers/base_pyproject.js @@ -6,6 +6,7 @@ import { parse as parseToml } from 'smol-toml' import { getLicense } from '../license/license_utils.js' import Sbom from '../sbom.js' +import { getCustom } from '../tools.js' const ecosystem = 'pip' @@ -31,10 +32,73 @@ export default class Base_pyproject { /** * @param {string} manifestDir + * @param {Object} [opts={}] + * @returns {boolean} + */ + validateLockFile(manifestDir, opts = {}) { + return this._findLockFileDir(manifestDir, opts) != null + } + + /** + * Walk up from manifestDir to find the directory containing the lock file. + * Follows the same pattern as Base_javascript._findLockFileDir(). + * @param {string} manifestDir + * @param {Object} [opts={}] + * @returns {string|null} + * @protected + */ + _findLockFileDir(manifestDir, opts = {}) { + const workspaceDir = getCustom('TRUSTIFY_DA_WORKSPACE_DIR', null, opts) + if (workspaceDir) { + const dir = path.resolve(workspaceDir) + return fs.existsSync(path.join(dir, this._lockFileName())) ? dir : null + } + + let dir = path.resolve(manifestDir) + let parent = dir + + do { + dir = parent + + if (fs.existsSync(path.join(dir, this._lockFileName()))) { + return dir + } + + if (this._isWorkspaceRoot(dir)) { + return null + } + + parent = path.dirname(dir) + } while (parent !== dir) + + return null + } + + /** + * Detect Python workspace root boundaries. + * - uv: pyproject.toml with [tool.uv.workspace] section + * - poetry: pyproject.toml with [tool.poetry] alongside poetry.lock + * @param {string} dir * @returns {boolean} + * @protected */ - validateLockFile(manifestDir) { - return fs.existsSync(path.join(manifestDir, this._lockFileName())) + _isWorkspaceRoot(dir) { + const pyprojectPath = path.join(dir, 'pyproject.toml') + if (!fs.existsSync(pyprojectPath)) { + return false + } + try { + const content = parseToml(fs.readFileSync(pyprojectPath, 'utf-8')) + if (content.tool?.uv?.workspace) { + return true + } + if (content.tool?.poetry && fs.existsSync(path.join(dir, 'poetry.lock'))) { + return true + } + } catch (_) { + // ignore parse errors + } + return false } /** @@ -284,7 +348,8 @@ export default class Base_pyproject { let content = fs.readFileSync(manifest, 'utf-8') let parsed = parseToml(content) - let { directDeps, graph } = await this._getDependencyData(manifestDir, parsed, opts) + let lockFileDir = this._findLockFileDir(manifestDir, opts) || manifestDir + let { directDeps, graph } = await this._getDependencyData(lockFileDir, parsed, opts) let ignoredDeps = this._getIgnoredDeps(manifest) let dependencies = this._buildDependencyTree(graph, directDeps, ignoredDeps, includeTransitive) diff --git a/src/providers/python_uv.js b/src/providers/python_uv.js index 9fa85b89..92b52f54 100644 --- a/src/providers/python_uv.js +++ b/src/providers/python_uv.js @@ -1,3 +1,8 @@ +import fs from 'node:fs' +import path from 'node:path' + +import { parse as parseToml } from 'smol-toml' + import { environmentVariableIsPopulated, getCustomPath, invokeCommand } from '../tools.js' import Base_pyproject from './base_pyproject.js' @@ -24,7 +29,7 @@ export default class Python_uv extends Base_pyproject { async _getDependencyData(manifestDir, parsed, opts) { let projectName = this._getProjectName(parsed) let uvOutput = this._getUvExportOutput(manifestDir, opts) - return this._parseUvExport(uvOutput, projectName) + return this._parseUvExport(uvOutput, projectName, manifestDir) } /** @@ -47,9 +52,10 @@ export default class Python_uv extends Base_pyproject { * * @param {string} output * @param {string} projectName - canonical project name to identify direct deps + * @param {string} manifestDir - directory where uv export was run (for resolving editable installs) * @returns {Promise<{directDeps: string[], graph: Map}>} */ - async _parseUvExport(output, projectName) { + async _parseUvExport(output, projectName, manifestDir) { let [parser, pinnedVersionQuery] = await Promise.all([ getParser(), getPinnedVersionQuery() ]) @@ -62,6 +68,30 @@ export default class Python_uv extends Base_pyproject { let collectingVia = false for (let child of root.children) { + if (child.type === 'global_opt') { + let optNode = child.children.find(c => c.type === 'option') + let pathNode = child.children.find(c => c.type === 'path') + if (optNode?.text === '-e' && pathNode && manifestDir) { + let memberDir = path.resolve(manifestDir, pathNode.text) + let memberManifest = path.join(memberDir, 'pyproject.toml') + if (fs.existsSync(memberManifest)) { + let memberParsed = parseToml(fs.readFileSync(memberManifest, 'utf-8')) + let name = memberParsed.project?.name || memberParsed.tool?.poetry?.name + let version = memberParsed.project?.version || memberParsed.tool?.poetry?.version + if (name && version) { + let key = this._canonicalize(name) + currentPkg = { name, version, parents: new Set() } + packages.set(key, currentPkg) + collectingVia = false + continue + } + } + } + currentPkg = null + collectingVia = false + continue + } + if (child.type === 'requirement') { let nameNode = child.children.find(c => c.type === 'package') if (!nameNode) { continue } diff --git a/test/providers/python_pyproject.test.js b/test/providers/python_pyproject.test.js index c27bb796..28fc7d2b 100644 --- a/test/providers/python_pyproject.test.js +++ b/test/providers/python_pyproject.test.js @@ -1,4 +1,5 @@ import fs from 'fs' +import path from 'path' import { expect } from 'chai' import { useFakeTimers } from 'sinon' @@ -196,4 +197,187 @@ suite('testing the python-pyproject data provider', () => { } }) + suite('workspace/monorepo support', () => { + const uvWorkspace = 'test/providers/tst_manifests/pyproject/uv_workspace' + const poetryWorkspace = 'test/providers/tst_manifests/pyproject/poetry_workspace' + + test('uv validateLockFile finds uv.lock in parent directory', () => { + expect(uvProvider.validateLockFile( + path.join(uvWorkspace, 'packages/sub-pkg') + )).to.equal(true) + }) + + test('poetry validateLockFile finds poetry.lock in parent directory', () => { + expect(poetryProvider.validateLockFile( + path.join(poetryWorkspace, 'packages/sub-pkg') + )).to.equal(true) + }) + + test('validateLockFile stops at workspace root boundary when lock file is absent', () => { + let tmpDir = 'test/providers/tst_manifests/pyproject/boundary_test' + let subDir = path.join(tmpDir, 'packages', 'child') + fs.mkdirSync(subDir, { recursive: true }) + // root has workspace marker but no lock file + fs.writeFileSync(path.join(tmpDir, 'pyproject.toml'), + '[tool.uv.workspace]\nmembers = ["packages/*"]\n') + fs.writeFileSync(path.join(subDir, 'pyproject.toml'), + '[project]\nname = "child"\nversion = "0.1.0"\n') + try { + expect(uvProvider.validateLockFile(subDir)).to.equal(false) + } finally { + fs.rmSync(tmpDir, { recursive: true, force: true }) + } + }) + + test('poetry validateLockFile stops at workspace root boundary when lock file is absent', () => { + let tmpDir = 'test/providers/tst_manifests/pyproject/boundary_test_poetry' + let subDir = path.join(tmpDir, 'packages', 'child') + fs.mkdirSync(subDir, { recursive: true }) + // root has [tool.poetry] + poetry.lock = workspace boundary + // but we're testing a DIFFERENT poetry provider that looks for poetry.lock + // The root IS the workspace root, and it HAS poetry.lock, so validateLockFile should return true + // To test boundary stop: create a nested workspace inside another + fs.writeFileSync(path.join(tmpDir, 'pyproject.toml'), + '[tool.poetry]\nname = "root"\nversion = "0.1.0"\n') + fs.writeFileSync(path.join(tmpDir, 'poetry.lock'), '') + fs.writeFileSync(path.join(subDir, 'pyproject.toml'), + '[tool.poetry]\nname = "child"\nversion = "0.1.0"\n') + try { + // poetry.lock exists at root, so walk-up should find it + expect(poetryProvider.validateLockFile(subDir)).to.equal(true) + + // Now remove poetry.lock — root still has [tool.poetry] but no lock file + // _isWorkspaceRoot checks for [tool.poetry] + poetry.lock, + // so without poetry.lock it won't be a boundary + fs.unlinkSync(path.join(tmpDir, 'poetry.lock')) + expect(poetryProvider.validateLockFile(subDir)).to.equal(false) + } finally { + fs.rmSync(tmpDir, { recursive: true, force: true }) + } + }) + + test('TRUSTIFY_DA_WORKSPACE_DIR override directs lock file search', () => { + let overrideDir = path.resolve(uvWorkspace) + expect(uvProvider.validateLockFile( + 'test/providers/tst_manifests/pyproject/poetry_lock', + { TRUSTIFY_DA_WORKSPACE_DIR: overrideDir } + )).to.equal(true) + + expect(uvProvider.validateLockFile( + 'test/providers/tst_manifests/pyproject/poetry_lock', + { TRUSTIFY_DA_WORKSPACE_DIR: '/nonexistent/dir' } + )).to.equal(false) + }) + + test('verify uv workspace root stack analysis', async () => { + let expectedSbom = fs.readFileSync(path.join(uvWorkspace, 'expected_stack_sbom.json')).toString() + expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) + let result = await uvProvider.provideStack(path.join(uvWorkspace, 'pyproject.toml')) + expect(result).to.deep.equal({ + ecosystem: 'pip', + contentType: 'application/vnd.cyclonedx+json', + content: expectedSbom + }) + }).timeout(TIMEOUT) + + test('verify uv workspace root component analysis', async () => { + let expectedSbom = fs.readFileSync(path.join(uvWorkspace, 'expected_component_sbom.json')).toString().trim() + expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) + let result = await uvProvider.provideComponent(path.join(uvWorkspace, 'pyproject.toml')) + expect(result).to.deep.equal({ + ecosystem: 'pip', + contentType: 'application/vnd.cyclonedx+json', + content: expectedSbom + }) + }).timeout(TIMEOUT) + + test('verify uv workspace mid-package stack analysis', async () => { + let expectedSbom = fs.readFileSync(path.join(uvWorkspace, 'packages/mid-pkg/expected_stack_sbom.json')).toString() + expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) + let result = await uvProvider.provideStack(path.join(uvWorkspace, 'packages/mid-pkg/pyproject.toml')) + expect(result).to.deep.equal({ + ecosystem: 'pip', + contentType: 'application/vnd.cyclonedx+json', + content: expectedSbom + }) + }).timeout(TIMEOUT) + + test('verify uv workspace mid-package component analysis', async () => { + let expectedSbom = fs.readFileSync(path.join(uvWorkspace, 'packages/mid-pkg/expected_component_sbom.json')).toString().trim() + expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) + let result = await uvProvider.provideComponent(path.join(uvWorkspace, 'packages/mid-pkg/pyproject.toml')) + expect(result).to.deep.equal({ + ecosystem: 'pip', + contentType: 'application/vnd.cyclonedx+json', + content: expectedSbom + }) + }).timeout(TIMEOUT) + + test('verify uv workspace sub-package stack analysis', async () => { + let expectedSbom = fs.readFileSync(path.join(uvWorkspace, 'packages/sub-pkg/expected_stack_sbom.json')).toString() + expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) + let result = await uvProvider.provideStack(path.join(uvWorkspace, 'packages/sub-pkg/pyproject.toml')) + expect(result).to.deep.equal({ + ecosystem: 'pip', + contentType: 'application/vnd.cyclonedx+json', + content: expectedSbom + }) + }).timeout(TIMEOUT) + + test('verify uv workspace sub-package component analysis', async () => { + let expectedSbom = fs.readFileSync(path.join(uvWorkspace, 'packages/sub-pkg/expected_component_sbom.json')).toString().trim() + expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) + let result = await uvProvider.provideComponent(path.join(uvWorkspace, 'packages/sub-pkg/pyproject.toml')) + expect(result).to.deep.equal({ + ecosystem: 'pip', + contentType: 'application/vnd.cyclonedx+json', + content: expectedSbom + }) + }).timeout(TIMEOUT) + + test('verify poetry workspace root stack analysis', async () => { + let expectedSbom = fs.readFileSync(path.join(poetryWorkspace, 'expected_stack_sbom.json')).toString() + expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) + let result = await poetryProvider.provideStack(path.join(poetryWorkspace, 'pyproject.toml')) + expect(result).to.deep.equal({ + ecosystem: 'pip', + contentType: 'application/vnd.cyclonedx+json', + content: expectedSbom + }) + }).timeout(TIMEOUT) + + test('verify poetry workspace root component analysis', async () => { + let expectedSbom = fs.readFileSync(path.join(poetryWorkspace, 'expected_component_sbom.json')).toString().trim() + expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) + let result = await poetryProvider.provideComponent(path.join(poetryWorkspace, 'pyproject.toml')) + expect(result).to.deep.equal({ + ecosystem: 'pip', + contentType: 'application/vnd.cyclonedx+json', + content: expectedSbom + }) + }).timeout(TIMEOUT) + + test('verify poetry workspace sub-package stack analysis', async () => { + let expectedSbom = fs.readFileSync(path.join(poetryWorkspace, 'packages/sub-pkg/expected_stack_sbom.json')).toString() + expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) + let result = await poetryProvider.provideStack(path.join(poetryWorkspace, 'packages/sub-pkg/pyproject.toml')) + expect(result).to.deep.equal({ + ecosystem: 'pip', + contentType: 'application/vnd.cyclonedx+json', + content: expectedSbom + }) + }).timeout(TIMEOUT) + + test('verify poetry workspace sub-package component analysis', async () => { + let expectedSbom = fs.readFileSync(path.join(poetryWorkspace, 'packages/sub-pkg/expected_component_sbom.json')).toString().trim() + expectedSbom = JSON.stringify(JSON.parse(expectedSbom)) + let result = await poetryProvider.provideComponent(path.join(poetryWorkspace, 'packages/sub-pkg/pyproject.toml')) + expect(result).to.deep.equal({ + ecosystem: 'pip', + contentType: 'application/vnd.cyclonedx+json', + content: expectedSbom + }) + }).timeout(TIMEOUT) + }) + }).beforeAll(() => clock = useFakeTimers(new Date('2023-10-01T00:00:00.000Z'))).afterAll(() => clock.restore()) diff --git a/test/providers/tst_manifests/pyproject/poetry_workspace/expected_component_sbom.json b/test/providers/tst_manifests/pyproject/poetry_workspace/expected_component_sbom.json new file mode 100644 index 00000000..412726ee --- /dev/null +++ b/test/providers/tst_manifests/pyproject/poetry_workspace/expected_component_sbom.json @@ -0,0 +1,36 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-10-01T00:00:00.000Z", + "component": { + "name": "poetry-mono", + "version": "0.1.0", + "purl": "pkg:pypi/poetry-mono@0.1.0", + "type": "application", + "bom-ref": "pkg:pypi/poetry-mono@0.1.0" + } + }, + "components": [ + { + "name": "requests", + "version": "2.33.1", + "purl": "pkg:pypi/requests@2.33.1", + "type": "library", + "bom-ref": "pkg:pypi/requests@2.33.1" + } + ], + "dependencies": [ + { + "ref": "pkg:pypi/poetry-mono@0.1.0", + "dependsOn": [ + "pkg:pypi/requests@2.33.1" + ] + }, + { + "ref": "pkg:pypi/requests@2.33.1", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/pyproject/poetry_workspace/expected_stack_sbom.json b/test/providers/tst_manifests/pyproject/poetry_workspace/expected_stack_sbom.json new file mode 100644 index 00000000..543f8781 --- /dev/null +++ b/test/providers/tst_manifests/pyproject/poetry_workspace/expected_stack_sbom.json @@ -0,0 +1,85 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-10-01T00:00:00.000Z", + "component": { + "name": "poetry-mono", + "version": "0.1.0", + "purl": "pkg:pypi/poetry-mono@0.1.0", + "type": "application", + "bom-ref": "pkg:pypi/poetry-mono@0.1.0" + } + }, + "components": [ + { + "name": "requests", + "version": "2.33.1", + "purl": "pkg:pypi/requests@2.33.1", + "type": "library", + "bom-ref": "pkg:pypi/requests@2.33.1" + }, + { + "name": "certifi", + "version": "2026.2.25", + "purl": "pkg:pypi/certifi@2026.2.25", + "type": "library", + "bom-ref": "pkg:pypi/certifi@2026.2.25" + }, + { + "name": "charset-normalizer", + "version": "3.4.7", + "purl": "pkg:pypi/charset-normalizer@3.4.7", + "type": "library", + "bom-ref": "pkg:pypi/charset-normalizer@3.4.7" + }, + { + "name": "idna", + "version": "3.11", + "purl": "pkg:pypi/idna@3.11", + "type": "library", + "bom-ref": "pkg:pypi/idna@3.11" + }, + { + "name": "urllib3", + "version": "2.6.3", + "purl": "pkg:pypi/urllib3@2.6.3", + "type": "library", + "bom-ref": "pkg:pypi/urllib3@2.6.3" + } + ], + "dependencies": [ + { + "ref": "pkg:pypi/poetry-mono@0.1.0", + "dependsOn": [ + "pkg:pypi/requests@2.33.1" + ] + }, + { + "ref": "pkg:pypi/requests@2.33.1", + "dependsOn": [ + "pkg:pypi/certifi@2026.2.25", + "pkg:pypi/charset-normalizer@3.4.7", + "pkg:pypi/idna@3.11", + "pkg:pypi/urllib3@2.6.3" + ] + }, + { + "ref": "pkg:pypi/certifi@2026.2.25", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/charset-normalizer@3.4.7", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/idna@3.11", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/urllib3@2.6.3", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/pyproject/poetry_workspace/packages/sub-pkg/expected_component_sbom.json b/test/providers/tst_manifests/pyproject/poetry_workspace/packages/sub-pkg/expected_component_sbom.json new file mode 100644 index 00000000..dec8c565 --- /dev/null +++ b/test/providers/tst_manifests/pyproject/poetry_workspace/packages/sub-pkg/expected_component_sbom.json @@ -0,0 +1,36 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-10-01T00:00:00.000Z", + "component": { + "name": "sub-pkg", + "version": "0.1.0", + "purl": "pkg:pypi/sub-pkg@0.1.0", + "type": "application", + "bom-ref": "pkg:pypi/sub-pkg@0.1.0" + } + }, + "components": [ + { + "name": "requests", + "version": "2.33.1", + "purl": "pkg:pypi/requests@2.33.1", + "type": "library", + "bom-ref": "pkg:pypi/requests@2.33.1" + } + ], + "dependencies": [ + { + "ref": "pkg:pypi/sub-pkg@0.1.0", + "dependsOn": [ + "pkg:pypi/requests@2.33.1" + ] + }, + { + "ref": "pkg:pypi/requests@2.33.1", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/pyproject/poetry_workspace/packages/sub-pkg/expected_stack_sbom.json b/test/providers/tst_manifests/pyproject/poetry_workspace/packages/sub-pkg/expected_stack_sbom.json new file mode 100644 index 00000000..e9d1f86d --- /dev/null +++ b/test/providers/tst_manifests/pyproject/poetry_workspace/packages/sub-pkg/expected_stack_sbom.json @@ -0,0 +1,85 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-10-01T00:00:00.000Z", + "component": { + "name": "sub-pkg", + "version": "0.1.0", + "purl": "pkg:pypi/sub-pkg@0.1.0", + "type": "application", + "bom-ref": "pkg:pypi/sub-pkg@0.1.0" + } + }, + "components": [ + { + "name": "requests", + "version": "2.33.1", + "purl": "pkg:pypi/requests@2.33.1", + "type": "library", + "bom-ref": "pkg:pypi/requests@2.33.1" + }, + { + "name": "certifi", + "version": "2026.2.25", + "purl": "pkg:pypi/certifi@2026.2.25", + "type": "library", + "bom-ref": "pkg:pypi/certifi@2026.2.25" + }, + { + "name": "charset-normalizer", + "version": "3.4.7", + "purl": "pkg:pypi/charset-normalizer@3.4.7", + "type": "library", + "bom-ref": "pkg:pypi/charset-normalizer@3.4.7" + }, + { + "name": "idna", + "version": "3.11", + "purl": "pkg:pypi/idna@3.11", + "type": "library", + "bom-ref": "pkg:pypi/idna@3.11" + }, + { + "name": "urllib3", + "version": "2.6.3", + "purl": "pkg:pypi/urllib3@2.6.3", + "type": "library", + "bom-ref": "pkg:pypi/urllib3@2.6.3" + } + ], + "dependencies": [ + { + "ref": "pkg:pypi/sub-pkg@0.1.0", + "dependsOn": [ + "pkg:pypi/requests@2.33.1" + ] + }, + { + "ref": "pkg:pypi/requests@2.33.1", + "dependsOn": [ + "pkg:pypi/certifi@2026.2.25", + "pkg:pypi/charset-normalizer@3.4.7", + "pkg:pypi/idna@3.11", + "pkg:pypi/urllib3@2.6.3" + ] + }, + { + "ref": "pkg:pypi/certifi@2026.2.25", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/charset-normalizer@3.4.7", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/idna@3.11", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/urllib3@2.6.3", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/pyproject/poetry_workspace/packages/sub-pkg/pyproject.toml b/test/providers/tst_manifests/pyproject/poetry_workspace/packages/sub-pkg/pyproject.toml new file mode 100644 index 00000000..b25400fe --- /dev/null +++ b/test/providers/tst_manifests/pyproject/poetry_workspace/packages/sub-pkg/pyproject.toml @@ -0,0 +1,7 @@ +[tool.poetry] +name = "sub-pkg" +version = "0.1.0" + +[tool.poetry.dependencies] +python = "^3.12" +requests = "^2.0" diff --git a/test/providers/tst_manifests/pyproject/poetry_workspace/poetry.lock b/test/providers/tst_manifests/pyproject/poetry_workspace/poetry.lock new file mode 100644 index 00000000..9aaea7a1 --- /dev/null +++ b/test/providers/tst_manifests/pyproject/poetry_workspace/poetry.lock @@ -0,0 +1,212 @@ +# This file is automatically @generated by Poetry 2.3.2 and should not be changed by hand. + +[[package]] +name = "certifi" +version = "2026.2.25" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa"}, + {file = "certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.7" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "charset_normalizer-3.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cdd68a1fb318e290a2077696b7eb7a21a49163c455979c639bf5a5dcdc46617d"}, + {file = "charset_normalizer-3.4.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e17b8d5d6a8c47c85e68ca8379def1303fd360c3e22093a807cd34a71cd082b8"}, + {file = "charset_normalizer-3.4.7-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:511ef87c8aec0783e08ac18565a16d435372bc1ac25a91e6ac7f5ef2b0bff790"}, + {file = "charset_normalizer-3.4.7-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:007d05ec7321d12a40227aae9e2bc6dca73f3cb21058999a1df9e193555a9dcc"}, + {file = "charset_normalizer-3.4.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf29836da5119f3c8a8a70667b0ef5fdca3bb12f80fd06487cfa575b3909b393"}, + {file = "charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:12d8baf840cc7889b37c7c770f478adea7adce3dcb3944d02ec87508e2dcf153"}, + {file = "charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d560742f3c0d62afaccf9f41fe485ed69bd7661a241f86a3ef0f0fb8b1a397af"}, + {file = "charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b14b2d9dac08e28bb8046a1a0434b1750eb221c8f5b87a68f4fa11a6f97b5e34"}, + {file = "charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:bc17a677b21b3502a21f66a8cc64f5bfad4df8a0b8434d661666f8ce90ac3af1"}, + {file = "charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:750e02e074872a3fad7f233b47734166440af3cdea0add3e95163110816d6752"}, + {file = "charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:4e5163c14bffd570ef2affbfdd77bba66383890797df43dc8b4cc7d6f500bf53"}, + {file = "charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6ed74185b2db44f41ef35fd1617c5888e59792da9bbc9190d6c7300617182616"}, + {file = "charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:94e1885b270625a9a828c9793b4d52a64445299baa1fea5a173bf1d3dd9a1a5a"}, + {file = "charset_normalizer-3.4.7-cp310-cp310-win32.whl", hash = "sha256:6785f414ae0f3c733c437e0f3929197934f526d19dfaa75e18fdb4f94c6fb374"}, + {file = "charset_normalizer-3.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:6696b7688f54f5af4462118f0bfa7c1621eeb87154f77fa04b9295ce7a8f2943"}, + {file = "charset_normalizer-3.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:66671f93accb62ed07da56613636f3641f1a12c13046ce91ffc923721f23c008"}, + {file = "charset_normalizer-3.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7641bb8895e77f921102f72833904dcd9901df5d6d72a2ab8f31d04b7e51e4e7"}, + {file = "charset_normalizer-3.4.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:202389074300232baeb53ae2569a60901f7efadd4245cf3a3bf0617d60b439d7"}, + {file = "charset_normalizer-3.4.7-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:30b8d1d8c52a48c2c5690e152c169b673487a2a58de1ec7393196753063fcd5e"}, + {file = "charset_normalizer-3.4.7-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:532bc9bf33a68613fd7d65e4b1c71a6a38d7d42604ecf239c77392e9b4e8998c"}, + {file = "charset_normalizer-3.4.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fe249cb4651fd12605b7288b24751d8bfd46d35f12a20b1ba33dea122e690df"}, + {file = "charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:65bcd23054beab4d166035cabbc868a09c1a49d1efe458fe8e4361215df40265"}, + {file = "charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:08e721811161356f97b4059a9ba7bafb23ea5ee2255402c42881c214e173c6b4"}, + {file = "charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e060d01aec0a910bdccb8be71faf34e7799ce36950f8294c8bf612cba65a2c9e"}, + {file = "charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:38c0109396c4cfc574d502df99742a45c72c08eff0a36158b6f04000043dbf38"}, + {file = "charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1c2a768fdd44ee4a9339a9b0b130049139b8ce3c01d2ce09f67f5a68048d477c"}, + {file = "charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:1a87ca9d5df6fe460483d9a5bbf2b18f620cbed41b432e2bddb686228282d10b"}, + {file = "charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:d635aab80466bc95771bb78d5370e74d36d1fe31467b6b29b8b57b2a3cd7d22c"}, + {file = "charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ae196f021b5e7c78e918242d217db021ed2a6ace2bc6ae94c0fc596221c7f58d"}, + {file = "charset_normalizer-3.4.7-cp311-cp311-win32.whl", hash = "sha256:adb2597b428735679446b46c8badf467b4ca5f5056aae4d51a19f9570301b1ad"}, + {file = "charset_normalizer-3.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:8e385e4267ab76874ae30db04c627faaaf0b509e1ccc11a95b3fc3e83f855c00"}, + {file = "charset_normalizer-3.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:d4a48e5b3c2a489fae013b7589308a40146ee081f6f509e047e0e096084ceca1"}, + {file = "charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:eca9705049ad3c7345d574e3510665cb2cf844c2f2dcfe675332677f081cbd46"}, + {file = "charset_normalizer-3.4.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6178f72c5508bfc5fd446a5905e698c6212932f25bcdd4b47a757a50605a90e2"}, + {file = "charset_normalizer-3.4.7-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e1421b502d83040e6d7fb2fb18dff63957f720da3d77b2fbd3187ceb63755d7b"}, + {file = "charset_normalizer-3.4.7-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:edac0f1ab77644605be2cbba52e6b7f630731fc42b34cb0f634be1a6eface56a"}, + {file = "charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5649fd1c7bade02f320a462fdefd0b4bd3ce036065836d4f42e0de958038e116"}, + {file = "charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:203104ed3e428044fd943bc4bf45fa73c0730391f9621e37fe39ecf477b128cb"}, + {file = "charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:298930cec56029e05497a76988377cbd7457ba864beeea92ad7e844fe74cd1f1"}, + {file = "charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:708838739abf24b2ceb208d0e22403dd018faeef86ddac04319a62ae884c4f15"}, + {file = "charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:0f7eb884681e3938906ed0434f20c63046eacd0111c4ba96f27b76084cd679f5"}, + {file = "charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4dc1e73c36828f982bfe79fadf5919923f8a6f4df2860804db9a98c48824ce8d"}, + {file = "charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:aed52fea0513bac0ccde438c188c8a471c4e0f457c2dd20cdbf6ea7a450046c7"}, + {file = "charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:fea24543955a6a729c45a73fe90e08c743f0b3334bbf3201e6c4bc1b0c7fa464"}, + {file = "charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bb6d88045545b26da47aa879dd4a89a71d1dce0f0e549b1abcb31dfe4a8eac49"}, + {file = "charset_normalizer-3.4.7-cp312-cp312-win32.whl", hash = "sha256:2257141f39fe65a3fdf38aeccae4b953e5f3b3324f4ff0daf9f15b8518666a2c"}, + {file = "charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a0279cab2d6"}, + {file = "charset_normalizer-3.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:56be790f86bfb2c98fb742ce566dfb4816e5a83384616ab59c49e0604d49c51d"}, + {file = "charset_normalizer-3.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f496c9c3cc02230093d8330875c4c3cdfc3b73612a5fd921c65d39cbcef08063"}, + {file = "charset_normalizer-3.4.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ea948db76d31190bf08bd371623927ee1339d5f2a0b4b1b4a4439a65298703c"}, + {file = "charset_normalizer-3.4.7-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a277ab8928b9f299723bc1a2dabb1265911b1a76341f90a510368ca44ad9ab66"}, + {file = "charset_normalizer-3.4.7-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3bec022aec2c514d9cf199522a802bd007cd588ab17ab2525f20f9c34d067c18"}, + {file = "charset_normalizer-3.4.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e044c39e41b92c845bc815e5ae4230804e8e7bc29e399b0437d64222d92809dd"}, + {file = "charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:f495a1652cf3fbab2eb0639776dad966c2fb874d79d87ca07f9d5f059b8bd215"}, + {file = "charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e712b419df8ba5e42b226c510472b37bd57b38e897d3eca5e8cfd410a29fa859"}, + {file = "charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7804338df6fcc08105c7745f1502ba68d900f45fd770d5bdd5288ddccb8a42d8"}, + {file = "charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:481551899c856c704d58119b5025793fa6730adda3571971af568f66d2424bb5"}, + {file = "charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f59099f9b66f0d7145115e6f80dd8b1d847176df89b234a5a6b3f00437aa0832"}, + {file = "charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:f59ad4c0e8f6bba240a9bb85504faa1ab438237199d4cce5f622761507b8f6a6"}, + {file = "charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:3dedcc22d73ec993f42055eff4fcfed9318d1eeb9a6606c55892a26964964e48"}, + {file = "charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:64f02c6841d7d83f832cd97ccf8eb8a906d06eb95d5276069175c696b024b60a"}, + {file = "charset_normalizer-3.4.7-cp313-cp313-win32.whl", hash = "sha256:4042d5c8f957e15221d423ba781e85d553722fc4113f523f2feb7b188cc34c5e"}, + {file = "charset_normalizer-3.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:3946fa46a0cf3e4c8cb1cc52f56bb536310d34f25f01ca9b6c16afa767dab110"}, + {file = "charset_normalizer-3.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:80d04837f55fc81da168b98de4f4b797ef007fc8a79ab71c6ec9bc4dd662b15b"}, + {file = "charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0"}, + {file = "charset_normalizer-3.4.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c2aed2e5e41f24ea8ef1590b8e848a79b56f3a5564a65ceec43c9d692dc7d8a"}, + {file = "charset_normalizer-3.4.7-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:54523e136b8948060c0fa0bc7b1b50c32c186f2fceee897a495406bb6e311d2b"}, + {file = "charset_normalizer-3.4.7-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:715479b9a2802ecac752a3b0efa2b0b60285cf962ee38414211abdfccc233b41"}, + {file = "charset_normalizer-3.4.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bd6c2a1c7573c64738d716488d2cdd3c00e340e4835707d8fdb8dc1a66ef164e"}, + {file = "charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:c45e9440fb78f8ddabcf714b68f936737a121355bf59f3907f4e17721b9d1aae"}, + {file = "charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3534e7dcbdcf757da6b85a0bbf5b6868786d5982dd959b065e65481644817a18"}, + {file = "charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e8ac484bf18ce6975760921bb6148041faa8fef0547200386ea0b52b5d27bf7b"}, + {file = "charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a5fe03b42827c13cdccd08e6c0247b6a6d4b5e3cdc53fd1749f5896adcdc2356"}, + {file = "charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:2d6eb928e13016cea4f1f21d1e10c1cebd5a421bc57ddf5b1142ae3f86824fab"}, + {file = "charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e74327fb75de8986940def6e8dee4f127cc9752bee7355bb323cc5b2659b6d46"}, + {file = "charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d6038d37043bced98a66e68d3aa2b6a35505dc01328cd65217cefe82f25def44"}, + {file = "charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7579e913a5339fb8fa133f6bbcfd8e6749696206cf05acdbdca71a1b436d8e72"}, + {file = "charset_normalizer-3.4.7-cp314-cp314-win32.whl", hash = "sha256:5b77459df20e08151cd6f8b9ef8ef1f961ef73d85c21a555c7eed5b79410ec10"}, + {file = "charset_normalizer-3.4.7-cp314-cp314-win_amd64.whl", hash = "sha256:92a0a01ead5e668468e952e4238cccd7c537364eb7d851ab144ab6627dbbe12f"}, + {file = "charset_normalizer-3.4.7-cp314-cp314-win_arm64.whl", hash = "sha256:67f6279d125ca0046a7fd386d01b311c6363844deac3e5b069b514ba3e63c246"}, + {file = "charset_normalizer-3.4.7-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:effc3f449787117233702311a1b7d8f59cba9ced946ba727bdc329ec69028e24"}, + {file = "charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fbccdc05410c9ee21bbf16a35f4c1d16123dcdeb8a1d38f33654fa21d0234f79"}, + {file = "charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:733784b6d6def852c814bce5f318d25da2ee65dd4839a0718641c696e09a2960"}, + {file = "charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a89c23ef8d2c6b27fd200a42aa4ac72786e7c60d40efdc76e6011260b6e949c4"}, + {file = "charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6c114670c45346afedc0d947faf3c7f701051d2518b943679c8ff88befe14f8e"}, + {file = "charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:a180c5e59792af262bf263b21a3c49353f25945d8d9f70628e73de370d55e1e1"}, + {file = "charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3c9a494bc5ec77d43cea229c4f6db1e4d8fe7e1bbffa8b6f0f0032430ff8ab44"}, + {file = "charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8d828b6667a32a728a1ad1d93957cdf37489c57b97ae6c4de2860fa749b8fc1e"}, + {file = "charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:cf1493cd8607bec4d8a7b9b004e699fcf8f9103a9284cc94962cb73d20f9d4a3"}, + {file = "charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:0c96c3b819b5c3e9e165495db84d41914d6894d55181d2d108cc1a69bfc9cce0"}, + {file = "charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:752a45dc4a6934060b3b0dab47e04edc3326575f82be64bc4fc293914566503e"}, + {file = "charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:8778f0c7a52e56f75d12dae53ae320fae900a8b9b4164b981b9c5ce059cd1fcb"}, + {file = "charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ce3412fbe1e31eb81ea42f4169ed94861c56e643189e1e75f0041f3fe7020abe"}, + {file = "charset_normalizer-3.4.7-cp314-cp314t-win32.whl", hash = "sha256:c03a41a8784091e67a39648f70c5f97b5b6a37f216896d44d2cdcb82615339a0"}, + {file = "charset_normalizer-3.4.7-cp314-cp314t-win_amd64.whl", hash = "sha256:03853ed82eeebbce3c2abfdbc98c96dc205f32a79627688ac9a27370ea61a49c"}, + {file = "charset_normalizer-3.4.7-cp314-cp314t-win_arm64.whl", hash = "sha256:c35abb8bfff0185efac5878da64c45dafd2b37fb0383add1be155a763c1f083d"}, + {file = "charset_normalizer-3.4.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e5f4d355f0a2b1a31bc3edec6795b46324349c9cb25eed068049e4f472fb4259"}, + {file = "charset_normalizer-3.4.7-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:16d971e29578a5e97d7117866d15889a4a07befe0e87e703ed63cd90cb348c01"}, + {file = "charset_normalizer-3.4.7-cp38-cp38-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dca4bbc466a95ba9c0234ef56d7dd9509f63da22274589ebd4ed7f1f4d4c54e3"}, + {file = "charset_normalizer-3.4.7-cp38-cp38-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e80c8378d8f3d83cd3164da1ad2df9e37a666cdde7b1cb2298ed0b558064be30"}, + {file = "charset_normalizer-3.4.7-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:36836d6ff945a00b88ba1e4572d721e60b5b8c98c155d465f56ad19d68f23734"}, + {file = "charset_normalizer-3.4.7-cp38-cp38-manylinux_2_31_armv7l.whl", hash = "sha256:bd9b23791fe793e4968dba0c447e12f78e425c59fc0e3b97f6450f4781f3ee60"}, + {file = "charset_normalizer-3.4.7-cp38-cp38-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:aef65cd602a6d0e0ff6f9930fcb1c8fec60dd2cfcb6facaf4bdb0e5873042db0"}, + {file = "charset_normalizer-3.4.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:82b271f5137d07749f7bf32f70b17ab6eaabedd297e75dce75081a24f76eb545"}, + {file = "charset_normalizer-3.4.7-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:1efde3cae86c8c273f1eb3b287be7d8499420cf2fe7585c41d370d3e790054a5"}, + {file = "charset_normalizer-3.4.7-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:c593052c465475e64bbfe5dbd81680f64a67fdc752c56d7a0ae205dc8aeefe0f"}, + {file = "charset_normalizer-3.4.7-cp38-cp38-musllinux_1_2_riscv64.whl", hash = "sha256:af21eb4409a119e365397b2adbaca4c9ccab56543a65d5dbd9f920d6ac29f686"}, + {file = "charset_normalizer-3.4.7-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:84c018e49c3bf790f9c2771c45e9313a08c2c2a6342b162cd650258b57817706"}, + {file = "charset_normalizer-3.4.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dd915403e231e6b1809fe9b6d9fc55cf8fb5e02765ac625d9cd623342a7905d7"}, + {file = "charset_normalizer-3.4.7-cp38-cp38-win32.whl", hash = "sha256:320ade88cfb846b8cd6b4ddf5ee9e80ee0c1f52401f2456b84ae1ae6a1a5f207"}, + {file = "charset_normalizer-3.4.7-cp38-cp38-win_amd64.whl", hash = "sha256:1dc8b0ea451d6e69735094606991f32867807881400f808a106ee1d963c46a83"}, + {file = "charset_normalizer-3.4.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:177a0ba5f0211d488e295aaf82707237e331c24788d8d76c96c5a41594723217"}, + {file = "charset_normalizer-3.4.7-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e0d51f618228538a3e8f46bd246f87a6cd030565e015803691603f55e12afb5"}, + {file = "charset_normalizer-3.4.7-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:14265bfe1f09498b9d8ec91e9ec9fa52775edf90fcbde092b25f4a33d444fea9"}, + {file = "charset_normalizer-3.4.7-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:87fad7d9ba98c86bcb41b2dc8dbb326619be2562af1f8ff50776a39e55721c5a"}, + {file = "charset_normalizer-3.4.7-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f22dec1690b584cea26fade98b2435c132c1b5f68e39f5a0b7627cd7ae31f1dc"}, + {file = "charset_normalizer-3.4.7-cp39-cp39-manylinux_2_31_armv7l.whl", hash = "sha256:d61f00a0869d77422d9b2aba989e2d24afa6ffd552af442e0e58de4f35ea6d00"}, + {file = "charset_normalizer-3.4.7-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6370e8686f662e6a3941ee48ed4742317cafbe5707e36406e9df792cdb535776"}, + {file = "charset_normalizer-3.4.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a6c5863edfbe888d9eff9c8b8087354e27618d9da76425c119293f11712a6319"}, + {file = "charset_normalizer-3.4.7-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:ed065083d0898c9d5b4bbec7b026fd755ff7454e6e8b73a67f8c744b13986e24"}, + {file = "charset_normalizer-3.4.7-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:2cd4a60d0e2fb04537162c62bbbb4182f53541fe0ede35cdf270a1c1e723cc42"}, + {file = "charset_normalizer-3.4.7-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:813c0e0132266c08eb87469a642cb30aaff57c5f426255419572aaeceeaa7bf4"}, + {file = "charset_normalizer-3.4.7-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:07d9e39b01743c3717745f4c530a6349eadbfa043c7577eef86c502c15df2c67"}, + {file = "charset_normalizer-3.4.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c0f081d69a6e58272819b70288d3221a6ee64b98df852631c80f293514d3b274"}, + {file = "charset_normalizer-3.4.7-cp39-cp39-win32.whl", hash = "sha256:8751d2787c9131302398b11e6c8068053dcb55d5a8964e114b6e196cf16cb366"}, + {file = "charset_normalizer-3.4.7-cp39-cp39-win_amd64.whl", hash = "sha256:12a6fff75f6bc66711b73a2f0addfc4c8c15a20e805146a02d147a318962c444"}, + {file = "charset_normalizer-3.4.7-cp39-cp39-win_arm64.whl", hash = "sha256:bb8cc7534f51d9a017b93e3e85b260924f909601c3df002bcdb58ddb4dc41a5c"}, + {file = "charset_normalizer-3.4.7-py3-none-any.whl", hash = "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d"}, + {file = "charset_normalizer-3.4.7.tar.gz", hash = "sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5"}, +] + +[[package]] +name = "idna" +version = "3.11" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea"}, + {file = "idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902"}, +] + +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + +[[package]] +name = "requests" +version = "2.33.1" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.10" +groups = ["main"] +files = [ + {file = "requests-2.33.1-py3-none-any.whl", hash = "sha256:4e6d1ef462f3626a1f0a0a9c42dd93c63bad33f9f1c1937509b8c5c8718ab56a"}, + {file = "requests-2.33.1.tar.gz", hash = "sha256:18817f8c57c6263968bc123d237e3b8b08ac046f5456bd1e307ee8f4250d3517"}, +] + +[package.dependencies] +certifi = ">=2023.5.7" +charset_normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.26,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<8)"] + +[[package]] +name = "urllib3" +version = "2.6.3" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4"}, + {file = "urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed"}, +] + +[package.extras] +brotli = ["brotli (>=1.2.0) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=1.2.0.0) ; platform_python_implementation != \"CPython\""] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["backports-zstd (>=1.0.0) ; python_version < \"3.14\""] + +[metadata] +lock-version = "2.1" +python-versions = "^3.12" +content-hash = "e19a593164d34bae9da444657fc9996c6b735cd63e05a0610d0e4c52259f6dd0" diff --git a/test/providers/tst_manifests/pyproject/poetry_workspace/pyproject.toml b/test/providers/tst_manifests/pyproject/poetry_workspace/pyproject.toml new file mode 100644 index 00000000..b2c88126 --- /dev/null +++ b/test/providers/tst_manifests/pyproject/poetry_workspace/pyproject.toml @@ -0,0 +1,8 @@ +[tool.poetry] +name = "poetry-mono" +version = "0.1.0" +description = "Poetry monorepo root" + +[tool.poetry.dependencies] +python = "^3.12" +requests = "^2.0" diff --git a/test/providers/tst_manifests/pyproject/uv_workspace/expected_component_sbom.json b/test/providers/tst_manifests/pyproject/uv_workspace/expected_component_sbom.json new file mode 100644 index 00000000..9e09c503 --- /dev/null +++ b/test/providers/tst_manifests/pyproject/uv_workspace/expected_component_sbom.json @@ -0,0 +1,48 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-10-01T00:00:00.000Z", + "component": { + "name": "uv-mono", + "version": "0.1.0", + "purl": "pkg:pypi/uv-mono@0.1.0", + "type": "application", + "bom-ref": "pkg:pypi/uv-mono@0.1.0" + } + }, + "components": [ + { + "name": "flask", + "version": "2.0.3", + "purl": "pkg:pypi/flask@2.0.3", + "type": "library", + "bom-ref": "pkg:pypi/flask@2.0.3" + }, + { + "name": "mid-pkg", + "version": "0.1.0", + "purl": "pkg:pypi/mid-pkg@0.1.0", + "type": "library", + "bom-ref": "pkg:pypi/mid-pkg@0.1.0" + } + ], + "dependencies": [ + { + "ref": "pkg:pypi/uv-mono@0.1.0", + "dependsOn": [ + "pkg:pypi/flask@2.0.3", + "pkg:pypi/mid-pkg@0.1.0" + ] + }, + { + "ref": "pkg:pypi/flask@2.0.3", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/mid-pkg@0.1.0", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/pyproject/uv_workspace/expected_stack_sbom.json b/test/providers/tst_manifests/pyproject/uv_workspace/expected_stack_sbom.json new file mode 100644 index 00000000..77df939e --- /dev/null +++ b/test/providers/tst_manifests/pyproject/uv_workspace/expected_stack_sbom.json @@ -0,0 +1,198 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-10-01T00:00:00.000Z", + "component": { + "name": "uv-mono", + "version": "0.1.0", + "purl": "pkg:pypi/uv-mono@0.1.0", + "type": "application", + "bom-ref": "pkg:pypi/uv-mono@0.1.0" + } + }, + "components": [ + { + "name": "flask", + "version": "2.0.3", + "purl": "pkg:pypi/flask@2.0.3", + "type": "library", + "bom-ref": "pkg:pypi/flask@2.0.3" + }, + { + "name": "click", + "version": "8.3.2", + "purl": "pkg:pypi/click@8.3.2", + "type": "library", + "bom-ref": "pkg:pypi/click@8.3.2" + }, + { + "name": "colorama", + "version": "0.4.6", + "purl": "pkg:pypi/colorama@0.4.6", + "type": "library", + "bom-ref": "pkg:pypi/colorama@0.4.6" + }, + { + "name": "itsdangerous", + "version": "2.2.0", + "purl": "pkg:pypi/itsdangerous@2.2.0", + "type": "library", + "bom-ref": "pkg:pypi/itsdangerous@2.2.0" + }, + { + "name": "jinja2", + "version": "3.1.6", + "purl": "pkg:pypi/jinja2@3.1.6", + "type": "library", + "bom-ref": "pkg:pypi/jinja2@3.1.6" + }, + { + "name": "markupsafe", + "version": "3.0.3", + "purl": "pkg:pypi/markupsafe@3.0.3", + "type": "library", + "bom-ref": "pkg:pypi/markupsafe@3.0.3" + }, + { + "name": "werkzeug", + "version": "3.1.8", + "purl": "pkg:pypi/werkzeug@3.1.8", + "type": "library", + "bom-ref": "pkg:pypi/werkzeug@3.1.8" + }, + { + "name": "mid-pkg", + "version": "0.1.0", + "purl": "pkg:pypi/mid-pkg@0.1.0", + "type": "library", + "bom-ref": "pkg:pypi/mid-pkg@0.1.0" + }, + { + "name": "sub-pkg", + "version": "0.1.0", + "purl": "pkg:pypi/sub-pkg@0.1.0", + "type": "library", + "bom-ref": "pkg:pypi/sub-pkg@0.1.0" + }, + { + "name": "requests", + "version": "2.33.1", + "purl": "pkg:pypi/requests@2.33.1", + "type": "library", + "bom-ref": "pkg:pypi/requests@2.33.1" + }, + { + "name": "certifi", + "version": "2026.2.25", + "purl": "pkg:pypi/certifi@2026.2.25", + "type": "library", + "bom-ref": "pkg:pypi/certifi@2026.2.25" + }, + { + "name": "charset-normalizer", + "version": "3.4.7", + "purl": "pkg:pypi/charset-normalizer@3.4.7", + "type": "library", + "bom-ref": "pkg:pypi/charset-normalizer@3.4.7" + }, + { + "name": "idna", + "version": "3.11", + "purl": "pkg:pypi/idna@3.11", + "type": "library", + "bom-ref": "pkg:pypi/idna@3.11" + }, + { + "name": "urllib3", + "version": "2.6.3", + "purl": "pkg:pypi/urllib3@2.6.3", + "type": "library", + "bom-ref": "pkg:pypi/urllib3@2.6.3" + } + ], + "dependencies": [ + { + "ref": "pkg:pypi/uv-mono@0.1.0", + "dependsOn": [ + "pkg:pypi/flask@2.0.3", + "pkg:pypi/mid-pkg@0.1.0" + ] + }, + { + "ref": "pkg:pypi/flask@2.0.3", + "dependsOn": [ + "pkg:pypi/click@8.3.2", + "pkg:pypi/itsdangerous@2.2.0", + "pkg:pypi/jinja2@3.1.6", + "pkg:pypi/werkzeug@3.1.8" + ] + }, + { + "ref": "pkg:pypi/click@8.3.2", + "dependsOn": [ + "pkg:pypi/colorama@0.4.6" + ] + }, + { + "ref": "pkg:pypi/colorama@0.4.6", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/itsdangerous@2.2.0", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/jinja2@3.1.6", + "dependsOn": [ + "pkg:pypi/markupsafe@3.0.3" + ] + }, + { + "ref": "pkg:pypi/markupsafe@3.0.3", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/werkzeug@3.1.8", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/mid-pkg@0.1.0", + "dependsOn": [ + "pkg:pypi/sub-pkg@0.1.0" + ] + }, + { + "ref": "pkg:pypi/sub-pkg@0.1.0", + "dependsOn": [ + "pkg:pypi/requests@2.33.1" + ] + }, + { + "ref": "pkg:pypi/requests@2.33.1", + "dependsOn": [ + "pkg:pypi/certifi@2026.2.25", + "pkg:pypi/charset-normalizer@3.4.7", + "pkg:pypi/idna@3.11", + "pkg:pypi/urllib3@2.6.3" + ] + }, + { + "ref": "pkg:pypi/certifi@2026.2.25", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/charset-normalizer@3.4.7", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/idna@3.11", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/urllib3@2.6.3", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/pyproject/uv_workspace/packages/mid-pkg/expected_component_sbom.json b/test/providers/tst_manifests/pyproject/uv_workspace/packages/mid-pkg/expected_component_sbom.json new file mode 100644 index 00000000..6028991b --- /dev/null +++ b/test/providers/tst_manifests/pyproject/uv_workspace/packages/mid-pkg/expected_component_sbom.json @@ -0,0 +1,36 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-10-01T00:00:00.000Z", + "component": { + "name": "mid-pkg", + "version": "0.1.0", + "purl": "pkg:pypi/mid-pkg@0.1.0", + "type": "application", + "bom-ref": "pkg:pypi/mid-pkg@0.1.0" + } + }, + "components": [ + { + "name": "sub-pkg", + "version": "0.1.0", + "purl": "pkg:pypi/sub-pkg@0.1.0", + "type": "library", + "bom-ref": "pkg:pypi/sub-pkg@0.1.0" + } + ], + "dependencies": [ + { + "ref": "pkg:pypi/mid-pkg@0.1.0", + "dependsOn": [ + "pkg:pypi/sub-pkg@0.1.0" + ] + }, + { + "ref": "pkg:pypi/sub-pkg@0.1.0", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/pyproject/uv_workspace/packages/mid-pkg/expected_stack_sbom.json b/test/providers/tst_manifests/pyproject/uv_workspace/packages/mid-pkg/expected_stack_sbom.json new file mode 100644 index 00000000..506c9dca --- /dev/null +++ b/test/providers/tst_manifests/pyproject/uv_workspace/packages/mid-pkg/expected_stack_sbom.json @@ -0,0 +1,98 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-10-01T00:00:00.000Z", + "component": { + "name": "mid-pkg", + "version": "0.1.0", + "purl": "pkg:pypi/mid-pkg@0.1.0", + "type": "application", + "bom-ref": "pkg:pypi/mid-pkg@0.1.0" + } + }, + "components": [ + { + "name": "sub-pkg", + "version": "0.1.0", + "purl": "pkg:pypi/sub-pkg@0.1.0", + "type": "library", + "bom-ref": "pkg:pypi/sub-pkg@0.1.0" + }, + { + "name": "requests", + "version": "2.33.1", + "purl": "pkg:pypi/requests@2.33.1", + "type": "library", + "bom-ref": "pkg:pypi/requests@2.33.1" + }, + { + "name": "certifi", + "version": "2026.2.25", + "purl": "pkg:pypi/certifi@2026.2.25", + "type": "library", + "bom-ref": "pkg:pypi/certifi@2026.2.25" + }, + { + "name": "charset-normalizer", + "version": "3.4.7", + "purl": "pkg:pypi/charset-normalizer@3.4.7", + "type": "library", + "bom-ref": "pkg:pypi/charset-normalizer@3.4.7" + }, + { + "name": "idna", + "version": "3.11", + "purl": "pkg:pypi/idna@3.11", + "type": "library", + "bom-ref": "pkg:pypi/idna@3.11" + }, + { + "name": "urllib3", + "version": "2.6.3", + "purl": "pkg:pypi/urllib3@2.6.3", + "type": "library", + "bom-ref": "pkg:pypi/urllib3@2.6.3" + } + ], + "dependencies": [ + { + "ref": "pkg:pypi/mid-pkg@0.1.0", + "dependsOn": [ + "pkg:pypi/sub-pkg@0.1.0" + ] + }, + { + "ref": "pkg:pypi/sub-pkg@0.1.0", + "dependsOn": [ + "pkg:pypi/requests@2.33.1" + ] + }, + { + "ref": "pkg:pypi/requests@2.33.1", + "dependsOn": [ + "pkg:pypi/certifi@2026.2.25", + "pkg:pypi/charset-normalizer@3.4.7", + "pkg:pypi/idna@3.11", + "pkg:pypi/urllib3@2.6.3" + ] + }, + { + "ref": "pkg:pypi/certifi@2026.2.25", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/charset-normalizer@3.4.7", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/idna@3.11", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/urllib3@2.6.3", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/pyproject/uv_workspace/packages/mid-pkg/pyproject.toml b/test/providers/tst_manifests/pyproject/uv_workspace/packages/mid-pkg/pyproject.toml new file mode 100644 index 00000000..e66920d8 --- /dev/null +++ b/test/providers/tst_manifests/pyproject/uv_workspace/packages/mid-pkg/pyproject.toml @@ -0,0 +1,9 @@ +[project] +name = "mid-pkg" +version = "0.1.0" +dependencies = [ + "sub-pkg", +] + +[tool.uv.sources] +sub-pkg = { workspace = true } diff --git a/test/providers/tst_manifests/pyproject/uv_workspace/packages/sub-pkg/expected_component_sbom.json b/test/providers/tst_manifests/pyproject/uv_workspace/packages/sub-pkg/expected_component_sbom.json new file mode 100644 index 00000000..dec8c565 --- /dev/null +++ b/test/providers/tst_manifests/pyproject/uv_workspace/packages/sub-pkg/expected_component_sbom.json @@ -0,0 +1,36 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-10-01T00:00:00.000Z", + "component": { + "name": "sub-pkg", + "version": "0.1.0", + "purl": "pkg:pypi/sub-pkg@0.1.0", + "type": "application", + "bom-ref": "pkg:pypi/sub-pkg@0.1.0" + } + }, + "components": [ + { + "name": "requests", + "version": "2.33.1", + "purl": "pkg:pypi/requests@2.33.1", + "type": "library", + "bom-ref": "pkg:pypi/requests@2.33.1" + } + ], + "dependencies": [ + { + "ref": "pkg:pypi/sub-pkg@0.1.0", + "dependsOn": [ + "pkg:pypi/requests@2.33.1" + ] + }, + { + "ref": "pkg:pypi/requests@2.33.1", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/pyproject/uv_workspace/packages/sub-pkg/expected_stack_sbom.json b/test/providers/tst_manifests/pyproject/uv_workspace/packages/sub-pkg/expected_stack_sbom.json new file mode 100644 index 00000000..e9d1f86d --- /dev/null +++ b/test/providers/tst_manifests/pyproject/uv_workspace/packages/sub-pkg/expected_stack_sbom.json @@ -0,0 +1,85 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "version": 1, + "metadata": { + "timestamp": "2023-10-01T00:00:00.000Z", + "component": { + "name": "sub-pkg", + "version": "0.1.0", + "purl": "pkg:pypi/sub-pkg@0.1.0", + "type": "application", + "bom-ref": "pkg:pypi/sub-pkg@0.1.0" + } + }, + "components": [ + { + "name": "requests", + "version": "2.33.1", + "purl": "pkg:pypi/requests@2.33.1", + "type": "library", + "bom-ref": "pkg:pypi/requests@2.33.1" + }, + { + "name": "certifi", + "version": "2026.2.25", + "purl": "pkg:pypi/certifi@2026.2.25", + "type": "library", + "bom-ref": "pkg:pypi/certifi@2026.2.25" + }, + { + "name": "charset-normalizer", + "version": "3.4.7", + "purl": "pkg:pypi/charset-normalizer@3.4.7", + "type": "library", + "bom-ref": "pkg:pypi/charset-normalizer@3.4.7" + }, + { + "name": "idna", + "version": "3.11", + "purl": "pkg:pypi/idna@3.11", + "type": "library", + "bom-ref": "pkg:pypi/idna@3.11" + }, + { + "name": "urllib3", + "version": "2.6.3", + "purl": "pkg:pypi/urllib3@2.6.3", + "type": "library", + "bom-ref": "pkg:pypi/urllib3@2.6.3" + } + ], + "dependencies": [ + { + "ref": "pkg:pypi/sub-pkg@0.1.0", + "dependsOn": [ + "pkg:pypi/requests@2.33.1" + ] + }, + { + "ref": "pkg:pypi/requests@2.33.1", + "dependsOn": [ + "pkg:pypi/certifi@2026.2.25", + "pkg:pypi/charset-normalizer@3.4.7", + "pkg:pypi/idna@3.11", + "pkg:pypi/urllib3@2.6.3" + ] + }, + { + "ref": "pkg:pypi/certifi@2026.2.25", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/charset-normalizer@3.4.7", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/idna@3.11", + "dependsOn": [] + }, + { + "ref": "pkg:pypi/urllib3@2.6.3", + "dependsOn": [] + } + ] +} diff --git a/test/providers/tst_manifests/pyproject/uv_workspace/packages/sub-pkg/pyproject.toml b/test/providers/tst_manifests/pyproject/uv_workspace/packages/sub-pkg/pyproject.toml new file mode 100644 index 00000000..39aac1dd --- /dev/null +++ b/test/providers/tst_manifests/pyproject/uv_workspace/packages/sub-pkg/pyproject.toml @@ -0,0 +1,6 @@ +[project] +name = "sub-pkg" +version = "0.1.0" +dependencies = [ + "requests>=2.0", +] diff --git a/test/providers/tst_manifests/pyproject/uv_workspace/pyproject.toml b/test/providers/tst_manifests/pyproject/uv_workspace/pyproject.toml new file mode 100644 index 00000000..2d6cf260 --- /dev/null +++ b/test/providers/tst_manifests/pyproject/uv_workspace/pyproject.toml @@ -0,0 +1,13 @@ +[project] +name = "uv-mono" +version = "0.1.0" +dependencies = [ + "mid-pkg", + "flask==2.0.3" +] + +[tool.uv.sources] +mid-pkg = { workspace = true } + +[tool.uv.workspace] +members = ["packages/*"] diff --git a/test/providers/tst_manifests/pyproject/uv_workspace/uv.lock b/test/providers/tst_manifests/pyproject/uv_workspace/uv.lock new file mode 100644 index 00000000..3e67804f --- /dev/null +++ b/test/providers/tst_manifests/pyproject/uv_workspace/uv.lock @@ -0,0 +1,267 @@ +version = 1 +revision = 3 +requires-python = ">=3.13" + +[manifest] +members = [ + "mid-pkg", + "sub-pkg", + "uv-mono", +] + +[[package]] +name = "certifi" +version = "2026.2.25" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/af/2d/7bf41579a8986e348fa033a31cdd0e4121114f6bce2457e8876010b092dd/certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7", size = 155029, upload-time = "2026-02-25T02:54:17.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa", size = 153684, upload-time = "2026-02-25T02:54:15.766Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/a1/67fe25fac3c7642725500a3f6cfe5821ad557c3abb11c9d20d12c7008d3e/charset_normalizer-3.4.7.tar.gz", hash = "sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5", size = 144271, upload-time = "2026-04-02T09:28:39.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/3b/66777e39d3ae1ddc77ee606be4ec6d8cbd4c801f65e5a1b6f2b11b8346dd/charset_normalizer-3.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f496c9c3cc02230093d8330875c4c3cdfc3b73612a5fd921c65d39cbcef08063", size = 309627, upload-time = "2026-04-02T09:26:45.198Z" }, + { url = "https://files.pythonhosted.org/packages/2e/4e/b7f84e617b4854ade48a1b7915c8ccfadeba444d2a18c291f696e37f0d3b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ea948db76d31190bf08bd371623927ee1339d5f2a0b4b1b4a4439a65298703c", size = 207008, upload-time = "2026-04-02T09:26:46.824Z" }, + { url = "https://files.pythonhosted.org/packages/c4/bb/ec73c0257c9e11b268f018f068f5d00aa0ef8c8b09f7753ebd5f2880e248/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a277ab8928b9f299723bc1a2dabb1265911b1a76341f90a510368ca44ad9ab66", size = 228303, upload-time = "2026-04-02T09:26:48.397Z" }, + { url = "https://files.pythonhosted.org/packages/85/fb/32d1f5033484494619f701e719429c69b766bfc4dbc61aa9e9c8c166528b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3bec022aec2c514d9cf199522a802bd007cd588ab17ab2525f20f9c34d067c18", size = 224282, upload-time = "2026-04-02T09:26:49.684Z" }, + { url = "https://files.pythonhosted.org/packages/fa/07/330e3a0dda4c404d6da83b327270906e9654a24f6c546dc886a0eb0ffb23/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e044c39e41b92c845bc815e5ae4230804e8e7bc29e399b0437d64222d92809dd", size = 215595, upload-time = "2026-04-02T09:26:50.915Z" }, + { url = "https://files.pythonhosted.org/packages/e3/7c/fc890655786e423f02556e0216d4b8c6bcb6bdfa890160dc66bf52dee468/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:f495a1652cf3fbab2eb0639776dad966c2fb874d79d87ca07f9d5f059b8bd215", size = 201986, upload-time = "2026-04-02T09:26:52.197Z" }, + { url = "https://files.pythonhosted.org/packages/d8/97/bfb18b3db2aed3b90cf54dc292ad79fdd5ad65c4eae454099475cbeadd0d/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e712b419df8ba5e42b226c510472b37bd57b38e897d3eca5e8cfd410a29fa859", size = 211711, upload-time = "2026-04-02T09:26:53.49Z" }, + { url = "https://files.pythonhosted.org/packages/6f/a5/a581c13798546a7fd557c82614a5c65a13df2157e9ad6373166d2a3e645d/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7804338df6fcc08105c7745f1502ba68d900f45fd770d5bdd5288ddccb8a42d8", size = 210036, upload-time = "2026-04-02T09:26:54.975Z" }, + { url = "https://files.pythonhosted.org/packages/8c/bf/b3ab5bcb478e4193d517644b0fb2bf5497fbceeaa7a1bc0f4d5b50953861/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:481551899c856c704d58119b5025793fa6730adda3571971af568f66d2424bb5", size = 202998, upload-time = "2026-04-02T09:26:56.303Z" }, + { url = "https://files.pythonhosted.org/packages/e7/4e/23efd79b65d314fa320ec6017b4b5834d5c12a58ba4610aa353af2e2f577/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f59099f9b66f0d7145115e6f80dd8b1d847176df89b234a5a6b3f00437aa0832", size = 230056, upload-time = "2026-04-02T09:26:57.554Z" }, + { url = "https://files.pythonhosted.org/packages/b9/9f/1e1941bc3f0e01df116e68dc37a55c4d249df5e6fa77f008841aef68264f/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:f59ad4c0e8f6bba240a9bb85504faa1ab438237199d4cce5f622761507b8f6a6", size = 211537, upload-time = "2026-04-02T09:26:58.843Z" }, + { url = "https://files.pythonhosted.org/packages/80/0f/088cbb3020d44428964a6c97fe1edfb1b9550396bf6d278330281e8b709c/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:3dedcc22d73ec993f42055eff4fcfed9318d1eeb9a6606c55892a26964964e48", size = 226176, upload-time = "2026-04-02T09:27:00.437Z" }, + { url = "https://files.pythonhosted.org/packages/6a/9f/130394f9bbe06f4f63e22641d32fc9b202b7e251c9aef4db044324dac493/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:64f02c6841d7d83f832cd97ccf8eb8a906d06eb95d5276069175c696b024b60a", size = 217723, upload-time = "2026-04-02T09:27:02.021Z" }, + { url = "https://files.pythonhosted.org/packages/73/55/c469897448a06e49f8fa03f6caae97074fde823f432a98f979cc42b90e69/charset_normalizer-3.4.7-cp313-cp313-win32.whl", hash = "sha256:4042d5c8f957e15221d423ba781e85d553722fc4113f523f2feb7b188cc34c5e", size = 148085, upload-time = "2026-04-02T09:27:03.192Z" }, + { url = "https://files.pythonhosted.org/packages/5d/78/1b74c5bbb3f99b77a1715c91b3e0b5bdb6fe302d95ace4f5b1bec37b0167/charset_normalizer-3.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:3946fa46a0cf3e4c8cb1cc52f56bb536310d34f25f01ca9b6c16afa767dab110", size = 158819, upload-time = "2026-04-02T09:27:04.454Z" }, + { url = "https://files.pythonhosted.org/packages/68/86/46bd42279d323deb8687c4a5a811fd548cb7d1de10cf6535d099877a9a9f/charset_normalizer-3.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:80d04837f55fc81da168b98de4f4b797ef007fc8a79ab71c6ec9bc4dd662b15b", size = 147915, upload-time = "2026-04-02T09:27:05.971Z" }, + { url = "https://files.pythonhosted.org/packages/97/c8/c67cb8c70e19ef1960b97b22ed2a1567711de46c4ddf19799923adc836c2/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0", size = 309234, upload-time = "2026-04-02T09:27:07.194Z" }, + { url = "https://files.pythonhosted.org/packages/99/85/c091fdee33f20de70d6c8b522743b6f831a2f1cd3ff86de4c6a827c48a76/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c2aed2e5e41f24ea8ef1590b8e848a79b56f3a5564a65ceec43c9d692dc7d8a", size = 208042, upload-time = "2026-04-02T09:27:08.749Z" }, + { url = "https://files.pythonhosted.org/packages/87/1c/ab2ce611b984d2fd5d86a5a8a19c1ae26acac6bad967da4967562c75114d/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:54523e136b8948060c0fa0bc7b1b50c32c186f2fceee897a495406bb6e311d2b", size = 228706, upload-time = "2026-04-02T09:27:09.951Z" }, + { url = "https://files.pythonhosted.org/packages/a8/29/2b1d2cb00bf085f59d29eb773ce58ec2d325430f8c216804a0a5cd83cbca/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:715479b9a2802ecac752a3b0efa2b0b60285cf962ee38414211abdfccc233b41", size = 224727, upload-time = "2026-04-02T09:27:11.175Z" }, + { url = "https://files.pythonhosted.org/packages/47/5c/032c2d5a07fe4d4855fea851209cca2b6f03ebeb6d4e3afdb3358386a684/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bd6c2a1c7573c64738d716488d2cdd3c00e340e4835707d8fdb8dc1a66ef164e", size = 215882, upload-time = "2026-04-02T09:27:12.446Z" }, + { url = "https://files.pythonhosted.org/packages/2c/c2/356065d5a8b78ed04499cae5f339f091946a6a74f91e03476c33f0ab7100/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:c45e9440fb78f8ddabcf714b68f936737a121355bf59f3907f4e17721b9d1aae", size = 200860, upload-time = "2026-04-02T09:27:13.721Z" }, + { url = "https://files.pythonhosted.org/packages/0c/cd/a32a84217ced5039f53b29f460962abb2d4420def55afabe45b1c3c7483d/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3534e7dcbdcf757da6b85a0bbf5b6868786d5982dd959b065e65481644817a18", size = 211564, upload-time = "2026-04-02T09:27:15.272Z" }, + { url = "https://files.pythonhosted.org/packages/44/86/58e6f13ce26cc3b8f4a36b94a0f22ae2f00a72534520f4ae6857c4b81f89/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e8ac484bf18ce6975760921bb6148041faa8fef0547200386ea0b52b5d27bf7b", size = 211276, upload-time = "2026-04-02T09:27:16.834Z" }, + { url = "https://files.pythonhosted.org/packages/8f/fe/d17c32dc72e17e155e06883efa84514ca375f8a528ba2546bee73fc4df81/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a5fe03b42827c13cdccd08e6c0247b6a6d4b5e3cdc53fd1749f5896adcdc2356", size = 201238, upload-time = "2026-04-02T09:27:18.229Z" }, + { url = "https://files.pythonhosted.org/packages/6a/29/f33daa50b06525a237451cdb6c69da366c381a3dadcd833fa5676bc468b3/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:2d6eb928e13016cea4f1f21d1e10c1cebd5a421bc57ddf5b1142ae3f86824fab", size = 230189, upload-time = "2026-04-02T09:27:19.445Z" }, + { url = "https://files.pythonhosted.org/packages/b6/6e/52c84015394a6a0bdcd435210a7e944c5f94ea1055f5cc5d56c5fe368e7b/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e74327fb75de8986940def6e8dee4f127cc9752bee7355bb323cc5b2659b6d46", size = 211352, upload-time = "2026-04-02T09:27:20.79Z" }, + { url = "https://files.pythonhosted.org/packages/8c/d7/4353be581b373033fb9198bf1da3cf8f09c1082561e8e922aa7b39bf9fe8/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d6038d37043bced98a66e68d3aa2b6a35505dc01328cd65217cefe82f25def44", size = 227024, upload-time = "2026-04-02T09:27:22.063Z" }, + { url = "https://files.pythonhosted.org/packages/30/45/99d18aa925bd1740098ccd3060e238e21115fffbfdcb8f3ece837d0ace6c/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7579e913a5339fb8fa133f6bbcfd8e6749696206cf05acdbdca71a1b436d8e72", size = 217869, upload-time = "2026-04-02T09:27:23.486Z" }, + { url = "https://files.pythonhosted.org/packages/5c/05/5ee478aa53f4bb7996482153d4bfe1b89e0f087f0ab6b294fcf92d595873/charset_normalizer-3.4.7-cp314-cp314-win32.whl", hash = "sha256:5b77459df20e08151cd6f8b9ef8ef1f961ef73d85c21a555c7eed5b79410ec10", size = 148541, upload-time = "2026-04-02T09:27:25.146Z" }, + { url = "https://files.pythonhosted.org/packages/48/77/72dcb0921b2ce86420b2d79d454c7022bf5be40202a2a07906b9f2a35c97/charset_normalizer-3.4.7-cp314-cp314-win_amd64.whl", hash = "sha256:92a0a01ead5e668468e952e4238cccd7c537364eb7d851ab144ab6627dbbe12f", size = 159634, upload-time = "2026-04-02T09:27:26.642Z" }, + { url = "https://files.pythonhosted.org/packages/c6/a3/c2369911cd72f02386e4e340770f6e158c7980267da16af8f668217abaa0/charset_normalizer-3.4.7-cp314-cp314-win_arm64.whl", hash = "sha256:67f6279d125ca0046a7fd386d01b311c6363844deac3e5b069b514ba3e63c246", size = 148384, upload-time = "2026-04-02T09:27:28.271Z" }, + { url = "https://files.pythonhosted.org/packages/94/09/7e8a7f73d24dba1f0035fbbf014d2c36828fc1bf9c88f84093e57d315935/charset_normalizer-3.4.7-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:effc3f449787117233702311a1b7d8f59cba9ced946ba727bdc329ec69028e24", size = 330133, upload-time = "2026-04-02T09:27:29.474Z" }, + { url = "https://files.pythonhosted.org/packages/8d/da/96975ddb11f8e977f706f45cddd8540fd8242f71ecdb5d18a80723dcf62c/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fbccdc05410c9ee21bbf16a35f4c1d16123dcdeb8a1d38f33654fa21d0234f79", size = 216257, upload-time = "2026-04-02T09:27:30.793Z" }, + { url = "https://files.pythonhosted.org/packages/e5/e8/1d63bf8ef2d388e95c64b2098f45f84758f6d102a087552da1485912637b/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:733784b6d6def852c814bce5f318d25da2ee65dd4839a0718641c696e09a2960", size = 234851, upload-time = "2026-04-02T09:27:32.44Z" }, + { url = "https://files.pythonhosted.org/packages/9b/40/e5ff04233e70da2681fa43969ad6f66ca5611d7e669be0246c4c7aaf6dc8/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a89c23ef8d2c6b27fd200a42aa4ac72786e7c60d40efdc76e6011260b6e949c4", size = 233393, upload-time = "2026-04-02T09:27:34.03Z" }, + { url = "https://files.pythonhosted.org/packages/be/c1/06c6c49d5a5450f76899992f1ee40b41d076aee9279b49cf9974d2f313d5/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6c114670c45346afedc0d947faf3c7f701051d2518b943679c8ff88befe14f8e", size = 223251, upload-time = "2026-04-02T09:27:35.369Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/f2ff16fb050946169e3e1f82134d107e5d4ae72647ec8a1b1446c148480f/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:a180c5e59792af262bf263b21a3c49353f25945d8d9f70628e73de370d55e1e1", size = 206609, upload-time = "2026-04-02T09:27:36.661Z" }, + { url = "https://files.pythonhosted.org/packages/69/d5/a527c0cd8d64d2eab7459784fb4169a0ac76e5a6fc5237337982fd61347e/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3c9a494bc5ec77d43cea229c4f6db1e4d8fe7e1bbffa8b6f0f0032430ff8ab44", size = 220014, upload-time = "2026-04-02T09:27:38.019Z" }, + { url = "https://files.pythonhosted.org/packages/7e/80/8a7b8104a3e203074dc9aa2c613d4b726c0e136bad1cc734594b02867972/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8d828b6667a32a728a1ad1d93957cdf37489c57b97ae6c4de2860fa749b8fc1e", size = 218979, upload-time = "2026-04-02T09:27:39.37Z" }, + { url = "https://files.pythonhosted.org/packages/02/9a/b759b503d507f375b2b5c153e4d2ee0a75aa215b7f2489cf314f4541f2c0/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:cf1493cd8607bec4d8a7b9b004e699fcf8f9103a9284cc94962cb73d20f9d4a3", size = 209238, upload-time = "2026-04-02T09:27:40.722Z" }, + { url = "https://files.pythonhosted.org/packages/c2/4e/0f3f5d47b86bdb79256e7290b26ac847a2832d9a4033f7eb2cd4bcf4bb5b/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:0c96c3b819b5c3e9e165495db84d41914d6894d55181d2d108cc1a69bfc9cce0", size = 236110, upload-time = "2026-04-02T09:27:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/96/23/bce28734eb3ed2c91dcf93abeb8a5cf393a7b2749725030bb630e554fdd8/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:752a45dc4a6934060b3b0dab47e04edc3326575f82be64bc4fc293914566503e", size = 219824, upload-time = "2026-04-02T09:27:43.924Z" }, + { url = "https://files.pythonhosted.org/packages/2c/6f/6e897c6984cc4d41af319b077f2f600fc8214eb2fe2d6bcb79141b882400/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:8778f0c7a52e56f75d12dae53ae320fae900a8b9b4164b981b9c5ce059cd1fcb", size = 233103, upload-time = "2026-04-02T09:27:45.348Z" }, + { url = "https://files.pythonhosted.org/packages/76/22/ef7bd0fe480a0ae9b656189ec00744b60933f68b4f42a7bb06589f6f576a/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ce3412fbe1e31eb81ea42f4169ed94861c56e643189e1e75f0041f3fe7020abe", size = 225194, upload-time = "2026-04-02T09:27:46.706Z" }, + { url = "https://files.pythonhosted.org/packages/c5/a7/0e0ab3e0b5bc1219bd80a6a0d4d72ca74d9250cb2382b7c699c147e06017/charset_normalizer-3.4.7-cp314-cp314t-win32.whl", hash = "sha256:c03a41a8784091e67a39648f70c5f97b5b6a37f216896d44d2cdcb82615339a0", size = 159827, upload-time = "2026-04-02T09:27:48.053Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1d/29d32e0fb40864b1f878c7f5a0b343ae676c6e2b271a2d55cc3a152391da/charset_normalizer-3.4.7-cp314-cp314t-win_amd64.whl", hash = "sha256:03853ed82eeebbce3c2abfdbc98c96dc205f32a79627688ac9a27370ea61a49c", size = 174168, upload-time = "2026-04-02T09:27:49.795Z" }, + { url = "https://files.pythonhosted.org/packages/de/32/d92444ad05c7a6e41fb2036749777c163baf7a0301a040cb672d6b2b1ae9/charset_normalizer-3.4.7-cp314-cp314t-win_arm64.whl", hash = "sha256:c35abb8bfff0185efac5878da64c45dafd2b37fb0383add1be155a763c1f083d", size = 153018, upload-time = "2026-04-02T09:27:51.116Z" }, + { url = "https://files.pythonhosted.org/packages/db/8f/61959034484a4a7c527811f4721e75d02d653a35afb0b6054474d8185d4c/charset_normalizer-3.4.7-py3-none-any.whl", hash = "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d", size = 61958, upload-time = "2026-04-02T09:28:37.794Z" }, +] + +[[package]] +name = "click" +version = "8.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/57/75/31212c6bf2503fdf920d87fee5d7a86a2e3bcf444984126f13d8e4016804/click-8.3.2.tar.gz", hash = "sha256:14162b8b3b3550a7d479eafa77dfd3c38d9dc8951f6f69c78913a8f9a7540fd5", size = 302856, upload-time = "2026-04-03T19:14:45.118Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e4/20/71885d8b97d4f3dde17b1fdb92dbd4908b00541c5a3379787137285f602e/click-8.3.2-py3-none-any.whl", hash = "sha256:1924d2c27c5653561cd2cae4548d1406039cb79b858b747cfea24924bbc1616d", size = 108379, upload-time = "2026-04-03T19:14:43.505Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "flask" +version = "2.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "itsdangerous" }, + { name = "jinja2" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/84/9d/66347e6b3e2eb78647392d3969c23bdc2d8b2fdc32bd078c817c15cb81ad/Flask-2.0.3.tar.gz", hash = "sha256:e1120c228ca2f553b470df4a5fa927ab66258467526069981b3eb0a91902687d", size = 629304, upload-time = "2022-02-14T20:01:09.281Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/77/59df23681f4fd19b7cbbb5e92484d46ad587554f5d490f33ef907e456132/Flask-2.0.3-py3-none-any.whl", hash = "sha256:59da8a3170004800a2837844bfa84d49b022550616070f7cb1a659682b2e7c9f", size = 95575, upload-time = "2022-02-14T20:01:06.923Z" }, +] + +[[package]] +name = "idna" +version = "3.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, +] + +[[package]] +name = "itsdangerous" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d/itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173", size = 54410, upload-time = "2024-04-16T21:28:15.614Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", size = 16234, upload-time = "2024-04-16T21:28:14.499Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, + { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, + { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, + { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" }, + { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" }, + { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" }, + { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" }, + { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" }, + { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" }, + { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" }, + { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" }, + { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" }, + { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" }, + { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" }, + { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" }, + { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" }, + { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" }, + { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" }, + { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" }, + { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" }, + { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" }, + { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" }, + { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" }, + { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" }, + { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" }, + { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" }, + { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" }, + { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" }, + { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" }, + { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" }, + { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" }, + { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" }, + { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" }, + { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" }, + { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" }, + { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" }, +] + +[[package]] +name = "mid-pkg" +version = "0.1.0" +source = { editable = "packages/mid-pkg" } +dependencies = [ + { name = "sub-pkg" }, +] + +[package.metadata] +requires-dist = [{ name = "sub-pkg", editable = "packages/sub-pkg" }] + +[[package]] +name = "requests" +version = "2.33.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5f/a4/98b9c7c6428a668bf7e42ebb7c79d576a1c3c1e3ae2d47e674b468388871/requests-2.33.1.tar.gz", hash = "sha256:18817f8c57c6263968bc123d237e3b8b08ac046f5456bd1e307ee8f4250d3517", size = 134120, upload-time = "2026-03-30T16:09:15.531Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl", hash = "sha256:4e6d1ef462f3626a1f0a0a9c42dd93c63bad33f9f1c1937509b8c5c8718ab56a", size = 64947, upload-time = "2026-03-30T16:09:13.83Z" }, +] + +[[package]] +name = "sub-pkg" +version = "0.1.0" +source = { editable = "packages/sub-pkg" } +dependencies = [ + { name = "requests" }, +] + +[package.metadata] +requires-dist = [{ name = "requests", specifier = ">=2.0" }] + +[[package]] +name = "urllib3" +version = "2.6.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, +] + +[[package]] +name = "uv-mono" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "flask" }, + { name = "mid-pkg" }, +] + +[package.metadata] +requires-dist = [ + { name = "flask", specifier = "==2.0.3" }, + { name = "mid-pkg", editable = "packages/mid-pkg" }, +] + +[[package]] +name = "werkzeug" +version = "3.1.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dd/b2/381be8cfdee792dd117872481b6e378f85c957dd7c5bca38897b08f765fd/werkzeug-3.1.8.tar.gz", hash = "sha256:9bad61a4268dac112f1c5cd4630a56ede601b6ed420300677a869083d70a4c44", size = 875852, upload-time = "2026-04-02T18:49:14.268Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/8c/2e650f2afeb7ee576912636c23ddb621c91ac6a98e66dc8d29c3c69446e1/werkzeug-3.1.8-py3-none-any.whl", hash = "sha256:63a77fb8892bf28ebc3178683445222aa500e48ebad5ec77b0ad80f8726b1f50", size = 226459, upload-time = "2026-04-02T18:49:12.72Z" }, +]