From 735efb4a0a50bb1a533b000483f2d0a23effbd26 Mon Sep 17 00:00:00 2001 From: Brian DeHamer Date: Tue, 17 Dec 2024 11:46:41 -0800 Subject: [PATCH 01/10] bump @actions/artifact from 2.1.11 to 2.2.0 Signed-off-by: Brian DeHamer --- .licenses/npm/@actions/artifact.dep.yml | Bin 1234 -> 1315 bytes package-lock.json | 15 ++++++++------- package.json | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/.licenses/npm/@actions/artifact.dep.yml b/.licenses/npm/@actions/artifact.dep.yml index 6f521cc390834a260e1d47bc07522bbf60ef73b9..f625854204628e4c8a9b1e1f19d4989550132541 100644 GIT binary patch delta 138 zcmXxcu@S;B3_#I_22bIZCdyH|V+v};XJTC}+h-|7E(I&F0~2HwCc+f-|NYPTZC;n> zbr_9qH8`6q8(EpLZO-1jQpsYmDLv4uO*ENUI8>Z_8&#_~fSEL|)8Gq3kA4EQl(dk7 Zwh(}kGF0?SR|5Z;N#sM8{^8@kpT2p!GF<=w delta 46 zcmZ3?b%}F=rm~@)p&?gEWkITyLS8{GS8-`>ZemfTl>%2rer{?(VmeTKkD0A7L* AivR!s diff --git a/package-lock.json b/package-lock.json index 45e63f8..7ca32b5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "4.4.3", "license": "MIT", "dependencies": { - "@actions/artifact": "^2.1.11", + "@actions/artifact": "^2.2.0", "@actions/core": "^1.11.1", "@actions/github": "^6.0.0", "@actions/glob": "^0.5.0", @@ -34,9 +34,10 @@ } }, "node_modules/@actions/artifact": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.1.11.tgz", - "integrity": "sha512-V/N/3yM3oLxozq2dpdGqbd/39UbDOR54bF25vYsvn3QZnyZERSzPjTAAwpGzdcwESye9G7vnuhPiKQACEuBQpg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.2.0.tgz", + "integrity": "sha512-nDEyBsphN148zHe6ihq1a/UX92MDgC2GS9XmeFx2xs/wztZxzARYllviiP5U1nTDp2n9dEhnUig9RP9eSDcU5g==", + "license": "MIT", "dependencies": { "@actions/core": "^1.10.0", "@actions/github": "^5.1.1", @@ -7908,9 +7909,9 @@ }, "dependencies": { "@actions/artifact": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.1.11.tgz", - "integrity": "sha512-V/N/3yM3oLxozq2dpdGqbd/39UbDOR54bF25vYsvn3QZnyZERSzPjTAAwpGzdcwESye9G7vnuhPiKQACEuBQpg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.2.0.tgz", + "integrity": "sha512-nDEyBsphN148zHe6ihq1a/UX92MDgC2GS9XmeFx2xs/wztZxzARYllviiP5U1nTDp2n9dEhnUig9RP9eSDcU5g==", "requires": { "@actions/core": "^1.10.0", "@actions/github": "^5.1.1", diff --git a/package.json b/package.json index 76d272e..5ab3210 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ }, "homepage": "https://github.com/actions/upload-artifact#readme", "dependencies": { - "@actions/artifact": "^2.1.11", + "@actions/artifact": "^2.2.0", "@actions/core": "^1.11.1", "@actions/github": "^6.0.0", "@actions/glob": "^0.5.0", From c40c16d999899d3642ba1597014ba7ef8ff611e7 Mon Sep 17 00:00:00 2001 From: Brian DeHamer Date: Tue, 17 Dec 2024 11:47:09 -0800 Subject: [PATCH 02/10] add new artifact-digest output Signed-off-by: Brian DeHamer --- README.md | 1 + __tests__/upload.test.ts | 4 +++- action.yml | 3 +++ dist/merge/index.js | 4 +++- dist/upload/index.js | 4 +++- merge/README.md | 1 + merge/action.yml | 3 +++ package-lock.json | 4 ++-- package.json | 2 +- src/shared/upload-artifact.ts | 1 + 10 files changed, 21 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index f3cce8a..507f6e1 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,7 @@ For assistance with breaking changes, see [MIGRATION.md](docs/MIGRATION.md). | - | - | - | | `artifact-id` | GitHub ID of an Artifact, can be used by the REST API | `1234` | | `artifact-url` | URL to download an Artifact. Can be used in many scenarios such as linking to artifacts in issues or pull requests. Users must be logged-in in order for this URL to work. This URL is valid as long as the artifact has not expired or the artifact, run or repository have not been deleted | `https://github.com/example-org/example-repo/actions/runs/1/artifacts/1234` | +| `artifact-digest` | SHA-256 digest of an Artifact | 0fde654d4c6e659b45783a725dc92f1bfb0baa6c2de64b34e814dc206ff4aaaf | ## Examples diff --git a/__tests__/upload.test.ts b/__tests__/upload.test.ts index 0b74e66..b7e7133 100644 --- a/__tests__/upload.test.ts +++ b/__tests__/upload.test.ts @@ -60,7 +60,8 @@ describe('upload', () => { jest.spyOn(artifact, 'uploadArtifact').mockResolvedValue({ size: 123, - id: 1337 + id: 1337, + digest: 'facefeed' }) }) @@ -95,6 +96,7 @@ describe('upload', () => { await run() expect(core.setOutput).toHaveBeenCalledWith('artifact-id', 1337) + expect(core.setOutput).toHaveBeenCalledWith('artifact-digest', 'facefeed') expect(core.setOutput).toHaveBeenCalledWith( 'artifact-url', `${github.context.serverUrl}/${github.context.repo.owner}/${ diff --git a/action.yml b/action.yml index ef24659..2a0ecf1 100644 --- a/action.yml +++ b/action.yml @@ -61,6 +61,9 @@ outputs: This URL will be valid for as long as the artifact exists and the workflow run and repository exists. Once an artifact has expired this URL will no longer work. Common uses cases for such a download URL can be adding download links to artifacts in descriptions or comments on pull requests or issues. + artifact-digest: + description: > + SHA-256 digest for the artifact that was just uploaded. Empty if the artifact upload failed. runs: using: 'node20' main: 'dist/upload/index.js' diff --git a/dist/merge/index.js b/dist/merge/index.js index 7dfc5c7..8d9ff83 100644 --- a/dist/merge/index.js +++ b/dist/merge/index.js @@ -3606,6 +3606,7 @@ function uploadArtifact(name, files, rootDirectory, options) { core.info(`Artifact ${name}.zip successfully finalized. Artifact ID ${artifactId}`); return { size: uploadResult.uploadSize, + digest: uploadResult.sha256Hash, id: Number(artifactId) }; }); @@ -127615,6 +127616,7 @@ function uploadArtifact(artifactName, filesToUpload, rootDirectory, options) { const uploadResponse = yield artifact_1.default.uploadArtifact(artifactName, filesToUpload, rootDirectory, options); core.info(`Artifact ${artifactName} has been successfully uploaded! Final size is ${uploadResponse.size} bytes. Artifact ID is ${uploadResponse.id}`); core.setOutput('artifact-id', uploadResponse.id); + core.setOutput('artifact-digest', uploadResponse.digest); const repository = github.context.repo; const artifactURL = `${github.context.serverUrl}/${repository.owner}/${repository.repo}/actions/runs/${github.context.runId}/artifacts/${uploadResponse.id}`; core.info(`Artifact download URL: ${artifactURL}`); @@ -137604,7 +137606,7 @@ module.exports = index; /***/ ((module) => { "use strict"; -module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.1.11","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","jwt-decode":"^3.1.2","twirp-ts":"^2.5.0","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}'); +module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.2.0","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","jwt-decode":"^3.1.2","twirp-ts":"^2.5.0","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}'); /***/ }), diff --git a/dist/upload/index.js b/dist/upload/index.js index f861db0..c92ff14 100644 --- a/dist/upload/index.js +++ b/dist/upload/index.js @@ -3606,6 +3606,7 @@ function uploadArtifact(name, files, rootDirectory, options) { core.info(`Artifact ${name}.zip successfully finalized. Artifact ID ${artifactId}`); return { size: uploadResult.uploadSize, + digest: uploadResult.sha256Hash, id: Number(artifactId) }; }); @@ -127370,6 +127371,7 @@ function uploadArtifact(artifactName, filesToUpload, rootDirectory, options) { const uploadResponse = yield artifact_1.default.uploadArtifact(artifactName, filesToUpload, rootDirectory, options); core.info(`Artifact ${artifactName} has been successfully uploaded! Final size is ${uploadResponse.size} bytes. Artifact ID is ${uploadResponse.id}`); core.setOutput('artifact-id', uploadResponse.id); + core.setOutput('artifact-digest', uploadResponse.digest); const repository = github.context.repo; const artifactURL = `${github.context.serverUrl}/${repository.owner}/${repository.repo}/actions/runs/${github.context.runId}/artifacts/${uploadResponse.id}`; core.info(`Artifact download URL: ${artifactURL}`); @@ -137614,7 +137616,7 @@ module.exports = index; /***/ ((module) => { "use strict"; -module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.1.11","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","jwt-decode":"^3.1.2","twirp-ts":"^2.5.0","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}'); +module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.2.0","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","jwt-decode":"^3.1.2","twirp-ts":"^2.5.0","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}'); /***/ }), diff --git a/merge/README.md b/merge/README.md index b2f390e..c05af96 100644 --- a/merge/README.md +++ b/merge/README.md @@ -65,6 +65,7 @@ For most cases, this may not be the most efficient solution. See [the migration | - | - | - | | `artifact-id` | GitHub ID of an Artifact, can be used by the REST API | `1234` | | `artifact-url` | URL to download an Artifact. Can be used in many scenarios such as linking to artifacts in issues or pull requests. Users must be logged-in in order for this URL to work. This URL is valid as long as the artifact has not expired or the artifact, run or repository have not been deleted | `https://github.com/example-org/example-repo/actions/runs/1/artifacts/1234` | +| `artifact-digest` | SHA-256 digest of an Artifact | 0fde654d4c6e659b45783a725dc92f1bfb0baa6c2de64b34e814dc206ff4aaaf | ## Examples diff --git a/merge/action.yml b/merge/action.yml index 81407ee..e74d5ab 100644 --- a/merge/action.yml +++ b/merge/action.yml @@ -57,6 +57,9 @@ outputs: This URL will be valid for as long as the artifact exists and the workflow run and repository exists. Once an artifact has expired this URL will no longer work. Common uses cases for such a download URL can be adding download links to artifacts in descriptions or comments on pull requests or issues. + artifact-digest: + description: > + SHA-256 digest for the artifact that was just uploaded. Empty if the artifact upload failed. runs: using: 'node20' main: '../dist/merge/index.js' diff --git a/package-lock.json b/package-lock.json index 7ca32b5..49d1cb2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "upload-artifact", - "version": "4.4.3", + "version": "4.5.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "upload-artifact", - "version": "4.4.3", + "version": "4.5.0", "license": "MIT", "dependencies": { "@actions/artifact": "^2.2.0", diff --git a/package.json b/package.json index 5ab3210..914af16 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "upload-artifact", - "version": "4.4.3", + "version": "4.5.0", "description": "Upload an Actions Artifact in a workflow run", "main": "dist/upload/index.js", "scripts": { diff --git a/src/shared/upload-artifact.ts b/src/shared/upload-artifact.ts index e8ece24..379a39e 100644 --- a/src/shared/upload-artifact.ts +++ b/src/shared/upload-artifact.ts @@ -19,6 +19,7 @@ export async function uploadArtifact( `Artifact ${artifactName} has been successfully uploaded! Final size is ${uploadResponse.size} bytes. Artifact ID is ${uploadResponse.id}` ) core.setOutput('artifact-id', uploadResponse.id) + core.setOutput('artifact-digest', uploadResponse.digest) const repository = github.context.repo const artifactURL = `${github.context.serverUrl}/${repository.owner}/${repository.repo}/actions/runs/${github.context.runId}/artifacts/${uploadResponse.id}` From 97422693d3a0493fc2d725fe8c0ac1c1097e9128 Mon Sep 17 00:00:00 2001 From: Yang Cao Date: Thu, 9 Jan 2025 14:41:08 +0000 Subject: [PATCH 03/10] Expose env vars to controll concurrency and timeout --- dist/merge/index.js | 34 ++++++++++++++++++++++++++++------ dist/upload/index.js | 34 ++++++++++++++++++++++++++++------ package-lock.json | 15 +++++++-------- package.json | 2 +- 4 files changed, 64 insertions(+), 21 deletions(-) diff --git a/dist/merge/index.js b/dist/merge/index.js index 8d9ff83..f38ff57 100644 --- a/dist/merge/index.js +++ b/dist/merge/index.js @@ -2999,6 +2999,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", ({ value: true })); exports.getUploadChunkTimeout = exports.getConcurrency = exports.getGitHubWorkspaceDir = exports.isGhes = exports.getResultsServiceUrl = exports.getRuntimeToken = exports.getUploadChunkSize = void 0; const os_1 = __importDefault(__nccwpck_require__(22037)); +const core_1 = __nccwpck_require__(42186); // Used for controlling the highWaterMark value of the zip that is being streamed // The same value is used as the chunk size that is use during upload to blob storage function getUploadChunkSize() { @@ -3041,17 +3042,38 @@ exports.getGitHubWorkspaceDir = getGitHubWorkspaceDir; // Mimics behavior of azcopy: https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-optimize // If your machine has fewer than 5 CPUs, then the value of this variable is set to 32. // Otherwise, the default value is equal to 16 multiplied by the number of CPUs. The maximum value of this variable is 300. +// This value can be lowered with ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY variable. function getConcurrency() { const numCPUs = os_1.default.cpus().length; - if (numCPUs <= 4) { - return 32; + let concurrencyCap = 32; + if (numCPUs > 4) { + const concurrency = 16 * numCPUs; + concurrencyCap = concurrency > 300 ? 300 : concurrency; } - const concurrency = 16 * numCPUs; - return concurrency > 300 ? 300 : concurrency; + const concurrencyOverride = process.env['ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY']; + if (concurrencyOverride) { + const concurrency = parseInt(concurrencyOverride); + if (isNaN(concurrency) || concurrency < 1) { + throw new Error('Invalid value set for ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY env variable'); + } + if (concurrency < concurrencyCap) { + return concurrency; + } + (0, core_1.info)(`ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY is higher than the cap of ${concurrencyCap} based on the number of cpus. Lowering it to the cap.`); + } + return concurrencyCap; } exports.getConcurrency = getConcurrency; function getUploadChunkTimeout() { - return 300000; // 5 minutes + const timeoutVar = process.env['ACTIONS_ARTIFACT_UPLOAD_TIMEOUT_MS']; + if (!timeoutVar) { + return 300000; // 5 minutes + } + const timeout = parseInt(timeoutVar); + if (isNaN(timeout)) { + throw new Error('Invalid value set for ACTIONS_ARTIFACT_UPLOAD_TIMEOUT_MS env variable'); + } + return timeout; } exports.getUploadChunkTimeout = getUploadChunkTimeout; //# sourceMappingURL=config.js.map @@ -137606,7 +137628,7 @@ module.exports = index; /***/ ((module) => { "use strict"; -module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.2.0","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","jwt-decode":"^3.1.2","twirp-ts":"^2.5.0","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}'); +module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.2.1","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","jwt-decode":"^3.1.2","twirp-ts":"^2.5.0","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}'); /***/ }), diff --git a/dist/upload/index.js b/dist/upload/index.js index c92ff14..a3c9a4e 100644 --- a/dist/upload/index.js +++ b/dist/upload/index.js @@ -2999,6 +2999,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", ({ value: true })); exports.getUploadChunkTimeout = exports.getConcurrency = exports.getGitHubWorkspaceDir = exports.isGhes = exports.getResultsServiceUrl = exports.getRuntimeToken = exports.getUploadChunkSize = void 0; const os_1 = __importDefault(__nccwpck_require__(22037)); +const core_1 = __nccwpck_require__(42186); // Used for controlling the highWaterMark value of the zip that is being streamed // The same value is used as the chunk size that is use during upload to blob storage function getUploadChunkSize() { @@ -3041,17 +3042,38 @@ exports.getGitHubWorkspaceDir = getGitHubWorkspaceDir; // Mimics behavior of azcopy: https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-optimize // If your machine has fewer than 5 CPUs, then the value of this variable is set to 32. // Otherwise, the default value is equal to 16 multiplied by the number of CPUs. The maximum value of this variable is 300. +// This value can be lowered with ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY variable. function getConcurrency() { const numCPUs = os_1.default.cpus().length; - if (numCPUs <= 4) { - return 32; + let concurrencyCap = 32; + if (numCPUs > 4) { + const concurrency = 16 * numCPUs; + concurrencyCap = concurrency > 300 ? 300 : concurrency; } - const concurrency = 16 * numCPUs; - return concurrency > 300 ? 300 : concurrency; + const concurrencyOverride = process.env['ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY']; + if (concurrencyOverride) { + const concurrency = parseInt(concurrencyOverride); + if (isNaN(concurrency) || concurrency < 1) { + throw new Error('Invalid value set for ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY env variable'); + } + if (concurrency < concurrencyCap) { + return concurrency; + } + (0, core_1.info)(`ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY is higher than the cap of ${concurrencyCap} based on the number of cpus. Lowering it to the cap.`); + } + return concurrencyCap; } exports.getConcurrency = getConcurrency; function getUploadChunkTimeout() { - return 300000; // 5 minutes + const timeoutVar = process.env['ACTIONS_ARTIFACT_UPLOAD_TIMEOUT_MS']; + if (!timeoutVar) { + return 300000; // 5 minutes + } + const timeout = parseInt(timeoutVar); + if (isNaN(timeout)) { + throw new Error('Invalid value set for ACTIONS_ARTIFACT_UPLOAD_TIMEOUT_MS env variable'); + } + return timeout; } exports.getUploadChunkTimeout = getUploadChunkTimeout; //# sourceMappingURL=config.js.map @@ -137616,7 +137638,7 @@ module.exports = index; /***/ ((module) => { "use strict"; -module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.2.0","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","jwt-decode":"^3.1.2","twirp-ts":"^2.5.0","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}'); +module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.2.1","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","jwt-decode":"^3.1.2","twirp-ts":"^2.5.0","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}'); /***/ }), diff --git a/package-lock.json b/package-lock.json index 49d1cb2..c2f35ae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "4.5.0", "license": "MIT", "dependencies": { - "@actions/artifact": "^2.2.0", + "@actions/artifact": "^2.2.1", "@actions/core": "^1.11.1", "@actions/github": "^6.0.0", "@actions/glob": "^0.5.0", @@ -34,10 +34,9 @@ } }, "node_modules/@actions/artifact": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.2.0.tgz", - "integrity": "sha512-nDEyBsphN148zHe6ihq1a/UX92MDgC2GS9XmeFx2xs/wztZxzARYllviiP5U1nTDp2n9dEhnUig9RP9eSDcU5g==", - "license": "MIT", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.2.1.tgz", + "integrity": "sha512-V2cvKJ+Evg2n9Mcqz7kjbY2s0nd9MsBI2rw2E38pSEMv+Coo4i1sX0lyGcgSn1zyfVtmLwAI9LfuSptWF8PdaA==", "dependencies": { "@actions/core": "^1.10.0", "@actions/github": "^5.1.1", @@ -7909,9 +7908,9 @@ }, "dependencies": { "@actions/artifact": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.2.0.tgz", - "integrity": "sha512-nDEyBsphN148zHe6ihq1a/UX92MDgC2GS9XmeFx2xs/wztZxzARYllviiP5U1nTDp2n9dEhnUig9RP9eSDcU5g==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.2.1.tgz", + "integrity": "sha512-V2cvKJ+Evg2n9Mcqz7kjbY2s0nd9MsBI2rw2E38pSEMv+Coo4i1sX0lyGcgSn1zyfVtmLwAI9LfuSptWF8PdaA==", "requires": { "@actions/core": "^1.10.0", "@actions/github": "^5.1.1", diff --git a/package.json b/package.json index 914af16..511cc95 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ }, "homepage": "https://github.com/actions/upload-artifact#readme", "dependencies": { - "@actions/artifact": "^2.2.0", + "@actions/artifact": "^2.2.1", "@actions/core": "^1.11.1", "@actions/github": "^6.0.0", "@actions/glob": "^0.5.0", From 1ecca81102de35b6c140e930a09ea6144c27abf1 Mon Sep 17 00:00:00 2001 From: Yang Cao Date: Thu, 9 Jan 2025 09:57:34 -0500 Subject: [PATCH 04/10] licensed cache updates --- .licenses/npm/@actions/artifact.dep.yml | Bin 1315 -> 1315 bytes .licenses/npm/@actions/exec.dep.yml | Bin 0 -> 1303 bytes .licenses/npm/@actions/github-5.1.1.dep.yml | Bin 0 -> 1309 bytes .../{github.dep.yml => github-6.0.0.dep.yml} | Bin 1231 -> 1309 bytes .licenses/npm/@actions/http-client.dep.yml | Bin 0 -> 1408 bytes .licenses/npm/@azure/abort-controller.dep.yml | Bin 0 -> 1421 bytes .licenses/npm/@azure/core-auth.dep.yml | Bin 0 -> 1445 bytes .licenses/npm/@azure/core-http.dep.yml | Bin 0 -> 1474 bytes .licenses/npm/@azure/core-lro.dep.yml | Bin 0 -> 1451 bytes .licenses/npm/@azure/core-paging.dep.yml | Bin 0 -> 1413 bytes .licenses/npm/@azure/core-tracing.dep.yml | Bin 0 -> 1453 bytes .licenses/npm/@azure/core-util.dep.yml | Bin 0 -> 1393 bytes .licenses/npm/@azure/logger.dep.yml | Bin 0 -> 1400 bytes .licenses/npm/@azure/storage-blob.dep.yml | Bin 0 -> 1414 bytes .licenses/npm/@fastify/busboy.dep.yml | Bin 0 -> 1319 bytes .licenses/npm/@isaacs/cliui.dep.yml | Bin 0 -> 976 bytes .../npm/@octokit/auth-token-2.5.0.dep.yml | Bin 0 -> 1392 bytes .../npm/@octokit/auth-token-4.0.0.dep.yml | Bin 0 -> 1392 bytes .licenses/npm/@octokit/core-3.6.0.dep.yml | Bin 0 -> 1380 bytes .licenses/npm/@octokit/core-5.0.2.dep.yml | Bin 0 -> 1380 bytes .../npm/@octokit/endpoint-6.0.12.dep.yml | Bin 0 -> 1388 bytes .licenses/npm/@octokit/endpoint-9.0.4.dep.yml | Bin 0 -> 1387 bytes .licenses/npm/@octokit/graphql-4.8.0.dep.yml | Bin 0 -> 1380 bytes .licenses/npm/@octokit/graphql-7.0.2.dep.yml | Bin 0 -> 1380 bytes .../@octokit/openapi-types-12.11.0.dep.yml | Bin 0 -> 1346 bytes .../npm/@octokit/openapi-types-19.1.0.dep.yml | Bin 0 -> 1345 bytes .../plugin-paginate-rest-2.21.3.dep.yml | Bin 0 -> 1375 bytes .../plugin-paginate-rest-9.1.5.dep.yml | Bin 0 -> 1374 bytes .../npm/@octokit/plugin-request-log.dep.yml | Bin 0 -> 1353 bytes ...lugin-rest-endpoint-methods-10.2.0.dep.yml | Bin 0 -> 1406 bytes ...lugin-rest-endpoint-methods-5.16.2.dep.yml | Bin 0 -> 1406 bytes .licenses/npm/@octokit/plugin-retry.dep.yml | Bin 0 -> 1368 bytes .licenses/npm/@octokit/request-5.6.3.dep.yml | Bin 0 -> 1423 bytes .licenses/npm/@octokit/request-8.1.6.dep.yml | Bin 0 -> 1423 bytes .../npm/@octokit/request-error-2.1.0.dep.yml | Bin 0 -> 1377 bytes .../npm/@octokit/request-error-5.0.1.dep.yml | Bin 0 -> 1377 bytes .licenses/npm/@octokit/types-12.4.0.dep.yml | Bin 0 -> 1356 bytes .licenses/npm/@octokit/types-6.41.0.dep.yml | Bin 0 -> 1356 bytes .licenses/npm/@opentelemetry/api.dep.yml | Bin 0 -> 12927 bytes .licenses/npm/@pkgjs/parseargs.dep.yml | Bin 0 -> 12267 bytes .../npm/@protobuf-ts/plugin-framework.dep.yml | Bin 0 -> 10965 bytes .licenses/npm/@protobuf-ts/plugin.dep.yml | Bin 0 -> 11026 bytes .licenses/npm/@protobuf-ts/protoc.dep.yml | Bin 0 -> 10981 bytes .../npm/@protobuf-ts/runtime-rpc.dep.yml | Bin 0 -> 11007 bytes .licenses/npm/@protobuf-ts/runtime.dep.yml | Bin 0 -> 10991 bytes .licenses/npm/@types/color-name.dep.yml | Bin 0 -> 1407 bytes .licenses/npm/@types/node-fetch.dep.yml | Bin 0 -> 1466 bytes .licenses/npm/@types/node.dep.yml | Bin 0 -> 1454 bytes .licenses/npm/@types/tunnel.dep.yml | Bin 0 -> 1454 bytes .licenses/npm/abort-controller.dep.yml | Bin 0 -> 1383 bytes .licenses/npm/ansi-regex-5.0.1.dep.yml | Bin 0 -> 1308 bytes .licenses/npm/ansi-regex-6.0.1.dep.yml | Bin 0 -> 1316 bytes .licenses/npm/ansi-styles-4.2.1.dep.yml | Bin 0 -> 1313 bytes .licenses/npm/ansi-styles-6.2.1.dep.yml | Bin 0 -> 1321 bytes .licenses/npm/archiver-utils.dep.yml | Bin 0 -> 1354 bytes .licenses/npm/archiver.dep.yml | Bin 0 -> 1373 bytes .licenses/npm/async.dep.yml | Bin 0 -> 1348 bytes .licenses/npm/asynckit.dep.yml | Bin 0 -> 1449 bytes .licenses/npm/b4a.dep.yml | Bin 0 -> 12295 bytes .licenses/npm/balanced-match.dep.yml | Bin 0 -> 2592 bytes .licenses/npm/bare-events.dep.yml | Bin 0 -> 12291 bytes .licenses/npm/base64-js.dep.yml | Bin 0 -> 1386 bytes .licenses/npm/before-after-hook.dep.yml | Bin 0 -> 12307 bytes .licenses/npm/binary.dep.yml | Bin 0 -> 179 bytes .licenses/npm/bottleneck.dep.yml | Bin 0 -> 1318 bytes .licenses/npm/brace-expansion-1.1.11.dep.yml | Bin 0 -> 2581 bytes .licenses/npm/brace-expansion-2.0.1.dep.yml | Bin 0 -> 2580 bytes .licenses/npm/buffer-crc32.dep.yml | Bin 0 -> 1425 bytes .licenses/npm/buffer.dep.yml | Bin 0 -> 4649 bytes .licenses/npm/buffers.dep.yml | Bin 0 -> 180 bytes .licenses/npm/camel-case.dep.yml | Bin 0 -> 1917 bytes .licenses/npm/chainsaw.dep.yml | Bin 0 -> 178 bytes .licenses/npm/color-convert.dep.yml | Bin 0 -> 1462 bytes .licenses/npm/color-name.dep.yml | Bin 0 -> 1304 bytes .licenses/npm/combined-stream.dep.yml | Bin 0 -> 1473 bytes .licenses/npm/commander.dep.yml | Bin 0 -> 1447 bytes .licenses/npm/compress-commons.dep.yml | Bin 0 -> 1428 bytes .licenses/npm/concat-map.dep.yml | Bin 0 -> 1328 bytes .licenses/npm/core-util-is.dep.yml | Bin 0 -> 1323 bytes .licenses/npm/crc-32.dep.yml | Bin 0 -> 12392 bytes .licenses/npm/crc32-stream.dep.yml | Bin 0 -> 1360 bytes .licenses/npm/cross-spawn.dep.yml | Bin 0 -> 1529 bytes .licenses/npm/delayed-stream.dep.yml | Bin 0 -> 1473 bytes .licenses/npm/deprecation.dep.yml | Bin 0 -> 1023 bytes .licenses/npm/dot-object.dep.yml | Bin 0 -> 1342 bytes .licenses/npm/eastasianwidth.dep.yml | Bin 0 -> 1296 bytes .licenses/npm/emoji-regex-8.0.0.dep.yml | Bin 0 -> 1495 bytes .licenses/npm/emoji-regex-9.2.2.dep.yml | Bin 0 -> 1495 bytes .licenses/npm/event-target-shim.dep.yml | Bin 0 -> 1390 bytes .licenses/npm/events.dep.yml | Bin 0 -> 1444 bytes .licenses/npm/fast-fifo.dep.yml | Bin 0 -> 1429 bytes .licenses/npm/foreground-child.dep.yml | Bin 0 -> 1042 bytes .licenses/npm/form-data.dep.yml | Bin 0 -> 1529 bytes .licenses/npm/fs.realpath.dep.yml | Bin 0 -> 2478 bytes .licenses/npm/glob-10.3.12.dep.yml | Bin 0 -> 1018 bytes .licenses/npm/glob-7.2.3.dep.yml | Bin 0 -> 1182 bytes .licenses/npm/graceful-fs.dep.yml | Bin 0 -> 1029 bytes .licenses/npm/ieee754.dep.yml | Bin 0 -> 1783 bytes .licenses/npm/inflight.dep.yml | Bin 0 -> 1021 bytes .licenses/npm/inherits.dep.yml | Bin 0 -> 1008 bytes .licenses/npm/is-fullwidth-code-point.dep.yml | Bin 0 -> 1427 bytes .licenses/npm/is-plain-object.dep.yml | Bin 0 -> 1727 bytes .licenses/npm/is-stream.dep.yml | Bin 0 -> 1304 bytes .licenses/npm/isarray.dep.yml | Bin 0 -> 1366 bytes .licenses/npm/isexe.dep.yml | Bin 0 -> 1025 bytes .licenses/npm/jackspeak.dep.yml | Bin 0 -> 1887 bytes .licenses/npm/jwt-decode.dep.yml | Bin 0 -> 1643 bytes .licenses/npm/lazystream.dep.yml | Bin 0 -> 1361 bytes .licenses/npm/lodash.dep.yml | Bin 0 -> 2267 bytes .licenses/npm/lower-case.dep.yml | Bin 0 -> 1873 bytes .licenses/npm/lru-cache.dep.yml | Bin 0 -> 1011 bytes .licenses/npm/mime-db.dep.yml | Bin 0 -> 1395 bytes .licenses/npm/mime-types.dep.yml | Bin 0 -> 2089 bytes .licenses/npm/minimatch-3.1.2.dep.yml | Bin 0 -> 970 bytes .licenses/npm/minimatch-5.1.6.dep.yml | Bin 0 -> 980 bytes ...imatch.dep.yml => minimatch-9.0.3.dep.yml} | Bin 953 -> 980 bytes .licenses/npm/minimist.dep.yml | Bin 0 -> 2150 bytes .licenses/npm/minipass.dep.yml | Bin 0 -> 1009 bytes .licenses/npm/mkdirp.dep.yml | Bin 0 -> 1410 bytes .licenses/npm/no-case.dep.yml | Bin 0 -> 1875 bytes .licenses/npm/node-fetch.dep.yml | Bin 0 -> 2796 bytes .licenses/npm/normalize-path.dep.yml | Bin 0 -> 1809 bytes .licenses/npm/once.dep.yml | Bin 0 -> 968 bytes .licenses/npm/pascal-case.dep.yml | Bin 0 -> 1909 bytes .licenses/npm/path-is-absolute.dep.yml | Bin 0 -> 1440 bytes .licenses/npm/path-key.dep.yml | Bin 0 -> 1309 bytes .licenses/npm/path-scurry.dep.yml | Bin 0 -> 1880 bytes .licenses/npm/path-to-regexp.dep.yml | Bin 0 -> 2111 bytes .licenses/npm/prettier.dep.yml | Bin 0 -> 314822 bytes .licenses/npm/process-nextick-args.dep.yml | Bin 0 -> 1362 bytes .licenses/npm/process.dep.yml | Bin 0 -> 1343 bytes .licenses/npm/queue-tick.dep.yml | Bin 0 -> 1425 bytes .licenses/npm/readable-stream-2.3.8.dep.yml | Bin 0 -> 2691 bytes .licenses/npm/readable-stream-4.5.2.dep.yml | Bin 0 -> 2740 bytes .licenses/npm/readdir-glob.dep.yml | Bin 0 -> 12260 bytes .licenses/npm/safe-buffer-5.1.2.dep.yml | Bin 0 -> 1431 bytes .licenses/npm/safe-buffer-5.2.1.dep.yml | Bin 0 -> 1431 bytes .licenses/npm/sax.dep.yml | Bin 0 -> 2329 bytes .licenses/npm/shebang-command.dep.yml | Bin 0 -> 1301 bytes .licenses/npm/shebang-regex.dep.yml | Bin 0 -> 1386 bytes .licenses/npm/signal-exit.dep.yml | Bin 0 -> 1038 bytes .licenses/npm/streamx.dep.yml | Bin 0 -> 1415 bytes .licenses/npm/string-width-4.2.3.dep.yml | Bin 0 -> 1342 bytes .licenses/npm/string-width-5.1.2.dep.yml | Bin 0 -> 1350 bytes .licenses/npm/string-width-cjs.dep.yml | Bin 0 -> 1346 bytes .licenses/npm/string_decoder-1.1.1.dep.yml | Bin 0 -> 2716 bytes .licenses/npm/string_decoder-1.3.0.dep.yml | Bin 0 -> 2716 bytes .licenses/npm/strip-ansi-6.0.1.dep.yml | Bin 0 -> 1296 bytes .licenses/npm/strip-ansi-7.1.0.dep.yml | Bin 0 -> 1304 bytes .licenses/npm/strip-ansi-cjs.dep.yml | Bin 0 -> 1300 bytes .licenses/npm/tar-stream.dep.yml | Bin 0 -> 1544 bytes .licenses/npm/tr46.dep.yml | Bin 0 -> 1334 bytes .licenses/npm/traverse.dep.yml | Bin 0 -> 1536 bytes .licenses/npm/ts-poet.dep.yml | Bin 0 -> 12215 bytes .licenses/npm/tslib.dep.yml | Bin 0 -> 895 bytes .licenses/npm/tunnel.dep.yml | Bin 0 -> 1488 bytes .licenses/npm/twirp-ts.dep.yml | Bin 0 -> 182 bytes .licenses/npm/typescript.dep.yml | Bin 0 -> 19832 bytes .licenses/npm/undici.dep.yml | Bin 0 -> 1396 bytes .licenses/npm/universal-user-agent.dep.yml | Bin 0 -> 1064 bytes .licenses/npm/unzip-stream.dep.yml | Bin 0 -> 1349 bytes .licenses/npm/util-deprecate.dep.yml | Bin 0 -> 2636 bytes .licenses/npm/uuid.dep.yml | Bin 0 -> 1286 bytes .licenses/npm/webidl-conversions.dep.yml | Bin 0 -> 1578 bytes .licenses/npm/whatwg-url.dep.yml | Bin 0 -> 1366 bytes .licenses/npm/which.dep.yml | Bin 0 -> 1021 bytes .licenses/npm/wrap-ansi-cjs.dep.yml | Bin 0 -> 1310 bytes .licenses/npm/wrap-ansi.dep.yml | Bin 0 -> 1306 bytes .licenses/npm/wrappy.dep.yml | Bin 0 -> 994 bytes .licenses/npm/xml2js.dep.yml | Bin 0 -> 1360 bytes .licenses/npm/xmlbuilder.dep.yml | Bin 0 -> 1346 bytes .licenses/npm/yaml.dep.yml | Bin 0 -> 982 bytes .licenses/npm/zip-stream.dep.yml | Bin 0 -> 1362 bytes 173 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 .licenses/npm/@actions/exec.dep.yml create mode 100644 .licenses/npm/@actions/github-5.1.1.dep.yml rename .licenses/npm/@actions/{github.dep.yml => github-6.0.0.dep.yml} (92%) create mode 100644 .licenses/npm/@actions/http-client.dep.yml create mode 100644 .licenses/npm/@azure/abort-controller.dep.yml create mode 100644 .licenses/npm/@azure/core-auth.dep.yml create mode 100644 .licenses/npm/@azure/core-http.dep.yml create mode 100644 .licenses/npm/@azure/core-lro.dep.yml create mode 100644 .licenses/npm/@azure/core-paging.dep.yml create mode 100644 .licenses/npm/@azure/core-tracing.dep.yml create mode 100644 .licenses/npm/@azure/core-util.dep.yml create mode 100644 .licenses/npm/@azure/logger.dep.yml create mode 100644 .licenses/npm/@azure/storage-blob.dep.yml create mode 100644 .licenses/npm/@fastify/busboy.dep.yml create mode 100644 .licenses/npm/@isaacs/cliui.dep.yml create mode 100644 .licenses/npm/@octokit/auth-token-2.5.0.dep.yml create mode 100644 .licenses/npm/@octokit/auth-token-4.0.0.dep.yml create mode 100644 .licenses/npm/@octokit/core-3.6.0.dep.yml create mode 100644 .licenses/npm/@octokit/core-5.0.2.dep.yml create mode 100644 .licenses/npm/@octokit/endpoint-6.0.12.dep.yml create mode 100644 .licenses/npm/@octokit/endpoint-9.0.4.dep.yml create mode 100644 .licenses/npm/@octokit/graphql-4.8.0.dep.yml create mode 100644 .licenses/npm/@octokit/graphql-7.0.2.dep.yml create mode 100644 .licenses/npm/@octokit/openapi-types-12.11.0.dep.yml create mode 100644 .licenses/npm/@octokit/openapi-types-19.1.0.dep.yml create mode 100644 .licenses/npm/@octokit/plugin-paginate-rest-2.21.3.dep.yml create mode 100644 .licenses/npm/@octokit/plugin-paginate-rest-9.1.5.dep.yml create mode 100644 .licenses/npm/@octokit/plugin-request-log.dep.yml create mode 100644 .licenses/npm/@octokit/plugin-rest-endpoint-methods-10.2.0.dep.yml create mode 100644 .licenses/npm/@octokit/plugin-rest-endpoint-methods-5.16.2.dep.yml create mode 100644 .licenses/npm/@octokit/plugin-retry.dep.yml create mode 100644 .licenses/npm/@octokit/request-5.6.3.dep.yml create mode 100644 .licenses/npm/@octokit/request-8.1.6.dep.yml create mode 100644 .licenses/npm/@octokit/request-error-2.1.0.dep.yml create mode 100644 .licenses/npm/@octokit/request-error-5.0.1.dep.yml create mode 100644 .licenses/npm/@octokit/types-12.4.0.dep.yml create mode 100644 .licenses/npm/@octokit/types-6.41.0.dep.yml create mode 100644 .licenses/npm/@opentelemetry/api.dep.yml create mode 100644 .licenses/npm/@pkgjs/parseargs.dep.yml create mode 100644 .licenses/npm/@protobuf-ts/plugin-framework.dep.yml create mode 100644 .licenses/npm/@protobuf-ts/plugin.dep.yml create mode 100644 .licenses/npm/@protobuf-ts/protoc.dep.yml create mode 100644 .licenses/npm/@protobuf-ts/runtime-rpc.dep.yml create mode 100644 .licenses/npm/@protobuf-ts/runtime.dep.yml create mode 100644 .licenses/npm/@types/color-name.dep.yml create mode 100644 .licenses/npm/@types/node-fetch.dep.yml create mode 100644 .licenses/npm/@types/node.dep.yml create mode 100644 .licenses/npm/@types/tunnel.dep.yml create mode 100644 .licenses/npm/abort-controller.dep.yml create mode 100644 .licenses/npm/ansi-regex-5.0.1.dep.yml create mode 100644 .licenses/npm/ansi-regex-6.0.1.dep.yml create mode 100644 .licenses/npm/ansi-styles-4.2.1.dep.yml create mode 100644 .licenses/npm/ansi-styles-6.2.1.dep.yml create mode 100644 .licenses/npm/archiver-utils.dep.yml create mode 100644 .licenses/npm/archiver.dep.yml create mode 100644 .licenses/npm/async.dep.yml create mode 100644 .licenses/npm/asynckit.dep.yml create mode 100644 .licenses/npm/b4a.dep.yml create mode 100644 .licenses/npm/balanced-match.dep.yml create mode 100644 .licenses/npm/bare-events.dep.yml create mode 100644 .licenses/npm/base64-js.dep.yml create mode 100644 .licenses/npm/before-after-hook.dep.yml create mode 100644 .licenses/npm/binary.dep.yml create mode 100644 .licenses/npm/bottleneck.dep.yml create mode 100644 .licenses/npm/brace-expansion-1.1.11.dep.yml create mode 100644 .licenses/npm/brace-expansion-2.0.1.dep.yml create mode 100644 .licenses/npm/buffer-crc32.dep.yml create mode 100644 .licenses/npm/buffer.dep.yml create mode 100644 .licenses/npm/buffers.dep.yml create mode 100644 .licenses/npm/camel-case.dep.yml create mode 100644 .licenses/npm/chainsaw.dep.yml create mode 100644 .licenses/npm/color-convert.dep.yml create mode 100644 .licenses/npm/color-name.dep.yml create mode 100644 .licenses/npm/combined-stream.dep.yml create mode 100644 .licenses/npm/commander.dep.yml create mode 100644 .licenses/npm/compress-commons.dep.yml create mode 100644 .licenses/npm/concat-map.dep.yml create mode 100644 .licenses/npm/core-util-is.dep.yml create mode 100644 .licenses/npm/crc-32.dep.yml create mode 100644 .licenses/npm/crc32-stream.dep.yml create mode 100644 .licenses/npm/cross-spawn.dep.yml create mode 100644 .licenses/npm/delayed-stream.dep.yml create mode 100644 .licenses/npm/deprecation.dep.yml create mode 100644 .licenses/npm/dot-object.dep.yml create mode 100644 .licenses/npm/eastasianwidth.dep.yml create mode 100644 .licenses/npm/emoji-regex-8.0.0.dep.yml create mode 100644 .licenses/npm/emoji-regex-9.2.2.dep.yml create mode 100644 .licenses/npm/event-target-shim.dep.yml create mode 100644 .licenses/npm/events.dep.yml create mode 100644 .licenses/npm/fast-fifo.dep.yml create mode 100644 .licenses/npm/foreground-child.dep.yml create mode 100644 .licenses/npm/form-data.dep.yml create mode 100644 .licenses/npm/fs.realpath.dep.yml create mode 100644 .licenses/npm/glob-10.3.12.dep.yml create mode 100644 .licenses/npm/glob-7.2.3.dep.yml create mode 100644 .licenses/npm/graceful-fs.dep.yml create mode 100644 .licenses/npm/ieee754.dep.yml create mode 100644 .licenses/npm/inflight.dep.yml create mode 100644 .licenses/npm/inherits.dep.yml create mode 100644 .licenses/npm/is-fullwidth-code-point.dep.yml create mode 100644 .licenses/npm/is-plain-object.dep.yml create mode 100644 .licenses/npm/is-stream.dep.yml create mode 100644 .licenses/npm/isarray.dep.yml create mode 100644 .licenses/npm/isexe.dep.yml create mode 100644 .licenses/npm/jackspeak.dep.yml create mode 100644 .licenses/npm/jwt-decode.dep.yml create mode 100644 .licenses/npm/lazystream.dep.yml create mode 100644 .licenses/npm/lodash.dep.yml create mode 100644 .licenses/npm/lower-case.dep.yml create mode 100644 .licenses/npm/lru-cache.dep.yml create mode 100644 .licenses/npm/mime-db.dep.yml create mode 100644 .licenses/npm/mime-types.dep.yml create mode 100644 .licenses/npm/minimatch-3.1.2.dep.yml create mode 100644 .licenses/npm/minimatch-5.1.6.dep.yml rename .licenses/npm/{minimatch.dep.yml => minimatch-9.0.3.dep.yml} (95%) create mode 100644 .licenses/npm/minimist.dep.yml create mode 100644 .licenses/npm/minipass.dep.yml create mode 100644 .licenses/npm/mkdirp.dep.yml create mode 100644 .licenses/npm/no-case.dep.yml create mode 100644 .licenses/npm/node-fetch.dep.yml create mode 100644 .licenses/npm/normalize-path.dep.yml create mode 100644 .licenses/npm/once.dep.yml create mode 100644 .licenses/npm/pascal-case.dep.yml create mode 100644 .licenses/npm/path-is-absolute.dep.yml create mode 100644 .licenses/npm/path-key.dep.yml create mode 100644 .licenses/npm/path-scurry.dep.yml create mode 100644 .licenses/npm/path-to-regexp.dep.yml create mode 100644 .licenses/npm/prettier.dep.yml create mode 100644 .licenses/npm/process-nextick-args.dep.yml create mode 100644 .licenses/npm/process.dep.yml create mode 100644 .licenses/npm/queue-tick.dep.yml create mode 100644 .licenses/npm/readable-stream-2.3.8.dep.yml create mode 100644 .licenses/npm/readable-stream-4.5.2.dep.yml create mode 100644 .licenses/npm/readdir-glob.dep.yml create mode 100644 .licenses/npm/safe-buffer-5.1.2.dep.yml create mode 100644 .licenses/npm/safe-buffer-5.2.1.dep.yml create mode 100644 .licenses/npm/sax.dep.yml create mode 100644 .licenses/npm/shebang-command.dep.yml create mode 100644 .licenses/npm/shebang-regex.dep.yml create mode 100644 .licenses/npm/signal-exit.dep.yml create mode 100644 .licenses/npm/streamx.dep.yml create mode 100644 .licenses/npm/string-width-4.2.3.dep.yml create mode 100644 .licenses/npm/string-width-5.1.2.dep.yml create mode 100644 .licenses/npm/string-width-cjs.dep.yml create mode 100644 .licenses/npm/string_decoder-1.1.1.dep.yml create mode 100644 .licenses/npm/string_decoder-1.3.0.dep.yml create mode 100644 .licenses/npm/strip-ansi-6.0.1.dep.yml create mode 100644 .licenses/npm/strip-ansi-7.1.0.dep.yml create mode 100644 .licenses/npm/strip-ansi-cjs.dep.yml create mode 100644 .licenses/npm/tar-stream.dep.yml create mode 100644 .licenses/npm/tr46.dep.yml create mode 100644 .licenses/npm/traverse.dep.yml create mode 100644 .licenses/npm/ts-poet.dep.yml create mode 100644 .licenses/npm/tslib.dep.yml create mode 100644 .licenses/npm/tunnel.dep.yml create mode 100644 .licenses/npm/twirp-ts.dep.yml create mode 100644 .licenses/npm/typescript.dep.yml create mode 100644 .licenses/npm/undici.dep.yml create mode 100644 .licenses/npm/universal-user-agent.dep.yml create mode 100644 .licenses/npm/unzip-stream.dep.yml create mode 100644 .licenses/npm/util-deprecate.dep.yml create mode 100644 .licenses/npm/uuid.dep.yml create mode 100644 .licenses/npm/webidl-conversions.dep.yml create mode 100644 .licenses/npm/whatwg-url.dep.yml create mode 100644 .licenses/npm/which.dep.yml create mode 100644 .licenses/npm/wrap-ansi-cjs.dep.yml create mode 100644 .licenses/npm/wrap-ansi.dep.yml create mode 100644 .licenses/npm/wrappy.dep.yml create mode 100644 .licenses/npm/xml2js.dep.yml create mode 100644 .licenses/npm/xmlbuilder.dep.yml create mode 100644 .licenses/npm/yaml.dep.yml create mode 100644 .licenses/npm/zip-stream.dep.yml diff --git a/.licenses/npm/@actions/artifact.dep.yml b/.licenses/npm/@actions/artifact.dep.yml index f625854204628e4c8a9b1e1f19d4989550132541..6fbfbca94233a856e5d39f332858298155b73151 100644 GIT binary patch delta 12 TcmZ3?wU}#yHlyK2o$o9F8n^@? delta 12 TcmZ3?wU}#yHlx8to$o9F8nXl+ diff --git a/.licenses/npm/@actions/exec.dep.yml b/.licenses/npm/@actions/exec.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..cbc5abd39e6391ec6e526e6536f1a3efd706ec05 GIT binary patch literal 1303 zcmZ8hOOM+&5WeeI417ue*=~BPPvy$=ny4%plAO(==s^$KVk3!$NM&OnKfWI+dy52K zz{}yx_Zq^>MDR28(km)G)wzSi2S*{s(WW!tG*)w*9l(5=?pS7q0BlycpdYFJ;(`YWbp;-FKt z91JjeWgiE#36^B^G}h8=C>9YoLN$aS~<$2J!Imy-I;&0^`e31Zk>4j4 zA3aGU%Z}6lG)a#udPAOivNTF#N9FSm(NuR+<1{?3JB9FO1~=|~8>f6SaNu-?)ayo_ z-M93%u2a=1(}vV22VG4ToyHaYIzs1Ttw%Dl>l}iDZtwMfb-u^3ARF-CBl5g&cp5)D zK}6?i96*UsFwGJ6uSC|*O_i6U{BJAg7evaAr%DP|cRPuVfe zIq0{5O+>QGz`_qaDOO-bjreCADBrU<_EhWy^_kZfrN`GyJnswIr}37f_{5=%J;i*c zf~hEG;tEX7m@RjSSE58 z$Sz9(@8ZOS%Peto37=71)L!-bM$qB{JHhn3mMv#7u&|!wr{+~KzYzSs{QXbxALTiq AHvj+t literal 0 HcmV?d00001 diff --git a/.licenses/npm/@actions/github-5.1.1.dep.yml b/.licenses/npm/@actions/github-5.1.1.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..f37954256d1ac97525fed0317676ff876c70d260 GIT binary patch literal 1309 zcmZ8hTaV&46n@XIIO1tn3ec(4hw@Ypn89jDP!e`Js``+NA?_w|6gxYM)F0o^4otO` zkif_1e79qbhdQ zZHUbiG*3{g%AnDm9EvMC8*2x%S>NGSmG0IL2CH@ZRoS&2rCfJ~>eoY2eZ|y+JZM!V zdjphC*~h_bf+ZO}jg>STio}-38DDjEKxE~2yP$DAEjK0|SVw7mEsW3)YssJ9U6Cx z?pu0W!&J7)G$GZ>L6?(7r*TEUj?np7>yeCXTZf>a+k5>_o$qlh$OioPh&=B*9>(*mf^ez=~d*1aQWocLlUQXQzSTQBHl*lorquP z8FO)h*DUai0h%Y2gYXU|IOg_r3 z>^b5y z6-;d-CXONP*paA(6Zw!0v6U2|IoY&<`;thmp}gs{sj~h BqSXKZ literal 0 HcmV?d00001 diff --git a/.licenses/npm/@actions/github.dep.yml b/.licenses/npm/@actions/github-6.0.0.dep.yml similarity index 92% rename from .licenses/npm/@actions/github.dep.yml rename to .licenses/npm/@actions/github-6.0.0.dep.yml index 33b0329f756cac8cd763c368ddf9112977ab6e85..423601cac95ec71f36cafb9263d0b2889c835a0f 100644 GIT binary patch delta 100 zcmX@lIhSjKU8G}jNoIatu|j%gNk(asLQZB9S4MtrYC&Rps+B@UNl8JmmA*biQZG3_ pS3eP=UcV$iKPNl0M8BjcHB~=1F*8rUATc=`sH+&NdZT9>3jkJVC4&F} delta 22 dcmbQsb)IvA9XD4-er{?(VtT5T!p7-sEC5*G2h{)o diff --git a/.licenses/npm/@actions/http-client.dep.yml b/.licenses/npm/@actions/http-client.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..eadacbcb175068cdcd5108e1e2173769712daa7a GIT binary patch literal 1408 zcmZux&yU(T6u#%Lc$!mN1z7dSX+6OV)&>V9q0>>-Lr4s`O=1)~GmEr;{C;*|s;>3~ zetz%!^$fGwEb6OHE$QLUs&?A+c5!y@GOJsydiM~$s==bVq|fuu^FJbYy`ZZH?{86&}r-AB5es` z)!|B~q3WG#VmiVmnIqNbYB;HwoS~|}(gguyz#JSB(EW)jsv*gDx-(#`Il8xMP-t#~ z;L2K4>k63En0oB6rphmlj=EKrJ|HD}C~i{^9|KXNs+M#QL`C;2dc#W0=)5gA=&;2& zFzCK+$Hr^9x3s#`Hx>_Z%L5KZ3nyN0Or2@;(SNF7?=l`*ZO<_^+QT14hfeE@VVx5b zJT0&gs}M3!H1r4Gzf{KFx6cYWLBlOB>nm?~WxqQ@T*q1p)FLG~oYFC~bXHhsIY=L#MU3Mu>Wz>m0n z>23=y$Afiv3>v$*m?3cf*Y53Ul^ae)wl1Gp&Pf!s%d;3;iYJDklDQm-C{aEGMzurGld-WRmVzLO#(W=44ieU8e%i7{Fylp7aJM zIA+(h<$1CJI(rnUC|_b)i&A>rHGmoISYC=`pR$~G`+S!b91>Q5mO`#`F!3#ypJd$`Dh&LrEtl(k4q+9K}bD-!*$o`9ueENy@}FrWM<=C$BK4 z45IVUHYp55&l?`fLP8I*q!gL-c9Kk%IgT;h=H>hNvnY5>EEk0jXPsxD@X=zz=O_J~ qyb}_Xgy~kReF%vG&n7X7opw9gAHT;AbhM+9 zkia+ho-f}ppU;E7>g1AUzg6GIK}OX<4|ZPb-VVBL#E^>Nn2G9+UTPt<}j#;ztB++^n3MM74@JlmgdA9upEN3?&PI90po1##Vn)f zr0jV-ENb0Fem?R_=BD|34wU&f6WKw^sH;>Tp%~Tr7doSyvv|uFT@$pbmc0Q%r|j)u zmcg8i9*0_*B_(3T(}D*?R{mp`^e=u9m1jv?QBpF^(;W`?fq%5pm-j)P&X(@#d;0wF z`QeA@sbeRHP8k;zDMM#D$iq9GhN`!+3F!y}q>ogetKlR=vYM*?oi2zL1Nva$P4y?L zs0Nd#M7KQy%H{f2A=RpHs4_;^ssbi8x*j{(+sZo5qiUt0I|~c5;yN+A_e71XT92rD zAmVmzfN#iMkCp~$?4W9g6O!udc5IxM+v8Rt$BD&_`xuM|gp1L@jnf=bryF&2-_l#W zjE7d4b4ZPH@Q2Z&)3~C)ozVG-up~ydlRTg(c<{b|sPugP#DLuoML}8aHHhsl5gc`qu9AH$ z(kFVvY?@)=1vVYPWkw}PuW*86c1>HJuQotuk0KG}OX$JYqD&q3I?IXCj^(9T?Gu*M zZlCY6f3NT%%FFZ9v%wTOuP!e`Js`?NTL%dC5WIHou)gRwu2WHhu zNZ{*x&)2n>&*#BV^M&@7Ry>`F|S73&VqNLja0*mep&pwcna+Gg1+I>2WIU1 zN?%vB*Xmt1!ceC^=AC#K9m&B8eX42{tD&J*bQhti7q(T6p_9_&z{Ox?U0I-GfFj2n z5Eb#)pjExNRA(@?)?UnNxjakTj>ko<`lWANdZBaE{51#M{JU8mJ9S+4l^m8RdIvvk zEOQpcJGSVXpp&&243K+i?+3FA=48~UA$UazU$eAekYdH(c18c-7g5;?+VPT-X`UW% zcntj2T3xPMo?A-~^&@?G`tn3OS!-p~$xa=6p?hgujwB7@(BgQdv#tJ;@H6 zctGMbD{d3BM^Ds6?@z_bzhSW$0e;h43jVt=?gwD?r&%}ssk_QwC58n4rmA=pA zg{+|C7MXFC54@rOI+ByF)2IhfBP4V+3K4qd@1nM@;#{0mhqvr()@o>^^NuItU6r`5 zj_O@_U(?nHg?Buyz%Rv%nYMkqGHum$bQHG$!Hu|4@{o6Ha62B2#iNi_M;E0%@Bb|? zZaTJ%ifmK9MmZy1&_2(;@tDOliwc})A-(c)n;l9*M;@i+8)X}c(l`3b(>Nsd`#xty zL0RrK@ZCP)40WEalS9nY7kb8Qn&H87ymSDU8I>Tt!EuJ!4eeOI-U2;(<_Ry~LJzj# zW$LguSxyn{qrBwnLlWh*KjizYV2}|5I_2pm2NT<|v|NB0HDcdzpkf;(iKFv)(E(0! zrVoZSrK$uP0gyiD)fqiZXEiS+V d0=R3Um_-Tju(I^i?tNepOs@xjNq_tq{0qZW#vK3v literal 0 HcmV?d00001 diff --git a/.licenses/npm/@azure/core-http.dep.yml b/.licenses/npm/@azure/core-http.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..6a443e75c138748b9613b46ffc0fc4c5bc0f4794 GIT binary patch literal 1474 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 G&){FGLc28p literal 0 HcmV?d00001 diff --git a/.licenses/npm/@azure/core-tracing.dep.yml b/.licenses/npm/@azure/core-tracing.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..a4649e886c933d93c5129e7c676ce11fac15926e GIT binary patch literal 1453 zcmZ8hU60~66n)RHxZ-I>3NX8UO)8j@ivK(?Leve<9qDDR9guN ze0}fvx)#&vH0aAtENJp;`S+m3yi!_Btu8CspC-XYXd_j>pf9tR*~|2-#YKwi?8`5K zy`3@DpS!>eU03Scf_7S6WGxJ}>N;)3MYJS)EA+9fP%QhJ8quDGrcT&K)rO8r)13;P z6gdHuuf7G1>cqJ`fuOPWY!>tRN!n&O%qrE*ecRltotpa3DNv?A%>2-*!@MhHKS$Bq z_{qyWW6^5MW?db$vJ$-kcqi@SU>3oYj2bkgE-28OPu zb)>2(^+|+e74o_f!ZH|82Mb?V2$fWU$y1`+Hh^*z*Al_GfJ|px*R4d3Ba0jN zF&GaB7lVNtr#Ylf)$-`Rg|~Pf4y`mzNVRnEhry!LxT4=q=={v_K#XWdc|eiy;C=t6 z()YQ%kQH>?BQvgY#WVWZksNg$2i=1jA)%{Qh|n|t5S4Wm=i;bZykcjwQhhC*cRUgA zs=#%5P#58Sja%=Pg>1h9zZ5TK-1hy-G-cb;LEHlbH{wRgLq4p*?Qk#_k3yC$ot5^y z|F=B5>)0^L({=G4WsG=EyDa_AS8PR-D93pc(mO9U>AoOzWKmLlP`ail`Jit+S%t)Y z+hr`zDb2hFzTL%~q0WisfWvxA1<5QA;(f>Er72>Z50_7xWF6-qTax zm*aI!5t^x!)rb?F)JVE5N70a-m*z^nFs*8|*Q#Dz$}`4WV=j6f1ZQd5san;l4?@T5 z*q6HbdkLK7cO6uns)D|hLx7@_^;=uub+Q(N24FAE{h-(0lC+w}TIe;!JYq@CJR&20 znl=4{UqnSKXwM6Z=XrX-;n8zfk-A(*d2S6o)Q|M(!>13lm-VQ$I+?lSAjV#5n+Zux ztr$ghrSn)0Ml?R1Mj=R@s73~7;geBR4p+J$MGUCQz>6HtR8kElM~QCJ0?JanAvp{* zRBEkiSpt(9RZqPbOld6VNp?chgMo!bew$c4I-*9DokNrZ5Cz?@=?yun$wGiDb4=55IobTT%U7yVhSwY7wGHokwSe^emlC!SUG!CFfNa$)5B6Q5(MQv=w zx;Uw>Q*YL0t%gQg?^qG%s=#$wsUO1mnqPfT2D04~xJPkf=GVSmVY|DIDsc-C+=v?` z2YI&!w^OAJmO_>tUDW7!|8IG9)3IZer`zHs%oy>U4q5t*Z`g(wVUF{{rx#xA(qlpB z$ik#}rF2VS@=9NMvhj)iamZMnQ<^yqe1C{JL!Bp4eBAKlnVvA4q*!>4O$Tt1QUTH% z9A}u_(w=3}4(Q<%k9qOxJFqP;5{tb}GYaVtW(ALqahTEJm>trbLBHg&EInINL1U&t`4J wm;wucFq^O$$;R&jdw(Ug*Z_|R;I4@_ER2DNCrjS#-Un9Rygm3!`tvXEUrmg(ZvX%Q literal 0 HcmV?d00001 diff --git a/.licenses/npm/@azure/logger.dep.yml b/.licenses/npm/@azure/logger.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..971ba001c9a24b840f32d5bd79360df232b040a3 GIT binary patch literal 1400 zcmZ8hOK;;g5WeeI417ue*-95Z`BX-tV|Mj0D0$PM=z*4Ki(5$)L@KF^{`d|lJBt=D zU~@S0y@v35y$%M^%Pp*a5r5BX}$Y~Y4%gHD`Y~iQP)8^;EUPo*i#y&7}-;3$G zg-q3xHu`LVxJf9JuW;5A{3_l>Sx;)Tu!hvb1+DJoC@u)mT05F;6kU{U=hLRvedNa@ zPro+JpKAnJe>ahxq>Or@h6syMtv|&@oRTD?o4yG;Rm;I3Y_IJ7V79>;jGm`jnk}R( zrg=#N04x8pTlfcm0aUGoj8%{>^YDO&$G~63dc02R(pq?^AK}Z>m!}_2myUy+dSzTX zpbWHflBX+NCNWsqgm6aLpwCdZV!Fr>tOhY$VZ=OfK%Xo+Qo{uV)X3y1vD>x?<-+_B z7^N5*5XR_Q3B-g(*K;oiE3D%@t4O$o~V(c^N4CdL|n-o@B`D zXKY|i#$Y8=)wE`q0;xcyf7=&af{5j$_GB6|2k5OuJb$%NR1(3SEDgP z&-`81)>WK~v+g?m;cV7=Xq5AgPsF>b@LHVoyY#-6tqFtN=SW$*VUgc0lqs_{#Dm1p3>7)3Studkri*q>N&n<#BpUSpEXfIGY#v;2FMj z1g;9Gkn{$}D9-L6qdeXtI(cR(tKLEnwqsT9uy+Lq0tdn?79Uf>;c(=KqNFGzLFk<2 zJB~~=qj|MKW~>4Ih6gD3BuyQi$0J8{!kt!#i^CgdFZ&AiMVe47K2uako>RKep}{yM zEDIqa8F_IkITVPr_;js{Qh41{S9ZJvKXJv1+*yi?yyAEa(J`++$6r}VLm-@$E}R`N zvc;^67^jd0fp9jb3zCc92llxoY;ge|F@U=!NGM4W4_B6d+Px2Kg5~w#U()Y?1pfl0 CbhStT literal 0 HcmV?d00001 diff --git a/.licenses/npm/@azure/storage-blob.dep.yml b/.licenses/npm/@azure/storage-blob.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..c1a125164b684d35a045dfbf80cedba07cea91a9 GIT binary patch literal 1414 zcmZ8hTaV&46n@XIIO1tW3S@R(D)H0+W^gwoCx9^~d+K1G8!+ zB=GS$-|bk;=X0+wID$>X-E8dGY0!#gk{Q7c}>m z&eLPp6~lE&dsz)itCOM7B2YFVP`3F>CpFM-#e0!egS;4;(+aR&qdIW`$&wmlE_xXR zXK9+TTvVzH97y2A%ys?O91!#GI`u;PSx^czlF1S8Ov7c#;00Z z_;NJp)VAoh<6A!g-h~$JBo8PO9-Qx=DqWw=3t2(OEi!E@A9z6jbtETUr*Y^(jgZh) zD@5p+zl+M)igj^PZL2=4%}VvPwBGSVoU0tyMXBC}^EGX~R|c}(3fxkhm}%R$E8P@r zOQpC42yVoUl7qZkgWIvx29H7(EnU>$c>iyCanrG5lqK8zHB1@tj1Fn?jc?e7W?_c& z%%@kL?~-Fq=t#pjf1_keVf;p4dA#w7{eDPUmQj*A4SauyI76Ms>*%=Q@e8dm8z*@1 z94{Tfc|tizZ*ZJpc1wGfu6IBWS3KhRoA1E3JdZ8*Hc2U@Lzw1#eT>4C4#)J6WDGJk zfR1^*O~J(WEY25TMvd4v94Om`QDo^HUU-C))M}-5a(GMm%Pyx~5^WfYD+Yz(Dq<5I z46dV)?|s^Y`|!o8Oeq1<RXhyd=IXv4w?cvxBdY4<*`@TS*;zob9@ G^!^2cT)NT# literal 0 HcmV?d00001 diff --git a/.licenses/npm/@fastify/busboy.dep.yml b/.licenses/npm/@fastify/busboy.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..51267ac9fc9b09a1ca17f33bb01a8189fc2fed79 GIT binary patch literal 1319 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 literal 0 HcmV?d00001 diff --git a/.licenses/npm/@octokit/core-3.6.0.dep.yml b/.licenses/npm/@octokit/core-3.6.0.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..a29afc074c1b6b87ca331d36b01154b20a83bba7 GIT binary patch literal 1380 zcmZ8h(T>|T5Pa8HEd0>k0XipbfdKVWcs6||DoZXU=Xwb8AWO8xRuT=7%EdrGzC+5s zv;_>c6$ z9CXa`YsKt7G^$nE21MNhQPJ(1UbSn?=x9(DVk(allkTf_tUZ_8b*o|K)Ww$vM{EFu ziqS%i=NwaKYJK$IDo8w!hgRDrrdoS=c!f;sgJDFm*YggOwW^)y0YyVY(EXid$n$=| zEAY5lW_{!pbN{a*J@Gn@Lyy)l30bv)g`xAGs&YQ!RUA#*npZCqqpY>pjy(yg3S5^5 z^A-E|wgA0xpdCgKh7!n3)4pEWrfgd}sH=hKt@{Ay!#8PAJ07gVQs}a!vl&9)|4W`< zd2Bf4*}8aUl9R}3C$mpt#aA?AInJ|~o<*_A_5~qBvb1=iY)veEq2ENhii!WR!=ELm zOa>leyGsN|T%^lnzY^&aJ)$&N8=!_WgPdHG%VM*fK1w6Kg66v|p zGTXgK@w6#ulO-#T;3Ee^_L%Ug9Rw~DCbluH*p@wcmXb0cO*(z*#FU;l+=qQ%hR?DP zS?VP%v$T*n#!xJaxAJF^^O%?vxi@Dmv+X3-TZ}4n0T60aJ|TJggJEw|LW(zV4+CzT yXvJ9qJd7+2Qhma$VE*ryNpiN@@_APyZF-w#pD~v&ch@KDeilu;hF9$Km*^ioa;q!= literal 0 HcmV?d00001 diff --git a/.licenses/npm/@octokit/core-5.0.2.dep.yml b/.licenses/npm/@octokit/core-5.0.2.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..e5adcc2352d3f2a973ab6b6c02a70b552bc87053 GIT binary patch literal 1380 zcmZ8hO^@3)5WVYH418#J0j-k;=pjCZYtw6@vgA^7wu>MKS)whrl4yujHU|3R^GMm- z55R!U;mn)&-i-P1@DTN7rxrB(WGZL=((YYl1~rSmsljT~FX-3#`}v2+UCv1A&s}84 zt}BPjg7|l*`no){imFzt-qFzv^rYQpJp61)^1Ps*=xHd=&F=}Zov=}3I(05jY7w=% zQoRLar`_#f7tsS*GY*xq3rfV2r#X*^ocit-^f!JH6^){;C@7igqYzx0^JUPd#?f7M zPaod@@{zJh3{|FggFcMT40cN1siD)>Ya?x`QG+^M=rokQQ*}(oK`Amvs+w{*shFIh zvcJ$7ZlJ&%T&a8ApQr@#`4YM#+cki)=ICC_L7||g(pppL5|~t*YV2T7>3q+lZk44w z2OYEgS~0s1jcQf40a5orRCK$hSM3@zIvSLPn9AeCr2DEJYtQ9&-D;RQb@AoF5gP!Z zVzf}>ImgtQS|9zl3KGxbq1CpDsn#AIULn)^U>H&C^}NGmt!gKFK+(_;bpOLLhD!BM-WEtks;(AlF%MDY>_u(c>s zkG;+$G1@U%h~++El6HH!%W@7HD?q0rT}yQ0Tb>qkbViK$XB;Tsuq5&A0v_8#iS%4) zneASrc-j=S$&wXE@R5TddrbJ$4g!}66Wf?pY|EZJOGz1!CY?TYVoJ{&?!&$>!)IBD zEcKF>Sz1UOV)1^Ek+f(00^}ypOC!$!LYX}A;lZGhXFTE ywBjrQ9!8c1sXpOWF#q?%FvI8)rzNjzzo)g1UaG8QPqc#81QZqXJe;Rr2hClcA(o< zLIPjkd+s^sUi|Rz5Orm%7Bu@{Drf%D?v3i|-ssNFqOWSO+H?#0WBzvj?tSDgJuG&T3GH3!R3tbE=N%I4DKtNY%Lqf)Osf#ZUj@SSQ6{Ce3 z&pD>n)cWYZRgl<^heq3TOttp#@CupM2g8VBujh>!$f{MzN(;W zT7b?t&<-OALkVQ2XhD!BM-WEtks;(AlF%MDY>_u(c>skG;+$ zG1@U%h~++El6HH!%W@7HD?q0rT}yQ0Tb>qkbViK$M;s{Muq5&A0v_8#iS%4)neASr zc-j=S$&wXE@R5TddrbJ$4g!}66Wf?pY|EZJOGz1!CY?TYVoJ{&?!&$>!)IBDEcKF> zSz1UOV0W9H^@h%>SEH_JRDVp$Ix>R;oQ*D~Q$uxDtEknr>Mc+^ z?d}J=ik`@tX{?o9QOegWD_KP3)Sqref8iIAyeQgpN$Ff4h2Yu@*HND@jvneq`u^j0 zKTS)|y&Zz@*01Q>S`Yc@OBMTV?6NLC2!J zRV*GuqefM2K-4`D72U7tUAv2!9PG3ZQ+u2kM%V4scrN$rR>RD>i!Tq3*Z>F>lZ6`3 zIi}7u`sBY=kT^`oR@+NVjrQ>H3Ypdi!-!(9=Ytu^s&=La6b%hQ_dhH{p7#r0fyd1< z>m%=&`+pVbnb!$hgw`+#S&e~(q4RI5c0S@&oJ`xAcP|s8Y;@S8)jUaw>*{E}s-SCL zfZjOJ4kHLd31sGJ->&SXYFj$0n}O)9`(Tm}-=#tAbhHjjp{te#GlstZm%P03*fA>e zt$a-cBVJM=@=tujHnd1eoEI^@a=FV7l8_;iOukXRr6hZ!UwF2OiTzsOk5p1F0uR0~ zQqBU3n|?vR%sA}IrEWb_6 z9s^OW$~GYC9*BzWpXs7qV@5}VvM^J5oS1Z9wPWqI+&{M(VNNW5JS1WRAY6C)<>5OGkAJ5Zt;CaK3!E2DjtUI$R1}wsbZ_;Qhbl`Ax@`Q=YAh z7bZE0oc1#NBvyPyGnV5#i|Iua+w4#fIwVVrSIXAJ(pUOTq^p?t?|aGfoH7}7h}}LB z9CeW{lfz1+8+yiUn&H+9+i@*z=`x)X_@U`rPyo> z+Gfd$qxj6BkUb}SqJzO@!o)7772C0mS1Bn2(&W>(PD<%z%YE7NGW;zIk)__!GD{1I zV+_Z#_%{9`avl?tBKP5}Wwx8l`iLX*YJvc{u2EQcVVnI literal 0 HcmV?d00001 diff --git a/.licenses/npm/@octokit/graphql-7.0.2.dep.yml b/.licenses/npm/@octokit/graphql-7.0.2.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..217f595266280e6d5458c9c7c79d4d140391ee5a GIT binary patch literal 1380 zcmZ8hO^@3)5WVYH41C%Jv`(5!3!lohX`84lIh363BFI6O=oMQ@bVVwzf&TbDQg)IS zSisBC%=;RGPft%#Uv_FivtLc+%%9r5dmGAg^H)2IzN*1$(=X`f`TO~Y$X(Cq>(5w-4gZO0>R{KUtE*j`Z8YSlYBnSqXjxmaLO+1HesT1AcN)VX|9i>TF=>Mig( z?d}J=h@Qxraj2ACP$HH*&3Q!R)ZcDF|KLBOqEWOH1trsb6pBl8z7G1War96<(uemy z{X*GfhAPv$K_5qF20JzH)zE3{jghw0s6idC1kb%wbxfy0DKaOjnsRtkF*yVES31K6 z2F%fwy4U?1l|VjU13S8111M`w?otja*e$I!l`ervwW-DqnUv0Ro^-1$JvjK7<+q91 zV<4(k*#<=215wfaGhMW6%;;!P7G^4s6O-<%cC5XY`{!08%!$R1heT`ugp1L_jn^Dg zXKH=&zbaTfkH=QqCZ<|@cw~i6>x*GUvG?;1>$Iw!W>8Nf2f?M|i&X@1j;C4J(hfAT$md<7fy#Kd6zvQQznBBvD+tt zqb|~Aa#)FUL(iB^Gu(QCyAR+ZqXMKiIKeTyrX82dEzsGsNJQ}(2e7p$QjfjPBr)1E zS%~E!VUqR-xzBPA87n}iB3(-`@f}Z#Ihau+{s{-lw=79KUBF`pIFVi}EwlZr6q{{9 z+bmge6rVX1vgd?PbTGI~nApX%Vmr3+DkWt=ntb}!Nh!T-xi5QOhQDPYvea8zW@#aD zjNw=o-^O1=&SPRyAbXP>bt)s#Hc?qJD0$Ohu?IaUi>)LIB(jY5EXa>7eVyVyAIMpM2t^pqrms+cE$*QqH%9DA@0QTvQX7lQmze*o^m=*!XLWbiaHLS= z`|^cw3ao%L&%d&SCa@s|es4l}VdXKulz<(aWaTU5dmz~>{Km2*1p51#)1rW!13R5l zMzO}SIK3n+JHRu}WqFBL`@~8FEpsT5@D9Z&&h6nud3;1<^2}0JzJ{=8W#%yV2uk2g zc*){RN;sS^{G1mQ=@W#_ShnZLLQga+cgTu0pkMI=iX%x=Pem@Mo_l?9etzZba4g}N zrwPU4Geu?OIi)KVnu=4xP9Y@ZL=H|Jha3fS-*#8`a-_b5d<6gElI5AR5$9RS@iRo1 zy!;q_VFe9=a8|fL_B=;;7bi}*%rZBZ(G|r-?Nxtl1Y2BS7c~8$C7~omEL>0aQ}gb> jj|rzFInmwNemp0eZ@7c+pYE^B=S{HQCwzFmeGmQti;k|e literal 0 HcmV?d00001 diff --git a/.licenses/npm/@octokit/openapi-types-19.1.0.dep.yml b/.licenses/npm/@octokit/openapi-types-19.1.0.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..a4a07b466b62a778d6c869bef34daff863bade94 GIT binary patch literal 1345 zcmZ8hOOM+&5WeeI418$<$j&CW`c$q&+eBqapyX^8K@NIQ7F$UaNGclx{qY@A-fdD~ z0k4KL-)jhNx7%Q3}i?`at3A=4RlHa zGVZR@_Dj8M)EM+?6mxYI`(Tibm<&>m(!PF}eXs?i7TpN5hlE8mEocB>#SgoOf42B9 zK&0lIme=0Gr-x4uaMa?8Jm*T=+q9U#_vAv4(l~!04fH~b`UY2BO=u>BP7495gQl;oxm>615yq&_zEoOZa|@L*s*ygNRyE5gCR@2spp%0z z@Xq!EHpP8n^WKxRq8dO>h$i6m2wpH8wOG)?SS=fe5n@v_EUnYm7V()-qyU-gEV~zt#r`!VzJY>qE9|_K0aV{Mht^Pkf_^x{ZF0maV(e( z^4}x!yf3)QU!7n?-J&O?#7luQt-{DW<6ok&uHuw;Y8cduv(~7oT`$sp-CBvqRjs}Y z?`Pfdq%6wyk^3chA?s%EN2ae(e=Y8zAvZ?sO0SmC;Zhrm%a@q{tn_+$|7Ue~*Kndx zWQX#Ja0;w|oM)d|Ok>!P0>3vQJhAeWT}r?XPSWxjvICIx8UAEx90L84b6OOTabV{> zVH9gDjgm{u(jz?LT$+`5wa=_X&@zJ(3GYyh;@knwlt(8-CXXy(<#PxJR;CW~fS?3& z!b=ui62c+B@H{Ih(#Hs!vh=`_g`R0z?vNF0KtJOL6ep4-o{C&hJ@@*eEPv+gcq-wP zB{9X~BSmH8F`+9Jnu-#_&LPC)OpZ<+hYSUC-*#8`bfUh5d<6fZl4Ys05oKw~@iRo1 zynGvdVg(I>a8|fL4m?A67bi}*%u+X((iO!;?Nz^R1Y2BS7c~8*C8i`nEL>0eOY`pM j$AnW7pXqLF-=34rSKPt3clTH3{U%uN6Fxj&zXksSrsA%O literal 0 HcmV?d00001 diff --git a/.licenses/npm/@octokit/plugin-paginate-rest-2.21.3.dep.yml b/.licenses/npm/@octokit/plugin-paginate-rest-2.21.3.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..b83e799ff148c4fc43e8b4e53715ad25020d3d3a GIT binary patch literal 1375 zcmZ8hO^@3)5WVYH41C%JWT)Al>QlKky(TJ4f+T0N2y&1m+F~n-f=Fd!pg+Ek^hcTi z#(FuNdGp?zG3WDn(3hQD((F%NS^bZ)ABJ{1seV3`_*+^zAEmLg;F}zc(*2U27Ed1+ zzX$d_psF9bz)W3Nj^`yM7XZ2dkkxdp`pD5>N--8)l(GENsMLya8e;Y_Eo?5(UrI*wA3K2p_`<4J~2P}!epfDfw| zBz9>eIAS7RMf&O*Yrw`L-el;)cRVf@=!zKePdHG%Wl`i?u|3#lp5H1--!k#C zEohrWYmVSE2Q&5@@k=X+T18CkLRzyOdvWYCNX$M9JdB8i=hRT38& zjv-WL#l7@Z%r*W5kLpiTV;8>Os?gMDx&|=ToZNdkDkRrbT5Bo|7i+3bHFc_YrSttxx>c4QT%%}~Un^#h zp-HXEmUIs^MYk(@*RC;B@C_m=j}arOYNy(BxLvmz-d#HQ^5BH^%qI&4o@Y#*srAW! zs~~Hbj;*#$OtrQbe~@W?Fia!%IzE_@tZG}2pusz6{lPBegn@fQ-PNMd_Z{Q?SqUsU zO=FLiFa^wN1It3kzf|RX#4|scwl(iw8pc*@uNSKjrdHs(JeqGR=(!BLHx6`z^HpJ3b`a`7anE0Q2{A6;< zB#GTV5gaj*u9CxAq|fw(x-`Si3v50>i;N01yg~_%x()5PTy25OoQN=0$mX!{uu|#w=79QD|P^T8ThTT{i_tu z+k&=PvgQaraWG>~3BR<0s8zzmE~Yixv1iXtQU<~@q+Qv)Yf$QeT(y3yQZou)a?ODc-OHMBllrIZJ?r@uWW` lFaG=fNY2(fzUb=v3pD$J8GL=XK1`3Z=(28jtG;}V{srNixg-Dp literal 0 HcmV?d00001 diff --git a/.licenses/npm/@octokit/plugin-request-log.dep.yml b/.licenses/npm/@octokit/plugin-request-log.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..d9fc28a1b54f957d730fd19fc352023eee389232 GIT binary patch literal 1353 zcmZ8hU2oeq6n)pPxbRZ~$ZlHf$xl;kIwmGd1|>HOiay8^ZE=%Cjij0y*pJ^K?WAh~ z12V~b&(|e5pUgAGVzw6rRzm@wicGFo6b0hzmq;>O7pJ&lGX{^%2l0GgT7QaRA zGNNS|`^ZjxUzy92QhlbX>*&^IsT!KM1xaJHu~DmgIaX)6j5<}z!2+XK?rmY0(VVQF zOf4<&_=;r(i-?^3?w0f~{t@kXN$IthR(iY`b#5Kq)%W!2;nM@O zLwFV@YL5}4sP3l5Yj`{E6tcTA`1X*5^~xs;2VQ4Py>8UWe`T;WPRCB!Hl{{-Xyk)R z>o>zRV(;UFHe@9R2?Pb*!Rrrop~kZy8}Q#E3cRlv@6S#U(P=URC=m*J8jZ*T<6p9N ze#a|6>8{hS-WtZ%DDM|nAxy2radp(+Wbktx_Mjc)hRDMZf{^QEZ%21O!t(e7?hlQX zsW9%by(ioHdwP_&Od$;u@LO+=5x{h`4tGOgJfk*2(yvJ@ZW6bQihNT(CxQ_#XfN{5 ze9hK0OA4%KF+KBgn;%L-g-EjUh4Kw0*$e%_vvo}D&%IzpLAfBl+ozmik7uj&u;$ql zJ)$qmapyU1K0wQyN)X_U6n)QET=6s`1v>59^0Xde25UnSIib^0)d!Op;@u>UY^SqG{rJ6hfNm=x zf$e+GIrkjn<#HJfqL*t}{HbfF|55J4*iC0OERD2oDTij%YH-V5x>h%K5q+1&Dm|>> zM3%U5xa-6kL=X*$~H7BX$0Wpzitgb@E5?I zRgliTu+ihisB`P!p?-utu*p@fwK{VlT8dK zBc&gqZiP9^7@P(%Twp|lut6W4P=g;_K#ion(zOU<^~t>pBeA#vVXdx}Ks;!4J@s;M z!g;=v>ZFAS*GgEF*N(+wAZeuNKn;i{;dTV?=%Jn*_|%N5Jw}X0bvFg`Z^xZN?`8(y z9-OdV`DAeduQP^TH|pfSWf*Imj-9e?42|;8=nqy}zZueq{Tv@KP%AM}L{O+Z%=%MZ zsPQc54f0$ySEo(Ym}cCuR=(z z!eepN-({F*4tvlJ=C~iJeR7RdtI#c0Lo0PD93<=qj7q5;(j)Hk8 zyQ+KL(XfSl1V5XK<(VI2lV=sjWsFnu>fZXwN*V*{>P?91R#*_V0y!!w9!zoGjbk#Ta7ijSnGx+v!eV85>(R|(Tt@`>c F`VUbm#6182 literal 0 HcmV?d00001 diff --git a/.licenses/npm/@octokit/plugin-rest-endpoint-methods-5.16.2.dep.yml b/.licenses/npm/@octokit/plugin-rest-endpoint-methods-5.16.2.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..678227b47aacb6fbe06833378e8681a02ea96de2 GIT binary patch literal 1406 zcmZ8h(T>|T5Pa8HEc|o_$W9ZW0ph3fWco~0mIO-9^$_HNmS~HuL<%C6i-CN6mz3=^ z1q|3EcV}j2XfBt_NQ+*sVeyBlo%u((cSARwm0ph0x~0_3V3c;tUb@yab`gD(qg6() z;rG@1kE;)nyA0T^hd#1X-;43GhI|Hs83;tvD18Q_CCn&rG9!qt19Ji~sMT4yb~>(V z(*vhv1*BkbBeqd%dO3)*Tt}U%rMAe{D|cJib+iO)rm>cG4Jk`#R?-N-$?t9rKkyg8 zo>h>}y^xsUGOBay;Guqm55K+tbeCHj?M8K+oEdEt8Vfo0%KC9ZS!m@bj~6(PLOa>S za2lobBh;-J&oTyQKMLD~FxH&hn;0b)Hz2GvwGxO2jj5+z zYA2lMJE=}ucyO(RMS1O5JO+|RiVl=UGzqsOcta1(y=LyC-6FB=uM+e{#%BzhUwTT+s4o+4~_m{rS+R3jo8oe4g<9k6Ga4ty2GqL z)rA_*g5Dti)uO=rhVlM730icTMvatc3idPxEeni)%i8%Jul!`X&b)bhF}6nedGRWQ z)G9m{NApdFdFHUSaVR%f9zqC0=47u&4?oTF_!{pI3}O@*_s~9qZT*Ek%B!a+4HNKN zw~5h!>1Z9^4TbRxW(<=4@5JgVaYv!dx77>b6j%ub&p)#b-N1sBxL(BY!m3?*Ou80cRG{!>cGIk0_^GKzaFOVY!JWzX=0eOZoop5e_$&?<)t39nF$ zV&4|_lqWkxCQmG7)oTn}R%IS@i=YGw!Yh^>Qo^A)@FFiM(r*wpW7(D?3*FPKS|Ka$ z0sV{%D0d`H0~I--dLHy8dGX5G^R9wjo^B{^K2cOgo>Dqf;ZR9R*gl30*^_6ljzf-u zc__Q8d)d*jg?t1*NyYNakCEhA#c>(ql)SpPzOa(UKsYPCAzPj!ytflOyl0v3%jk^a ztq!X1iC~F0?0`exwQML!5ewtVekor4_x<6NZ1!~3H}@B4@dY#Z`fz=i9v9Jk-SDmY H@-_Mwit)rq literal 0 HcmV?d00001 diff --git a/.licenses/npm/@octokit/plugin-retry.dep.yml b/.licenses/npm/@octokit/plugin-retry.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..b6c7843b01034e6b08f1a94600791589dd766317 GIT binary patch literal 1368 zcmZ8h!H(ND5WVXw20rZqvXi!#)~9l9dQDW83`)*+5#%6Cw9Qr$1(C|eKtH~Zl)Y^N z7?3%fdGp?z0q661)RnDT((HFrIrF!6ANpoI>ux?MH(Y1YS2b8|x+VRx__+8ja@QWo zUEfA_Y}<0UE{ToKw58J(g%X0}1FK}HwTs=hp{Wz^_Obruk92!6UmQJDkM#4$pMIrm5up~bfxZeccv1^{WWw) zwz~kznv;7g2Ze%~N^4D}OJGuMs_W_0k>LQLgxV$xmJjJ4--ziu>)oVxh(;D`-?P%&Dl@tk97O|4Jh<)_hGf zmg78&=|vRV>`)LgBuk4|$~MH(SNcPw>zMeTd&%>hG8s6C-98Z>0O$A#$3KU+@7n)Sv2h$Ua-$!qJIHUf{GW!)_LtOl!1zn~xIKh1xL-1UsU{@g`& z?7DKeE+|)hL+5e;f>VS3OEq+xw&V=GXtx=wZ!EE$uyoPxL{{}ySFNH(9m=tFmUK_m zU@jJ95m5=i)HEtOnNFR{qgq6*t}z7aPP_YuT|`f0%{bJ`E+`R8p5`3mPW|Z?^f&$^ zDo%>FqM&4&k3w;2&euU7PmUhyNBaKT@7_~3`KH?RZqU`}43vcCofnpn~1f zT2t#1nADhh>{Rbc=Q$6$RhAwce9ZFO#OyH;HL7d_BGU8c_u~+<86DPOVW##tF(R(p zvGH2`4*YSe5$43=$3r4Mek5pUv~c4!$JCidAN;Qh7SChVYI};Q(HFTK*d9)#*GkK5_a?>5rl3uhtT>9#917WU!Y4WyTqaCxV_LB-d+{nI zWk8yI`qoJ)y>7TKdtQdWWg)WETUusmA@Lc*u`Irhzlxm4#H7f5IBS`0C$m0cOo0VJ zm`(YFpmmxaiomCEZF)^qmJCVGb`j)2Nwm#Y5?zss>!LrtkCdIX z1s3pXIP<=S;M3Dn)XPpSX!g<6&it<3yFvXiD(hy^S2b8|`UQQMzn}jcx$7By{ke)Sqraf8#%* z@}y`hN=l~rC={3Gd>!=hW!)X-_`Gazm0qy|-8 z={U&VsV1hwpcI({)h9U|RqPGR{z_*U!GNip)V=PHB!PUs20(PX6QHa)xQiTAuq&-K zwU)r7#?)h{dMBOdJm^+gdT{VDD{d3B$3WC5*#<HFZ%vTkBO&6dy4zj}v!cu~mY1_9Wdy;KSmAVB8ZruksU%p#| z+p)3^mqN>y&SnU_|F=B9>DX{8vUT~&a!#V4U7mdsE54!`EATyw=~a}QY+n*Oa+a2F zl&y)SZ}f{uS26KlcR4Q#%JQH?Y{lXvp=Zpd8E(D6-3M@)Q3=u;oZy&U z)0XGU4ba)MNJRM-2e7p$Q;)sQa$>Y&c`26rgypo`=ew-nkg)=ED$;chCcfoqIR`Up z#6RJKiVaH=PZ#jm9!_$vm6qA=Ef+7Fk~Ueg;wV0IC}htGpXgw4nJ}@9X~nke#jDII z1JdNvw@ymwb;Etx^D_J`OOd7C(lSfS9G@{9=jFHYS5feoSS|`5&N|PwlUW}zroaLq z%%*%o^6`hjzHJFDKEOQ!xND*nX9@7IvNTxr4flchzh9=Dv(=W*y9RC3+cf)(y?lAN RJz0;lXu4~7#Xf(D{sG0&ylemf literal 0 HcmV?d00001 diff --git a/.licenses/npm/@octokit/request-error-2.1.0.dep.yml b/.licenses/npm/@octokit/request-error-2.1.0.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..845bdd149ba7de75d97b15d1cb7b7903f590a863 GIT binary patch literal 1377 zcmZ8hTaTkQ6n^Jd9OY?7BH7DZ^Hc_$iB$rTAv-%-?E?WPxCNYIv(rfZ@%?O)>9$g& zz~P+lb}TQK%V4N_xu(Uhy0-ccWj~Da&q*4)l;fz!Mesw8M(JTqpI4t&9|L>6pnJIV zftmWg8n0_&u951lGKNlg%4ZZd7f|cLj_NpBJ({_B zFUMXP=ZBP`R*v#`rSn(~RyHA>Mkz_3sBWwAEJL!Is^Ll(B!B^Zw3QmvaHfiCka~7> z+ZIqppX^&TN(?lFAat!NU{a&&sh5MTtm8bXP8xc!@UbXv6N^Vr)X1vyh-v_$r2A)j zQ?}KUMVba?YKIe&8tQIpoR<6NP9e;h#f|$!j0c2^$-s@%98#|vb#njGTf9uiPMJ2O zMmcz7g-+v&enp}4^8q_GvYX`rMZtsj{jW;j=kh{U&~b~*xXK&${$EFG)^(c30n`Wy zU5!SBp80oKTUT)|PP*&#o3n{kHp+R&Iq|Mae6EiAhxESY12AX{*?t9nDPGLH?b|2Q zR$WI&c?%HSYVdHbe76R-)6rNQ3RQJ<(WB@6zvb0U$Cgo%Z_1ZQFyaO6MgD~+ETKhI z;C&I&3op0%p(J#OC@Wtn-%ymj(r-LVLSkR{f)xej!t3C>eaac?Jd4vq!n0?3!fck~ z)N`DD0GBzHAicqHhS?46n25JPkDhqS%h%9@ZFreE>`g8xqJ1Pv9v{+3(EcFydBGqf z0d&T*jQ|tdv8-Hy88u>G@Iu8lN>fMY@uCBq2&a|eeE%x=^R}dIo+b>%CkBPlQ_5yK z7>v`1??OtVUG(f!3d(^r`*f|dQhM1kS9ZJ+esRh3%vp-_tQ2?+;aHUK<1f5mAw_~0 zE}V_Xce7a+F{Z!*Ak1cLMso4{z}~ln78l?F0o*lF!lD#-SXt(+x`z9}>gStDuqfHF dRo|d(zMB@`u$S)-w=3&$5zJ=|x7fGu!9Q@wtf&A0 literal 0 HcmV?d00001 diff --git a/.licenses/npm/@octokit/request-error-5.0.1.dep.yml b/.licenses/npm/@octokit/request-error-5.0.1.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..424f87e34fc92277dc892c8faaa13b09d8f6914c GIT binary patch literal 1377 zcmZ8hU5}$S6n*DcT;*v-BH7(aeQ2J_fHSd5ATnfUN2`4x-~_jTQ*3q`sXxBQCYg3C zMG9Q*Jzv-Ia=8qKs+Vh8{HklK|4{bBDF2+Ku}e9QdRzqG1*7Wo0Bqg*-F~+lG1rT@WohPuA@4)mLBRy`sw4RU)}}Oda$E9PF9a* zZr;nWSH}4vWvG>-JYMNMR)dvINT*Rs(kH6hYCOx3tfp$X(gg`%Kp$qR*ez^4Iv0!s|uLZ=z8kqU@Pl5PpXrK9xQw;ird8E(GxYY>O7(vfGFwy znckFb^<qed2zw{O_)3H;g z4XIHM9$BH&xT0TC==^-ZPL1qlc|cL{;C=tA()YQ%kQH>?A~UY?hQ0sjNX@!V(>Q<{ zA)%|$h|n|tE^F&5&c#W0oqlsRvC2j{?>HykRf*5lQGb`-*L(m5Z6VvQz%Rv%nYVrW zWZJ6h=qPUif?Ew9&Xw=h;C4D1i$kHRjxKuiy#Keny6M<5D)LSF5(!4UpuNaH^Moa| zhzh(fLVDrlHb0bv4iRPLE9D!CvRC?zXGuux%U-aepj>zze78?IL!D=FdPsQoOi!52 za-4dOvk%}hrxK($ILVmp?VD=?!*>@!}d*hXpU=saF@fD_@gQk?H!1%KX_w9V6mq4>n0FnUVa zOb3H;8u497NwkZeok~GDkY=B*byi9*Tjt7+H^MJ2d7e2-ah{a|uOS?Z@_qb;7c8Vm z@WO?&5&3R5>mtS!SOA3CjLk?cejnKTmeAq?JRpF(CQ4Y80uL+8yj9n5A6WhOW)dt) fc5Kx*Xq)e*#aHa*+r#b3dRzqaS;H;%^;_@{fMu+! literal 0 HcmV?d00001 diff --git a/.licenses/npm/@octokit/types-12.4.0.dep.yml b/.licenses/npm/@octokit/types-12.4.0.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..4b77b04ec26de61f89cff394c54d5292fb94c8cf GIT binary patch literal 1356 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 literal 0 HcmV?d00001 diff --git a/.licenses/npm/@pkgjs/parseargs.dep.yml b/.licenses/npm/@pkgjs/parseargs.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..13fa21a60e5eca6753711eb9d035f44c78f98160 GIT binary patch literal 12267 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

r0>Hpb)7=-`KK$d8Ma}0ksfDKnTqW$|F#r z4Fy2^h808ZshiqKCDm6IQu^FhE!{obpiwIZczi7T@NlZ~cUsx>;O z!Btxm?)W$<>UgL-m*0b0`z8pXe&qdg1PH1JS_gJ0G9sv(IR+zMc7_&88N`h@Hi1KD z#jT)go_KGB*%w;`3w6%R`HIl|Lyuoe>BaqzWv5D~58uK!Tb2B!4ZN+yi zL@Rh6Jx>AvM`}{qg>5%6PR9>>kUsl*E<@yHsS$stO3O%Zf55v0ST1t5MkT{9KcYXz zGV6Irm_cPgSO#?24RKtYQiw!Y1~8}|w}i_vkdZfd8xd8;RZ?oW-cptg@eS_f-4br7 zFf-``)~KCW*b4BoL&uUy={ z#p@Nnn!m1Z-=O6J;$S>j0arE%q$WlzHn5UN**L|G>X>nIr7C5aT!-tc;5r%XblxfZ z;NZvgK<-&bKc^>mKwgw2rpKO)GcC4_@NUib)foArMm@qc z9j=5r>?iR!TKH{OhIgYRI4rb)8#;R>D6Bbn+rpPXw10vE&I4G)Du)Td#z1Kk!Wk|r zY>JC$fFODXulyjF1^N7wNQg#`+4956Tqj)lGFN*hr_R@7r>PR?;~tx=S&A!@2BwC9 zqn?nIiTm8;&>biHin{?oPd3Eb$x_|qwgG+Q)(IbhGDTC1lnVycVTBx76n6u_rYrE4 z+a!mfOK>%z9^HWpgRl?ffRSF}C-NqlXCiyh7YRaWh@F!%Ft!LQ^E2Lw!X(Edqgr&J z__!K{kG9I2O&GtFEL0>RIgV8EvXy4{fA+ZkA1PV%<|Pb=@c45rE2LDgQ^6#()Uq81 zh}cgGQPAhnSKEoNaAk{8D?Ekw4??vaODX(>pcK*;Gf$YtgIAS0pn*`QaT5=Y z$Ib@`jZ0{>NRt)~645e*CPzsFc+mplv;n9*S03#{FIhGscF<{c7Dv)6^Y?$8{TIc8 B@y!4L literal 0 HcmV?d00001 diff --git a/.licenses/npm/@protobuf-ts/plugin.dep.yml b/.licenses/npm/@protobuf-ts/plugin.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..2403c7d34da1155ce8232acc686f048875a5d7d4 GIT binary patch literal 11026 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 NERLkt=I{SF`!A3C|7idK literal 0 HcmV?d00001 diff --git a/.licenses/npm/@protobuf-ts/runtime.dep.yml b/.licenses/npm/@protobuf-ts/runtime.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..14e75b5d8f9145321f001e91fe61dd9646fb0929 GIT binary patch literal 10991 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 literal 0 HcmV?d00001 diff --git a/.licenses/npm/@types/node.dep.yml b/.licenses/npm/@types/node.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..5f473985d83495ee675525ff2e47e8a22744b92d GIT binary patch literal 1454 zcmZWp!H%Oi5WVvirJQCYI#JJQl+)7SbgU&10h!*`Y7PXP;1S@+Hq#qvKYpJfAv?QK zq{QW_SMR+lczSyB`mz&iTKs0O7hzVts>Qg$>cgz`$ui=|qeWG^jB44ssw1SrcN#%ok3F69}OjkOoEUaij3Hp6jQscscbMWVer zr22nntA$u~rLjV<9^|}MR-!k6?4-RP%-VY*qXu0Gv!U82V%zL5uuWvG_bTt3}z)sImvDpnD2^zIn;lPe#sF*7I>4F<{_f1f&4%ai*Rquk4IY^7;@s-jDs3UOyiyx69Pf{>8~N%2nU zhJxgse&PIu{@_Vo4N4aKIRN}JPG4N#FJNgL4A_q@!)t!0A8fz8s8u}L;Z$! zEDN{j5WMi17w`TIxZy?OdTi2+0@?>z!NWrwWVAnI`!r{u69GQq$tFWLwqr@LM0do9 zeZztBZ4k$<<%}5|pel2`DNOh88Gqdtv`yoPA^5_;GG)DmLDIN&>1?3_ZY%J2#405CaoqOn#AmFY>14!b|PX@7_NZ9=#O+ literal 0 HcmV?d00001 diff --git a/.licenses/npm/@types/tunnel.dep.yml b/.licenses/npm/@types/tunnel.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..b3636b02d4023c7413ce02ad0263e2f904ce2990 GIT binary patch literal 1454 zcmZWpO^=%}5WVv&Mme<-n^f(MQ@!A9tP+R}>2_81K)?i7fRSywjnp6CF(jlPQKZD< znK$pf8F+Yj@cN7Gl#C z#tOaplbYAcQuGEvJ85qR6L=3`)Tm2g0*F~ilZ<)*R{XR9{Cban=g*$y5YGVK5)9RF z(em6_cvHTGy)3mds`RMNFLjTSSF3r<7xovsaTh!O3bCL&4HGkI`l zJLNk6&^zRFwa~c8D{j``%H*A2J?b7QplO&{DYSHA@LiPFMVz8qwXJ$}l1tTB^Wp~g z3FnwnoYW67X`DBsR~98qW0?juk(#&QdS#lTZQ&%YhGKuTA47|AH<_q@JQ<4%Ba0Sr z!{!I)ANhZ5T)v}_rQ7_Oa0)Dg15ZD*h(@p?8J<@@JhOb49&^A9PLliu(k+nW1wOGP z@_~LiaGGV1@`VfAA7V!FjwNAyj9Bsnk653i_;@gUNDw?v!8N`@GK%$E*i#oe1F*mTWn8qkEdo@N=?Pk7N literal 0 HcmV?d00001 diff --git a/.licenses/npm/abort-controller.dep.yml b/.licenses/npm/abort-controller.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..492a609bb144972ce27dc406d2b952a9e0f085a1 GIT binary patch literal 1383 zcmZ8hUytH85P#378122>NddO)LnYq4!7Nrof*f;nb?Spj3~`mjk?q_TsUN;$2lmvH zkRX$p-@h5LSS*r3_G%6CY^-0@X7JW@owCVyWt}#|8h%?oFP{^C8?kE``@~IsFYRp& zWB}cdo$A%#rN>?{7dY*RIK2W1aM=eM=)o&{k+oVTt?AV$uZY%qKf3j5b=AI|&db{L ztN!M^uBBIU^|PW+R>`JUNvCTyI2`Y_e>}K#vH)i$TPwGQoMp7AXaeBXKYk7W;xB+b z6OhldNi1Y$yjgv1J$$aez^~80{0_p{2?}|YuGPJq+YZY1+J!7YJ7|?v=NnwDL`O{u z7pqk8UANL+RSMpK9BwdTdLfXrmwM2{6(rP17kRPUw+Q9T#lK6daG(L{oT)V$Z=f;t z^dr-Y?v#VizE$v4-6x*DM50E?E+Xmy5fwaM!#f6QCJ$CQZ*?7Zli~{MZfb&-$LmgG zg!AUYc+A2@Ky)!VbQ3hE(3?hI!ncYR$LZW@*QU_u0Dqo5cDhiEi%El@m9gMdH_Jm5 zjUJ-!A1Y&C$P2SV9rwswsJ!Ei{NItDbzLSqAT@@BU5&vABlF*?_MsA7T=0C&d$5Ve z-00vPuOqq=_!_V3yNbT%)ei>mZC*iKN)$71`~J$cvg_ci?g1h<#*L*2`LKp=r?c~T z6k2vL;_(OGpDi!%I(8JQaw|@RQ(zSwc=?rW=mwrhh0jkZoS4{^M*-NuNg>{#+yW`y z;15=8QlNhxIISuudDOu6hn!KYvm(on8&TJ>}UB z(a8(TnRrVh*p`VRU~fwf1P+7?mK}4#;c(=KvZ5$sgU|&lwj7!0o)%(>%vb~Z6(6A5 zkvtD{5sw_v2@hH!D-Um+z3v3;%6vny_(D-3dCBQahX%8puzd;}vL~-WC5IA`W}l&T zR*L^JG?W7`!A~YwSp-X2SqP4gDLUrjWBkM_ngZdh3gK*dxu4C3h;a&85C~@rIwOVn mV_+X!!j=%=5d(N=f(<1(;^E4Q54(?nWinq6{u_P!EBOy?iL%uI literal 0 HcmV?d00001 diff --git a/.licenses/npm/ansi-regex-5.0.1.dep.yml b/.licenses/npm/ansi-regex-5.0.1.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..9e6d3704a13a2b5bb20dfac09743c8ba996f07d9 GIT binary patch literal 1308 zcmZ8hO>g5i5WVYH401{U+3g;BF^Xapn~sUfl0nIv21O6FL|a@)q99V67}y`bkF=6@ z3mAwwoOxdyXR%mBz3kMAWN-CiR2TIYeN&^=reD!-%U_qDB6l5d-w$16r>>LZbwxs5 zrdE!m-iA?G-%MvSQYT&2=>9@UR&Y|bl7phk)XGMU>C_-EY8AD*QoRLYr``L(uA&85 zGmVw9E1EkZBB$QmioW9;(Vmx--e#jvSexNG>PzG3zIvcS_w}f#Fk>@W`rU@34X4kS zPU?19neGp||L=t_J>0+!YV7pQiMG_JQJt=I8D;NO9n*PKip-g+MvfO1lQYQcN&|v| zb#ro3_ujXJ+u`avT>}_v&hAx0mF#Ph)|yI7;8AU=sZ+g^E+nU0W$E5EitdVe;_e}k z)JnFbd!Tt|GuW$kjhP%Fc{l3HW5j5x+Nt&$-mhDYfNuRTez|T$) z(RmtsP$Cq})CQ3S#;>Y!zT%aiP1~ARZ>=(Yt-W9DOIU#t*Yae(`7L{2hTb^H4UvaO z2tsZzJ73vGLjOt4p@AC_`_j85IGj$_;qf){AIumy|8I3UYuGU=@@@H?2u8f1gUG+| z4cpLNQs8_S(=#u3`LQH)h$JgtDBt22@mXQBP%en?4=HD;@ob$QH#~cy zN6ck8HlJhv0b1r%f^df740BuBGqK(QIeFwMFJEHX@-p+7TYx5XNJPok$21XiIEq7F zFwk!RoAGQbz{2({E0Uvas}qz%un29ly5}7WCGaKqtV^C}-o`r5N`Yexm!kX_edYy=DG|Kz zfow$%cpoPwd}f)S%h(OYM;%muya-x+U`Lq#(6V7k3M@QN_EYmRx@`#l2mSp|^aC#h Br8fWo literal 0 HcmV?d00001 diff --git a/.licenses/npm/ansi-regex-6.0.1.dep.yml b/.licenses/npm/ansi-regex-6.0.1.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..9d968404136043cbde4b4ae7a910bf015ed3f2a4 GIT binary patch literal 1316 zcmZ8hO>g5i5WVYH401{U*=a957)4RVremVAWKi;^LD2&((H09y6hvwh1O4%Rq?L4c zfdC1IGw*AtEEbEXmz`RX?5$pm>Z0DGuWGc~^eg&h`P1^}$Xy5A_d^%isq5r;U6D|i zsg)zC_hD4lH`CdS)Ja!0y1!786`Yi<rkt7t*i zOk<_&isp`p$fPzG3zIvcS_w}f#Fk>@W`qhS`4X58P zoz(5JGTm=<-#9ne)#Ky04gTuk26|9qr*Dq5rACeFbfwEEd#CD{&ZAOf&QvvWyr`I* zL2g$X5EvpbCnt69{Y$tWuD;VXfU)N6-Xzq?z9wm{sk8(h)ux&{)jR1zg1S|f?p>qk zu9zq89s)_NWJ|gSns+#Zy=m8&$q_c-MqPP~7)@0>)n3ELb*mBdjlqwH#H?37Svc@I zW9m$;&;GXxwub4{YTLwAYY%;z96GHphSkO1$0PP_Roi+54c)=(|LQ`IXF)dLpCbyq zZ+HveJ3&O}Y3xCXP%u*)L>3tTQI+!*ul#J<*1UOZmFa8k{o>t(r%>Wrp3GPO+CCmd zZye-?$iotXklSYGE89ruKdCu1a3f-0`mh9t)5$t4UnBp)jDhnAih7OoT0|E zb$Z;43+u_gYhFgT7lQvq IfBhZ(2XGar0{{R3 literal 0 HcmV?d00001 diff --git a/.licenses/npm/ansi-styles-4.2.1.dep.yml b/.licenses/npm/ansi-styles-4.2.1.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..46c8296af917a412c79b118fad18270d2a23dccd GIT binary patch literal 1313 zcmZ8hO>g5i5WVYH401{U*+q*z8AY**O~*uK$&lntgQ5poqAe~Y(GaOk4fMzN4Q&Uz z3j|O&oOxfIWHy^cgX;By)Zom_`Aer=^i7Y>*kM7R=D*E}hktbB5Cz&c~&xD*T&tk}pl_jp8{5jIyCpcB4$kB84e~$RF>wBDb$-*Z5me^u>NP0@$&z+O{zb0D ziXM^@=ZBbHWwpuo6``X@vg(cUHU5g;=uergViJGt3Q?An7bLg4R0`B&woLacnZ3|6 z=CT}{FR}jst#YbBc!QDxb8Fg)Vz~iw@+?zXy~VVaRmPZWfF`s{ib^i`X;RQ`U+nTy zfPMwoOlIo>EMhCNY7SP^NPNM8%1x4{fhyTUeG&96^W9q^Up5tO@^mFod=^laJg4GH z1yjp3k=vM7$u@ambp_=RT!glpy4Q^eCGaKqSynR7*v2x?sshItE{p18^i`H3rlgQ1 z2eK}5z;m3K;LI|f%fuChqYkP+UIZ;1*dC@ow5&vu0t?TR{m?v*t{Z~?L4W@f{SU?A BryKwP literal 0 HcmV?d00001 diff --git a/.licenses/npm/ansi-styles-6.2.1.dep.yml b/.licenses/npm/ansi-styles-6.2.1.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..88000272f792eddc637463793f9ded6eecfe3671 GIT binary patch literal 1321 zcmZ8h!H(K65WVLsMtj z$D!122G@)Tu>6;w!EgKruoeX*m)a-<=C(f%=2UyQFCQQ`T{URP?NE;nKDuyp;q>{` zD$`6$+kS%k+WX$k9v}ZspsR-q=!OJ4vH*;OS`YeghSQ)rud5i2gVtb=P}XWV=@`64 z^UlztX;@$nUYU+uQ0Pp5rc7TWjI&4os!*NkDp1bZ(kR4(%9dlRJFh(P9Ssfu?#Z^h z{91AM5J)PmnwzD!D|j`&wxfqZlj$X4#F$hzV?`Qn*Ns7=FAM}79CM_6bl3sujG?ua zInq;yw)*kV7+1$o8G=5H9y1*U!{}n_JGh<|Cd%n4zZv&$bYpc@V??M zgyp#9lGDd==#Uak!J5jVWr6XBEz1(Qa=t=j_9PNf>|I zVG=f5xyf>l^b3SdMY@#8!q+@4rpSsh;4gT9e8rL^P_ZqlmqFh=+w7%yUKOy)k_E@$ z6Gvt2Dd86?Y-*k`v5sNE*6f+oNyt#J3~5(&yA=;1Px# literal 0 HcmV?d00001 diff --git a/.licenses/npm/archiver-utils.dep.yml b/.licenses/npm/archiver-utils.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..dfd45d487a14fa06a71f251889c9e70439585c9c GIT binary patch literal 1354 zcmZ8hTaTMK6n^Jd98F(ZiDbH!`jR&WoQbsrBI9&As`i0^3GM=pY}46D{qa3MWMGcm~SF_iHi}1>6Gi~7W`s4aj8zi6ZK|Pm->vT-usK&+~1$I@8{FHG2{KK*mw7Kx#+&Ls%}RW4Z2a2 zL-45m>y6t)D{yAEjdB~vdCH24MF3v?=Qr?kg_i)Sxm>M2_a5FiAK=r+zdl3STkSyB z!@qhudo!&gnmi~wY8OHRzV4M(rz@OoJ$co}&{?IxbkOv*J*ybJfqJ^a1#2-A;myg{ zdO}L5p+VI!?R%thrt>egRS0OIcFr`qMowr=GmmQWb!dwyIz1={?|rY}uDYS_K9E?e z>H+kGj0#>~!3#EMW=~kFoVS{qk8!XW<~De_jliI>IZ`4Ds>Fp9vr{n<1kW*yrqx~e zRuuCxp9byv7+M|ZPqWADE$D154jEduetYHmdKloe7+Q)%4_JM8j3rS#Ogx{Q$HSp#Vq3(r^vcS(i!cQHJ1xhszna6%-7e1>uhN%0JS^CDZe!@eE_t12i3@ckj@ zEQ^5`X@1Oj@dyuyElP<$f<2c=EK3NYH#*KLDhNsUOr$$hNFI33<#P;ME{njsMdAbw ziI6-!=81sAQ5?#Op^c2dMOpA-D^QK?Ss~Y`j*`H>;0;u}B+p4QIbsq)KGX8>EcoM2 z5`I_a8N(M33|%G@A48VxlSf9#63q)5TU-*s(~i+&)J^b{N?sPBr?f1j zz}py83mFO`_!F;K42j?sS|)<6C{ZTVjHu9K5wHbYn8FGu!P};AB$Rl>5=ub~i?56& VIdbCair)b1XgNXnXY}o#=ofURr%(U@ literal 0 HcmV?d00001 diff --git a/.licenses/npm/archiver.dep.yml b/.licenses/npm/archiver.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..a77839374931f0977febc47e76818e5253643765 GIT binary patch literal 1373 zcmZ8hTaTkQ6n^Jd9L>|NM3UWArAm2Yh%>QDAOf<}QPl?roZv0s$TmBTv_HO|O|n%h zXgiSV{ck8ApM`Dyt%aE6J()(@HDx?ydBq|kC;xV9`mw-IqEugRMqN5bADWN!<l)6Xqgg za+<_=qbu@)PfxB-PN>nxA^?BA`D)hz%IdRw7e=C?C1I^@lmI5Rx|s$!x;ZKjaaO&w z^ucwKo~nD-)5k#8O3@>4AWC{1(L2J_lMD1lVlJxjvBxNE`l50Aj$-TKWiqS$*{VfI$`{R2h8L-78u(opBw zkQa2^V+;K6xFcRt=>F*pv7IL~f*L`guhob#Fn^Pc^E*C>v+jHS4x4xCu~ptb?n>CG zQ6f(IyA1P~FUF`Hq=!+2;RHeR)bB^O6MavoSny?IgNf3fE^fa`)h=^c)?;;j?UF1D zl*tiJ%AhkX4sRuY+0~(cS7aN8gJ%Yn$#ceLN|;Qugzsb8B>Uurh0X%v%TP9}3;?e? z7Pi5g;FZ?A$bC*}k=G@bFQ1hE_zq9>v5jh}%0i+3jZ2a6NFfzDU>4 z=e5+Epk)&cvJuK+<0#$zV7Ji=rVblA zObG|{*>S0)x&TLO(=`BMx9btg>dw7#BSJFVTHQ#Fn9%BG9))t;=LVe|goQV*7w}Ns zCLZ1fqE_%BAWDUZ0`AxFiaF`off3dj8S;-os%Ds5ujPI{NQ`Y^@#7&78vxP8Y|)L^ z9K)zv+4*k~EKc)zkhYJZl^*^)JM6T+7?u%xKO0=E6~iJAQ6zc@zJIF>eLgSD3U%Bf zv%d0*FW^r{a?#bzMjC7`qkTPv}$E|d)sA`HD2?x{w9L2 zW&cV$lpR(OmJ-A)+rC}do(}_@#VtVOmMVng%Xe$&c0OB&k3#YRCT*5C|Ci99j8=?#K=vk_yicF+9`yP@ZbQ4we-43zU0EiWm4yi(L%l-ygG`N1D<4B@SSFS{ELB zUouGGn6R3rrz~M`Jh5Y05tOk*=zmz>ZE^I9P- zk1vcq9cnm~*^XfGk)XolF(V5d8cef<<}vJ&JbCge8I*{$`1GxdQg}WPU-rBSe$twj zg}0QJMa}RSqhnV88h@r0i6LRM^5N`RnJ;F2#5jd42!yi*S&)4EA+TRt!WJLk2?Mxm cf*naR#KV;p!K!b#53Hl*_24hifB#260i8RhfdBvi literal 0 HcmV?d00001 diff --git a/.licenses/npm/asynckit.dep.yml b/.licenses/npm/asynckit.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..905e0aaa9814305a5cfcbbace895644fce96782e GIT binary patch literal 1449 zcmZ8hO>g5i5WVYH4AM&iD0W&DJ^04hbWE%)8Iru&py)v#w8gC?8X~n>1N-CqNXcop zfB~DsnK$pf8T0Y+G3bjSM&qF zi1J3#UgQ)_^>mNJL*TF0`f?rAxv_L#Jh}ZkXR}*XU;ZF_LEp=F{;o7 zK&XxRgyih^hJ8#4DbBzn47hQk4QCPXFtYeV?yX?)-)AZ1Y_sQ!u7)Gi!^GS(`w2^r dXJG!@)HL?B9Q+Qu*J=(gf@ux$y8ZcA@DI8Q$D;rM literal 0 HcmV?d00001 diff --git a/.licenses/npm/b4a.dep.yml b/.licenses/npm/b4a.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..6f2d9817e07cbad23462e367f026d8c898fd74c6 GIT binary patch literal 12295 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 LF46z|%h`VcEhm?n literal 0 HcmV?d00001 diff --git a/.licenses/npm/balanced-match.dep.yml b/.licenses/npm/balanced-match.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..1d768a8e66910dc7758404240f229b508f92b7b0 GIT binary patch literal 2592 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 Gc=lh#=a)7B literal 0 HcmV?d00001 diff --git a/.licenses/npm/base64-js.dep.yml b/.licenses/npm/base64-js.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..6f5707cbc570fc35b32c2d21e413cdcf0f85dea3 GIT binary patch literal 1386 zcmZ8hO>f&c5WVYH401{U*=~yN9(=g6`z1Zj|Cm1p_Ikl}f9V1_6dmJ7Df3?<^>!8k! zrTglEK7M%oM4#c-=pNnHwsLAa$e~llnI>hZk%KI+bRI-+WgXIKkdpL?szwZF8Isi` z`YT-!69#l?h3b(4393NndC_efKpB0quL6OHz9wOeu9N^K)w&ux*;`>9=Sj8F(7lC^ zyZknB_uz?YDO!(+WZnJSHN7HCJz5&1v4g4{PKfxcc61wgzit)6oLJnr&%$^>xEKxG zIL#q-Smeq5m)_!KEL&xokZR@N%h96KxT0TC==?17Kt{HcJfJ9e@VR=+x%mF{chyyKmCR|T#`seefC zYg&D;EoA!@_@#I;)3$F{rV(vRrMv|QZq<7@SAMeww_|B69)%JuUG(62f44lp>DV#K z({1q_WsG=Ehb;ZdH*7<9QI7LnNYA|3rN@HMkwr=ILg|*GyWWLr!@0A z`2G-chB{By@o~eGCt6`PN%87Ao;!exlnRjE;5ftVmi8=L?|>eyc+88J(1UGxkvQya zno&fDC@c8-7)Kc$j@cp28Dwk#o$zFvfr;%|Qp~}O8nLf9P`-=e*wJ~s=m;m7(@N{~ z@RISTT|v7v-Y^tb3<{%F%qBV*T*ndLhqQ_I(UVh|Q3|BVr)!;*(({hFvg3{Lw=Q^^ zI7{m^DKZ>GIL?aq@n@d1kfMy|E}U(a?kBS@VoZSrK$uO~gyiD)fxT}DEiS+#0(jFz q8y3aD!^#qG)it~g%>Vyo%2>47vw2seZTdE0E5Y=<@ZtLVTks!Y(5?ai literal 0 HcmV?d00001 diff --git a/.licenses/npm/before-after-hook.dep.yml b/.licenses/npm/before-after-hook.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..a1c6b849c8d6058b7243a1e4e99b97f839ef349e GIT binary patch literal 12307 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 X3HRFnb{d^=HaiJ%fZO%I{O#nwZ|s}X literal 0 HcmV?d00001 diff --git a/.licenses/npm/binary.dep.yml b/.licenses/npm/binary.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..00e43d5d788f0050755b329347a0cbbc6c8d61b3 GIT binary patch literal 179 zcmXwyI}XAy5JdYu#a_TsB)aX8NI{VXK^0LrVFOmOYs;TNZjTEnM>Fq@F$UBM6OK-8 z++pLGoL9oOIW#TgJ=9KvKq?}2KzP$&rv;^~*^PVVABme?3n!eT7aYqxR}s9taIjA% vSlz^$s!Lq{heTj7`4T5igqQAk>bs_%ED!%yK+OEfg#Gyn>T~7mXt=`{hqyfa literal 0 HcmV?d00001 diff --git a/.licenses/npm/bottleneck.dep.yml b/.licenses/npm/bottleneck.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..af9f462b3ea5ca5be011377d4f4357fdda94ba3c GIT binary patch literal 1318 zcmY*ZO^@3)5WVYH4ED4OXx%1g4)IMZ(QBfzWKeRpi=qcvqAfO(XpmGk2J++cNPFGp zWRWxTzJ~DQ<6|^6qg>KnJ2%KlwqK)f(paUZC4F3c_`LWOx$_AP(`k(CJdTYyFDX;j z8MU9C?8r6tE7`V}-8@J`&D4=;oTNdG%1IOTdX%T;D3{ToS~*!@q40jN%jl7;o=q$5 zl5(E1qGAz|li%Hve&CC!?j>z_P5EV>?s0gCLMhd!vr)(1(S7?sAAkSw2UTj+6FnO} zb!xhFZKWBN^`=N!>ZOtUGaXGcL4QmKBPHnrwS8lbGA5^C;!G#RfC0UCjhfVSq=s6s zp))YM9#B>v+*@O0aNSs|TLtSKb-JBLIl0Dp&Vw4HrF#b(chz;`?jaC$vKa_6y-i<# zFVmZHy`CKz>630fPK?HOnBnSpD~FITEPgyhVc{SE&K7RG=9os^se}KO!QyG&56bp2 zb+<*vWc_8>Q0)EurVUv+3?4y2|IPP*Dnp;o3t3^O*T_6Sy&D(7K61{gklh9eC-0bx?8GKzfKWPWqVFh6+LCj^_*OKiU z_}I&9fZ$gX;VMAB+k@MAZyg?m!cI=w1YZ9z{=b;TRmYl9Rj%rnL@?qNZAJNoXDp+; zq{8_wrWanX%Uw-VjEV}3ozr3*cTkAS|@oP=#m{=h?~x|+`bC_ysl|o<{3lbi9uoVlrsu+ zFqq~E-^7$9o8;N66jVaE2yIuDFKgznF4ha^p(L$&S$IonS=0i@7>-4K8-L*yizyMj z^5LvR2?`%CCcwapfQ8wDU66eI!NF}yX!8N?5Wr1S#*!R(SXuE)^CG&u9Q-By{ZI50 D%Uhb1 literal 0 HcmV?d00001 diff --git a/.licenses/npm/brace-expansion-1.1.11.dep.yml b/.licenses/npm/brace-expansion-1.1.11.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..8fa6cfb3114422eeaf20402cb8f97e1fa8892f45 GIT binary patch literal 2581 zcmeHJO^@P66uk2*p60NckqlyiLIfoAB$*vK|J8AUnxqrttg-N@Zu7AZeI)ooyR zM~W0BbI4%@68O1ay{hVV!FW6#wOJ!(ly_Mn#^Tc3~)3 zp&9AEX|nD#qX*kU*A~h&{n4spOS?`rq^oJ3>1tG|MjWy|nk!=tdN!TzrK$RSQmAJ7 zp|54u?z=u0-Sj1eS{9DOM zj$C1`4yR7;D?_)%9ew}Z{SWlB8%&RGGW|I4c=sh8%kQV5e1z(6#p++?zq?Vd6!z{3&3YEuD9tDQM!oj^kg`?M-# z223hd(Kn(snXxl>vKE?dO(p0iId|OLxk07KYKJIWAPTzNrXxI7y`fHM)5*f(cqH4R z?n}$%a=VuBc9>$@ok`jOLPf8k#&Y(kQKj73PvImU`n;C9@~D&+KJN`yYFl(W=2<;c z)sYtUKo2Mq8l3LWEZsWm7rX+Gvt`;=jyN`7E0P1RUEj4B4U@2{RIt!Z{vZltD^|r$ z)wMcWnT2XgX|?0nI8`ZbXSw<)oUY+aw90_C+XA;Kj?A#z=UckU>Y8$KHW0I6H%boj zA`NQ$TpJt;nbmYqotyho^5o28#VCoE>60Hb;t6fy=sjPs1>N`wu5Ubg;^`{dri2x- zAEwU~Ey)j`=@%X@JYv6YVwNNn#f}4CZvxIx=ixlqE_nDz59kdeJO~_*1Axu+ zbb`sK5qpmdN>+Xl*l`Ze-$F@jxzaq^JjeWTmC`B-77WD)28RAaz=m-UI1hZj_Gsa+ z{YT3(rU*!bPP=qqN>3|h%XY4h_dMlMXeG^~FpY8PL2;a3+n;#CJo00nSaX(fv>wD- zi_wKC077rb1|)00GwixcSYi#_!hj1WS};EV9=0sJ%Dps9z6`3E`HMB1G$kB4N7dMw zbBo=%`-ds@rZ#W?CaB)*&D+<{DjZ%%^7XO`56&6!a|&F;=-*@&o_PoOI$32?0XgLm g|65kki=1+h-?9q7&fl`?|Cm+7FCG3;{r3ClFJY1+i2wiq literal 0 HcmV?d00001 diff --git a/.licenses/npm/brace-expansion-2.0.1.dep.yml b/.licenses/npm/brace-expansion-2.0.1.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..e0a1e518dbf00989de03fc1cf1c2aff835204e13 GIT binary patch literal 2580 zcmeHJ(T8R?10VlW%7-7>i(tiA28-aOhMGx}0TPmtLuA(efiUm&UYuKARn-Df?`it9tgS zuOx4dU7v|=_LM;-bJ1vQtfleB3qAKHpjF@HLeC+jOA;l-12E!?nZsZB3t&rA2!~$J z6_%%imfw{$GO--iC3=xV908z425q7&H}jva4| zD11~a1gHb#CGU>H2cv*DXK2wsY*3luvXRXZIONE~5yI7`L@2Ee=EOUJ4F%e#RW3PV zLZR}$7LDP?&OFFUXt*_{fSY9OxVdwK3c)LfC>ul+aJda9^jP%`@7`TwxjS9vQvgq_By@6~W?yAj4o0l3^SQT!sPN`mhSN z!M$b4AV#D?r(HTQg@+BXWji;(&oZTPWF;-*C}nu*qhgj`+aG8`d68IY{~&amq);Sy`$9u2r~f)xou#KSF%u5vF8({F={kzlnY)4D)M#;BS& zb8c~W?*3&;y{OEae+a4i?Kk!ip71obW&x`fr`Y+fz1@QM0e{d<8oU4yq55l-` zKp5z_=JgFOnn}ys5YC!&P-kd5rY}4MtANQHj2I_2sM<0ig}eZR23b8lR@)Atj5^yZ z!$_HIff=J3!4MN#)l37ImRZMn7Ckrc#iEgi^4{_A)f2Ux^&q4Nb@w0FK6o`*(A-!p z8ix~NVbf2o)8gjhu6u!L&MdCoM`E0V$?(vlI?W*rsugGV&Ar8Os(WF&5L)5j>&c>T z;|~3dLg#0tG#K9Z&b2`O-ZS@@A1ZyFW5cXa$2~I7f5kpOe zvqoh8#T)BRUCUYZy}CM^jgqZ!-f>YpbA{Ke#trkcm^VNw>sHl`zz@ZXnWuffG95!7 zHNOXl{6gZ=_a6ayd+2tmjm4!9IFnIn&wIE1Ihf^L$DTl$@2c0RAV5nv7Wp@tkOUs0 z5}zMJc%{`oKUIJgMU+)J34tIyZ5genUqVXw>3h(rIDvo(c zP)35#8O?SDGLZwxswL12&wzZx2PpSZntHnEgf0rNGtQ511%269u+P(k;Ng~_x@eoa ze=N+DXfRGAdI%wj4$+HKSwN1$3txIy`MM|m2stDC#1+jmXD80Hs=&t(-4@kn>nknE z98Xlx(uK1ta-?waVwcM>bG;dvkzDj%{pW;als+&)|P=uD$L6 literal 0 HcmV?d00001 diff --git a/.licenses/npm/buffer.dep.yml b/.licenses/npm/buffer.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..9f0f322f15f3dca11c6a6d1477c068758383f28d GIT binary patch literal 4649 zcmb7IO^@5g8NTnYc;Q@Rc*Wf~hKuZpl*HYoS6`sCyETFwhU7?`B{`#TNXc5{P_&0$ z`v-amkV|hxkOD!0=3?~L!{#6LnW40m%?+H|hRJvM&inDaUo+}Y>s8kybDXA*> ziY>7cX_D6LO+3Ud*2sli!@>S#ykv!gC)RhKc>XEY4@{&?me z5mo$Mbw=Ofjc5*aqhLn#753B2^r^gVr5RgBy9!4i(11QWAiZ; zDiI6wkN2bneq zZjdn_dL$aV7Ii718X$oyQGn2DzT+(axBVSGmdS+C~!%p$es)~_Zf zq^e-H4S@}cHKvL7?vqYgo>Rnk07AErR-9Shy9RITNLNS-!E#!u((3)#7)^(PkM&^OA6^fF@dfp;cRWEk1gHZDo=?aq-H8i)>^-NEANDUH-RlLzVE*>l z3Of(xV!BCY^g5hQWw_ z)LD7nH9QH8t<;}P--f}(<(w`j!-0>*o(~JX-q3H3P*xN({-y1?6LN>Op8ixG_=dfjkzBd^8PLY7EXWR+ub;mSJ^vkA6I;vcv@_(&cnLao{Rtt&D+?p<&Az2qCYKckH9lN^j{c(+yog28WTl2B>$6e{tG&$g%?Y z5lb|OjjY)4D0u?Q5sar^$=3>GU0A#N=IaxGR1fnf*01zczU`ka$GBMQB z5>K!)DG=D&&eBOkwk1yyv6Rsihpr5>m=(zU zm0erCfR^@#0W0nh(JS@u?*xh|u_P)~i?Yp}FhqrI%^AnAuDP?L+N>Gd0C%v}U0tI< z41Jg)Lt(1?T1phkz_$IK)XuKi0-r5{RO=@ek4c&(Tgxq_HwoByKTqUR>)(Fx*KZ=>eD&4@Ne zvp9YKJy5;VF%F_n02;D7pX=CkCv>2=2A*}^mW3=t8uFS($k`YrQrM@<^15(v1ao*& z?;FVgdi}KIGQy$Hz*XLW2wOnwheq1?ys_*%Q$f;*q_^zZX@$TM9vb_~ER?w_Y7-FK$!_lm0YrR1d zVzP_`96=jdTM{@Mvd!H%b-Qy4UD+HWT{{aa6=NVC%(jQ`9{&08^TQ7hKmYOvJb!%n zJ3ajM;U_Hq^vfR&@t22xJ^YAo|G?iLu=r=UrR#5?2_RagI6gRivt~;q^x= zE*cE(LsFG|m2aH}ltY7Rv=xLMTuZ)n>a5n4TDt{{Qz2EcJ!B2JeE&COfl>$q@{6OW z@s85kql>Fmq<|4(`}pd9^Ua}mu?K2i}&qa^w*?!Elt^wsItagx{8>N!A8@=3|S1>_v&#La> zu%(@-q1*g1jzqS>?p|Dt+hXDfwTJl%Qz8X)gSx6P5i&zQq4y116neoWDRbwR4V&vy#GlL`Y(_g4bOUtJGEppRY)i5B#DqNO32v8TexHi9 zNuuTU9+&#;lS*`oG=7Pg;OSH~No!p+^FHn=E{UHJ;_(;f;dWBKSyT%UltB6jWqyGX2kM>jm literal 0 HcmV?d00001 diff --git a/.licenses/npm/buffers.dep.yml b/.licenses/npm/buffers.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..c9d12da9d3b9d937bb14a03060ecbe5f73798e96 GIT binary patch literal 180 zcmXwyu?oX53`BQ*g?=ERSv~d}x|I$}P*Q^}8A~qY@2e8J9Cy4sZki?#s+@2g`_A3q z6OvUD-sWXqz|R&?S_K=mQa=+uI+G*erls)aQAXYIe(jMgkYzavM?*XxLx*9b?wLwC iu@0v-;5C@xt(6-coS@{5#eR1x{7;tf`2tZ7c=<2WKt7!S literal 0 HcmV?d00001 diff --git a/.licenses/npm/camel-case.dep.yml b/.licenses/npm/camel-case.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..c143a6a0cf17f4ccab350accf0050c6a060bd059 GIT binary patch literal 1917 zcmb7FQIDHA5Ps)ZjP_o3B?8x~Pm!t~Nt}&!1R@~aTUC89-~_jTk!?1Y>VEu^>oBSwOQT5`RZFzcRsO;&V|T2IgTz*ztjtRG zwXoXp_BbB)hOkn;aHng!5O~>_bZw_!UA)X6rTl(4*>!fDHK@r0!Invu3<~E z^rbEEfR~pPBVyL7i9%q?&Bzf-9Fo;IYAmLgidI(&ae{MlB5W*GVTHS zhzrO!Q5@TH4lmlHlFV|2Wx9LL=;Nk0t7scNT9z54 zh&1W6p%YVh+7P>K>qhul7Bo$)q-B~E87_TPoE6{GpJ+~eh%%a6bJkh9oy1y;F$=38 z5auRiLbCQd!@hS3L#%;&G~mh!RwRlM4_lTvsW#x65ZunIj6|y~3A!4?E)#3!GO#(* zjrfGqdL}xYh@W3as_2e^ZUk>@9S9j>NceIyF9ZE@{GiRb=zX4dhYk>d& literal 0 HcmV?d00001 diff --git a/.licenses/npm/chainsaw.dep.yml b/.licenses/npm/chainsaw.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..692ef61c67d6a35dc353e2a27d37ed0e241eb639 GIT binary patch literal 178 zcmX|)F%H5o3`KXJ!c0t!%9@dDAO=$$Vv#sioVLpCDXL)mUr$eO7zR+v>~V@DYP7-1 z)ugD$(OujKtu5BHE(r}KidagP8pqm*o=YV^UPN;Muml0c!S zvx~MJLK)rK7cogpXh0aFYb6j98ePwW9IbFZK&yIb;1=0>jGOY3b#v#7HB$6|M&dqP zx8OzDPR|x5Y3!uDpCJa-{oGu+Ttj*_s7oaW;k`0W#cWWG;~T=D8`Zjh=_Q`#L$6F1 zdOnSEB@VO2XyZ0~t3s#gH$8!oeeX~dYVf+>So#>O@_ z#VJX4G#VP@xQwXybvFIt?%9X8@f7|%pWKA_q)i8(=24Fkq{}sHU>+Nsh|WNF?!REC YuX|r_FC+0T3YJrhQ}WB#Ac~^kKgM3i3IG5A literal 0 HcmV?d00001 diff --git a/.licenses/npm/color-name.dep.yml b/.licenses/npm/color-name.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..180104bf9cbb99beb1ba3dd7dfdb28820cb3f3da GIT binary patch literal 1304 zcmZ8hU2mf}6n*DcT=l7yNIG5ZzT}O9(^x|wGGw~dXdVbS!6U#CHt9y1AHT;Y?P^wv zl=%AI^L4E(7K>o0dby%ncY0j7-@!$WM(JTiPs^v}pMkxeaX*~d^{=JPKRZ!`$tdr)6Cy9ZKrBE7_|4w z2DgJ*1q(8I8f$4*l=7Hm1q+C*{Ku~7*8)F@%2v{rmz2%`bdSS>zlrtvI;vA^>ArrT zKfXNuMG4TyEAdM;=u6{Mah6FLYUL;oS2~T=U}Y21ag@?KZL9GlL$Vr1uXIL8 z7|;h>sX+}Vs*uI`>N;%;7^9E&y&9!Yr7}j>ssbK0x}JJD*vdM-qv{acy@i9j;x=*j z;7J-;b)*KMN&2{=cOnK+J@9%v!gmp7M;cw{Z>Nf<57=fWY;+a1>N53f9iaXV?j3HzeVJE-|-lJ zcY=tH(>Q<AwH_Mf{NhP`ZoN9_i}ZfxEf3m4u8-U= z!3&u;d%H4i1^owk3k}?e*p)sk!Qpf;7Ry)2|Ex#P`G2d+n}!XeB43xUkzm9N+KK!d zPgp{CQGxSaNUyxy5&qkK(K_C{ZMmW0Iq-U(I|lndh9UCJ41Jd4wP!m}58 z#$1-;U2{BWfR;IxAiP0whPgFunTR()j-GkS%eRo$yv!Wt8lVyFB2n^qpGJaqd$G$4 z2KofB8PC=NENsiNatT({h<(F>icOTJo+{cyz3}?teD@~!%ci7Fo+b>%X9i`_bIN8a zn2OVgZ$nC=ZS>;Q3CbZ@__mw6*A4R}@J0B*$o8dAg;5k$Y&s??ONJz08Weq?B-&yjiGoO7&cJ?lPSe3PS5x?j`d^2_q)z+ML=^+Ok!sq4ge zT~kDJD%nO@lAW@Kx~a8lXeDXe$nln7NcWP&*&-r(f3pl4-N`{*0NPkPnDuIPQMQ@N zC5WufvQ^(Na@FfvEEHf_hhCTVeA~o|mPh*ePFbP?;hK0WK-?FkU;#8b<+v+zb zv(kO7oObMqS5@Fzl=_?Wy5_CGW`edKfgg$|Gf(?=Wg5}8RLYxy=&gDW=fZbsP&<{z zVkwkpY0#tZ`%&`p#$(SYPj|&jlriEt9kcW+-?A+|L^;k6A-(WopPmXrMiwQ-E2TS% zl2`hjC)<$NAIFU4Ii;EB!4JonGsJnaiBDUeJkt|uleD0iA9w-aBBcUNZ*ZKUc1H)6 zZT3Kqo_NfQ*U*FQc#$~lU7F#)evGn$Z%%QP(eacW)0~0E7SIV#b{RUc151h}IwMBx zD-M+Jqd0c$JYIBylFV_XO?rII`18J?eHw2Wf=>(#qo zZNg?GXTLY>eM(4i2A*KRofB aPfb%_ZZjM?48%V6F{ymNp475oEBt<-A( literal 0 HcmV?d00001 diff --git a/.licenses/npm/commander.dep.yml b/.licenses/npm/commander.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..6aa7cafdc0bcca44b78f2969f5780d8850f24008 GIT binary patch literal 1447 zcmZ8hUyq|U5P#=WjP7N3B|>hidy1;6EI1qY2tQA^ct;7jlrJbLCj;C4TBo}RE|yl%iW!qyM1 zFaoq{Cxi8HRwMMP7Qw4t&{nPN1q`FQjJ(rcqdGD0i`aOrtVFL7x07ah(Hn1tXwz5; zy@7;AB+ZEjV8mZ$1ApT`fcpZe_q2dy26*t?a-@dqC@+nH`|1IH`TY0@#UHR!t$OFz zs+oSmujcjlH)(yXI#Ej=RQ$KO_aMejYP$ncLnB5}UIF#?M$|r>MYpp8D5ff@vO`YfspHq{q&~T5D zI*hyg)^+#b$ZEk`kiCn1*@Aaz8Z{Xhg*KzCERK&wRXf#-mZhYXnDESGr{+S^*2SdJ zjn(Tzr)qh&PvI;MQ`t)0_)bqPEk!vQtk!nJ&CR!-);Mo1+SZ~-^x%98SX8))e82PIg%-Q)SO8YAFfC4yZ6Qog@Rg?VoIUyTz(}4$ z#(?e*2_>-)G>wvDOw(t0!rnB)FM;CsfWSot1(M$2D8at1i)2q&v_ppQi6*o-`LLx$ zYH_y+9Ks=F1&xkL$l!2fhb$*3BSz?yrdx(gWKYr}a8NYGbs*nx0rFj#B#tsXq7&wH zM%m%S=<}|CU6#ZI7oP|!44)D*)1@Z|6eS_u`w)lw@YyP5kfC_yN^dG(cEl|qXNbS3 zpjm1&in6p|_&R4)WUTmTf1x??A!IbS0c}}^6gFb)vKgkfHzhNYjo+$way}-7Wj4ek zhVY>&CSihjIJVSnF2%vWuPY{a-HD*95pTY*K7Gfz{J3w78T4kozTh`Il>uIxYxBDP gxNY&WT$imX*B#eJjO*LA_wdP^k0#!P-+y@j019`-8~^|S literal 0 HcmV?d00001 diff --git a/.licenses/npm/compress-commons.dep.yml b/.licenses/npm/compress-commons.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..77c0654d707cf8b9e71bf41efe39698708e25bfc GIT binary patch literal 1428 zcmZ8hU5}$S6n*DcT+P$2M3U{Q>OF%Flk}T3J-%CP4G=s zpi_gGsw?z5YbUeaY_0&!moagYcU#t2Wf-Hi`fP%GHTYfFk4D^ z%+i8E)rx=YmcFm>NEEB-uI06}^r8MppFjQbE5)6bhRUjU)~y;tWE-uPm)R<9)`7>J zgdU`EWf6uup~dA+S6v}~6H=>%Ak|XcRr)GIvWlwlP7~@?qsOa@t>oysan((CH*Gsm z8P(cbr3C;DRmP}VR^X&Y)$<@mTUls&idOb${)6oVJrxhs(?>7Xh^ogbz$obblW$wi z)?=}CB&r=(h{3v_oA*6o1Up8LUddDVf{aTs8xeW}=Q*T7HL`WTg^xMSmtLAKq((Y= z6o%}^9s2ErF4G3r!ic_qXOYO@v;XJR&p9>p1s{*vy#5W>#98v_AIVT#JL?hBCL#Rn*p-+tE{0 z;QcA2S6&{nb4i%UqqKaZY)?`8M!)lPw`_;~amrayP?i%vo)XS>A@MX$&O4sI&@-@U zR^m_M$V(8H89C7h9cP8_1Efcm#|J1x&phGfTS$9erjByL^++#`6(+H zZ0tNZ%~GE3bEvT+OUpIXAxZ2DUZ^-kN#Z4=Gm_-qXPlkha{h8CJ^qj-JBAO>3@)SR zge{T?87C1xhO~>0(F^m)4CZq`wz%{JuLtIjp&Q{RE_s%^p5iPmbG(K~otLg44}awa z3n|KZ0n46XpJ$M9H3Q{(OdU353zJ)cPw-`g2G#2YHFju}pY`gT{M4f}c39Bo`RDnU#9z;d59dB{Q{Suc`bgG;^5&-| z)U?W-^mt89w%2EM)QhAujUF5dtw-c>bca-GXwlP{=CTbhPej|4p0h?*V@NvzuHu{SR04ke(}`zswsHF({obQrZJd!Xi| z#-mQjTT;W7&TxtXyZ6crW;l{UAI?`~Moj;U5;e4>oU@Hlz@*kTQ?Cb)9suHCI_>DU zpzWo)Yk&DY617@&WQIGUrbn1A#-Hru;m`TeGyx|?V$)4+(DDd(rZ;z%06&`J$vZfR zfRlrppgE=9w&oCib+mY%_MLI3lv)$u_mfAa3zu;)DH_mzvLiX&bpgRZ|I_z>Dq~*g z7kUL9_m%~Ix?tLI8c#>){9zgg(4s-eXe|brMxkK-p&K7=gNuXhI(rE=v3RWs-mx1o zvqo6$Efy>IigszR92tF?=n%m(JN|;vc~@a`wZZ^q#C4mIKff7q79eJHPG3s z$VL5;(n{0?a3kodl*DMuWG$AvoJrd5tM_*WdLTC+Tl zbZiF~@~LxKZa<`WTi3KM^Nb_#%At_G=A0rO3@&pfHYsIn!`^~QNhO5Kn08nBzUJZT zX1#zOV#`{TMXA-1=-@de zq=g3V(153=jI$hg7+LX4^8EiVk>o7f@Ht+$zgl|<|JB=zgt;WQ1;cao=lA4arIDaj literal 0 HcmV?d00001 diff --git a/.licenses/npm/core-util-is.dep.yml b/.licenses/npm/core-util-is.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..3cb4b4d7af370d18dde8b53fdae19844c285074d GIT binary patch literal 1323 zcmZ8hVUL?Q5dF@t811L)iE!=Rw|w&wXJeH>1f<*5>7){Hf-8a}+w5MX{`fwdq*W^+ zfyXm%-g`62VzG$E<}8=gY9kkuQ^P{p=v5l4^thxC$@}D=$XzeU7%%6@PUmxDu1l(W zNnd<=qU@hv=s1n7Lxm+ZI-|R(l^s4Q*PW!-_sNI9lc?8cd1+2^84aqHqXpzyx%=-dKYk$uNJJ)P8}wvjZKIR1BH7_Mp|iJ zWtT*uawpAMS+9wdrCu6&xYEfqqmx}sMR-Ge>j--P~9pX-uXrWtdq^) z-SYSMYkE_z*OT)~AThWbBdHyx&U3k64+_px?Yq47gKavzGHDYg{)6{VId5c^gLUKs$^e3?-16 zr+vG!eFF^#c{4C9XCULlcWK5OU>%l1VICK4=8gVM@@=E)4X3JD*UzlvBr4jK#V4`i zD|%oR&JQs?i+WS+YeGiJ^7@5}HL?7KK8k!56aTy`c~wzS1|DL&%LGSUX$fxtwo)C>~&ERqa7=2k?u2A(r#bw zii(5A3edU8*CjgfEzj!&oe?Ac2?we+EX#bmfXDVwQhKhG7Q2^HJZ);)6xoU+_{hPK zJ!X7v2Z3qE#5SfC+p;ImvZMk?vreBnGo|MZ_hH|c;Yn*z*rqx@M^ zJSJ9(3Y2G=Wq~%{VpO3EfKZ$B8Ohrp4Er%9q<91OFyPLKR-9$PtL7o(zZ4|Vygm3o I`uD%+J1~x(9smFU literal 0 HcmV?d00001 diff --git a/.licenses/npm/crc-32.dep.yml b/.licenses/npm/crc-32.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..7e43fd4c4738dacdfb927f7c4f497b12c4ed1e48 GIT binary patch literal 12392 zcmds7*>dB?6@AxNbXb*&R7G(X+es`x(UQidqmfji#*?X39zdW;!h?lD1L7#lzvrCW z4d4Rgj9rzt_`xHRK=)nFJ$LCoKR-VyqTF7XxQfredVTU_E0>nVg?Tl5J$rppKkx8c zvCB_fljl+Od|~dJ%AWtUG?x#Td|_MWb{B2%)V8j7?&8G@x3#wZ#m(X}e{qtfu`L{a zjdoGIwdb#AFWc|j#mTvGWmCo0U6`B2<@N3I`ox&peyT6bzhC3e-|*jD)-^YNpI>|D zXRn@t7*q38R5Vb@yngxe>o2}Y&7jzRzn^(EW@WW`5ma+8PTH3ruOHqn&HVPtT;APY zEglzlw@dTp?!mlUUQf-#_5H)$)w@f6J(Z`f7R$$n#rN;{O}EIanYps-v`B0C!Ognw zVT(!7a$?*z$}*GNs4(@`!emwMOjIN$E{nv!Y1Utkg;alfbe{juL_dVN>g{BSe6a>#EGACaNf;e8@zBDK+D_O_AU=gg{;v zYPImN*{Ai^ujMzMnKyWmI`5ilS32y}S-Jy*_T40`G!YOubDEy{*UP=Frf_Qo?@^c( zc;MetQ2&%EH`0D=6Y{&cxBhNs<4Fo%BanwkK86NlN4%3LIm3RX%T0QmvWL#M8Peb3ilRMg=s`0aYV-9aZ()KwbGJ3m?}eGTvOWL3auWsIIFVHTu9&n=)zZ#}#K8DQ$D zu9=1fC|sOUt7T3R4E9r$?;rtQM%qAF_?P+ge7Ca*l}`x3tlXasW9-US=@XpzWDO1E z1{NYhxYu!;7;gzB2=M{N3Vgqc9E1R8Glapb*aOi5gn7>6b^>6=&VHMMv>>fo4UVjl zV-VhzeL@H$Zi#r9N<5M;0(w%McwcA~aJ zJREYoT2TlPChxpGHfNv>qCWUkwg?%ivU!y1MB`ADRe~hiNw_n&mCc?(6~#v}-EB{O5FEsmmLXde~o$}rrwGinG@ zzBiDE@EWkCU_A+ykY0^iB7=)2K+ES8>9I$Hpo}Qt)9hKT17MrXw1J%O?HbXY3N)Y_iz%#1|6%n-9SF}q3Rr4IBmd{^?(V|uhaO(_5yVXug zRS7I15`^M_{YR-zEjQc?7U^X}Hcf%~4S?@ztfJKN75&%ZY)@_LQ`uc)}@<5ath!|-%*a^Xk`kT+=783 zqhotE88j)~PoqAdGXa$(j($_wrHx9S%}1M?EreQG;0;x-mCOL)^nvsys8cUtjgyotDn!;mBptN zh2~QkGchQ$^rV#eHk#R>?HchGk{z;%J!H#air6(PybsF)(7P-`P;}owexK6efv^YD zrRqP&ZAq7Fq^LjOY4|Esi7=Wfq z&@HkBVFTIj9_@A+Tj;U?L?m9&=e8ooS(IXg;h!DB6Y(GmDPrk4xIol97gec5^tu9j z!4jUoQr(_*Z^JUD?hI{yS+KO=v!GE_LtO^~noO%cEd2{wIp4j9f(WYkqH`!@*k(`n zw6(&_EY=1Qt=38lhdD@7cb3S&z#A`0v_Vnl;9-y@ix9NWr+q>k)c;lK+_@N$D#c~P zI?jIvDk76bd)K5j)y^y`R3;bHL2ZUn0^#)`y?>D?nL>jCC?aIiFkB12`y#N!q%Ghv zExeyNXOKh*38CT;txl~YbO^V?)Z{}yT+!{e6kdI0=f`6tV|rCn9lQ~W#{@sL0PQS} z;9=jJ^fdDI%silf=%-{e5h0JBdxjh{8TeFyE>)^hj}-ga4L; z3Sdy|`oR1gBa*&D8z%-D!Y{|HR#31mGxT%>20RuD=L?_dl*yd4G-zOpU zrck*+1sALvR8`7zmU}?s5q8^Ql`vHd1pOTiI@o)q_Vz<8v6HlCz=g~zh>kd_2s5-i zm|}wQeK)M3L@`L0T?i0R98-`s7!I=5p#-s#pt3arlf|jLp~e-|gp!RF9oeCE1T&?N z4v;b@x?LuQ*Mz$f9u;_+HJrG4v=I9Fw!><5mB#p(Ty3mt&Zjl{Y7!^|BL|yd2@ph5 z@-yoXs!S78JyZiMh(^M2gR$a=hD^>#f~_zl7tFGd79y0EcaJy)n8*o$_<^}C?8WwA zv|ndDP_3eou?Sufy19D+$qy(VEf*w#AeD_0>79FU0_{gkO>%=-Y%*FZRFjeryi%eL z<_uls{#jd(mO5^EvENux0VI5u*$5$u>^52|gk~SQOwpTmR(=dyWieT zRb2u~YhU&gXKFD%+E*Im4yFZlR|I?`t#&wdq0*NKv^Mp*nR!>>w8Duq?I&y)r)=@1 zFY1NS%FrHq4J0Bp=<7@N&yVz!GN2a12neBCUU)dlm!SY?Td<TmihkY|9e09ki6e1NYkD4b2fCDut>HM^t7^mU8 zIY=9QEtkRbGSmpqsnpWb+n;ck0K-N0*2rXd@;&Nf46~lQfaydAgrz~3*$~^sA%%#C zr2&KJVM;jd9T|9orx8J993>@&<1M9G=U;DLo-N^o3Qa@z1DFM^IcN>3WHMix#d2c4 zpD!0nZSePt#~<(BJ(~CPhlly?lGi&UlzAlD7k<*C=XV^kqsQF zi4lVhj3g2kPGO?jN1Pm~N?In@;rPm%P8vHMcS=7P_;K-gb3H}cyFFjrzIj;O{&4;F z`u1^Z-d;ak{s?L3-!Esuz$Xo8~gSN-#pJ#v&j#2!$1LnI)qZOw0 z1n8nbTpRnulu0c4b?_DD7pMr}R7?~!EZPeS04PrTaKoT;swwOyOHm2N_G~I88b+qmp|MNE&6bLj8_nVXkh%Y4frI?#(7Yh_=U+C zT#(ab$d5R}q|KjH00tTua`Nv=Q(T58WjSn%$SH`M6)e2095V>%oO;Tju-K?%QZ3V%0BoWn#5xS_IF z3;8hzPg{5iMBB#;U>$%(tg@L9Y;=@1Ae`>7B1&)&4G;v&;K~nTS&+}KWQCw)A1&X` z%sl4Em$BM1Ic1*rm8J@y_ghS|Mj@_L>X;e}9MpuQOq}OVyXrXJmYfX$dNLu_MwaX* zrwynh*H-ullqr%%2sy9N&X14-i{fkm*t9urxea0%vUpPy>cJd1F!1wGHWbzDN*4L#&*Xf}up1nICZ{3Y{Fc3}VrMV&k%3yw_E3Hlh7eYat^E$+4vhhpkk* z{o3L9zo%r8n};xL!o%ZwEgw=|PX!ZSQpcw}&!z-cuO++FY z^n0N5d;Ez)XmNB+YZI(F9?_)3(>Sb(2{iWFkRwjRVJu~gz*qx?iqRFQ<$>*87V(tY%w$M@p9&PVCbLb7!^|}ogFw+ zrQ3lmkTuJ1;aFb+gU=8q08V=(4(WV4BR`6CN+QRXC#Yvo{U#U=ZtR4k2ddCF?cNC@ zE~@a<4r)H;yzX9|Fo&3+AMiv~yv2N5bs(4B!SCti8SV?e`uaRv00NAbyzh()(Kk1j z9XbQ|v{ehG8=`V*e(tX#n^Qi}-R?d6uGJS1kl6&O#5XhHfP#ZWp8Y{`CN;zmi8ioc z+kx7yCHxT9DOWPZ)l>KGVSv07A6m(E?k`+=4)?X?LU$`}Xu`ixH<5>qS3lv_V!KpV zm%_&h+K@hwJ&(+v{1*SHt!Ab6Mq{vtB;{!^KMx#B&wQ7Cht!xfByU z0_q-g&}NRKhLA)Ft$t!6i?*k2U@8S%T$%6tebi3809WxMUU=-Tz4&NwDds&BK`CPO{bc#_+HtlGlQDs6)~OnliO}KSM9s`yl%{}k+$hH3Vd;!(X?vylW?ya zH97Xw~bcd%xoLwwvh9b6%~sBy!zX3;hzhtW4b?b<5M`Z`?LRi4zPFZ!n!PUyqt2Ty=@`jh4s>t!c2M(Myk-L~+r*a`3@- z3LdIE>fs}awMzD&M`Tp+{S~}pmuB{awF=juo4^(0VAIcS@Nyr4USp4>L=;qz3n^x& zVj>8hV;D@UFX6AEnA3djwd-PNb)d(>FuMzfw4FF)+87H?_5F7ijTtEWe@jYsRW3R(^sTDE?F6XXo*9Xxz(WEb0C~ z_Wfqndj?gxt6vkrfLCx7rK<4@wiYb35q2%>j7&MN8yNe@hZuZ$%*a^mWWp8)GCeBSe*wZtr(6I4 literal 0 HcmV?d00001 diff --git a/.licenses/npm/cross-spawn.dep.yml b/.licenses/npm/cross-spawn.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..b63152ff4d96500784f06957ab17ec90b430d177 GIT binary patch literal 1529 zcmZux?~CI$5dH4IV%UD!1;@FzA6h~=>UETjsDA|6x!iIbMX{Aw#kPzjUoOx;z9Tug z+m^yYR->6W@4b;{u~-BH@5Ksgt&CZikza=3i_k`@VFkZL@1mardmS-h82i9Xeb4oE z1&PasvE%lnbPshayXMbPt6CWIg9iaVH2)VbuR|TQsuv?aBWi2yXjaSRS=x3wMz!jf zz504Jc50+r4yqB0x6C?Oi@{)BFKuu;m{qU8s!C0V_Rs9JKwghtgv@u$Fz{$m-$Qw;czE)S8o@h{Cb$@5+^PFGk74o=QW?bZg&*$HYc1# zNto3rw9t3{OVrjyoQjjeFx@KwgK6{5Vxkk=;8U80Mri+TKfT#rpC9jA^K!XFYQ&A`w_l|6d3j%oOZ;dS Tw?j0x<5LvOFBW&?r_aGZ#!cmG literal 0 HcmV?d00001 diff --git a/.licenses/npm/delayed-stream.dep.yml b/.licenses/npm/delayed-stream.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..124012173832f11d2729b64c54ad993a3258fc9e GIT binary patch literal 1473 zcmZ8h!H(iM5WVLsN`0DDeqMtg7)hj^95D0aFBX+D0d9O&H{ z2?<=TdiCBbQ;WqS7-X+jP^(T}RlTroRI(4=)M&LCR`3)(MvsBJUNC34^nsoFUXIrl ztf!{IBv5Z^a2A@;^dMm_hiP!SgR7Z9jtUU5zJfE*%AxKQxK{O1(3)Odezn|4|Ftu9z!mZPl8Z6fJ+6A|RT?GrUW*RGHSCGsZ0f1BA-3or- zFMy4?Tt|Iw9ek=j!*7pIPq0L?H^k?Uz#|;h*lSD1fVR-8 zQI%IXk8;4m5G_y&OaoOb$FmAaupF*%L6@+=luqhF4`+0#LM9#%vt5f&)->*&tU`l8 zT5BpTiA-&(sYidMqn?fKl!Z@dA3Wr@iigj>QLSX>5%oa!!u=ZF(Ni-yoB@tTSA-LS z9;$AtiOc=EBlU9^D)%;74~Qxzi)x5-2)(IwL*L3vyi8@MZ5u+Z3BH^hW?BmR5rw2@ zX-2TBo9Q8nMh#x~e=L0-`GsB~kDFzdBJcQ2epaMsUd=QP*cwg3tlFT3zVkn-augvI zjp;h`PBJSq)S9&8JMpRtyq2YTQ(o8nDhA__wjY5XiYGHq`*vkp*>zB=n}OI{4<3%f zcWJ10Dy_pup=AdbGy1;2N{((k_6+iDSG>f60ngzmvM+qgw(t<=czy`sg%|tmQ~+j( zI4xcw+d-VZ!e2byhQPia1pl(2W1fEbRkDEQ`-!~%{dam;dtG`0wx@^mM#6Fac9 zh_ExpfPKLOY#44q*BQ_O6eHL>-?bry zg6QBJ>=ZW*mnn3vX%F~D**COl+Au0D#8VrP?-1XOw{XBk(_b>caQ1@>*Qhw3BD-^h zgS8kCPS)F(3mm=aqiv=zc=y&ewn0Y|@nONdxHp@v62zFLcM(Ho{9JkXB>q?$25UUD zJ($TSia%%=m0RW_-qEH`LM?pVe2V+L3; z&8bpzU>vvrdQZ6qwMhtH*zPF)4CJn&uo5zR5&j5jOG`$oDWXeS>M44Bd|{qa;J@>0 zhkm#RmZT=eZ!M3W@PJ|eW5!o!9l zqD}7FnT%#Em=bbQVm3NTyO%vC~O?&4|Y6!!cTN z%}0=Wf;5?fN^C|=vh(WyBbk4_Mv{_cP3K*MjN?U`JmFbC-(2t4?W7q0CcJV_&&5CB Cm@hm4 literal 0 HcmV?d00001 diff --git a/.licenses/npm/dot-object.dep.yml b/.licenses/npm/dot-object.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..3e1392f4dc7849f4ffeed573002235ef96f03acc GIT binary patch literal 1342 zcmZ8hU5}$S6n*DcT+P#rMAGiIPkCdAGjU5GGGwQtst*QC;udg(%}yir$M@JtX1kRl zCD`|#uY1X2v4}=Fs1>!wElmBVYFzYHO;($6MW2_SmOn@Ca>o659wIvrgPbn^Ev7;K zr7USjXJf6ddqvKWo8)LaGYurimL?@zdiWq0>(pm>w0(!WUZ1t z=@E#E?pO4#-O0=jVOlro#^)8IsOjhSuH|0RYlIdO4Gs`ziZoJ-@2Gi=!f2&~e zJlDOpr#R?owWp|OhidCD!YE?z=?62BRekSKG&}^~-&BSgFa;Ro1s%880{=Va`@Jhf z*3HuhYJ>!ZtwDr=)oW=b&2aea z-$;VWcG4hOj@Fa{drIEUDu-Y} znj2g&C<5#;NNuz^NB8z}ON7`RI;8UU6t2=K1hgQ%w~bB)Tic9-GC_u@dD6Y|@Gf); zp6WZ|>3tGvmFyFvHpr;paSc};Iy(k%$_J;L$diLMO+U8L%j3G&II~G5!ks>M!6!mY zF?viBJ?AjkR-fXxaxvm%JoegmIkY;`AIE@2AB$-ddCc>{I`FEW>>-QB3@P_tm#Ht# z3ulEs?j!TDa>e!jn@CT-PNOp@ja$U7*5U}0@(>A*B*{ zEsyr6O1V;8FgBp=w1TvhWMo_2e#c6jAEUY%VNJ`>9R|FE_|eo>{@fYo5r~ zOq7v(U2!0=BV4fMz91ZSd%mk`iZ)hAU9xh`QHgG8Ddwn*HK1Sc0QH6xMU+c?WRFRB z^a{&r_sZGJM!=>jRuqfR6djW1f=+T6a9I$x&0$5h}^Zf5(l`) d0X#gxijo5PaAoCN+y`KuO|J+4e!hLr{s0Xdl=T1r literal 0 HcmV?d00001 diff --git a/.licenses/npm/emoji-regex-8.0.0.dep.yml b/.licenses/npm/emoji-regex-8.0.0.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..30717a6f9cd179f20547692fc6a080245f9ca519 GIT binary patch literal 1495 zcmZ8hU2Eew6n*!vxb$fToOB+Suq-%<(uj5JU^~+-!!XFU5^J!nV99L*`{VaWPBNW^ zLTc&W^K~W7X0xCdom`OY^iMS#6pu$MCm`g0eUvFpTeSx`i% z99uDvd_ND;xN@?ZI$^7ZMB5Vcc)D*dWG-E)TSLOoSq@|yNrzrlx|Wn%(brXZ$xA7&BE$mnsXq*+kRS1ifdY{!eaeYXLT zmG5>z|KdNQl|Ekvb!sf_gl!ZQEiXL~>CZdsv|jpUNB>vgJNI(v)Z|kcYUCix3!Mhh zTUm#69Hb+Y$8qREjgX+Q)`-xv{*;xyAvqUE-M0D- zRzcm@%K67x@k9l-MX6t<_con~UR%iaWAKCVVy1~-w@l+sb~%k;3KAL+yIa25gWIt* zIM-HTCTBf(-v8U4Uv+F5<>{t)jxt6(r+t=wp8d1WSe{dw5#Q}&&ekFEWECIQJb9uedXu!ky}*qCaFJ30(kmQi=-c>6 zb}UHa0-PuqgFX}o4wTrv+8^Jp2fi4rDPam05at)pG^IXxQNl=GE7`w z!hRvS5qJmpNukVzct8kuO=}j#z{A**--_oSU#E;k>m8eSH6%{&(vJ_%+YiFw7Oz6J mqHHCNeSLi{zhQRYKi!|G>%)kv@|mtzZ5~W#6ffYn@4gY8VW48tJXO02=Qf+e>N?2q3gImvVu z3aO=g&)1bSo6Uk=baFwm(?8X0kSF;byvo5S-7n~m`Iq^Zz+TQM=+9kX#;y~?WkC_4 za%{yw^8GwWV&Nt5^YP&#HfCPR$B)WdRmt9{fqyIR{DGy)Tyzw6Sh%Mw7m2{q(ASh(|YNb9sOT{@7&9wQpu$x{fr0X)eG`L3Lyd@xu9N^K z)w&ux*;`>~8sH4{pcO z;9OgUnVj|DdH-*Fe$}yMl&72GIm#IEoc3Azm9N>F9-N|O z*|BW31w*vtF)v<1+VCQAxElaRw2!iauMTmP(f*L_)0{!Z+IJ>t!jnw~Hnw9)F$X&+ ziG9Tf<=ZHZJ!N!&lg#T}rTdqRKWz)zrtz9#amhSX%%f$@CQ6uG#S!0yw2pSslT(^e z3h^1t+*LkrnO_2Dguhk6)5Jp|r&XF18J0r0&Wd~cGtXH_QO0u@&?ZYk;UY$d%P?_$ z3HycQM&KRXCxtQ>;sGJtHLY0`0}o?Mek-1Te4R2Dt#@qR)sQ&7OFuq5Z$Ai!Tf7R@ nin5h7_Vx9-{D#?m|8#$%t`8%w%4fP>wRtd|QM`cPz6bvSF&^20 literal 0 HcmV?d00001 diff --git a/.licenses/npm/event-target-shim.dep.yml b/.licenses/npm/event-target-shim.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..2f27dac2a1596229023896d0bbd0e9a6173b34d6 GIT binary patch literal 1390 zcmZWpU60~66n)RHxSFRKH88uC_Jy|$n89jDP-2#jsy>*+5LZczVrQmE`{R4;z^vLz zNZ{*x&)2n>&1O+AJGCJ7u6j3fayTnDvyJYecQsgT`UQQPf0=)c-1UOC{?bKu>^eDI z7nJm*yGyG&j7o=IGABB05^;DX=J7;;Bi%bSoMffuQDZuFk!K(^&Ry){`T49}Gal!a z>7Ki*b-I#H$>;yeX?3M~i@{F2=ytG+XhznIL#6D3Qodwa$s!`B{&oxc@e6(uiAK?u z3rZ&ddc@%=3Rg>Wxeof=IC`v}=+`e_zmYJ*NSQoKpMjj(c53Lf^Qoi5#8Oz3$H>sRCW#MYn4JWzETb$U$MCCTXpyG~Cxz zn`-PffC(xZcqhw?V@@Dzw@CEI|gdmt*hU(*LtHKU_JSvTm)FDJ$xs&=fsmiu+9 zk><2IKOVBM0T3=m3pZYKOr5Fq$$zV0@iHD;ZJU^C?ctB3L#Oq{u%p=fc{T%C)lTw& zqTwO<{;4wb`Mi)7blf7dzVd;G@^43a(sde#9@Gd4U9~}kf%z|0IbZQEPNr?mhqqao zzSiD59!hW}a4nDKT?Jp$>U)DnH?1HnC5V}}eY>)aY+E|2TY%t3+$aUeyEV8SkJjN) zXxY-m41xE*mghGe8%AZm7Kfx@#7o*0`FFlzD|$#uoF8I3aIwkvg3wVUnRugoO-c4f zzwvAp6Z?Hvu(G7Q2pafymvV+W&z9+a#j{s>!EBb})pI;|0E?UiNN;eQVRlVhRxCF_ zPhNP+#akS})?8#Bdz}}Q&@L$iU+&YSpxwUMZOT-MtAaDp5!8ERV8}^6qMc`%p#bP(c@4_v!H}8S(>we$jTpf zK|k@2Xv>Sh|5@tuWl*Qa(qH-lkss(zXG)Q$&^S?Vt{$)dT2#<4z8pGR_Vu zL#UL83!R3tx3UiDI7mtQNL5n~CmE8}fV|Kd0iZ!2Y^i$HpQ!X$6-2md+W^Ywqx~!g z={1zb=t`Bqq*_;F2Zg0|oJZA4Lth}#Bi!ZJuDh?Etd?axN&+z>U6D+?pJz?=kd@g(}W(UR*nLJq1w0? zeoUeBG{-cJ#5jSX;KBR;SEa9UOvuU&)lF-P&GUa^_P@JAWXEynL5+~mS8GJ*S>I)4 z-N`Maqi$RM>0-w`Yvuf7S3E-jljT8wxKZC0qSqF({TTdUyr5~~*H@--Yk82@5M}ML z5W73R*@N5hU@R6xVJ2ric;5fpzHU{qVU%a<;yD(KcuqT!J@FM=(OsP5`7WeqUTm^` zL8uUMTD(xUrZ|0}?>t?F#Qxq1mginaCWvo$31>Lx=`z``c=|{W=uNW%-vzz_02diK z(kmQiIRJh8mWkyC4Dka`c<~a_ninasX$|0*cCjeh`zO`Ig2GTy_90H2^`wtEr$aZ}JHOI8er4-5+9hlEXZFt|)&zMZyf z6>sB5r&Le|@xqs0RX%T+KjJC$P`oU7mb#3VSy~7@hHxwjv`!hh+Gn1#kYd4e7tmT{ z+mKwu=yDmRt~X^9l8fJ~|1~9)0K}v15yCG`D;6if!`RZ_8lwN+PC}M-C!@}7&h>tp zd8k)R=j}^0zg}Nor!{@;aT`VN#$5*HZ9$E-XS0~k-SNAL^l+NHFK_;Fe;?iBik-W< Xd3jdz=?0D(+qJ>8y|^1+--3St%kaR; literal 0 HcmV?d00001 diff --git a/.licenses/npm/fast-fifo.dep.yml b/.licenses/npm/fast-fifo.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..ed8ff374d7d8b486356411be4eb135d788283d93 GIT binary patch literal 1429 zcmZ8hO>g5i5WVYH401{U+3s#n^-Z?vn5ZlnlDuh9^gv6L#jPY7BDJo8{`fvp_NKc) zfP}-D_ce@WvsuuKPA;hy#?ES0>)@LljMDv*KFxofe-7;Jg6sa$1!n9zG2E6E`EGLE zq`FHhJK0-dF+@gnsucrSO}3Gwdr234m4oWf)XRTtp~}BW^_1vJ&cB*~sMLcD8r{i@ zID@FM_F|Tc#aY>AJk3kpEjm%F-fGhA8HN&%b>7jrPJeN*G#=qnVlxa_E$C z`H(Wy$U&ZNbRI-+Wff9ANO-QPY{YPup-VyZH@YBE4Cs>;s&`2UxW3#xE4sm9pu4tL zF-QzlB#hCe62PQNm*YpgwQ8lIXBX{LexG=H@kEsrtw%(lT~4FVT(rB;0{x*R=RvTgdh+@JsPxrfuJ^Oe5NsPVycgxK;1r zT=`)QZpV|ccoa&sc>jav{n_&Tu4Bh2Pq)QelriEt9kTQb->?lmMLEt-A-(ZpmmUj3 zM;0Z;JEdESl6U%@C!3JiABT+PIi;D`!S{!lGt_yqj*lCjywVD@Ns2em@z?=eq*Q?P z4#yd0x3p*3dI$7q#baK)haPOpi^O4X(+vOghbSxf`WQzU9gf){%^75D0G;q;n}Lb# zSyIfwj2f{oI8eTe;@Hu7yyyrgnbS(^^zfeX*IhxoG~O^2R}2cHRm>(j7+l8@--on` z_R*_TnNbR)$){_bl+xRdxw7Mp@Ut#>nm9}AG$}G1LpaWg@8fSgXCXxy&s{j%EZt9L zUBs9I3xF`2unEb6sy PVJpG(yztrj^RM7Pt<%1@ literal 0 HcmV?d00001 diff --git a/.licenses/npm/foreground-child.dep.yml b/.licenses/npm/foreground-child.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..7c5e95201531877fdcdf2fb3f6cea4a68114e78f GIT binary patch literal 1042 zcmY+DUvHZ*6vf~96jy!OCMB$Yv=`o7;v|*`WVX|)oAyA#36>I!Y?C(9KK!mtt9DP= zaL@0adu-mBHRvb+Bga+j-OJW1F0nb=ve9+@&|^P2w*DR`tUvapUP!+e-#~ z?4gEO4YdQk2kpN&@SXZZgTb0cIhVpppA}Ys^Q|^1&{tf)bgIX934p?_OOwu=)KDK( zmK=4XdWSu=Yu-05OXlFrXpxvf!E#y(iej%`eFlGV1t76K6FC%Als@qc_$~fUUA8?Lr{n4UA6Bph4yg zPNvm+e4^~TvCwKaDHZ0R9h%+ym)gceu;voo45J;4Q}CjF2Pg_pGkVx749G#Jta`q{ z!PdQ3?JOjC)~#xhSo;`n{cO%EqJoKOu-z6-^}rT%0arxe{t8IB0EtCpC)X8+1twe&wh=&z0#LQK zI9(BrnhIqI{D7Bvv0Jcm6_sqWEf}`>AV9T@kPYSe8lmK#6-+)w14|}LDntsbgt7wq zKuZZ?9V~qEc2DtUko$tdvf`0N$|n$8nln<&&^o8NoFU_Vh4bVUUZkHpu_2MX{QpSOWV#>tNB#bj`~#)mHHH8H literal 0 HcmV?d00001 diff --git a/.licenses/npm/form-data.dep.yml b/.licenses/npm/form-data.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..8b34d88117b78eafa23261db3ed17739730a4b87 GIT binary patch literal 1529 zcmZ8hL5|}#5WMRZ4WDKJjdrrg$){*+c}zr>3`yR}V6g{EqHP9}D3H{84dh+ z6jLW_jlX0SHCk{h2;VKQJ3)(n>Z}~Owx2#Q7i25~dK1x#4^#`9jA)S^5Sgj&rS<%V z_|Vc(0%aOI#arVDlsyYg7f}-*$4)lfLY;|%v+BjjPhuJ1QVa$v0dzl@W$;8sO}Y_g zN$DH`IxBwICH;keL@PC3wLG0IJv5K>`T3X6v=N>BL9ap@F|_~ut&gC7IJ(QG7UeBt z@#vXa!Mhn!4uBMNf2WJIXEj-L5si|Kb2ub9G~LuXHTUOE!r__5rF-wpjEF+e)6mNf zsaLH$Uhyk@mE%-*(wswTrNf6`h(zOWjSF2xpOhvex|={$FNJYV{jAdmI?v#j8=BcR zKP4B8!+&Do{;cdc=>g<^-ryB%^xS`n#yTj6e^gzkF0N8Ew3U9qmbZRZc;~hHE_`Y8 zxD3i-pnM;EXS|%b=eH+w=3VCoeKrx~a+u|~`+Ie$c&d%XY)IbGsI+JPf7Q`l$u^-f z-&AjLkq|3sU*uodI$6^qE^%Ij^v0@fey9i$MVwXdly4}`-syLitwT!w*cVAzQeMnT z*lwS)1P?4*rH3`kUg-tNSzb}fcB}$&l~V=Q8y-uLyrErEthRuUUs%ej_i#qruqt!t zo4mk+*vCc1R);h$Xn!d7d6_`S8rT`jHU+4XU6NH1sBuTh7aXYE#%b#KX2AG>VhSgh zR{8$DV6WSXwt2cvaQTuzWBigPGaqVPr7_!uw2pW2tJ7If4yaqHE_N16Z`;J(JLVXl zRmJkmRkg~qs=zTs(M9!<|HjHBq_|+E^Ji1!yIZ}^XQY7#NJ!3-8Ors*oA%Kvgg6rq z@ZheB)=8WK5Pi$$YF)%VBl>xD6txuAoY_p+$FVmQuTWp9*j7xZy{H@}+==MD?nu9=xr(-i%A zK|3R<)s_6oTnBozKMiy!>YDaN`8N%khNGlU8L6hLWh2|67$8jQU|+QO^(tpXx|Il1 zwV54tBfH{7E@rhVWowXFL!+O5n#Jsvj6U_HGz*HtK*X7V!XW<{7W6N^5#`7kW&uT` z!puGlba(F6%W>%iLhUEPn9xbq(o)Pz~W(eD|(cLmqmNF9=cQCX>{&Q4M)Or{?yztDG4zs zQ|{07(iiO@E04Nfzp6@BP%H-9uwt)mzsQ;x%W3t1I<0-1xw|-?UUi);dQvU%&cMEs zWj`1wQn;p%|=~e=+oWH~)A?kj8;yG~nPhW>TIOZNeNj?CEzN z`3+Fx9^y>ZwSF@=e6`V->#{!aF>#0FC<~T{-Dh1_$ofogM^zp%`QVRgjkU+wonD1E z6^LV>6Cf~=;*&lDSs0nNoZCt*ifl1fY(j-|NpwYv@0{mDk8=)N<+12r01^NNWFQ<^ z1H9-xn^Wxz70w8QX6(&1P?%GNF}hR*C_$AjPZzKr6z|ywF776C2)g;%bAm`%f$>ZN zUNJ3r=TI*hVkINmb8Tfm6Q*j_s1e|k9z-mJ%n#t$NLy%k+Ske)y(>z3WcZ=oXiJ6NNpzjeKCpl<}lL$y# zmWxRcv}eh0I6dv5Lp39qeA@b8Sg?zH5OJ4o6F`YClsJjQc$ETXVgvO4fa}iSc=K2& z2g&v+4IkDyt&?ae(u}@hzAe*UPYmLBlv|uSF}@(|z48s29b~_zG86cn$B!ZN-7(my sG5@^_j~VjcWAXcbp(j^tzV@{geuQ@5&W-JoDP%qy2Mz!0{Q1}HKQEf|SO5S3 literal 0 HcmV?d00001 diff --git a/.licenses/npm/glob-10.3.12.dep.yml b/.licenses/npm/glob-10.3.12.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..03dd56eb9e27920decbce466b784efb0506dec1b GIT binary patch literal 1018 zcmY+DL66!n5QXpg6{9`15>S>sH8*cC;3~w_HoMwZJ(yr15{V<*utn;R@7USZwkO9K zzc=5TIOFj+>vU^!IG*h;yBg;k+vRXSojgqLXIZ%QSnK*W^Ov^O?v_J18ECB!P+R9r z9YA+`@TRu79JCJxOVJFPwm+NJbU_F7gr>hiyIZ2^FRr)Vz-tpufbZjKF98n5U|KjCXLdI@I^6}cA3^Wz zwb`3JI_i+-tatWml2wElf^{}v;)I_%_aDUXrM@@X#ewVdIpR0QPlkAEMM3g~dM1M6 z^k5_S6PwdH+!2ZUJ0R5@;vuqCD=uJ;6D|o`OCV(ls1l@7jLO9H%+v}5T@ryBjxsd- zFt3VoJ7?80DcO2cGHmnV0DO^5)>ITLG$oI$Wa=dWESRdOloMbTR2=9NtrW;rMEHm8 zk>brDk0pf#7s-oMFCaIxV5A%&x}b#`p~w3Z<|#N{r0-kw!!s}^YqF#gun?th+acSE zD9N$2z=U#Js+eRU_!>$sQL%unq}YTg66H8Ygq9X;L5a3K$f;5okddgfwsAp5J?nBdJ_Zv_#RTb z-Q>kGFEeN6=#1v`c{b?YtZ?bHg8Utg*cr^~J2Ru05H-6TpUs4xX2OmCfPp)t!uAp%6JQCC`9hzK0e5rGJ2G41~;4 zObl7t%~vet|k}II@oBFCkH&y7 zWYZjPxHvrobDm*z_NhIaGcoEwKL+|}pG=~PA|^Y74dgS)PnE}4#V<$WXtYB+KzCh~ z-x|M|?5Q1xtTyU_)tq{U`?~rh)_jdOOw#%dSh+^L#13j#)mT$s3numwtSCUJnw3g$ znKV5JwL{IftR_rFFd}>yb)ow!)}8So zM|ZGhd$#2gbP%D>%gNi0DOpkFnjFeQp`w#bUF}g+k`NmlB&Q-wu?VL=l4v=@!;X{0 zIx1)7Bq~>;DkFl5tC~ekCEpfe%gdZcaFr0Ms_Ei^I-LMBuv*AiwK}MXe)dSj#8Z;B z$eLb3>vquH|2dA?j#WLCO}dDUDn_z}b(iJKCt`WL&Ana{(K4GNK%a`g H|H=LX=C5Sn literal 0 HcmV?d00001 diff --git a/.licenses/npm/graceful-fs.dep.yml b/.licenses/npm/graceful-fs.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..280edde0ae63f1b15e89fd01754194a672b42eec GIT binary patch literal 1029 zcmY*Y!H%0S6uk2lPkU-5lI})5<>nA4u|!O2I~#4Q9$0XK)qs%=yN%S3@3Yy}wik@? zn|U+y%xpGGy0Xwg z2)ZQ#F$Kbq@PnLZ`EkwoHX_;nkTY!a!2rc3lI*F-c1TKAENAK|3fM5ksg!eI9C!ir zk#Yrc7bN_nZAI~>kX24$Q;5h#_!Gzj%^1m3lrCtdQsj7lLqA!87wg**`LG7oWKXtK z0v-hD+jjD{BT5$7S)fCC%vEr*5yc+zLLy=VM@g{>Q6#`IM-(knIPEA(6hS%Rlc-Fw zf(HaPSAqmhoNjZrr97hnTttK_1Qs4K=?F-H2qr_<;-~`p%_9;c4@YZ(HI5);f@-1; XDlm*aiOie-M>0>Q`+&=j>9lQqWt_UkW$XVZ4pHDkITJ&f)L{`G*v=1>p1V_g^R z>zJe|s=JrgdP9P9jwIUdUEyu>LnB$ds~{O1Ecdh(_Vgd3#%NugmJlZ7=ndt};{~J5R0g1?mi-#l}4w0A8AIoQHHnoY{`{ zXfOa=^P$b}iveA^FKlhvvoH@o76Gy=B`!sv#p+m^|GkbdgHU7T%42OB-|HL3aR=>t zLr`6K)7oO+z3JQ!r%$^Y>$#MM$#2 zTewi(G$$u@;R>F6&~u?kWmCOkk`vZTnLUb_$23`!o^y(_1;>z2sJ|ol~0rwI@g?LSr+#~D=r`La;e`b$%6D# z$`v1iL9?D15ReMTXl#-z(TgTh&85tjT4d=B=DUI{=$j!m?$ymweDyxa7H10zmPO0gh@f-9mh&u?MigGuyNkCgIRB4#{|c&H`|C@Z1(4Q3@!*(^W?+7$yQ z90K0pL{xQJUO5)}Vv;1L#NtO_#Ft>qUWv0$ddZ^sS?Uo e`vMnnboK7PFK_y{fB5sq|MWuQ|KrcU244YuNG^u} literal 0 HcmV?d00001 diff --git a/.licenses/npm/inflight.dep.yml b/.licenses/npm/inflight.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..30e123e1a0ba246cd8351432b00c8c03ab883d69 GIT binary patch literal 1021 zcmY+D%Wm5+5JmU;ia}N_;77aZ!aGK$Z2~gsl2n4U=z^ALOQ`iINjWvpkIzs_ns#G} zk9+6b8F@aRC#`Ah3hMTBsn1nNuGaawYgh1j@oDiT3AY|k+rCNs&@{%~RzS)U3Uj#} zP4Ux1=)l=ugZ06q2}~|=*Ic{01mkaQ0p-wN>cRvxPO7f4y*Z<66+-V<%jLNa)o@%C zU9+scF@<0Lr9qW#edO~+^1AS=WDdR?Tw(nRGL}-VXaW%I@34YD_y(XW3rwYuP5NZq zOuPQ(Vo3Nuj{4pj7w3U}ZC_}?{ zbDn1Tn(^(ZWcx$Lu*|yyh|OrSr!w84DY<7E(@!J7hG|ZfS^(p~1<(h|HK<)g_=oMD z;`qsZMqwl5=tcMwr~^$I$!3TyX{u-F@%Dy!Qh{H~*Bt%u4y?(ZY^ee~h|<^Plx;_} z5?EPcLX~GaCfP`_hfF9`Y#>(@ix5qs9Q%mSY6g!xiik3j6Fxzunh72iSX@gInK<2M zY)g4cqgadzEhJvdvD2eq21GIytBPDl^=n2nMjwvRqU$(<*b}4~IjF>D?8)f7`F|vf NWcohvZ}a^}@&ZjXF`obc literal 0 HcmV?d00001 diff --git a/.licenses/npm/inherits.dep.yml b/.licenses/npm/inherits.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..74179e61facc04e6ea1f966d4dd44af5ca5a33f3 GIT binary patch literal 1008 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 literal 0 HcmV?d00001 diff --git a/.licenses/npm/isarray.dep.yml b/.licenses/npm/isarray.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..1b87215858dbf7dd6b8aa6b8d588c8b65b37643d GIT binary patch literal 1366 zcmY*Z-Hw|&5WeRrMth`cS0c%_y-RP7H#i%&1R_JaXI1sWfD>E+j%?F3QXjr!ldO8A zNML*B`x}$lY!(fomrGDq7$YvxPid^u!xG-lALoyeyPWWFIQ5Yo`(BvK5{R$+N7?X% zgEpYMMjEJ$K3nXLTHVW&IAUMx+{rE%i=%SwSj}tQFMf=j62sAql{AYRX{TyASZwH( zi>?d1jAmf6P^vU?$K?BdZG>jToG4VmKHnK_8%Qg*nO? zoCYym;Do-hL03+wK@CR`P@@{G49Z-KP*xw@Sr~~84G3#>tps91qwBGkgA>kk9#khS z+`Cr7U2*NWdk9306dkDHiYVcB3}=j2j}DBq&Zyes#8_B&W8<~ljyr|%PAnciL}k%I z030p4@tR}kb)ydcDTBq+Sar&_F*M4o>#DV(({xx4_D-^9V}XfQTu1nw!c{ z=kvm>P{%bg&ktw3G5@Re$sa~DAT0)j70o2l>cIR%*3R#G_=D~`efBnMJv7RD$D0!b zlz1#E{Zj^C)6E#PL)l>jVJJb&H0|q=Z3X(M$@0USh>mfC13?7S@{b28c6mEUs#sJ zK>youS`?7;pn+|7DWka0vQ@fISoRE0*qh}gqzu0X1TJ$Zk@O13DE6*lOZjSp=;Vo| ztbC0F*qW7@$6n_g24!b?yZPDm$Z4WI-V8&FF;W;}3zo jO$keUfO`z!rU?>CQpCfNWp8$G4fANaJ@`-c?R)eG$62fe literal 0 HcmV?d00001 diff --git a/.licenses/npm/isexe.dep.yml b/.licenses/npm/isexe.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..a69a541e0f902190e1cca799b7d82240e6fb8882 GIT binary patch literal 1025 zcmY+DUvJwW6vf~DDXzAcO-h_W41#W7jEnTf)xtrc+nw>}kAe z2o{=FH^0H0LBZMJlJS66%^1}2s`IS1ogUN$ecBKPzg#RXCbZ)*Z)~?PUa7|8fQrvf zt5c`5t7&xa6H@a&@yl!u-j1%(ehDQjXeDR{5cF$U!XJDCkgWzL3MeOimKF;;+?=_z z0lqX}fyHw0BL~s6*HH)UK=mgmY#*FCj=?%V$@bcH#>ZB~grnCpXwYdEW1BOMC|g(u zC*vn2cA~}L-k!sYavILKsrp-D7)Cc(ui*uA1Fpx>jsea(HLKN5A8&ARst@`!gTdKn zbJ8btQ~@6v)X_fcWECN%IK2&+GvTMo!w2#E)-Y)0!1SQ5*NAVl&!>2DOF`6Y`A9g$ zp242i4{SwO@QDbVe*#jiARZzIxve>@u&*UyI{~CD0act-l2MVE9+}(%ryIgiQ=<$G zKg_G5Jgiu?NlLccmki5%I6%ElCOgWDEt-;hRxko%Ity5`A?R8JuGv|yy1Av&jpoT1128|Eo$yguI#=!a)uMRsIE1>i=MzD=iW zTOvh`l{qF9hf>BQYhLf5tOY98a1a!W5J{pO`-sqD29H~ch&+;$YJw^xtE;HM;*yid zRMAbzHnb{e6xT^1YmNsG*y$vg0pU!pefKl=GA`wL&BGCKeO literal 0 HcmV?d00001 diff --git a/.licenses/npm/jackspeak.dep.yml b/.licenses/npm/jackspeak.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..8fa8586feb51fe254cfef43e45e8b2f02fdf561a GIT binary patch literal 1887 zcmcgt!EWO=5WVXw2JoS6U@K`C=)qVNNEbN-NYh2TC{Qf+KvN@$HAM;}6|I1NeBY3= zob&_sWZ9Z|^XAQ)@!@c&oErE@|0sQqBdc@u!XX;(j`UOguKu}7%ZS%*9I7}Cg9^)$ z?g=pq#T1NAq+CN|@FNFOp_>MFiAEJ7hq~(hz@zH;SXralMIfE*#9o~bKh}5k-R0+a ztPT|Y6g0;pJw1MSc>eRD9-4|M@z->ufAK`LqhFCtzpFF-<{P&3R8Xt@_OC*m3UW!< z(Z?x_K5_~9)SE~v73$0jM`G#4J0=xrm~>BQWH3=ApyX-x;Y_nhea1_YAAOr<6>)yY_smbx(7?dV=>9+PrNxAS!d{2v?z%@eqE-+qtGO5%EljT?wed?L=Gx_#SGG@ed@~J0(vZhlBeU{Y8 z<(j=(Ve=qmxM-v?IZi5}cDP7b=f3{FuyH<7<6(#ebfJLAR*G+uC4q-5U58=iY?XN; z3@@ZFt(@TafOKm~o?CCNpRa;_@Z$oAJ{1Wc6sGn{?F+k@@jw}z@|6F_DwluDZ1$6F z2-B!vRw zf`JuX+#+iPCDs9MOtX(56+9;bXQfi_r~EN>y~OiIc;q1LwCC--RAZB<=X1QS3O#>#T%Qj(drZw0vnJL7X11tnj zY;*1vY>lWw+7F{O+?0+!uj+mIekU-{@rUAhc!SQ&V>V$QIf z?W>Lci0|$jx)YkiD^ioRRc0vWL`#dT(`6sTDJO;yxLi0{qRJ}Yb(nwfcA$!PpGCUu zkY%{QFa9hpzTVO+0OFr6C$1pe+}zwpY8AYONkC?+W|@+oVbTn;Ia|14AW${#v&3R> z7+Xw5IJrT&garvgshlL(92d&HA-QJ42PYH*nbPZO%vMYfxJC{5V~V)27RoiEhLFk0 k8zIELZgWrNNJ>7;hD*_sPu8rWfSK@OCSPr+tsoU1f0Mf*a(};Me2|5XG3$!FhruWBil^sD>P{WR0p4)>yKXKHBMyuU7K zZ5`>ar>~NafBd+43$w1F_P&Q_IET zTDFtIF-Q)0(3ChGucGtc>SDNmN2m18k<8S1dybk%IaOrn7be-(=pO%cF^#@Ri z?hRkieKU_}d)~LTGI~+1sNy|8Ug_NDLi5t0Q_nfc6BSk7pSc6IC>K}ips*AcRvvX; zi&~s1rvl6}0e4*iOUaYI*G&z@$3zIXkXAaC2|%OSjwNl{ zU)HB9{<*EQ8;(t_Du>G2;2#GKPi2g@k&dZpff-S}0XfuNb2Z9giht*69gS*G3`{2B zl(AeeN&oYO{+T!py+C5fWJ;G7Q%RfqD=)OM8vK)N8hJ657E+Y8oz114juf}~QGVyP zuyIa=)ZlIVU^-(#EupdR)3vJdrlBLBWCR6>4%4kZGW8Ber7;_I-jEqG^CmDK7V+o0 z-I2?dQ4(#^Cog8?C$x{FFaDaX(P=M%A-i+v$xpY@Atm_4UYI^pv>`8iwupcG;o2eg z&pu{JLQ$Lvf42{O2BROYg2UPmKhq#|r^=8c~Y86Q0iyxS<`3S6je)kAC2% z&rT*bei{PR=GjCsd9?T9)L$I}FQ)w=-bV=oku|VGKitGf#da)AU8IJM*cTiq*?K`> z@@2w1ppe+mw3w@C{~Y_Dw<&F-V9jvx$iUHi3>evb;WMoQ&)+$;_IBQ9!!xD`P$<** zjYR2b%Z$xpBD06zD)pn#RJDr2G{(_E(Q*0~|KumkAusk5qt7OecBt2Aj1c4i3IaoB zVJxocffenoS#UEV9-zUE6|I>U01%A}$BJ*>X!hODyDVnjddJ+h1o*hk{+-)AsaXqM zFYP4bb9zlB4Wh)NH3MW;-eh(u!SXT2muWk`-cKJ7c5T=#-AZhjTAZXivpHU-wT;*O nI__xfymy-``}62`;m0m7zP&q526x)$wOq``mx1;C@;dtud`J$h literal 0 HcmV?d00001 diff --git a/.licenses/npm/lazystream.dep.yml b/.licenses/npm/lazystream.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..e198b73ef25a01af3e8c3e68acd99e5d46a96928 GIT binary patch literal 1361 zcmZ8hPmiNE6utpD-|J}%>@tqceA_`WNe#K_ zBvb^kU^H}cY;+d|y&2`yToKbdH`(2GdsVJq&QWW|?dQpiqnxEy`nuJ~u=$VhpjxRd z0!QV7`-9yD8?a`XTWNQY@r30S3jmz_+wI_=U+^nHVy4@yuDyeI?R)t3!{cx8dj#bV zsSsMD-K@@wGqa5XLX~nJmGx0US?JN#`3Bdy(N1 z@aF6q<%2+j^wZ5xyB?{mxwyAxmI&yevDUPzK~CsQyNpu1#-S!rT+|>fymP&Thw6@c zcu!)TYz9yo8L{PWgm2iSSsY+n-TFh?P3SXi%?wr!!#5U%87TV?r!?o)urKs+uZ{HI z@Pc?tg#MlkYr8D7MrkYxah<^$N%^yEoj>tKT+A?-H;j3g)}8YC@siL%jU&z3e37(| z^+ssp&^oPxmP3Ztt>0hSz8MBMuZGql(F0cRkFg|*hl!W7b$B@x?qxDF>HZx1ezWQW zgR0oqFR@_2D=0j#Q7`y!Si(84*OIJR#i|4 z;KwrKEDeF@Np?zk{tQou&5Ig;5Jz4kab18Hz0+}4Q6ETpWFk4BLj1%tUcZL0=XLIR z_edN=8H<`Hrz{pwo`@4y~bXb*LJ28FRGJToT z#&4xoRei%W^;R^(3T~#8TD81mM;xfF?aX{O8^TUY)y^i3D7iFPRJP{&`e^2pTQaKG zB{zs2FQO!mCPbFM*g5@+Z$t~#U9>pXmeP*PFFCDLFDqt&l$flBfK)1Jwb=JoX+u9> z5h$E^HixOw$JwtFAMTzRjzf}mvI5^yX+C{60RmjpeBqk67Ya@NHgBfHiYo?Dp z@Tuj6I;akoYHyj4fH?5a1!ITml7fzHN6xCS2U>Kcdb6~^Xm>ZG!O?I+6@#)BCu zJ}#Ns_0xVR!5}0sKz8@~N)K%Ny|HKvftt9P^n>$(_H=CEbwqi(DjvfuqBy5*mVS+w z(UNY$9M3laJ;ud4-4%o#S(p@0l&&aDp6ItYSq|Dqzi+cB&ne9)e%Nl}Xc*E{1DJGdmI_wueEH1a?-iW{qs8LWlyblB zN%}pQh>9PC#2#jRFAf*l5CNmvHSB^#H|(QFbXpm2SXV=N=Qbl`Bpa?$+#sdq{+hv6 z+G33SCE^{RtW*ngoBhMJn%zx5%|06E$~#x1N>6jlFTw3Ee}%&loD3%}D^Rb5#t Ar~m)} literal 0 HcmV?d00001 diff --git a/.licenses/npm/lower-case.dep.yml b/.licenses/npm/lower-case.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..e5b04b681f71a90507d8c35f3eb567ce9d4e5e74 GIT binary patch literal 1873 zcmb7FQIDfG5Pr|E7;Rs6B?8w~pCX;EByl!Y2}D3{yE@&20S9~s7};jiRQ>TCo8&fk zs?=7BL~PG|^L^i#VLqSFde-p;wDQE&ykwfsUb)gj_6vCQ-}#R-a~|-#AG(z z0&>NAeUz%xU>XkEDACtoSaC23CH>d>y<|`$=(Db$r%}lJ^>+J7KO1y_n5G%TbkFFCd~T5@%!v zVE7+q0e|5?fE>y0Xb#bo5BIoun7N~s9L`GAje+~}0UqD|{0l5CNg$3T+&8>!<*zry zt&mIdo~ur1YZ?d*4OhH4LyaaGUU_gtQ6P_iLRHN@>l5qGFrdwtAPd7pZ~bFXA_>O^ zqfLWQS{}`bDUJyhFs)@N7-B*t%dz9VVaC=xik54*x2?F#E*WkvinT6H~! z6E;JR1{Am5D=m%(qA%OAvRtmmtw4*XDi+>3q#Yot7&WS~oIU7dC64yVoy1`*TA>>c zDq-P^(O{&uo33%5)e}es8clU*h$2vf)6L<^(#2W7&@1F|u?#PrgcIJc?-hxO*Kt%m zmPV5>s*-4-tNewR#_m`ZM~SUGS(&BmD`B}e z!4h-h1m6XUF98DQ3FKJx0!InvZeT~!)fUmiC5>qQ;yJJl&0~wbNm2-5AEr579ilLW z{UO~a89^FrgpO&vNwE^ykvR9UGVTHShzrQJVHDYN4lg{QlGJjARkD9c>C-lcZ4#{s zZY~Kj43`m^%Avqj6w;js>u?u7S(Ygzh&1W6p%YVh-V(cQ>xTGSrK+zp_Xc9hspP3|C9Cv*VNi89`Tt1a4etLE zDaO8P`OwHhuz%xn8yj?@|5FS<5Szr^#?8McbbI7JTsSVr)_fS=zkQTu(-6Rq&Zp0_ FzX9I1Ttxr? literal 0 HcmV?d00001 diff --git a/.licenses/npm/lru-cache.dep.yml b/.licenses/npm/lru-cache.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..501ccc878bf7b4535d690447b84b2b991ea66434 GIT binary patch literal 1011 zcmY+DQE!_t6oudU6<2-Qq>!cATi#saB$kNX*-oo&+5;g@!vq-Frd_1{_+6V;-JZbM z=iKicAkXuxuR61W){S{x)fbb!80QmW$g(zFaK70`pZ> z!}mF;`qGXF=%DIPP}n}W<~RoH{A6%%T-W#*9D)TTou<0qxT zq>V?|b9k+sfirGa{WZ}HqZ_O@@Y;k6;PZI3V}P?Um=-R^nd23nUDXG3n!(`gOLM}G zQjxL1>S$j~vWgH>u-*ntobc1+;e+^nYZy%Bpy{D%+lb#7Ysx+M}d0%d6UVa|*4 zux5Ollx%-rG92^a0AiC&_EZ)-G$nVeWcn!qY?$U$sW~tXTmXHbT!Y$0gn!uXD1I5_ zuB5OLGIDvMQ@C>ZUo@}WC+=$Y*<&qZ`f!5r-y*8&F`;Krz0 za>Rs2)nhLP%dO))%1#)#x2^CPcja~J?!l8af_ESXL=i)>l#68P@5_fV|+VlQydw$iiCQ#-pwvP$|w1jPuf1wFU;4Uih`7VS#W$S#$06U5( zV+Y7r5M>AWn`X(BJ^8vVNLfN&0Nrd;N|F$07N@&}W-suJvssSs6~(s;fmsd=Nw08} z;M~ebvLQvhMuzB_rj#8*SW%Wa+!X>xu#E~v<6RmRu-z5gyd)?iLFkNTs{)zGhGcB+ zp=gHZK)&DslJ!P~*CxzD;=i5U;U)BuPd72PBd?u(cdQQnimmNG%oJMpLLK1DF z7pJs<9K{#D^{R5eCjJOHBmBgS=9$YV&NEivw~L@DCo+A?3fHP3_T_TXRNw||2F02ku19RL6T literal 0 HcmV?d00001 diff --git a/.licenses/npm/mime-types.dep.yml b/.licenses/npm/mime-types.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..832d2052dcbf6cea60f3385d55c6f516f403dd04 GIT binary patch literal 2089 zcma)7UvHy05P#37n76i40=Ij&FVXJp(!^=FBM<@EURCwMfCFv;Bil3==|2384e7Ss zUUgEX6np0P&t{m-W|NjSYz_@?*i0WgrY4U}DlXbNd~`lIzkZsS)j70XGf{ohP+Xlxo99kH38Q4gL@<)fH_a zYD@Usuy6OGEo+uBDUVJrn&01U`~*wUmo-(es3ccfbQP0u&1)rE_*~%LH-#>A#oN+6 z4Nw+q%VfiqNes9GY-8CGN=Y$^VhVf77>GUO6_q8Mf)+sABXpQCHi%49-Xf+&qL^QI zG}XwXFq6GLP|2{N0IHP8ImTT;A@aV#l&LnHdtNgI=elAR<187w&Mquj!DtP1>c)rW-WGoR&!NN zt)2qIlsxM-Rx7h%FTm7za)kuN>e`@i^k9AeP-$zB$--b>sAG)H@*nV4y>x|cC!SPHwAuaD~+s>$CO(2O@>9rRV@Dtd^(RY7I zmT=}J_8_yA-e@_QLcAq7``I4gBec%OQL6*ES|e0#OY9W*hiqIR!sl1iPgl zUcn{yh7rC}KE7B8oJNo$=?Lc&>|5DLHY8rGk-@w413$f)!pcuWgS$dt54K*M`iouQ z#jxGQ+bAI@V~NnAAFg6#A{!E>j)n3=TnF+U7a&=CL0~Dp9Xg4v&PBAniT$f}3hO9X z5?s6_sL;C%$Uqm~SfEAV`I{*$y^VKel*SOD_}G??DzDeXE+MCfe~Z+QLX*)V3ey-L zhm6uFPM_MZ{e(=xi~Ym|w2C97FcD*y$uKm%AsLWN{6@W%^K?>JW42~+z_WJ5O17(GYfr-r*n5cj>U2A-R69Tv$te-bEvfL)ZBG5T9mAH zTBh9+U++G1^NQsU%Dq>n#Qibg-G(a77s`y7hGL6)S?*-2&?ZyVf zIrlpkJe^L9&a`$8t?OKCV%-#1>x1jNIeeXco_#6eZNTMjXp3-ZTjOtYFmO8ed&t|Z z2iL(bb2Xv%Ziq$Gw{|cmJ1@?zwp~E63-$XX%!?_6{^DyJ=1{ScazzV(Xn)5!{J{}` zZY(fWLN)4({ITqZn|G%s!iV}JuwYCL-)Ere=6tacDNJ{OvhSjI`%CP77-d`QTNhFu zh&^0_oj{FF6KMN`JK`HJIjRjwa&6g4y?1o2?SW7^mwa=FIrH@^B}9Um6B$ za+}Thoba6uvoW4tQ&3{5pNXW{GuTS;#1?b`4@BYo0SI3}+C+AGEhH?kuN7e%1*EC~ zRg!ScsLD*wOs_%G6_KbBC_}@$IWMc-g7H;Wvdy+)Smy2kVwp`gRF-QrC6BCP`XvJ_ zndVff888l90DYodgIXtqf7l)=-UsqnQCJF@y$F8+wWTE^)dbNcE%gLF-ba|H6nK5U z?a&YRz=CYZiYmZ`Bz>EX+15lWft4jDRJ%&2BugnaPzi;KCF~T%B1DrU$37yon!xj# zBBD&>gpW|AW`ZXL7T1y_CQersTTx!pBo~t1PfJmlNRk71a{gx4p(T8KS gvH%qyPJK@!nMccu5UAcZd*NEbI@=+xgDhK zW&qp4FMZLz9&8`7#lg53n)i@mOd7)zYg};1o%*Yg!|jOyXpPy{byia>l(h#K-SIaYy$G=ZV!d)!eDpj z;08Y$Y|PMFACp0FaQ0>bHF{29$^pRMGpoJxTw2pqUp~= z@4SH*8ydjx@$Jq54#r?wXv|=CS2zy33uZroesCANH+yu{0UrkR&RtBhiV$P4&IL@I z@Kfdfo%n63?~P6k*QZm&x5m%LcxpvK@`ZXLf@1ezBlshm(>dG_iSrvE)g0m`vQ;ZC zV2&Lw30q4bWeKPfq*9E^#Pr0}3Itseff|l7G<-L&igG(=)iNpBdQ&ni^X>qAkxbT9 z6e~0(53FSBIRPw~s;HDRU=>sx=p(HZ$W=u6hwXvl%^(jYg#{PMi&W1bH?&}+oFKZO zg_@wp+X(X%952$hE&Aaen3FYGQVF;arLWU5+lna3v9iE~a$BmHWFhz(N-j~cfUTrh zgeVf_*hhqx6L?xtL==&nR3lWO7_XuNiz`7QQ$?30ThgkaQOuJg?gzA-kyJ| z*~BF!yEfx$M(beC!X29sY5td<(ckzYN(!M+bJTBX%L(5tFL|nXPFTtu@abI<}mXJW^J`8FxraO6zxO5C;y(gHDl9eWH{y*}S9D zV(Je{(mJP9DVd2Bn3T)RMwFU>=qO6A=traNW;bZR`NvMlABv6;y_7xt3P`c5X;P7m^xTVK{L)lx&Yk&M$|v10me4_m58 z;p2b{V*>=gs0mA!{A>?yyMxlW6aqbIWNUfN#W0%AHoQT{iqS4wCXas1DA>_9j=ls7 zwxAn-hu=32JqF1t+9!mH*bkE@ik9SuPxMC+E*xTiZezCFQ50JZ!DhP-7}kSuzTPi_ z@PY1eHjEPdAK*R%IEg3$=>QinoL$m}#q$-={rg}YBu@@4gCqp51zkol`Ly-pB$)5l zeoWhayp47YG8TXigK!yxiEUVzcwojFu`l>RyOqCQTRMLa7xAcb9&MlE;9-@}Dq1fX zHtrb|`uA%_mJSBzYd_dHwD33ngHah%1mUqQ8&p27m|5zrhtNa*JPD%ESei#+662=> z$8jyb?S*1^~%l$ikc2w>E-VE!6-Xj%B7 z*t?!YG4mH2=2ba3hFRoVIy9!g4bM%QeZv5BySDs#nSz*|FUphcX*%p*CZL&R&)9c| zq3f#G)78mg^^oQ#k6#Ao)eQA;z>2UarjWZ$eT`AeoC}QLDQHGw4>fnWe5*^D=IU0r z9sdD$zU@DIz+niuqJpI>QKC9|st~-)l_z@G@&Y{SIUnz{xQuZa9*O@Cc7COL1iv7B zirR$_ZJ!)7$hGncU6pr3^0((_sJECQn@qlbk}<3sd#7Ubb`|^dfL9~K7T$y@UXZ3x zQyc!JA7|{30@J2}Hp}`Q^j=+R$G!Tb?q3byb>2u(>pL*retdb|Gemzex?f-F-}JGO jSyp&$SAP>4o%}C<9|e50@cl=9I#5pfnTr?v`Rn8#R8z$@ literal 0 HcmV?d00001 diff --git a/.licenses/npm/minipass.dep.yml b/.licenses/npm/minipass.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..a2e8bd95194be7fcea9d0d0645f13b94f4929bde GIT binary patch literal 1009 zcmY+DQE%HI6oudYE3W#qNlw;vlPcwnIwV1Ia0aARH|>EsBu0vj1-M@+4x{xw}9LE_56DlFFmeyeVc`$ZMDBlTU&hw+xBPE znl9>y0&qvrutN*gcsHCH2+9g@;;rffWrzXOu`ZL^If4!aET;F_4s5!8%p5rrUUBk~g z$htWXCK{iE?ha76E_(YkMCZd~wllu9A?1eXUM`JKKG{&2!3!J>}qB-Qyd-rS)=75em z;=_P`a?fV8N)S`X&P7Z=;*XX4590TwzBk%~?LeQ;3E!G9pW>+v1zD}s0}&KE2|H2U zvn5@^6_Gf<0>YP&Hj%yBR05XR?UJyq1X7lODnYnnRE|s!Ol?5WH4&((P=X5#){*jFdT|3tA{Vd;b20d5Q`z)sH>;;T~9$Em>0uxR9i8(<$4AC|O}; zfeGclR4K_yR9h%3iHa5MCB-5{ktD}HBDBomVM7s7Byz$hs6w%dCj}N)f+QwR*Ckt1 zUeF}2Mun;bZro$1M?nrmFqx`WdzI908POPhI7UmZ;}N8uAkD}@1vX<#M(5T4M>5Z* L`+~#DK4f9obG6(a+e;@RNqB*=sIpL3t*xiu;yK~ zm$4~^R=x>%4G1vnU!#-mM9+_65w)@w$|8hzCt?rzN1JBYu>i9;TQPSaoK*e!`?bxzs;3!w^3-TPSQee^xvX( zfIkmL2&6i=GdBW^Xa%>Tfk8FG0BV8_tv>&}zef+F(h+7WOed{R!h@i6vA@94aOFf3 zkD&Sh^@*FKh{0*#>HRNKdghtmxCzRvP za~@=iZa;Z_H{~S$<~9&Dg0}%ts-XXR3}@+1dT{8`IwNb36N6NBJ2YO)^|+OtoLD@3 zh}Z@|bTL?T<2A?7=|&#>w+I&dVc$x7ilLDnem^*@#Qdk&Vho`9tPNPvj`9#iqKDvH zz*S|a^Lb%bsAG!E`kgaQ&3_%qQP*KG3aK$9tZFny7?{Hi;BfWQ= zv1uR#@V$N)!PhuZN;|x5FL}I_AZEPn>BydN(qJ#90Fhg&0Oz-_*3fMjK;LC0W8vQsVk1hG$x>i(Lg+!IHdsfno(o{sKQ}zKntV z+%i&@P_UqbZnhaExKHym+bwDS2oKns7Zv`WaHbKsDxgBr362u%UBQO1bdBiA1I=jl z5(lsqt#XgODi|cNO;| zm+a69^I9P-wl9o6t}9p<*^=Pq13`t!LqCRmarLp;2)JXrMw*M|AOUo|6m(}_90nQx6g`{5a1H@ur@95Q_R{`@QY E2g13!X8-^I literal 0 HcmV?d00001 diff --git a/.licenses/npm/no-case.dep.yml b/.licenses/npm/no-case.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..bee8a3b77f2fa8323bef525a4bd72a068c66cec8 GIT binary patch literal 1875 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 literal 0 HcmV?d00001 diff --git a/.licenses/npm/once.dep.yml b/.licenses/npm/once.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..af362acd0ce01a7bdfc60b01ec237071acc38bed GIT binary patch literal 968 zcmY+DQE%HI6oudYE3W#qNlCUzd&(PiaDwDO2Dnu>?SVR^u@oB%aN9`x@w?zw-Ck@k zeCM8X!OP{c7))>1;D*)~&(?>|4Qu$e`o8*F#OsJF!`K&L>U-m_Ymn0b22Rt^M%)PY z)wJ<)McP8_dRv@bZ%6ZF*Tto4?GTXfLi;`m>tYGPO}@2Z4K*t%SF`|#_BF2I4~_uz z*#c7~)H7e?kEI*0zI!@H_|$#|7K~}(=L%GNzDzb+4`w(*>4xaL$0<4=X6#^n--Q$j zqJt^e1+=KNfZiRu6TT7q;yfI?Fq4?#+y%6FiZ8}nIN_ohuGzyl`OyUnFI_wXeot>V zML1cD8R2ZbeZ0bxH$$|?1&rQ3cSn0fMHBI1!92QWo28P8InLlB=FIkUIu5ZKB&ZI>`7Lx{y&mcG2ajTkAD3w{sJW&9mW6v literal 0 HcmV?d00001 diff --git a/.licenses/npm/pascal-case.dep.yml b/.licenses/npm/pascal-case.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..20cd14f631e13db23301a4ea65ac1d190449de10 GIT binary patch literal 1909 zcmb7FQIDHA5Ps)ZjJ7Yk5`k;)o+4E}HgPuA5r}|vZ&mfdfD_yTMz+~ps{8RbHpy;U zRk}MVQm{Sq&G&s{hS_Z9^{nG_7?`eDJFA%H-ZNKP$bJsL25*CRo;eK|&<~xb$F5`Q zG>1a5Uhk#qK=eie18tP(4cD-lcJ?P2um_kROT$EOtz}Rl3C9LqHVr~)xi?3qI40DuntSy&IM_YjwPgQKXb4WWt zR55B)V>$cK$y)5~KX(#`v22BIe5i$mFGqus+HShW`BqOT6<(NjqK7B~H8|a`EM1)S z3%x=fXUnwRIpPKTUXhr1?MKyPX*3C=YKa!Q%3pY8?2c8jm)Odqm08KY7FIjn9;d3n zV^+#%?sQETqL&6~yB4^nI5JbW&qumpZ3`to8;G?<@8InAMH;FdOKtE{2-dO(0KK#bcBapgC-_^dnu8CEP?gu5WyJq{TYj6@U?0loU^pt{_UD;18NCeIS2s zGm__!W{wBlY-37rpC*fVx1`Af++%K%;=4fcB|zXJg#wG7;V8k}6>LbhSR;CLPh(m< z`3`JFi^O8D(hMTlMp;1@yEw{VyUVs|PLReDp%a>{GOR>4Bq;){jC(*n;sWw@6vwul z!;5yPB(q#$k#3(d`miowoyJRooA(46M)xt9%AvqT9MO#r%V-llSe6;2h&1W6p%YVh zTob!(>qhun6f{k&q(zz(87_TPoE0zWk2EJfL>bMkIjbz)Ok%CYn1xjk2y+uMAzAyK zVJ}_65NqHL4Y+WEC5d9h!=Ot!lCZ20e(v274LsjDaXEU`OwHxuzzE79UFF{|0aeXsZIK>183h;x;}EB YFPxcUYd#F`uRcxQGz#$3^Xaqq4?M+bqyPW_ literal 0 HcmV?d00001 diff --git a/.licenses/npm/path-is-absolute.dep.yml b/.licenses/npm/path-is-absolute.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..d8fbfdd1b4347925b38a185cb28f7b5d7b0df8da GIT binary patch literal 1440 zcmZWp%Z}SP5WMRv8gudhvSzbKBM6pb(_7zOR#1f zDrr|RS403#ese4Mj=uoPM#7$zkWT%uz~DX#M{Cnx2X$#2EUJ4bl&%K}g&CUB!dn|c z8=}81oltF3neH7dem(H18SEg3PFXJ-l!ZnP@^ppEAheTp4Cg^gFlVS5FEwv)Oo+q zE95a-W_{)rZ^!S7)WqvN4jM|AWE;`8aFVluI9ure=hHW7sCGPAhnGT$7H|0w=Kfc5 zGV|C`DDrLjOgIHrz=7u<*oJQ4juaT*#qi9^U4AS9D>%u@7s$6jvKM&IvP}&12brdCwRo(EXV%_!#@QAmpPO;bcSOTd$+Kse7!?-^2kzFzQh4+ z%gW4SZ*vX=4uqF%eM||5!;v5If+CF#LT4=7a-2l>G%FLFj5(kmFo0r5($tR&c;tvm zxaSJ%{P4or)2@VFo^B{6A1N{uPEJ*bQw}#}`_iK=%?qt%{ST?<2{@wcLZ}{}v)AV`KIM>_N!^8hy NqUkQ;Tlnd7^e+Gw#qj_D literal 0 HcmV?d00001 diff --git a/.licenses/npm/path-key.dep.yml b/.licenses/npm/path-key.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..7351b52d15bdf1a4240a08fea3e791a1d6dfa873 GIT binary patch literal 1309 zcmZ8hUu)wy5P$cl82Z$LlVjPpa2%^9N+Zs(gRE??Ecc+;N~}FwGLqbG;6D6~YBYO=e0E}_`LkI{FH_3h__}OGCvK2bk`L;sQ{r< za3Ep_%Dif4&7e$xSLw7o^$HLN8fU#xQhegBs;Ut+HM>%6J4Fba+4bRki?c zC)X&yf?G!h5Y&&bf`9QFz@7;x=GiP2)^@x)edz++HxE#2(>evUb=~CQcb|?voxWTK zsrzMPhdQCjoHRkTIh>tRV9(HW(p^*z!Gbhb7%?jx zu%{rk(dGgY8Wa^fLx(Wlp2M3&RnoK|y|;~)hzG50rkI!vk?*W~<>5X?dRN~j?j90J zt7H$_q`2R&;7y0lP63?q!RaPqMPsO4cw6$&v!XIGqJ0V0s>$TGvok zKEWf-l@)G2!~I84QGr0h8x*5Bw}n0B>m4GKM^-TLlEapXGGcBKl;97Q3${KMgu~&; z4^>T(euJ-)v7uOeq^OKM z7IdaUQ|p4TeGVJ4Cr?owhYAJr)OJ(%yrZdvd;~vh!KyOaSXZUsc+Aly7aya~tfn~- z&gvM*mRATLlj@Hb!Il`<5lw$+*-%m-7Cuk;Q}Z&LHw6C&efvB6 E5ABDgmH+?% literal 0 HcmV?d00001 diff --git a/.licenses/npm/path-scurry.dep.yml b/.licenses/npm/path-scurry.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..fe5b188897792200040e569a8c1ef8a0621d8060 GIT binary patch literal 1880 zcmcgt!EWR>488j+2;|TW@)RAuQD^hiJSz(L?=kU;kL8WyA?L4pp3nL51Z+ zv$B_riPWl?NV$f%ZH+eUl3l9a4?L=lPn9*AT?GDYC-&-ce5mj1`|Wi+RY!_`3Yz1I zo}WHGzWn)E4^2gs_***BKX@X#pWxe^{>JgbR}{D+|Z{fj6QPt z|G77jRw~q)SB}IebMcNzMH(jE)5u{kQ7Wh8Y4+hlvq^o9mjoYun`RX<0->WhTRza- z8_P5XpI9g3I?~>yV9rzWA!cwJ{D9=@Y^+I3y)*ovHIGR-y^?%#bUci1GXb6tOLY@AQjcwiRLg#sd5Nxn;#Bs^s4Iy5VzRpyCf_#ky@1Y9~Xq^Q<3mdp=)o{-q^()50t?vclkf8a{BkoWx}-(6FM5TQFGx zN~{gsnPwkBDtJx=&Pt`;PbuScuRu5+NZGgsMmc$m_E6gd0IHytyP&Zd{Bxhu7*BV1 z>y&CgIc;q1LwC1=?(%s3axL}oo1V7$dTOQnGEL~4X$|H}dJ1vo01Lqrd!Ks+TjNwA z?T67CZc0U8R`tGqeh(Vp}a4 zmK+~!e!9=-MlF!NO)_iHs3gPmpbVi6-{6(}M4t)l#?NSWO(Zi6+!&SEzM1Gx`0xHl zcS3X7!ZNVhDl-&wqNGK}X`2Ue%9$YqHWyZwsItm;ZRQ`mFR0?(7m;pXWI0^mSAP)~ zUw7#>0M0*eE3QPiy}kV)*8{wUPC#a>X6cfjVbUCAceZdtL!fFrWQoP#Ft(TqcTEV& zB@9RqN@XR%=D2d)JCZ9BJ~$&8$dp=FW42;?glp7*iz#BmS}50u8bT(6cS1P(w#);S cB`J8A4V$7R%N=}{Wv@|cwL11hU%poV0!YJj9smFU literal 0 HcmV?d00001 diff --git a/.licenses/npm/path-to-regexp.dep.yml b/.licenses/npm/path-to-regexp.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..03207b9b4f892a327e59c2cdddbdf42769a616a2 GIT binary patch literal 2111 zcmbVNUu)|&6o1dBI1~mgIQHG{*h8S)xrx%4Id*W|+m&)3WLvS-%9ba|O#}PzJCc*G zE%(wfC^VMN`Tdi8Je^J_9c|eRdTN@fkyFKL_S{dNn9^K!Gx*K_?0=e=Lyt9G-%j+< zwp1NvK%RTWv<7Vsg1L4u5;9if1`LJ^ZVr=1wydW$n@t2SS*H=C<>vIDXOk&tIjEB9 z8N|_?BwI28FzngP;BWi|kT(q0Q4aCg59j!BF>zaS*&h_I8w2O%1^n{q=U?GU&_@QO zEfhPzdBcQ|zZZ6mxh21p?Xh{oRLiyX2wX$M6e|u;E7}=Wd9YKAf!smaP*pR}I-}hI zdQ1fyWML@pcvl035=A&QSZx}F(sF0^R55I*fNCvEP7xC-Sq?4h3^kT>#|6`HZqVJ? z_SkWD;fN|mg+t^WA~HB_!=9T)4hArGqj+g?Jm6g^hRSL=Z3~VOk1V#`C8Ql7x)?ON zv6?+-WyN>)KXVrQp%7d*9#q`I7lXk{Z5Q3adDc%L6=)3Ap&<%K56<_$DqWq;3$sEU z$H=r@+2d_^>xhrKc7y7W8biXWN@9eL`GJ+ju2>g4iATA&HcQ!6+O$+(N zoUidhbkd+~cLeTGoS5;nk6XH-LO{We0U|f=9GqP~Swpu&p$%RNP6hN*Io|h{{iBW* zfo;0XZ^Mj0w1rKUevKAn0cYVBpU*tFjq+7`lLJ;{VUpiLx`Z&fgFm8V;Q{$`lacKf z(#+|I)|)sYxE>|*_+}9$*KmcsNs8}6gf9UC=PBe!dW4Gz_AX&fviScHc@;lFg zEu%cK*vmA75H?|!NAsIF%wThqZPG1484H9?qGXvN6Iqia_mLUbfPBRV*sj7jwsa0J zyg?_K)e7@;bC*Tes~lEoydb!EMNnaQ6_b$;4bI~*T6?ev*WtBQnL&z3qfc8pDuvq> zvCEb>#J_nSrHQpPPm?^uM-Lrm`Ahq4v?U&dS+up`EVFbynza#Q7qTD__9kRRvhlmX zUQP*1Y=Acyz)2Gi7_5+Onqo5eLs6Jw^aheT9K;0bE!CtDz9lqiLzHVmFLC=Mt>H&Ye`7i|~_YbZ3 zQsAU6o6DAJ!<0+?eq?>CcON$R!?PVY5 LCw{N*zfJxD`N6L< literal 0 HcmV?d00001 diff --git a/.licenses/npm/prettier.dep.yml b/.licenses/npm/prettier.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..b10978d020669b80a35589c4f2e4359431175c96 GIT binary patch literal 314822 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%0A2Q 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 literal 0 HcmV?d00001 diff --git a/.licenses/npm/readable-stream-2.3.8.dep.yml b/.licenses/npm/readable-stream-2.3.8.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..7cf8551a466f39d84d58c3b5ba816ac2af2f33ef GIT binary patch literal 2691 zcmeHJ!HVlP6y4`5E?KqUWT0qIM8WTdFYsgVoo@Yv4Yq_IkOEBa;mW%=vO-FgIdeLJ&5 z+X{1AQ4s>|mxu%nR+>d4x|%B8-$f~!2;=wd|Y zWF0}BlwNps73Lx%a+*YUqaHpYL7$vZo$4+y%Ucwv1e*Y5_1V1(1JW>1SgR`~fJwEk zhE{e?IA8Ou8fob#Z|uC7GUh+~LIJFnq9N4<RO#|_?AIpKb#t6uMySC!^1&DTE7?$1C7zu584DgE8#1Y zD`=S7F7Q5&=$V(h>{t>a@;EJDDBDt;zR>SH z-9*H`9dcF_l;wd3-yagru+GzUa@_Fri5`)gW+g7ro|gbFGx9|zIL?r}r9I2nJD|sp zJmKX_6u`E;Og;8C%PFQqoR@rkOyZml$NZ2L3^X=?PI+Lg4+k`2S+BLl#%EpfEcKGsSz6|Jji5L$KhmFh!6J%tUV!o_GtW@QTZ}AJ0T6OiHX?cZ zgJB=1gb;7w5eD2j(T2qd@QU#e(jO9*VbKqt@KE~Jn(haQzHj_}@U1V53m0RWkEGF+ zs>97k|AxVNznE9&db@gfxZr9Jr)8zvhgW^Wlz8YcT5;2RZ52k@?O*5KZy_9A(pAgQ o?_uzUap^zAwQR~>jcHVR-T`0DaXs|6KDKic9+R~{;iBC2c3M`tedv(k)joVrtx=WiEJ8HU&1`(NtJ#9AzL`qe6(xMl(t^#1ocznJ z=x;pHl$DePn*dVNSsTxrgvDdi=yw2x!}Iw(e6JzJsLR!Tgjc$AMxAa>8@r^qX(;Sl zmdg#Pf}w!2`t06?0clt*tksngz@%DNw^nveIG^*Z8fobVUxIltM$CWoi2_(HMMJ6! zC7QPB9q#L!^GYDG@;DI=Rn4vTT&C?twQ9@)_y9Lr02OdE3Y;Tqb*;{Ke9IuQznvOo zuMySC!^1(Gw0wtS9rM!cXyo_*mPwxM}k z;C&v^GcR}9u_TR{*Z8nb)K%1an+3PB9(gyyWX+66bU{=7+3c zps@jT%F}I*Ol;56a*51XBlZO^RP5p;@#z9ye1wwRbES25c**(GuB2U-Y#0_F85qWo z2^-Qu;5v!VZ=@s^B)H5tG;7Og!zh_-fOEc%I^O< y_kIn>(Is8A4E-JkZy1OEs{Ge1^pp2<6n>7v&r$d}3jgOQ9DY#ozwVDeXI}x&7+K2z literal 0 HcmV?d00001 diff --git a/.licenses/npm/readdir-glob.dep.yml b/.licenses/npm/readdir-glob.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..cba05910daba89dfeb4b772956fc3e2b183c990a GIT binary patch literal 12260 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 GXa5UwV~imH literal 0 HcmV?d00001 diff --git a/.licenses/npm/safe-buffer-5.1.2.dep.yml b/.licenses/npm/safe-buffer-5.1.2.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..193d9e89d7208637535aad361c152b62dbb856a2 GIT binary patch literal 1431 zcmZuxOOM+&5WeeI4ED4JWEm;Yi*K|_H!LIYTRIrGG_BL)gT)&8B8Cg4ekfC z4c1`PtQ%prkg}L&1q}eK_}gybAN&VU_5zNqgmkHgXFRL|e-*3iP0LGf;kjAC-g5$} z)%;gqwenr`OWH~3Q5xqHq=8;&QQzRAtI3KsgiZ?qs)MGl^hJbV6;#s=uGkqYP_?b( zB&Q2h&>)@X#cbOnlu@1isI7Aj*@BP+y&RyFe|CRtvpdH zs=*`52@wT6uHge)sb&jW7^`LDa6*t%Gt8~i^0*!(HgjQd<-Qlj1EP!Bpc|(-gi*D! zb6?>tUgvs{rVpW&4!)i(W*QgtBMP0LjnZJmu*gFci5|S~A1ZyG>lgM4b=+HKT;u~^ z$A2BkMOQcL38}G3nAIw5p=W* zDBF*~55&%6|OmZo*x&puEkh|EC__P8C{TE`+dW{PYF|81JBrihbBlUNf8f6 zmU*i#;ZYF%yqP#9$&p55i)qVl!l^_M|JXnA3cmbe0eyXT%Mo|uvJfMsFRNgAmbmb~ Hd=35u87RM6 literal 0 HcmV?d00001 diff --git a/.licenses/npm/safe-buffer-5.2.1.dep.yml b/.licenses/npm/safe-buffer-5.2.1.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..a6499e34da617543f8785a9c3ecf5e49b61c81bf GIT binary patch literal 1431 zcmZuxOOM+&5WeeI4ED4JWEm;Yi*K|_H!LIYTRIrGG_BL)gT)&8B8Cg4ekfC z4c1`PtQ%prkg}L&1q}eK_}gybAN&VU_5zNqgmkHgXFRL|e-*3iP0LGf;kjAC-g5$} z)%;gqwenr`OWH~3Q5xqHq=8;&QQzRAtI3KsgiZ?qs)MGl^hJbV6;#s=uGkqYP_?b( zB&Q2h&>)@X#cbOnlu@1isI7Aj*@BP+y&RyFe|CRtvpdH zs=*`52@wT6uHge)sb&jW7^`LDa6*t%Gt8~i^0*!(HgjQd<-Qlj1EP!Bpc|(-gi*D! zb6?>tUgvs{rVpW&4!)i(W*QgtBMP0LjnZJmu*gFci5|S~A1ZyG>lgM4b=+HKT;u~^ z$A2BkMOQcL38}G3nAIw5p=W* zDBF*~55&%6|OmZo*x&puEkh|EC__P8C{TE`+dW{PYF|81JBrihbBlUNf8f6 zmU*i#;ZYF%yqP#9$&p55i)qVl!l^_M|JXnA3cmbe0eyXT%Mo|uvJfMsFRNgAmbmb~ Hd=35u87jY8 literal 0 HcmV?d00001 diff --git a/.licenses/npm/sax.dep.yml b/.licenses/npm/sax.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..bd21128e5d99ca4f73ed94b882650f39c445e789 GIT binary patch literal 2329 zcma);UvJ_@6vf~96jyoLl?chEZ>U>oFax+XHnq)W)2h-AW(cmZ$MOuxM(T&}xnnS! zsN0r@@W;Mq&b>3|=UiW34{BBEF@T6N?ntDthMn8;h2kxc8g}SK*_E=S_eHoLe zNk8e@=`C5;YE_l>BYj>*)Tq|#mdcubR!=G`+Olzjy{UAg9`$%|C<|R%s2R7{?fI)6 z53b3YV_RrDrYH<#oXG)^(_h_~{=z4se6K0Y0*X3?f&Vcu%}ZN8?j5}=-qYRfhuiDB z+q*jotx^U3HlnQ9ACB6=k*c>8nA)}F=IBgoJAsvMtI~3_K)0$9&hV|x!9$Uq8 z8&cDnr*ex4y1jDvqe*SdllD?Z5`N=2N9GV`A9!+b%h zoQo7S3CbXN5s!mtJq_czuMC%~D8w=s1xjXKWGT~N0Z}mtqcDH)24-O%%PbpF7*m{( z{3PR?vISfC#@j^VWQa*5X_lm3OT-V9tz;02Xb9`64Dul~&Y#dvkl-Nwx`rO^p{ZDk zxy%R`xb*b3>un+OEWyetI?UEl&YjHCWJytyp<+hsOkxp{3ogeTVLBVq{X)WG%FadH znF{hSiMaxc=c!;%v7ATYT*iUq;>1_vNs1fSn6xh#l1RghS54MASD$)>Fmz(H#;Se` zcqVY;eaIBUSPHK^d%Y#6Bk&Qg?l64GaD?l}(XKUBV77W?%G!M)9Lc4^(NdNsFE!H1 zG1!tS3e#>m)(8dyR9P}RT86pr@{~g4!y*EQgLy`V{gv-U^357Q?wxDw_~xeS*53G~ zM;m?fQ>Vk3|0bRPke^+PT)|VZSM4K$3!g|LAs`lUHXEnP8vea2R#QIOT=6=>Oa^7G zDN4mW+nVB70d2}L6?Wx8TY86d_BvPDDg0OO{i0i~4h%d_@cB}o{Z=zL3f3Cprs8nq znf6*|L>$VhJgvwwKKk}MNUF4Nw>fSOrQHvEtqY@uWci{;ZI3XkdpdM8xVZKAV6|S# zL&lv(>3uwd;jcTyj_i(Y4GWAggSmlZB8*&cmgiXdF30ev8 zBv?lRbXupY1b_hC`|3D}!+4egFmeeT{yS^E-ym5%q~Uy#(;|tcGR-Z%BE9UN85GmQ2Q;llLKW_sm8n^6)}P#_olVy;@Jn{^^7XeM8O8 b+f<4OR{NUOKg> literal 0 HcmV?d00001 diff --git a/.licenses/npm/shebang-command.dep.yml b/.licenses/npm/shebang-command.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..d95f0cbb046843d133727a7d808d4af8844031f4 GIT binary patch literal 1301 zcmZ8h-HzHg6u!?>9L?2?6lk@VXtml5n89jDkP|vPs`kPphPX{)6gxAEw6C*I(iiJz z6K2&)NZ^xmzCWKZo6VwLc4|SkQ3u(dW|iqW+1Jsl8mu<`f_|HSoPUhm<&38O+(mXo z!*E&9lXB!5MbiWw2h)+f0Y#1J)LEX?B5HM|dW-Q+yW7Doq8V8;4wbSCnmQsPr~YvZ z`WL^5w!EbDIva(;(wr}YJ~fW+s|Wg|UUg5~@Ba-B@YeM7`!`>Lx~cHzsgt^$L*O5D zf6}fQ5B~50ZLjj-in&umr>(b2+ESwib-2)JkiAoN3{OgtIa1Zg;iO`6hGc)CGs3}u zIXJ0%-Jf8)f;Qjj8o*d{bZ>G{Xs$^@TcsuNs5aHusoqKF`Hs3(mhOFqcf~Yu_Yg>G zC0l|!|LpdN-r&HDjs|7jpev6Nqp51g+H1HyZZ&egGWhWjnDxp>3kP0jOr5Fq(SNI8 z>pUJ>ZJU^C?V%5&L#Oq{aC5Qu@xcsaRoi+54c)=(|LQ`IXF)dLpCSspZ&-z&ogkv) zIP{=ID43}YA`6UPRfVlGq5Wvu*1UOZmFa8k{bFsxCX_HH59ZZx-)$#);~+Og9xfpW zx!&yb$TkxC4{8bx+=$qhZkFJ1JXnXz*U0~DhQRr&)%m1h!>GvD<#Qq!@q%_D|IAlx zMR!So^Ic5OyxipblF%WNtbCz-O-c4bpLn*4iT$+`tSBfK#J9VYGt_vtO!q6EJ<%iP zvK%h}$7=x4GN%%R6BK8dTho?_!v9;Kek>qIu^Fs3)`(%40 zyWQyw1RNcm^ZiL^u~H0 zF4bhZLQ%fcwFqPN*}ZU7#Z?X5T3tzwcu?zV?1ggNh1g^#EL^)*z*R9%T-^kcTJR2} zLNxDe278gN)uRK9-5FVVj2N4$ZmhkAx9v`1z!QTX4@p_Ce6;Am>x`k-wLJT;2)2gt z)JfaMP)iSe8Xb08UknEldmp!W$X0ZnN06vHc>P~p=P6D10S7WMCZ{c zq{L8grq&o)VEji^&R4whv+g?m;;mI$)zbUL`w~vA#BF}k-$d{;T?VBc$_213 zmgCK*c>fW!%%McW8Hy5|+rpl(^$wAfJDSq+F@`NIGmp7N&;$+%E9v@}CJYWocE}5Y z^c#fDXtrg@LiQvpm&l4WAYX9-#V$$HK$RR(Jq!BQ`Qee#`&|jUJlzm1-Vs!m+@)lq zLR0HBq5Bv%$v(OF>KNoGn1!}k-NTNA67nVZTbDG?yp469l?<0Lx@6`1=mRZC3<;x! z4`j=7g!ggcgwHJVa~YXXeAGep`-xzS5A2Ah-?eN=k|Gu!PxhgC`SUAe1h0Fs>}$Mf j(>vr}pnreB(}$<#`MPy(u&dkK-(QyLzTu1Z^c?*Mxy8XN literal 0 HcmV?d00001 diff --git a/.licenses/npm/signal-exit.dep.yml b/.licenses/npm/signal-exit.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..5257c46db7f1ad29e054c223aa4de1dfb79c3978 GIT binary patch literal 1038 zcmZ9LQE%EX6oudOE3W#qNx<4}d*RIl1D1lrV$-Ud_TYjco=6^+Ki z*kS~Y-J1hGQTE9?*c(46HH6xDWU)6c$KJ_!Ec?%^4|1h+ffL;{EftH>}7@{Jy?z(GP22 zPS#}kI?Sv5bqgL>M2ZqSS2&^A7BWt!jSKkXee+yDRo literal 0 HcmV?d00001 diff --git a/.licenses/npm/streamx.dep.yml b/.licenses/npm/streamx.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..7a97ae8a27f60e74274c8a5bad7082683546e8bc GIT binary patch literal 1415 zcmY*ZUvHy05P#=WjQZ3{G`a4>N}D$)IE{4#B177%PWRw|6TAW(VYA&x`{8fKkky@3 zsr7i~_itRDpP!>%b$SKP4_b9UqaS*3#`Y`tvUvHrc!~V&insl>i`>|CYPhX{^XYh@N%+`AG-9cpsJ!3ieG`;}^P7g*q>NMSTus?LCd+(ygcKWI=h~9XAb*ts_ zg8k!ZQQ2udNAtn0qGxb+94hTrkcth@3LXJ?{nM}D7yboM zqPo2(A)V&o5f4vMxZ2q3Z7`R{!(;UXU;cRc27Bcjqa3Wq(M?SUJ#@xVCSV*ideEmE zTn5#9UB_@9v?ga&qlSx)!CO%M4X&6Xg>&-C^rpXH3KfzC){q!NIeYe>3gc3J4azxN z8HJco+iIkQrhLz)#q1s_@JvN}iox_%JJzIy z)Ee!wPWmZW1$Xd%kjwYFjwzIY8t#eSo9#-5Rz(MA3BH;-O4#~3e z1M)4f>;wK3SrP;P>mYeiKrVw0u|K4OV_jsM^q7e371lVL<@n|WK6V5yb10E?h7%lT zx3K4OvqN;Y7O5yd;sCZ4Wk%TBTmpjwlcm@kQzqeXl!v_FC?i4WOk`V$OnlF?a)HcP z1OA2wD0VDOi7w!=BRY|!6*l?dLyFg33A;Q^I2P9&6|!~8Cpt8^NtxKkkgz>_C6y9# zM4Eh3>!cLkcbv+^%kXDYiaaArn>;He9%FPY%irVgqTn$wDGCZ_EA#zimLkR}WI-UD z&G>{w@rS^EZwXr{z#|55*8~Y?DdOSEvS5`O?gNYeewQR?$(}E|8r!BX6K*A%o)><$ I{{AQW7XX*KhyVZp literal 0 HcmV?d00001 diff --git a/.licenses/npm/string-width-4.2.3.dep.yml b/.licenses/npm/string-width-4.2.3.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..e7d6c0bf476ad618d41441767f27ca1e219c056c GIT binary patch literal 1342 zcmZ8hU5n#36n*!vxXjZGI9X`>6iQi7qD({`JIKz?4y6x{t;8y}l}hr=2KLAAk?a|| zg+QXKd(YPuSu7UOQ1x;}))_Ti7H_I?ZS*RQReD&_Z_8hnzeetMMaOXMBRlqeWo|2a zl8#&}=~daW>L`qnK2tRV(IQ+AV}FvyU(~uA`@xct|BlMYhMcBG*=twbA|mCYR`>E+ zUF0h2R4oS!#vbMQU{}$CtR77*?TY3i2A%xoR`eaei1xgsbefGqVXdz>qb{wZ`}%X1qeIqytF_07(NuS1<2AfrcM1Vd3?4cp zWxevz!hzQrQ?DC!_TMttx{jw#**5m81N3Qh=(N5VRu+37pR^$>yUrsh=nh_e?vvHf z<5`dm_~(cM?;GC0&rT50c{Bqk=NF?9Sz!D})_8$Bw4Zg?={Ik!)T=ew zV^rkZ@;MQVctHn|f8iUpp}VBO`7WksUheW^N$3zsR=!Zar6hZyKY6x^iG4i?Ruq&A z;`>9&8EQORr^gM?p6C&CS&o;_@%{l?=2U`khT;r!TiP?R-T^szR84^5oSC${|>Uwprctj)fBV5`5Mr&ogghooA)M zF@{S~evCfzg2j{wUid(^A_u&W6B9nO%+FgC!&XnUs+YIZchSV<)Z=k#bS1dpU}W zTt%I#3+Gw-7RJW{k{~O)6&W(2U`1t<@fAw$!JxJ3l>*FD1sg*{au5>YC zaI%T%Y@`f!TVXCT_AbS6r4fN*K%bmY19C=AHN^Q&*8;}svwIg%Cx(WEwYpXUc+}{6 z>gC{s^L%I3NlW)W_q%eQxO)gBjl>qz5JLaB!d6_XCx^`ac59Cjqp9wu#%uVv?i7N) zF?i^ZnDxph3kP0jOucT@+5eTn);OIyW!u=V5YVT|q0{g(` z{BKr6k7q$P;GZK3yzh7m-#bA>=gAD9oL`PcWP$N-S>q+@(0b7}ob;Over}Iq&<=7#0}+2uaN(!P2l{| z>T=ewV^rqb>Ln={@sbWj{)KPYhVGIQ=ew9*c(u!q6``X@vg(!cEhX72{lT+MOzi8S zU}Z^pL41EmIYW(S>-4zc*)u(1F3a%?;P@Q?w92Uh;S9wY=C-tF#d-(iUvqt1Bpn;3Blm>Rxs%l)#tZv#xla zc^m6Is|p-rxGbvA(HCB_n395*K9FsZ1K!7p37=W!=Q4If@lglWpBq7o59|ojpISC7 WNr8p+WZyL}quUF?|Dr$tiv9x^sk5g5 literal 0 HcmV?d00001 diff --git a/.licenses/npm/string-width-cjs.dep.yml b/.licenses/npm/string-width-cjs.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..1cecb56903505a0bd58eba92810b1ca41562110c GIT binary patch literal 1346 zcmZ8hU5n#36n*!vxXjZGI4N}ZDU?!AqD({`JJ`-nhtdbdR$?u-l}hr=2KLAAk?a|| zg+QXKd(YPuSu7UOAbPnX>x>#Mi#OG{c2R$|(W^98>0w2mm%lDQMecS**KqA4JNCUW zw-r4}N3NChs_ZB_3ZtaYBxW#LgzI7KPty2{T6beVSTge8Q5o5g)6^(??Zho2QZ8zB zFR$VvS5c>GIao0ED9;DGiWX$`XliL!G#4@GeZ3iVX&v3y z4^*n5F_KDc+R@T)HXLm@{c-7q>Xxki2;3bLJi0m`P2~QJ6#JHtIzIDK$RF864vTk3E)wq>#>)E z6VCIURVOXo`@HYUdE)LNkTeqMt09E_euZtgR*w!@`_0xKBSur*jg8mve%&bqJTZ9a zkd*bxM+*mDXH30r)Y*T_VCy=bI%V6~uMW_s(V^4&Vpv)1ef**gS=n_SK|y!$>T{p0 zh91v?Y`{N96nNk827Y#eh|Z%KKsmn{jmQGyS6Sl)>d=1HU8mo?wOS92@_zAN!V{=q zOq}$q41T7^FlYz4A@Z<^o_V#)j}@V#NV4jM@+~FV3;oHnO-$^sL&3_D z@`CvOkaC6^&(`U2!?P!P#9Wr+<#W7$fL1wGAe^B%!`znktXS`WoILWBS1&Pbd6jw0 zEkF}GBt^y7$22MEa4Zga$w0pWY{s)~0T#ArS+xW!YQ(ypoIpBSqnDCipelBAZijO*|{@4gwd|*eI{?M{vNeV2i SC;O>+8BH$)|3QEM6a4`G*s@9h literal 0 HcmV?d00001 diff --git a/.licenses/npm/string_decoder-1.1.1.dep.yml b/.licenses/npm/string_decoder-1.1.1.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..ab0a64f79700fb70daabc424246f1ceb994f1f41 GIT binary patch literal 2716 zcmeHJ!EWm|5WM><7CyD8qM%pb6q}CO%90_;FAW|Z3R$8p29hX{R8j-|_zo#K#S2;# z=sBp{&%g0tCp9>zNc5JhasoYDs4iF+LrvjAuWv1uc8hogoDtXG|nnl5oE>b zN*7)BR@4EU5Q5a1s;1Nz5s+0>_E#EUE)vwqma>QIRKls@>Zu^wHh?nfY~M-^(tQo$ zMpd!|Ce^AMJJH+Hx|(O%3PV4@C0gcl#_~s3$b;3QY)SS&6m;9BH@L4x>y$uZ+=%TV~wK8yf0+Mbdb<^Qe22hDnI36)g0XUqofyiZfw4 zekT(LTuZ0@)(Zu;%aeL_U3=?>URlugN8k^|lbKF?-ZD)I4JR=hh}yFEWZd#insx>l zi>8n`k3nf)_oL*wqlz7)Jlz&gQO1bpbjZ>#e8V=hjB>m$1A5}cEmAUe2Ojg{Iq+axUL+2Cn`RWzA<7EAKE_c-hhug~a|Rk4KqoxeW~jvWEGa@%#u~9N zc%gh3#jz{r@uDM?WR5GX)5CMdA9n@q(s;wL_`tw0dWhLn4g%M4#P5SX^F~?Bp literal 0 HcmV?d00001 diff --git a/.licenses/npm/string_decoder-1.3.0.dep.yml b/.licenses/npm/string_decoder-1.3.0.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..84d1b1ebdcaf340ead5b5da347906bd5ed01bafd GIT binary patch literal 2716 zcmeHJQE#(06n)RHxXRO}QMzewd83Kbcq0%2`MPSFCIU`y1sK_;U8Mc^9UIc=t2RyA zbEQZD``&ZUIoH0)-QC@yFFUa!W3}urzt^Htwa|-Kp^a4iihc-x48LF4>wuVk=oV(| zx>8?PR5ap45_PH`TR~^7I!XXTmC|C-s7?&!1^JD&gIV3*U!-luQ&_3)zDL-Lx&KhT zm6hlXGL&sVW_~rR#T^+n>Pnau#eB_@oGpl~_`|N~&+qU^zHazpNE({cYC0=TqY+dZ zJhrWR1CkG3E|>m$t%j?Xm&U%QSE`30r_m~HLWFKZ?dyJ&JfEmy$0$#?#Z#0q;yE3%^b6mx4K1S_@5_Lmc(F^51tB7flH!@t zEk(&Q{mhe1KDK|uILQM8FII@ zXW4oO^yq=dym$^g*p?TG!``MDMRbU=g0GKpl+ods9nzeE#s<&{PqrBd zr9hf=y3mO!J?)rVc6B3s)&)-!CuyA~MTXY^inHQ9{fXx+peW-xC{Hr86lI*n$U+qW zAva+YlC$3%_TD9gI0KI`;KqqIEQ*1bPfbX^N(lX;8$SM_aQA(_A5;!Q>+XX)`lYu1 zVz^oAW}3nUls#@f&aWS`w~P4?gY`vSF(v$b#Z4cSkr-vyf1P_j`EZ<)z6$+$_mlTF l#s6~_y2<-F3O`5T=P3Lfh5vUHPQR%5XZP!Gi!clqe*ru}Q0f2x literal 0 HcmV?d00001 diff --git a/.licenses/npm/strip-ansi-6.0.1.dep.yml b/.licenses/npm/strip-ansi-6.0.1.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..4e722bc768c1170d05b1065791fda909c0c1a7c3 GIT binary patch literal 1296 zcmZ8hO>g5i5WVYH401{U*=;X97>h*}n~sTS2bE~`W5}Y{B`+T5fM4{ z&8_G=z7g$tN$G7i3Wc>9uA{y*j_#`mDs*3uiV8C}lci5K9BnxLap|OPmzC*0)BS%h zeCgo^c2Hxdt+z_rQlmz7y3%Eoy;F4zFG`U)Q`N}vqGED}WPhar;b6d=oYcMUFR)ud zl<#y6V5~X2Hwjg;uSr^KDlLIWwW+2~^-em^ch)W9x_6DDyJDWWdk7@8k}c^TXx`Zj z_NHB9CP$<4?^Jn=7)@0>)n3E{yCz+`-UC(*$E;#Ph$^Cgo2sc zAhN*tkE)!nc;#o)w&u-St4v>O?-%vnP7QT$W?=Irbl* zWlkjsXDH4vx1~K3>m87jN1pQXHKr{uGmp6iXhMfXlze?m6G4ZgIOGKb{RXfZ&$a?A zY|pZC30BmIJ>x*dE=kisl^mg71byrL@GAJzuB2U_ZWxM>49b$nl-;OcYMmy0AJZn; zCr@6Tpd5llXq(l&>{uv)FTrPB@;vi4)_GP69Amf?<;Um?FIY^8;DrxlD{{d5I5FWf r%lur%ZYVzLp!(xQ(BcC-!t{rh4NFpB;d!#3nwQaSL-0T7ufL-oqG+I5 literal 0 HcmV?d00001 diff --git a/.licenses/npm/strip-ansi-7.1.0.dep.yml b/.licenses/npm/strip-ansi-7.1.0.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..b8cfc08df9d3b962af092a07b147df7de802c44a GIT binary patch literal 1304 zcmZ8hU5n#36n*!vxXjZGIGNq2g-}X8i82v&>>xWk9ZDY*TZy&Uma*iW2KLAINbyX& zg+QXKd(W4oEEbEXmz`RXb)y~@vbQ?=u12d(zoIY8&&yAdyAIgzhc2>H*U9m^qQW;* zk`mDnGPSaF9!*CwVD*=%F`XLZMXjP%SE{!_>9l)a*j2P3Yo@VMc13eXMC8=p zZbd)vi)hbFN^i4KD6GwJ9rdMgbYDGCq5FDNRG6`uEd64`(uUPQBbqr5RkvUV<$nm0La)xAor2!#fz?_`a zz3wltT|u1hbPZsvIlDIrb+WHXT5BpTfk(BercU)vI?s33En>TOjiS3^p16AmB(;() z=^kj_;SBbsU1KIkqw?ofd5joMRXf#Q!~1rt5%i70kB7vpS3X%d@H%7aOs&uUTLoLg zbZWJ2Vyd-=K1~jt))&Lk#oouG8Of@)^#~fegV%r6g&xm>Y`{N96nNio7k+kvh|bg4 zgA$=&rZ$KyFn&{&^A)fBY}(emd25yFYwi8w-h``AVq2cfcYpWZFGX)0u~rQ`446cod37FoHgti75TP&NdzNa&_U#1`G#%i zE-A3Si|K`zyZl%ZIz*C{uas}`ZeHnko^4`ce;foW3d#lX{UPNHHJ+{0l$WnDZF!k_%q>6@IwYdx>tmV-Ivm9zFBs@I zfX#Te6<}d|mX%AeqDJg17F6t#G!0bA5$Z+Ix6Ti*fn0EO|=VjS8mL zX~Oq0ZIXTR?9~a%Ay|aAS>4Nyg%bD@eAXq;GjC&^XQjY0hD%X?jK1)K#gqtM_&~NI y2fU9H6F#%d&t>d};-e0#KTZTKKCmN9e`wjTBn1|ZC;O>+8QpFO{)_(nEBXh#f1@P; literal 0 HcmV?d00001 diff --git a/.licenses/npm/strip-ansi-cjs.dep.yml b/.licenses/npm/strip-ansi-cjs.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..7d9eebbaeaac1b16e67ec76cc76f72e7f4795bdc GIT binary patch literal 1300 zcmZ8hO>f&c5WVYH401{U+1tJB!B{M+*mO*+EE$yCG+6XNOSHv85(SZJ)1U{}$CteM72*%i$l z5s_2>x)puLH=;c+DZR}`p|Cc?b<~%}(S7wmh3@N7QDMervh=47M;lHbFP+rwvNGLY zbpQVgUwXKK9n{!q>#dTu)TmLNu5=k??^GSbi&A9HR5fzEsF<7~*qku9zq89s)_NWJ|gS zns+vXy=vE($V$Ee7+<#Qq!@q!K_|HLu%c;N%tiX8Ah vPE7dBGC!BG8;XxQsD6JDwD`b|F#WD&!;%zOc%JO1=4Eu-5d07N=S%bh+nu4t literal 0 HcmV?d00001 diff --git a/.licenses/npm/tar-stream.dep.yml b/.licenses/npm/tar-stream.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..238eca4f6e81510aede76668f82b2182ba977400 GIT binary patch literal 1544 zcmZ8hO>g5i5WVYH401{U+3vOl3izhjbWBv13`yQ>Q1n1cw8cUa4U*c_K!1E6DLYLU z2#}DRd0#WpY&MGq(aR+{VP@7DDf;NUG*;>|y94jFpDO(9l^9(g>%g)1Y1Ji)3fzoVX)>@vqWGM3>RX?nI$u6m?e3?zkBD3pIYBWkw@WS;gYx(*%6wR&_UVFIYFaxTbfC7o0!$zH9K{XA-Q zFE8Q@W36)+yId^J=p2vpTK9`yoYdg7Z5N+X=~OKTi-umg=ytHnXhv3#rj~X|DPOUy zWT16Wx1@h&_>-st_l{STP5|_X!&4NVR{C-^>fAbdte@!TpT7J`JAsUZrRQ<9Q_)_U zURgg8A9gE^JYMN+#NcET)5%Cl`b2dr%vr|dG=jepg0*PSM<>+a6A)B`EU=;)92UY) z?p+ueCMB%ZwZbqOYIHsJa&W?VP9K}4M+X-V<*no4DG)VMbOBKfK$LWU{+NQ1n53#b zPE2a3yRq?F?nCMnvYc3adq~3X0s_?71i0~A**fJ{fP4$`-jCe`=BLB+QY)ubIiSt8Due{pk zhl)^9Bw6)F`G%70jeh6ZIwtmQU$C;Iya+n@Zl7|7d!DV*!BHF+ z`ED}nBSsfk0EFI*O-Mfe5ZK3*P~rnTAb`6jTC*et9!8c0tG?jgF#r5vDp<1Kv3cL1 SZ2B}|D$%rF_-_62XY?=BXz6|c literal 0 HcmV?d00001 diff --git a/.licenses/npm/tr46.dep.yml b/.licenses/npm/tr46.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..3bacc6ec4c168478637e17763157c09ed9ebe0dc GIT binary patch literal 1334 zcmZ8hUyIu~5P$cl81`Q7z)1>S`j9tmqHM%Dc94~BmvRrXt;AYv%Sdwf0{!qE$;lo) z2qYTK{Qix|VzEdD*{d~p`}igKp{&zpSi`5~r{(9wUq`$d#y)XV-%ER40~tW~W2bsG zcZS9_t^)D$ z&HZ7OYke3p>sMaJEVXOLZ&lMWx^k$l(ej1{1tiUg|*)7m!e! z@frbR00`yG*}qGxaG(L{oT+sb*qD0yFRruhl!HG*WDn(S;^D7I)F|0SL_Nev@7M5- zxtYm>RnA*ohuBllL)}eH&~m@-G-ft0CBR#KX}ybp=wfo{CTLEfH;q1rZxt<$Q`KqL zrqJjBUrio6T`0y)q`}Y1Sa7PF;lyCXg8I!|^$ zYTP1rH3lP$%x|jpp%Pr2P1l+CV6!$uql0&R4$+msYgw5eD*B3cVK5$L#})V%mlDOy z+rC}7R(2g!>J}h!W87GZkauh7cB-7mN1ONiJTY*a693;cu32Q=s3DoR%dNJZfNvW5y`fS-#0mTb4h= z6VB#^fQ;d5M_^HaK++o=qd2>R1Ld1NqLU|53(@+k)1V02$`HSSIu9 L!M~sH|0KTv1G1sq literal 0 HcmV?d00001 diff --git a/.licenses/npm/traverse.dep.yml b/.licenses/npm/traverse.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..6aa35da90405f18b3117a3ffc19dcdf772740ef4 GIT binary patch literal 1536 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 EFHe03KmY&$ literal 0 HcmV?d00001 diff --git a/.licenses/npm/tunnel.dep.yml b/.licenses/npm/tunnel.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..9a7111da96a36c81dd1160453ab32caa08c8707f GIT binary patch literal 1488 zcma)6&2HN`5Wedv200~wVrP5UgKvyY$3$hxpy+0Uq6bQ%Ep8>!5UHjH`tUoX8`r#fI4@o>) z+sk#(=hnl0{Qw`H{`vqPBQ^e1@+w`cr^168dhLRL&<s6TC~PkuWl2wQmv1*^_^lgTjUeq;s~`5;38%_1I&4(g)6y z?v#Ujk52B&x#R935;aP85m6gNRB$_ncZ}1H9tP$7pzDB>f;M$GHbKknxYHQt#1h(L z8ZH8&i_xK*pgD!!Hu@BPRkU~+t4_N%g+>SXYV=s?!e$&&8vHDA@J@A;JVe2Sy|hn)a_vR!B2gU#BSMhEYB zQ)0KkV_Dg6D*Bp+Z>&ezaRhNFQOq>$`N*}h>!4C|fXJ;)gbUj@Yv^{YoX1O{Wd|2K zMBYCwFJ>J(3T3esuY^-zB^-G1iEZcx?nsI2yA)oT*cC?sSiwmy-k{h5$=~23%Qq>| ze-50MB@{gBVEaSHDDJa-ogFtUe}QN0%?rHu3@|7k zTN=T(OymK3TW}z7AY8EZF(VufM}8&rmukh1VSo z+kuzhXDwKf2TSWB7aW%sd(^;a8ih|JUd+!psW12c h^FgdSTP=I(yc(AC%l8m9%>RRnWV*cgFn<1${0Avl(wzVR literal 0 HcmV?d00001 diff --git a/.licenses/npm/twirp-ts.dep.yml b/.licenses/npm/twirp-ts.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..f557a486015d05fd6b183aae2a53c4023e4fa070 GIT binary patch literal 182 zcmXwxJr2S!3`TdK!WT$|Kr9gp5*--2pl*mE3Wi3i<0y84-kvZpen0Oy=O70rkM>Tr zI8%60)g;;Dw%d0bu(h-`7Y1FJLtQcOGPQX{FyOMg5KeaCk|H2Rpw;XLAD2U)Da?Qy-q7iMcch5!Hn literal 0 HcmV?d00001 diff --git a/.licenses/npm/typescript.dep.yml b/.licenses/npm/typescript.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..01cccafdea3f3731926c2bb2aa1b219e990c6fcc GIT binary patch literal 19832 zcmbW9OK%*>mf!dK6afJPr~#7wx_5f6yy2@P7AZc=VoQ)9z=*1fs!CN>W=%dw7I!uV z-Wl+6W@R^K7URXN2JpgwVZfRO{58BV41Wv%&WT56k-U8ev$%a(k&!1(oag_Xh}7=x z?u){%+-uWp)~=pZ*}8dg>#8~{i`VAIy+7=I|J@6D^x72b)r-1at!%Y1>nL z#+uv~^VZItnU$5X>vf(@Yy%BbPi*eYslByf`qbUJyj-tb(Y#ocE4SvY*JjZ)>-zP# z-`?Hb?RA_8)xENsfBOP@uBe%4*LJdSyFcuG7su+?FLq5`w$;Sdug$yR(coe<*lX^a z7sfR1zIkn49_UNvohS0S_*}gATQtzwfxDt*SLTQBzWbd#6lMZ1emUhKuuy*sU1Mb4 z&EWccWDYKl&C%t>@$hDNc`-6?F0akcqrr~39$Z~t9{+qK!#g_bcsRPb9v=QIBl7$X~#HESe!CROj4&o2WJHX_Qc&8zGi z|5|zHsvRXe%_{UGEM(|f{@yW7X(kqB>s&vm`>xE&7I=~OnwiY_GY=#ck4(EdKtKWb3XG~zR5}}l{uzUV&o4Ua) zMe0~b(^+|^IwrKZw3@ZLuwx7M-zhaTkFZqqVebYBM96_XUn@wAxSDAM` zvoP)+PP1Crfag_KOC0lNuhtcf5Nq2uu93zMv_bq@_19BXR&M61ikI~%|Iv-F>{1q5 zmD7yvX}DwCSux356$EZ)in1|zw#ph_Mt5~NYwpCLe7r&xQzRcfO-U$e|JeI5>Y8Qq zw({|GmgO#nip%jAjN%!lZL#sJqKGyZUr?&Es$5}ilZ7qdH#ZFqSId?>X@sdGdH6Xa zu6wyCu}51|ijTI3gRJ3iYD(oSY;TVK;hy2Gji%j&bmP^8ki3ts+%&U3D+TNLP*%&Q zj(^9fSgMaRVzpuHo^Y9#KLw~c1ozYwOMY*Rm-obk9F!6gF zCok{53A;abRd$PJZk-W9)Z3B}jSKz$-h=X#?&H13m^-#Lixbqu;fQgN$I7u2AB|)s zO(a+eVI(7{z@bt^Jq>XkGpgJzE{C6qMzIJrAAUIGT6(kf;UFls?=PCOTupHCF%OAb z7AkYx0!gvJJS$j3Ww)i}--xtPf6C`$xdrDI%MJQc;vpAQZe`J44J@hDDnu3<%T}&( z`9?|RS+P`sjR{3!7lNP=SgBDtE6CC_3mU;JiP&f~iSY?DJgr{ z8+H8H+PjD&YbB8dx02bB2jyPSgOJ*aTWYV#+kt&4Lh= z)3k!mM!#W4ij)*&Nybha!t;F2Mv6*NLa40Za>8*{5?pr-(jQweh4@V+auD3GS^-lc zFqVWGOeTp(q|^97C}2(vowTH95~!}X(nuJ% zj7G6zB!{~Dm{GTP8Dkh5sMpz~E!!Hqqdr+mNb6x6<#OukY+h(2$LvHWvi4)E3-FaN z^!eolA;OxzPwstw=|OrL6g;ftdw!a>9X;(g083wJ68Bb*R#e&x*cm%42n^^nLc{jf zD%fW2{<6iSkO2Nwf<1l86_DC?zr|g11E%M=`0z%(rJotq%Ijo?79_yIuEH;ZY-s>>Y!Z03b`2Pgj8#_o^o}gJ16(S0Royk)l%KnRm1^!h z?W)|^yxHu|D#ybNM0Q(FG)i|qo%%s^XkbrJcN?c8w6wb%mvOx1{>Qroztx0Y( zifun%tqe0(5^K>K}8@AopvTndsw#3SXkgrgdg+po*B;6`Ld#>GH;u>Qze@d59fY)I|l;QXbzAd z37rD)RfjRaz*Sk-yDA=Gep0rAc>Hg4EX|<1y3LwzlrUhxf#Ia82T??o$cx*t^*6(o zB&oo(*H~8@^TcDOk`7L=s3?1>hBXzz6`R?%x6p7vK~1TgN??jbKo`~&vMBHB;6Bbv zJQQtFKZF9`nW_8?CKhF>bfG0x+f=>$cYEd<=-jns_EaY;yXoSU+H;ztm`Iux8gD)L z{!_qAd`&SPOSOb9H5x=N|4*&Hjr{`hmaP9r;*$i>P^YLQL{cl~ygFxPPMIPaMil`; zzLqq}EZzUA#hB(&xCl$W2q2SX>kRe8ZT)eq>5DGE`^;-U#KnIlf(k1cUB&lCbmv-S zpj<7O#ZM--5(@#()BYm3QUQ=Fd~||)Wi{Z^mrplAVih8koYjo4}@w3KV9C?j1BlmIOHK>vX!&b1POx6NF^Qxm$oi(gRP?D0FlIXRS2GM zW%i#XIl(f2T53vK{8phnEScO{979up7h&f~KoIR_2iB|!Jatm+q~Jk#PpZ#rE0B_h zTV_Jp9~!+H{juj+@^zn=YUNkTjY6-a)jWb*M7 z#9B>v#YiZvgO?W4rjojnyzOkYXKvVt=ul#aQuN_5N=lqoD-~aH3WC%9(M#w$vy%2@ zdG7%}D*7@sL>P~}G~5xO?Q|*@NM&)yR-dt{Ame|I?S`N$vaNx>nh&M3FN@IqX;dJ$7g7CRY`XpQPc60BrYbRD(sS_l757d zqy0&C`@NQ9p_wi8k1+cf&+0w%b3seE*4XIo<>W1+3han>$XK$-X6tPN_VYa(?==MT zUY|xu>b`JkWD+gZ^NLtKHo~wXilQ)j?!ZbtwL@6m6+|!sO@zhHLIMGZck^v8x_DhdyJ6z8^R)+M%6OYpQK;BAUUH zwLsylVFHNu`J*exE6yV-e-I+&#=|+k(moMwkg<&zH=-a}1Gp zJo-^&pnXTuNrDN|*>Tk^uts$y$blh*hbhaspnoBnXw;h~xlpQAbP+ge(vuF!r8V6= zX^vy&N|K&UQ_2yra)NM4_8bFKy6CYTYe~a4uAs&u9uiCOI1Ocr-6_eZaa)1%PaKZY zBa$MFyuhRn;5Ql;n`H2bSIjXSIm4>bqyo{1D%#WjJ3NJ!&rYYR;Na5w4Lw@A^V26a zvr;#W+W?+}kr|HY4jvwihNB(xVR&*dd`@><%y9Tn{ha4$cP`H#_EhaD8+FhX;qlcf*^HYB6tyHy4AEKh8cdR|nT% zxu4%1Tr1O8KVM&6a>%Yxz#nJjG{;eMy{1sh#9}0ZOr0;3qT10?RjxTSK>51C8DWHV2Vneuc@K^#U2(x ztJ)X8yz?%zV>+f{X~P0fG$4~;t70BLxG_v!ONvEfRGw(XAF^sWKvSY$G8b;1X8@v! z`({Tm3vE^E(r}EJ8W(gsd?bI~u%)avuQY9urKT>=#(JzKzDca0CPxEtDeqb=Lz@A? zY8ZRs2tF`wP|X)Oa$A2vwb5R zuMb^HIX0Sll4?*$UD%LjA3Wm%^ih0oSn{zy#q>d?Q=aTg+<o9@DcV3SwSw)GLpNeu*gaPba67eH z8A@0%Y)K9M4}0cdB0V{A#~4k8<%0ys`nLaJArN}oCB0B%wB*$%07?QF2U&;)FkHTTOLLnst z@n3_Flm+3uNqjO6*PLc{p;392*0#JHruTio@2aPBFEL#Ri;%_Dn?<5Q9y8>@Srui2 zpUd&7&(=@7zqVQ_Sd1vRlODd>>K%u0oD`gZr%Gj_?cvTJ=$Bz&cn5@N0-#} zA`&|pZ(e_{Kw|vQ?3(XT`||rd4?hpa?U*KXWezQO2`WFT3?1N0<_(Ava2F@b&{bJC zE1O0#b8HvcrZ>=REMv3WQg|-yHpv3uaI`4zri-@PBpPJMf{QI>K|GxHMhOaUvoQxd zacn`C+`J)J>MUh**BpGo?ci!*mvJ5!>CC}AYwP~NRVLSZ(uj1gi)mGw_pX|ALqr}# zin+Uo&310xZ8!hk4D3Ab5x6&JoM3U~p;(svY1bQ@BnBl`aVmu#bsaNj?d|poe)zhr z?Xv8z?8k4&7WJm>c9|)~ksUv{TZEE$XxaV=7H6X{Nj=LtThY^;EPja7=;xMr^EHC# zG%UROaB||l39*E>M4fN671Ps7uWdzS}aFgB1| zpTynP4|B-l$zpr#h=r5M2$?&j`Np>Sk_$K6lP@QW`pMv^adQrbAJ6?{4(Qn{JAE#Z zOxf2gOJ*2*=CaNx82kE5ZLXvOYL>|dis=UV7Zel1RU(?@=AeiU!JpZEV!9zVo-OiC zQQp?etlOrH-<0`EF4iQ2DBAJDD%Eq_;7Eze2G3%X>o`CUsG!$#FsH_;lHpc`ZKqIe ztD+|hMsJnoh!~bcU#)St!?LQ&JLEbE>IC^C5dcB6c+fr-pS1QP@p`x-v7`xPA=SAIqVO+`TQPNy3N3 zkK=YW%Um7}Q--Jm7euhQk_?>_J)&8t5EulTFB^02z&TOEjDE53jYKBV3)9$BvgCma z*UsJ8ww^?=gu`rpP_=PWfGu-F35y8p80Zcu134-?loQzIA84D|QMWy$@-%2J$g6Cx`9kg&^M&p1$w29}13A`MZin@?hIy6ea?4mrgZ4{gC! zET2ilNp&nQ%hjW?QBEg6jfqlZ;jl`g=^6xVH{SQiO^2EYZU`m8b##nqDz{9>E-rjz z>G+_9tCD*reJ+pC{}{WA0hia0xT?ez6?0?f^eLiz_a|<8I~@lGk4QV9gzaC-A_QyWt*&!QBxJ;$k^z?i_1L=6F=*;1IHfoDTQtmLi=Iv7|qhvDzGrxth5o+dV{A1$ohH zHb*(lleiLcMPw)3PVJbTaGfNHXj8Sdxv*bWc5J7SL2`aoF3l%7N(z*K1}N_>P2V(- zEq&Iy$iN#*dl&gQX5vvpw;{cuK0Oca9vNyx8+5t6YQh3l5!ujEN4{8;LMmKSv7!P?g1y zp(Ky3OymiHIa*~HqsU9a2r1~i#zG@ebp;l7L2obL1pE*z>X>3=X|BwO1~amZTr8^g z)?C{!x8$Tnq5?yP5uh}FP2^2t&B}R+=t;r;p!n4pmQ>Ws%{P%CIxvS{|BePl+PDmz zlsS#cxKDFTm!ZnO00XE}zqs2Ve!qV@`$tGMQj}YCQ*)KAIa+N}>Oba=z8U5jFNcYO zD^{@fyC3%@m*;y_m+~kGVBc|2U$$}QgNf84XLLnlFdC4L^Zs!8Wm&0s7~@3!$P}%7D{CF9OgUSMH)Jb({z><h^kdMeL zH-N$AB4Nyd*ufDvKGg*}@&vx==!k@tLYZvsen3J@?l#x}{6^B*$QE%IZ>U*ig|dvC z?ayp3_`C6mFsSbh)#4gFndP_f)%_W#?JKv68}OL`7bD2mNfX{$@ro024I)!hi$v9u zdG-O%iXlK=Ske{9xgi*YC__#5>o0iFum3%>lPvN|6e28TlhPdO%|>p3_)HQOn6-J% z{T03j;eI=)CeV9}X@D#!aJ$6ASS68TNZ{yU>o9E1L1o)7-s^Bl!f;1R-m~JU-ROM$ z)AzqiMb29+6BptpWa6Nla(9d)5UfK81%BVs*|A8fD!%@L6d%k$n%v_kac*UC1Yka3 zM)VJ&E4^(o4l6Cm5kgDZ@@?ynUJl)~7jYJLmPOcdVsl$(B;XZLIcz6r2`vgZ>IMY_ zN|Dx2>hLKSizFi*lcOm1SJ87%N?gZWff6H$GM`h+o|5u`X=!j}(Y@D85W&etsuo^8 ze5@}j&gA8?iEJxX#YPcCyJP1coe!&DMr*VNZb z>aB!Mhq*s(IzNfTi#b)C5dcpMVM}AfXCC2s!#cAIBxa}OT@)?%`5agx{v3*D4+IdA z|7D>dfZ=Uv)Id2P`cUSxS!CkQHrNJj%*H0}Pq`LL>}!(Nb>IUAky)Qq1JzSOsD~wI z{DB+;?bw`^)dM*TCKH|POtI$lkfJyxzEfCIih>nW zk#$Pn<=jR?I(0M7bFzF=#)?ly#4{;*D4XN@RN|N=&BA=SRga$PgB#p{USOPzPq0M# zRpDagm>y}2TBoHWq~{NuSMXs*oLBn(BN#K;Jri?WD-kZ?>jUsLn$T%U_~87)TxTxu zC4wy%IAqyRXFBvg%R3HeF$e%Wkp+h*Ho_As=O?qNcS#H~GwL2F1C_xIQ3m@%5KnqTAPB!q(5^lJ-X@*C$dG2W)|d&ZV0u*Ccx~ zq5hM;bJyZy;7ewPE4ykFbUFjUt`KtKmXB@3&M?5PY(0}fH4fT?V;bFwADR5F!&7IA z|NYk+`ni8&dPy_P%ypk4za)MmL@) zIVI&i%o>nP&-eq$F~JbJaIUQ%XarObn_vH`OL9DDz>Gwe9#@S&s|3@x6gsH_(z)kS z`-Ea%x7JV!-kF09)sgFT=12Rz0NuWj0A|1k7%(}-xxEML$>C{|!u=g<(4uH_!IP6- z`*eThHhyAM6W{MF%qI%F2-Egg*<|cn1HvM))Vf$RhhOFhdrk)6XDBjH9g&W@ye;4` z?Ji80;1n5_A^1hQ<4yGS^Gu*dTW`2XC-V|ThRLejnML6xY71kK?bANVA)6hfm0 zo9k#63v)4VLq{r-B>(YsCL5UBhv@$2Ci5n7N<{Li8 z>9Kj?6JwWk!@wIU^P-}{*l0nH%Qw5euN8R>4~f1#vQ+F{gt|a%q*885b)saf6`kd- z{a=5>KLZe0-C*mF^S;czA9 z_o7P71;Jjl+$uPzsx}b-Km%&18^O!*J;s(&Dbk}_IH_4_L`0Ea67Hmlk}dlQ{gUgc z=7t_hf?Lmw)Fe46$cv(@*e-Q&W?>i`g+e`Xv7QslrnARteHSGHG!Sd|_ z4Zq|D{4H)JbvtI*!P7YYX|Y|6s3)G4d_vcCdv#2}`ym$vqb&BHn>Lo6!2R7vy$9#1CqY3$uU;ndIfqdA76XDQTR5pAIf5kngs8&C; z_LSe3F_6pTOtP&=u&coY2bUnvVh+f`tbBV;CksH{Jt!JT2%gA&l@jE;&!^O7x$gMI zvg|GYWr%q8#|XXzI0}JRdHMiQ7gPJ<&-jR zbf4=wT%n32TdFX^cYWtGUZ7b0MCk9{xu*D{X5f2)@ETni@Cp|DC4$fDh-(b4`u&e_ zhV-MjOHk$tF9O|bdK~6tkBWs`BT;Gl73~k{ipN(Mn>sY@Dw2?+Um73nS3C>Vx{|ym zbXPEU0T2fALL@pSPXzA(vyjTe*MEp4(s)5vHLh4nMLk+0@(@}gzZlpdooWj6G?lhc zoujn3mdjfBX?k!ccz46+(Q$6Io;%{H{2LB3Dbj3ZB08How>EG4GcX`ISH-Y!3d=v; z5ozn7bg!e{t~VtSK`9QGtdRmVjf<=vbMU-FsT93;#E~}LtEM~Ak&)wy!{5lO3=Hz! z6KS+lg7x^7C&2*%I|S*uoDjY9aT%@|S@P+~IZ!DX+DO7C3mA-rm?9lJ-@^!U0J>wI z)Eg8nkuY_p^dD`E(j%!trTtG)l#DM7(teBQV3DGqeY2T>%af1EbPhES-9w(W(;~%H z9jD!8GY)tn1DFgdr{V6ME)rhwVGP;%f)!&}CL$MeJbBJxK!=4H<^7XRtc%TNS>oUo z_Xqky&8Ab}G)@rR$j`{Bo*zW?#h<5=@=!e8Jn$~n{&vB8aH8SzO9 zj9`qadcBQ6`r-0}oLQ&WrD1*ffXT-Z*VJ%awdQj1;JS&NdcBo)s$4yphJH%0DX$eh znBYhumt96d@`z(nNx?`bt{{by^a2+Rf2Bcn%?U>jG7>3gTwoy$#mGb-TpKQJJPXtT zE;55(W73tO_nBOSneUD`50AWfDX6YkJuNGTeC7zuPs8}u?jGZ@VyWSIv!oZ2CYO9+ zA)DQQj_nl=H|70?e+DMZ+2^kHEip2_!bht?TQNM|R4qP< zjVggqaB!fWp- zS}IG#c;KE()C=yyp~w5KK6nq>(<@UaET;MzE`Obnzyg_k}_=)r0a z7SuUu4D7Y;@aQLr>En{v5GQ2pnXUMNKym-m1D)P5?i~kRJ CgP&*s literal 0 HcmV?d00001 diff --git a/.licenses/npm/undici.dep.yml b/.licenses/npm/undici.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..cc74a6d2dafa7bc3a78a6bc451e5b57672ac0514 GIT binary patch literal 1396 zcmZ8hU5}$S6n*DcT+P$2#4y^bm8!fk;7qI%h=A50ETCM1}=$GH4UjutR<4~Q)z|7;=OxG2~iZ*q< zd-@W6p>~i$*^n-iv{ooOPI@HMPK|AQI_imX-HGVk1ic=`xj6x=xAtsSPfrVBq|oqg zB0ZggLAF8}w2ac;AIvIvB%|l46=p>lPgq{DfXIr!?TUWj7txm2lr6J?FC_YWo#d&v z^r`(!+Xm7!C3+a7YN$~i?Y&uQwX%~u%vMikncRtKl*T1M(oioZak$cHYLpdS2zNq| zK2qB^(@BJ6HPEhfMrIh$2ir&`)rlG)pRZmDx@`|AqmTB|Ov2MQ#^_cyz@$#M^N0u= z>o|{c5QaY4UeH5zn|S!_i8|2?9#JYF3c4TDMcQ7^mL_3frgb=d|392Z>Y{ z7B}wWF&+>uW&<})b4a7^WK~BX+7U&L&pbN#`9G z#=EL<+#K|G;e9Q)L1_!weg%FhUd*!X+mY#;VW5M!1qg1$jgp7FTZ7yAU@R_$Yz8{( z$@Bi-a&*(NVN@0C`ZX>Y@rrh3@s+16rH8n}^Fv6lyxtW1n$S_kdHqJkn&SM8{@{5U z68p9*SyfR{dJTNL%Q!=w=Sj9tdHzDrn9U3P1vvf)0ImzFL3)GZ46|$6vNG8KJ$~jH zuirusw&r#2u-8RNG40~A=E**bOWN(rT~RT}NCBPmd|iTxZCPGNU`CDDS3FR)iL=bn zdAxWJC#BO$NwIq?`OBuJO_8Mx#b*YE@pHx&Iv7l{m~TT$<8A!nRF+f#Y4Pb=7p3&N zVXo|WV|P6nS0ZF@)o?{uqDd6$>dYdF8@cm&JB5>mtS!SOA3CoGnN$ejnJ! ymeAq?+#`UyCQ4bH0S_z7KkVKIqW`|4N*1SE7L6SeSzc1uO0ZlnyutqbEBFV6^0U(b literal 0 HcmV?d00001 diff --git a/.licenses/npm/universal-user-agent.dep.yml b/.licenses/npm/universal-user-agent.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..c07307b848bf76d62c7adae3bb5ff70263b2e4d7 GIT binary patch literal 1064 zcmY*YOK+nv5We#(M%ha%5z_XsT5)rUlUU-BwVg&))dL9*K?)ezrrk*U<9AG&Z7U(b z_c3(_Nuce*x3DbVdG#5Ru5*c zYz!$&Xf9~fRsn!he_RZI@eSYyyfBeKdQo`2IXc(dcs8?r^(WG%o_%QB8NzOZk(22D zY?}J$;AVdd4|n&!LRcDAYXezn+_@Vp{1>VlcN})nUbnN_JhUGYYh~KT`b5BK-*gCj zR1KlkRdc{+*;O;ts~VreZg2|Rv9Z|D!M&G8!2vhR?hO54dTkZFqYdCU|I~wngHo6V z9FL={Gf+Us~$4!z{f2#j*da^t#pesxC-{I0YtP&5I{Cr*oJPf$Is7d=4H&HgZ*Pm}96ZVVMAurhqI?a>=NG zEt4zYbV)ek3#6dfr*NL6n>ovuBa3D0l%d5JcCmnr@??c#6LlHBA^vLoAomM25(}z9Awh@L>JkpcZ0aPBOB@ z20p0Q<#t7+DA18(S7MV&U;Tm?8Ki|k^a3`5q5+Y_Q!zIzR)nx!Q7n!7iV0qcWJT`L zXev1_L&)heWlNeT)Dw#lEenpo4W>F0LLi(8?^tZ4XCn{=Q6tB8yy6(Q&j70!{VB)h mGcu|!zQ-SZohwesJo`3Q6F*O{H=hG{I|(ia2gmT`HTVZN!b3y= literal 0 HcmV?d00001 diff --git a/.licenses/npm/unzip-stream.dep.yml b/.licenses/npm/unzip-stream.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..087a2c211e9b1aa3a8e098bc223d6a08a82dbb41 GIT binary patch literal 1349 zcmZuxO^@3)5WVYH4EB@&vXdqS3izhA=rvJU5-2&_MbU#S(KZW7G)O922mSGVr0fk+ z1TbKWoOxd}@?x=w#%7Q!n#OPHvars`W{AE@W0f9P^l|xl`D^5^7gUUwA+pmjH0HXZ z(&$!NOK75_>ZPU0s_{fKfd7@0JUZ(^UYe6!MZId}Xn`^)cYm;}XhBv_21qN)_?qPv zi-?^3$F1mJ{32TG%hjmU+0nc9J$?H4%Wt$(?YZe`Yo^2X=QW>b;Y&YLE*nF9JgQN- zE3nK(o5sOe6dFru24%fdQkKrr$itORrWu{=VmcZrNgoMp<|Jcsnws%S7i5D5eQ*t6 z$5TLRsD)5p?aqL*`siL8Bhk=NW36sg15E04I}LJlLBlP#ckV0$#zS@MdUzkmItiC* z1frz-6}>8V){`S6k+f>Pml#EDKXrF4_mW;A>zTg-G)Hg^CR&`3wEd^K{Oh{ZR^5Ra6M#yE5Y}jfv;$Y@hP{ zi5}6L7d2j)9j^gg7gU4v2FDrtHX)K76YDJ)l1HBL`X#0fuXB&P0dPWPB5J<|1hHFv3 zwLkNU#gqtM`G7W}0ELej9X`X{_vP$6k{>~E@HQ!w`4IOA;Z0M@k_>nlTmD1wGMcvs Ke_Mb475xV|;i9bo literal 0 HcmV?d00001 diff --git a/.licenses/npm/util-deprecate.dep.yml b/.licenses/npm/util-deprecate.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..b59b4f739cc67445bab10639b3ac7e59ab2bd482 GIT binary patch literal 2636 zcmeHJ&2Hm15Wedv200~wEblIQGK!*#MaM*C$)M;>gQCF75^XV%L_wt18=w#0;mFBu z_XTe55$rS!W^_SgIyIDM}t6@W7%|!D$^~cF|usi41FwrveoKJ^%h~BcENRFSHS|TnZ`=l6{LL4vVsKwPJMGL z_y@lM+?gH9go8e{D=f=TpbqAk5eEbDawJCcLfIJ>g14 zy>h?J_`MoCZGBLnEi`IW#}_z{W$#oS!f8|r%n7Qd9M38QXQ1p~V8CciPx|KQO5N-J z3?)?P#aFuqsjNAmwS6nH*t9W!${k&3W>mb4xux(KKZ|j z+8m~1t8EiPtv&s5a@f1|n>4%7_p~&47F655vS{pqdjIZ}>bx4}g+8vak^TjbkGDkV zx6UxO(=_%djX@!dn^)<+);>!-M6@BXq&%9hismt&jovu4 zPNSgVkfC|%*GIO&vjNB1&>SRs!07!phD7c8(|@!M4~NFN_}9Se{@iwS^|578$@9$Tw9Ydr za2aCPLi&IR{>Td!LM(WJmWf~^a+L8gBg*HPd2GgJCO-n|;B8V^;zK-O2)Q7J*;m5i z6ghEp*?$1hk5`vqak67kS0nIxc`bIyknV{9ZJe5be3_4ZG!C<^s_Tyld!HkTa#!8wcB|K(n&gOj` z5Lx-dF6m$VA}U%*TV7Cdg`j&J9s++A>(gaa$JWw)^+1cqr^ngiaq&n(ALMB1tCCG4 zM=wg-7QZSz*ijuOt4DK%*vYY1#@Qrg2tD#}q2pK%R@Nakqm-l@s@ifq%8;xE*o96A z1_SzFOEswBNF|U@7uRW9z!=@w_i~h;xim&ssstX@x|(`9*wQ+_Ms?EAJ%rI+ew(;^ z@FcY?J5mGCBz;`byRxmGERE8@MCC9-G*#VHI}IP#okGS}1~=~WF;4kp;K1n&sn@k? z+_&_$PSc@NrVXi94jTEO)3~DFnqTX0dL$#e&LJr1_Fn&2cU?VLkPY~65qaKsJcFN| zAfjd(2T&pu%+wl@dB%TaWnIN7Z*j@8|ji25lkNNA8#4 zgl|C%N;dC$-%U8(%q({&BtJV2U!-i3wt&7)4FycAwMD~rZ z*oy9=9Ot``UU{*}_64CsL}~Fx*_xvCjlS}96%zZt6D-du6U4W>gfrB58YlY|PhaR6 zb7_WG&+*&=T4Yp!@CL;h=GL@jBHjQwdgci)-a=aQB6XN+fJU^7M8V^I5((Pv#V*Sk z=vRPEdAb&0VOy3KbFiXD>>Cc0Z=xjeRM8&lh1VBnyEnmKHU(|6WW`W?W>6MAC+tcE zQ*jdUZAhzV8@)Jnf-(pezU`*&b;EoKd=Wlz!L!uah_kd1IEHX3iqFwkp0ki5!E+bL zT4aECabm({mb$r=T~S=rUiIfj(BcBy!}O;Lhv{A*WbZ^GjNsM literal 0 HcmV?d00001 diff --git a/.licenses/npm/webidl-conversions.dep.yml b/.licenses/npm/webidl-conversions.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..8c89571374a4bf00c44b4cb65d1666a38a0b5ddd GIT binary patch literal 1578 zcmb`H!H?oL6vprQE1tHO9VxIo)1K(bBnG?+NoqU8qSYQkVg^e|jAFxdr2g@JHqc?U zm3rxgSh4+m-}}8sCX-1t)V-R)tJ>+dn>1!PtI=vR*yy^L!LQTL)5plY9r4_7>?3>X z`+9tv0qc*Q>eb*ZxPyX?+Oaf)x_dFBc8A`=-i&aObb5FJXP_Qh*pH@%FZH<=&8UwK z&UJTEHaeJI9qSi0i#pw?!J^yFwv(qx)72-dZg1@@nt(N@u~Bvg8B1s`=(KMm0H^+R zGx!Tv0Kb65NOO_G(Y>u%DRY+o)d-4n8&y@bvldw-{1PFz5zS|7*HB93))_ z;h=?4Sv8(jJH1G7)oSZTy*oJs7D~gMpoeR`@Mfn6WaUZpHilQ^0tm%F&B;M;TD{jz z?FC|}M+HYU_S!ks!f`Zb-QvO>Y8L?SP1l)MPZFWF+F!EaQm@?XlId{@KgP0P_P0EZ zX%+M*>#!16V@}_-dS}iG1#dV8VMDSd*Cy+raAff419e%J|TO9J0tY9Q=_gs`_4HuCtSO0>$N1gVgf|5 zkQ>4&;JW0+GfQa-^DW2~g`_CAoGn)pRz;RlE`a1IzRe|P^GX)@;sX(Q^F!Dm`4;Hc zl2aj|;K0^p#!w8^ImsoXA_kTxS(UPU83PJHUPzqwHIsNu7I85B`5F`pSW}*?P=(A{ z#^g5mEtt%`*8|AEFX&f_3<%%GS4~0xsPGVOLQ2+TNdHh~FVAJo*Jxg5p1)ND_=u0#V^M7B;U0 z3(#0DDd$xwS&=_re>aE)>n3L4Y5_W<_y6u*La>6!9weEbk^3`C=!5 iEr6uYsFB_dWA6pK&PhO)tgg7H(dA2kAK7o;qrU+M59kO0 literal 0 HcmV?d00001 diff --git a/.licenses/npm/whatwg-url.dep.yml b/.licenses/npm/whatwg-url.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..73a698840ebcfbae9a8e9760a44181bc22fc1edf GIT binary patch literal 1366 zcmZ8h&5r6e6yE14j%L#tDbQ)9+XXvMFoV^QASYZps=6?VA+8cTvYpFC>Z0$^H|&%2 z*nwNM5)%0M`1?CYEEbDIi$Sj7+6jNXEGFA0U!--)=oNfgzAj%Ae;e^$k3-_7VG#DV z0-`|;V=o7(z3|uz<_x}*aNLsm_znl2L*<2Tg>Aoc@ksUzumGb#aD9P6G@a7Y-jdD? zaugT2N_y2u?T~Cx{&8@tWC6}hwvlcHIm>8K(WU?D696y2`W5_vzW{1v-?19<83Ug2 z@RG!<%#1gyE}e(x<^_Iy{o&K!fBuDEKS3o=!g(b$?8ME^-Fs;VuO% zJgxvABXJQBT}%$$1kEW7rd8+gEu+P8I`ztRDYPoUpC*r;E)?Um(%|QNW5LOOmWL<` zJ=|B~p)&S`yf7=&agWS}$`x1OzmC+b>pWSF)EE+WwFV=M%)iUVhe~j9Hhpid!DeH0 ztAcl2ndmC4ggBWmGWwb~KpT&;;|P3*Ly2PMY2UA0C;A>v@*W^^D;?oN`C$#+PA7*O zj?2@-Xl&&Dzvbm!$Cg4>Zt5f96j%j&UVdh4x`roG;rS_rBdfRNp$6>Wq^Lij+yE&) z;Ad8>Q=q@>Ijt%vdDOvn`aHIm-p7{#|6*ioKs z5uLoToYfy`1lzE>2-usF1A#r^HOme;;jlmOeOXbIu}0{E6&sFBbVrMNiOg67`WX*U zZAqR7x`;;(=!6HYkd^xn&fd2*Y|DI2vG_(&A$iN`Oos-uoUmOAYqBHnK_!P0k!GKv zbykXhD>Re?FTqb%v$6=5va+Z-9#eG8>u=AGtfDCp&Z-d3hL^k9Y={_NAqxWG+k(zW pA^sTHw<%#u2=IUbJT$?Yk{t1HWJRH-l&6PBnM|eT6NPN9Ea3siLn5;jkJ&71-I(R& z?l}j1dwZJ=?O8A3wKrX#y=do+9hPvHf6ec*a2c^QjOWZx=X2{WOQ_9nJvU!}yMbvi zZ_rt+4Tl^`GaMlF8ji;K0A}!^9Xbv62<-s+O?Ojh_a}{&*p>loiK_Cfw`V=J&w81i zOs5BrGmY;)Hh!7ig13|Fw8#0Zpj=YK2K^S6@CR1_3WqXTpt^+5(qUo8i!;xCfa~rC zm~Yz-e&is#{xs>J9f~?YVTa(%ehSw48Mf8#Yle$*`BH>$fi_}L{Q8O zwxW4pE4qR!B5{8Ogs&hrk)5g<0V~Y4CTt^t)HNVV5Uv=NNz)@!6$rW}0x=E3knoe7 z7xiw%_&OokW?M5H^T_~BnMgKN6cv(^dsZ{`lmwJaaVljFj010gK2WYeR#Cz~+U_a7 z2XbFiC>xQu2!8^(r3EAP0;LODs0DI-tk6%<;Pd&uLq6<*71@wAm4Jl^ec#UBDxzeA zlLb1IyIMsjrD!%#Hxdyg>?Fk@M3D%`98t7fz+**GqKL`~pG6glH9R74xDq64;&ffJ zHRT13;3gqdBd~FYNhiPph+r~KZFVZ6-#sER@^G{kS<@B7Oi)eIK?R1fA&I&C|4Q;~ MejoTB{rr{v1;80D*#H0l literal 0 HcmV?d00001 diff --git a/.licenses/npm/wrap-ansi-cjs.dep.yml b/.licenses/npm/wrap-ansi-cjs.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..1abba43f09726d39a39b6dd8fe523104a922a44b GIT binary patch literal 1310 zcmZ8hUvJ_#5P#3781<=@0`1#LXtmlDOtCH`$O+}D(><8P5LZbY+0L>^`{8%Sq`ljd zkig@a-#^>TX0xc5om#-f%3&sZr)Sl>i@q!CwCNY{$NXvj6#46bE&b3%ZtOZ~uM0RB zThk0kaNg?v3>WPiNV0;1a+MquRHjxgYD}jFc~*<4)s^ZU0(IJdEZicRfit76lv}{m z5dnDh!!O_`{sP$Y64Kjj6bef-T&+Gg9`36LD0E+21%nr*z?`6Jq&=$`yaCx?VZfYl zz#P5QJ%u3A^>C$5-yn=LCx4NsPWClO=S-y~;z4byu~WU5p7>6>RSxcbqu{QXChi^r zNv&iHx<@o}IDt{pX7pecMPCs{j7?QL)*lB!+pWf+ZwxdZ5_6<{bm)L|#?YBspXgf! zTf=y4wQFLiH9;RokDZQ+;pk%W@n|eK)wYD7QFrkAue#7fESL@QPZ0&)3*Lp_onS<# z(e_A*q2NqyFtWh-t}0IzQhqXRYc6E1GJUPdFW#GQ6-wNeNAsO-+sCEojYqj5@^A=2 z$n9jOE!RlYe^gUw$c+(G>BAB_9FNZ9;cLu)Fg9@h-|BqQuwhW->++BY2E2fs$Y1%2 zt>7*xaD5lUftQlryaHY? zoXc{20UX}}f|fayNH{@phI4D!GO^qsa`MbmUcSY!=4D2hYXnVTmxz)t_h}+vw->v- zU`W40*oA^*yQPoVey%vvgA2s zH!3u>OcTD1VU=u?7g8r6N5LYrP3jIC7D~vM;AdI#JR=*+JSzn*V{|FX&(Q-fSPY5a z1qHGeIl@z%I6;|ZG?%d(3Pl}Mf1U`oP+)sB{i$Wek`%GyhQwz9QIm~45bo5hMr%k_r5A*l)cagsixZMw3%uLf88|cAO1TA09T9+6 zzx)Dz<1c_MFCo3nMxn4Y!`13@g8Rn% z!7Uyi|Jy)Y4>!=AvYmG18nlB(S#`X^*~;FlI);-~3d{+rM%uHA!5fhM6$Z=+2h7n+ z-BSn>T@P34^bNu|bMhC7>SSMobk0;-A|BMH8avf{>51>8Tjk*1Hwx~GY2xl7kkm@H zpnF6khZ7hjZAK4PQS=pI#Mo4|WBqy%wB2e9`o=)xAu&hFM~4nbXAGUG^@+Y!ur-Xw zR=XyKS`+kf^w{aB7>+I`ACJa@Q*BEK8g&P+|Edc;#Ddu%{}fT+z2IH=+X+T=8f}l1 z7z)nR1|tiMKUC$ZLds93ZOw(ORi>{s`New^u0o01@@Rh2ZF{{Gz40hFL>>+y2)Ui? zwB;I!`j2V~4Y@I5D!p1lhvU(CJbaD$55@-0|683;8a51yd|e(A!GIUA6Zu!ZVk@{y z3S8gCaNy-8-JQRxz-Dc7hcJ=IG(Gr0;sT0IlBR(w*`s<9^eyw8nctL@z zMUL$vhC)#X)o&+)Efm-uO}}Ybu_Q$-Jf7^Y=6Q6xA^2bP?R)eG@QkDS literal 0 HcmV?d00001 diff --git a/.licenses/npm/wrappy.dep.yml b/.licenses/npm/wrappy.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..2a532ec343ca5b72b9833d2a9fb53e8de07b61f1 GIT binary patch literal 994 zcmY+DOOM+i6ovQx6<1xgQXXxW*)a}DkQ|c&p3$`Gf;c2bjUNI$(@6dCz2JDH{^)#+ilWiQ5g+jlGYviQ9CnuXhdYu(Uher#LqZY#+3^?KCxuZghT z1;${nHr%qNZ_S`D2s9xKezja)Y-q;gqVC%zYAo+HuC_Lv$8FZv*?r_j~372RXYP`T-4ny zc^F1F^xnWL#s&Ny$9@cOHU=|7W1KnO;No-_%xMOL>tF22oKR5*d>GKj{>3DzXkv=f z^#OAx`>FEq?)YtK7>sscJHR7}_O0=YDW2L$09HcDfj-hwf!sw4|9E?#cpu0^L1Dv1(jw(E$OFw8 zDQ0M0&|J+>s7_9Q89{y&mMHr)^WkAD2j{sNaIC@TN} literal 0 HcmV?d00001 diff --git a/.licenses/npm/xml2js.dep.yml b/.licenses/npm/xml2js.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..92bce8ddacc1418480ee3691e3c6093b8014d738 GIT binary patch literal 1360 zcmZ8hO^=&A5We#(Mtf={l5Dr?B{wf|Hf{+-hU|x`9vpCjE5OJ$yN&ez_;+mBR;?6~ zWjynId9sVeBI-pa*YK-r?|$0oRT`^wzlPi8m*s8bt^=O+Ll@bx>x8+kp-|n>N_gI< z;52*{ucD}o8XV};PgyyrbdMlTnq}1JP7dON2#s@tU9VOb<(l!dtaP_ZrS4TN?BZ;6 zw|Hict6tY~G3#hmC3}mLopRCqV%O0EtR77z?HW>+(5#>lfRn%68vet-01`c1jk+`r z?ruNb#{T&!JnzEu^AbqgLg=tyq?P7X*2^f&9;E4%_4YwoXrz&+D_o4|ovdRx8!17b zp=yM=$k>|~{S^ib39*%1+X(bE_t@;4x%kS2V55PKH3WfJE zXcKt|bkBr9Ja-vY^A;2X;} zG0^7&r$qrd4?5WXkTQyOmL=(N!?Fjs$Js0|@z=0tB?6Z@c+we;QJmevp7Lae=;WTI ztbBiz52zrz(}WRIT%dz z%H9uV9W2P`X{@DLQ!FB$!{AHrN{b- ze*5(NJEcF)(}=%b!Q6F_W3P-eOUh6yM_FCzJeGr%O-QFvO428)+j2b1kgTS1xY7mj zU_e*4RD&AMR8kE#Pm6Bb0?O!<{U}F?frd(BbgfEYQlsmsmxC>><20HyqSLsd-%#lMtgvh&yICGk6g+s}zf}4@mlv{vj$35L zRX*@O{_9B1x=zzLfEpp8tI>$iGk=w}brt90q`OXkIGeQ|8s)s>nRr(PuFFb)lit_7 z`9WLA_ABs9@nYs}->ytsb{$pn79hCQ;Ne{PZVhgy%2+%KRd#gIqv!p<<>gJsj#Hj) zi#L{W5;+~R^t0IT4Lz_N=ZBEqM6pYc1)(EjN%2nUmRRyme~4rg6900@c%D<5c^zVZ zhy_PoBvE|ah~$-CFq@=!^a8IPz(q<0NN;e0V|Gh>o<%#LvlkJI;yv_WTTvtqdz)s& z=)kf*H0O}90dyjgZ3ZU3=Si^yGit;?<3Rb2#j&IFc#m?(8gDp?FB}TlOU!3F7>r^j_91Q9p1nGi8Kpp)eY)0JDZTBuD?46>PgICBah9Sq zDKZ>GIL?Zn<8LD8A+b#4E}U(a?q{Kg6?%V2&z_*we%ui#(E0HYEB literal 0 HcmV?d00001 diff --git a/.licenses/npm/yaml.dep.yml b/.licenses/npm/yaml.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..a870f57bdeacf82ee5d6b97d73c1db4d5ea14811 GIT binary patch literal 982 zcmYk5L2u$P5QXpg6{DU5l%7^-wOThA@G3a0ZHlVZ9$YYBiNuj@=pyZp@7T0zr6^&P zdEdM@4uip<=yYo)aMkUpxELR->n1QBj_-#LMZEU-s_WY#oZD9W>jZx3iIC$Mfvn!$Z?qYXlheRFmW}#lVpBSWJ0h{Z1Hz|} zn#fu$8Ua%#tD3N-1X9<4DnYnnRKkX-MfM@+oCwr3C_~^UoLBXF%J@7h*>Y7g9P@?H z%wS1HwLlwqFF-SNSUE% zek~~uB8ntA?h#GP5;hBp7DaMS@TwGRIAAvpRszcsIGxvQPI*O>uu0t+sTzUJYut1e yl|TfOX>zkxiGa-rMGnVkiJFce?*pA=4^-eHmL!vBH|EzP85Xzi1OF|5{uXb_IU}e5 literal 0 HcmV?d00001 diff --git a/.licenses/npm/zip-stream.dep.yml b/.licenses/npm/zip-stream.dep.yml new file mode 100644 index 0000000000000000000000000000000000000000..53bd4ff5920055cde488c0eed8371ef3f092149a GIT binary patch literal 1362 zcmZ8hOOM+&5WeeI4EB@&vYiw~558$-dQC)@42sTXQS?Adw8cas1(M3vMSpyTl=5f+ z18Y(9J%`@aYL#d)$SwS%#+CC{iXr(bty4yC;g9vZ_4~x%M|`ixA#u|%2z%dxfO%Bu zTL6NvO{cy}xJfOo@W!r_&J1!CH$-;ck8Zo!+?4O8%epbcW|_C2-A0>Mu6_~kRU@@S z*r0r}Jh*ML0%s=MNVkQ8=A^7i0^sG}ehdGu@GC%W#=BLw&cmDLE&TTG{qK->Ryp9J z|AI!n(J3@Wd#f%JT6F6q;!e^I%7wsy!=1G9a)+B0+RHYDtCbSW6`D@in@qtQ5c&=y zR%CRR*MG2xvh#XBs7t6I##yHK-MaJNCW~ZtqXk!<_WmVF0&rppVNy*o!j*>t=;sex&tSF*ncE%(u z`pm1-3!_g59`T2&*b#j3NYG{WSddu~L*_+Bk16c3WA;QMvO@DLj?FG3!SjK{W7N&? zlXF^?p{KkmIm5>kQ!^e4ituMzlN2&WYqT5*_N+pgP&1-Jk7dA?WM&F0hzWjd3P(bT fXDp#&kzw|=BUyo*xVrK`fORt8ApF<#=U>S;mG!Bt literal 0 HcmV?d00001 From 020761922861c5b0a0a9b98ae4adccf1f675862c Mon Sep 17 00:00:00 2001 From: Yang Cao Date: Thu, 9 Jan 2025 10:18:40 -0500 Subject: [PATCH 05/10] move files back to satisfy licensed ci --- .../{github-6.0.0.dep.yml => github.dep.yml} | Bin .../{minimatch-9.0.3.dep.yml => minimatch.dep.yml} | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename .licenses/npm/@actions/{github-6.0.0.dep.yml => github.dep.yml} (100%) rename .licenses/npm/{minimatch-9.0.3.dep.yml => minimatch.dep.yml} (100%) diff --git a/.licenses/npm/@actions/github-6.0.0.dep.yml b/.licenses/npm/@actions/github.dep.yml similarity index 100% rename from .licenses/npm/@actions/github-6.0.0.dep.yml rename to .licenses/npm/@actions/github.dep.yml diff --git a/.licenses/npm/minimatch-9.0.3.dep.yml b/.licenses/npm/minimatch.dep.yml similarity index 100% rename from .licenses/npm/minimatch-9.0.3.dep.yml rename to .licenses/npm/minimatch.dep.yml From b26fd06e9da88a61ada55f23d7863325b1f115d3 Mon Sep 17 00:00:00 2001 From: Yang Cao Date: Fri, 21 Feb 2025 13:05:59 -0500 Subject: [PATCH 06/10] Update to use artifact 2.2.2 package --- dist/merge/index.js | 2175 +----------------------------------------- dist/upload/index.js | 2175 +----------------------------------------- package-lock.json | 378 ++------ package.json | 4 +- 4 files changed, 95 insertions(+), 4637 deletions(-) diff --git a/dist/merge/index.js b/dist/merge/index.js index f38ff57..31792d4 100644 --- a/dist/merge/index.js +++ b/dist/merge/index.js @@ -813,7 +813,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); __exportStar(__nccwpck_require__(54622), exports); __exportStar(__nccwpck_require__(8626), exports); __exportStar(__nccwpck_require__(58178), exports); -__exportStar(__nccwpck_require__(63077), exports); +__exportStar(__nccwpck_require__(49773), exports); //# sourceMappingURL=index.js.map /***/ }), @@ -1529,23 +1529,13 @@ exports.ArtifactService = new runtime_rpc_1.ServiceType("github.actions.results. /***/ }), -/***/ 63077: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +/***/ 49773: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.createArtifactServiceServer = exports.ArtifactServiceMethodList = exports.ArtifactServiceMethod = exports.ArtifactServiceClientProtobuf = exports.ArtifactServiceClientJSON = void 0; -const twirp_ts_1 = __nccwpck_require__(66465); +exports.ArtifactServiceClientProtobuf = exports.ArtifactServiceClientJSON = void 0; const artifact_1 = __nccwpck_require__(58178); class ArtifactServiceClientJSON { constructor(rpc) { @@ -1642,405 +1632,7 @@ class ArtifactServiceClientProtobuf { } } exports.ArtifactServiceClientProtobuf = ArtifactServiceClientProtobuf; -var ArtifactServiceMethod; -(function (ArtifactServiceMethod) { - ArtifactServiceMethod["CreateArtifact"] = "CreateArtifact"; - ArtifactServiceMethod["FinalizeArtifact"] = "FinalizeArtifact"; - ArtifactServiceMethod["ListArtifacts"] = "ListArtifacts"; - ArtifactServiceMethod["GetSignedArtifactURL"] = "GetSignedArtifactURL"; - ArtifactServiceMethod["DeleteArtifact"] = "DeleteArtifact"; -})(ArtifactServiceMethod || (exports.ArtifactServiceMethod = ArtifactServiceMethod = {})); -exports.ArtifactServiceMethodList = [ - ArtifactServiceMethod.CreateArtifact, - ArtifactServiceMethod.FinalizeArtifact, - ArtifactServiceMethod.ListArtifacts, - ArtifactServiceMethod.GetSignedArtifactURL, - ArtifactServiceMethod.DeleteArtifact, -]; -function createArtifactServiceServer(service) { - return new twirp_ts_1.TwirpServer({ - service, - packageName: "github.actions.results.api.v1", - serviceName: "ArtifactService", - methodList: exports.ArtifactServiceMethodList, - matchRoute: matchArtifactServiceRoute, - }); -} -exports.createArtifactServiceServer = createArtifactServiceServer; -function matchArtifactServiceRoute(method, events) { - switch (method) { - case "CreateArtifact": - return (ctx, service, data, interceptors) => __awaiter(this, void 0, void 0, function* () { - ctx = Object.assign(Object.assign({}, ctx), { methodName: "CreateArtifact" }); - yield events.onMatch(ctx); - return handleArtifactServiceCreateArtifactRequest(ctx, service, data, interceptors); - }); - case "FinalizeArtifact": - return (ctx, service, data, interceptors) => __awaiter(this, void 0, void 0, function* () { - ctx = Object.assign(Object.assign({}, ctx), { methodName: "FinalizeArtifact" }); - yield events.onMatch(ctx); - return handleArtifactServiceFinalizeArtifactRequest(ctx, service, data, interceptors); - }); - case "ListArtifacts": - return (ctx, service, data, interceptors) => __awaiter(this, void 0, void 0, function* () { - ctx = Object.assign(Object.assign({}, ctx), { methodName: "ListArtifacts" }); - yield events.onMatch(ctx); - return handleArtifactServiceListArtifactsRequest(ctx, service, data, interceptors); - }); - case "GetSignedArtifactURL": - return (ctx, service, data, interceptors) => __awaiter(this, void 0, void 0, function* () { - ctx = Object.assign(Object.assign({}, ctx), { methodName: "GetSignedArtifactURL" }); - yield events.onMatch(ctx); - return handleArtifactServiceGetSignedArtifactURLRequest(ctx, service, data, interceptors); - }); - case "DeleteArtifact": - return (ctx, service, data, interceptors) => __awaiter(this, void 0, void 0, function* () { - ctx = Object.assign(Object.assign({}, ctx), { methodName: "DeleteArtifact" }); - yield events.onMatch(ctx); - return handleArtifactServiceDeleteArtifactRequest(ctx, service, data, interceptors); - }); - default: - events.onNotFound(); - const msg = `no handler found`; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.BadRoute, msg); - } -} -function handleArtifactServiceCreateArtifactRequest(ctx, service, data, interceptors) { - switch (ctx.contentType) { - case twirp_ts_1.TwirpContentType.JSON: - return handleArtifactServiceCreateArtifactJSON(ctx, service, data, interceptors); - case twirp_ts_1.TwirpContentType.Protobuf: - return handleArtifactServiceCreateArtifactProtobuf(ctx, service, data, interceptors); - default: - const msg = "unexpected Content-Type"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.BadRoute, msg); - } -} -function handleArtifactServiceFinalizeArtifactRequest(ctx, service, data, interceptors) { - switch (ctx.contentType) { - case twirp_ts_1.TwirpContentType.JSON: - return handleArtifactServiceFinalizeArtifactJSON(ctx, service, data, interceptors); - case twirp_ts_1.TwirpContentType.Protobuf: - return handleArtifactServiceFinalizeArtifactProtobuf(ctx, service, data, interceptors); - default: - const msg = "unexpected Content-Type"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.BadRoute, msg); - } -} -function handleArtifactServiceListArtifactsRequest(ctx, service, data, interceptors) { - switch (ctx.contentType) { - case twirp_ts_1.TwirpContentType.JSON: - return handleArtifactServiceListArtifactsJSON(ctx, service, data, interceptors); - case twirp_ts_1.TwirpContentType.Protobuf: - return handleArtifactServiceListArtifactsProtobuf(ctx, service, data, interceptors); - default: - const msg = "unexpected Content-Type"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.BadRoute, msg); - } -} -function handleArtifactServiceGetSignedArtifactURLRequest(ctx, service, data, interceptors) { - switch (ctx.contentType) { - case twirp_ts_1.TwirpContentType.JSON: - return handleArtifactServiceGetSignedArtifactURLJSON(ctx, service, data, interceptors); - case twirp_ts_1.TwirpContentType.Protobuf: - return handleArtifactServiceGetSignedArtifactURLProtobuf(ctx, service, data, interceptors); - default: - const msg = "unexpected Content-Type"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.BadRoute, msg); - } -} -function handleArtifactServiceDeleteArtifactRequest(ctx, service, data, interceptors) { - switch (ctx.contentType) { - case twirp_ts_1.TwirpContentType.JSON: - return handleArtifactServiceDeleteArtifactJSON(ctx, service, data, interceptors); - case twirp_ts_1.TwirpContentType.Protobuf: - return handleArtifactServiceDeleteArtifactProtobuf(ctx, service, data, interceptors); - default: - const msg = "unexpected Content-Type"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.BadRoute, msg); - } -} -function handleArtifactServiceCreateArtifactJSON(ctx, service, data, interceptors) { - return __awaiter(this, void 0, void 0, function* () { - let request; - let response; - try { - const body = JSON.parse(data.toString() || "{}"); - request = artifact_1.CreateArtifactRequest.fromJson(body, { - ignoreUnknownFields: true, - }); - } - catch (e) { - if (e instanceof Error) { - const msg = "the json request could not be decoded"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - if (interceptors && interceptors.length > 0) { - const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); - response = yield interceptor(ctx, request, (ctx, inputReq) => { - return service.CreateArtifact(ctx, inputReq); - }); - } - else { - response = yield service.CreateArtifact(ctx, request); - } - return JSON.stringify(artifact_1.CreateArtifactResponse.toJson(response, { - useProtoFieldName: true, - emitDefaultValues: false, - })); - }); -} -function handleArtifactServiceFinalizeArtifactJSON(ctx, service, data, interceptors) { - return __awaiter(this, void 0, void 0, function* () { - let request; - let response; - try { - const body = JSON.parse(data.toString() || "{}"); - request = artifact_1.FinalizeArtifactRequest.fromJson(body, { - ignoreUnknownFields: true, - }); - } - catch (e) { - if (e instanceof Error) { - const msg = "the json request could not be decoded"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - if (interceptors && interceptors.length > 0) { - const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); - response = yield interceptor(ctx, request, (ctx, inputReq) => { - return service.FinalizeArtifact(ctx, inputReq); - }); - } - else { - response = yield service.FinalizeArtifact(ctx, request); - } - return JSON.stringify(artifact_1.FinalizeArtifactResponse.toJson(response, { - useProtoFieldName: true, - emitDefaultValues: false, - })); - }); -} -function handleArtifactServiceListArtifactsJSON(ctx, service, data, interceptors) { - return __awaiter(this, void 0, void 0, function* () { - let request; - let response; - try { - const body = JSON.parse(data.toString() || "{}"); - request = artifact_1.ListArtifactsRequest.fromJson(body, { - ignoreUnknownFields: true, - }); - } - catch (e) { - if (e instanceof Error) { - const msg = "the json request could not be decoded"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - if (interceptors && interceptors.length > 0) { - const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); - response = yield interceptor(ctx, request, (ctx, inputReq) => { - return service.ListArtifacts(ctx, inputReq); - }); - } - else { - response = yield service.ListArtifacts(ctx, request); - } - return JSON.stringify(artifact_1.ListArtifactsResponse.toJson(response, { - useProtoFieldName: true, - emitDefaultValues: false, - })); - }); -} -function handleArtifactServiceGetSignedArtifactURLJSON(ctx, service, data, interceptors) { - return __awaiter(this, void 0, void 0, function* () { - let request; - let response; - try { - const body = JSON.parse(data.toString() || "{}"); - request = artifact_1.GetSignedArtifactURLRequest.fromJson(body, { - ignoreUnknownFields: true, - }); - } - catch (e) { - if (e instanceof Error) { - const msg = "the json request could not be decoded"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - if (interceptors && interceptors.length > 0) { - const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); - response = yield interceptor(ctx, request, (ctx, inputReq) => { - return service.GetSignedArtifactURL(ctx, inputReq); - }); - } - else { - response = yield service.GetSignedArtifactURL(ctx, request); - } - return JSON.stringify(artifact_1.GetSignedArtifactURLResponse.toJson(response, { - useProtoFieldName: true, - emitDefaultValues: false, - })); - }); -} -function handleArtifactServiceDeleteArtifactJSON(ctx, service, data, interceptors) { - return __awaiter(this, void 0, void 0, function* () { - let request; - let response; - try { - const body = JSON.parse(data.toString() || "{}"); - request = artifact_1.DeleteArtifactRequest.fromJson(body, { - ignoreUnknownFields: true, - }); - } - catch (e) { - if (e instanceof Error) { - const msg = "the json request could not be decoded"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - if (interceptors && interceptors.length > 0) { - const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); - response = yield interceptor(ctx, request, (ctx, inputReq) => { - return service.DeleteArtifact(ctx, inputReq); - }); - } - else { - response = yield service.DeleteArtifact(ctx, request); - } - return JSON.stringify(artifact_1.DeleteArtifactResponse.toJson(response, { - useProtoFieldName: true, - emitDefaultValues: false, - })); - }); -} -function handleArtifactServiceCreateArtifactProtobuf(ctx, service, data, interceptors) { - return __awaiter(this, void 0, void 0, function* () { - let request; - let response; - try { - request = artifact_1.CreateArtifactRequest.fromBinary(data); - } - catch (e) { - if (e instanceof Error) { - const msg = "the protobuf request could not be decoded"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - if (interceptors && interceptors.length > 0) { - const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); - response = yield interceptor(ctx, request, (ctx, inputReq) => { - return service.CreateArtifact(ctx, inputReq); - }); - } - else { - response = yield service.CreateArtifact(ctx, request); - } - return Buffer.from(artifact_1.CreateArtifactResponse.toBinary(response)); - }); -} -function handleArtifactServiceFinalizeArtifactProtobuf(ctx, service, data, interceptors) { - return __awaiter(this, void 0, void 0, function* () { - let request; - let response; - try { - request = artifact_1.FinalizeArtifactRequest.fromBinary(data); - } - catch (e) { - if (e instanceof Error) { - const msg = "the protobuf request could not be decoded"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - if (interceptors && interceptors.length > 0) { - const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); - response = yield interceptor(ctx, request, (ctx, inputReq) => { - return service.FinalizeArtifact(ctx, inputReq); - }); - } - else { - response = yield service.FinalizeArtifact(ctx, request); - } - return Buffer.from(artifact_1.FinalizeArtifactResponse.toBinary(response)); - }); -} -function handleArtifactServiceListArtifactsProtobuf(ctx, service, data, interceptors) { - return __awaiter(this, void 0, void 0, function* () { - let request; - let response; - try { - request = artifact_1.ListArtifactsRequest.fromBinary(data); - } - catch (e) { - if (e instanceof Error) { - const msg = "the protobuf request could not be decoded"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - if (interceptors && interceptors.length > 0) { - const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); - response = yield interceptor(ctx, request, (ctx, inputReq) => { - return service.ListArtifacts(ctx, inputReq); - }); - } - else { - response = yield service.ListArtifacts(ctx, request); - } - return Buffer.from(artifact_1.ListArtifactsResponse.toBinary(response)); - }); -} -function handleArtifactServiceGetSignedArtifactURLProtobuf(ctx, service, data, interceptors) { - return __awaiter(this, void 0, void 0, function* () { - let request; - let response; - try { - request = artifact_1.GetSignedArtifactURLRequest.fromBinary(data); - } - catch (e) { - if (e instanceof Error) { - const msg = "the protobuf request could not be decoded"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - if (interceptors && interceptors.length > 0) { - const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); - response = yield interceptor(ctx, request, (ctx, inputReq) => { - return service.GetSignedArtifactURL(ctx, inputReq); - }); - } - else { - response = yield service.GetSignedArtifactURL(ctx, request); - } - return Buffer.from(artifact_1.GetSignedArtifactURLResponse.toBinary(response)); - }); -} -function handleArtifactServiceDeleteArtifactProtobuf(ctx, service, data, interceptors) { - return __awaiter(this, void 0, void 0, function* () { - let request; - let response; - try { - request = artifact_1.DeleteArtifactRequest.fromBinary(data); - } - catch (e) { - if (e instanceof Error) { - const msg = "the protobuf request could not be decoded"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - if (interceptors && interceptors.length > 0) { - const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); - response = yield interceptor(ctx, request, (ctx, inputReq) => { - return service.DeleteArtifact(ctx, inputReq); - }); - } - else { - response = yield service.DeleteArtifact(ctx, request); - } - return Buffer.from(artifact_1.DeleteArtifactResponse.toBinary(response)); - }); -} -//# sourceMappingURL=artifact.twirp.js.map +//# sourceMappingURL=artifact.twirp-client.js.map /***/ }), @@ -3039,10 +2631,8 @@ function getGitHubWorkspaceDir() { return ghWorkspaceDir; } exports.getGitHubWorkspaceDir = getGitHubWorkspaceDir; -// Mimics behavior of azcopy: https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-optimize -// If your machine has fewer than 5 CPUs, then the value of this variable is set to 32. -// Otherwise, the default value is equal to 16 multiplied by the number of CPUs. The maximum value of this variable is 300. -// This value can be lowered with ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY variable. +// The maximum value of concurrency is 300. +// This value can be changed with ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY variable. function getConcurrency() { const numCPUs = os_1.default.cpus().length; let concurrencyCap = 32; @@ -3057,11 +2647,14 @@ function getConcurrency() { throw new Error('Invalid value set for ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY env variable'); } if (concurrency < concurrencyCap) { + (0, core_1.info)(`Set concurrency based on the value set in ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY.`); return concurrency; } - (0, core_1.info)(`ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY is higher than the cap of ${concurrencyCap} based on the number of cpus. Lowering it to the cap.`); + (0, core_1.info)(`ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY is higher than the cap of ${concurrencyCap} based on the number of cpus. Set it to the maximum value allowed.`); + return concurrencyCap; } - return concurrencyCap; + // default concurrency to 5 + return 5; } exports.getConcurrency = getConcurrency; function getUploadChunkTimeout() { @@ -54519,6 +54112,7 @@ const json_format_contract_1 = __nccwpck_require__(48139); const reflection_equals_1 = __nccwpck_require__(39473); const binary_writer_1 = __nccwpck_require__(44354); const binary_reader_1 = __nccwpck_require__(65210); +const baseDescriptors = Object.getOwnPropertyDescriptors(Object.getPrototypeOf({})); /** * This standard message type provides reflection-based * operations to work with a message. @@ -54529,7 +54123,7 @@ class MessageType { this.typeName = name; this.fields = fields.map(reflection_info_1.normalizeFieldInfo); this.options = options !== null && options !== void 0 ? options : {}; - this.messagePrototype = Object.defineProperty({}, message_type_contract_1.MESSAGE_TYPE, { value: this }); + this.messagePrototype = Object.create(null, Object.assign(Object.assign({}, baseDescriptors), { [message_type_contract_1.MESSAGE_TYPE]: { value: this } })); this.refTypeCheck = new reflection_type_check_1.ReflectionTypeCheck(this); this.refJsonReader = new reflection_json_reader_1.ReflectionJsonReader(this); this.refJsonWriter = new reflection_json_writer_1.ReflectionJsonWriter(this); @@ -70568,599 +70162,6 @@ class Deprecation extends Error { exports.Deprecation = Deprecation; -/***/ }), - -/***/ 13598: -/***/ ((module) => { - -"use strict"; - - -function _process (v, mod) { - var i - var r - - if (typeof mod === 'function') { - r = mod(v) - if (r !== undefined) { - v = r - } - } else if (Array.isArray(mod)) { - for (i = 0; i < mod.length; i++) { - r = mod[i](v) - if (r !== undefined) { - v = r - } - } - } - - return v -} - -function parseKey (key, val) { - // detect negative index notation - if (key[0] === '-' && Array.isArray(val) && /^-\d+$/.test(key)) { - return val.length + parseInt(key, 10) - } - return key -} - -function isIndex (k) { - return /^\d+$/.test(k) -} - -function isObject (val) { - return Object.prototype.toString.call(val) === '[object Object]' -} - -function isArrayOrObject (val) { - return Object(val) === val -} - -function isEmptyObject (val) { - return Object.keys(val).length === 0 -} - -var blacklist = ['__proto__', 'prototype', 'constructor'] -var blacklistFilter = function (part) { return blacklist.indexOf(part) === -1 } - -function parsePath (path, sep) { - if (path.indexOf('[') >= 0) { - path = path.replace(/\[/g, sep).replace(/]/g, '') - } - - var parts = path.split(sep) - - var check = parts.filter(blacklistFilter) - - if (check.length !== parts.length) { - throw Error('Refusing to update blacklisted property ' + path) - } - - return parts -} - -var hasOwnProperty = Object.prototype.hasOwnProperty - -function DotObject (separator, override, useArray, useBrackets) { - if (!(this instanceof DotObject)) { - return new DotObject(separator, override, useArray, useBrackets) - } - - if (typeof override === 'undefined') override = false - if (typeof useArray === 'undefined') useArray = true - if (typeof useBrackets === 'undefined') useBrackets = true - this.separator = separator || '.' - this.override = override - this.useArray = useArray - this.useBrackets = useBrackets - this.keepArray = false - - // contains touched arrays - this.cleanup = [] -} - -var dotDefault = new DotObject('.', false, true, true) -function wrap (method) { - return function () { - return dotDefault[method].apply(dotDefault, arguments) - } -} - -DotObject.prototype._fill = function (a, obj, v, mod) { - var k = a.shift() - - if (a.length > 0) { - obj[k] = obj[k] || (this.useArray && isIndex(a[0]) ? [] : {}) - - if (!isArrayOrObject(obj[k])) { - if (this.override) { - obj[k] = {} - } else { - if (!(isArrayOrObject(v) && isEmptyObject(v))) { - throw new Error( - 'Trying to redefine `' + k + '` which is a ' + typeof obj[k] - ) - } - - return - } - } - - this._fill(a, obj[k], v, mod) - } else { - if (!this.override && isArrayOrObject(obj[k]) && !isEmptyObject(obj[k])) { - if (!(isArrayOrObject(v) && isEmptyObject(v))) { - throw new Error("Trying to redefine non-empty obj['" + k + "']") - } - - return - } - - obj[k] = _process(v, mod) - } -} - -/** - * - * Converts an object with dotted-key/value pairs to it's expanded version - * - * Optionally transformed by a set of modifiers. - * - * Usage: - * - * var row = { - * 'nr': 200, - * 'doc.name': ' My Document ' - * } - * - * var mods = { - * 'doc.name': [_s.trim, _s.underscored] - * } - * - * dot.object(row, mods) - * - * @param {Object} obj - * @param {Object} mods - */ -DotObject.prototype.object = function (obj, mods) { - var self = this - - Object.keys(obj).forEach(function (k) { - var mod = mods === undefined ? null : mods[k] - // normalize array notation. - var ok = parsePath(k, self.separator).join(self.separator) - - if (ok.indexOf(self.separator) !== -1) { - self._fill(ok.split(self.separator), obj, obj[k], mod) - delete obj[k] - } else { - obj[k] = _process(obj[k], mod) - } - }) - - return obj -} - -/** - * @param {String} path dotted path - * @param {String} v value to be set - * @param {Object} obj object to be modified - * @param {Function|Array} mod optional modifier - */ -DotObject.prototype.str = function (path, v, obj, mod) { - var ok = parsePath(path, this.separator).join(this.separator) - - if (path.indexOf(this.separator) !== -1) { - this._fill(ok.split(this.separator), obj, v, mod) - } else { - obj[path] = _process(v, mod) - } - - return obj -} - -/** - * - * Pick a value from an object using dot notation. - * - * Optionally remove the value - * - * @param {String} path - * @param {Object} obj - * @param {Boolean} remove - */ -DotObject.prototype.pick = function (path, obj, remove, reindexArray) { - var i - var keys - var val - var key - var cp - - keys = parsePath(path, this.separator) - for (i = 0; i < keys.length; i++) { - key = parseKey(keys[i], obj) - if (obj && typeof obj === 'object' && key in obj) { - if (i === keys.length - 1) { - if (remove) { - val = obj[key] - if (reindexArray && Array.isArray(obj)) { - obj.splice(key, 1) - } else { - delete obj[key] - } - if (Array.isArray(obj)) { - cp = keys.slice(0, -1).join('.') - if (this.cleanup.indexOf(cp) === -1) { - this.cleanup.push(cp) - } - } - return val - } else { - return obj[key] - } - } else { - obj = obj[key] - } - } else { - return undefined - } - } - if (remove && Array.isArray(obj)) { - obj = obj.filter(function (n) { - return n !== undefined - }) - } - return obj -} -/** - * - * Delete value from an object using dot notation. - * - * @param {String} path - * @param {Object} obj - * @return {any} The removed value - */ -DotObject.prototype.delete = function (path, obj) { - return this.remove(path, obj, true) -} - -/** - * - * Remove value from an object using dot notation. - * - * Will remove multiple items if path is an array. - * In this case array indexes will be retained until all - * removals have been processed. - * - * Use dot.delete() to automatically re-index arrays. - * - * @param {String|Array} path - * @param {Object} obj - * @param {Boolean} reindexArray - * @return {any} The removed value - */ -DotObject.prototype.remove = function (path, obj, reindexArray) { - var i - - this.cleanup = [] - if (Array.isArray(path)) { - for (i = 0; i < path.length; i++) { - this.pick(path[i], obj, true, reindexArray) - } - if (!reindexArray) { - this._cleanup(obj) - } - return obj - } else { - return this.pick(path, obj, true, reindexArray) - } -} - -DotObject.prototype._cleanup = function (obj) { - var ret - var i - var keys - var root - if (this.cleanup.length) { - for (i = 0; i < this.cleanup.length; i++) { - keys = this.cleanup[i].split('.') - root = keys.splice(0, -1).join('.') - ret = root ? this.pick(root, obj) : obj - ret = ret[keys[0]].filter(function (v) { - return v !== undefined - }) - this.set(this.cleanup[i], ret, obj) - } - this.cleanup = [] - } -} - -/** - * Alias method for `dot.remove` - * - * Note: this is not an alias for dot.delete() - * - * @param {String|Array} path - * @param {Object} obj - * @param {Boolean} reindexArray - * @return {any} The removed value - */ -DotObject.prototype.del = DotObject.prototype.remove - -/** - * - * Move a property from one place to the other. - * - * If the source path does not exist (undefined) - * the target property will not be set. - * - * @param {String} source - * @param {String} target - * @param {Object} obj - * @param {Function|Array} mods - * @param {Boolean} merge - */ -DotObject.prototype.move = function (source, target, obj, mods, merge) { - if (typeof mods === 'function' || Array.isArray(mods)) { - this.set(target, _process(this.pick(source, obj, true), mods), obj, merge) - } else { - merge = mods - this.set(target, this.pick(source, obj, true), obj, merge) - } - - return obj -} - -/** - * - * Transfer a property from one object to another object. - * - * If the source path does not exist (undefined) - * the property on the other object will not be set. - * - * @param {String} source - * @param {String} target - * @param {Object} obj1 - * @param {Object} obj2 - * @param {Function|Array} mods - * @param {Boolean} merge - */ -DotObject.prototype.transfer = function ( - source, - target, - obj1, - obj2, - mods, - merge -) { - if (typeof mods === 'function' || Array.isArray(mods)) { - this.set( - target, - _process(this.pick(source, obj1, true), mods), - obj2, - merge - ) - } else { - merge = mods - this.set(target, this.pick(source, obj1, true), obj2, merge) - } - - return obj2 -} - -/** - * - * Copy a property from one object to another object. - * - * If the source path does not exist (undefined) - * the property on the other object will not be set. - * - * @param {String} source - * @param {String} target - * @param {Object} obj1 - * @param {Object} obj2 - * @param {Function|Array} mods - * @param {Boolean} merge - */ -DotObject.prototype.copy = function (source, target, obj1, obj2, mods, merge) { - if (typeof mods === 'function' || Array.isArray(mods)) { - this.set( - target, - _process( - // clone what is picked - JSON.parse(JSON.stringify(this.pick(source, obj1, false))), - mods - ), - obj2, - merge - ) - } else { - merge = mods - this.set(target, this.pick(source, obj1, false), obj2, merge) - } - - return obj2 -} - -/** - * - * Set a property on an object using dot notation. - * - * @param {String} path - * @param {any} val - * @param {Object} obj - * @param {Boolean} merge - */ -DotObject.prototype.set = function (path, val, obj, merge) { - var i - var k - var keys - var key - - // Do not operate if the value is undefined. - if (typeof val === 'undefined') { - return obj - } - keys = parsePath(path, this.separator) - - for (i = 0; i < keys.length; i++) { - key = keys[i] - if (i === keys.length - 1) { - if (merge && isObject(val) && isObject(obj[key])) { - for (k in val) { - if (hasOwnProperty.call(val, k)) { - obj[key][k] = val[k] - } - } - } else if (merge && Array.isArray(obj[key]) && Array.isArray(val)) { - for (var j = 0; j < val.length; j++) { - obj[keys[i]].push(val[j]) - } - } else { - obj[key] = val - } - } else if ( - // force the value to be an object - !hasOwnProperty.call(obj, key) || - (!isObject(obj[key]) && !Array.isArray(obj[key])) - ) { - // initialize as array if next key is numeric - if (/^\d+$/.test(keys[i + 1])) { - obj[key] = [] - } else { - obj[key] = {} - } - } - obj = obj[key] - } - return obj -} - -/** - * - * Transform an object - * - * Usage: - * - * var obj = { - * "id": 1, - * "some": { - * "thing": "else" - * } - * } - * - * var transform = { - * "id": "nr", - * "some.thing": "name" - * } - * - * var tgt = dot.transform(transform, obj) - * - * @param {Object} recipe Transform recipe - * @param {Object} obj Object to be transformed - * @param {Array} mods modifiers for the target - */ -DotObject.prototype.transform = function (recipe, obj, tgt) { - obj = obj || {} - tgt = tgt || {} - Object.keys(recipe).forEach( - function (key) { - this.set(recipe[key], this.pick(key, obj), tgt) - }.bind(this) - ) - return tgt -} - -/** - * - * Convert object to dotted-key/value pair - * - * Usage: - * - * var tgt = dot.dot(obj) - * - * or - * - * var tgt = {} - * dot.dot(obj, tgt) - * - * @param {Object} obj source object - * @param {Object} tgt target object - * @param {Array} path path array (internal) - */ -DotObject.prototype.dot = function (obj, tgt, path) { - tgt = tgt || {} - path = path || [] - var isArray = Array.isArray(obj) - - Object.keys(obj).forEach( - function (key) { - var index = isArray && this.useBrackets ? '[' + key + ']' : key - if ( - isArrayOrObject(obj[key]) && - ((isObject(obj[key]) && !isEmptyObject(obj[key])) || - (Array.isArray(obj[key]) && !this.keepArray && obj[key].length !== 0)) - ) { - if (isArray && this.useBrackets) { - var previousKey = path[path.length - 1] || '' - return this.dot( - obj[key], - tgt, - path.slice(0, -1).concat(previousKey + index) - ) - } else { - return this.dot(obj[key], tgt, path.concat(index)) - } - } else { - if (isArray && this.useBrackets) { - tgt[path.join(this.separator).concat('[' + key + ']')] = obj[key] - } else { - tgt[path.concat(index).join(this.separator)] = obj[key] - } - } - }.bind(this) - ) - return tgt -} - -DotObject.pick = wrap('pick') -DotObject.move = wrap('move') -DotObject.transfer = wrap('transfer') -DotObject.transform = wrap('transform') -DotObject.copy = wrap('copy') -DotObject.object = wrap('object') -DotObject.str = wrap('str') -DotObject.set = wrap('set') -DotObject.delete = wrap('delete') -DotObject.del = DotObject.remove = wrap('remove') -DotObject.dot = wrap('dot'); -['override', 'overwrite'].forEach(function (prop) { - Object.defineProperty(DotObject, prop, { - get: function () { - return dotDefault.override - }, - set: function (val) { - dotDefault.override = !!val - } - }) -}); -['useArray', 'keepArray', 'useBrackets'].forEach(function (prop) { - Object.defineProperty(DotObject, prop, { - get: function () { - return dotDefault[prop] - }, - set: function (val) { - dotDefault[prop] = val - } - }) -}) - -DotObject._process = _process - -module.exports = DotObject - - /***/ }), /***/ 84697: @@ -94928,1152 +93929,6 @@ if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { exports.debug = debug; // for test -/***/ }), - -/***/ 31524: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); - - -/***/ }), - -/***/ 66647: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.isValidErrorCode = exports.httpStatusFromErrorCode = exports.TwirpErrorCode = exports.BadRouteError = exports.InternalServerErrorWith = exports.InternalServerError = exports.RequiredArgumentError = exports.InvalidArgumentError = exports.NotFoundError = exports.TwirpError = void 0; -/** - * Represents a twirp error - */ -class TwirpError extends Error { - constructor(code, msg) { - super(msg); - this.code = TwirpErrorCode.Internal; - this.meta = {}; - this.code = code; - this.msg = msg; - Object.setPrototypeOf(this, TwirpError.prototype); - } - /** - * Adds a metadata kv to the error - * @param key - * @param value - */ - withMeta(key, value) { - this.meta[key] = value; - return this; - } - /** - * Returns a single metadata value - * return "" if not found - * @param key - */ - getMeta(key) { - return this.meta[key] || ""; - } - /** - * Add the original error cause - * @param err - * @param addMeta - */ - withCause(err, addMeta = false) { - this._originalCause = err; - if (addMeta) { - this.withMeta("cause", err.message); - } - return this; - } - cause() { - return this._originalCause; - } - /** - * Returns the error representation to JSON - */ - toJSON() { - try { - return JSON.stringify({ - code: this.code, - msg: this.msg, - meta: this.meta, - }); - } - catch (e) { - return `{"code": "internal", "msg": "There was an error but it could not be serialized into JSON"}`; - } - } - /** - * Create a twirp error from an object - * @param obj - */ - static fromObject(obj) { - const code = obj["code"] || TwirpErrorCode.Unknown; - const msg = obj["msg"] || "unknown"; - const error = new TwirpError(code, msg); - if (obj["meta"]) { - Object.keys(obj["meta"]).forEach((key) => { - error.withMeta(key, obj["meta"][key]); - }); - } - return error; - } -} -exports.TwirpError = TwirpError; -/** - * NotFoundError constructor for the common NotFound error. - */ -class NotFoundError extends TwirpError { - constructor(msg) { - super(TwirpErrorCode.NotFound, msg); - } -} -exports.NotFoundError = NotFoundError; -/** - * InvalidArgumentError constructor for the common InvalidArgument error. Can be - * used when an argument has invalid format, is a number out of range, is a bad - * option, etc). - */ -class InvalidArgumentError extends TwirpError { - constructor(argument, validationMsg) { - super(TwirpErrorCode.InvalidArgument, argument + " " + validationMsg); - this.withMeta("argument", argument); - } -} -exports.InvalidArgumentError = InvalidArgumentError; -/** - * RequiredArgumentError is a more specific constructor for InvalidArgument - * error. Should be used when the argument is required (expected to have a - * non-zero value). - */ -class RequiredArgumentError extends InvalidArgumentError { - constructor(argument) { - super(argument, "is required"); - } -} -exports.RequiredArgumentError = RequiredArgumentError; -/** - * InternalError constructor for the common Internal error. Should be used to - * specify that something bad or unexpected happened. - */ -class InternalServerError extends TwirpError { - constructor(msg) { - super(TwirpErrorCode.Internal, msg); - } -} -exports.InternalServerError = InternalServerError; -/** - * InternalErrorWith makes an internal error, wrapping the original error and using it - * for the error message, and with metadata "cause" with the original error type. - * This function is used by Twirp services to wrap non-Twirp errors as internal errors. - * The wrapped error can be extracted later with err.cause() - */ -class InternalServerErrorWith extends InternalServerError { - constructor(err) { - super(err.message); - this.withMeta("cause", err.name); - this.withCause(err); - } -} -exports.InternalServerErrorWith = InternalServerErrorWith; -/** - * A standard BadRoute Error - */ -class BadRouteError extends TwirpError { - constructor(msg, method, url) { - super(TwirpErrorCode.BadRoute, msg); - this.withMeta("twirp_invalid_route", method + " " + url); - } -} -exports.BadRouteError = BadRouteError; -var TwirpErrorCode; -(function (TwirpErrorCode) { - // Canceled indicates the operation was cancelled (typically by the caller). - TwirpErrorCode["Canceled"] = "canceled"; - // Unknown error. For example when handling errors raised by APIs that do not - // return enough error information. - TwirpErrorCode["Unknown"] = "unknown"; - // InvalidArgument indicates client specified an invalid argument. It - // indicates arguments that are problematic regardless of the state of the - // system (i.e. a malformed file name, required argument, number out of range, - // etc.). - TwirpErrorCode["InvalidArgument"] = "invalid_argument"; - // Malformed indicates an error occurred while decoding the client's request. - // This may mean that the message was encoded improperly, or that there is a - // disagreement in message format between the client and server. - TwirpErrorCode["Malformed"] = "malformed"; - // DeadlineExceeded means operation expired before completion. For operations - // that change the state of the system, this error may be returned even if the - // operation has completed successfully (timeout). - TwirpErrorCode["DeadlineExceeded"] = "deadline_exceeded"; - // NotFound means some requested entity was not found. - TwirpErrorCode["NotFound"] = "not_found"; - // BadRoute means that the requested URL path wasn't routable to a Twirp - // service and method. This is returned by the generated server, and usually - // shouldn't be returned by applications. Instead, applications should use - // NotFound or Unimplemented. - TwirpErrorCode["BadRoute"] = "bad_route"; - // AlreadyExists means an attempt to create an entity failed because one - // already exists. - TwirpErrorCode["AlreadyExists"] = "already_exists"; - // PermissionDenied indicates the caller does not have permission to execute - // the specified operation. It must not be used if the caller cannot be - // identified (Unauthenticated). - TwirpErrorCode["PermissionDenied"] = "permission_denied"; - // Unauthenticated indicates the request does not have valid authentication - // credentials for the operation. - TwirpErrorCode["Unauthenticated"] = "unauthenticated"; - // ResourceExhausted indicates some resource has been exhausted, perhaps a - // per-user quota, or perhaps the entire file system is out of space. - TwirpErrorCode["ResourceExhausted"] = "resource_exhausted"; - // FailedPrecondition indicates operation was rejected because the system is - // not in a state required for the operation's execution. For example, doing - // an rmdir operation on a directory that is non-empty, or on a non-directory - // object, or when having conflicting read-modify-write on the same resource. - TwirpErrorCode["FailedPrecondition"] = "failed_precondition"; - // Aborted indicates the operation was aborted, typically due to a concurrency - // issue like sequencer check failures, transaction aborts, etc. - TwirpErrorCode["Aborted"] = "aborted"; - // OutOfRange means operation was attempted past the valid range. For example, - // seeking or reading past end of a paginated collection. - // - // Unlike InvalidArgument, this error indicates a problem that may be fixed if - // the system state changes (i.e. adding more items to the collection). - // - // There is a fair bit of overlap between FailedPrecondition and OutOfRange. - // We recommend using OutOfRange (the more specific error) when it applies so - // that callers who are iterating through a space can easily look for an - // OutOfRange error to detect when they are done. - TwirpErrorCode["OutOfRange"] = "out_of_range"; - // Unimplemented indicates operation is not implemented or not - // supported/enabled in this service. - TwirpErrorCode["Unimplemented"] = "unimplemented"; - // Internal errors. When some invariants expected by the underlying system - // have been broken. In other words, something bad happened in the library or - // backend service. Do not confuse with HTTP Internal Server Error; an - // Internal error could also happen on the client code, i.e. when parsing a - // server response. - TwirpErrorCode["Internal"] = "internal"; - // Unavailable indicates the service is currently unavailable. This is a most - // likely a transient condition and may be corrected by retrying with a - // backoff. - TwirpErrorCode["Unavailable"] = "unavailable"; - // DataLoss indicates unrecoverable data loss or corruption. - TwirpErrorCode["DataLoss"] = "data_loss"; -})(TwirpErrorCode = exports.TwirpErrorCode || (exports.TwirpErrorCode = {})); -// ServerHTTPStatusFromErrorCode maps a Twirp error type into a similar HTTP -// response status. It is used by the Twirp server handler to set the HTTP -// response status code. Returns 0 if the ErrorCode is invalid. -function httpStatusFromErrorCode(code) { - switch (code) { - case TwirpErrorCode.Canceled: - return 408; // RequestTimeout - case TwirpErrorCode.Unknown: - return 500; // Internal Server Error - case TwirpErrorCode.InvalidArgument: - return 400; // BadRequest - case TwirpErrorCode.Malformed: - return 400; // BadRequest - case TwirpErrorCode.DeadlineExceeded: - return 408; // RequestTimeout - case TwirpErrorCode.NotFound: - return 404; // Not Found - case TwirpErrorCode.BadRoute: - return 404; // Not Found - case TwirpErrorCode.AlreadyExists: - return 409; // Conflict - case TwirpErrorCode.PermissionDenied: - return 403; // Forbidden - case TwirpErrorCode.Unauthenticated: - return 401; // Unauthorized - case TwirpErrorCode.ResourceExhausted: - return 429; // Too Many Requests - case TwirpErrorCode.FailedPrecondition: - return 412; // Precondition Failed - case TwirpErrorCode.Aborted: - return 409; // Conflict - case TwirpErrorCode.OutOfRange: - return 400; // Bad Request - case TwirpErrorCode.Unimplemented: - return 501; // Not Implemented - case TwirpErrorCode.Internal: - return 500; // Internal Server Error - case TwirpErrorCode.Unavailable: - return 503; // Service Unavailable - case TwirpErrorCode.DataLoss: - return 500; // Internal Server Error - default: - return 0; // Invalid! - } -} -exports.httpStatusFromErrorCode = httpStatusFromErrorCode; -// IsValidErrorCode returns true if is one of the valid predefined constants. -function isValidErrorCode(code) { - return httpStatusFromErrorCode(code) != 0; -} -exports.isValidErrorCode = isValidErrorCode; - - -/***/ }), - -/***/ 56748: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __rest = (this && this.__rest) || function (s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.Gateway = exports.Pattern = void 0; -const querystring_1 = __nccwpck_require__(63477); -const dotObject = __importStar(__nccwpck_require__(13598)); -const request_1 = __nccwpck_require__(8347); -const errors_1 = __nccwpck_require__(66647); -const http_client_1 = __nccwpck_require__(94091); -const server_1 = __nccwpck_require__(26604); -var Pattern; -(function (Pattern) { - Pattern["POST"] = "post"; - Pattern["GET"] = "get"; - Pattern["PATCH"] = "patch"; - Pattern["PUT"] = "put"; - Pattern["DELETE"] = "delete"; -})(Pattern = exports.Pattern || (exports.Pattern = {})); -/** - * The Gateway proxies http requests to Twirp Compliant - * handlers - */ -class Gateway { - constructor(routes) { - this.routes = routes; - } - /** - * Middleware that rewrite the current request - * to a Twirp compliant request - */ - twirpRewrite(prefix = "/twirp") { - return (req, resp, next) => { - this.rewrite(req, resp, prefix) - .then(() => next()) - .catch((e) => { - if (e instanceof errors_1.TwirpError) { - if (e.code !== errors_1.TwirpErrorCode.NotFound) { - server_1.writeError(resp, e); - } - else { - next(); - } - } - }); - }; - } - /** - * Rewrite an incoming request to a Twirp compliant request - * @param req - * @param resp - * @param prefix - */ - rewrite(req, resp, prefix = "/twirp") { - return __awaiter(this, void 0, void 0, function* () { - const [match, route] = this.matchRoute(req); - const body = yield this.prepareTwirpBody(req, match, route); - const twirpUrl = `${prefix}/${route.packageName}.${route.serviceName}/${route.methodName}`; - req.url = twirpUrl; - req.originalUrl = twirpUrl; - req.method = "POST"; - req.headers["content-type"] = "application/json"; - req.rawBody = Buffer.from(JSON.stringify(body)); - if (route.responseBodyKey) { - const endFn = resp.end.bind(resp); - resp.end = function (chunk) { - if (resp.statusCode === 200) { - endFn(`{ "${route.responseBodyKey}": ${chunk} }`); - } - else { - endFn(chunk); - } - }; - } - }); - } - /** - * Create a reverse proxy handler to - * proxy http requests to Twirp Compliant handlers - * @param httpClientOption - */ - reverseProxy(httpClientOption) { - const client = http_client_1.NodeHttpRPC(httpClientOption); - return (req, res) => __awaiter(this, void 0, void 0, function* () { - try { - const [match, route] = this.matchRoute(req); - const body = yield this.prepareTwirpBody(req, match, route); - const response = yield client.request(`${route.packageName}.${route.serviceName}`, route.methodName, "application/json", body); - res.statusCode = 200; - res.setHeader("content-type", "application/json"); - let jsonResponse; - if (route.responseBodyKey) { - jsonResponse = JSON.stringify({ [route.responseBodyKey]: response }); - } - else { - jsonResponse = JSON.stringify(response); - } - res.end(jsonResponse); - } - catch (e) { - server_1.writeError(res, e); - } - }); - } - /** - * Prepares twirp body requests using http.google.annotions - * compliant spec - * - * @param req - * @param match - * @param route - * @protected - */ - prepareTwirpBody(req, match, route) { - return __awaiter(this, void 0, void 0, function* () { - const _a = match.params, { query_string } = _a, params = __rest(_a, ["query_string"]); - let requestBody = Object.assign({}, params); - if (query_string && route.bodyKey !== "*") { - const queryParams = this.parseQueryString(query_string); - requestBody = Object.assign(Object.assign({}, queryParams), requestBody); - } - let body = {}; - if (route.bodyKey) { - const data = yield request_1.getRequestData(req); - try { - const jsonBody = JSON.parse(data.toString() || "{}"); - if (route.bodyKey === "*") { - body = jsonBody; - } - else { - body[route.bodyKey] = jsonBody; - } - } - catch (e) { - const msg = "the json request could not be decoded"; - throw new errors_1.TwirpError(errors_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - return Object.assign(Object.assign({}, body), requestBody); - }); - } - /** - * Matches a route - * @param req - */ - matchRoute(req) { - var _a; - const httpMethod = (_a = req.method) === null || _a === void 0 ? void 0 : _a.toLowerCase(); - if (!httpMethod) { - throw new errors_1.BadRouteError(`method not allowed`, req.method || "", req.url || ""); - } - const routes = this.routes[httpMethod]; - for (const route of routes) { - const match = route.matcher(req.url || "/"); - if (match) { - return [match, route]; - } - } - throw new errors_1.NotFoundError(`url ${req.url} not found`); - } - /** - * Parse query string - * @param queryString - */ - parseQueryString(queryString) { - const queryParams = querystring_1.parse(queryString.replace("?", "")); - return dotObject.object(queryParams); - } -} -exports.Gateway = Gateway; - - -/***/ }), - -/***/ 4263: -/***/ (function(__unused_webpack_module, exports) { - -"use strict"; - -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.isHook = exports.chainHooks = void 0; -// ChainHooks creates a new ServerHook which chains the callbacks in -// each of the constituent hooks passed in. Each hook function will be -// called in the order of the ServerHooks values passed in. -// -// For the erroring hooks, RequestReceived and RequestRouted, any returned -// errors prevent processing by later hooks. -function chainHooks(...hooks) { - if (hooks.length === 0) { - return null; - } - if (hooks.length === 1) { - return hooks[0]; - } - const serverHook = { - requestReceived(ctx) { - return __awaiter(this, void 0, void 0, function* () { - for (const hook of hooks) { - if (!hook.requestReceived) { - continue; - } - yield hook.requestReceived(ctx); - } - }); - }, - requestPrepared(ctx) { - return __awaiter(this, void 0, void 0, function* () { - for (const hook of hooks) { - if (!hook.requestPrepared) { - continue; - } - console.warn("hook requestPrepared is deprecated and will be removed in the next release. " + - "Please use responsePrepared instead."); - yield hook.requestPrepared(ctx); - } - }); - }, - responsePrepared(ctx) { - return __awaiter(this, void 0, void 0, function* () { - for (const hook of hooks) { - if (!hook.responsePrepared) { - continue; - } - yield hook.responsePrepared(ctx); - } - }); - }, - requestSent(ctx) { - return __awaiter(this, void 0, void 0, function* () { - for (const hook of hooks) { - if (!hook.requestSent) { - continue; - } - console.warn("hook requestSent is deprecated and will be removed in the next release. " + - "Please use responseSent instead."); - yield hook.requestSent(ctx); - } - }); - }, - responseSent(ctx) { - return __awaiter(this, void 0, void 0, function* () { - for (const hook of hooks) { - if (!hook.responseSent) { - continue; - } - yield hook.responseSent(ctx); - } - }); - }, - requestRouted(ctx) { - return __awaiter(this, void 0, void 0, function* () { - for (const hook of hooks) { - if (!hook.requestRouted) { - continue; - } - yield hook.requestRouted(ctx); - } - }); - }, - error(ctx, err) { - return __awaiter(this, void 0, void 0, function* () { - for (const hook of hooks) { - if (!hook.error) { - continue; - } - yield hook.error(ctx, err); - } - }); - }, - }; - return serverHook; -} -exports.chainHooks = chainHooks; -function isHook(object) { - return ("requestReceived" in object || - "requestPrepared" in object || - "requestSent" in object || - "requestRouted" in object || - "responsePrepared" in object || - "responseSent" in object || - "error" in object); -} -exports.isHook = isHook; - - -/***/ }), - -/***/ 94091: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.FetchRPC = exports.wrapErrorResponseToTwirpError = exports.NodeHttpRPC = void 0; -const http = __importStar(__nccwpck_require__(13685)); -const https = __importStar(__nccwpck_require__(95687)); -const url_1 = __nccwpck_require__(57310); -const errors_1 = __nccwpck_require__(66647); -/** - * a node HTTP RPC implementation - * @param options - * @constructor - */ -const NodeHttpRPC = (options) => ({ - request(service, method, contentType, data) { - let client; - return new Promise((resolve, rejected) => { - const responseChunks = []; - const requestData = contentType === "application/protobuf" - ? Buffer.from(data) - : JSON.stringify(data); - const url = new url_1.URL(options.baseUrl); - const isHttps = url.protocol === "https:"; - if (isHttps) { - client = https; - } - else { - client = http; - } - const prefix = url.pathname !== "/" ? url.pathname : ""; - const req = client - .request(Object.assign(Object.assign({}, (options ? options : {})), { method: "POST", protocol: url.protocol, host: url.hostname, port: url.port ? url.port : isHttps ? 443 : 80, path: `${prefix}/${service}/${method}`, headers: Object.assign(Object.assign({}, (options.headers ? options.headers : {})), { "Content-Type": contentType, "Content-Length": contentType === "application/protobuf" - ? Buffer.byteLength(requestData) - : Buffer.from(requestData).byteLength }) }), (res) => { - res.on("data", (chunk) => responseChunks.push(chunk)); - res.on("end", () => { - const data = Buffer.concat(responseChunks); - if (res.statusCode != 200) { - rejected(wrapErrorResponseToTwirpError(data.toString())); - } - else { - if (contentType === "application/json") { - resolve(JSON.parse(data.toString())); - } - else { - resolve(data); - } - } - }); - res.on("error", (err) => { - rejected(err); - }); - }) - .on("error", (err) => { - rejected(err); - }); - req.end(requestData); - }); - }, -}); -exports.NodeHttpRPC = NodeHttpRPC; -function wrapErrorResponseToTwirpError(errorResponse) { - return errors_1.TwirpError.fromObject(JSON.parse(errorResponse)); -} -exports.wrapErrorResponseToTwirpError = wrapErrorResponseToTwirpError; -/** - * a browser fetch RPC implementation - */ -const FetchRPC = (options) => ({ - request(service, method, contentType, data) { - return __awaiter(this, void 0, void 0, function* () { - const headers = new Headers(options.headers); - headers.set("content-type", contentType); - const response = yield fetch(`${options.baseUrl}/${service}/${method}`, Object.assign(Object.assign({}, options), { method: "POST", headers, body: data instanceof Uint8Array ? data : JSON.stringify(data) })); - if (response.status === 200) { - if (contentType === "application/json") { - return yield response.json(); - } - return new Uint8Array(yield response.arrayBuffer()); - } - throw errors_1.TwirpError.fromObject(yield response.json()); - }); - }, -}); -exports.FetchRPC = FetchRPC; - - -/***/ }), - -/***/ 66465: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.TwirpContentType = void 0; -__exportStar(__nccwpck_require__(31524), exports); -__exportStar(__nccwpck_require__(26604), exports); -__exportStar(__nccwpck_require__(48913), exports); -__exportStar(__nccwpck_require__(4263), exports); -__exportStar(__nccwpck_require__(66647), exports); -__exportStar(__nccwpck_require__(56748), exports); -__exportStar(__nccwpck_require__(94091), exports); -var request_1 = __nccwpck_require__(8347); -Object.defineProperty(exports, "TwirpContentType", ({ enumerable: true, get: function () { return request_1.TwirpContentType; } })); - - -/***/ }), - -/***/ 48913: -/***/ (function(__unused_webpack_module, exports) { - -"use strict"; - -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.chainInterceptors = void 0; -// chains multiple Interceptors into a single Interceptor. -// The first interceptor wraps the second one, and so on. -// Returns null if interceptors is empty. -function chainInterceptors(...interceptors) { - if (interceptors.length === 0) { - return; - } - if (interceptors.length === 1) { - return interceptors[0]; - } - const first = interceptors[0]; - return (ctx, request, handler) => __awaiter(this, void 0, void 0, function* () { - let next = handler; - for (let i = interceptors.length - 1; i > 0; i--) { - next = ((next) => (ctx, typedRequest) => { - return interceptors[i](ctx, typedRequest, next); - })(next); - } - return first(ctx, request, next); - }); -} -exports.chainInterceptors = chainInterceptors; - - -/***/ }), - -/***/ 8347: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.parseTwirpPath = exports.getRequestData = exports.validateRequest = exports.getContentType = exports.TwirpContentType = void 0; -const errors_1 = __nccwpck_require__(66647); -/** - * Supported Twirp Content-Type - */ -var TwirpContentType; -(function (TwirpContentType) { - TwirpContentType[TwirpContentType["Protobuf"] = 0] = "Protobuf"; - TwirpContentType[TwirpContentType["JSON"] = 1] = "JSON"; - TwirpContentType[TwirpContentType["Unknown"] = 2] = "Unknown"; -})(TwirpContentType = exports.TwirpContentType || (exports.TwirpContentType = {})); -/** - * Get supported content-type - * @param mimeType - */ -function getContentType(mimeType) { - switch (mimeType) { - case "application/protobuf": - return TwirpContentType.Protobuf; - case "application/json": - return TwirpContentType.JSON; - default: - return TwirpContentType.Unknown; - } -} -exports.getContentType = getContentType; -/** - * Validate a twirp request - * @param ctx - * @param request - * @param pathPrefix - */ -function validateRequest(ctx, request, pathPrefix) { - if (request.method !== "POST") { - const msg = `unsupported method ${request.method} (only POST is allowed)`; - throw new errors_1.BadRouteError(msg, request.method || "", request.url || ""); - } - const path = parseTwirpPath(request.url || ""); - if (path.pkgService !== - (ctx.packageName ? ctx.packageName + "." : "") + ctx.serviceName) { - const msg = `no handler for path ${request.url}`; - throw new errors_1.BadRouteError(msg, request.method || "", request.url || ""); - } - if (path.prefix !== pathPrefix) { - const msg = `invalid path prefix ${path.prefix}, expected ${pathPrefix}, on path ${request.url}`; - throw new errors_1.BadRouteError(msg, request.method || "", request.url || ""); - } - const mimeContentType = request.headers["content-type"] || ""; - if (ctx.contentType === TwirpContentType.Unknown) { - const msg = `unexpected Content-Type: ${request.headers["content-type"]}`; - throw new errors_1.BadRouteError(msg, request.method || "", request.url || ""); - } - return Object.assign(Object.assign({}, path), { mimeContentType, contentType: ctx.contentType }); -} -exports.validateRequest = validateRequest; -/** - * Get request data from the body - * @param req - */ -function getRequestData(req) { - return new Promise((resolve, reject) => { - const reqWithRawBody = req; - if (reqWithRawBody.rawBody instanceof Buffer) { - resolve(reqWithRawBody.rawBody); - return; - } - const chunks = []; - req.on("data", (chunk) => chunks.push(chunk)); - req.on("end", () => __awaiter(this, void 0, void 0, function* () { - const data = Buffer.concat(chunks); - resolve(data); - })); - req.on("error", (err) => { - if (req.aborted) { - reject(new errors_1.TwirpError(errors_1.TwirpErrorCode.DeadlineExceeded, "failed to read request: deadline exceeded")); - } - else { - reject(new errors_1.TwirpError(errors_1.TwirpErrorCode.Malformed, err.message).withCause(err)); - } - }); - req.on("close", () => { - reject(new errors_1.TwirpError(errors_1.TwirpErrorCode.Canceled, "failed to read request: context canceled")); - }); - }); -} -exports.getRequestData = getRequestData; -/** - * Parses twirp url path - * @param path - */ -function parseTwirpPath(path) { - const parts = path.split("/"); - if (parts.length < 2) { - return { - pkgService: "", - method: "", - prefix: "", - }; - } - return { - method: parts[parts.length - 1], - pkgService: parts[parts.length - 2], - prefix: parts.slice(0, parts.length - 2).join("/"), - }; -} -exports.parseTwirpPath = parseTwirpPath; - - -/***/ }), - -/***/ 26604: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.writeError = exports.TwirpServer = void 0; -const hooks_1 = __nccwpck_require__(4263); -const request_1 = __nccwpck_require__(8347); -const errors_1 = __nccwpck_require__(66647); -/** - * Runtime server implementation of a TwirpServer - */ -class TwirpServer { - constructor(options) { - this.pathPrefix = "/twirp"; - this.hooks = []; - this.interceptors = []; - this.packageName = options.packageName; - this.serviceName = options.serviceName; - this.methodList = options.methodList; - this.matchRoute = options.matchRoute; - this.service = options.service; - } - /** - * Returns the prefix for this server - */ - get prefix() { - return this.pathPrefix; - } - /** - * The http handler for twirp complaint endpoints - * @param options - */ - httpHandler(options) { - return (req, resp) => { - // setup prefix - if ((options === null || options === void 0 ? void 0 : options.prefix) !== undefined) { - this.withPrefix(options.prefix); - } - return this._httpHandler(req, resp); - }; - } - /** - * Adds interceptors or hooks to the request stack - * @param middlewares - */ - use(...middlewares) { - middlewares.forEach((middleware) => { - if (hooks_1.isHook(middleware)) { - this.hooks.push(middleware); - return this; - } - this.interceptors.push(middleware); - }); - return this; - } - /** - * Adds a prefix to the service url path - * @param prefix - */ - withPrefix(prefix) { - if (prefix === false) { - this.pathPrefix = ""; - } - else { - this.pathPrefix = prefix; - } - return this; - } - /** - * Returns the regex matching path for this twirp server - */ - matchingPath() { - const baseRegex = this.baseURI().replace(/\./g, "\\."); - return new RegExp(`${baseRegex}\/(${this.methodList.join("|")})`); - } - /** - * Returns the base URI for this twirp server - */ - baseURI() { - return `${this.pathPrefix}/${this.packageName ? this.packageName + "." : ""}${this.serviceName}`; - } - /** - * Create a twirp context - * @param req - * @param res - * @private - */ - createContext(req, res) { - return { - packageName: this.packageName, - serviceName: this.serviceName, - methodName: "", - contentType: request_1.getContentType(req.headers["content-type"]), - req: req, - res: res, - }; - } - /** - * Twrip server http handler implementation - * @param req - * @param resp - * @private - */ - _httpHandler(req, resp) { - return __awaiter(this, void 0, void 0, function* () { - const ctx = this.createContext(req, resp); - try { - yield this.invokeHook("requestReceived", ctx); - const { method, mimeContentType } = request_1.validateRequest(ctx, req, this.pathPrefix || ""); - const handler = this.matchRoute(method, { - onMatch: (ctx) => { - return this.invokeHook("requestRouted", ctx); - }, - onNotFound: () => { - const msg = `no handler for path ${req.url}`; - throw new errors_1.BadRouteError(msg, req.method || "", req.url || ""); - }, - }); - const body = yield request_1.getRequestData(req); - const response = yield handler(ctx, this.service, body, this.interceptors); - yield Promise.all([ - this.invokeHook("responsePrepared", ctx), - // keep backwards compatibility till next release - this.invokeHook("requestPrepared", ctx), - ]); - resp.statusCode = 200; - resp.setHeader("Content-Type", mimeContentType); - resp.end(response); - } - catch (e) { - yield this.invokeHook("error", ctx, mustBeTwirpError(e)); - if (!resp.headersSent) { - writeError(resp, e); - } - } - finally { - yield Promise.all([ - this.invokeHook("responseSent", ctx), - // keep backwards compatibility till next release - this.invokeHook("requestSent", ctx), - ]); - } - }); - } - /** - * Invoke a hook - * @param hookName - * @param ctx - * @param err - * @protected - */ - invokeHook(hookName, ctx, err) { - return __awaiter(this, void 0, void 0, function* () { - if (this.hooks.length === 0) { - return; - } - const chainedHooks = hooks_1.chainHooks(...this.hooks); - const hook = chainedHooks === null || chainedHooks === void 0 ? void 0 : chainedHooks[hookName]; - if (hook) { - yield hook(ctx, err || new errors_1.InternalServerError("internal server error")); - } - }); - } -} -exports.TwirpServer = TwirpServer; -/** - * Write http error response - * @param res - * @param error - */ -function writeError(res, error) { - const twirpError = mustBeTwirpError(error); - res.setHeader("Content-Type", "application/json"); - res.statusCode = errors_1.httpStatusFromErrorCode(twirpError.code); - res.end(twirpError.toJSON()); -} -exports.writeError = writeError; -/** - * Make sure that the error passed is a TwirpError - * otherwise it will wrap it into an InternalError - * @param err - */ -function mustBeTwirpError(err) { - if (err instanceof errors_1.TwirpError) { - return err; - } - return new errors_1.InternalServerErrorWith(err); -} - - /***/ }), /***/ 41773: @@ -137628,7 +135483,7 @@ module.exports = index; /***/ ((module) => { "use strict"; -module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.2.1","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","jwt-decode":"^3.1.2","twirp-ts":"^2.5.0","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}'); +module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.2.2","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","jwt-decode":"^3.1.2","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}'); /***/ }), diff --git a/dist/upload/index.js b/dist/upload/index.js index a3c9a4e..3966dc5 100644 --- a/dist/upload/index.js +++ b/dist/upload/index.js @@ -813,7 +813,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); __exportStar(__nccwpck_require__(54622), exports); __exportStar(__nccwpck_require__(8626), exports); __exportStar(__nccwpck_require__(58178), exports); -__exportStar(__nccwpck_require__(63077), exports); +__exportStar(__nccwpck_require__(49773), exports); //# sourceMappingURL=index.js.map /***/ }), @@ -1529,23 +1529,13 @@ exports.ArtifactService = new runtime_rpc_1.ServiceType("github.actions.results. /***/ }), -/***/ 63077: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +/***/ 49773: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.createArtifactServiceServer = exports.ArtifactServiceMethodList = exports.ArtifactServiceMethod = exports.ArtifactServiceClientProtobuf = exports.ArtifactServiceClientJSON = void 0; -const twirp_ts_1 = __nccwpck_require__(66465); +exports.ArtifactServiceClientProtobuf = exports.ArtifactServiceClientJSON = void 0; const artifact_1 = __nccwpck_require__(58178); class ArtifactServiceClientJSON { constructor(rpc) { @@ -1642,405 +1632,7 @@ class ArtifactServiceClientProtobuf { } } exports.ArtifactServiceClientProtobuf = ArtifactServiceClientProtobuf; -var ArtifactServiceMethod; -(function (ArtifactServiceMethod) { - ArtifactServiceMethod["CreateArtifact"] = "CreateArtifact"; - ArtifactServiceMethod["FinalizeArtifact"] = "FinalizeArtifact"; - ArtifactServiceMethod["ListArtifacts"] = "ListArtifacts"; - ArtifactServiceMethod["GetSignedArtifactURL"] = "GetSignedArtifactURL"; - ArtifactServiceMethod["DeleteArtifact"] = "DeleteArtifact"; -})(ArtifactServiceMethod || (exports.ArtifactServiceMethod = ArtifactServiceMethod = {})); -exports.ArtifactServiceMethodList = [ - ArtifactServiceMethod.CreateArtifact, - ArtifactServiceMethod.FinalizeArtifact, - ArtifactServiceMethod.ListArtifacts, - ArtifactServiceMethod.GetSignedArtifactURL, - ArtifactServiceMethod.DeleteArtifact, -]; -function createArtifactServiceServer(service) { - return new twirp_ts_1.TwirpServer({ - service, - packageName: "github.actions.results.api.v1", - serviceName: "ArtifactService", - methodList: exports.ArtifactServiceMethodList, - matchRoute: matchArtifactServiceRoute, - }); -} -exports.createArtifactServiceServer = createArtifactServiceServer; -function matchArtifactServiceRoute(method, events) { - switch (method) { - case "CreateArtifact": - return (ctx, service, data, interceptors) => __awaiter(this, void 0, void 0, function* () { - ctx = Object.assign(Object.assign({}, ctx), { methodName: "CreateArtifact" }); - yield events.onMatch(ctx); - return handleArtifactServiceCreateArtifactRequest(ctx, service, data, interceptors); - }); - case "FinalizeArtifact": - return (ctx, service, data, interceptors) => __awaiter(this, void 0, void 0, function* () { - ctx = Object.assign(Object.assign({}, ctx), { methodName: "FinalizeArtifact" }); - yield events.onMatch(ctx); - return handleArtifactServiceFinalizeArtifactRequest(ctx, service, data, interceptors); - }); - case "ListArtifacts": - return (ctx, service, data, interceptors) => __awaiter(this, void 0, void 0, function* () { - ctx = Object.assign(Object.assign({}, ctx), { methodName: "ListArtifacts" }); - yield events.onMatch(ctx); - return handleArtifactServiceListArtifactsRequest(ctx, service, data, interceptors); - }); - case "GetSignedArtifactURL": - return (ctx, service, data, interceptors) => __awaiter(this, void 0, void 0, function* () { - ctx = Object.assign(Object.assign({}, ctx), { methodName: "GetSignedArtifactURL" }); - yield events.onMatch(ctx); - return handleArtifactServiceGetSignedArtifactURLRequest(ctx, service, data, interceptors); - }); - case "DeleteArtifact": - return (ctx, service, data, interceptors) => __awaiter(this, void 0, void 0, function* () { - ctx = Object.assign(Object.assign({}, ctx), { methodName: "DeleteArtifact" }); - yield events.onMatch(ctx); - return handleArtifactServiceDeleteArtifactRequest(ctx, service, data, interceptors); - }); - default: - events.onNotFound(); - const msg = `no handler found`; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.BadRoute, msg); - } -} -function handleArtifactServiceCreateArtifactRequest(ctx, service, data, interceptors) { - switch (ctx.contentType) { - case twirp_ts_1.TwirpContentType.JSON: - return handleArtifactServiceCreateArtifactJSON(ctx, service, data, interceptors); - case twirp_ts_1.TwirpContentType.Protobuf: - return handleArtifactServiceCreateArtifactProtobuf(ctx, service, data, interceptors); - default: - const msg = "unexpected Content-Type"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.BadRoute, msg); - } -} -function handleArtifactServiceFinalizeArtifactRequest(ctx, service, data, interceptors) { - switch (ctx.contentType) { - case twirp_ts_1.TwirpContentType.JSON: - return handleArtifactServiceFinalizeArtifactJSON(ctx, service, data, interceptors); - case twirp_ts_1.TwirpContentType.Protobuf: - return handleArtifactServiceFinalizeArtifactProtobuf(ctx, service, data, interceptors); - default: - const msg = "unexpected Content-Type"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.BadRoute, msg); - } -} -function handleArtifactServiceListArtifactsRequest(ctx, service, data, interceptors) { - switch (ctx.contentType) { - case twirp_ts_1.TwirpContentType.JSON: - return handleArtifactServiceListArtifactsJSON(ctx, service, data, interceptors); - case twirp_ts_1.TwirpContentType.Protobuf: - return handleArtifactServiceListArtifactsProtobuf(ctx, service, data, interceptors); - default: - const msg = "unexpected Content-Type"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.BadRoute, msg); - } -} -function handleArtifactServiceGetSignedArtifactURLRequest(ctx, service, data, interceptors) { - switch (ctx.contentType) { - case twirp_ts_1.TwirpContentType.JSON: - return handleArtifactServiceGetSignedArtifactURLJSON(ctx, service, data, interceptors); - case twirp_ts_1.TwirpContentType.Protobuf: - return handleArtifactServiceGetSignedArtifactURLProtobuf(ctx, service, data, interceptors); - default: - const msg = "unexpected Content-Type"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.BadRoute, msg); - } -} -function handleArtifactServiceDeleteArtifactRequest(ctx, service, data, interceptors) { - switch (ctx.contentType) { - case twirp_ts_1.TwirpContentType.JSON: - return handleArtifactServiceDeleteArtifactJSON(ctx, service, data, interceptors); - case twirp_ts_1.TwirpContentType.Protobuf: - return handleArtifactServiceDeleteArtifactProtobuf(ctx, service, data, interceptors); - default: - const msg = "unexpected Content-Type"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.BadRoute, msg); - } -} -function handleArtifactServiceCreateArtifactJSON(ctx, service, data, interceptors) { - return __awaiter(this, void 0, void 0, function* () { - let request; - let response; - try { - const body = JSON.parse(data.toString() || "{}"); - request = artifact_1.CreateArtifactRequest.fromJson(body, { - ignoreUnknownFields: true, - }); - } - catch (e) { - if (e instanceof Error) { - const msg = "the json request could not be decoded"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - if (interceptors && interceptors.length > 0) { - const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); - response = yield interceptor(ctx, request, (ctx, inputReq) => { - return service.CreateArtifact(ctx, inputReq); - }); - } - else { - response = yield service.CreateArtifact(ctx, request); - } - return JSON.stringify(artifact_1.CreateArtifactResponse.toJson(response, { - useProtoFieldName: true, - emitDefaultValues: false, - })); - }); -} -function handleArtifactServiceFinalizeArtifactJSON(ctx, service, data, interceptors) { - return __awaiter(this, void 0, void 0, function* () { - let request; - let response; - try { - const body = JSON.parse(data.toString() || "{}"); - request = artifact_1.FinalizeArtifactRequest.fromJson(body, { - ignoreUnknownFields: true, - }); - } - catch (e) { - if (e instanceof Error) { - const msg = "the json request could not be decoded"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - if (interceptors && interceptors.length > 0) { - const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); - response = yield interceptor(ctx, request, (ctx, inputReq) => { - return service.FinalizeArtifact(ctx, inputReq); - }); - } - else { - response = yield service.FinalizeArtifact(ctx, request); - } - return JSON.stringify(artifact_1.FinalizeArtifactResponse.toJson(response, { - useProtoFieldName: true, - emitDefaultValues: false, - })); - }); -} -function handleArtifactServiceListArtifactsJSON(ctx, service, data, interceptors) { - return __awaiter(this, void 0, void 0, function* () { - let request; - let response; - try { - const body = JSON.parse(data.toString() || "{}"); - request = artifact_1.ListArtifactsRequest.fromJson(body, { - ignoreUnknownFields: true, - }); - } - catch (e) { - if (e instanceof Error) { - const msg = "the json request could not be decoded"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - if (interceptors && interceptors.length > 0) { - const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); - response = yield interceptor(ctx, request, (ctx, inputReq) => { - return service.ListArtifacts(ctx, inputReq); - }); - } - else { - response = yield service.ListArtifacts(ctx, request); - } - return JSON.stringify(artifact_1.ListArtifactsResponse.toJson(response, { - useProtoFieldName: true, - emitDefaultValues: false, - })); - }); -} -function handleArtifactServiceGetSignedArtifactURLJSON(ctx, service, data, interceptors) { - return __awaiter(this, void 0, void 0, function* () { - let request; - let response; - try { - const body = JSON.parse(data.toString() || "{}"); - request = artifact_1.GetSignedArtifactURLRequest.fromJson(body, { - ignoreUnknownFields: true, - }); - } - catch (e) { - if (e instanceof Error) { - const msg = "the json request could not be decoded"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - if (interceptors && interceptors.length > 0) { - const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); - response = yield interceptor(ctx, request, (ctx, inputReq) => { - return service.GetSignedArtifactURL(ctx, inputReq); - }); - } - else { - response = yield service.GetSignedArtifactURL(ctx, request); - } - return JSON.stringify(artifact_1.GetSignedArtifactURLResponse.toJson(response, { - useProtoFieldName: true, - emitDefaultValues: false, - })); - }); -} -function handleArtifactServiceDeleteArtifactJSON(ctx, service, data, interceptors) { - return __awaiter(this, void 0, void 0, function* () { - let request; - let response; - try { - const body = JSON.parse(data.toString() || "{}"); - request = artifact_1.DeleteArtifactRequest.fromJson(body, { - ignoreUnknownFields: true, - }); - } - catch (e) { - if (e instanceof Error) { - const msg = "the json request could not be decoded"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - if (interceptors && interceptors.length > 0) { - const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); - response = yield interceptor(ctx, request, (ctx, inputReq) => { - return service.DeleteArtifact(ctx, inputReq); - }); - } - else { - response = yield service.DeleteArtifact(ctx, request); - } - return JSON.stringify(artifact_1.DeleteArtifactResponse.toJson(response, { - useProtoFieldName: true, - emitDefaultValues: false, - })); - }); -} -function handleArtifactServiceCreateArtifactProtobuf(ctx, service, data, interceptors) { - return __awaiter(this, void 0, void 0, function* () { - let request; - let response; - try { - request = artifact_1.CreateArtifactRequest.fromBinary(data); - } - catch (e) { - if (e instanceof Error) { - const msg = "the protobuf request could not be decoded"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - if (interceptors && interceptors.length > 0) { - const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); - response = yield interceptor(ctx, request, (ctx, inputReq) => { - return service.CreateArtifact(ctx, inputReq); - }); - } - else { - response = yield service.CreateArtifact(ctx, request); - } - return Buffer.from(artifact_1.CreateArtifactResponse.toBinary(response)); - }); -} -function handleArtifactServiceFinalizeArtifactProtobuf(ctx, service, data, interceptors) { - return __awaiter(this, void 0, void 0, function* () { - let request; - let response; - try { - request = artifact_1.FinalizeArtifactRequest.fromBinary(data); - } - catch (e) { - if (e instanceof Error) { - const msg = "the protobuf request could not be decoded"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - if (interceptors && interceptors.length > 0) { - const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); - response = yield interceptor(ctx, request, (ctx, inputReq) => { - return service.FinalizeArtifact(ctx, inputReq); - }); - } - else { - response = yield service.FinalizeArtifact(ctx, request); - } - return Buffer.from(artifact_1.FinalizeArtifactResponse.toBinary(response)); - }); -} -function handleArtifactServiceListArtifactsProtobuf(ctx, service, data, interceptors) { - return __awaiter(this, void 0, void 0, function* () { - let request; - let response; - try { - request = artifact_1.ListArtifactsRequest.fromBinary(data); - } - catch (e) { - if (e instanceof Error) { - const msg = "the protobuf request could not be decoded"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - if (interceptors && interceptors.length > 0) { - const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); - response = yield interceptor(ctx, request, (ctx, inputReq) => { - return service.ListArtifacts(ctx, inputReq); - }); - } - else { - response = yield service.ListArtifacts(ctx, request); - } - return Buffer.from(artifact_1.ListArtifactsResponse.toBinary(response)); - }); -} -function handleArtifactServiceGetSignedArtifactURLProtobuf(ctx, service, data, interceptors) { - return __awaiter(this, void 0, void 0, function* () { - let request; - let response; - try { - request = artifact_1.GetSignedArtifactURLRequest.fromBinary(data); - } - catch (e) { - if (e instanceof Error) { - const msg = "the protobuf request could not be decoded"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - if (interceptors && interceptors.length > 0) { - const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); - response = yield interceptor(ctx, request, (ctx, inputReq) => { - return service.GetSignedArtifactURL(ctx, inputReq); - }); - } - else { - response = yield service.GetSignedArtifactURL(ctx, request); - } - return Buffer.from(artifact_1.GetSignedArtifactURLResponse.toBinary(response)); - }); -} -function handleArtifactServiceDeleteArtifactProtobuf(ctx, service, data, interceptors) { - return __awaiter(this, void 0, void 0, function* () { - let request; - let response; - try { - request = artifact_1.DeleteArtifactRequest.fromBinary(data); - } - catch (e) { - if (e instanceof Error) { - const msg = "the protobuf request could not be decoded"; - throw new twirp_ts_1.TwirpError(twirp_ts_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - if (interceptors && interceptors.length > 0) { - const interceptor = (0, twirp_ts_1.chainInterceptors)(...interceptors); - response = yield interceptor(ctx, request, (ctx, inputReq) => { - return service.DeleteArtifact(ctx, inputReq); - }); - } - else { - response = yield service.DeleteArtifact(ctx, request); - } - return Buffer.from(artifact_1.DeleteArtifactResponse.toBinary(response)); - }); -} -//# sourceMappingURL=artifact.twirp.js.map +//# sourceMappingURL=artifact.twirp-client.js.map /***/ }), @@ -3039,10 +2631,8 @@ function getGitHubWorkspaceDir() { return ghWorkspaceDir; } exports.getGitHubWorkspaceDir = getGitHubWorkspaceDir; -// Mimics behavior of azcopy: https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-optimize -// If your machine has fewer than 5 CPUs, then the value of this variable is set to 32. -// Otherwise, the default value is equal to 16 multiplied by the number of CPUs. The maximum value of this variable is 300. -// This value can be lowered with ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY variable. +// The maximum value of concurrency is 300. +// This value can be changed with ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY variable. function getConcurrency() { const numCPUs = os_1.default.cpus().length; let concurrencyCap = 32; @@ -3057,11 +2647,14 @@ function getConcurrency() { throw new Error('Invalid value set for ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY env variable'); } if (concurrency < concurrencyCap) { + (0, core_1.info)(`Set concurrency based on the value set in ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY.`); return concurrency; } - (0, core_1.info)(`ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY is higher than the cap of ${concurrencyCap} based on the number of cpus. Lowering it to the cap.`); + (0, core_1.info)(`ACTIONS_ARTIFACT_UPLOAD_CONCURRENCY is higher than the cap of ${concurrencyCap} based on the number of cpus. Set it to the maximum value allowed.`); + return concurrencyCap; } - return concurrencyCap; + // default concurrency to 5 + return 5; } exports.getConcurrency = getConcurrency; function getUploadChunkTimeout() { @@ -54519,6 +54112,7 @@ const json_format_contract_1 = __nccwpck_require__(48139); const reflection_equals_1 = __nccwpck_require__(39473); const binary_writer_1 = __nccwpck_require__(44354); const binary_reader_1 = __nccwpck_require__(65210); +const baseDescriptors = Object.getOwnPropertyDescriptors(Object.getPrototypeOf({})); /** * This standard message type provides reflection-based * operations to work with a message. @@ -54529,7 +54123,7 @@ class MessageType { this.typeName = name; this.fields = fields.map(reflection_info_1.normalizeFieldInfo); this.options = options !== null && options !== void 0 ? options : {}; - this.messagePrototype = Object.defineProperty({}, message_type_contract_1.MESSAGE_TYPE, { value: this }); + this.messagePrototype = Object.create(null, Object.assign(Object.assign({}, baseDescriptors), { [message_type_contract_1.MESSAGE_TYPE]: { value: this } })); this.refTypeCheck = new reflection_type_check_1.ReflectionTypeCheck(this); this.refJsonReader = new reflection_json_reader_1.ReflectionJsonReader(this); this.refJsonWriter = new reflection_json_writer_1.ReflectionJsonWriter(this); @@ -70568,599 +70162,6 @@ class Deprecation extends Error { exports.Deprecation = Deprecation; -/***/ }), - -/***/ 13598: -/***/ ((module) => { - -"use strict"; - - -function _process (v, mod) { - var i - var r - - if (typeof mod === 'function') { - r = mod(v) - if (r !== undefined) { - v = r - } - } else if (Array.isArray(mod)) { - for (i = 0; i < mod.length; i++) { - r = mod[i](v) - if (r !== undefined) { - v = r - } - } - } - - return v -} - -function parseKey (key, val) { - // detect negative index notation - if (key[0] === '-' && Array.isArray(val) && /^-\d+$/.test(key)) { - return val.length + parseInt(key, 10) - } - return key -} - -function isIndex (k) { - return /^\d+$/.test(k) -} - -function isObject (val) { - return Object.prototype.toString.call(val) === '[object Object]' -} - -function isArrayOrObject (val) { - return Object(val) === val -} - -function isEmptyObject (val) { - return Object.keys(val).length === 0 -} - -var blacklist = ['__proto__', 'prototype', 'constructor'] -var blacklistFilter = function (part) { return blacklist.indexOf(part) === -1 } - -function parsePath (path, sep) { - if (path.indexOf('[') >= 0) { - path = path.replace(/\[/g, sep).replace(/]/g, '') - } - - var parts = path.split(sep) - - var check = parts.filter(blacklistFilter) - - if (check.length !== parts.length) { - throw Error('Refusing to update blacklisted property ' + path) - } - - return parts -} - -var hasOwnProperty = Object.prototype.hasOwnProperty - -function DotObject (separator, override, useArray, useBrackets) { - if (!(this instanceof DotObject)) { - return new DotObject(separator, override, useArray, useBrackets) - } - - if (typeof override === 'undefined') override = false - if (typeof useArray === 'undefined') useArray = true - if (typeof useBrackets === 'undefined') useBrackets = true - this.separator = separator || '.' - this.override = override - this.useArray = useArray - this.useBrackets = useBrackets - this.keepArray = false - - // contains touched arrays - this.cleanup = [] -} - -var dotDefault = new DotObject('.', false, true, true) -function wrap (method) { - return function () { - return dotDefault[method].apply(dotDefault, arguments) - } -} - -DotObject.prototype._fill = function (a, obj, v, mod) { - var k = a.shift() - - if (a.length > 0) { - obj[k] = obj[k] || (this.useArray && isIndex(a[0]) ? [] : {}) - - if (!isArrayOrObject(obj[k])) { - if (this.override) { - obj[k] = {} - } else { - if (!(isArrayOrObject(v) && isEmptyObject(v))) { - throw new Error( - 'Trying to redefine `' + k + '` which is a ' + typeof obj[k] - ) - } - - return - } - } - - this._fill(a, obj[k], v, mod) - } else { - if (!this.override && isArrayOrObject(obj[k]) && !isEmptyObject(obj[k])) { - if (!(isArrayOrObject(v) && isEmptyObject(v))) { - throw new Error("Trying to redefine non-empty obj['" + k + "']") - } - - return - } - - obj[k] = _process(v, mod) - } -} - -/** - * - * Converts an object with dotted-key/value pairs to it's expanded version - * - * Optionally transformed by a set of modifiers. - * - * Usage: - * - * var row = { - * 'nr': 200, - * 'doc.name': ' My Document ' - * } - * - * var mods = { - * 'doc.name': [_s.trim, _s.underscored] - * } - * - * dot.object(row, mods) - * - * @param {Object} obj - * @param {Object} mods - */ -DotObject.prototype.object = function (obj, mods) { - var self = this - - Object.keys(obj).forEach(function (k) { - var mod = mods === undefined ? null : mods[k] - // normalize array notation. - var ok = parsePath(k, self.separator).join(self.separator) - - if (ok.indexOf(self.separator) !== -1) { - self._fill(ok.split(self.separator), obj, obj[k], mod) - delete obj[k] - } else { - obj[k] = _process(obj[k], mod) - } - }) - - return obj -} - -/** - * @param {String} path dotted path - * @param {String} v value to be set - * @param {Object} obj object to be modified - * @param {Function|Array} mod optional modifier - */ -DotObject.prototype.str = function (path, v, obj, mod) { - var ok = parsePath(path, this.separator).join(this.separator) - - if (path.indexOf(this.separator) !== -1) { - this._fill(ok.split(this.separator), obj, v, mod) - } else { - obj[path] = _process(v, mod) - } - - return obj -} - -/** - * - * Pick a value from an object using dot notation. - * - * Optionally remove the value - * - * @param {String} path - * @param {Object} obj - * @param {Boolean} remove - */ -DotObject.prototype.pick = function (path, obj, remove, reindexArray) { - var i - var keys - var val - var key - var cp - - keys = parsePath(path, this.separator) - for (i = 0; i < keys.length; i++) { - key = parseKey(keys[i], obj) - if (obj && typeof obj === 'object' && key in obj) { - if (i === keys.length - 1) { - if (remove) { - val = obj[key] - if (reindexArray && Array.isArray(obj)) { - obj.splice(key, 1) - } else { - delete obj[key] - } - if (Array.isArray(obj)) { - cp = keys.slice(0, -1).join('.') - if (this.cleanup.indexOf(cp) === -1) { - this.cleanup.push(cp) - } - } - return val - } else { - return obj[key] - } - } else { - obj = obj[key] - } - } else { - return undefined - } - } - if (remove && Array.isArray(obj)) { - obj = obj.filter(function (n) { - return n !== undefined - }) - } - return obj -} -/** - * - * Delete value from an object using dot notation. - * - * @param {String} path - * @param {Object} obj - * @return {any} The removed value - */ -DotObject.prototype.delete = function (path, obj) { - return this.remove(path, obj, true) -} - -/** - * - * Remove value from an object using dot notation. - * - * Will remove multiple items if path is an array. - * In this case array indexes will be retained until all - * removals have been processed. - * - * Use dot.delete() to automatically re-index arrays. - * - * @param {String|Array} path - * @param {Object} obj - * @param {Boolean} reindexArray - * @return {any} The removed value - */ -DotObject.prototype.remove = function (path, obj, reindexArray) { - var i - - this.cleanup = [] - if (Array.isArray(path)) { - for (i = 0; i < path.length; i++) { - this.pick(path[i], obj, true, reindexArray) - } - if (!reindexArray) { - this._cleanup(obj) - } - return obj - } else { - return this.pick(path, obj, true, reindexArray) - } -} - -DotObject.prototype._cleanup = function (obj) { - var ret - var i - var keys - var root - if (this.cleanup.length) { - for (i = 0; i < this.cleanup.length; i++) { - keys = this.cleanup[i].split('.') - root = keys.splice(0, -1).join('.') - ret = root ? this.pick(root, obj) : obj - ret = ret[keys[0]].filter(function (v) { - return v !== undefined - }) - this.set(this.cleanup[i], ret, obj) - } - this.cleanup = [] - } -} - -/** - * Alias method for `dot.remove` - * - * Note: this is not an alias for dot.delete() - * - * @param {String|Array} path - * @param {Object} obj - * @param {Boolean} reindexArray - * @return {any} The removed value - */ -DotObject.prototype.del = DotObject.prototype.remove - -/** - * - * Move a property from one place to the other. - * - * If the source path does not exist (undefined) - * the target property will not be set. - * - * @param {String} source - * @param {String} target - * @param {Object} obj - * @param {Function|Array} mods - * @param {Boolean} merge - */ -DotObject.prototype.move = function (source, target, obj, mods, merge) { - if (typeof mods === 'function' || Array.isArray(mods)) { - this.set(target, _process(this.pick(source, obj, true), mods), obj, merge) - } else { - merge = mods - this.set(target, this.pick(source, obj, true), obj, merge) - } - - return obj -} - -/** - * - * Transfer a property from one object to another object. - * - * If the source path does not exist (undefined) - * the property on the other object will not be set. - * - * @param {String} source - * @param {String} target - * @param {Object} obj1 - * @param {Object} obj2 - * @param {Function|Array} mods - * @param {Boolean} merge - */ -DotObject.prototype.transfer = function ( - source, - target, - obj1, - obj2, - mods, - merge -) { - if (typeof mods === 'function' || Array.isArray(mods)) { - this.set( - target, - _process(this.pick(source, obj1, true), mods), - obj2, - merge - ) - } else { - merge = mods - this.set(target, this.pick(source, obj1, true), obj2, merge) - } - - return obj2 -} - -/** - * - * Copy a property from one object to another object. - * - * If the source path does not exist (undefined) - * the property on the other object will not be set. - * - * @param {String} source - * @param {String} target - * @param {Object} obj1 - * @param {Object} obj2 - * @param {Function|Array} mods - * @param {Boolean} merge - */ -DotObject.prototype.copy = function (source, target, obj1, obj2, mods, merge) { - if (typeof mods === 'function' || Array.isArray(mods)) { - this.set( - target, - _process( - // clone what is picked - JSON.parse(JSON.stringify(this.pick(source, obj1, false))), - mods - ), - obj2, - merge - ) - } else { - merge = mods - this.set(target, this.pick(source, obj1, false), obj2, merge) - } - - return obj2 -} - -/** - * - * Set a property on an object using dot notation. - * - * @param {String} path - * @param {any} val - * @param {Object} obj - * @param {Boolean} merge - */ -DotObject.prototype.set = function (path, val, obj, merge) { - var i - var k - var keys - var key - - // Do not operate if the value is undefined. - if (typeof val === 'undefined') { - return obj - } - keys = parsePath(path, this.separator) - - for (i = 0; i < keys.length; i++) { - key = keys[i] - if (i === keys.length - 1) { - if (merge && isObject(val) && isObject(obj[key])) { - for (k in val) { - if (hasOwnProperty.call(val, k)) { - obj[key][k] = val[k] - } - } - } else if (merge && Array.isArray(obj[key]) && Array.isArray(val)) { - for (var j = 0; j < val.length; j++) { - obj[keys[i]].push(val[j]) - } - } else { - obj[key] = val - } - } else if ( - // force the value to be an object - !hasOwnProperty.call(obj, key) || - (!isObject(obj[key]) && !Array.isArray(obj[key])) - ) { - // initialize as array if next key is numeric - if (/^\d+$/.test(keys[i + 1])) { - obj[key] = [] - } else { - obj[key] = {} - } - } - obj = obj[key] - } - return obj -} - -/** - * - * Transform an object - * - * Usage: - * - * var obj = { - * "id": 1, - * "some": { - * "thing": "else" - * } - * } - * - * var transform = { - * "id": "nr", - * "some.thing": "name" - * } - * - * var tgt = dot.transform(transform, obj) - * - * @param {Object} recipe Transform recipe - * @param {Object} obj Object to be transformed - * @param {Array} mods modifiers for the target - */ -DotObject.prototype.transform = function (recipe, obj, tgt) { - obj = obj || {} - tgt = tgt || {} - Object.keys(recipe).forEach( - function (key) { - this.set(recipe[key], this.pick(key, obj), tgt) - }.bind(this) - ) - return tgt -} - -/** - * - * Convert object to dotted-key/value pair - * - * Usage: - * - * var tgt = dot.dot(obj) - * - * or - * - * var tgt = {} - * dot.dot(obj, tgt) - * - * @param {Object} obj source object - * @param {Object} tgt target object - * @param {Array} path path array (internal) - */ -DotObject.prototype.dot = function (obj, tgt, path) { - tgt = tgt || {} - path = path || [] - var isArray = Array.isArray(obj) - - Object.keys(obj).forEach( - function (key) { - var index = isArray && this.useBrackets ? '[' + key + ']' : key - if ( - isArrayOrObject(obj[key]) && - ((isObject(obj[key]) && !isEmptyObject(obj[key])) || - (Array.isArray(obj[key]) && !this.keepArray && obj[key].length !== 0)) - ) { - if (isArray && this.useBrackets) { - var previousKey = path[path.length - 1] || '' - return this.dot( - obj[key], - tgt, - path.slice(0, -1).concat(previousKey + index) - ) - } else { - return this.dot(obj[key], tgt, path.concat(index)) - } - } else { - if (isArray && this.useBrackets) { - tgt[path.join(this.separator).concat('[' + key + ']')] = obj[key] - } else { - tgt[path.concat(index).join(this.separator)] = obj[key] - } - } - }.bind(this) - ) - return tgt -} - -DotObject.pick = wrap('pick') -DotObject.move = wrap('move') -DotObject.transfer = wrap('transfer') -DotObject.transform = wrap('transform') -DotObject.copy = wrap('copy') -DotObject.object = wrap('object') -DotObject.str = wrap('str') -DotObject.set = wrap('set') -DotObject.delete = wrap('delete') -DotObject.del = DotObject.remove = wrap('remove') -DotObject.dot = wrap('dot'); -['override', 'overwrite'].forEach(function (prop) { - Object.defineProperty(DotObject, prop, { - get: function () { - return dotDefault.override - }, - set: function (val) { - dotDefault.override = !!val - } - }) -}); -['useArray', 'keepArray', 'useBrackets'].forEach(function (prop) { - Object.defineProperty(DotObject, prop, { - get: function () { - return dotDefault[prop] - }, - set: function (val) { - dotDefault[prop] = val - } - }) -}) - -DotObject._process = _process - -module.exports = DotObject - - /***/ }), /***/ 84697: @@ -94928,1152 +93929,6 @@ if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { exports.debug = debug; // for test -/***/ }), - -/***/ 31524: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); - - -/***/ }), - -/***/ 66647: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.isValidErrorCode = exports.httpStatusFromErrorCode = exports.TwirpErrorCode = exports.BadRouteError = exports.InternalServerErrorWith = exports.InternalServerError = exports.RequiredArgumentError = exports.InvalidArgumentError = exports.NotFoundError = exports.TwirpError = void 0; -/** - * Represents a twirp error - */ -class TwirpError extends Error { - constructor(code, msg) { - super(msg); - this.code = TwirpErrorCode.Internal; - this.meta = {}; - this.code = code; - this.msg = msg; - Object.setPrototypeOf(this, TwirpError.prototype); - } - /** - * Adds a metadata kv to the error - * @param key - * @param value - */ - withMeta(key, value) { - this.meta[key] = value; - return this; - } - /** - * Returns a single metadata value - * return "" if not found - * @param key - */ - getMeta(key) { - return this.meta[key] || ""; - } - /** - * Add the original error cause - * @param err - * @param addMeta - */ - withCause(err, addMeta = false) { - this._originalCause = err; - if (addMeta) { - this.withMeta("cause", err.message); - } - return this; - } - cause() { - return this._originalCause; - } - /** - * Returns the error representation to JSON - */ - toJSON() { - try { - return JSON.stringify({ - code: this.code, - msg: this.msg, - meta: this.meta, - }); - } - catch (e) { - return `{"code": "internal", "msg": "There was an error but it could not be serialized into JSON"}`; - } - } - /** - * Create a twirp error from an object - * @param obj - */ - static fromObject(obj) { - const code = obj["code"] || TwirpErrorCode.Unknown; - const msg = obj["msg"] || "unknown"; - const error = new TwirpError(code, msg); - if (obj["meta"]) { - Object.keys(obj["meta"]).forEach((key) => { - error.withMeta(key, obj["meta"][key]); - }); - } - return error; - } -} -exports.TwirpError = TwirpError; -/** - * NotFoundError constructor for the common NotFound error. - */ -class NotFoundError extends TwirpError { - constructor(msg) { - super(TwirpErrorCode.NotFound, msg); - } -} -exports.NotFoundError = NotFoundError; -/** - * InvalidArgumentError constructor for the common InvalidArgument error. Can be - * used when an argument has invalid format, is a number out of range, is a bad - * option, etc). - */ -class InvalidArgumentError extends TwirpError { - constructor(argument, validationMsg) { - super(TwirpErrorCode.InvalidArgument, argument + " " + validationMsg); - this.withMeta("argument", argument); - } -} -exports.InvalidArgumentError = InvalidArgumentError; -/** - * RequiredArgumentError is a more specific constructor for InvalidArgument - * error. Should be used when the argument is required (expected to have a - * non-zero value). - */ -class RequiredArgumentError extends InvalidArgumentError { - constructor(argument) { - super(argument, "is required"); - } -} -exports.RequiredArgumentError = RequiredArgumentError; -/** - * InternalError constructor for the common Internal error. Should be used to - * specify that something bad or unexpected happened. - */ -class InternalServerError extends TwirpError { - constructor(msg) { - super(TwirpErrorCode.Internal, msg); - } -} -exports.InternalServerError = InternalServerError; -/** - * InternalErrorWith makes an internal error, wrapping the original error and using it - * for the error message, and with metadata "cause" with the original error type. - * This function is used by Twirp services to wrap non-Twirp errors as internal errors. - * The wrapped error can be extracted later with err.cause() - */ -class InternalServerErrorWith extends InternalServerError { - constructor(err) { - super(err.message); - this.withMeta("cause", err.name); - this.withCause(err); - } -} -exports.InternalServerErrorWith = InternalServerErrorWith; -/** - * A standard BadRoute Error - */ -class BadRouteError extends TwirpError { - constructor(msg, method, url) { - super(TwirpErrorCode.BadRoute, msg); - this.withMeta("twirp_invalid_route", method + " " + url); - } -} -exports.BadRouteError = BadRouteError; -var TwirpErrorCode; -(function (TwirpErrorCode) { - // Canceled indicates the operation was cancelled (typically by the caller). - TwirpErrorCode["Canceled"] = "canceled"; - // Unknown error. For example when handling errors raised by APIs that do not - // return enough error information. - TwirpErrorCode["Unknown"] = "unknown"; - // InvalidArgument indicates client specified an invalid argument. It - // indicates arguments that are problematic regardless of the state of the - // system (i.e. a malformed file name, required argument, number out of range, - // etc.). - TwirpErrorCode["InvalidArgument"] = "invalid_argument"; - // Malformed indicates an error occurred while decoding the client's request. - // This may mean that the message was encoded improperly, or that there is a - // disagreement in message format between the client and server. - TwirpErrorCode["Malformed"] = "malformed"; - // DeadlineExceeded means operation expired before completion. For operations - // that change the state of the system, this error may be returned even if the - // operation has completed successfully (timeout). - TwirpErrorCode["DeadlineExceeded"] = "deadline_exceeded"; - // NotFound means some requested entity was not found. - TwirpErrorCode["NotFound"] = "not_found"; - // BadRoute means that the requested URL path wasn't routable to a Twirp - // service and method. This is returned by the generated server, and usually - // shouldn't be returned by applications. Instead, applications should use - // NotFound or Unimplemented. - TwirpErrorCode["BadRoute"] = "bad_route"; - // AlreadyExists means an attempt to create an entity failed because one - // already exists. - TwirpErrorCode["AlreadyExists"] = "already_exists"; - // PermissionDenied indicates the caller does not have permission to execute - // the specified operation. It must not be used if the caller cannot be - // identified (Unauthenticated). - TwirpErrorCode["PermissionDenied"] = "permission_denied"; - // Unauthenticated indicates the request does not have valid authentication - // credentials for the operation. - TwirpErrorCode["Unauthenticated"] = "unauthenticated"; - // ResourceExhausted indicates some resource has been exhausted, perhaps a - // per-user quota, or perhaps the entire file system is out of space. - TwirpErrorCode["ResourceExhausted"] = "resource_exhausted"; - // FailedPrecondition indicates operation was rejected because the system is - // not in a state required for the operation's execution. For example, doing - // an rmdir operation on a directory that is non-empty, or on a non-directory - // object, or when having conflicting read-modify-write on the same resource. - TwirpErrorCode["FailedPrecondition"] = "failed_precondition"; - // Aborted indicates the operation was aborted, typically due to a concurrency - // issue like sequencer check failures, transaction aborts, etc. - TwirpErrorCode["Aborted"] = "aborted"; - // OutOfRange means operation was attempted past the valid range. For example, - // seeking or reading past end of a paginated collection. - // - // Unlike InvalidArgument, this error indicates a problem that may be fixed if - // the system state changes (i.e. adding more items to the collection). - // - // There is a fair bit of overlap between FailedPrecondition and OutOfRange. - // We recommend using OutOfRange (the more specific error) when it applies so - // that callers who are iterating through a space can easily look for an - // OutOfRange error to detect when they are done. - TwirpErrorCode["OutOfRange"] = "out_of_range"; - // Unimplemented indicates operation is not implemented or not - // supported/enabled in this service. - TwirpErrorCode["Unimplemented"] = "unimplemented"; - // Internal errors. When some invariants expected by the underlying system - // have been broken. In other words, something bad happened in the library or - // backend service. Do not confuse with HTTP Internal Server Error; an - // Internal error could also happen on the client code, i.e. when parsing a - // server response. - TwirpErrorCode["Internal"] = "internal"; - // Unavailable indicates the service is currently unavailable. This is a most - // likely a transient condition and may be corrected by retrying with a - // backoff. - TwirpErrorCode["Unavailable"] = "unavailable"; - // DataLoss indicates unrecoverable data loss or corruption. - TwirpErrorCode["DataLoss"] = "data_loss"; -})(TwirpErrorCode = exports.TwirpErrorCode || (exports.TwirpErrorCode = {})); -// ServerHTTPStatusFromErrorCode maps a Twirp error type into a similar HTTP -// response status. It is used by the Twirp server handler to set the HTTP -// response status code. Returns 0 if the ErrorCode is invalid. -function httpStatusFromErrorCode(code) { - switch (code) { - case TwirpErrorCode.Canceled: - return 408; // RequestTimeout - case TwirpErrorCode.Unknown: - return 500; // Internal Server Error - case TwirpErrorCode.InvalidArgument: - return 400; // BadRequest - case TwirpErrorCode.Malformed: - return 400; // BadRequest - case TwirpErrorCode.DeadlineExceeded: - return 408; // RequestTimeout - case TwirpErrorCode.NotFound: - return 404; // Not Found - case TwirpErrorCode.BadRoute: - return 404; // Not Found - case TwirpErrorCode.AlreadyExists: - return 409; // Conflict - case TwirpErrorCode.PermissionDenied: - return 403; // Forbidden - case TwirpErrorCode.Unauthenticated: - return 401; // Unauthorized - case TwirpErrorCode.ResourceExhausted: - return 429; // Too Many Requests - case TwirpErrorCode.FailedPrecondition: - return 412; // Precondition Failed - case TwirpErrorCode.Aborted: - return 409; // Conflict - case TwirpErrorCode.OutOfRange: - return 400; // Bad Request - case TwirpErrorCode.Unimplemented: - return 501; // Not Implemented - case TwirpErrorCode.Internal: - return 500; // Internal Server Error - case TwirpErrorCode.Unavailable: - return 503; // Service Unavailable - case TwirpErrorCode.DataLoss: - return 500; // Internal Server Error - default: - return 0; // Invalid! - } -} -exports.httpStatusFromErrorCode = httpStatusFromErrorCode; -// IsValidErrorCode returns true if is one of the valid predefined constants. -function isValidErrorCode(code) { - return httpStatusFromErrorCode(code) != 0; -} -exports.isValidErrorCode = isValidErrorCode; - - -/***/ }), - -/***/ 56748: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __rest = (this && this.__rest) || function (s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.Gateway = exports.Pattern = void 0; -const querystring_1 = __nccwpck_require__(63477); -const dotObject = __importStar(__nccwpck_require__(13598)); -const request_1 = __nccwpck_require__(8347); -const errors_1 = __nccwpck_require__(66647); -const http_client_1 = __nccwpck_require__(94091); -const server_1 = __nccwpck_require__(26604); -var Pattern; -(function (Pattern) { - Pattern["POST"] = "post"; - Pattern["GET"] = "get"; - Pattern["PATCH"] = "patch"; - Pattern["PUT"] = "put"; - Pattern["DELETE"] = "delete"; -})(Pattern = exports.Pattern || (exports.Pattern = {})); -/** - * The Gateway proxies http requests to Twirp Compliant - * handlers - */ -class Gateway { - constructor(routes) { - this.routes = routes; - } - /** - * Middleware that rewrite the current request - * to a Twirp compliant request - */ - twirpRewrite(prefix = "/twirp") { - return (req, resp, next) => { - this.rewrite(req, resp, prefix) - .then(() => next()) - .catch((e) => { - if (e instanceof errors_1.TwirpError) { - if (e.code !== errors_1.TwirpErrorCode.NotFound) { - server_1.writeError(resp, e); - } - else { - next(); - } - } - }); - }; - } - /** - * Rewrite an incoming request to a Twirp compliant request - * @param req - * @param resp - * @param prefix - */ - rewrite(req, resp, prefix = "/twirp") { - return __awaiter(this, void 0, void 0, function* () { - const [match, route] = this.matchRoute(req); - const body = yield this.prepareTwirpBody(req, match, route); - const twirpUrl = `${prefix}/${route.packageName}.${route.serviceName}/${route.methodName}`; - req.url = twirpUrl; - req.originalUrl = twirpUrl; - req.method = "POST"; - req.headers["content-type"] = "application/json"; - req.rawBody = Buffer.from(JSON.stringify(body)); - if (route.responseBodyKey) { - const endFn = resp.end.bind(resp); - resp.end = function (chunk) { - if (resp.statusCode === 200) { - endFn(`{ "${route.responseBodyKey}": ${chunk} }`); - } - else { - endFn(chunk); - } - }; - } - }); - } - /** - * Create a reverse proxy handler to - * proxy http requests to Twirp Compliant handlers - * @param httpClientOption - */ - reverseProxy(httpClientOption) { - const client = http_client_1.NodeHttpRPC(httpClientOption); - return (req, res) => __awaiter(this, void 0, void 0, function* () { - try { - const [match, route] = this.matchRoute(req); - const body = yield this.prepareTwirpBody(req, match, route); - const response = yield client.request(`${route.packageName}.${route.serviceName}`, route.methodName, "application/json", body); - res.statusCode = 200; - res.setHeader("content-type", "application/json"); - let jsonResponse; - if (route.responseBodyKey) { - jsonResponse = JSON.stringify({ [route.responseBodyKey]: response }); - } - else { - jsonResponse = JSON.stringify(response); - } - res.end(jsonResponse); - } - catch (e) { - server_1.writeError(res, e); - } - }); - } - /** - * Prepares twirp body requests using http.google.annotions - * compliant spec - * - * @param req - * @param match - * @param route - * @protected - */ - prepareTwirpBody(req, match, route) { - return __awaiter(this, void 0, void 0, function* () { - const _a = match.params, { query_string } = _a, params = __rest(_a, ["query_string"]); - let requestBody = Object.assign({}, params); - if (query_string && route.bodyKey !== "*") { - const queryParams = this.parseQueryString(query_string); - requestBody = Object.assign(Object.assign({}, queryParams), requestBody); - } - let body = {}; - if (route.bodyKey) { - const data = yield request_1.getRequestData(req); - try { - const jsonBody = JSON.parse(data.toString() || "{}"); - if (route.bodyKey === "*") { - body = jsonBody; - } - else { - body[route.bodyKey] = jsonBody; - } - } - catch (e) { - const msg = "the json request could not be decoded"; - throw new errors_1.TwirpError(errors_1.TwirpErrorCode.Malformed, msg).withCause(e, true); - } - } - return Object.assign(Object.assign({}, body), requestBody); - }); - } - /** - * Matches a route - * @param req - */ - matchRoute(req) { - var _a; - const httpMethod = (_a = req.method) === null || _a === void 0 ? void 0 : _a.toLowerCase(); - if (!httpMethod) { - throw new errors_1.BadRouteError(`method not allowed`, req.method || "", req.url || ""); - } - const routes = this.routes[httpMethod]; - for (const route of routes) { - const match = route.matcher(req.url || "/"); - if (match) { - return [match, route]; - } - } - throw new errors_1.NotFoundError(`url ${req.url} not found`); - } - /** - * Parse query string - * @param queryString - */ - parseQueryString(queryString) { - const queryParams = querystring_1.parse(queryString.replace("?", "")); - return dotObject.object(queryParams); - } -} -exports.Gateway = Gateway; - - -/***/ }), - -/***/ 4263: -/***/ (function(__unused_webpack_module, exports) { - -"use strict"; - -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.isHook = exports.chainHooks = void 0; -// ChainHooks creates a new ServerHook which chains the callbacks in -// each of the constituent hooks passed in. Each hook function will be -// called in the order of the ServerHooks values passed in. -// -// For the erroring hooks, RequestReceived and RequestRouted, any returned -// errors prevent processing by later hooks. -function chainHooks(...hooks) { - if (hooks.length === 0) { - return null; - } - if (hooks.length === 1) { - return hooks[0]; - } - const serverHook = { - requestReceived(ctx) { - return __awaiter(this, void 0, void 0, function* () { - for (const hook of hooks) { - if (!hook.requestReceived) { - continue; - } - yield hook.requestReceived(ctx); - } - }); - }, - requestPrepared(ctx) { - return __awaiter(this, void 0, void 0, function* () { - for (const hook of hooks) { - if (!hook.requestPrepared) { - continue; - } - console.warn("hook requestPrepared is deprecated and will be removed in the next release. " + - "Please use responsePrepared instead."); - yield hook.requestPrepared(ctx); - } - }); - }, - responsePrepared(ctx) { - return __awaiter(this, void 0, void 0, function* () { - for (const hook of hooks) { - if (!hook.responsePrepared) { - continue; - } - yield hook.responsePrepared(ctx); - } - }); - }, - requestSent(ctx) { - return __awaiter(this, void 0, void 0, function* () { - for (const hook of hooks) { - if (!hook.requestSent) { - continue; - } - console.warn("hook requestSent is deprecated and will be removed in the next release. " + - "Please use responseSent instead."); - yield hook.requestSent(ctx); - } - }); - }, - responseSent(ctx) { - return __awaiter(this, void 0, void 0, function* () { - for (const hook of hooks) { - if (!hook.responseSent) { - continue; - } - yield hook.responseSent(ctx); - } - }); - }, - requestRouted(ctx) { - return __awaiter(this, void 0, void 0, function* () { - for (const hook of hooks) { - if (!hook.requestRouted) { - continue; - } - yield hook.requestRouted(ctx); - } - }); - }, - error(ctx, err) { - return __awaiter(this, void 0, void 0, function* () { - for (const hook of hooks) { - if (!hook.error) { - continue; - } - yield hook.error(ctx, err); - } - }); - }, - }; - return serverHook; -} -exports.chainHooks = chainHooks; -function isHook(object) { - return ("requestReceived" in object || - "requestPrepared" in object || - "requestSent" in object || - "requestRouted" in object || - "responsePrepared" in object || - "responseSent" in object || - "error" in object); -} -exports.isHook = isHook; - - -/***/ }), - -/***/ 94091: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.FetchRPC = exports.wrapErrorResponseToTwirpError = exports.NodeHttpRPC = void 0; -const http = __importStar(__nccwpck_require__(13685)); -const https = __importStar(__nccwpck_require__(95687)); -const url_1 = __nccwpck_require__(57310); -const errors_1 = __nccwpck_require__(66647); -/** - * a node HTTP RPC implementation - * @param options - * @constructor - */ -const NodeHttpRPC = (options) => ({ - request(service, method, contentType, data) { - let client; - return new Promise((resolve, rejected) => { - const responseChunks = []; - const requestData = contentType === "application/protobuf" - ? Buffer.from(data) - : JSON.stringify(data); - const url = new url_1.URL(options.baseUrl); - const isHttps = url.protocol === "https:"; - if (isHttps) { - client = https; - } - else { - client = http; - } - const prefix = url.pathname !== "/" ? url.pathname : ""; - const req = client - .request(Object.assign(Object.assign({}, (options ? options : {})), { method: "POST", protocol: url.protocol, host: url.hostname, port: url.port ? url.port : isHttps ? 443 : 80, path: `${prefix}/${service}/${method}`, headers: Object.assign(Object.assign({}, (options.headers ? options.headers : {})), { "Content-Type": contentType, "Content-Length": contentType === "application/protobuf" - ? Buffer.byteLength(requestData) - : Buffer.from(requestData).byteLength }) }), (res) => { - res.on("data", (chunk) => responseChunks.push(chunk)); - res.on("end", () => { - const data = Buffer.concat(responseChunks); - if (res.statusCode != 200) { - rejected(wrapErrorResponseToTwirpError(data.toString())); - } - else { - if (contentType === "application/json") { - resolve(JSON.parse(data.toString())); - } - else { - resolve(data); - } - } - }); - res.on("error", (err) => { - rejected(err); - }); - }) - .on("error", (err) => { - rejected(err); - }); - req.end(requestData); - }); - }, -}); -exports.NodeHttpRPC = NodeHttpRPC; -function wrapErrorResponseToTwirpError(errorResponse) { - return errors_1.TwirpError.fromObject(JSON.parse(errorResponse)); -} -exports.wrapErrorResponseToTwirpError = wrapErrorResponseToTwirpError; -/** - * a browser fetch RPC implementation - */ -const FetchRPC = (options) => ({ - request(service, method, contentType, data) { - return __awaiter(this, void 0, void 0, function* () { - const headers = new Headers(options.headers); - headers.set("content-type", contentType); - const response = yield fetch(`${options.baseUrl}/${service}/${method}`, Object.assign(Object.assign({}, options), { method: "POST", headers, body: data instanceof Uint8Array ? data : JSON.stringify(data) })); - if (response.status === 200) { - if (contentType === "application/json") { - return yield response.json(); - } - return new Uint8Array(yield response.arrayBuffer()); - } - throw errors_1.TwirpError.fromObject(yield response.json()); - }); - }, -}); -exports.FetchRPC = FetchRPC; - - -/***/ }), - -/***/ 66465: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.TwirpContentType = void 0; -__exportStar(__nccwpck_require__(31524), exports); -__exportStar(__nccwpck_require__(26604), exports); -__exportStar(__nccwpck_require__(48913), exports); -__exportStar(__nccwpck_require__(4263), exports); -__exportStar(__nccwpck_require__(66647), exports); -__exportStar(__nccwpck_require__(56748), exports); -__exportStar(__nccwpck_require__(94091), exports); -var request_1 = __nccwpck_require__(8347); -Object.defineProperty(exports, "TwirpContentType", ({ enumerable: true, get: function () { return request_1.TwirpContentType; } })); - - -/***/ }), - -/***/ 48913: -/***/ (function(__unused_webpack_module, exports) { - -"use strict"; - -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.chainInterceptors = void 0; -// chains multiple Interceptors into a single Interceptor. -// The first interceptor wraps the second one, and so on. -// Returns null if interceptors is empty. -function chainInterceptors(...interceptors) { - if (interceptors.length === 0) { - return; - } - if (interceptors.length === 1) { - return interceptors[0]; - } - const first = interceptors[0]; - return (ctx, request, handler) => __awaiter(this, void 0, void 0, function* () { - let next = handler; - for (let i = interceptors.length - 1; i > 0; i--) { - next = ((next) => (ctx, typedRequest) => { - return interceptors[i](ctx, typedRequest, next); - })(next); - } - return first(ctx, request, next); - }); -} -exports.chainInterceptors = chainInterceptors; - - -/***/ }), - -/***/ 8347: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.parseTwirpPath = exports.getRequestData = exports.validateRequest = exports.getContentType = exports.TwirpContentType = void 0; -const errors_1 = __nccwpck_require__(66647); -/** - * Supported Twirp Content-Type - */ -var TwirpContentType; -(function (TwirpContentType) { - TwirpContentType[TwirpContentType["Protobuf"] = 0] = "Protobuf"; - TwirpContentType[TwirpContentType["JSON"] = 1] = "JSON"; - TwirpContentType[TwirpContentType["Unknown"] = 2] = "Unknown"; -})(TwirpContentType = exports.TwirpContentType || (exports.TwirpContentType = {})); -/** - * Get supported content-type - * @param mimeType - */ -function getContentType(mimeType) { - switch (mimeType) { - case "application/protobuf": - return TwirpContentType.Protobuf; - case "application/json": - return TwirpContentType.JSON; - default: - return TwirpContentType.Unknown; - } -} -exports.getContentType = getContentType; -/** - * Validate a twirp request - * @param ctx - * @param request - * @param pathPrefix - */ -function validateRequest(ctx, request, pathPrefix) { - if (request.method !== "POST") { - const msg = `unsupported method ${request.method} (only POST is allowed)`; - throw new errors_1.BadRouteError(msg, request.method || "", request.url || ""); - } - const path = parseTwirpPath(request.url || ""); - if (path.pkgService !== - (ctx.packageName ? ctx.packageName + "." : "") + ctx.serviceName) { - const msg = `no handler for path ${request.url}`; - throw new errors_1.BadRouteError(msg, request.method || "", request.url || ""); - } - if (path.prefix !== pathPrefix) { - const msg = `invalid path prefix ${path.prefix}, expected ${pathPrefix}, on path ${request.url}`; - throw new errors_1.BadRouteError(msg, request.method || "", request.url || ""); - } - const mimeContentType = request.headers["content-type"] || ""; - if (ctx.contentType === TwirpContentType.Unknown) { - const msg = `unexpected Content-Type: ${request.headers["content-type"]}`; - throw new errors_1.BadRouteError(msg, request.method || "", request.url || ""); - } - return Object.assign(Object.assign({}, path), { mimeContentType, contentType: ctx.contentType }); -} -exports.validateRequest = validateRequest; -/** - * Get request data from the body - * @param req - */ -function getRequestData(req) { - return new Promise((resolve, reject) => { - const reqWithRawBody = req; - if (reqWithRawBody.rawBody instanceof Buffer) { - resolve(reqWithRawBody.rawBody); - return; - } - const chunks = []; - req.on("data", (chunk) => chunks.push(chunk)); - req.on("end", () => __awaiter(this, void 0, void 0, function* () { - const data = Buffer.concat(chunks); - resolve(data); - })); - req.on("error", (err) => { - if (req.aborted) { - reject(new errors_1.TwirpError(errors_1.TwirpErrorCode.DeadlineExceeded, "failed to read request: deadline exceeded")); - } - else { - reject(new errors_1.TwirpError(errors_1.TwirpErrorCode.Malformed, err.message).withCause(err)); - } - }); - req.on("close", () => { - reject(new errors_1.TwirpError(errors_1.TwirpErrorCode.Canceled, "failed to read request: context canceled")); - }); - }); -} -exports.getRequestData = getRequestData; -/** - * Parses twirp url path - * @param path - */ -function parseTwirpPath(path) { - const parts = path.split("/"); - if (parts.length < 2) { - return { - pkgService: "", - method: "", - prefix: "", - }; - } - return { - method: parts[parts.length - 1], - pkgService: parts[parts.length - 2], - prefix: parts.slice(0, parts.length - 2).join("/"), - }; -} -exports.parseTwirpPath = parseTwirpPath; - - -/***/ }), - -/***/ 26604: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.writeError = exports.TwirpServer = void 0; -const hooks_1 = __nccwpck_require__(4263); -const request_1 = __nccwpck_require__(8347); -const errors_1 = __nccwpck_require__(66647); -/** - * Runtime server implementation of a TwirpServer - */ -class TwirpServer { - constructor(options) { - this.pathPrefix = "/twirp"; - this.hooks = []; - this.interceptors = []; - this.packageName = options.packageName; - this.serviceName = options.serviceName; - this.methodList = options.methodList; - this.matchRoute = options.matchRoute; - this.service = options.service; - } - /** - * Returns the prefix for this server - */ - get prefix() { - return this.pathPrefix; - } - /** - * The http handler for twirp complaint endpoints - * @param options - */ - httpHandler(options) { - return (req, resp) => { - // setup prefix - if ((options === null || options === void 0 ? void 0 : options.prefix) !== undefined) { - this.withPrefix(options.prefix); - } - return this._httpHandler(req, resp); - }; - } - /** - * Adds interceptors or hooks to the request stack - * @param middlewares - */ - use(...middlewares) { - middlewares.forEach((middleware) => { - if (hooks_1.isHook(middleware)) { - this.hooks.push(middleware); - return this; - } - this.interceptors.push(middleware); - }); - return this; - } - /** - * Adds a prefix to the service url path - * @param prefix - */ - withPrefix(prefix) { - if (prefix === false) { - this.pathPrefix = ""; - } - else { - this.pathPrefix = prefix; - } - return this; - } - /** - * Returns the regex matching path for this twirp server - */ - matchingPath() { - const baseRegex = this.baseURI().replace(/\./g, "\\."); - return new RegExp(`${baseRegex}\/(${this.methodList.join("|")})`); - } - /** - * Returns the base URI for this twirp server - */ - baseURI() { - return `${this.pathPrefix}/${this.packageName ? this.packageName + "." : ""}${this.serviceName}`; - } - /** - * Create a twirp context - * @param req - * @param res - * @private - */ - createContext(req, res) { - return { - packageName: this.packageName, - serviceName: this.serviceName, - methodName: "", - contentType: request_1.getContentType(req.headers["content-type"]), - req: req, - res: res, - }; - } - /** - * Twrip server http handler implementation - * @param req - * @param resp - * @private - */ - _httpHandler(req, resp) { - return __awaiter(this, void 0, void 0, function* () { - const ctx = this.createContext(req, resp); - try { - yield this.invokeHook("requestReceived", ctx); - const { method, mimeContentType } = request_1.validateRequest(ctx, req, this.pathPrefix || ""); - const handler = this.matchRoute(method, { - onMatch: (ctx) => { - return this.invokeHook("requestRouted", ctx); - }, - onNotFound: () => { - const msg = `no handler for path ${req.url}`; - throw new errors_1.BadRouteError(msg, req.method || "", req.url || ""); - }, - }); - const body = yield request_1.getRequestData(req); - const response = yield handler(ctx, this.service, body, this.interceptors); - yield Promise.all([ - this.invokeHook("responsePrepared", ctx), - // keep backwards compatibility till next release - this.invokeHook("requestPrepared", ctx), - ]); - resp.statusCode = 200; - resp.setHeader("Content-Type", mimeContentType); - resp.end(response); - } - catch (e) { - yield this.invokeHook("error", ctx, mustBeTwirpError(e)); - if (!resp.headersSent) { - writeError(resp, e); - } - } - finally { - yield Promise.all([ - this.invokeHook("responseSent", ctx), - // keep backwards compatibility till next release - this.invokeHook("requestSent", ctx), - ]); - } - }); - } - /** - * Invoke a hook - * @param hookName - * @param ctx - * @param err - * @protected - */ - invokeHook(hookName, ctx, err) { - return __awaiter(this, void 0, void 0, function* () { - if (this.hooks.length === 0) { - return; - } - const chainedHooks = hooks_1.chainHooks(...this.hooks); - const hook = chainedHooks === null || chainedHooks === void 0 ? void 0 : chainedHooks[hookName]; - if (hook) { - yield hook(ctx, err || new errors_1.InternalServerError("internal server error")); - } - }); - } -} -exports.TwirpServer = TwirpServer; -/** - * Write http error response - * @param res - * @param error - */ -function writeError(res, error) { - const twirpError = mustBeTwirpError(error); - res.setHeader("Content-Type", "application/json"); - res.statusCode = errors_1.httpStatusFromErrorCode(twirpError.code); - res.end(twirpError.toJSON()); -} -exports.writeError = writeError; -/** - * Make sure that the error passed is a TwirpError - * otherwise it will wrap it into an InternalError - * @param err - */ -function mustBeTwirpError(err) { - if (err instanceof errors_1.TwirpError) { - return err; - } - return new errors_1.InternalServerErrorWith(err); -} - - /***/ }), /***/ 41773: @@ -137638,7 +135493,7 @@ module.exports = index; /***/ ((module) => { "use strict"; -module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.2.1","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","jwt-decode":"^3.1.2","twirp-ts":"^2.5.0","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}'); +module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.2.2","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","jwt-decode":"^3.1.2","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}'); /***/ }), diff --git a/package-lock.json b/package-lock.json index c2f35ae..e6d252e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { "name": "upload-artifact", - "version": "4.5.0", + "version": "4.6.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "upload-artifact", - "version": "4.5.0", + "version": "4.6.1", "license": "MIT", "dependencies": { - "@actions/artifact": "^2.2.1", + "@actions/artifact": "^2.2.2", "@actions/core": "^1.11.1", "@actions/github": "^6.0.0", "@actions/glob": "^0.5.0", @@ -34,9 +34,9 @@ } }, "node_modules/@actions/artifact": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.2.1.tgz", - "integrity": "sha512-V2cvKJ+Evg2n9Mcqz7kjbY2s0nd9MsBI2rw2E38pSEMv+Coo4i1sX0lyGcgSn1zyfVtmLwAI9LfuSptWF8PdaA==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.2.2.tgz", + "integrity": "sha512-UtS1kcINiPRkI3/hDKkO/XdrtKo89kn8s81J67QNBU6RRMWSSXrrfCCbQVThuxcdW2boOLv51NVCEKyo954A2A==", "dependencies": { "@actions/core": "^1.10.0", "@actions/github": "^5.1.1", @@ -49,7 +49,6 @@ "@protobuf-ts/plugin": "^2.2.3-alpha.1", "archiver": "^7.0.1", "jwt-decode": "^3.1.2", - "twirp-ts": "^2.5.0", "unzip-stream": "^0.3.1" } }, @@ -1955,14 +1954,14 @@ } }, "node_modules/@protobuf-ts/plugin": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin/-/plugin-2.9.3.tgz", - "integrity": "sha512-tHYACv+nnIV2eoiMxeZhrgMqGiUktzUzrhfgnROg/rr8TecPLp9v5/yqNibN+bad5k7d57aqlTuQKhFl+J4W/g==", + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin/-/plugin-2.9.4.tgz", + "integrity": "sha512-Db5Laq5T3mc6ERZvhIhkj1rn57/p8gbWiCKxQWbZBBl20wMuqKoHbRw4tuD7FyXi+IkwTToaNVXymv5CY3E8Rw==", "dependencies": { - "@protobuf-ts/plugin-framework": "^2.9.3", - "@protobuf-ts/protoc": "^2.9.3", - "@protobuf-ts/runtime": "^2.9.3", - "@protobuf-ts/runtime-rpc": "^2.9.3", + "@protobuf-ts/plugin-framework": "^2.9.4", + "@protobuf-ts/protoc": "^2.9.4", + "@protobuf-ts/runtime": "^2.9.4", + "@protobuf-ts/runtime-rpc": "^2.9.4", "typescript": "^3.9" }, "bin": { @@ -1971,11 +1970,11 @@ } }, "node_modules/@protobuf-ts/plugin-framework": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.3.tgz", - "integrity": "sha512-iqdkhAu7fGPvBCVOoAEEFJ1/oaGIBoNIMgSv2WonTNJVHxv5FvvAfWFn6nG/eta34fHRZT38ZXTaYcMUkv8AiQ==", + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.4.tgz", + "integrity": "sha512-9nuX1kjdMliv+Pes8dQCKyVhjKgNNfwxVHg+tx3fLXSfZZRcUHMc1PMwB9/vTvc6gBKt9QGz5ERqSqZc0++E9A==", "dependencies": { - "@protobuf-ts/runtime": "^2.9.3", + "@protobuf-ts/runtime": "^2.9.4", "typescript": "^3.9" } }, @@ -2004,24 +2003,24 @@ } }, "node_modules/@protobuf-ts/protoc": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/@protobuf-ts/protoc/-/protoc-2.9.3.tgz", - "integrity": "sha512-TJ0Ycx/CIBqpB4wpKt6K05kjXj6zv36s/qpdCT/wdJBhpayOVBqLF5NpLp3WIiw1PmIxvqalB6QHKjvnLzGKLA==", + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@protobuf-ts/protoc/-/protoc-2.9.4.tgz", + "integrity": "sha512-hQX+nOhFtrA+YdAXsXEDrLoGJqXHpgv4+BueYF0S9hy/Jq0VRTVlJS1Etmf4qlMt/WdigEes5LOd/LDzui4GIQ==", "bin": { "protoc": "protoc.js" } }, "node_modules/@protobuf-ts/runtime": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime/-/runtime-2.9.3.tgz", - "integrity": "sha512-nivzCpg/qYD0RX2OmHOahJALb8ndjGmUhNBcTJ0BbXoqKwCSM6vYA+vegzS3rhuaPgbyC7Ec8idlnizzUfIRuw==" + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime/-/runtime-2.9.4.tgz", + "integrity": "sha512-vHRFWtJJB/SiogWDF0ypoKfRIZ41Kq+G9cEFj6Qm1eQaAhJ1LDFvgZ7Ja4tb3iLOQhz0PaoPnnOijF1qmEqTxg==" }, "node_modules/@protobuf-ts/runtime-rpc": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.3.tgz", - "integrity": "sha512-WelHpctvZeG8yhbb7tnsrLzotq9xjMCXuGuhJ8qMyEdNoBBEodbXseofAYFTebo2/PN2LzyEq3X6vwr5f8jqTA==", + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.4.tgz", + "integrity": "sha512-y9L9JgnZxXFqH5vD4d7j9duWvIJ7AShyBRoNKJGhu9Q27qIbchfzli66H9RvrQNIFk5ER7z1Twe059WZGqERcA==", "dependencies": { - "@protobuf-ts/runtime": "^2.9.3" + "@protobuf-ts/runtime": "^2.9.4" } }, "node_modules/@sinclair/typebox": { @@ -2968,15 +2967,6 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, "node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -3113,14 +3103,6 @@ "node": ">= 0.8" } }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "engines": { - "node": ">= 6" - } - }, "node_modules/compress-commons": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", @@ -3363,57 +3345,6 @@ "esutils": "^2.0.2" } }, - "node_modules/dot-object": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/dot-object/-/dot-object-2.1.4.tgz", - "integrity": "sha512-7FXnyyCLFawNYJ+NhkqyP9Wd2yzuo+7n9pGiYpkmXCTYa8Ci2U0eUNDVg5OuO5Pm6aFXI2SWN8/N/w7SJWu1WA==", - "dependencies": { - "commander": "^4.0.0", - "glob": "^7.1.5" - }, - "bin": { - "dot-object": "bin/dot-object" - } - }, - "node_modules/dot-object/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/dot-object/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/dot-object/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -4375,7 +4306,8 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "node_modules/fsevents": { "version": "2.3.2", @@ -4769,6 +4701,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -6032,14 +5965,6 @@ "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", "dev": true }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -6204,15 +6129,6 @@ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -6406,15 +6322,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -6428,6 +6335,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, "engines": { "node": ">=0.10.0" } @@ -6466,12 +6374,6 @@ "node": "14 || >=16.14" } }, - "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==", - "license": "MIT" - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -6576,6 +6478,7 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz", "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==", + "dev": true, "bin": { "prettier": "bin-prettier.js" }, @@ -7421,15 +7324,6 @@ } } }, - "node_modules/ts-poet": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/ts-poet/-/ts-poet-4.15.0.tgz", - "integrity": "sha512-sLLR8yQBvHzi9d4R1F4pd+AzQxBfzOSSjfxiJxQhkUoH5bL7RsAC6wgvtVUQdGqiCsyS9rT6/8X2FI7ipdir5g==", - "dependencies": { - "lodash": "^4.17.15", - "prettier": "^2.5.1" - } - }, "node_modules/tsconfig-paths": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", @@ -7497,34 +7391,6 @@ "node": ">=0.6.11 <=0.7.0 || >=0.7.3" } }, - "node_modules/twirp-ts": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/twirp-ts/-/twirp-ts-2.5.0.tgz", - "integrity": "sha512-JTKIK5Pf/+3qCrmYDFlqcPPUx+ohEWKBaZy8GL8TmvV2VvC0SXVyNYILO39+GCRbqnuP6hBIF+BVr8ZxRz+6fw==", - "dependencies": { - "@protobuf-ts/plugin-framework": "^2.0.7", - "camel-case": "^4.1.2", - "dot-object": "^2.1.4", - "path-to-regexp": "^6.2.0", - "ts-poet": "^4.5.0", - "yaml": "^1.10.2" - }, - "bin": { - "protoc-gen-twirp_ts": "protoc-gen-twirp_ts" - }, - "peerDependencies": { - "@protobuf-ts/plugin": "^2.5.0", - "ts-proto": "^1.81.3" - }, - "peerDependenciesMeta": { - "@protobuf-ts/plugin": { - "optional": true - }, - "ts-proto": { - "optional": true - } - } - }, "node_modules/type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", @@ -7845,14 +7711,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, "node_modules/yargs": { "version": "17.6.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", @@ -7908,9 +7766,9 @@ }, "dependencies": { "@actions/artifact": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.2.1.tgz", - "integrity": "sha512-V2cvKJ+Evg2n9Mcqz7kjbY2s0nd9MsBI2rw2E38pSEMv+Coo4i1sX0lyGcgSn1zyfVtmLwAI9LfuSptWF8PdaA==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.2.2.tgz", + "integrity": "sha512-UtS1kcINiPRkI3/hDKkO/XdrtKo89kn8s81J67QNBU6RRMWSSXrrfCCbQVThuxcdW2boOLv51NVCEKyo954A2A==", "requires": { "@actions/core": "^1.10.0", "@actions/github": "^5.1.1", @@ -7923,7 +7781,6 @@ "@protobuf-ts/plugin": "^2.2.3-alpha.1", "archiver": "^7.0.1", "jwt-decode": "^3.1.2", - "twirp-ts": "^2.5.0", "unzip-stream": "^0.3.1" }, "dependencies": { @@ -9445,14 +9302,14 @@ "optional": true }, "@protobuf-ts/plugin": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin/-/plugin-2.9.3.tgz", - "integrity": "sha512-tHYACv+nnIV2eoiMxeZhrgMqGiUktzUzrhfgnROg/rr8TecPLp9v5/yqNibN+bad5k7d57aqlTuQKhFl+J4W/g==", + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin/-/plugin-2.9.4.tgz", + "integrity": "sha512-Db5Laq5T3mc6ERZvhIhkj1rn57/p8gbWiCKxQWbZBBl20wMuqKoHbRw4tuD7FyXi+IkwTToaNVXymv5CY3E8Rw==", "requires": { - "@protobuf-ts/plugin-framework": "^2.9.3", - "@protobuf-ts/protoc": "^2.9.3", - "@protobuf-ts/runtime": "^2.9.3", - "@protobuf-ts/runtime-rpc": "^2.9.3", + "@protobuf-ts/plugin-framework": "^2.9.4", + "@protobuf-ts/protoc": "^2.9.4", + "@protobuf-ts/runtime": "^2.9.4", + "@protobuf-ts/runtime-rpc": "^2.9.4", "typescript": "^3.9" }, "dependencies": { @@ -9464,11 +9321,11 @@ } }, "@protobuf-ts/plugin-framework": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.3.tgz", - "integrity": "sha512-iqdkhAu7fGPvBCVOoAEEFJ1/oaGIBoNIMgSv2WonTNJVHxv5FvvAfWFn6nG/eta34fHRZT38ZXTaYcMUkv8AiQ==", + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.4.tgz", + "integrity": "sha512-9nuX1kjdMliv+Pes8dQCKyVhjKgNNfwxVHg+tx3fLXSfZZRcUHMc1PMwB9/vTvc6gBKt9QGz5ERqSqZc0++E9A==", "requires": { - "@protobuf-ts/runtime": "^2.9.3", + "@protobuf-ts/runtime": "^2.9.4", "typescript": "^3.9" }, "dependencies": { @@ -9480,21 +9337,21 @@ } }, "@protobuf-ts/protoc": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/@protobuf-ts/protoc/-/protoc-2.9.3.tgz", - "integrity": "sha512-TJ0Ycx/CIBqpB4wpKt6K05kjXj6zv36s/qpdCT/wdJBhpayOVBqLF5NpLp3WIiw1PmIxvqalB6QHKjvnLzGKLA==" + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@protobuf-ts/protoc/-/protoc-2.9.4.tgz", + "integrity": "sha512-hQX+nOhFtrA+YdAXsXEDrLoGJqXHpgv4+BueYF0S9hy/Jq0VRTVlJS1Etmf4qlMt/WdigEes5LOd/LDzui4GIQ==" }, "@protobuf-ts/runtime": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime/-/runtime-2.9.3.tgz", - "integrity": "sha512-nivzCpg/qYD0RX2OmHOahJALb8ndjGmUhNBcTJ0BbXoqKwCSM6vYA+vegzS3rhuaPgbyC7Ec8idlnizzUfIRuw==" + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime/-/runtime-2.9.4.tgz", + "integrity": "sha512-vHRFWtJJB/SiogWDF0ypoKfRIZ41Kq+G9cEFj6Qm1eQaAhJ1LDFvgZ7Ja4tb3iLOQhz0PaoPnnOijF1qmEqTxg==" }, "@protobuf-ts/runtime-rpc": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.3.tgz", - "integrity": "sha512-WelHpctvZeG8yhbb7tnsrLzotq9xjMCXuGuhJ8qMyEdNoBBEodbXseofAYFTebo2/PN2LzyEq3X6vwr5f8jqTA==", + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.4.tgz", + "integrity": "sha512-y9L9JgnZxXFqH5vD4d7j9duWvIJ7AShyBRoNKJGhu9Q27qIbchfzli66H9RvrQNIFk5ER7z1Twe059WZGqERcA==", "requires": { - "@protobuf-ts/runtime": "^2.9.3" + "@protobuf-ts/runtime": "^2.9.4" } }, "@sinclair/typebox": { @@ -10194,15 +10051,6 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -10295,11 +10143,6 @@ "delayed-stream": "~1.0.0" } }, - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" - }, "compress-commons": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", @@ -10475,47 +10318,6 @@ "esutils": "^2.0.2" } }, - "dot-object": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/dot-object/-/dot-object-2.1.4.tgz", - "integrity": "sha512-7FXnyyCLFawNYJ+NhkqyP9Wd2yzuo+7n9pGiYpkmXCTYa8Ci2U0eUNDVg5OuO5Pm6aFXI2SWN8/N/w7SJWu1WA==", - "requires": { - "commander": "^4.0.0", - "glob": "^7.1.5" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "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" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, "eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -11276,7 +11078,8 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "fsevents": { "version": "2.3.2", @@ -11543,6 +11346,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -12508,14 +12312,6 @@ "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", "dev": true }, - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "requires": { - "tslib": "^2.0.3" - } - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -12642,15 +12438,6 @@ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, "node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -12782,15 +12569,6 @@ "lines-and-columns": "^1.1.6" } }, - "pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -12800,7 +12578,8 @@ "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==" + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true }, "path-key": { "version": "3.1.1", @@ -12829,11 +12608,6 @@ } } }, - "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==" - }, "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -12909,7 +12683,8 @@ "prettier": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz", - "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==" + "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==", + "dev": true }, "prettier-linter-helpers": { "version": "1.0.0", @@ -13526,15 +13301,6 @@ "yargs-parser": "^21.0.1" } }, - "ts-poet": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/ts-poet/-/ts-poet-4.15.0.tgz", - "integrity": "sha512-sLLR8yQBvHzi9d4R1F4pd+AzQxBfzOSSjfxiJxQhkUoH5bL7RsAC6wgvtVUQdGqiCsyS9rT6/8X2FI7ipdir5g==", - "requires": { - "lodash": "^4.17.15", - "prettier": "^2.5.1" - } - }, "tsconfig-paths": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", @@ -13591,19 +13357,6 @@ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" }, - "twirp-ts": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/twirp-ts/-/twirp-ts-2.5.0.tgz", - "integrity": "sha512-JTKIK5Pf/+3qCrmYDFlqcPPUx+ohEWKBaZy8GL8TmvV2VvC0SXVyNYILO39+GCRbqnuP6hBIF+BVr8ZxRz+6fw==", - "requires": { - "@protobuf-ts/plugin-framework": "^2.0.7", - "camel-case": "^4.1.2", - "dot-object": "^2.1.4", - "path-to-regexp": "^6.2.0", - "ts-poet": "^4.5.0", - "yaml": "^1.10.2" - } - }, "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", @@ -13841,11 +13594,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - }, "yargs": { "version": "17.6.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", diff --git a/package.json b/package.json index 511cc95..68072a9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "upload-artifact", - "version": "4.5.0", + "version": "4.6.1", "description": "Upload an Actions Artifact in a workflow run", "main": "dist/upload/index.js", "scripts": { @@ -29,7 +29,7 @@ }, "homepage": "https://github.com/actions/upload-artifact#readme", "dependencies": { - "@actions/artifact": "^2.2.1", + "@actions/artifact": "^2.2.2", "@actions/core": "^1.11.1", "@actions/github": "^6.0.0", "@actions/glob": "^0.5.0", From e9fad966ccdffceea5de0445882c9455934bcf8e Mon Sep 17 00:00:00 2001 From: Yang Cao Date: Fri, 21 Feb 2025 13:16:50 -0500 Subject: [PATCH 07/10] license cache update for artifact --- .licenses/npm/@actions/artifact.dep.yml | Bin 1315 -> 1315 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.licenses/npm/@actions/artifact.dep.yml b/.licenses/npm/@actions/artifact.dep.yml index 6fbfbca94233a856e5d39f332858298155b73151..33a21539edfc84103a6083ba5113da2ac7b82057 100644 GIT binary patch delta 12 TcmZ3?wU}#yHlxu-o$o9F8odM| delta 12 TcmZ3?wU}#yHlyK2o$o9F8n^@? From 99ec7df36b0e87dffbe57474a6eb1fe286afaa14 Mon Sep 17 00:00:00 2001 From: Ryan Ghadimi <114221941+GhadimiR@users.noreply.github.com> Date: Fri, 14 Mar 2025 15:03:00 +0000 Subject: [PATCH 08/10] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 507f6e1..479df99 100644 --- a/README.md +++ b/README.md @@ -473,8 +473,9 @@ If you must preserve permissions, you can `tar` all of your files together befor At the bottom of the workflow summary page, there is a dedicated section for artifacts. Here's a screenshot of something you might see: - + + There is a trashcan icon that can be used to delete the artifact. This icon will only appear for users who have write permissions to the repository. -The size of the artifact is denoted in bytes. The displayed artifact size denotes the size of the zip that `upload-artifact` creates during upload. +The size of the artifact is denoted in bytes. The displayed artifact size denotes the size of the zip that `upload-artifact` creates during upload. The Digest column will display the SHA256 digest of the artifact being uploaded. From 08396203c179e13c71b9754ce3472ed71842eec0 Mon Sep 17 00:00:00 2001 From: Salman Chishti Date: Wed, 19 Mar 2025 05:38:34 -0700 Subject: [PATCH 09/10] Prepare for new release of actions/upload-artifact with new toolkit cache version --- .licenses/npm/@actions/artifact.dep.yml | Bin 1315 -> 1315 bytes .vscode/launch.json | 36 +++ dist/merge/index.js | 410 ++++++++++++++++++++++-- dist/upload/index.js | 410 ++++++++++++++++++++++-- package-lock.json | 19 +- package.json | 4 +- 6 files changed, 810 insertions(+), 69 deletions(-) create mode 100644 .vscode/launch.json diff --git a/.licenses/npm/@actions/artifact.dep.yml b/.licenses/npm/@actions/artifact.dep.yml index 33a21539edfc84103a6083ba5113da2ac7b82057..5325bd102f4b532e7baa9130923a0deea1a0c1f2 100644 GIT binary patch delta 12 TcmZ3?wU}#yCZq92t)DCa8nOf+ delta 12 TcmZ3?wU}#yCZo|tt)DCa8m$B$ diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..94965ca --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,36 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Debug Jest Tests", + "program": "${workspaceFolder}/node_modules/jest/bin/jest.js", + "args": [ + "--runInBand", + "--testTimeout", + "10000" + ], + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "disableOptimisticBPs": true + }, + { + "type": "node", + "request": "launch", + "name": "Debug Current Test File", + "program": "${workspaceFolder}/node_modules/jest/bin/jest.js", + "args": [ + "--runInBand", + "--testTimeout", + "10000", + "${relativeFile}" + ], + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "internalConsoleOptions": "neverOpen", + "disableOptimisticBPs": true + } + ] +} \ No newline at end of file diff --git a/dist/merge/index.js b/dist/merge/index.js index 31792d4..eabca8a 100644 --- a/dist/merge/index.js +++ b/dist/merge/index.js @@ -824,7 +824,7 @@ __exportStar(__nccwpck_require__(49773), exports); "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.ArtifactService = exports.DeleteArtifactResponse = exports.DeleteArtifactRequest = exports.GetSignedArtifactURLResponse = exports.GetSignedArtifactURLRequest = exports.ListArtifactsResponse_MonolithArtifact = exports.ListArtifactsResponse = exports.ListArtifactsRequest = exports.FinalizeArtifactResponse = exports.FinalizeArtifactRequest = exports.CreateArtifactResponse = exports.CreateArtifactRequest = void 0; +exports.ArtifactService = exports.DeleteArtifactResponse = exports.DeleteArtifactRequest = exports.GetSignedArtifactURLResponse = exports.GetSignedArtifactURLRequest = exports.ListArtifactsResponse_MonolithArtifact = exports.ListArtifactsResponse = exports.ListArtifactsRequest = exports.FinalizeArtifactResponse = exports.FinalizeArtifactRequest = exports.CreateArtifactResponse = exports.CreateArtifactRequest = exports.FinalizeMigratedArtifactResponse = exports.FinalizeMigratedArtifactRequest = exports.MigrateArtifactResponse = exports.MigrateArtifactRequest = void 0; // @generated by protobuf-ts 2.9.1 with parameter long_type_string,client_none,generate_dependencies // @generated from protobuf file "results/api/v1/artifact.proto" (package "github.actions.results.api.v1", syntax proto3) // tslint:disable @@ -838,6 +838,236 @@ const wrappers_1 = __nccwpck_require__(8626); const wrappers_2 = __nccwpck_require__(8626); const timestamp_1 = __nccwpck_require__(54622); // @generated message type with reflection information, may provide speed optimized methods +class MigrateArtifactRequest$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.api.v1.MigrateArtifactRequest", [ + { no: 1, name: "workflow_run_backend_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 2, name: "name", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 3, name: "expires_at", kind: "message", T: () => timestamp_1.Timestamp } + ]); + } + create(value) { + const message = { workflowRunBackendId: "", name: "" }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* string workflow_run_backend_id */ 1: + message.workflowRunBackendId = reader.string(); + break; + case /* string name */ 2: + message.name = reader.string(); + break; + case /* google.protobuf.Timestamp expires_at */ 3: + message.expiresAt = timestamp_1.Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.expiresAt); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* string workflow_run_backend_id = 1; */ + if (message.workflowRunBackendId !== "") + writer.tag(1, runtime_1.WireType.LengthDelimited).string(message.workflowRunBackendId); + /* string name = 2; */ + if (message.name !== "") + writer.tag(2, runtime_1.WireType.LengthDelimited).string(message.name); + /* google.protobuf.Timestamp expires_at = 3; */ + if (message.expiresAt) + timestamp_1.Timestamp.internalBinaryWrite(message.expiresAt, writer.tag(3, runtime_1.WireType.LengthDelimited).fork(), options).join(); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.api.v1.MigrateArtifactRequest + */ +exports.MigrateArtifactRequest = new MigrateArtifactRequest$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class MigrateArtifactResponse$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.api.v1.MigrateArtifactResponse", [ + { no: 1, name: "ok", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }, + { no: 2, name: "signed_upload_url", kind: "scalar", T: 9 /*ScalarType.STRING*/ } + ]); + } + create(value) { + const message = { ok: false, signedUploadUrl: "" }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* bool ok */ 1: + message.ok = reader.bool(); + break; + case /* string signed_upload_url */ 2: + message.signedUploadUrl = reader.string(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* bool ok = 1; */ + if (message.ok !== false) + writer.tag(1, runtime_1.WireType.Varint).bool(message.ok); + /* string signed_upload_url = 2; */ + if (message.signedUploadUrl !== "") + writer.tag(2, runtime_1.WireType.LengthDelimited).string(message.signedUploadUrl); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.api.v1.MigrateArtifactResponse + */ +exports.MigrateArtifactResponse = new MigrateArtifactResponse$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class FinalizeMigratedArtifactRequest$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.api.v1.FinalizeMigratedArtifactRequest", [ + { no: 1, name: "workflow_run_backend_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 2, name: "name", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 3, name: "size", kind: "scalar", T: 3 /*ScalarType.INT64*/ } + ]); + } + create(value) { + const message = { workflowRunBackendId: "", name: "", size: "0" }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* string workflow_run_backend_id */ 1: + message.workflowRunBackendId = reader.string(); + break; + case /* string name */ 2: + message.name = reader.string(); + break; + case /* int64 size */ 3: + message.size = reader.int64().toString(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* string workflow_run_backend_id = 1; */ + if (message.workflowRunBackendId !== "") + writer.tag(1, runtime_1.WireType.LengthDelimited).string(message.workflowRunBackendId); + /* string name = 2; */ + if (message.name !== "") + writer.tag(2, runtime_1.WireType.LengthDelimited).string(message.name); + /* int64 size = 3; */ + if (message.size !== "0") + writer.tag(3, runtime_1.WireType.Varint).int64(message.size); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.api.v1.FinalizeMigratedArtifactRequest + */ +exports.FinalizeMigratedArtifactRequest = new FinalizeMigratedArtifactRequest$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class FinalizeMigratedArtifactResponse$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.api.v1.FinalizeMigratedArtifactResponse", [ + { no: 1, name: "ok", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }, + { no: 2, name: "artifact_id", kind: "scalar", T: 3 /*ScalarType.INT64*/ } + ]); + } + create(value) { + const message = { ok: false, artifactId: "0" }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* bool ok */ 1: + message.ok = reader.bool(); + break; + case /* int64 artifact_id */ 2: + message.artifactId = reader.int64().toString(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* bool ok = 1; */ + if (message.ok !== false) + writer.tag(1, runtime_1.WireType.Varint).bool(message.ok); + /* int64 artifact_id = 2; */ + if (message.artifactId !== "0") + writer.tag(2, runtime_1.WireType.Varint).int64(message.artifactId); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.api.v1.FinalizeMigratedArtifactResponse + */ +exports.FinalizeMigratedArtifactResponse = new FinalizeMigratedArtifactResponse$Type(); +// @generated message type with reflection information, may provide speed optimized methods class CreateArtifactRequest$Type extends runtime_5.MessageType { constructor() { super("github.actions.results.api.v1.CreateArtifactRequest", [ @@ -1219,7 +1449,8 @@ class ListArtifactsResponse_MonolithArtifact$Type extends runtime_5.MessageType { no: 3, name: "database_id", kind: "scalar", T: 3 /*ScalarType.INT64*/ }, { no: 4, name: "name", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, { no: 5, name: "size", kind: "scalar", T: 3 /*ScalarType.INT64*/ }, - { no: 6, name: "created_at", kind: "message", T: () => timestamp_1.Timestamp } + { no: 6, name: "created_at", kind: "message", T: () => timestamp_1.Timestamp }, + { no: 7, name: "digest", kind: "message", T: () => wrappers_2.StringValue } ]); } create(value) { @@ -1252,6 +1483,9 @@ class ListArtifactsResponse_MonolithArtifact$Type extends runtime_5.MessageType case /* google.protobuf.Timestamp created_at */ 6: message.createdAt = timestamp_1.Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.createdAt); break; + case /* google.protobuf.StringValue digest */ 7: + message.digest = wrappers_2.StringValue.internalBinaryRead(reader, reader.uint32(), options, message.digest); + break; default: let u = options.readUnknownField; if (u === "throw") @@ -1282,6 +1516,9 @@ class ListArtifactsResponse_MonolithArtifact$Type extends runtime_5.MessageType /* google.protobuf.Timestamp created_at = 6; */ if (message.createdAt) timestamp_1.Timestamp.internalBinaryWrite(message.createdAt, writer.tag(6, runtime_1.WireType.LengthDelimited).fork(), options).join(); + /* google.protobuf.StringValue digest = 7; */ + if (message.digest) + wrappers_2.StringValue.internalBinaryWrite(message.digest, writer.tag(7, runtime_1.WireType.LengthDelimited).fork(), options).join(); let u = options.writeUnknownFields; if (u !== false) (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); @@ -1523,7 +1760,9 @@ exports.ArtifactService = new runtime_rpc_1.ServiceType("github.actions.results. { name: "FinalizeArtifact", options: {}, I: exports.FinalizeArtifactRequest, O: exports.FinalizeArtifactResponse }, { name: "ListArtifacts", options: {}, I: exports.ListArtifactsRequest, O: exports.ListArtifactsResponse }, { name: "GetSignedArtifactURL", options: {}, I: exports.GetSignedArtifactURLRequest, O: exports.GetSignedArtifactURLResponse }, - { name: "DeleteArtifact", options: {}, I: exports.DeleteArtifactRequest, O: exports.DeleteArtifactResponse } + { name: "DeleteArtifact", options: {}, I: exports.DeleteArtifactRequest, O: exports.DeleteArtifactResponse }, + { name: "MigrateArtifact", options: {}, I: exports.MigrateArtifactRequest, O: exports.MigrateArtifactResponse }, + { name: "FinalizeMigratedArtifact", options: {}, I: exports.FinalizeMigratedArtifactRequest, O: exports.FinalizeMigratedArtifactResponse } ]); //# sourceMappingURL=artifact.js.map @@ -1920,6 +2159,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", ({ value: true })); exports.downloadArtifactInternal = exports.downloadArtifactPublic = exports.streamExtractExternal = void 0; const promises_1 = __importDefault(__nccwpck_require__(73292)); +const crypto = __importStar(__nccwpck_require__(6113)); +const stream = __importStar(__nccwpck_require__(12781)); const github = __importStar(__nccwpck_require__(21260)); const core = __importStar(__nccwpck_require__(42186)); const httpClient = __importStar(__nccwpck_require__(96255)); @@ -1956,8 +2197,7 @@ function streamExtract(url, directory) { let retryCount = 0; while (retryCount < 5) { try { - yield streamExtractExternal(url, directory); - return; + return yield streamExtractExternal(url, directory); } catch (error) { retryCount++; @@ -1977,12 +2217,18 @@ function streamExtractExternal(url, directory) { throw new Error(`Unexpected HTTP response from blob storage: ${response.message.statusCode} ${response.message.statusMessage}`); } const timeout = 30 * 1000; // 30 seconds + let sha256Digest = undefined; return new Promise((resolve, reject) => { const timerFn = () => { response.message.destroy(new Error(`Blob storage chunk did not respond in ${timeout}ms`)); }; const timer = setTimeout(timerFn, timeout); - response.message + const hashStream = crypto.createHash('sha256').setEncoding('hex'); + const passThrough = new stream.PassThrough(); + response.message.pipe(passThrough); + passThrough.pipe(hashStream); + const extractStream = passThrough; + extractStream .on('data', () => { timer.refresh(); }) @@ -1994,7 +2240,12 @@ function streamExtractExternal(url, directory) { .pipe(unzip_stream_1.default.Extract({ path: directory })) .on('close', () => { clearTimeout(timer); - resolve(); + if (hashStream) { + hashStream.end(); + sha256Digest = hashStream.read(); + core.info(`SHA256 digest of downloaded artifact is ${sha256Digest}`); + } + resolve({ sha256Digest: `sha256:${sha256Digest}` }); }) .on('error', (error) => { reject(error); @@ -2007,6 +2258,7 @@ function downloadArtifactPublic(artifactId, repositoryOwner, repositoryName, tok return __awaiter(this, void 0, void 0, function* () { const downloadPath = yield resolveOrCreateDirectory(options === null || options === void 0 ? void 0 : options.path); const api = github.getOctokit(token); + let digestMismatch = false; core.info(`Downloading artifact '${artifactId}' from '${repositoryOwner}/${repositoryName}'`); const { headers, status } = yield api.rest.actions.downloadArtifact({ owner: repositoryOwner, @@ -2027,13 +2279,20 @@ function downloadArtifactPublic(artifactId, repositoryOwner, repositoryName, tok core.info(`Redirecting to blob download url: ${scrubQueryParameters(location)}`); try { core.info(`Starting download of artifact to: ${downloadPath}`); - yield streamExtract(location, downloadPath); + const extractResponse = yield streamExtract(location, downloadPath); core.info(`Artifact download completed successfully.`); + if (options === null || options === void 0 ? void 0 : options.expectedHash) { + if ((options === null || options === void 0 ? void 0 : options.expectedHash) !== extractResponse.sha256Digest) { + digestMismatch = true; + core.debug(`Computed digest: ${extractResponse.sha256Digest}`); + core.debug(`Expected digest: ${options.expectedHash}`); + } + } } catch (error) { throw new Error(`Unable to download and extract artifact: ${error.message}`); } - return { downloadPath }; + return { downloadPath, digestMismatch }; }); } exports.downloadArtifactPublic = downloadArtifactPublic; @@ -2041,6 +2300,7 @@ function downloadArtifactInternal(artifactId, options) { return __awaiter(this, void 0, void 0, function* () { const downloadPath = yield resolveOrCreateDirectory(options === null || options === void 0 ? void 0 : options.path); const artifactClient = (0, artifact_twirp_client_1.internalArtifactTwirpClient)(); + let digestMismatch = false; const { workflowRunBackendId, workflowJobRunBackendId } = (0, util_1.getBackendIdsFromToken)(); const listReq = { workflowRunBackendId, @@ -2063,13 +2323,20 @@ function downloadArtifactInternal(artifactId, options) { core.info(`Redirecting to blob download url: ${scrubQueryParameters(signedUrl)}`); try { core.info(`Starting download of artifact to: ${downloadPath}`); - yield streamExtract(signedUrl, downloadPath); + const extractResponse = yield streamExtract(signedUrl, downloadPath); core.info(`Artifact download completed successfully.`); + if (options === null || options === void 0 ? void 0 : options.expectedHash) { + if ((options === null || options === void 0 ? void 0 : options.expectedHash) !== extractResponse.sha256Digest) { + digestMismatch = true; + core.debug(`Computed digest: ${extractResponse.sha256Digest}`); + core.debug(`Expected digest: ${options.expectedHash}`); + } + } } catch (error) { throw new Error(`Unable to download and extract artifact: ${error.message}`); } - return { downloadPath }; + return { downloadPath, digestMismatch }; }); } exports.downloadArtifactInternal = downloadArtifactInternal; @@ -2175,13 +2442,17 @@ function getArtifactPublic(artifactName, workflowRunId, repositoryOwner, reposit name: artifact.name, id: artifact.id, size: artifact.size_in_bytes, - createdAt: artifact.created_at ? new Date(artifact.created_at) : undefined + createdAt: artifact.created_at + ? new Date(artifact.created_at) + : undefined, + digest: artifact.digest } }; }); } exports.getArtifactPublic = getArtifactPublic; function getArtifactInternal(artifactName) { + var _a; return __awaiter(this, void 0, void 0, function* () { const artifactClient = (0, artifact_twirp_client_1.internalArtifactTwirpClient)(); const { workflowRunBackendId, workflowJobRunBackendId } = (0, util_1.getBackendIdsFromToken)(); @@ -2208,7 +2479,8 @@ function getArtifactInternal(artifactName) { size: Number(artifact.size), createdAt: artifact.createdAt ? generated_1.Timestamp.toDate(artifact.createdAt) - : undefined + : undefined, + digest: (_a = artifact.digest) === null || _a === void 0 ? void 0 : _a.value } }; }); @@ -2262,7 +2534,7 @@ function listArtifactsPublic(workflowRunId, repositoryOwner, repositoryName, tok }; const github = (0, github_1.getOctokit)(token, opts, plugin_retry_1.retry, plugin_request_log_1.requestLog); let currentPageNumber = 1; - const { data: listArtifactResponse } = yield github.rest.actions.listWorkflowRunArtifacts({ + const { data: listArtifactResponse } = yield github.request('GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts', { owner: repositoryOwner, repo: repositoryName, run_id: workflowRunId, @@ -2281,14 +2553,18 @@ function listArtifactsPublic(workflowRunId, repositoryOwner, repositoryName, tok name: artifact.name, id: artifact.id, size: artifact.size_in_bytes, - createdAt: artifact.created_at ? new Date(artifact.created_at) : undefined + createdAt: artifact.created_at + ? new Date(artifact.created_at) + : undefined, + digest: artifact.digest }); } + // Move to the next page + currentPageNumber++; // Iterate over any remaining pages for (currentPageNumber; currentPageNumber < numberOfPages; currentPageNumber++) { - currentPageNumber++; (0, core_1.debug)(`Fetching page ${currentPageNumber} of artifact list`); - const { data: listArtifactResponse } = yield github.rest.actions.listWorkflowRunArtifacts({ + const { data: listArtifactResponse } = yield github.request('GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts', { owner: repositoryOwner, repo: repositoryName, run_id: workflowRunId, @@ -2302,7 +2578,8 @@ function listArtifactsPublic(workflowRunId, repositoryOwner, repositoryName, tok size: artifact.size_in_bytes, createdAt: artifact.created_at ? new Date(artifact.created_at) - : undefined + : undefined, + digest: artifact.digest }); } } @@ -2325,14 +2602,18 @@ function listArtifactsInternal(latest = false) { workflowJobRunBackendId }; const res = yield artifactClient.ListArtifacts(req); - let artifacts = res.artifacts.map(artifact => ({ - name: artifact.name, - id: Number(artifact.databaseId), - size: Number(artifact.size), - createdAt: artifact.createdAt - ? generated_1.Timestamp.toDate(artifact.createdAt) - : undefined - })); + let artifacts = res.artifacts.map(artifact => { + var _a; + return ({ + name: artifact.name, + id: Number(artifact.databaseId), + size: Number(artifact.size), + createdAt: artifact.createdAt + ? generated_1.Timestamp.toDate(artifact.createdAt) + : undefined, + digest: (_a = artifact.digest) === null || _a === void 0 ? void 0 : _a.value + }); + }); if (latest) { artifacts = filterLatest(artifacts); } @@ -2444,6 +2725,7 @@ const generated_1 = __nccwpck_require__(49960); const config_1 = __nccwpck_require__(74610); const user_agent_1 = __nccwpck_require__(85164); const errors_1 = __nccwpck_require__(38182); +const util_1 = __nccwpck_require__(63062); class ArtifactHttpClient { constructor(userAgent, maxAttempts, baseRetryIntervalMilliseconds, retryMultiplier) { this.maxAttempts = 5; @@ -2496,6 +2778,7 @@ class ArtifactHttpClient { (0, core_1.debug)(`[Response] - ${response.message.statusCode}`); (0, core_1.debug)(`Headers: ${JSON.stringify(response.message.headers, null, 2)}`); const body = JSON.parse(rawBody); + (0, util_1.maskSecretUrls)(body); (0, core_1.debug)(`Body: ${JSON.stringify(body, null, 2)}`); if (this.isSuccessStatusCode(statusCode)) { return { response, body }; @@ -2812,10 +3095,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getBackendIdsFromToken = void 0; +exports.maskSecretUrls = exports.maskSigUrl = exports.getBackendIdsFromToken = void 0; const core = __importStar(__nccwpck_require__(42186)); const config_1 = __nccwpck_require__(74610); const jwt_decode_1 = __importDefault(__nccwpck_require__(84329)); +const core_1 = __nccwpck_require__(42186); const InvalidJwtError = new Error('Failed to get backend IDs: The provided JWT token is invalid and/or missing claims'); // uses the JWT token claims to get the // workflow run and workflow job run backend ids @@ -2864,6 +3148,74 @@ function getBackendIdsFromToken() { throw InvalidJwtError; } exports.getBackendIdsFromToken = getBackendIdsFromToken; +/** + * Masks the `sig` parameter in a URL and sets it as a secret. + * + * @param url - The URL containing the signature parameter to mask + * @remarks + * This function attempts to parse the provided URL and identify the 'sig' query parameter. + * If found, it registers both the raw and URL-encoded signature values as secrets using + * the Actions `setSecret` API, which prevents them from being displayed in logs. + * + * The function handles errors gracefully if URL parsing fails, logging them as debug messages. + * + * @example + * ```typescript + * // Mask a signature in an Azure SAS token URL + * maskSigUrl('https://example.blob.core.windows.net/container/file.txt?sig=abc123&se=2023-01-01'); + * ``` + */ +function maskSigUrl(url) { + if (!url) + return; + try { + const parsedUrl = new URL(url); + const signature = parsedUrl.searchParams.get('sig'); + if (signature) { + (0, core_1.setSecret)(signature); + (0, core_1.setSecret)(encodeURIComponent(signature)); + } + } + catch (error) { + (0, core_1.debug)(`Failed to parse URL: ${url} ${error instanceof Error ? error.message : String(error)}`); + } +} +exports.maskSigUrl = maskSigUrl; +/** + * Masks sensitive information in URLs containing signature parameters. + * Currently supports masking 'sig' parameters in the 'signed_upload_url' + * and 'signed_download_url' properties of the provided object. + * + * @param body - The object should contain a signature + * @remarks + * This function extracts URLs from the object properties and calls maskSigUrl + * on each one to redact sensitive signature information. The function doesn't + * modify the original object; it only marks the signatures as secrets for + * logging purposes. + * + * @example + * ```typescript + * const responseBody = { + * signed_upload_url: 'https://example.com?sig=abc123', + * signed_download_url: 'https://example.com?sig=def456' + * }; + * maskSecretUrls(responseBody); + * ``` + */ +function maskSecretUrls(body) { + if (typeof body !== 'object' || body === null) { + (0, core_1.debug)('body is not an object or is null'); + return; + } + if ('signed_upload_url' in body && + typeof body.signed_upload_url === 'string') { + maskSigUrl(body.signed_upload_url); + } + if ('signed_url' in body && typeof body.signed_url === 'string') { + maskSigUrl(body.signed_url); + } +} +exports.maskSecretUrls = maskSecretUrls; //# sourceMappingURL=util.js.map /***/ }), @@ -2970,7 +3322,7 @@ function uploadZipToBlobStorage(authenticatedUploadURL, zipUploadStream) { core.info('Finished uploading artifact content to blob storage!'); hashStream.end(); sha256Hash = hashStream.read(); - core.info(`SHA256 hash of uploaded artifact zip is ${sha256Hash}`); + core.info(`SHA256 digest of uploaded artifact zip is ${sha256Hash}`); if (uploadByteCount === 0) { core.warning(`No data was uploaded to blob storage. Reported upload byte count is 0.`); } @@ -135483,7 +135835,7 @@ module.exports = index; /***/ ((module) => { "use strict"; -module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.2.2","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","jwt-decode":"^3.1.2","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}'); +module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.3.2","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","jwt-decode":"^3.1.2","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}'); /***/ }), diff --git a/dist/upload/index.js b/dist/upload/index.js index 3966dc5..89238fa 100644 --- a/dist/upload/index.js +++ b/dist/upload/index.js @@ -824,7 +824,7 @@ __exportStar(__nccwpck_require__(49773), exports); "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.ArtifactService = exports.DeleteArtifactResponse = exports.DeleteArtifactRequest = exports.GetSignedArtifactURLResponse = exports.GetSignedArtifactURLRequest = exports.ListArtifactsResponse_MonolithArtifact = exports.ListArtifactsResponse = exports.ListArtifactsRequest = exports.FinalizeArtifactResponse = exports.FinalizeArtifactRequest = exports.CreateArtifactResponse = exports.CreateArtifactRequest = void 0; +exports.ArtifactService = exports.DeleteArtifactResponse = exports.DeleteArtifactRequest = exports.GetSignedArtifactURLResponse = exports.GetSignedArtifactURLRequest = exports.ListArtifactsResponse_MonolithArtifact = exports.ListArtifactsResponse = exports.ListArtifactsRequest = exports.FinalizeArtifactResponse = exports.FinalizeArtifactRequest = exports.CreateArtifactResponse = exports.CreateArtifactRequest = exports.FinalizeMigratedArtifactResponse = exports.FinalizeMigratedArtifactRequest = exports.MigrateArtifactResponse = exports.MigrateArtifactRequest = void 0; // @generated by protobuf-ts 2.9.1 with parameter long_type_string,client_none,generate_dependencies // @generated from protobuf file "results/api/v1/artifact.proto" (package "github.actions.results.api.v1", syntax proto3) // tslint:disable @@ -838,6 +838,236 @@ const wrappers_1 = __nccwpck_require__(8626); const wrappers_2 = __nccwpck_require__(8626); const timestamp_1 = __nccwpck_require__(54622); // @generated message type with reflection information, may provide speed optimized methods +class MigrateArtifactRequest$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.api.v1.MigrateArtifactRequest", [ + { no: 1, name: "workflow_run_backend_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 2, name: "name", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 3, name: "expires_at", kind: "message", T: () => timestamp_1.Timestamp } + ]); + } + create(value) { + const message = { workflowRunBackendId: "", name: "" }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* string workflow_run_backend_id */ 1: + message.workflowRunBackendId = reader.string(); + break; + case /* string name */ 2: + message.name = reader.string(); + break; + case /* google.protobuf.Timestamp expires_at */ 3: + message.expiresAt = timestamp_1.Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.expiresAt); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* string workflow_run_backend_id = 1; */ + if (message.workflowRunBackendId !== "") + writer.tag(1, runtime_1.WireType.LengthDelimited).string(message.workflowRunBackendId); + /* string name = 2; */ + if (message.name !== "") + writer.tag(2, runtime_1.WireType.LengthDelimited).string(message.name); + /* google.protobuf.Timestamp expires_at = 3; */ + if (message.expiresAt) + timestamp_1.Timestamp.internalBinaryWrite(message.expiresAt, writer.tag(3, runtime_1.WireType.LengthDelimited).fork(), options).join(); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.api.v1.MigrateArtifactRequest + */ +exports.MigrateArtifactRequest = new MigrateArtifactRequest$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class MigrateArtifactResponse$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.api.v1.MigrateArtifactResponse", [ + { no: 1, name: "ok", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }, + { no: 2, name: "signed_upload_url", kind: "scalar", T: 9 /*ScalarType.STRING*/ } + ]); + } + create(value) { + const message = { ok: false, signedUploadUrl: "" }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* bool ok */ 1: + message.ok = reader.bool(); + break; + case /* string signed_upload_url */ 2: + message.signedUploadUrl = reader.string(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* bool ok = 1; */ + if (message.ok !== false) + writer.tag(1, runtime_1.WireType.Varint).bool(message.ok); + /* string signed_upload_url = 2; */ + if (message.signedUploadUrl !== "") + writer.tag(2, runtime_1.WireType.LengthDelimited).string(message.signedUploadUrl); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.api.v1.MigrateArtifactResponse + */ +exports.MigrateArtifactResponse = new MigrateArtifactResponse$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class FinalizeMigratedArtifactRequest$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.api.v1.FinalizeMigratedArtifactRequest", [ + { no: 1, name: "workflow_run_backend_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 2, name: "name", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 3, name: "size", kind: "scalar", T: 3 /*ScalarType.INT64*/ } + ]); + } + create(value) { + const message = { workflowRunBackendId: "", name: "", size: "0" }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* string workflow_run_backend_id */ 1: + message.workflowRunBackendId = reader.string(); + break; + case /* string name */ 2: + message.name = reader.string(); + break; + case /* int64 size */ 3: + message.size = reader.int64().toString(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* string workflow_run_backend_id = 1; */ + if (message.workflowRunBackendId !== "") + writer.tag(1, runtime_1.WireType.LengthDelimited).string(message.workflowRunBackendId); + /* string name = 2; */ + if (message.name !== "") + writer.tag(2, runtime_1.WireType.LengthDelimited).string(message.name); + /* int64 size = 3; */ + if (message.size !== "0") + writer.tag(3, runtime_1.WireType.Varint).int64(message.size); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.api.v1.FinalizeMigratedArtifactRequest + */ +exports.FinalizeMigratedArtifactRequest = new FinalizeMigratedArtifactRequest$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class FinalizeMigratedArtifactResponse$Type extends runtime_5.MessageType { + constructor() { + super("github.actions.results.api.v1.FinalizeMigratedArtifactResponse", [ + { no: 1, name: "ok", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }, + { no: 2, name: "artifact_id", kind: "scalar", T: 3 /*ScalarType.INT64*/ } + ]); + } + create(value) { + const message = { ok: false, artifactId: "0" }; + globalThis.Object.defineProperty(message, runtime_4.MESSAGE_TYPE, { enumerable: false, value: this }); + if (value !== undefined) + (0, runtime_3.reflectionMergePartial)(this, message, value); + return message; + } + internalBinaryRead(reader, length, options, target) { + let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* bool ok */ 1: + message.ok = reader.bool(); + break; + case /* int64 artifact_id */ 2: + message.artifactId = reader.int64().toString(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? runtime_2.UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message, writer, options) { + /* bool ok = 1; */ + if (message.ok !== false) + writer.tag(1, runtime_1.WireType.Varint).bool(message.ok); + /* int64 artifact_id = 2; */ + if (message.artifactId !== "0") + writer.tag(2, runtime_1.WireType.Varint).int64(message.artifactId); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message github.actions.results.api.v1.FinalizeMigratedArtifactResponse + */ +exports.FinalizeMigratedArtifactResponse = new FinalizeMigratedArtifactResponse$Type(); +// @generated message type with reflection information, may provide speed optimized methods class CreateArtifactRequest$Type extends runtime_5.MessageType { constructor() { super("github.actions.results.api.v1.CreateArtifactRequest", [ @@ -1219,7 +1449,8 @@ class ListArtifactsResponse_MonolithArtifact$Type extends runtime_5.MessageType { no: 3, name: "database_id", kind: "scalar", T: 3 /*ScalarType.INT64*/ }, { no: 4, name: "name", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, { no: 5, name: "size", kind: "scalar", T: 3 /*ScalarType.INT64*/ }, - { no: 6, name: "created_at", kind: "message", T: () => timestamp_1.Timestamp } + { no: 6, name: "created_at", kind: "message", T: () => timestamp_1.Timestamp }, + { no: 7, name: "digest", kind: "message", T: () => wrappers_2.StringValue } ]); } create(value) { @@ -1252,6 +1483,9 @@ class ListArtifactsResponse_MonolithArtifact$Type extends runtime_5.MessageType case /* google.protobuf.Timestamp created_at */ 6: message.createdAt = timestamp_1.Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.createdAt); break; + case /* google.protobuf.StringValue digest */ 7: + message.digest = wrappers_2.StringValue.internalBinaryRead(reader, reader.uint32(), options, message.digest); + break; default: let u = options.readUnknownField; if (u === "throw") @@ -1282,6 +1516,9 @@ class ListArtifactsResponse_MonolithArtifact$Type extends runtime_5.MessageType /* google.protobuf.Timestamp created_at = 6; */ if (message.createdAt) timestamp_1.Timestamp.internalBinaryWrite(message.createdAt, writer.tag(6, runtime_1.WireType.LengthDelimited).fork(), options).join(); + /* google.protobuf.StringValue digest = 7; */ + if (message.digest) + wrappers_2.StringValue.internalBinaryWrite(message.digest, writer.tag(7, runtime_1.WireType.LengthDelimited).fork(), options).join(); let u = options.writeUnknownFields; if (u !== false) (u == true ? runtime_2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); @@ -1523,7 +1760,9 @@ exports.ArtifactService = new runtime_rpc_1.ServiceType("github.actions.results. { name: "FinalizeArtifact", options: {}, I: exports.FinalizeArtifactRequest, O: exports.FinalizeArtifactResponse }, { name: "ListArtifacts", options: {}, I: exports.ListArtifactsRequest, O: exports.ListArtifactsResponse }, { name: "GetSignedArtifactURL", options: {}, I: exports.GetSignedArtifactURLRequest, O: exports.GetSignedArtifactURLResponse }, - { name: "DeleteArtifact", options: {}, I: exports.DeleteArtifactRequest, O: exports.DeleteArtifactResponse } + { name: "DeleteArtifact", options: {}, I: exports.DeleteArtifactRequest, O: exports.DeleteArtifactResponse }, + { name: "MigrateArtifact", options: {}, I: exports.MigrateArtifactRequest, O: exports.MigrateArtifactResponse }, + { name: "FinalizeMigratedArtifact", options: {}, I: exports.FinalizeMigratedArtifactRequest, O: exports.FinalizeMigratedArtifactResponse } ]); //# sourceMappingURL=artifact.js.map @@ -1920,6 +2159,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", ({ value: true })); exports.downloadArtifactInternal = exports.downloadArtifactPublic = exports.streamExtractExternal = void 0; const promises_1 = __importDefault(__nccwpck_require__(73292)); +const crypto = __importStar(__nccwpck_require__(6113)); +const stream = __importStar(__nccwpck_require__(12781)); const github = __importStar(__nccwpck_require__(21260)); const core = __importStar(__nccwpck_require__(42186)); const httpClient = __importStar(__nccwpck_require__(96255)); @@ -1956,8 +2197,7 @@ function streamExtract(url, directory) { let retryCount = 0; while (retryCount < 5) { try { - yield streamExtractExternal(url, directory); - return; + return yield streamExtractExternal(url, directory); } catch (error) { retryCount++; @@ -1977,12 +2217,18 @@ function streamExtractExternal(url, directory) { throw new Error(`Unexpected HTTP response from blob storage: ${response.message.statusCode} ${response.message.statusMessage}`); } const timeout = 30 * 1000; // 30 seconds + let sha256Digest = undefined; return new Promise((resolve, reject) => { const timerFn = () => { response.message.destroy(new Error(`Blob storage chunk did not respond in ${timeout}ms`)); }; const timer = setTimeout(timerFn, timeout); - response.message + const hashStream = crypto.createHash('sha256').setEncoding('hex'); + const passThrough = new stream.PassThrough(); + response.message.pipe(passThrough); + passThrough.pipe(hashStream); + const extractStream = passThrough; + extractStream .on('data', () => { timer.refresh(); }) @@ -1994,7 +2240,12 @@ function streamExtractExternal(url, directory) { .pipe(unzip_stream_1.default.Extract({ path: directory })) .on('close', () => { clearTimeout(timer); - resolve(); + if (hashStream) { + hashStream.end(); + sha256Digest = hashStream.read(); + core.info(`SHA256 digest of downloaded artifact is ${sha256Digest}`); + } + resolve({ sha256Digest: `sha256:${sha256Digest}` }); }) .on('error', (error) => { reject(error); @@ -2007,6 +2258,7 @@ function downloadArtifactPublic(artifactId, repositoryOwner, repositoryName, tok return __awaiter(this, void 0, void 0, function* () { const downloadPath = yield resolveOrCreateDirectory(options === null || options === void 0 ? void 0 : options.path); const api = github.getOctokit(token); + let digestMismatch = false; core.info(`Downloading artifact '${artifactId}' from '${repositoryOwner}/${repositoryName}'`); const { headers, status } = yield api.rest.actions.downloadArtifact({ owner: repositoryOwner, @@ -2027,13 +2279,20 @@ function downloadArtifactPublic(artifactId, repositoryOwner, repositoryName, tok core.info(`Redirecting to blob download url: ${scrubQueryParameters(location)}`); try { core.info(`Starting download of artifact to: ${downloadPath}`); - yield streamExtract(location, downloadPath); + const extractResponse = yield streamExtract(location, downloadPath); core.info(`Artifact download completed successfully.`); + if (options === null || options === void 0 ? void 0 : options.expectedHash) { + if ((options === null || options === void 0 ? void 0 : options.expectedHash) !== extractResponse.sha256Digest) { + digestMismatch = true; + core.debug(`Computed digest: ${extractResponse.sha256Digest}`); + core.debug(`Expected digest: ${options.expectedHash}`); + } + } } catch (error) { throw new Error(`Unable to download and extract artifact: ${error.message}`); } - return { downloadPath }; + return { downloadPath, digestMismatch }; }); } exports.downloadArtifactPublic = downloadArtifactPublic; @@ -2041,6 +2300,7 @@ function downloadArtifactInternal(artifactId, options) { return __awaiter(this, void 0, void 0, function* () { const downloadPath = yield resolveOrCreateDirectory(options === null || options === void 0 ? void 0 : options.path); const artifactClient = (0, artifact_twirp_client_1.internalArtifactTwirpClient)(); + let digestMismatch = false; const { workflowRunBackendId, workflowJobRunBackendId } = (0, util_1.getBackendIdsFromToken)(); const listReq = { workflowRunBackendId, @@ -2063,13 +2323,20 @@ function downloadArtifactInternal(artifactId, options) { core.info(`Redirecting to blob download url: ${scrubQueryParameters(signedUrl)}`); try { core.info(`Starting download of artifact to: ${downloadPath}`); - yield streamExtract(signedUrl, downloadPath); + const extractResponse = yield streamExtract(signedUrl, downloadPath); core.info(`Artifact download completed successfully.`); + if (options === null || options === void 0 ? void 0 : options.expectedHash) { + if ((options === null || options === void 0 ? void 0 : options.expectedHash) !== extractResponse.sha256Digest) { + digestMismatch = true; + core.debug(`Computed digest: ${extractResponse.sha256Digest}`); + core.debug(`Expected digest: ${options.expectedHash}`); + } + } } catch (error) { throw new Error(`Unable to download and extract artifact: ${error.message}`); } - return { downloadPath }; + return { downloadPath, digestMismatch }; }); } exports.downloadArtifactInternal = downloadArtifactInternal; @@ -2175,13 +2442,17 @@ function getArtifactPublic(artifactName, workflowRunId, repositoryOwner, reposit name: artifact.name, id: artifact.id, size: artifact.size_in_bytes, - createdAt: artifact.created_at ? new Date(artifact.created_at) : undefined + createdAt: artifact.created_at + ? new Date(artifact.created_at) + : undefined, + digest: artifact.digest } }; }); } exports.getArtifactPublic = getArtifactPublic; function getArtifactInternal(artifactName) { + var _a; return __awaiter(this, void 0, void 0, function* () { const artifactClient = (0, artifact_twirp_client_1.internalArtifactTwirpClient)(); const { workflowRunBackendId, workflowJobRunBackendId } = (0, util_1.getBackendIdsFromToken)(); @@ -2208,7 +2479,8 @@ function getArtifactInternal(artifactName) { size: Number(artifact.size), createdAt: artifact.createdAt ? generated_1.Timestamp.toDate(artifact.createdAt) - : undefined + : undefined, + digest: (_a = artifact.digest) === null || _a === void 0 ? void 0 : _a.value } }; }); @@ -2262,7 +2534,7 @@ function listArtifactsPublic(workflowRunId, repositoryOwner, repositoryName, tok }; const github = (0, github_1.getOctokit)(token, opts, plugin_retry_1.retry, plugin_request_log_1.requestLog); let currentPageNumber = 1; - const { data: listArtifactResponse } = yield github.rest.actions.listWorkflowRunArtifacts({ + const { data: listArtifactResponse } = yield github.request('GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts', { owner: repositoryOwner, repo: repositoryName, run_id: workflowRunId, @@ -2281,14 +2553,18 @@ function listArtifactsPublic(workflowRunId, repositoryOwner, repositoryName, tok name: artifact.name, id: artifact.id, size: artifact.size_in_bytes, - createdAt: artifact.created_at ? new Date(artifact.created_at) : undefined + createdAt: artifact.created_at + ? new Date(artifact.created_at) + : undefined, + digest: artifact.digest }); } + // Move to the next page + currentPageNumber++; // Iterate over any remaining pages for (currentPageNumber; currentPageNumber < numberOfPages; currentPageNumber++) { - currentPageNumber++; (0, core_1.debug)(`Fetching page ${currentPageNumber} of artifact list`); - const { data: listArtifactResponse } = yield github.rest.actions.listWorkflowRunArtifacts({ + const { data: listArtifactResponse } = yield github.request('GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts', { owner: repositoryOwner, repo: repositoryName, run_id: workflowRunId, @@ -2302,7 +2578,8 @@ function listArtifactsPublic(workflowRunId, repositoryOwner, repositoryName, tok size: artifact.size_in_bytes, createdAt: artifact.created_at ? new Date(artifact.created_at) - : undefined + : undefined, + digest: artifact.digest }); } } @@ -2325,14 +2602,18 @@ function listArtifactsInternal(latest = false) { workflowJobRunBackendId }; const res = yield artifactClient.ListArtifacts(req); - let artifacts = res.artifacts.map(artifact => ({ - name: artifact.name, - id: Number(artifact.databaseId), - size: Number(artifact.size), - createdAt: artifact.createdAt - ? generated_1.Timestamp.toDate(artifact.createdAt) - : undefined - })); + let artifacts = res.artifacts.map(artifact => { + var _a; + return ({ + name: artifact.name, + id: Number(artifact.databaseId), + size: Number(artifact.size), + createdAt: artifact.createdAt + ? generated_1.Timestamp.toDate(artifact.createdAt) + : undefined, + digest: (_a = artifact.digest) === null || _a === void 0 ? void 0 : _a.value + }); + }); if (latest) { artifacts = filterLatest(artifacts); } @@ -2444,6 +2725,7 @@ const generated_1 = __nccwpck_require__(49960); const config_1 = __nccwpck_require__(74610); const user_agent_1 = __nccwpck_require__(85164); const errors_1 = __nccwpck_require__(38182); +const util_1 = __nccwpck_require__(63062); class ArtifactHttpClient { constructor(userAgent, maxAttempts, baseRetryIntervalMilliseconds, retryMultiplier) { this.maxAttempts = 5; @@ -2496,6 +2778,7 @@ class ArtifactHttpClient { (0, core_1.debug)(`[Response] - ${response.message.statusCode}`); (0, core_1.debug)(`Headers: ${JSON.stringify(response.message.headers, null, 2)}`); const body = JSON.parse(rawBody); + (0, util_1.maskSecretUrls)(body); (0, core_1.debug)(`Body: ${JSON.stringify(body, null, 2)}`); if (this.isSuccessStatusCode(statusCode)) { return { response, body }; @@ -2812,10 +3095,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getBackendIdsFromToken = void 0; +exports.maskSecretUrls = exports.maskSigUrl = exports.getBackendIdsFromToken = void 0; const core = __importStar(__nccwpck_require__(42186)); const config_1 = __nccwpck_require__(74610); const jwt_decode_1 = __importDefault(__nccwpck_require__(84329)); +const core_1 = __nccwpck_require__(42186); const InvalidJwtError = new Error('Failed to get backend IDs: The provided JWT token is invalid and/or missing claims'); // uses the JWT token claims to get the // workflow run and workflow job run backend ids @@ -2864,6 +3148,74 @@ function getBackendIdsFromToken() { throw InvalidJwtError; } exports.getBackendIdsFromToken = getBackendIdsFromToken; +/** + * Masks the `sig` parameter in a URL and sets it as a secret. + * + * @param url - The URL containing the signature parameter to mask + * @remarks + * This function attempts to parse the provided URL and identify the 'sig' query parameter. + * If found, it registers both the raw and URL-encoded signature values as secrets using + * the Actions `setSecret` API, which prevents them from being displayed in logs. + * + * The function handles errors gracefully if URL parsing fails, logging them as debug messages. + * + * @example + * ```typescript + * // Mask a signature in an Azure SAS token URL + * maskSigUrl('https://example.blob.core.windows.net/container/file.txt?sig=abc123&se=2023-01-01'); + * ``` + */ +function maskSigUrl(url) { + if (!url) + return; + try { + const parsedUrl = new URL(url); + const signature = parsedUrl.searchParams.get('sig'); + if (signature) { + (0, core_1.setSecret)(signature); + (0, core_1.setSecret)(encodeURIComponent(signature)); + } + } + catch (error) { + (0, core_1.debug)(`Failed to parse URL: ${url} ${error instanceof Error ? error.message : String(error)}`); + } +} +exports.maskSigUrl = maskSigUrl; +/** + * Masks sensitive information in URLs containing signature parameters. + * Currently supports masking 'sig' parameters in the 'signed_upload_url' + * and 'signed_download_url' properties of the provided object. + * + * @param body - The object should contain a signature + * @remarks + * This function extracts URLs from the object properties and calls maskSigUrl + * on each one to redact sensitive signature information. The function doesn't + * modify the original object; it only marks the signatures as secrets for + * logging purposes. + * + * @example + * ```typescript + * const responseBody = { + * signed_upload_url: 'https://example.com?sig=abc123', + * signed_download_url: 'https://example.com?sig=def456' + * }; + * maskSecretUrls(responseBody); + * ``` + */ +function maskSecretUrls(body) { + if (typeof body !== 'object' || body === null) { + (0, core_1.debug)('body is not an object or is null'); + return; + } + if ('signed_upload_url' in body && + typeof body.signed_upload_url === 'string') { + maskSigUrl(body.signed_upload_url); + } + if ('signed_url' in body && typeof body.signed_url === 'string') { + maskSigUrl(body.signed_url); + } +} +exports.maskSecretUrls = maskSecretUrls; //# sourceMappingURL=util.js.map /***/ }), @@ -2970,7 +3322,7 @@ function uploadZipToBlobStorage(authenticatedUploadURL, zipUploadStream) { core.info('Finished uploading artifact content to blob storage!'); hashStream.end(); sha256Hash = hashStream.read(); - core.info(`SHA256 hash of uploaded artifact zip is ${sha256Hash}`); + core.info(`SHA256 digest of uploaded artifact zip is ${sha256Hash}`); if (uploadByteCount === 0) { core.warning(`No data was uploaded to blob storage. Reported upload byte count is 0.`); } @@ -135493,7 +135845,7 @@ module.exports = index; /***/ ((module) => { "use strict"; -module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.2.2","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","jwt-decode":"^3.1.2","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}'); +module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.3.2","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","jwt-decode":"^3.1.2","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}'); /***/ }), diff --git a/package-lock.json b/package-lock.json index e6d252e..75e253f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { "name": "upload-artifact", - "version": "4.6.1", + "version": "4.6.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "upload-artifact", - "version": "4.6.1", + "version": "4.6.2", "license": "MIT", "dependencies": { - "@actions/artifact": "^2.2.2", + "@actions/artifact": "^2.3.2", "@actions/core": "^1.11.1", "@actions/github": "^6.0.0", "@actions/glob": "^0.5.0", @@ -34,9 +34,10 @@ } }, "node_modules/@actions/artifact": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.2.2.tgz", - "integrity": "sha512-UtS1kcINiPRkI3/hDKkO/XdrtKo89kn8s81J67QNBU6RRMWSSXrrfCCbQVThuxcdW2boOLv51NVCEKyo954A2A==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.3.2.tgz", + "integrity": "sha512-uX2Mr5KEPcwnzqa0Og9wOTEKIae6C/yx9P/m8bIglzCS5nZDkcQC/zRWjjoEsyVecL6oQpBx5BuqQj/yuVm0gw==", + "license": "MIT", "dependencies": { "@actions/core": "^1.10.0", "@actions/github": "^5.1.1", @@ -7766,9 +7767,9 @@ }, "dependencies": { "@actions/artifact": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.2.2.tgz", - "integrity": "sha512-UtS1kcINiPRkI3/hDKkO/XdrtKo89kn8s81J67QNBU6RRMWSSXrrfCCbQVThuxcdW2boOLv51NVCEKyo954A2A==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.3.2.tgz", + "integrity": "sha512-uX2Mr5KEPcwnzqa0Og9wOTEKIae6C/yx9P/m8bIglzCS5nZDkcQC/zRWjjoEsyVecL6oQpBx5BuqQj/yuVm0gw==", "requires": { "@actions/core": "^1.10.0", "@actions/github": "^5.1.1", diff --git a/package.json b/package.json index 68072a9..ec05284 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "upload-artifact", - "version": "4.6.1", + "version": "4.6.2", "description": "Upload an Actions Artifact in a workflow run", "main": "dist/upload/index.js", "scripts": { @@ -29,7 +29,7 @@ }, "homepage": "https://github.com/actions/upload-artifact#readme", "dependencies": { - "@actions/artifact": "^2.2.2", + "@actions/artifact": "^2.3.2", "@actions/core": "^1.11.1", "@actions/github": "^6.0.0", "@actions/glob": "^0.5.0", From 8747d8cd7632611ad6060b528f3e0f654c98869c Mon Sep 17 00:00:00 2001 From: Ben De St Paer-Gotch Date: Mon, 16 Jun 2025 10:11:27 +0100 Subject: [PATCH 10/10] Update README.md --- README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/README.md b/README.md index 479df99..075fab9 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,24 @@ There is also a new sub-action, `actions/upload-artifact/merge`. For more info, For assistance with breaking changes, see [MIGRATION.md](docs/MIGRATION.md). +## Note + +Thank you for your interest in this GitHub repo, however, right now we are not taking contributions. + +We continue to focus our resources on strategic areas that help our customers be successful while making developers' lives easier. While GitHub Actions remains a key part of this vision, we are allocating resources towards other areas of Actions and are not taking contributions to this repository at this time. The GitHub public roadmap is the best place to follow along for any updates on features we’re working on and what stage they’re in. + +We are taking the following steps to better direct requests related to GitHub Actions, including: + +1. We will be directing questions and support requests to our [Community Discussions area](https://github.com/orgs/community/discussions/categories/actions) + +2. High Priority bugs can be reported through Community Discussions or you can report these to our support team https://support.github.com/contact/bug-report. + +3. Security Issues should be handled as per our [security.md](SECURITY.md). + +We will still provide security updates for this project and fix major breaking changes during this time. + +You are welcome to still raise bugs in this repo. + ## Usage ### Inputs