From 609704869c5d38e6ee3306e7deb62fcf8a564e4b Mon Sep 17 00:00:00 2001 From: Tim Beyer Date: Thu, 9 Nov 2023 19:16:53 +0100 Subject: [PATCH] chore: bump to node 21.1.0 (#5361) * chore: bump to node 21.1.0 * chore: fix linter complaint * chore: use new npm modules cache * fix: ts-node/esm module loader * fix: try to see if an explicit import hook register works to fix ts-node esm performance * chore: fix shebang lines * fix: install nodejs using fnm (if needed) * fix: checksum * fix: use getAbi correctly * chore: test nodejs version as separate step * fix: make nodejs install work with machine executor * chore: update node-pty-prebuilt-multiarch to 0.11.10 Apparently the NPM package name changed; I opened an issue upstream to clarify because the github repo still links to the old NPM repo. https://github.com/homebridge/node-pty-prebuilt-multiarch/issues/31 * chore: bump typescript types and eslint packages * chore: make no-explicit-any a warning only * fix: consistent versions for node-pty-multiarch * fix: alpine docker sha hash * fix: clean up unwanted log messages in the release binary * fix: musl checksum * fix: avoid issues due to cache poisoning * fix: wait until write stream is finished Co-authored-by: Tim Beyer * fix: use pipeline to await until write stream really finished * fix: properly implement streaming * chore: update circleci machine image * fix: add env var UV_USE_IO_URING=0 to avoid kernel bug Libuv 1.45.0 is affected by a kernel bug on certain kernels (Ubuntu 22) This leads to errors where Garden tool downloading errors with ETXTBSY Apparently file descriptor accounting is broken when using USE_IO_URING on older kernels See also https://github.com/libuv/libuv/pull/4141 * fix: tested error message became more detailed --------- Co-authored-by: Steffen Neubauer Co-authored-by: Tim Beyer Co-authored-by: Garden CI --- .circleci/continue-config.yml | 73 +- .eslintrc | 3 +- .github/workflows/publish-release.yml | 4 +- .nvmrc | 2 +- cli/bin/garden-debug.js | 2 +- cli/src/build-pkg.ts | 204 +- core/package.json | 12 +- core/src/commands/self-update.ts | 16 +- .../plugins/kubernetes/commands/pull-image.ts | 3 + core/src/server/server.ts | 4 +- core/src/util/ext-tools.ts | 102 +- core/test/unit/src/template-string.ts | 2 +- e2e/package.json | 4 +- garden-sea/src/node.rs | 9 + images/circleci-runner/Dockerfile | 4 +- images/circleci-runner/garden.yml | 2 +- package-lock.json | 1639 +++++++---------- package.json | 12 +- plugins/conftest-container/package.json | 2 +- plugins/conftest-kubernetes/package.json | 2 +- plugins/conftest/package.json | 2 +- plugins/jib/package.json | 2 +- plugins/pulumi/package.json | 2 +- .../k8s-deployment/package.json | 2 +- .../k8s-namespace/package.json | 2 +- plugins/terraform/package.json | 2 +- rollup.config.js | 8 + scripts/changelog.ts | 2 +- scripts/check-package-licenses.ts | 2 +- scripts/convert-jsonl-log.ts | 2 +- scripts/draft-release-notes.ts | 2 +- scripts/register-hook.js | 17 + scripts/release.ts | 19 +- scripts/run-script.ts | 5 +- sdk/package.json | 4 +- support/alpine.Dockerfile | 7 +- support/debian.Dockerfile | 5 +- 37 files changed, 956 insertions(+), 1230 deletions(-) create mode 100644 scripts/register-hook.js diff --git a/.circleci/continue-config.yml b/.circleci/continue-config.yml index a881d946d1..4fdf5d040d 100644 --- a/.circleci/continue-config.yml +++ b/.circleci/continue-config.yml @@ -4,7 +4,6 @@ version: 2.1 orbs: win: circleci/windows@2.2.0 rok8s-scripts: fairwinds/rok8s-scripts@11.1.3 - node: circleci/node@5.1.0 macos: circleci/macos@2.4.0 parameters: @@ -21,8 +20,16 @@ parameters: GARDEN_DISABLE_ANALYTICS: "true" GARDEN_K8S_BUILD_SYNC_MODE: "mutagen" + # Libuv 1.45.0 is affected by a kernel bug on certain kernels (Ubuntu 22) + # This leads to errors where Garden tool downloading errors with ETXTBSY + # Apparently file descriptor accounting is broken when using USE_IO_URING on older kernels + # See also: https://github.com/libuv/libuv/pull/4141/files + # TODO: Remove this once libuv 1.47 landed in a future NodeJS version, and we upgraded to it. + UV_USE_IO_URING: "0" + + ubuntu-vm-runner: &ubuntu-vm-runner - image: "ubuntu-2204:2023.02.1" + image: "ubuntu-2204:2023.10.1" docker_layer_caching: true remote-docker: &remote-docker @@ -31,7 +38,7 @@ parameters: docker_layer_caching: true runner-image: &runner-image - image: gardendev/circleci-runner:18.15.0-1@sha256:c830e29ab30a1c5b08cba4d041d3325ef6958aebeba1b10b1ee9566d7b1a4d42 + image: gardendev/circleci-runner:21.1.0-1@sha256:1b773f6fcde1d9b65cb8a609c823076b3048104e73f04247e0fd86aa9bcc92dd # Configuration for our node jobs docker-runner: &docker-runner @@ -98,23 +105,58 @@ commands: context: description: Set this to vm if installing in a VM, to avoid conflicting caches with the docker runs type: string + node_version: + description: The node version to use + type: string + default: v21.1.0 steps: # See also https://github.com/CircleCI-Public/node-orb/issues/158#issuecomment-1461095390 - - run: rm -rf ~/.npm + - run: rm -rf ~/.npm ~/.fnm + - restore_cache: keys: # Prefer using the NPM cache for the package-lock hash, but fall back to any other cache too - - npm-v4-<>-{{ checksum "package-lock.json" }} + - npm-v7-<>-{{ checksum "package-lock.json" }} # If you uncomment the next line, we also restore caches if package-lock.json changed in case there is no exact match. # We decided not to do that for now for enhanced safety: Every time we update the lock file, we build the caches from scratch. Might be a little paranoid, but hardens against possible NPM bugs. - #- npm-v4-<> + #- npm-v7-<> + + - run: + name: Install NodeJS + command: | + if [[ "$(node --version)" != "<>" ]]; then + export PATH="$HOME/.fnm:$PATH" + echo 'export PATH="$HOME/.fnm:$PATH"' >> $BASH_ENV + + # Install fnm if it's not already installed + if which fnm; then + echo "Using cached fnm installation" + else + curl -fsSL https://raw.githubusercontent.com/Schniz/fnm/9d0dd1b04521ac4a1c25bb91a65323dbb691e40c/.ci/install.sh | bash -s -- --install-dir "$HOME/.fnm" --force-install + fi + + eval "`fnm env --fnm-dir "$HOME/.fnm-cache"`" + fnm env --fnm-dir "$HOME/.fnm-cache" >> $BASH_ENV + + fnm use "<>" --fnm-dir "$HOME/.fnm-cache" --install-if-missing + fnm default "<>" --fnm-dir "$HOME/.fnm-cache" + fi + - run: + name: Test NodeJS version + command: | + if [[ "$(node --version)" != "<>" ]]; then + echo "NodeJS installation failed. Expected version: <>; Actually got: $(node --version)" + exit 1 + fi - run: npm ci --prefer-offline --cache ~/.npm --no-audit - save_cache: - key: npm-v4-<>-{{ checksum "package-lock.json" }} + key: npm-v7-<>-{{ checksum "package-lock.json" }} paths: - ~/.npm + - ~/.fnm + - ~/.fnm-cache - node_modules - cli/node_modules - core/node_modules @@ -251,13 +293,11 @@ commands: # To be able to run cargo source "$HOME/.cargo/env" + echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> $BASH_ENV # Cargo builds the other targets in Docker cargo install cross --git https://github.com/cross-rs/cross - # So that cross can be called - source "$HOME/.cargo/env" - run_npm_dist: description: Package built code into executables and persist to dist directory parameters: @@ -285,17 +325,12 @@ commands: - restore_cache: keys: - node-cache-v2-<>-{{ checksum "cli/src/build-pkg.ts" }} - - node-cache-v2-<> + # Nuke caches fully on every change; Otherwise weird things can happen if the cache is poisoned. + # - node-cache-v2-<> - run: name: Run dist script command: | - # This is already done in the step that installs rust - # It also work on the native macos runner, - # but somehow it doesn't work for the docker based runner. - # We just source it again so we're sure it's available for the next steps - source "$HOME/.cargo/env" - npm run dist -- --version "<>" <> # We cache the node archives because the NodeJS download mirror is unreliable @@ -382,8 +417,6 @@ jobs: default: "" steps: - checkout - - node/install: - node-version: '18.18.2' - install_rust # We need rosetta for running the tests for x86_64 - macos/install-rosetta @@ -410,8 +443,6 @@ jobs: default: "" steps: - checkout - - node/install: - node-version: '18.18.2' - install_rust - run: name: "Install rollup linux" diff --git a/.eslintrc b/.eslintrc index d4dadc9bfc..d3a39152c8 100644 --- a/.eslintrc +++ b/.eslintrc @@ -51,6 +51,7 @@ " " ]], "@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_", "destructuredArrayIgnorePattern": "^_" }], - "@typescript-eslint/consistent-type-imports": "error" + "@typescript-eslint/consistent-type-imports": "error", + "@typescript-eslint/no-explicit-any": "warn" } } diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index 18f1e16e0c..a0173cf131 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -16,10 +16,10 @@ jobs: - name: Set Environment Variables run: echo "SHORT_SHA=$(echo "$GITHUB_SHA" | cut -c1-8)" >> "$GITHUB_ENV" - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - name: Use Node.js 18.x + - name: Use Node.js 21.x uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0 with: - node-version: 18.x + node-version: 21.x - name: Build package run: | npm ci diff --git a/.nvmrc b/.nvmrc index f1c291c643..6d3b755f84 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1,2 +1,2 @@ -18.15 +21.1 diff --git a/cli/bin/garden-debug.js b/cli/bin/garden-debug.js index 50e87394fb..ce756c32c2 100755 --- a/cli/bin/garden-debug.js +++ b/cli/bin/garden-debug.js @@ -1,4 +1,4 @@ -#!/usr/bin/env node --inspect --stack-trace-limit=1000 --max-semi-space-size=64 +#!/usr/bin/env -S node--inspect --stack-trace-limit=1000 --max-semi-space-size=64 /* * Copyright (C) 2018-2023 Garden Technologies, Inc. * diff --git a/cli/src/build-pkg.ts b/cli/src/build-pkg.ts index ac6515d769..b511725967 100644 --- a/cli/src/build-pkg.ts +++ b/cli/src/build-pkg.ts @@ -13,7 +13,6 @@ import { STATIC_DIR, GARDEN_CLI_ROOT, GARDEN_CORE_ROOT } from "@garden-io/core/b import { readFile, writeFile } from "fs/promises" import { remove, mkdirp, copy, pathExists } from "fs-extra/esm" import { exec, getPackageVersion } from "@garden-io/core/build/src/util/util.js" -import { dedent } from "@garden-io/core/build/src/util/string.js" import { pick } from "lodash-es" import minimist from "minimist" import { createHash } from "node:crypto" @@ -21,7 +20,7 @@ import { createReadStream, createWriteStream } from "fs" import { makeTempDir } from "@garden-io/core/build/test/helpers.js" import * as url from "node:url" import { Readable } from "node:stream" -import { finished } from "node:stream/promises" +import { pipeline } from "node:stream/promises" import type { Entry } from "unzipper" import unzipper from "unzipper" @@ -79,10 +78,10 @@ const targets: { [name: string]: { spec: TargetSpec; handler: (p: TargetHandlerP spec: { os: "macos", arch: "x64", - node: "18.18.2", + node: "21.1.0", nodeBinaryPlatform: "darwin", - url: "https://nodejs.org/dist/v18.18.2/node-v18.18.2-darwin-x64.tar.gz", - checksum: "5bb8da908ed590e256a69bf2862238c8a67bc4600119f2f7721ca18a7c810c0f", + url: "https://nodejs.org/dist/v21.1.0/node-v21.1.0-darwin-x64.tar.gz", + checksum: "6b526c08320fcf41ced0ceee7588828ea2cb07ba826af4ff82b0ec53958fd8a4", }, handler: pkgMacos, }, @@ -90,10 +89,10 @@ const targets: { [name: string]: { spec: TargetSpec; handler: (p: TargetHandlerP spec: { os: "macos", arch: "arm64", - node: "18.18.2", + node: "21.1.0", nodeBinaryPlatform: "darwin", - url: "https://nodejs.org/dist/v18.18.2/node-v18.18.2-darwin-arm64.tar.gz", - checksum: "9f982cc91b28778dd8638e4f94563b0c2a1da7aba62beb72bd427721035ab553", + url: "https://nodejs.org/dist/v21.1.0/node-v21.1.0-darwin-arm64.tar.gz", + checksum: "4872463830381785b91d13a7fbb9b6f4a9c7658e10d964f6c421951cec8833ad", }, handler: pkgMacos, }, @@ -101,10 +100,10 @@ const targets: { [name: string]: { spec: TargetSpec; handler: (p: TargetHandlerP spec: { os: "linux", arch: "x64", - node: "18.18.2", + node: "21.1.0", nodeBinaryPlatform: "linux", - url: "https://nodejs.org/dist/v18.18.2/node-v18.18.2-linux-x64.tar.gz", - checksum: "a44c3e7f8bf91e852c928e5d8bd67ca316b35e27eec1d8acbe3b9dbe03688dab", + url: "https://nodejs.org/dist/v21.1.0/node-v21.1.0-linux-x64.tar.gz", + checksum: "b919cad4e8a5abbd7e6a4433c4f8a7cdc1a78c1e526c6c1aa4a5fcf74011ad2b", }, handler: pkgLinux, }, @@ -112,10 +111,10 @@ const targets: { [name: string]: { spec: TargetSpec; handler: (p: TargetHandlerP spec: { os: "linux", arch: "arm64", - node: "18.18.2", + node: "21.1.0", nodeBinaryPlatform: "linux", - url: "https://nodejs.org/dist/v18.18.2/node-v18.18.2-linux-arm64.tar.gz", - checksum: "0c9a6502b66310cb26e12615b57304e91d92ac03d4adcb91c1906351d7928f0d", + url: "https://nodejs.org/dist/v21.1.0/node-v21.1.0-linux-arm64.tar.gz", + checksum: "5480f438703049f55f19fc3247f6aa1e8059b2f47cf08e9adfdcb7ce7aedff70", }, handler: pkgLinux, }, @@ -123,11 +122,11 @@ const targets: { [name: string]: { spec: TargetSpec; handler: (p: TargetHandlerP spec: { os: "alpine", arch: "x64", - node: "18.18.2", + node: "21.1.0", nodeBinaryPlatform: "linux", // Alpine builds live in https://unofficial-builds.nodejs.org/download/release/ - url: "https://unofficial-builds.nodejs.org/download/release/v18.18.2/node-v18.18.2-linux-x64-musl.tar.gz", - checksum: "e71212feaa3a54c1736e173f3aa17ba777f1f189659437c589af54742d95a1d0", + url: "https://unofficial-builds.nodejs.org/download/release/v21.1.0/node-v21.1.0-linux-x64-musl.tar.gz", + checksum: "a3c838b0d00e7c2a218ceef39b4bf2c6dd6a433eb5970012fe36038904c8feef", }, handler: pkgAlpine, }, @@ -135,10 +134,10 @@ const targets: { [name: string]: { spec: TargetSpec; handler: (p: TargetHandlerP spec: { os: "win", arch: "x64", - node: "18.18.2", + node: "21.1.0", nodeBinaryPlatform: "win32", - url: "https://nodejs.org/dist/v18.18.2/node-v18.18.2-win-x64.zip", - checksum: "3bb0e51e579a41a22b3bf6cb2f3e79c03801aa17acbe0ca00fc555d1282e7acd", + url: "https://nodejs.org/dist/v21.1.0/node-v21.1.0-win-x64.zip", + checksum: "6ee3e74ecceb27f388d75a94d6782df670bad37a4d10ff2d28a7c7bcb75bdb49", }, handler: pkgWindows, }, @@ -188,11 +187,14 @@ async function zipAndHash({ targetDir, archiveName, cwd, prefix, fileNames }: Zi fileNames ) - const archiveHash = archiveStream.pipe(createHash("sha256")) + const sha256 = archiveStream.pipe(createHash("sha256")) - await finished(archiveStream.pipe(createWriteStream(targetArchive))) + await pipeline(archiveStream, createWriteStream(targetArchive)) - await writeFile(resolve(targetDir, `${archiveName}.sha256`), archiveHash.digest("hex") + "\n") + // NOTE(steffen): I expected `await finished(sha256)` to do the job, but calling that crashed node without an error message for some reason. + await new Promise((r) => sha256.once("readable", r)) + + await writeFile(resolve(targetDir, `${archiveName}.sha256`), sha256.digest("hex") + "\n") } async function buildBinaries(args: string[]) { @@ -325,8 +327,8 @@ async function buildBinaries(args: string[]) { let nodeArchiveChecksum: string | undefined if (await pathExists(nodeArchiveFilename)) { const readStream = createReadStream(nodeArchiveFilename) - const hash = readStream.pipe(createHash("sha256")) - await finished(readStream) + const hash = createHash("sha256") + await pipeline(readStream, hash) nodeArchiveChecksum = hash.digest("hex") } @@ -334,27 +336,8 @@ async function buildBinaries(args: string[]) { console.log(chalk.green(` ✓ Using cached node ${spec.node} for ${targetName} at ${nodeArchiveFilename}`)) } else { console.log(chalk.cyan(`Downloading node ${spec.node} for ${targetName} from ${spec.url}`)) - const response = await fetch(spec.url) - - if (!response.body) { - throw new Error(`No response body for ${spec.url}`) - } - - const body = Readable.fromWeb(response.body) - - const hash = body.pipe(createHash("sha256")) - - const writeStream = createWriteStream(nodeArchiveFilename) - await finished(body.pipe(writeStream)) - - console.log(chalk.green(` ✓ Downloaded node ${spec.node} for ${targetName}`)) - - const sha256 = hash.digest("hex") - - if (sha256 !== spec.checksum) { - throw new Error(`Checksum mismatch for ${spec.url}! Expected ${spec.checksum} but got ${sha256}`) - } - console.log(chalk.green(` ✓ Verified checksum for ${targetName}`)) + await downloadFromWeb({ url: spec.url, checksum: spec.checksum, targetPath: nodeArchiveFilename }) + console.log(chalk.green(` ✓ Downloaded node ${spec.node} and verified checksum for ${targetName}`)) } console.log(chalk.cyan(`Extracting node ${spec.node} for ${targetName}`)) @@ -372,14 +355,14 @@ async function buildBinaries(args: string[]) { return path.endsWith(`/bin/${nodeFileName}`) }, }) - await finished(createReadStream(nodeArchiveFilename).pipe(extractStream)) + await pipeline(createReadStream(nodeArchiveFilename), extractStream) } else { const zip = createReadStream(nodeArchiveFilename).pipe(unzipper.Parse({ forceStream: true })) for await (const i of zip) { const entry = i as Entry const fileName = entry.path if (fileName.endsWith(`/${nodeFileName}`)) { - await finished(entry.pipe(createWriteStream(resolve(extractionDir, nodeFileName)))) + await pipeline(entry, createWriteStream(resolve(extractionDir, nodeFileName))) } else { entry.autodrain() } @@ -472,36 +455,58 @@ async function pkgCommon({ targetName, spec }: { targetName: string; spec: Targe await mkdirp(targetPath) console.log(` - ${targetName} -> node-pty`) - const abi = getAbi(process.version, "node") + const abi = getAbi(spec.node, "node") - if (spec.nodeBinaryPlatform === "win32") { - const tmpDir = await makeTempDir() - // Seriously, this is so much easier than anything more native... - await exec( - "sh", - [ - "-c", - dedent` - set -e - curl -s -L https://github.com/oznu/node-pty-prebuilt-multiarch/releases/download/v0.10.1-pre.5/node-pty-prebuilt-multiarch-v0.10.1-pre.5-node-v108-win32-x64.tar.gz | tar -xzv -C . - cp build/Release/* '${targetPath}' - `, - ], - { cwd: tmpDir.path } - ) - - await tmpDir.cleanup() - } else { + if (spec.nodeBinaryPlatform === "linux") { const filename = spec.os === "alpine" ? `node.abi${abi}.musl.node` : `node.abi${abi}.node` const abiPath = resolve( GARDEN_CORE_ROOT, "node_modules", + "@homebridge", "node-pty-prebuilt-multiarch", "prebuilds", `${spec.nodeBinaryPlatform}-${spec.arch}`, filename ) await copy(abiPath, resolve(targetPath, "pty.node")) + } else { + const tmpDir = await makeTempDir() + const ptyArchiveFilename = resolve(tmpDir.path, "pty.tar.gz") + + // See also https://github.com/homebridge/node-pty-prebuilt-multiarch/releases + const checksums = { + "120-win32-x64": "344921e4036277b1edcbc01d2c7b4a22a3e0a85c911bdf9255fe1168e8e439b6", + "120-darwin-x64": "c406d1ba59ffa750c8a456ae22a75a221eaee2579f3b6f54296e72a5d79c6853", + "120-darwin-arm64": "2818fd6a31dd5889fa9612ceb7ae5ebe5c2422964a4a908d1f05aec120ebccaf", + } + + const key = `${abi}-${spec.nodeBinaryPlatform}-${spec.arch}` + const checksum = checksums[key] + + if (!checksum) { + throw new Error( + `Missing checksum for ${key}. Needs to be updated when changing the NodeJS version or pty version.` + ) + } + + await downloadFromWeb({ + url: `https://github.com/homebridge/node-pty-prebuilt-multiarch/releases/download/v0.11.8/node-pty-prebuilt-multiarch-v0.11.8-node-v${abi}-${spec.nodeBinaryPlatform}-${spec.arch}.tar.gz`, + checksum, + targetPath: ptyArchiveFilename, + }) + + // extract + const extractStream = tar.x({ + C: targetPath, + // The stripping removes the outer directories, so we end up with the files directly in the target directory. + // Filtering happens first, so it works fine. + strip: 2, + filter: (path) => { + return path.startsWith(`build/Release/`) + }, + }) + await pipeline(createReadStream(ptyArchiveFilename), extractStream) + await tmpDir.cleanup() } if (spec.os === "macos") { @@ -530,32 +535,21 @@ async function tarball(targetName: string, version: string): Promise { await exec("tar", ["-czf", filename, targetName], { cwd: distPath }) - return new Promise((_resolve, reject) => { - const hashFilename = filename + ".sha256" - const archivePath = join(distPath, filename) - const hashPath = join(distPath, hashFilename) - - // compute the sha256 checksum - console.log(` - ${targetName} -> sha256 (${hashFilename})`) + const hashFilename = filename + ".sha256" + const archivePath = join(distPath, filename) + const hashPath = join(distPath, hashFilename) - const response = createReadStream(archivePath) - response.on("error", reject) + // compute the sha256 checksum + console.log(` - ${targetName} -> sha256 (${hashFilename})`) - const hash = createHash("sha256") - hash.setEncoding("hex") + const readStream = createReadStream(archivePath) + const hash = createHash("sha256") + hash.setEncoding("hex") - response.on("end", () => { - hash.end() - const sha256 = hash.read() - - // eslint-disable-next-line @typescript-eslint/no-floating-promises - writeFile(hashPath, sha256 + "\n") - .catch(reject) - .then(_resolve) - }) + await pipeline(readStream, hash) - response.pipe(hash) - }) + const sha256 = hash.read() + await writeFile(hashPath, sha256 + "\n") } const modulePath = url.fileURLToPath(import.meta.url) @@ -565,3 +559,35 @@ if (process.argv[1] === modulePath) { process.exit(1) }) } + +async function downloadFromWeb({ + url: downloadUrl, + targetPath, + checksum, +}: { + url: string + targetPath: string + checksum: string +}) { + const response = await fetch(downloadUrl) + + if (!response.body) { + throw new Error(`No response body for ${downloadUrl}`) + } + + const body = Readable.fromWeb(response.body) + + const sha256 = body.pipe(createHash("sha256")) + + const writeStream = createWriteStream(targetPath) + await pipeline(body, writeStream) + + // NOTE(steffen): I expected `await finished(sha256)` to do the job, but calling that crashed node without an error message for some reason. + await new Promise((r) => sha256.once("readable", r)) + + const digest = sha256.digest("hex") + + if (digest !== checksum) { + throw new Error(`Checksum mismatch for ${downloadUrl}! Expected ${checksum} but got ${digest}`) + } +} diff --git a/core/package.json b/core/package.json index 07fa55c7ab..ab3aab021c 100644 --- a/core/package.json +++ b/core/package.json @@ -105,7 +105,7 @@ "moment": "^2.29.4", "node-fetch": "^3.3.2", "node-forge": "^1.3.1", - "node-pty-prebuilt-multiarch": "^0.10.1-pre.5", + "@homebridge/node-pty-prebuilt-multiarch": "0.11.8", "normalize-path": "^3.0.0", "normalize-url": "^5.3.1", "open": "^9.1.0", @@ -199,7 +199,7 @@ "@types/micromatch": "^4.0.2", "@types/minimist": "^1.2.2", "@types/mocha": "^10.0.1", - "@types/node": "^18", + "@types/node": "^20", "@types/node-forge": "^1.3.1", "@types/normalize-path": "^3.0.0", "@types/parse-git-config": "^3.0.1", @@ -222,11 +222,11 @@ "@types/which": "^1.3.2", "@types/wrap-ansi": "^3.0.0", "@types/write-file-atomic": "^4.0.0", - "@typescript-eslint/eslint-plugin": "^5.53.0", - "@typescript-eslint/parser": "^5.53.0", + "@typescript-eslint/eslint-plugin": "^6.10.0", + "@typescript-eslint/parser": "^6.10.0", "chai": "^4.3.7", - "eslint": "^8.34.0", - "eslint-config-prettier": "^8.6.0", + "eslint": "^8.53.0", + "eslint-config-prettier": "^9.0.0", "eslint-plugin-jsdoc": "^39.9.1", "eslint-plugin-no-null": "^1.0.2", "eslint-plugin-react": "^7.32.2", diff --git a/core/src/commands/self-update.ts b/core/src/commands/self-update.ts index 7adb969393..1f8a1a3627 100644 --- a/core/src/commands/self-update.ts +++ b/core/src/commands/self-update.ts @@ -23,12 +23,11 @@ import { createReadStream, createWriteStream } from "fs" import fsExtra from "fs-extra" const { copy, mkdirp, move, readdir, remove } = fsExtra import { GotHttpError, got } from "../util/http.js" -import { promisify } from "node:util" import { gardenEnv } from "../constants.js" import semver from "semver" -import stream from "stream" import type { Log } from "../logger/log-entry.js" import { realpath } from "fs/promises" +import { pipeline } from "node:stream/promises" const ARM64_INTRODUCTION_VERSION = "0.13.12" @@ -387,8 +386,6 @@ export class SelfUpdateCommand extends Command { const tempPath = join(tempDir.path, filename) try { - // See https://github.com/sindresorhus/got/blob/main/documentation/3-streams.md - const pipeline = promisify(stream.pipeline) await pipeline(got.stream(url), createWriteStream(tempPath)) } catch (err) { if ( @@ -448,15 +445,10 @@ export class SelfUpdateCommand extends Command { // Note: lazy-loading for startup performance const { default: unzipStream } = await import("unzip-stream") - await new Promise((_resolve, reject) => { - const extractor = unzipStream.Extract({ path: tempDir.path }) + const extractor = unzipStream.Extract({ path: tempDir.path }) - extractor.on("error", reject) - extractor.on("finish", _resolve) - - const reader = createReadStream(tempPath) - reader.pipe(extractor) - }) + const reader = createReadStream(tempPath) + await pipeline(reader, extractor) } else { await tar.x({ file: tempPath, diff --git a/core/src/plugins/kubernetes/commands/pull-image.ts b/core/src/plugins/kubernetes/commands/pull-image.ts index bf47510026..61899033e8 100644 --- a/core/src/plugins/kubernetes/commands/pull-image.ts +++ b/core/src/plugins/kubernetes/commands/pull-image.ts @@ -25,6 +25,7 @@ import { ensureBuilderSecret } from "../container/build/common.js" import type { ContainerBuildAction } from "../../container/config.js" import { k8sGetContainerBuildActionOutputs } from "../container/handlers.js" import type { Resolved } from "../../../actions/types.js" +import { finished } from "node:stream/promises" const tmpTarPath = "/tmp/image.tar" const imagePullTimeoutSeconds = 60 * 20 @@ -220,5 +221,7 @@ async function loadImage({ ctx, runner, log }: { ctx: PluginContext; runner: Pod args: ["load", "-i", path], log, }) + + await finished(writeStream) }) } diff --git a/core/src/server/server.ts b/core/src/server/server.ts index 3cbe411845..30f8f37638 100644 --- a/core/src/server/server.ts +++ b/core/src/server/server.ts @@ -11,7 +11,6 @@ import type { Server } from "http" import chalk from "chalk" import Koa from "koa" import Router from "koa-router" -import type PTY from "node-pty-prebuilt-multiarch" import websockify from "koa-websocket" import bodyParser from "koa-bodyparser" import getPort, { portNumbers } from "get-port" @@ -50,7 +49,8 @@ import { omitUndefined } from "../util/objects.js" import { createServer } from "http" import { defaultServerPort } from "../commands/serve.js" -import pty from "node-pty-prebuilt-multiarch" +import type PTY from "@homebridge/node-pty-prebuilt-multiarch" +import pty from "@homebridge/node-pty-prebuilt-multiarch" const skipLogsForCommands = ["autocomplete"] diff --git a/core/src/util/ext-tools.ts b/core/src/util/ext-tools.ts index 8b0fa77a6d..ef5830a898 100644 --- a/core/src/util/ext-tools.ts +++ b/core/src/util/ext-tools.ts @@ -26,6 +26,7 @@ import type { PluginContext } from "../plugin-context.js" import { LogLevel } from "../logger/logger.js" import { uuidv4 } from "./random.js" import { streamLogs, waitForProcess } from "./process.js" +import { pipeline } from "node:stream/promises" const toolsPath = join(GARDEN_GLOBAL_PATH, "tools") const lock = new AsyncLock() @@ -277,7 +278,7 @@ export class PluginTool extends CliWrapper { await ensureDir(tmpPath) try { - await this.fetch(tmpPath, log) + await this.fetch(tmpPath) if (this.buildSpec.extract && !(await pathExists(targetAbsPath))) { // if this happens, it's a bug! @@ -299,7 +300,7 @@ export class PluginTool extends CliWrapper { }) } - protected async fetch(tmpPath: string, log: Log) { + protected async fetch(tmpPath: string) { const parsed = parse(this.buildSpec.url) const protocol = parsed.protocol @@ -312,71 +313,46 @@ export class PluginTool extends CliWrapper { }) // compute the sha256 checksum - const hash = createHash("sha256") - hash.setEncoding("hex") - response.pipe(hash) - - return new Promise(async (resolve, reject) => { - response.on("error", (err) => { - log.error(`Failed fetching ${this.buildSpec.url}`) - reject(err) - }) - - hash.on("readable", () => { - // validate sha256 if provided - const sha256 = hash.read() - - // end of stream event - if (sha256 === null) { - return - } + const hash = response.pipe(createHash("sha256")) - if (this.buildSpec.sha256 && sha256 !== this.buildSpec.sha256) { - reject( - // if this happens, it's a bug! - new InternalError({ - message: `Failed to download ${this.name}: Invalid checksum from ${this.buildSpec.url} (expected ${this.buildSpec.sha256}, actually got ${sha256})`, - }) - ) - } - }) + if (!this.buildSpec.extract) { + const targetExecutable = join(tmpPath, ...this.targetSubpath.split(posix.sep)) + const writeStream = createWriteStream(targetExecutable) + await pipeline(response, writeStream) + } else { + const format = this.buildSpec.extract.format + let extractor: NodeJS.WritableStream - if (!this.buildSpec.extract) { - const targetExecutable = join(tmpPath, ...this.targetSubpath.split(posix.sep)) - response.pipe(createWriteStream(targetExecutable)) - response.on("end", () => resolve()) + if (format === "tar") { + extractor = tar.x({ + C: tmpPath, + strict: true, + }) + } else if (format === "zip") { + // Note: lazy-loading for startup performance + const { default: unzipStream } = await import("unzip-stream") + extractor = unzipStream.Extract({ path: tmpPath }) } else { - const format = this.buildSpec.extract.format - let extractor: NodeJS.WritableStream - - if (format === "tar") { - extractor = tar.x({ - C: tmpPath, - strict: true, - }) - extractor.on("end", () => resolve()) - } else if (format === "zip") { - // Note: lazy-loading for startup performance - const { default: unzipStream } = await import("unzip-stream") - extractor = unzipStream.Extract({ path: tmpPath }) - extractor.on("close", () => resolve()) - } else { - reject( - // If this happens, it's a bug! - new InternalError({ - message: `Failed to extract ${this.name}: Invalid archive format: ${format}`, - }) - ) - return - } - - response.pipe(extractor) - - extractor.on("error", (err) => { - log.error(`Failed extracting ${format} archive ${this.buildSpec.url}`) - reject(err) + throw new InternalError({ + message: `Failed to extract ${this.name}: Invalid archive format: ${format}`, }) } - }) + + try { + await pipeline(response, extractor) + } catch (e) { + throw InternalError.wrapError(e, `Failed extracting ${format} archive ${this.buildSpec.url}`) + } + } + + // NOTE(steffen): I expected `await finished(hash)` to do the job, but calling that crashed node without an error message for some reason. + await new Promise((r) => hash.once("readable", r)) + const sha256 = hash.digest("hex") + if (sha256 !== this.buildSpec.sha256) { + // if this happens, it's a bug! + throw new InternalError({ + message: `Failed to download ${this.name}: Invalid checksum from ${this.buildSpec.url} (expected ${this.buildSpec.sha256}, actually got ${sha256})`, + }) + } } } diff --git a/core/test/unit/src/template-string.ts b/core/test/unit/src/template-string.ts index ce9feb91e3..e9228ae8f1 100644 --- a/core/test/unit/src/template-string.ts +++ b/core/test/unit/src/template-string.ts @@ -1192,7 +1192,7 @@ describe("resolveTemplateString", () => { it("throws if the function fails", () => { void expectError(() => resolveTemplateString({ string: "${jsonDecode('{]}')}", context: new TestContext({}) }), { contains: - "Invalid template string (${jsonDecode('{]}')}): Error from helper function jsonDecode: SyntaxError: Unexpected token ] in JSON at position 1", + "Invalid template string (${jsonDecode('{]}')}): Error from helper function jsonDecode: SyntaxError: Expected property name or '}' in JSON at position 1 (line 1 column 2)", }) }) diff --git a/e2e/package.json b/e2e/package.json index a3aa83f4f7..90d5cf47e1 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -29,7 +29,7 @@ "@types/lodash-es": "^4.17.9", "@types/minimist": "^1.2.2", "@types/mocha": "^10.0.1", - "@types/node": "^18", + "@types/node": "^20", "chai": "^4.3.7", "chalk": "^4.1.2", "dedent": "^0.7.0", @@ -49,7 +49,7 @@ "check-package-lock": "git diff-index --quiet HEAD -- package-lock.json || (echo 'package-lock.json is dirty!' && exit 1)", "clean": "shx rm -rf build", "dev": "tsc --build . -w --preserveWatchOutput", - "e2e-project": "ts-node e2e-project.ts", + "e2e-project": "node --import ../scripts/register-hook.js e2e-project.ts", "fix-format": "npm run lint -- --fix --quiet", "lint": "eslint --ignore-pattern 'projects/**' --ext .ts ." } diff --git a/garden-sea/src/node.rs b/garden-sea/src/node.rs index 257fd9f9f7..bb37c13e44 100644 --- a/garden-sea/src/node.rs +++ b/garden-sea/src/node.rs @@ -31,6 +31,13 @@ where command.env("GARDEN_SEA_EXTRACTED_ROOT", OsString::from(path)); command.env("GARDEN_SEA_EXECUTABLE_PATH", executable_path); + // Libuv 1.45.0 is affected by a kernel bug on certain kernels (Ubuntu 22) + // This leads to errors where Garden tool downloading errors with ETXTBSY + // Apparently file descriptor accounting is broken when using USE_IO_URING on older kernels + // See also: https://github.com/libuv/libuv/pull/4141/files + // TODO: Remove this once libuv 1.47 landed in a future NodeJS version, and we upgraded to it. + command.env("UV_USE_IO_URING", env::var("GARDEN_SEA_UV_USE_IO_URING").unwrap_or("0".into())); + // Allow users to override the heap size if needed. let max_old_space_size = env::var("GARDEN_MAX_OLD_SPACE_SIZE").unwrap_or("4096".into()); let max_semi_space_size = env::var("GARDEN_MAX_SEMI_SPACE_SIZE").unwrap_or("64".into()); @@ -40,6 +47,8 @@ where // TODO: consider what happens when users also set the NODE_OPTIONS env var format!("--max-semi-space-size={}", max_semi_space_size).into(), format!("--max-old-space-size={}", max_old_space_size).into(), + // Disable deprecation warnings; We still see deprecation warnings during development, but in release binaries we want to hide them. + "--no-deprecation".into(), // execute garden.mjs path.join("rollup").join("garden.mjs").into(), ]; diff --git a/images/circleci-runner/Dockerfile b/images/circleci-runner/Dockerfile index 8db2500b71..85c8b092d7 100644 --- a/images/circleci-runner/Dockerfile +++ b/images/circleci-runner/Dockerfile @@ -5,7 +5,7 @@ FROM google/cloud-sdk:411.0.0@sha256:b5c292e4cbf1ff57853a5f48bda5bf1f01c4750bc3d FROM cibuilds/github:0.12.2@sha256:a247975213771f2f4c61b806771ef6c22b225fdc46558738b7c935517c0dcdd4 AS ghr #### ldid utility #### -FROM cimg/node:18.15.0@sha256:df9aca3abafd201dec9bfa7bff8acda46fdaee9dc20be669aeaf025fcaa0c029 as ldid +FROM cimg/node:21.1.0@sha256:371d4fd082e62b57d8bcd2294624880e35e25bebe07ed5ece0a28b09d0d9e0bb as ldid RUN sudo apt-get update && sudo apt-get install -qq -y --no-install-recommends \ git \ @@ -22,7 +22,7 @@ RUN cd /tmp && \ sudo cp -f ./ldid /usr/local/bin/ldid #### main #### -FROM cimg/node:18.15.0@sha256:df9aca3abafd201dec9bfa7bff8acda46fdaee9dc20be669aeaf025fcaa0c029 +FROM cimg/node:21.1.0@sha256:371d4fd082e62b57d8bcd2294624880e35e25bebe07ed5ece0a28b09d0d9e0bb # install system deps RUN sudo apt-get update && sudo apt-get -y install rsync parallel python3 curl diff --git a/images/circleci-runner/garden.yml b/images/circleci-runner/garden.yml index 7f0a9ee49e..c9de70265e 100644 --- a/images/circleci-runner/garden.yml +++ b/images/circleci-runner/garden.yml @@ -2,5 +2,5 @@ kind: Module type: container name: circleci-runner description: Used for the core pipeline in CircleCI -image: gardendev/circleci-runner:18.15.0-1 +image: gardendev/circleci-runner:21.1.0-1 extraFlags: ["--platform", "linux/amd64"] diff --git a/package-lock.json b/package-lock.json index c97b74ccde..59ca12a398 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,27 +26,27 @@ "@rollup/plugin-url": "^8.0.2", "@types/fs-extra": "^9.0.1", "@types/lodash-es": "^4.17.9", - "@types/node": "^18", + "@types/node": "^20", "@types/prettier": "2.7.3", "@types/semver": "^7.5.0", "@types/treeify": "^1.0.0", "@types/yargs": "^17.0.28", - "@typescript-eslint/eslint-plugin": "^5.50.0", - "@typescript-eslint/parser": "^5.50.0", + "@typescript-eslint/eslint-plugin": "^6.10.0", + "@typescript-eslint/parser": "^6.10.0", "chalk": "^4.1.0", "csv": "^6.0.5", "csv-stringify": "^6.4.2", "deline": "^1.0.4", "dependency-graph": "^0.9.0", - "eslint": "^8.33.0", - "eslint-config-prettier": "^8.10.0", + "eslint": "^8.53.0", + "eslint-config-prettier": "^9.0.0", "eslint-plugin-header": "^3.1.1", "eslint-plugin-jsdoc": "^39.7.5", "eslint-plugin-mocha": "^10.1.0", "eslint-plugin-no-null": "^1.0.2", "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-react": "^7.32.2", - "eslint-plugin-unused-imports": "^2.0.0", + "eslint-plugin-unused-imports": "^3.0.0", "execa": "^8.0.1", "fs-extra": "^9.0.0", "handlebars": "^4.7.6", @@ -1518,6 +1518,7 @@ "dependencies": { "@codenamize/codenamize": "^1.1.1", "@hapi/joi": "git+https://github.com/garden-io/joi.git#master", + "@homebridge/node-pty-prebuilt-multiarch": "0.11.8", "@jsdevtools/readdir-enhanced": "^6.0.4", "@kubernetes/client-node": "github:davidgamero/javascript#c17ff3193dbd111b9e5b5db939647af70005381e", "@opentelemetry/api": "^1.6.0", @@ -1596,7 +1597,6 @@ "moment": "^2.29.4", "node-fetch": "^3.3.2", "node-forge": "^1.3.1", - "node-pty-prebuilt-multiarch": "^0.10.1-pre.5", "normalize-path": "^3.0.0", "normalize-url": "^5.3.1", "open": "^9.1.0", @@ -1690,7 +1690,7 @@ "@types/micromatch": "^4.0.2", "@types/minimist": "^1.2.2", "@types/mocha": "^10.0.1", - "@types/node": "^18", + "@types/node": "^20", "@types/node-forge": "^1.3.1", "@types/normalize-path": "^3.0.0", "@types/parse-git-config": "^3.0.1", @@ -1713,11 +1713,11 @@ "@types/which": "^1.3.2", "@types/wrap-ansi": "^3.0.0", "@types/write-file-atomic": "^4.0.0", - "@typescript-eslint/eslint-plugin": "^5.53.0", - "@typescript-eslint/parser": "^5.53.0", + "@typescript-eslint/eslint-plugin": "^6.10.0", + "@typescript-eslint/parser": "^6.10.0", "chai": "^4.3.7", - "eslint": "^8.34.0", - "eslint-config-prettier": "^8.6.0", + "eslint": "^8.53.0", + "eslint-config-prettier": "^9.0.0", "eslint-plugin-jsdoc": "^39.9.1", "eslint-plugin-no-null": "^1.0.2", "eslint-plugin-react": "^7.32.2", @@ -2400,6 +2400,442 @@ "@hapi/hoek": "^8.3.0" } }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@homebridge/node-pty-prebuilt-multiarch/-/node-pty-prebuilt-multiarch-0.11.8.tgz", + "integrity": "sha512-rVG0Hr6kYeauCtKZRoJaNg2jNlx4LPSH5siQdWlfrezwjxXw3Whu50ulGKL42dHvkpvJDj5EpZbOhIgm3RpVFQ==", + "hasInstallScript": true, + "dependencies": { + "nan": "^2.18.0", + "prebuild-install": "^7.1.1" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/nan": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==" + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "engines": { + "node": ">=8" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "engines": { + "node": ">=6" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/node-abi": { + "version": "3.51.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.51.0.tgz", + "integrity": "sha512-SQkEP4hmNWjlniS5zdnfIXTk1x7Ome85RDzHlTbBtzE97Gfwz/Ipw4v/Ryk20DWIy3yCNVLVlGKApCnmvYoJbA==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/pump/node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/pump/node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/pump/node_modules/once/node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/rc/node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/simple-get/node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/simple-get/node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/simple-get/node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/simple-get/node_modules/once/node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/simple-get/node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/bl/node_modules/buffer/node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/bl/node_modules/buffer/node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/end-of-stream/node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/end-of-stream/node_modules/once/node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "core/node_modules/@homebridge/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tunnel-agent/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "core/node_modules/@jsdevtools/readdir-enhanced": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/@jsdevtools/readdir-enhanced/-/readdir-enhanced-6.0.4.tgz", @@ -2457,19 +2893,6 @@ "ws": "^8.13.0" } }, - "core/node_modules/@kubernetes/client-node/node_modules/@types/node": { - "version": "20.8.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.10.tgz", - "integrity": "sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "core/node_modules/@kubernetes/client-node/node_modules/@types/node/node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, "core/node_modules/@kubernetes/client-node/node_modules/@types/stream-buffers": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/stream-buffers/-/stream-buffers-3.0.6.tgz", @@ -11072,626 +11495,6 @@ "node": ">= 6.13.0" } }, - "core/node_modules/node-pty-prebuilt-multiarch": { - "version": "0.10.1-pre.5", - "resolved": "https://registry.npmjs.org/node-pty-prebuilt-multiarch/-/node-pty-prebuilt-multiarch-0.10.1-pre.5.tgz", - "integrity": "sha512-yHYh8WNKTn9IUfREyD9MwP3rI+C3n3UhPL7++DayH33SgIXFX7yJkuuKDGi3ykndevpNyVQqkWN+Q0Fos+t5yQ==", - "hasInstallScript": true, - "dependencies": { - "nan": "^2.14.2", - "prebuild-install": "^6.0.0" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/nan": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", - "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz", - "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==", - "dependencies": { - "detect-libc": "^1.0.3", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^2.21.0", - "npmlog": "^4.0.1", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^3.0.3", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=6" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "engines": { - "node": ">=6" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/node-abi": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", - "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==", - "dependencies": { - "semver": "^5.4.1" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/node-abi/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/gauge/node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/gauge/node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/gauge/node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/gauge/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/gauge/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "engines": { - "node": ">=0.10.0" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/gauge/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/gauge/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "engines": { - "node": ">=0.10.0" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/gauge/node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/npmlog/node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/pump/node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/pump/node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/pump/node_modules/once/node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/rc/node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/rc/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/simple-get": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", - "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", - "dependencies": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/simple-get/node_modules/decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "dependencies": { - "mimic-response": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/simple-get/node_modules/decompress-response/node_modules/mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/simple-get/node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/simple-get/node_modules/once/node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/simple-get/node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/bl/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/bl/node_modules/buffer/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/bl/node_modules/buffer/node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/end-of-stream/node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/end-of-stream/node_modules/once/node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/readable-stream/node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "core/node_modules/node-pty-prebuilt-multiarch/node_modules/prebuild-install/node_modules/tunnel-agent/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "core/node_modules/nodemon": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.1.tgz", @@ -15631,7 +15434,7 @@ "@types/lodash-es": "^4.17.9", "@types/minimist": "^1.2.2", "@types/mocha": "^10.0.1", - "@types/node": "^18", + "@types/node": "^20", "chai": "^4.3.7", "chalk": "^4.1.2", "dedent": "^0.7.0", @@ -20740,9 +20543,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.18.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.8.tgz", - "integrity": "sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ==", + "version": "20.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz", + "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==", "dependencies": { "undici-types": "~5.26.4" } @@ -20786,32 +20589,33 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.10.0.tgz", + "integrity": "sha512-uoLj4g2OTL8rfUQVx2AFO1hp/zja1wABJq77P6IclQs6I/m9GLrm7jCdgzZkvWdDCQf1uEvoa8s8CupsgWQgVg==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.10.0", + "@typescript-eslint/type-utils": "6.10.0", + "@typescript-eslint/utils": "6.10.0", + "@typescript-eslint/visitor-keys": "6.10.0", "debug": "^4.3.4", "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -20829,16 +20633,16 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.10.0.tgz", + "integrity": "sha512-TN/plV7dzqqC2iPNf1KrxozDgZs53Gfgg5ZHyw8erd6jd5Ta/JIEcdCheXFt9b1NYb93a1wmIIVW/2gLkombDg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "@typescript-eslint/types": "6.10.0", + "@typescript-eslint/visitor-keys": "6.10.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -20846,67 +20650,38 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.10.0.tgz", + "integrity": "sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.10.0.tgz", + "integrity": "sha512-wYpPs3hgTFblMYwbYWPT3eZtaDOjbLyIYuqpwuLBBqhLiuvJ+9sEp2gNRJEtR5N/c9G1uTtQQL5AhV0fEPJYcg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", + "@typescript-eslint/typescript-estree": "6.10.0", + "@typescript-eslint/utils": "6.10.0", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -20915,21 +20690,21 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.10.0.tgz", + "integrity": "sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", + "@typescript-eslint/types": "6.10.0", + "@typescript-eslint/visitor-keys": "6.10.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -20942,47 +20717,18 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.10.0.tgz", + "integrity": "sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg==", "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -21034,9 +20780,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree/node_modules/globby/node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -21268,29 +21014,28 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.10.0.tgz", + "integrity": "sha512-v+pJ1/RcVyRc0o4wAGux9x42RHmAjIGzPRo538Z8M1tVx6HOnoQBCX/NoadHQlZeC+QO2yr4nNSFWOoraZCAyg==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.10.0", + "@typescript-eslint/types": "6.10.0", + "@typescript-eslint/typescript-estree": "6.10.0", + "semver": "^7.5.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils/node_modules/@eslint-community/eslint-utils": { @@ -21321,18 +21066,18 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils/node_modules/@types/json-schema": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", - "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.10.0.tgz", + "integrity": "sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -21340,21 +21085,21 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.10.0.tgz", + "integrity": "sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", + "@typescript-eslint/types": "6.10.0", + "@typescript-eslint/visitor-keys": "6.10.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -21366,35 +21111,6 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -21446,9 +21162,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree/node_modules/globby/node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -21679,47 +21395,46 @@ "node": ">=0.10.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.10.0.tgz", + "integrity": "sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "@typescript-eslint/types": "6.10.0", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils/node_modules/eslint-scope/node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" + "node": "^16.0.0 || >=18.0.0" }, - "engines": { - "node": ">=4.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils/node_modules/eslint-scope/node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.10.0.tgz", + "integrity": "sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg==", "dev": true, "engines": { - "node": ">=4.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils/node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { - "node": ">=4.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { @@ -21760,53 +21475,45 @@ "node": ">= 4" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/natural-compare-lite": { + "node_modules/@typescript-eslint/eslint-plugin/node_modules/natural-compare": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, "engines": { - "node": ">= 6" + "node": ">=16.13.0" }, "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "typescript": ">=4.2.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.10.0.tgz", + "integrity": "sha512-+sZwIj+s+io9ozSxIWbNB5873OSdfeBEH/FR0re14WLI6BaKuSOnnwCJ2foUiu8uXf4dRp1UqHP0vrZ1zXGrog==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/scope-manager": "6.10.0", + "@typescript-eslint/types": "6.10.0", + "@typescript-eslint/typescript-estree": "6.10.0", + "@typescript-eslint/visitor-keys": "6.10.0", "debug": "^4.3.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -21815,58 +21522,29 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.10.0.tgz", + "integrity": "sha512-TN/plV7dzqqC2iPNf1KrxozDgZs53Gfgg5ZHyw8erd6jd5Ta/JIEcdCheXFt9b1NYb93a1wmIIVW/2gLkombDg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "@typescript-eslint/types": "6.10.0", + "@typescript-eslint/visitor-keys": "6.10.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.10.0.tgz", + "integrity": "sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -21874,21 +21552,21 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.10.0.tgz", + "integrity": "sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", + "@typescript-eslint/types": "6.10.0", + "@typescript-eslint/visitor-keys": "6.10.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", @@ -21900,35 +21578,6 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -21980,9 +21629,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree/node_modules/globby/node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -22222,26 +21871,46 @@ "node": ">=0.10.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree/node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree/node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.10.0.tgz", + "integrity": "sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg==", "dev": true, "dependencies": { - "tslib": "^1.8.1" + "@typescript-eslint/types": "6.10.0", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">= 6" + "node": "^16.0.0 || >=18.0.0" }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree/node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } }, "node_modules/@typescript-eslint/parser/node_modules/debug": { "version": "4.3.4", @@ -22384,15 +22053,15 @@ } }, "node_modules/eslint": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz", - "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz", + "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.52.0", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.53.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -22439,9 +22108,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", - "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", + "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -36646,9 +36315,9 @@ } }, "node_modules/eslint-plugin-unused-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-2.0.0.tgz", - "integrity": "sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.0.0.tgz", + "integrity": "sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==", "dev": true, "dependencies": { "eslint-rule-composer": "^0.3.0" @@ -36657,7 +36326,7 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/eslint-plugin": "^6.0.0", "eslint": "^8.0.0" }, "peerDependenciesMeta": { @@ -36700,9 +36369,9 @@ } }, "node_modules/eslint/node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -36781,9 +36450,9 @@ } }, "node_modules/eslint/node_modules/@eslint/js": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz", - "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", + "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -40928,7 +40597,7 @@ "devDependencies": { "@types/chai": "^4.3.4", "@types/mocha": "^10.0.1", - "@types/node": "^18", + "@types/node": "^20", "chai": "^4.3.7", "mocha": "^10.2.0", "strip-ansi": "^6.0.0" @@ -40949,7 +40618,7 @@ "devDependencies": { "@types/chai": "^4.3.4", "@types/mocha": "^10.0.1", - "@types/node": "^18", + "@types/node": "^20", "chai": "^4.3.7", "mocha": "^10.2.0", "source-map-support": "^0.5.21", @@ -41931,7 +41600,7 @@ "devDependencies": { "@types/chai": "^4.3.4", "@types/mocha": "^10.0.1", - "@types/node": "^18", + "@types/node": "^20", "chai": "^4.3.7", "mocha": "^10.2.0", "strip-ansi": "^6.0.0" @@ -43827,7 +43496,7 @@ "@types/fs-extra": "^11.0.1", "@types/lodash-es": "^4.17.9", "@types/mocha": "^10.0.1", - "@types/node": "^18", + "@types/node": "^20", "chai": "^4.3.7", "mocha": "^10.2.0", "source-map-support": "^0.5.21", @@ -44876,7 +44545,7 @@ "@types/hapi__joi": "^17.1.9", "@types/json-merge-patch": "0.0.8", "@types/mocha": "^10.0.1", - "@types/node": "^18", + "@types/node": "^20", "chai": "^4.3.7", "mocha": "^10.2.0", "strip-ansi": "^6.0.0" @@ -45909,7 +45578,7 @@ }, "devDependencies": { "@types/chai": "^4.3.4", - "@types/node": "^18", + "@types/node": "^20", "chai": "^4.3.7", "mocha": "^10.2.0", "source-map-support": "^0.5.21", @@ -46942,7 +46611,7 @@ "minimist": "^1.2.8" }, "devDependencies": { - "@types/node": "^18", + "@types/node": "^20", "prettier": "3.0.0", "typescript": "^5.1.3" }, diff --git a/package.json b/package.json index effdbf9dcf..23ca4bb99c 100644 --- a/package.json +++ b/package.json @@ -26,27 +26,27 @@ "@rollup/plugin-url": "^8.0.2", "@types/fs-extra": "^9.0.1", "@types/lodash-es": "^4.17.9", - "@types/node": "^18", + "@types/node": "^20", "@types/prettier": "2.7.3", "@types/semver": "^7.5.0", "@types/treeify": "^1.0.0", "@types/yargs": "^17.0.28", - "@typescript-eslint/eslint-plugin": "^5.50.0", - "@typescript-eslint/parser": "^5.50.0", + "@typescript-eslint/eslint-plugin": "^6.10.0", + "@typescript-eslint/parser": "^6.10.0", "chalk": "^4.1.0", "csv": "^6.0.5", "csv-stringify": "^6.4.2", "deline": "^1.0.4", "dependency-graph": "^0.9.0", - "eslint": "^8.33.0", - "eslint-config-prettier": "^8.10.0", + "eslint": "^8.53.0", + "eslint-config-prettier": "^9.0.0", "eslint-plugin-header": "^3.1.1", "eslint-plugin-jsdoc": "^39.7.5", "eslint-plugin-mocha": "^10.1.0", "eslint-plugin-no-null": "^1.0.2", "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-react": "^7.32.2", - "eslint-plugin-unused-imports": "^2.0.0", + "eslint-plugin-unused-imports": "^3.0.0", "execa": "^8.0.1", "fs-extra": "^9.0.0", "handlebars": "^4.7.6", diff --git a/plugins/conftest-container/package.json b/plugins/conftest-container/package.json index f306c4c72c..2f2da79ffe 100644 --- a/plugins/conftest-container/package.json +++ b/plugins/conftest-container/package.json @@ -15,7 +15,7 @@ "devDependencies": { "@types/chai": "^4.3.4", "@types/mocha": "^10.0.1", - "@types/node": "^18", + "@types/node": "^20", "chai": "^4.3.7", "mocha": "^10.2.0", "source-map-support": "^0.5.21", diff --git a/plugins/conftest-kubernetes/package.json b/plugins/conftest-kubernetes/package.json index 8d9b282872..8017736666 100644 --- a/plugins/conftest-kubernetes/package.json +++ b/plugins/conftest-kubernetes/package.json @@ -16,7 +16,7 @@ "devDependencies": { "@types/chai": "^4.3.4", "@types/mocha": "^10.0.1", - "@types/node": "^18", + "@types/node": "^20", "chai": "^4.3.7", "mocha": "^10.2.0", "strip-ansi": "^6.0.0" diff --git a/plugins/conftest/package.json b/plugins/conftest/package.json index f9338ff7df..477997dd88 100644 --- a/plugins/conftest/package.json +++ b/plugins/conftest/package.json @@ -15,7 +15,7 @@ "devDependencies": { "@types/chai": "^4.3.4", "@types/mocha": "^10.0.1", - "@types/node": "^18", + "@types/node": "^20", "chai": "^4.3.7", "mocha": "^10.2.0", "strip-ansi": "^6.0.0" diff --git a/plugins/jib/package.json b/plugins/jib/package.json index ab00f1fed6..07bb8fd22b 100644 --- a/plugins/jib/package.json +++ b/plugins/jib/package.json @@ -20,7 +20,7 @@ "@types/fs-extra": "^11.0.1", "@types/lodash-es": "^4.17.9", "@types/mocha": "^10.0.1", - "@types/node": "^18", + "@types/node": "^20", "chai": "^4.3.7", "mocha": "^10.2.0", "source-map-support": "^0.5.21", diff --git a/plugins/pulumi/package.json b/plugins/pulumi/package.json index 2d447f2e35..617bf7cb27 100644 --- a/plugins/pulumi/package.json +++ b/plugins/pulumi/package.json @@ -21,7 +21,7 @@ "@types/hapi__joi": "^17.1.9", "@types/json-merge-patch": "0.0.8", "@types/mocha": "^10.0.1", - "@types/node": "^18", + "@types/node": "^20", "chai": "^4.3.7", "mocha": "^10.2.0", "strip-ansi": "^6.0.0" diff --git a/plugins/pulumi/test/test-project-k8s/k8s-deployment/package.json b/plugins/pulumi/test/test-project-k8s/k8s-deployment/package.json index d11023b7a5..65dd6157a4 100644 --- a/plugins/pulumi/test/test-project-k8s/k8s-deployment/package.json +++ b/plugins/pulumi/test/test-project-k8s/k8s-deployment/package.json @@ -1,7 +1,7 @@ { "name": "pulumi-k8s-deployment", "devDependencies": { - "@types/node": "^18" + "@types/node": "^20" }, "dependencies": { "@pulumi/pulumi": "^3.0.0", diff --git a/plugins/pulumi/test/test-project-k8s/k8s-namespace/package.json b/plugins/pulumi/test/test-project-k8s/k8s-namespace/package.json index d989099a47..b552b4f4d3 100644 --- a/plugins/pulumi/test/test-project-k8s/k8s-namespace/package.json +++ b/plugins/pulumi/test/test-project-k8s/k8s-namespace/package.json @@ -1,7 +1,7 @@ { "name": "pulumi-k8s-namespace", "devDependencies": { - "@types/node": "^18" + "@types/node": "^20" }, "dependencies": { "@pulumi/pulumi": "^3.0.0", diff --git a/plugins/terraform/package.json b/plugins/terraform/package.json index 86d2c6488c..191b59ffd9 100644 --- a/plugins/terraform/package.json +++ b/plugins/terraform/package.json @@ -19,7 +19,7 @@ }, "devDependencies": { "@types/chai": "^4.3.4", - "@types/node": "^18", + "@types/node": "^20", "chai": "^4.3.7", "mocha": "^10.2.0", "source-map-support": "^0.5.21", diff --git a/rollup.config.js b/rollup.config.js index 0ab3a81386..28e575a59d 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -29,6 +29,14 @@ export default { chunkFileNames: "[name]-[hash].mjs", }, plugins: [ + // Remove unwanted console.log in node-pty-prebuilt-multiarch package + replace({ + include: [/node-pty-prebuilt-multiarch.*prebuild-file-path\.js$/], + values: { + "console.log('prebuild-file-path:', pathToBuild);": "// Removed console.log in rollup.config.js)", + }, + delimiters: ["", ""], + }), // Rewrite require calls to use the global require to import native modules. { name: "rewrite-native-require", diff --git a/scripts/changelog.ts b/scripts/changelog.ts index 8433c8353c..74ca6e9d7c 100755 --- a/scripts/changelog.ts +++ b/scripts/changelog.ts @@ -1,4 +1,4 @@ -#!/usr/bin/env ts-node +#!/usr/bin/env -S node --import ./scripts/register-hook.js /* * Copyright (C) 2018-2023 Garden Technologies, Inc. * diff --git a/scripts/check-package-licenses.ts b/scripts/check-package-licenses.ts index 68eb312302..4586aac2d2 100755 --- a/scripts/check-package-licenses.ts +++ b/scripts/check-package-licenses.ts @@ -1,4 +1,4 @@ -#!/usr/bin/env ts-node +#!/usr/bin/env -S node --import ./scripts/register-hook.js /** * Scans all package.json files in the repo and throws if one or more packages have a disallowed license * (i.e. GPL, other copyleft licenses). diff --git a/scripts/convert-jsonl-log.ts b/scripts/convert-jsonl-log.ts index 115ce1c848..e6e3d37abd 100755 --- a/scripts/convert-jsonl-log.ts +++ b/scripts/convert-jsonl-log.ts @@ -1,4 +1,4 @@ -#!/usr/bin/env ts-node +#!/usr/bin/env -S node --import ./scripts/register-hook.js /* * Copyright (C) 2018-2023 Garden Technologies, Inc. * diff --git a/scripts/draft-release-notes.ts b/scripts/draft-release-notes.ts index ac2a0f525b..c4086950ea 100755 --- a/scripts/draft-release-notes.ts +++ b/scripts/draft-release-notes.ts @@ -1,4 +1,4 @@ -#!/usr/bin/env ts-node +#!/usr/bin/env -S node --import ./scripts/register-hook.js /* * Copyright (C) 2018-2023 Garden Technologies, Inc. * diff --git a/scripts/register-hook.js b/scripts/register-hook.js new file mode 100644 index 0000000000..03d40b265c --- /dev/null +++ b/scripts/register-hook.js @@ -0,0 +1,17 @@ +/* + * Copyright (C) 2018-2023 Garden Technologies, Inc. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +// We need this file to work around a problem with ts-node and ESM modules. +// Node is then run with `node --import ./scripts/register-hook.js` +// See https://github.com/TypeStrong/ts-node/issues/1997#issuecomment-1794664958 for details. + +import { pathToFileURL, fileURLToPath } from "node:url" +import { register } from "node:module" + +const filename = fileURLToPath(import.meta.url) +register("ts-node/esm", pathToFileURL(filename)) diff --git a/scripts/release.ts b/scripts/release.ts index 300a1fbc57..68a3401a35 100755 --- a/scripts/release.ts +++ b/scripts/release.ts @@ -1,4 +1,4 @@ -#!/usr/bin/env ts-node +#!/usr/bin/env -S node --import ./scripts/register-hook.js /* * Copyright (C) 2018-2023 Garden Technologies, Inc. * @@ -21,6 +21,7 @@ import parseArgs from "minimist" import deline from "deline" import replace from "replace-in-file" import { fileURLToPath } from "node:url" +import { finished } from "node:stream/promises" const moduleDirName = dirname(fileURLToPath(import.meta.url)) @@ -298,18 +299,10 @@ async function updateChangelog(version: string) { { cwd: gardenRoot } ) ).stdout - return new Promise((resolve, reject) => { - const writeStream = createWriteStream(changelogPath) - writeStream.write(nextChangelogEntry) - writeStream.write(changelog) - writeStream.close() - writeStream.on("close", () => { - resolve(null) - }) - writeStream.on("error", (error) => { - reject(error) - }) - }) + const writeStream = createWriteStream(changelogPath) + writeStream.write(nextChangelogEntry) + writeStream.write(changelog) + await finished(writeStream) } /** diff --git a/scripts/run-script.ts b/scripts/run-script.ts index b19d9fd34d..ff1cec1af2 100755 --- a/scripts/run-script.ts +++ b/scripts/run-script.ts @@ -1,4 +1,4 @@ -#!/usr/bin/env ts-node +#!/usr/bin/env -S node --import ./scripts/register-hook.js /* * Copyright (C) 2018-2023 Garden Technologies, Inc. * @@ -16,7 +16,8 @@ import chalk from "chalk" import wrapAnsi from "wrap-ansi" import stripAnsi from "strip-ansi" import { dirname, join, resolve } from "node:path" -import { createWriteStream, WriteStream } from "node:fs" +import type { WriteStream } from "node:fs" +import { createWriteStream } from "node:fs" import { getPackages } from "./script-utils.js" import yargs from "yargs/yargs" import { fileURLToPath } from "node:url" diff --git a/sdk/package.json b/sdk/package.json index 11091694d5..f2196fb94b 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -22,7 +22,7 @@ "minimist": "^1.2.8" }, "devDependencies": { - "@types/node": "^18", + "@types/node": "^20", "prettier": "3.0.0", "typescript": "^5.1.3" }, @@ -32,4 +32,4 @@ "fix-format": "npm run lint -- --fix --quiet", "lint": "eslint --ext .ts ." } -} \ No newline at end of file +} diff --git a/support/alpine.Dockerfile b/support/alpine.Dockerfile index 925e731dc4..7690baef3c 100644 --- a/support/alpine.Dockerfile +++ b/support/alpine.Dockerfile @@ -2,10 +2,9 @@ # Defaults to root. ARG VARIANT=root -# -# garden-base -# -FROM node:18.15.0-alpine@sha256:47d97b93629d9461d64197773966cc49081cf4463b1b07de5a38b6bd5acfbe9d as garden-base-root +# NOTE: This is not the node version Garden itself will run in. Garden binaries have node "built in" and the version installed on the system does not matter. +# The main reason we base these images off of the Node image is for Azure DevOps Support. +FROM node:21.1.0-alpine@sha256:10e00fa540cafb2f1bd7592d042b3de22f92e447a7415b1841339afe940df8c4 as garden-base-root RUN apk add --no-cache \ bash \ diff --git a/support/debian.Dockerfile b/support/debian.Dockerfile index 80a9f32cd4..c790852252 100644 --- a/support/debian.Dockerfile +++ b/support/debian.Dockerfile @@ -2,8 +2,9 @@ # Defaults to root. ARG VARIANT=root -# Node base image -FROM node:18.15.0-buster-slim@sha256:8fc14971a14387a8b2cbeeddbd2298f73d8e2346dc24648096ca24e57e1d31f4 as garden-buster-base-root +# NOTE: This is not the node version Garden itself will run in. Garden binaries have node "built in" and the version installed on the system does not matter. +# The main reason we base these images off of the Node image is for Azure DevOps Support. +FROM node:20.9.0-buster-slim@sha256:0f459897dde81c0529e7489393774a7a6ddec7356be397522e2d2efcf7711843 as garden-buster-base-root FROM garden-buster-base-root as garden-base-root # system dependencies