diff --git a/.github/actions/expose-actions-variables/action.yml b/.github/actions/expose-actions-variables/action.yml new file mode 100644 index 000000000000..a44eeb01d1e8 --- /dev/null +++ b/.github/actions/expose-actions-variables/action.yml @@ -0,0 +1,5 @@ +name: "Expose Actions Variables" +description: "Expose ACTIONS_RUNTIME_TOKEN and ACTIONS_RESULTS_URL on GITHUB_ENV" +runs: + using: "node20" + main: "index.mjs" diff --git a/.github/actions/expose-actions-variables/index.mjs b/.github/actions/expose-actions-variables/index.mjs new file mode 100644 index 000000000000..ea6b5254ed1c --- /dev/null +++ b/.github/actions/expose-actions-variables/index.mjs @@ -0,0 +1,7 @@ +import fs from "node:fs"; + +fs.appendFileSync( + process.env.GITHUB_ENV, + `GITHUB_ACTIONS_RUNTIME_TOKEN=${process.env.ACTIONS_RUNTIME_TOKEN}\n` + + `GITHUB_ACTIONS_RESULTS_URL=${process.env.ACTIONS_RESULTS_URL}\n` +); diff --git a/.github/extract-runtime-versions.mjs b/.github/extract-runtime-versions.mjs index 3a270f4f2e32..fee8bb5fea1d 100644 --- a/.github/extract-runtime-versions.mjs +++ b/.github/extract-runtime-versions.mjs @@ -67,6 +67,7 @@ const workerdBinary = path.resolve(workerdPackageJsonPath, "../bin/workerd"); const workerdBinaryVersion = execSync(workerdBinary + " --version") .toString() + .trim() .split(" ")[1]; // 4. Write basic markdown report diff --git a/.github/prereleases/0-packages.mjs b/.github/prereleases/0-packages.mjs new file mode 100644 index 000000000000..5e08da816785 --- /dev/null +++ b/.github/prereleases/0-packages.mjs @@ -0,0 +1,101 @@ +import assert from "node:assert"; +import { execSync } from "node:child_process"; +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +export const projectRoot = path.resolve(__dirname, "../.."); + +const githubRunId = parseInt(process.env.GITHUB_RUN_ID); +assert( + !Number.isNaN(githubRunId), + "Expected GITHUB_RUN_ID variable to be a number" +); +const githubEventPath = process.env.GITHUB_EVENT_PATH; +assert(githubEventPath, "Expected GITHUB_EVENT_PATH variable to be defined"); +const githubEventContents = fs.readFileSync(githubEventPath, "utf8"); +const githubEvent = JSON.parse(githubEventContents); +const githubPullRequestNumber = githubEvent?.pull_request?.number; +assert( + typeof githubPullRequestNumber === "number", + `Expected valid pull_request event, got ${githubEventContents}` +); + +/** + * @typedef {object} ~PackageJsonWorkersSdk + * @property {boolean} [prerelease] + */ + +/** + * @typedef {object} ~PackageJson + * @property {string} name + * @property {string} version + * @property {Record} [dependencies] + * @property {Record} [devDependencies] + * @property {Record} [peerDependencies] + * @property {Record} [optionalDependencies] + * @property {~PackageJsonWorkersSdk} [workers-sdk] + */ + +/** + * @typedef {object} ~Package + * @property {string} path + * @property {~PackageJson} json + */ + +/** @returns {string[]} */ +function getPackagePaths() { + const stdout = execSync( + 'pnpm list --filter="./packages/*" --recursive --depth=-1 --parseable', + { cwd: projectRoot, encoding: "utf8" } + ); + return stdout.split("\n").filter((pkgPath) => path.isAbsolute(pkgPath)); +} + +/** + * @param {string} pkgPath + * @returns {~Package} + */ +function getPackage(pkgPath) { + const json = fs.readFileSync(path.join(pkgPath, "package.json"), "utf8"); + return { + path: pkgPath, + json: JSON.parse(json), + }; +} + +/** @param {~Package} pkg */ +export function setPackage(pkg) { + const json = JSON.stringify(pkg.json, null, "\t"); + fs.writeFileSync(path.join(pkg.path, "package.json"), json); +} + +/** @returns {~Package[]} */ +function getPackages() { + return getPackagePaths().map(getPackage); +} + +/** @returns {~Package[]} */ +export function getPackagesForPrerelease() { + return getPackages().filter((pkg) => pkg.json["workers-sdk"]?.prerelease); +} + +/** @param {string} pkgName */ +export function getPrereleaseArtifactName(pkgName) { + const name = pkgName.replaceAll("@", "").replaceAll("/", "-"); + return `npm-package-${name}-${githubPullRequestNumber}`; +} + +/** @param {string} pkgName */ +export function getPrereleaseArtifactUrl(pkgName) { + const artifactName = getPrereleaseArtifactName(pkgName); + return `https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/${githubRunId}/${artifactName}`; +} + +/** @param {string} pkgName */ +export function getPrereleasePRArtifactUrl(pkgName) { + const artifactName = getPrereleaseArtifactName(pkgName); + return `https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/prs/${githubPullRequestNumber}/${artifactName}`; +} diff --git a/.github/prereleases/1-versions.mjs b/.github/prereleases/1-versions.mjs new file mode 100644 index 000000000000..7e8bbb7a14de --- /dev/null +++ b/.github/prereleases/1-versions.mjs @@ -0,0 +1,43 @@ +import { execSync } from "node:child_process"; +import { + getPackagesForPrerelease, + getPrereleaseArtifactUrl, + setPackage, +} from "./0-packages.mjs"; + +function getPrereleaseVersion() { + const sha = execSync("git rev-parse --short HEAD", { encoding: "utf8" }); + return `0.0.0-${sha.trim()}`; +} + +/** + * @param {~Package[]} pkgs + * @param {string} newVersion + */ +function updateVersions(pkgs, newVersion) { + for (const pkg of pkgs) pkg.json.version = newVersion; +} + +/** + * @param {~Package[]} pkgs + * @param {string} newVersion + */ +function updateDependencyVersions(pkgs, newVersion) { + const prereleaseNames = new Set(pkgs.map((pkg) => pkg.json.name)); + for (const pkg of pkgs) { + for (const dependency of Object.keys(pkg.json.dependencies ?? {})) { + if (prereleaseNames.has(dependency)) { + pkg.json.dependencies[dependency] = + getPrereleaseArtifactUrl(dependency); + } + } + } +} + +{ + const pkgs = getPackagesForPrerelease(); + const newVersion = getPrereleaseVersion(); + updateVersions(pkgs, newVersion); + updateDependencyVersions(pkgs, newVersion); + pkgs.forEach(setPackage); +} diff --git a/.github/prereleases/2-build-pack-upload.mjs b/.github/prereleases/2-build-pack-upload.mjs new file mode 100644 index 000000000000..e128a530431d --- /dev/null +++ b/.github/prereleases/2-build-pack-upload.mjs @@ -0,0 +1,45 @@ +import assert from "node:assert"; +import { execSync } from "node:child_process"; +import path from "node:path"; +import { DefaultArtifactClient } from "@actions/artifact"; +import { + getPackagesForPrerelease, + getPrereleaseArtifactName, + projectRoot, +} from "./0-packages.mjs"; + +const artifact = new DefaultArtifactClient(); + +function buildAllPackages() { + execSync("pnpm build", { cwd: projectRoot, stdio: "inherit" }); +} + +/** + * @param {~Package} pkg + * @returns {string} + */ +function packPackage(pkg) { + const stdout = execSync("pnpm pack", { cwd: pkg.path, encoding: "utf8" }); + const name = stdout.split("\n").find((line) => line.endsWith(".tgz")); + assert(name !== undefined, `Expected ${stdout} to include tarball name`); + return path.join(pkg.path, name); +} + +/** + * @param {~Package} pkg + * @param {string} tarballPath + */ +async function uploadPackageTarball(pkg, tarballPath) { + const name = getPrereleaseArtifactName(pkg.json.name); + console.log(`Uploading ${tarballPath} as ${name}...`); + await artifact.uploadArtifact(name, [tarballPath], pkg.path); +} + +{ + buildAllPackages(); + const pkgs = getPackagesForPrerelease(); + for (const pkg of pkgs) { + const tarballPath = packPackage(pkg); + await uploadPackageTarball(pkg, tarballPath); + } +} diff --git a/.github/prereleases/3-comment.mjs b/.github/prereleases/3-comment.mjs new file mode 100644 index 000000000000..1463300163f8 --- /dev/null +++ b/.github/prereleases/3-comment.mjs @@ -0,0 +1,90 @@ +import assert from "node:assert"; +import fs from "node:fs"; +import path from "node:path"; +import { DefaultArtifactClient } from "@actions/artifact"; +import { + getPackagesForPrerelease, + getPrereleaseArtifactUrl, + getPrereleasePRArtifactUrl, + projectRoot, +} from "./0-packages.mjs"; + +const artifact = new DefaultArtifactClient(); + +/** + * @param {~Package} pkg + * @returns {string} + */ +function buildWranglerArtifactReport(pkg) { + const name = pkg.json.name; + assert.strictEqual(name, "wrangler"); + const url = getPrereleaseArtifactUrl(name); + const prUrl = getPrereleasePRArtifactUrl(name); + return `A wrangler prerelease is available for testing. You can install this latest build in your project with: + +\`\`\`sh +npm install --save-dev ${url} +\`\`\` + +You can reference the automatically updated head of this PR with: + +\`\`\`sh +npm install --save-dev ${prUrl} +\`\`\` + +Or you can use \`npx\` with this latest build directly: + +\`\`\`sh +npx ${url} dev path/to/script.js +\`\`\``; +} + +/** + * @param {~Package} pkg + * @returns {string} + */ +function buildAdditionalArtifactReport(pkg) { + const name = pkg.json.name; + const url = getPrereleaseArtifactUrl(name); + if (name === "create-cloudflare") { + return `\`\`\`sh\nnpx ${url} --no-auto-update\n\`\`\``; + } else { + return `\`\`\`sh\nnpm install ${url}\n\`\`\``; + } +} + +/** + * @param {~Package[]} pkgs + * @returns {string} + */ +function buildReport(pkgs) { + const wranglerPkgIndex = pkgs.findIndex( + (pkg) => pkg.json.name === "wrangler" + ); + assert(wranglerPkgIndex !== -1, "Expected wrangler to be pre-released"); + const [wranglerPkg] = pkgs.splice(wranglerPkgIndex, 1); + + const wranglerReport = buildWranglerArtifactReport(wranglerPkg); + const additionalReports = pkgs.map(buildAdditionalArtifactReport); + + return `${wranglerReport} + +
Additional artifacts: + +${additionalReports.join("\n\n")} + +Note that these links will no longer work once [the GitHub Actions artifact expires](https://docs.github.com/en/organizations/managing-organization-settings/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-organization). + +
+`; +} + +{ + const pkgs = getPackagesForPrerelease(); + const report = buildReport(pkgs); + const reportName = "prerelease-report.md"; + const reportPath = path.join(projectRoot, reportName); + fs.writeFileSync(reportPath, report); + console.log(`Uploading ${reportPath} as ${reportName}...`); + await artifact.uploadArtifact(reportName, [reportPath], projectRoot); +} diff --git a/.github/workflows/create-pullrequest-prerelease.yml b/.github/workflows/create-pullrequest-prerelease.yml index c15e2db5da30..f2dd1302a62d 100644 --- a/.github/workflows/create-pullrequest-prerelease.yml +++ b/.github/workflows/create-pullrequest-prerelease.yml @@ -51,62 +51,38 @@ jobs: name: runtime-versions.md path: runtime-versions.md - - name: Modify miniflare package.json version - run: node .github/version-script.js miniflare - - - name: Modify wrangler package.json version - run: node .github/version-script.js - - - name: Modify wrangler package.json miniflare dependency - run: cat <<< $(jq --tab ".dependencies.miniflare = \"$MINIFLARE_VERSION\"" packages/wrangler/package.json) > packages/wrangler/package.json - env: - MINIFLARE_VERSION: https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/${{ github.run_id }}/npm-package-miniflare-${{ github.event.number }} - - - name: Build - run: pnpm run build + - name: Expose ACTIONS_RUNTIME_TOKEN and ACTIONS_RESULTS_URL + # We use the `@actions/artifact` package in the prerelease scripts below. + # This is meant to be used from custom JavaScript actions, rather than + # workflow `run` steps. This means it expects `ACTIONS_RUNTIME_TOKEN` + # and `ACTIONS_RESULTS_URL` environment variables to be set. We'd like + # to retain separation between the different stages of pre-releasing, + # and easily pass environment variables to the build. Therefore, we use + # this stub action that exposes the `ACTIONS_RUNTIME_TOKEN` and + # `ACTIONS_RESULTS_URL` action-specific environment variables as + # `GITHUB_ACTIONS_RUNTIME_TOKEN` and `GITHUB_ACTIONS_RESULTS_URL` global + # environment variables. These can be passed via `env` to `run` steps + # that use `@actions/artifact`. + uses: ./.github/actions/expose-actions-variables + + - name: Update versions and dependencies + run: node .github/prereleases/1-versions.mjs + + - name: Build, pack, and upload packages + run: node .github/prereleases/2-build-pack-upload.mjs env: NODE_ENV: "production" ALGOLIA_APP_ID: ${{ secrets.ALGOLIA_APP_ID }} ALGOLIA_PUBLIC_KEY: ${{ secrets.ALGOLIA_PUBLIC_KEY }} SENTRY_DSN: "https://9edbb8417b284aa2bbead9b4c318918b@sentry10.cfdata.org/583" CI_OS: ${{ runner.os }} + # Required by the `@actions/artifact` package + ACTIONS_RUNTIME_TOKEN: ${{ env.GITHUB_ACTIONS_RUNTIME_TOKEN }} + ACTIONS_RESULTS_URL: ${{ env.GITHUB_ACTIONS_RESULTS_URL }} - - name: Pack miniflare - run: pnpm pack - working-directory: packages/miniflare - - - name: Upload packaged miniflare artifact - uses: actions/upload-artifact@v3 - with: - name: npm-package-miniflare-${{ github.event.number }} # encode the PR number into the artifact name - path: packages/miniflare/miniflare-*.tgz - - - name: Pack wrangler - run: pnpm pack - working-directory: packages/wrangler - - - name: Upload packaged wrangler artifact - uses: actions/upload-artifact@v3 - with: - name: npm-package-wrangler-${{ github.event.number }} # encode the PR number into the artifact name - path: packages/wrangler/wrangler-*.tgz - - - name: Pack @cloudflare/pages-shared - run: pnpm pack - working-directory: packages/pages-shared - - - name: Upload packaged @cloudflare/pages-shared artifact - uses: actions/upload-artifact@v3 - with: - name: npm-package-cloudflare-pages-shared-${{ github.event.number }} # encode the PR number into the artifact name - path: packages/pages-shared/cloudflare-pages-shared-*.tgz - - - name: Pack @cloudflare/create-cloudflare - run: pnpm pack - working-directory: packages/create-cloudflare - - - name: Upload packaged @cloudflare/create-cloudflare artifact - uses: actions/upload-artifact@v3 - with: - name: npm-package-create-cloudflare-${{ github.event.number }} # encode the PR number into the artifact name - path: packages/create-cloudflare/create-cloudflare-*.tgz + - name: Build and upload prerelease comment + run: node .github/prereleases/3-comment.mjs + env: + # Required by the `@actions/artifact` package + ACTIONS_RUNTIME_TOKEN: ${{ env.GITHUB_ACTIONS_RUNTIME_TOKEN }} + ACTIONS_RESULTS_URL: ${{ env.GITHUB_ACTIONS_RESULTS_URL }} diff --git a/.github/workflows/write-prerelease-comment.yml b/.github/workflows/write-prerelease-comment.yml index 368bdb78636c..6c3c976b1fc3 100644 --- a/.github/workflows/write-prerelease-comment.yml +++ b/.github/workflows/write-prerelease-comment.yml @@ -53,50 +53,27 @@ jobs: echo EOF } >> "$GITHUB_ENV" - - name: "Comment on PR with Wrangler link" - env: - WORKFLOW_RUN_PR_FOR_WRANGLER: ${{env.WORKFLOW_RUN_PR_FOR_WRANGLER || env.WORKFLOW_RUN_PR_FOR_CLOUDFLARE-PAGES-SHARED}} - WORKFLOW_RUN_ID_FOR_WRANGLER: ${{env.WORKFLOW_RUN_ID_FOR_WRANGLER || env.WORKFLOW_RUN_ID_FOR_CLOUDFLARE-PAGES-SHARED}} + - name: "Download pre-release report" + uses: dawidd6/action-download-artifact@v2 + with: + run_id: ${{ github.event.workflow_run.id }} + name: prerelease-report.md + - name: "Put pre-release report on the environment" + id: prerelease_report + run: | + { + echo 'PRERELEASE_REPORT<> "$GITHUB_ENV" + + - name: "Comment on PR with Wrangler link" uses: marocchino/sticky-pull-request-comment@v2 with: number: ${{ env.WORKFLOW_RUN_PR_FOR_WRANGLER }} message: | - A wrangler prerelease is available for testing. You can install this latest build in your project with: - - ```sh - npm install --save-dev https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/${{ env.WORKFLOW_RUN_ID_FOR_WRANGLER }}/npm-package-wrangler-${{ env.WORKFLOW_RUN_PR_FOR_WRANGLER }} - ``` - - You can reference the automatically updated head of this PR with: - - ```sh - npm install --save-dev https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/prs/${{ env.WORKFLOW_RUN_ID_FOR_WRANGLER }}/npm-package-wrangler-${{ env.WORKFLOW_RUN_PR_FOR_WRANGLER }} - ``` - - Or you can use `npx` with this latest build directly: - - ```sh - npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/${{ env.WORKFLOW_RUN_ID_FOR_WRANGLER }}/npm-package-wrangler-${{ env.WORKFLOW_RUN_PR_FOR_WRANGLER }} dev path/to/script.js - ``` - -
Additional artifacts: - - ```sh - npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/${{ env.WORKFLOW_RUN_ID_FOR_WRANGLER }}/npm-package-miniflare-${{ env.WORKFLOW_RUN_PR_FOR_WRANGLER }} - ``` - - ```sh - npm install https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/${{ env.WORKFLOW_RUN_ID_FOR_WRANGLER }}/npm-package-cloudflare-pages-shared-${{ env.WORKFLOW_RUN_PR_FOR_WRANGLER }} - ``` - - ```sh - npx https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/${{ env.WORKFLOW_RUN_ID_FOR_WRANGLER }}/npm-package-create-cloudflare-${{ env.WORKFLOW_RUN_PR_FOR_WRANGLER }} --no-auto-update - ``` - - Note that these links will no longer work once [the GitHub Actions artifact expires](https://docs.github.com/en/organizations/managing-organization-settings/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-organization). - -
+ ${{ env.PRERELEASE_REPORT }} --- diff --git a/package.json b/package.json index 05bd57e0e9dc..cbf9500ee8b4 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "vitest": "^0.34.6" }, "devDependencies": { + "@actions/artifact": "^2.0.1", "@cloudflare/workers-types": "^4.20230821.0", "@turbo/gen": "^1.10.13", "dotenv-cli": "^7.3.0", diff --git a/packages/create-cloudflare/package.json b/packages/create-cloudflare/package.json index 41ce2bef078c..99c8d3806c91 100644 --- a/packages/create-cloudflare/package.json +++ b/packages/create-cloudflare/package.json @@ -84,5 +84,8 @@ }, "engines": { "node": ">=18.14.1" + }, + "workers-sdk": { + "prerelease": true } } diff --git a/packages/miniflare/package.json b/packages/miniflare/package.json index 8b52891924bd..2d7504ca8f88 100644 --- a/packages/miniflare/package.json +++ b/packages/miniflare/package.json @@ -97,5 +97,8 @@ }, "publishConfig": { "access": "public" + }, + "workers-sdk": { + "prerelease": true } } diff --git a/packages/pages-shared/package.json b/packages/pages-shared/package.json index fb2ca2fc1d24..93eac6cdd245 100644 --- a/packages/pages-shared/package.json +++ b/packages/pages-shared/package.json @@ -27,5 +27,8 @@ "concurrently": "^7.3.0", "glob": "^8.0.3", "service-worker-mock": "^2.0.5" + }, + "workers-sdk": { + "prerelease": true } } diff --git a/packages/wrangler/package.json b/packages/wrangler/package.json index 83d7f2ade407..a8002a75e3f2 100644 --- a/packages/wrangler/package.json +++ b/packages/wrangler/package.json @@ -213,5 +213,8 @@ }, "engines": { "node": ">=16.17.0" + }, + "workers-sdk": { + "prerelease": true } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a6a418500979..da0f1b7eee85 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,6 +71,9 @@ importers: specifier: ^0.34.6 version: 0.34.6 devDependencies: + '@actions/artifact': + specifier: ^2.0.1 + version: 2.0.1 '@cloudflare/workers-types': specifier: ^4.20230821.0 version: 4.20230821.0 @@ -1603,6 +1606,53 @@ packages: resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} + /@actions/artifact@2.0.1: + resolution: {integrity: sha512-MGgWRU4n4yoGQ5NbfwKWl3whSuFG/ll2FZ1au+jAiOIykKk+dnTFMuiklomsD6yx56ZnkQTVa/0Se5N0T0f6Nw==} + dependencies: + '@actions/core': 1.10.1 + '@actions/github': 5.1.1 + '@actions/http-client': 2.2.0 + '@azure/storage-blob': 12.17.0 + '@octokit/core': 3.6.0 + '@octokit/plugin-request-log': 1.0.4(@octokit/core@3.6.0) + '@octokit/plugin-retry': 3.0.9 + '@octokit/request-error': 5.0.1 + '@protobuf-ts/plugin': 2.9.3 + archiver: 5.3.2 + crypto: 1.0.1 + jwt-decode: 3.1.2 + twirp-ts: 2.5.0(@protobuf-ts/plugin@2.9.3) + unzip-stream: 0.3.1 + transitivePeerDependencies: + - encoding + - ts-proto + dev: true + + /@actions/core@1.10.1: + resolution: {integrity: sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==} + dependencies: + '@actions/http-client': 2.2.0 + uuid: 8.3.2 + dev: true + + /@actions/github@5.1.1: + resolution: {integrity: sha512-Nk59rMDoJaV+mHCOJPXuvB1zIbomlKS0dmSIqPGxd0enAXBnOfn4VWF+CGtRCwXZG9Epa54tZA7VIRlJDS8A6g==} + dependencies: + '@actions/http-client': 2.2.0 + '@octokit/core': 3.6.0 + '@octokit/plugin-paginate-rest': 2.21.3(@octokit/core@3.6.0) + '@octokit/plugin-rest-endpoint-methods': 5.16.2(@octokit/core@3.6.0) + transitivePeerDependencies: + - encoding + dev: true + + /@actions/http-client@2.2.0: + resolution: {integrity: sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg==} + dependencies: + tunnel: 0.0.6 + undici: 5.28.2 + dev: true + /@ampproject/remapping@2.2.0: resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} engines: {node: '>=6.0.0'} @@ -1619,6 +1669,100 @@ packages: execa: 7.1.1 dev: true + /@azure/abort-controller@1.1.0: + resolution: {integrity: sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==} + engines: {node: '>=12.0.0'} + dependencies: + tslib: 2.5.3 + dev: true + + /@azure/core-auth@1.5.0: + resolution: {integrity: sha512-udzoBuYG1VBoHVohDTrvKjyzel34zt77Bhp7dQntVGGD0ehVq48owENbBG8fIgkHRNUBQH5k1r0hpoMu5L8+kw==} + engines: {node: '>=14.0.0'} + dependencies: + '@azure/abort-controller': 1.1.0 + '@azure/core-util': 1.6.1 + tslib: 2.5.3 + dev: true + + /@azure/core-http@3.0.4: + resolution: {integrity: sha512-Fok9VVhMdxAFOtqiiAtg74fL0UJkt0z3D+ouUUxcRLzZNBioPRAMJFVxiWoJljYpXsRi4GDQHzQHDc9AiYaIUQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@azure/abort-controller': 1.1.0 + '@azure/core-auth': 1.5.0 + '@azure/core-tracing': 1.0.0-preview.13 + '@azure/core-util': 1.6.1 + '@azure/logger': 1.0.4 + '@types/node-fetch': 2.6.11 + '@types/tunnel': 0.0.3 + form-data: 4.0.0 + node-fetch: 2.6.11 + process: 0.11.10 + tslib: 2.5.3 + tunnel: 0.0.6 + uuid: 8.3.2 + xml2js: 0.5.0 + transitivePeerDependencies: + - encoding + dev: true + + /@azure/core-lro@2.5.4: + resolution: {integrity: sha512-3GJiMVH7/10bulzOKGrrLeG/uCBH/9VtxqaMcB9lIqAeamI/xYQSHJL/KcsLDuH+yTjYpro/u6D/MuRe4dN70Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@azure/abort-controller': 1.1.0 + '@azure/core-util': 1.6.1 + '@azure/logger': 1.0.4 + tslib: 2.5.3 + dev: true + + /@azure/core-paging@1.5.0: + resolution: {integrity: sha512-zqWdVIt+2Z+3wqxEOGzR5hXFZ8MGKK52x4vFLw8n58pR6ZfKRx3EXYTxTaYxYHc/PexPUTyimcTWFJbji9Z6Iw==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.5.3 + dev: true + + /@azure/core-tracing@1.0.0-preview.13: + resolution: {integrity: sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==} + engines: {node: '>=12.0.0'} + dependencies: + '@opentelemetry/api': 1.7.0 + tslib: 2.5.3 + dev: true + + /@azure/core-util@1.6.1: + resolution: {integrity: sha512-h5taHeySlsV9qxuK64KZxy4iln1BtMYlNt5jbuEFN3UFSAd1EwKg/Gjl5a6tZ/W8t6li3xPnutOx7zbDyXnPmQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@azure/abort-controller': 1.1.0 + tslib: 2.5.3 + dev: true + + /@azure/logger@1.0.4: + resolution: {integrity: sha512-ustrPY8MryhloQj7OWGe+HrYx+aoiOxzbXTtgblbV3xwCqpzUK36phH3XNHQKj3EPonyFUuDTfR3qFhTEAuZEg==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.5.3 + dev: true + + /@azure/storage-blob@12.17.0: + resolution: {integrity: sha512-sM4vpsCpcCApagRW5UIjQNlNylo02my2opgp0Emi8x888hZUvJ3dN69Oq20cEGXkMUWnoCrBaB0zyS3yeB87sQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@azure/abort-controller': 1.1.0 + '@azure/core-http': 3.0.4 + '@azure/core-lro': 2.5.4 + '@azure/core-paging': 1.5.0 + '@azure/core-tracing': 1.0.0-preview.13 + '@azure/logger': 1.0.4 + events: 3.3.0 + tslib: 2.5.3 + transitivePeerDependencies: + - encoding + dev: true + /@babel/code-frame@7.22.13: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} @@ -5462,10 +5606,137 @@ packages: json-parse-even-better-errors: 2.3.1 dev: true + /@octokit/auth-token@2.5.0: + resolution: {integrity: sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==} + dependencies: + '@octokit/types': 6.41.0 + dev: true + + /@octokit/core@3.6.0: + resolution: {integrity: sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==} + dependencies: + '@octokit/auth-token': 2.5.0 + '@octokit/graphql': 4.8.0 + '@octokit/request': 5.6.3 + '@octokit/request-error': 2.1.0 + '@octokit/types': 6.41.0 + before-after-hook: 2.2.3 + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + dev: true + + /@octokit/endpoint@6.0.12: + resolution: {integrity: sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==} + dependencies: + '@octokit/types': 6.41.0 + is-plain-object: 5.0.0 + universal-user-agent: 6.0.1 + dev: true + + /@octokit/graphql@4.8.0: + resolution: {integrity: sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==} + dependencies: + '@octokit/request': 5.6.3 + '@octokit/types': 6.41.0 + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + dev: true + + /@octokit/openapi-types@12.11.0: + resolution: {integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==} + dev: true + + /@octokit/openapi-types@19.1.0: + resolution: {integrity: sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw==} + dev: true + + /@octokit/plugin-paginate-rest@2.21.3(@octokit/core@3.6.0): + resolution: {integrity: sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==} + peerDependencies: + '@octokit/core': '>=2' + dependencies: + '@octokit/core': 3.6.0 + '@octokit/types': 6.41.0 + dev: true + + /@octokit/plugin-request-log@1.0.4(@octokit/core@3.6.0): + resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} + peerDependencies: + '@octokit/core': '>=3' + dependencies: + '@octokit/core': 3.6.0 + dev: true + + /@octokit/plugin-rest-endpoint-methods@5.16.2(@octokit/core@3.6.0): + resolution: {integrity: sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==} + peerDependencies: + '@octokit/core': '>=3' + dependencies: + '@octokit/core': 3.6.0 + '@octokit/types': 6.41.0 + deprecation: 2.3.1 + dev: true + + /@octokit/plugin-retry@3.0.9: + resolution: {integrity: sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ==} + dependencies: + '@octokit/types': 6.41.0 + bottleneck: 2.19.5 + dev: true + + /@octokit/request-error@2.1.0: + resolution: {integrity: sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==} + dependencies: + '@octokit/types': 6.41.0 + deprecation: 2.3.1 + once: 1.4.0 + dev: true + + /@octokit/request-error@5.0.1: + resolution: {integrity: sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==} + engines: {node: '>= 18'} + dependencies: + '@octokit/types': 12.4.0 + deprecation: 2.3.1 + once: 1.4.0 + dev: true + + /@octokit/request@5.6.3: + resolution: {integrity: sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==} + dependencies: + '@octokit/endpoint': 6.0.12 + '@octokit/request-error': 2.1.0 + '@octokit/types': 6.41.0 + is-plain-object: 5.0.0 + node-fetch: 2.6.11 + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + dev: true + + /@octokit/types@12.4.0: + resolution: {integrity: sha512-FLWs/AvZllw/AGVs+nJ+ELCDZZJk+kY0zMen118xhL2zD0s1etIUHm1odgjP7epxYU1ln7SZxEUWYop5bhsdgQ==} + dependencies: + '@octokit/openapi-types': 19.1.0 + dev: true + + /@octokit/types@6.41.0: + resolution: {integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==} + dependencies: + '@octokit/openapi-types': 12.11.0 + dev: true + /@open-draft/until@1.0.3: resolution: {integrity: sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==} dev: true + /@opentelemetry/api@1.7.0: + resolution: {integrity: sha512-AdY5wvN0P2vXBi3b29hxZgSFvdhdxPB9+f0B6s//P9Q8nibRWeA3cHm8UmLpio9ABigkVHJ5NMPk+Mz8VCCyrw==} + engines: {node: '>=8.0.0'} + dev: true + /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -5484,6 +5755,39 @@ packages: tslib: 2.5.3 dev: true + /@protobuf-ts/plugin-framework@2.9.3: + resolution: {integrity: sha512-iqdkhAu7fGPvBCVOoAEEFJ1/oaGIBoNIMgSv2WonTNJVHxv5FvvAfWFn6nG/eta34fHRZT38ZXTaYcMUkv8AiQ==} + dependencies: + '@protobuf-ts/runtime': 2.9.3 + typescript: 3.9.10 + dev: true + + /@protobuf-ts/plugin@2.9.3: + resolution: {integrity: sha512-tHYACv+nnIV2eoiMxeZhrgMqGiUktzUzrhfgnROg/rr8TecPLp9v5/yqNibN+bad5k7d57aqlTuQKhFl+J4W/g==} + hasBin: true + 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 + typescript: 3.9.10 + dev: true + + /@protobuf-ts/protoc@2.9.3: + resolution: {integrity: sha512-TJ0Ycx/CIBqpB4wpKt6K05kjXj6zv36s/qpdCT/wdJBhpayOVBqLF5NpLp3WIiw1PmIxvqalB6QHKjvnLzGKLA==} + hasBin: true + dev: true + + /@protobuf-ts/runtime-rpc@2.9.3: + resolution: {integrity: sha512-WelHpctvZeG8yhbb7tnsrLzotq9xjMCXuGuhJ8qMyEdNoBBEodbXseofAYFTebo2/PN2LzyEq3X6vwr5f8jqTA==} + dependencies: + '@protobuf-ts/runtime': 2.9.3 + dev: true + + /@protobuf-ts/runtime@2.9.3: + resolution: {integrity: sha512-nivzCpg/qYD0RX2OmHOahJALb8ndjGmUhNBcTJ0BbXoqKwCSM6vYA+vegzS3rhuaPgbyC7Ec8idlnizzUfIRuw==} + dev: true + /@radix-ui/number@1.0.1: resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} dependencies: @@ -6453,6 +6757,13 @@ packages: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: true + /@types/node-fetch@2.6.11: + resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} + dependencies: + '@types/node': 18.16.10 + form-data: 4.0.0 + dev: true + /@types/node-polyglot@2.4.2: resolution: {integrity: sha512-Tfx3TU/PBK8vW/BG1TK793EHlVpGnoHUj+DGxOwNOYwZiueLeu7FgksvDdpEyFSw4+AKKiEuiMm8EGUHUR4o6g==} dev: false @@ -6622,6 +6933,12 @@ packages: resolution: {integrity: sha512-FYK4mlLxUUajo/mblv7EUDHku20qT6ThYNsGZsTHilcHRvIkF8WXqtZO+DVTYkpHWCaAT97LueV59H/5Ve3bGA==} dev: true + /@types/tunnel@0.0.3: + resolution: {integrity: sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==} + dependencies: + '@types/node': 18.16.10 + dev: true + /@types/unist@2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: true @@ -7701,6 +8018,51 @@ packages: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} dev: true + /archiver-utils@2.1.0: + resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} + engines: {node: '>= 6'} + dependencies: + glob: 7.2.0 + graceful-fs: 4.2.9 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 2.3.7 + dev: true + + /archiver-utils@3.0.4: + resolution: {integrity: sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==} + engines: {node: '>= 10'} + dependencies: + glob: 7.2.3 + graceful-fs: 4.2.9 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 3.6.0 + dev: true + + /archiver@5.3.2: + resolution: {integrity: sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==} + engines: {node: '>= 10'} + dependencies: + archiver-utils: 2.1.0 + async: 3.2.5 + buffer-crc32: 0.2.13 + readable-stream: 3.6.0 + readdir-glob: 1.1.3 + tar-stream: 2.2.0 + zip-stream: 4.1.1 + dev: true + /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true @@ -7894,12 +8256,20 @@ packages: hasBin: true dev: true + /async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + dev: true + /asynciterator.prototype@1.0.0: resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} dependencies: has-symbols: 1.0.3 dev: false + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + /at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} @@ -8166,6 +8536,10 @@ packages: engines: {node: '>=10.0.0'} dev: true + /before-after-hook@2.2.3: + resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} + dev: true + /better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} @@ -8186,6 +8560,13 @@ packages: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} + /binary@0.3.0: + resolution: {integrity: sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==} + dependencies: + buffers: 0.1.1 + chainsaw: 0.1.0 + dev: true + /bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} requiresBuild: true @@ -8234,6 +8615,10 @@ packages: resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} dev: true + /bottleneck@2.19.5: + resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} + dev: true + /bplist-parser@0.2.0: resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} engines: {node: '>= 5.10.0'} @@ -8309,6 +8694,10 @@ packages: node-int64: 0.4.0 dev: true + /buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: true + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true @@ -8327,6 +8716,11 @@ packages: ieee754: 1.2.1 dev: true + /buffers@0.1.1: + resolution: {integrity: sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==} + engines: {node: '>=0.2.0'} + dev: true + /builtins@5.0.1: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} dependencies: @@ -8456,6 +8850,13 @@ packages: upper-case: 1.1.3 dev: true + /camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + dependencies: + pascal-case: 3.1.2 + tslib: 2.5.3 + dev: true + /camelcase-keys@6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} @@ -8540,6 +8941,12 @@ packages: type-detect: 4.0.8 dev: false + /chainsaw@0.1.0: + resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==} + dependencies: + traverse: 0.3.9 + dev: true + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -8874,6 +9281,13 @@ packages: engines: {node: '>=0.1.90'} dev: true + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + /comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} dev: true @@ -8893,6 +9307,11 @@ packages: dev: true optional: true + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + /common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} dev: true @@ -8901,6 +9320,16 @@ packages: resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} dev: true + /compress-commons@4.1.2: + resolution: {integrity: sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==} + engines: {node: '>= 10'} + dependencies: + buffer-crc32: 0.2.13 + crc32-stream: 4.0.3 + normalize-path: 3.0.0 + readable-stream: 3.6.0 + dev: true + /compute-scroll-into-view@1.0.20: resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} dev: false @@ -9061,6 +9490,20 @@ packages: /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + /crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + dev: true + + /crc32-stream@4.0.3: + resolution: {integrity: sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==} + engines: {node: '>= 10'} + dependencies: + crc-32: 1.2.2 + readable-stream: 3.6.0 + dev: true + /create-jest@29.7.0(@types/node@20.1.7)(supports-color@9.2.2): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9127,6 +9570,11 @@ packages: shebang-command: 2.0.0 which: 2.0.2 + /crypto@1.0.1: + resolution: {integrity: sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==} + deprecated: This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in. + dev: true + /css-in-js-utils@2.0.1: resolution: {integrity: sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==} dependencies: @@ -9487,6 +9935,11 @@ packages: engines: {node: '>=10'} dev: true + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + /denque@1.5.1: resolution: {integrity: sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==} engines: {node: '>=0.10'} @@ -9497,6 +9950,10 @@ packages: engines: {node: '>= 0.8'} dev: true + /deprecation@2.3.1: + resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} + dev: true + /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -9584,6 +10041,14 @@ packages: no-case: 2.3.2 dev: true + /dot-object@2.1.4: + resolution: {integrity: sha512-7FXnyyCLFawNYJ+NhkqyP9Wd2yzuo+7n9pGiYpkmXCTYa8Ci2U0eUNDVg5OuO5Pm6aFXI2SWN8/N/w7SJWu1WA==} + hasBin: true + dependencies: + commander: 4.1.1 + glob: 7.2.0 + dev: true + /dotenv-cli@7.3.0: resolution: {integrity: sha512-314CA4TyK34YEJ6ntBf80eUY+t1XaFLyem1k9P0sX1gn30qThZ5qZr/ZwE318gEnzyYP9yj9HJk6SqwE0upkfw==} hasBin: true @@ -11300,6 +11765,15 @@ packages: cross-spawn: 7.0.3 signal-exit: 4.0.2 + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + /format@0.2.2: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} @@ -11574,6 +12048,17 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + /glob@8.0.3: resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} engines: {node: '>=12'} @@ -13453,6 +13938,10 @@ packages: setimmediate: 1.0.5 dev: false + /jwt-decode@3.1.2: + resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==} + dev: true + /keyv@4.5.2: resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==} dependencies: @@ -13508,6 +13997,13 @@ packages: language-subtag-registry: 0.3.22 dev: true + /lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + dependencies: + readable-stream: 2.3.7 + dev: true + /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -13631,9 +14127,12 @@ packages: /lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + /lodash.difference@4.5.0: + resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} + dev: true + /lodash.flatten@4.4.0: resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} - dev: false /lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} @@ -13658,6 +14157,10 @@ packages: lodash.keysin: 3.0.8 dev: true + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: true + /lodash.keysin@3.0.8: resolution: {integrity: sha512-YDB/5xkL3fBKFMDaC+cfGV00pbiJ6XoJIfRmBhv7aR6wWtbCW6IzkiWnTfkiHTF6ALD7ff83dAtB3OEaSoyQPg==} dependencies: @@ -13676,6 +14179,10 @@ packages: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: false + /lodash.union@4.6.0: + resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} + dev: true + /lodash.uniqueid@4.0.1: resolution: {integrity: sha512-GQQWaIeGlL6DIIr06kj1j6sSmBxyNMwI8kaX9aKpHR/XsMTiaXDVPNPAkiboOTK9OJpTJF/dXT3xYoFQnj386Q==} dev: false @@ -13735,6 +14242,12 @@ packages: resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} dev: true + /lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + dependencies: + tslib: 2.5.3 + dev: true + /lowercase-keys@2.0.0: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} engines: {node: '>=8'} @@ -14697,6 +15210,13 @@ packages: lower-case: 1.1.4 dev: true + /no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + dependencies: + lower-case: 2.0.2 + tslib: 2.5.3 + dev: true + /node-addon-api@1.7.2: resolution: {integrity: sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==} requiresBuild: true @@ -15354,6 +15874,13 @@ packages: upper-case-first: 1.1.2 dev: true + /pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + dependencies: + no-case: 3.0.4 + tslib: 2.5.3 + dev: true + /pascalcase@0.1.1: resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} engines: {node: '>=0.10.0'} @@ -15765,6 +16292,11 @@ packages: /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: true + /promise-inflight@1.0.1: resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} peerDependencies: @@ -16255,6 +16787,12 @@ packages: util-deprecate: 1.0.2 dev: true + /readdir-glob@1.1.3: + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + dependencies: + minimatch: 5.1.1 + dev: true + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -16772,6 +17310,10 @@ packages: - supports-color dev: true + /sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + dev: true + /scheduler@0.20.2: resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} dependencies: @@ -17764,6 +18306,10 @@ packages: /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + /traverse@0.3.9: + resolution: {integrity: sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==} + dev: true + /tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -17832,6 +18378,13 @@ packages: yn: 3.1.1 dev: true + /ts-poet@4.15.0: + resolution: {integrity: sha512-sLLR8yQBvHzi9d4R1F4pd+AzQxBfzOSSjfxiJxQhkUoH5bL7RsAC6wgvtVUQdGqiCsyS9rT6/8X2FI7ipdir5g==} + dependencies: + lodash: 4.17.21 + prettier: 2.7.1 + dev: true + /tsconfck@2.1.1(typescript@5.0.3): resolution: {integrity: sha512-ZPCkJBKASZBmBUNqGHmRhdhM8pJYDdOXp4nRgj/O0JwUwsMq50lCDRQP/M5GBNAA0elPrq4gAeu4dkaVCuKWww==} engines: {node: ^14.13.1 || ^16 || >=18} @@ -17922,6 +18475,11 @@ packages: yargs: 15.4.1 dev: false + /tunnel@0.0.6: + resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} + engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + dev: true + /turbo-darwin-64@1.10.14: resolution: {integrity: sha512-I8RtFk1b9UILAExPdG/XRgGQz95nmXPE7OiGb6ytjtNIR5/UZBS/xVX/7HYpCdmfriKdVwBKhalCoV4oDvAGEg==} cpu: [x64] @@ -17982,6 +18540,27 @@ packages: turbo-windows-arm64: 1.10.14 dev: true + /twirp-ts@2.5.0(@protobuf-ts/plugin@2.9.3): + resolution: {integrity: sha512-JTKIK5Pf/+3qCrmYDFlqcPPUx+ohEWKBaZy8GL8TmvV2VvC0SXVyNYILO39+GCRbqnuP6hBIF+BVr8ZxRz+6fw==} + hasBin: true + peerDependencies: + '@protobuf-ts/plugin': ^2.5.0 + ts-proto: ^1.81.3 + peerDependenciesMeta: + '@protobuf-ts/plugin': + optional: true + ts-proto: + optional: true + dependencies: + '@protobuf-ts/plugin': 2.9.3 + '@protobuf-ts/plugin-framework': 2.9.3 + camel-case: 4.1.2 + dot-object: 2.1.4 + path-to-regexp: 6.2.0 + ts-poet: 4.15.0 + yaml: 1.10.2 + dev: true + /type-check@0.3.2: resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} @@ -18090,6 +18669,12 @@ packages: is-typedarray: 1.0.0 dev: true + /typescript@3.9.10: + resolution: {integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + /typescript@4.2.4: resolution: {integrity: sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==} engines: {node: '>=4.2.0'} @@ -18287,6 +18872,10 @@ packages: unist-util-visit-parents: 5.1.1 dev: true + /universal-user-agent@6.0.1: + resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} + dev: true + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -18314,6 +18903,13 @@ packages: engines: {node: '>=8'} dev: true + /unzip-stream@0.3.1: + resolution: {integrity: sha512-RzaGXLNt+CW+T41h1zl6pGz3EaeVhYlK+rdAap+7DxW5kqsqePO8kRtWPaCiVqdhZc86EctSPVYNix30YOMzmw==} + dependencies: + binary: 0.3.0 + mkdirp: 0.5.6 + dev: true + /update-browserslist-db@1.0.11(browserslist@4.21.10): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true @@ -18398,6 +18994,11 @@ packages: engines: {node: '>= 0.4.0'} dev: true + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: true + /uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true @@ -18990,6 +19591,19 @@ packages: - supports-color dev: true + /xml2js@0.5.0: + resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} + engines: {node: '>=4.0.0'} + dependencies: + sax: 1.3.0 + xmlbuilder: 11.0.1 + dev: true + + /xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + dev: true + /xregexp@2.0.0: resolution: {integrity: sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA==} dev: true @@ -19135,6 +19749,15 @@ packages: commander: 2.20.3 dev: true + /zip-stream@4.1.1: + resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==} + engines: {node: '>= 10'} + dependencies: + archiver-utils: 3.0.4 + compress-commons: 4.1.2 + readable-stream: 3.6.0 + dev: true + /zod@3.22.3: resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==}