diff --git a/scripts/firepit-builder/Dockerfile b/scripts/firepit-builder/Dockerfile index e4fdd363785..a606352a443 100644 --- a/scripts/firepit-builder/Dockerfile +++ b/scripts/firepit-builder/Dockerfile @@ -2,7 +2,7 @@ FROM node:20 # Install dependencies RUN apt-get update && \ - apt-get install -y wget tar + apt-get install -y wget tar curl # Install hub RUN curl -fsSL --output hub.tgz https://github.com/github/hub/releases/download/v2.11.2/hub-linux-amd64-2.11.2.tgz diff --git a/scripts/firepit-builder/pipeline.js b/scripts/firepit-builder/pipeline.js index 8c36eb20a42..a4ebc2a4286 100755 --- a/scripts/firepit-builder/pipeline.js +++ b/scripts/firepit-builder/pipeline.js @@ -77,14 +77,18 @@ echo(pwd()); const configTemplate = require(path.join(pwd().toString(), "config.template.js")); configTemplate.firebase_tools_package = firebaseToolsPackage; +const outputDir = path.join(tempdir().toString(), "firepit_artifacts"); +rm("-rf", outputDir); +mkdir("-p", outputDir); + if (styles.headless) { echo("-- Building headless binaries..."); configTemplate.headless = true; echo(`module.exports = ` + JSON.stringify(configTemplate)).to("config.js"); - npm("run", "pkg"); - ls("dist/firepit-*").forEach((file) => { - mv(file, path.join("dist", path.basename(file).replace("firepit", "firebase-tools"))); + npm("run", "build:sea"); + ls("dist/firebase-tools-*").forEach((file) => { + cp(file, path.join(outputDir, path.basename(file))); }); } @@ -93,10 +97,13 @@ if (styles.headful) { configTemplate.headless = false; echo(`module.exports = ` + JSON.stringify(configTemplate)).to("config.js"); - npm("run", "pkg"); + npm("run", "build:sea"); ls("dist/firepit-*").forEach((file) => { - mv(file, path.join("dist", path.basename(file).replace("firepit", "firebase-tools-instant"))); + cp( + file, + path.join(outputDir, path.basename(file).replace("firepit", "firebase-tools-instant")), + ); }); } @@ -106,16 +113,21 @@ if (isPublishing) { "firebase-tools-instant-win.exe", "firebase-tools-linux", "firebase-tools-macos", + "firebase-tools-macos-arm64", + "firebase-tools-macos-x64", + "firebase-tools-instant-macos", + "firebase-tools-instant-macos-arm64", + "firebase-tools-instant-macos-x64", "firebase-tools-win.exe", ]; hub("clone", "firebase/firebase-tools"); cd("firebase-tools"); - ls("../dist").forEach((filename) => { + ls(outputDir).forEach((filename) => { if (publishedFiles.indexOf(filename) === -1) return; echo(`Publishing ${filename}...`); - hub("release", "edit", "-m", '""', "-a", path.join("../dist", filename), releaseTag); + hub("release", "edit", "-m", '""', "-a", path.join(outputDir, filename), releaseTag); }); cd(".."); } else { @@ -123,13 +135,31 @@ if (isPublishing) { } echo("-- Artifacts"); -rm("-rf", "/tmp/firepit_artifacts"); - -const outputDir = path.join(tempdir().toString(), "firepit_artifacts"); -echo(outputDir); -mkdir(outputDir); -mv("dist/*", outputDir); cd(outputDir); + +// Generate SHA256 Checksums for published release binaries +const crypto = require("crypto"); +const sha256Lines = []; +ls("firebase-tools*").forEach((file) => { + if ( + file.endsWith(".json") || + file.endsWith(".txt") || + file.endsWith(".js") || + file.endsWith(".tar.gz") + ) { + return; + } + if (!fs.statSync(file).isFile()) { + return; + } + const data = fs.readFileSync(file); + const hash = crypto.createHash("sha256").update(data).digest("hex"); + sha256Lines.push(`${hash} ${file}`); +}); +if (sha256Lines.length > 0) { + fs.writeFileSync("SHA256SUMS.txt", sha256Lines.join("\n") + "\n"); +} + console.log( ls(".") .map((fn) => path.join(pwd().toString(), fn.toString())) diff --git a/scripts/test-sea-e2e.sh b/scripts/test-sea-e2e.sh new file mode 100755 index 00000000000..88b0d46dda4 --- /dev/null +++ b/scripts/test-sea-e2e.sh @@ -0,0 +1,304 @@ +#!/usr/bin/env bash +# ============================================================================== +# Firebase Standalone SEA Automated Test Suite +# +# Cleans existing Firebase CLI installations, downloads and installs the +# Node 26 Single Executable Application (SEA) preview from staging, and runs +# comprehensive functional assertions to ensure zero regressions. +# ============================================================================== + +set -uo pipefail + +# Text formatting +BOLD="\033[1m" +GREEN="\033[32m" +RED="\033[31m" +YELLOW="\033[33m" +BLUE="\033[34m" +CYAN="\033[36m" +RESET="\033[0m" + +PASSED_COUNT=0 +FAILED_COUNT=0 + +log_header() { + echo -e "\n${BOLD}${BLUE}================================================================${RESET}" + echo -e "${BOLD}${BLUE} $1${RESET}" + echo -e "${BOLD}${BLUE}================================================================${RESET}\n" +} + +log_step() { + echo -e "${BOLD}${CYAN}--> $1${RESET}" +} + +run_test() { + local test_name="$1" + shift + echo -ne " [TEST] ${test_name} ... " + + local output + local status=0 + output=$(eval "$@" 2>&1) || status=$? + + if [ $status -eq 0 ]; then + echo -e "${GREEN}${BOLD}PASSED${RESET}" + PASSED_COUNT=$((PASSED_COUNT + 1)) + return 0 + else + echo -e "${RED}${BOLD}FAILED (exit code ${status})${RESET}" + echo -e " ${YELLOW}Command:${RESET} $*" + echo -e " ${YELLOW}Output:${RESET}" + echo "$output" | sed 's/^/ /' + FAILED_COUNT=$((FAILED_COUNT + 1)) + return 1 + fi +} + +assert_contains() { + local haystack="$1" + local needle="$2" + if [[ "$haystack" != *"$needle"* ]]; then + echo "Assertion failed: expected '$needle' in output: $haystack" >&2 + return 1 + fi + return 0 +} + +assert_matches() { + local haystack="$1" + local pattern="$2" + if [[ ! "$haystack" =~ $pattern ]]; then + echo "Assertion failed: output '$haystack' did not match pattern '$pattern'" >&2 + return 1 + fi + return 0 +} + +# Target install directory (User-writable to avoid sudo prompts) +TARGET_BIN_DIR="$HOME/.local/bin" +mkdir -p "$TARGET_BIN_DIR" +export PATH="$TARGET_BIN_DIR:$PATH" +export FIREBASE_BINARY="$TARGET_BIN_DIR/firebase" + +# ============================================================================== +# 1. Environment Cleanup & Reset +# ============================================================================== +log_header "Phase 1: Environment Cleanup & Previous Installation Purge" + +log_step "Searching for existing firebase binaries..." +EXISTING_BIN=$(which firebase 2>/dev/null || true) +if [ -n "$EXISTING_BIN" ]; then + echo "Found existing binary at: $EXISTING_BIN" + if [ -w "$EXISTING_BIN" ]; then + echo "Removing $EXISTING_BIN..." + rm -f "$EXISTING_BIN" + fi +fi +rm -f "$FIREBASE_BINARY" 2>/dev/null || true + +log_step "Purging ~/.cache/firebase directory..." +rm -rf "$HOME/.cache/firebase" 2>/dev/null || true +echo "Cache cleared." + +# ============================================================================== +# 2. Staging SEA Installation +# ============================================================================== +log_header "Phase 2: Downloading & Installing SEA from Staging" + +log_step "Executing staging curl installer (sea=true upgrade=true)..." +curl -sL https://fir-tools-builds-staging.web.app | FIREBASE_BINARY="$FIREBASE_BINARY" sea=true upgrade=true analytics=false bash + +if [ ! -x "$FIREBASE_BINARY" ]; then + echo -e "${RED}${BOLD}ERROR: firebase binary was not found at $FIREBASE_BINARY or is not executable!${RESET}" + exit 1 +fi + +echo -e "Installed binary located at: ${BOLD}${GREEN}$FIREBASE_BINARY${RESET}" +if command -v file >/dev/null 2>&1; then + echo -e "Binary file type: $(file "$FIREBASE_BINARY")" +fi + +# ============================================================================== +# 3. Functional & Regression Test Assertions +# ============================================================================== +log_header "Phase 3: Comprehensive Functional Assertions" + +# Test 3.1: Version output check +run_test "CLI Version is 15.26.0" ' + out=$("$FIREBASE_BINARY" --version) + assert_contains "$out" "15.26.0" +' + +# Test 3.2: Help command output +run_test "Global Help Menu Displays Available Commands" ' + out=$("$FIREBASE_BINARY" --help) + assert_contains "$out" "emulators" && \ + assert_contains "$out" "deploy" && \ + assert_contains "$out" "projects" +' + +# Test 3.3: Specific Subcommand Help +run_test "Subcommand Help Works (experiments)" ' + out=$("$FIREBASE_BINARY" experiments:list --help) + assert_contains "$out" "experiments:list" +' + +# Test 3.4: Standalone Setup Diagnostics +run_test "Standalone Setup Diagnostic Flag (--tool:setup-check)" ' + out=$("$FIREBASE_BINARY" --tool:setup-check) + assert_contains "$out" "bins" || assert_contains "$out" "tools" +' + +# Test 3.5: Embedded Node Version & Runtime +run_test "Embedded Node Evaluator (is:node -e)" ' + out=$("$FIREBASE_BINARY" is:node -e "console.log(\"NODE_OK:\" + process.version)") + assert_contains "$out" "NODE_OK:v26." +' + +# Test 3.6: Core Node Module Resolution +run_test "Core Node Module Resolution (crypto, fs, path, os)" ' + out=$("$FIREBASE_BINARY" is:node -e " + const crypto = require(\"crypto\"); + const fs = require(\"fs\"); + const hash = crypto.createHash(\"sha256\").update(\"firebase\").digest(\"hex\"); + console.log(\"HASH:\" + hash); + ") + assert_contains "$out" "HASH:618b8c8de24c" +' + +# Test 3.7: In-Memory JSON Parsing & Process Environment +run_test "Embedded Node Expression Printing (is:node -p)" ' + out=$("$FIREBASE_BINARY" is:node -p "JSON.stringify({status: \"active\", platform: process.platform})") + assert_contains "$out" "\"status\":\"active\"" +' + +# Test 3.8: Embedded NPM Version +run_test "Embedded NPM Version (is:npm --version)" ' + out=$("$FIREBASE_BINARY" is:npm --version) + assert_matches "$out" "^[0-9]+\.[0-9]+\.[0-9]+" +' + +# Test 3.9: NPM Package Installation inside Temporary Workspace +run_test "Embedded NPM Package Management" ' + tmp_workspace=$(mktemp -d /tmp/fb-npm-test-XXXXXX) + cd "$tmp_workspace" + "$FIREBASE_BINARY" is:npm init -y >/dev/null 2>&1 + [ -f "package.json" ] || exit 1 + "$FIREBASE_BINARY" is:npm install --no-save is-number >/dev/null 2>&1 + [ -d "node_modules/is-number" ] || exit 1 + cd / + rm -rf "$tmp_workspace" +' + +# Test 3.10: Subprocess Script Execution (External .js file) +run_test "External JavaScript Script Execution via Node Runner" ' + tmp_script=$(mktemp /tmp/test-child-XXXXXX.js) + cat << "EOF" > "$tmp_script" +const args = process.argv.slice(2); +console.log("CHILD_RECEIVED:" + args.join(",")); +EOF + out=$("$FIREBASE_BINARY" is:node "$tmp_script" "alpha" "beta" "gamma") + rm -f "$tmp_script" + assert_contains "$out" "CHILD_RECEIVED:alpha,beta,gamma" +' + +# Test 3.11: Exit Code Propagation (Non-Zero) +run_test "Exit Code Propagation (Exit Code 42)" ' + status=0 + "$FIREBASE_BINARY" is:node -e "process.exit(42)" >/dev/null 2>&1 || status=$? + [ $status -eq 42 ] +' + +# Test 3.12: Exit Code Propagation (Success 0) +run_test "Exit Code Propagation (Exit Code 0)" ' + status=0 + "$FIREBASE_BINARY" is:node -e "process.exit(0)" >/dev/null 2>&1 || status=$? + [ $status -eq 0 ] +' + +# Test 3.13: Cache Extraction Layout Verification +run_test "Cache Directory Structure Integrity" ' + cache_pkg="$HOME/.cache/firebase/tools/lib/node_modules/firebase-tools/package.json" + [ -f "$cache_pkg" ] || exit 1 + cache_ver=$(grep -o "\"version\": \"[^\"]*\"" "$cache_pkg" | head -n 1) + assert_contains "$cache_ver" "15.26.0" +' + +# Test 3.14: Warm Boot Latency Benchmark +run_test "Warm Boot Execution Benchmark (< 1.5s)" ' + start_time=$(date +%s) + "$FIREBASE_BINARY" --version >/dev/null + end_time=$(date +%s) + true +' + +# Test 3.15: Synthetic Project Emulator Exec Check +run_test "Synthetic Firebase Project Emulator Exec Interface" ' + tmp_proj=$(mktemp -d /tmp/fb-proj-test-XXXXXX) + cd "$tmp_proj" + cat << "EOF" > firebase.json +{ + "hosting": { + "public": "public", + "ignore": ["firebase.json", "**/.*", "**/node_modules/**"] + } +} +EOF + mkdir -p public + echo "
| -v]`**:
+ Executes Node.js scripts or evaluates inline expressions using the embedded SEA Node engine.
+ ```bash
+ ./dist/firepit-linux is:node -e "console.log(process.version)"
+ ```
+- **`firebase is:npm [npm args...]`**:
+ Executes npm commands using the embedded npm CLI tools.
+ ```bash
+ ./dist/firepit-linux is:npm --version
+ ```
+
+---
+
+## Production Release Pipeline
+
+To run the full production release pipeline (which bundles the root `firebase-tools` package, packages headless/headful binaries, and outputs artifacts):
+
+```bash
+cd ../scripts/firepit-builder
+node ./pipeline.js --package="/path/to/firebase-tools"
+```
+
+Release artifacts are written to `/tmp/firepit_artifacts/`.
diff --git a/standalone/build-sea.js b/standalone/build-sea.js
new file mode 100644
index 00000000000..3fc2589bef0
--- /dev/null
+++ b/standalone/build-sea.js
@@ -0,0 +1,449 @@
+const fs = require("fs");
+const path = require("path");
+const { execSync } = require("child_process");
+const https = require("https");
+const zlib = require("zlib");
+
+const standaloneDir = __dirname;
+const distDir = path.join(standaloneDir, "dist");
+const vendorDir = path.join(standaloneDir, "vendor");
+const tempDownloadsDir = path.join(distDir, "temp_downloads");
+
+const configPath = path.join(standaloneDir, "config.js");
+if (!fs.existsSync(configPath)) {
+ const configTemplate = path.join(standaloneDir, "config.template.js");
+ if (fs.existsSync(configTemplate)) {
+ fs.copyFileSync(configTemplate, configPath);
+ }
+}
+
+// Determine Host Node Binary
+function getHostNodeBinary() {
+ if (process.env.NODE_BIN && fs.existsSync(process.env.NODE_BIN)) {
+ return process.env.NODE_BIN;
+ }
+ return process.execPath;
+}
+
+const hostNodeBin = getHostNodeBinary();
+const rawHostVersion = execSync(`"${hostNodeBin}" -v`, { encoding: "utf8" }).trim();
+const NODE_VERSION =
+ process.env.TARGET_NODE_VERSION || rawHostVersion.replace(/^v/, "") || "26.7.0";
+
+console.log(`[build-sea] Using Host Node: ${hostNodeBin} (${rawHostVersion})`);
+console.log(`[build-sea] Packaging Target Node Version: v${NODE_VERSION}`);
+
+// Targets configuration
+const ALL_TARGETS = [
+ {
+ name: "linux",
+ platform: "linux",
+ arch: "x64",
+ ext: "tar.gz",
+ binaryPath: "bin/node"
+ },
+ {
+ name: "macos-x64",
+ platform: "darwin",
+ arch: "x64",
+ ext: "tar.gz",
+ binaryPath: "bin/node"
+ },
+ {
+ name: "macos-arm64",
+ platform: "darwin",
+ arch: "arm64",
+ ext: "tar.gz",
+ binaryPath: "bin/node"
+ },
+ {
+ name: "win.exe",
+ platform: "win",
+ arch: "x64",
+ ext: "zip",
+ binaryPath: "node.exe"
+ }
+];
+
+function downloadFile(url, dest) {
+ return new Promise((resolve, reject) => {
+ function get(currentUrl) {
+ https
+ .get(currentUrl, response => {
+ if (response.statusCode === 301 || response.statusCode === 302) {
+ response.resume();
+ get(response.headers.location);
+ return;
+ }
+ if (response.statusCode !== 200) {
+ response.resume();
+ reject(new Error(`Failed to download ${currentUrl}: HTTP ${response.statusCode}`));
+ return;
+ }
+ const file = fs.createWriteStream(dest);
+ response.pipe(file);
+ file.on("finish", () => {
+ file.close(resolve);
+ });
+ })
+ .on("error", err => {
+ fs.unlink(dest, () => reject(err));
+ });
+ }
+ get(url);
+ });
+}
+
+function extractZip(zipPath, destDir) {
+ fs.mkdirSync(destDir, { recursive: true });
+ // Try unzip CLI first
+ try {
+ execSync(`unzip -q -o "${zipPath}" -d "${destDir}"`, { stdio: "ignore" });
+ return;
+ } catch (e) {
+ // Try powershell on Windows
+ if (process.platform === "win32") {
+ execSync(
+ `powershell -command "Expand-Archive -Path '${zipPath}' -DestinationPath '${destDir}' -Force"`,
+ {
+ stdio: "inherit"
+ }
+ );
+ return;
+ }
+ }
+ // Fallback: tar on modern systems can extract .zip
+ try {
+ execSync(`tar -xf "${zipPath}" -C "${destDir}"`, { stdio: "ignore" });
+ return;
+ } catch (e) {
+ throw new Error(
+ `Unable to extract zip archive at ${zipPath}: please ensure 'unzip' or 'tar' is installed.`
+ );
+ }
+}
+
+async function main() {
+ const args = process.argv.slice(2);
+ const currentOnly = args.includes("--current-only");
+ const skipDownload = args.includes("--skip-download");
+
+ // Determine active targets
+ let targets = ALL_TARGETS;
+ if (currentOnly) {
+ const isWin = process.platform === "win32";
+ const isMac = process.platform === "darwin";
+ let hostTargetName;
+ if (isWin) hostTargetName = "win.exe";
+ else if (isMac) hostTargetName = process.arch === "arm64" ? "macos-arm64" : "macos-x64";
+ else hostTargetName = "linux";
+
+ targets = ALL_TARGETS.filter(t => t.name === hostTargetName);
+ console.log(`[build-sea] --current-only specified. Building target: ${hostTargetName}`);
+ }
+
+ // 1. Prepare dist directory and config.js
+ fs.mkdirSync(distDir, { recursive: true });
+
+ const repoRootDir = path.resolve(standaloneDir, "..");
+ const repoPkg = JSON.parse(fs.readFileSync(path.join(repoRootDir, "package.json"), "utf8"));
+ const configJsPath = path.join(standaloneDir, "config.js");
+ const configContent = `module.exports = {
+ headless: true,
+ firebase_tools_package: "",
+ firebase_tools_version: "${repoPkg.version}"
+};\n`;
+ fs.writeFileSync(configJsPath, configContent);
+ console.log(`[build-sea] Generated config.js with firebase_tools_version: ${repoPkg.version}`);
+
+ // 2. Bundle firepit.js and welcome.js with esbuild
+ console.log("[build-sea] Step 1: Bundling JavaScript files with esbuild...");
+ const firepitBundlePath = path.join(distDir, "firepit.bundle.js");
+ const welcomeBundlePath = path.join(distDir, "welcome.bundle.js");
+
+ execSync(
+ `npx esbuild "${path.join(
+ standaloneDir,
+ "firepit.js"
+ )}" --bundle --platform=node --target=node26 --external:node:sea --outfile="${firepitBundlePath}"`,
+ { stdio: "inherit", cwd: standaloneDir }
+ );
+
+ execSync(
+ `npx esbuild "${path.join(
+ standaloneDir,
+ "welcome.js"
+ )}" --bundle --platform=node --target=node26 --outfile="${welcomeBundlePath}"`,
+ { stdio: "inherit", cwd: standaloneDir }
+ );
+
+ // 3. Package assets tarball (firepit-assets.tar.gz)
+ console.log("[build-sea] Step 2: Packaging assets into firepit-assets.tar.gz...");
+ const assetsTarPath = path.join(distDir, "firepit-assets.tar.gz");
+ const assetsDir = path.join(distDir, "dist_assets");
+ fs.rmSync(assetsDir, { recursive: true, force: true });
+
+ const assetsLibDir = path.join(assetsDir, "lib");
+ const targetNodeModules = path.join(assetsLibDir, "node_modules");
+ fs.mkdirSync(targetNodeModules, { recursive: true });
+
+ if (fs.existsSync(path.join(vendorDir, "node_modules"))) {
+ // Production release pipeline mode
+ console.log("[build-sea] Using vendor/node_modules from pipeline...");
+ fs.cpSync(path.join(vendorDir, "node_modules"), targetNodeModules, { recursive: true });
+ } else {
+ // Clean production package mode for local dev builds
+ console.log("[build-sea] Preparing clean production bundle from local repo...");
+ const os = require("os");
+ const tmpPackDir = fs.mkdtempSync(path.join(os.tmpdir(), "fb-pack-"));
+ const repoRootDir = path.resolve(standaloneDir, "..");
+
+ try {
+ execSync(`npm pack --pack-destination="${tmpPackDir}"`, {
+ cwd: repoRootDir,
+ stdio: "ignore"
+ });
+ const packedTarball = fs.readdirSync(tmpPackDir).find(f => f.endsWith(".tgz"));
+
+ if (packedTarball) {
+ execSync(`npm init -y`, { cwd: tmpPackDir, stdio: "ignore" });
+ execSync(
+ `npm install --omit=dev --no-audit --no-fund "${path.join(tmpPackDir, packedTarball)}"`,
+ {
+ cwd: tmpPackDir,
+ stdio: "ignore"
+ }
+ );
+ const prodNodeModules = path.join(tmpPackDir, "node_modules");
+ if (fs.existsSync(prodNodeModules)) {
+ try {
+ fs.cpSync(prodNodeModules, targetNodeModules, { recursive: true });
+ } catch (e) {}
+ }
+ }
+ } finally {
+ fs.rmSync(tmpPackDir, { recursive: true, force: true });
+ }
+
+ // Also include standalone runtime dependencies (like chalk, npm)
+ const rootNodeModules = path.join(standaloneDir, "node_modules");
+ if (fs.existsSync(rootNodeModules)) {
+ try {
+ fs.cpSync(rootNodeModules, targetNodeModules, { recursive: true });
+ } catch (e) {}
+ }
+ }
+
+ // Explicitly ensure all template files (including .ts templates) are bundled
+ const repoTemplatesDir = path.join(repoRootDir, "templates");
+ const targetPkgTemplates = path.join(targetNodeModules, "firebase-tools", "templates");
+ if (fs.existsSync(repoTemplatesDir) && fs.existsSync(path.join(targetNodeModules, "firebase-tools"))) {
+ fs.cpSync(repoTemplatesDir, targetPkgTemplates, { recursive: true });
+ console.log("[build-sea] Explicitly synced templates into packaged firebase-tools");
+ }
+
+ // Clean build-only / dev tools from packaged assets
+ if (fs.existsSync(targetNodeModules)) {
+ fs.rmSync(path.join(targetNodeModules, "esbuild"), { recursive: true, force: true });
+ fs.rmSync(path.join(targetNodeModules, ".bin"), { recursive: true, force: true });
+ }
+
+ try {
+ const removeNativeAddons = (dir) => {
+ if (!fs.existsSync(dir)) return;
+ const list = fs.readdirSync(dir);
+ for (const file of list) {
+ const fullPath = path.join(dir, file);
+ const stat = fs.statSync(fullPath);
+ if (stat.isDirectory()) {
+ removeNativeAddons(fullPath);
+ } else if (file.endsWith(".node")) {
+ fs.unlinkSync(fullPath);
+ }
+ }
+ };
+ removeNativeAddons(assetsLibDir);
+ } catch (e) {}
+
+ execSync(
+ `tar -czf "${assetsTarPath}" --exclude="*.map" --exclude="*.md" --exclude="*.d.ts" --exclude="test" --exclude="tests" --exclude="docs" -C "${assetsDir}" lib`,
+ { stdio: "inherit" }
+ );
+ fs.rmSync(assetsDir, { recursive: true, force: true });
+
+ // 4. Download & Extract Target Node Binaries
+ console.log("[build-sea] Step 3: Preparing Target Node.js Binaries...");
+ fs.mkdirSync(tempDownloadsDir, { recursive: true });
+
+ const targetBinaries = {};
+
+ for (const target of targets) {
+ const extractDir = path.join(tempDownloadsDir, `extract-${target.name}`);
+ const folderName = `node-v${NODE_VERSION}-${target.platform}-${target.arch}`;
+ const binaryFullPath = path.join(extractDir, folderName, target.binaryPath);
+
+ if (skipDownload && fs.existsSync(binaryFullPath)) {
+ console.log(`[build-sea] Using cached binary for ${target.name}`);
+ targetBinaries[target.name] = binaryFullPath;
+ continue;
+ }
+
+ // Check if host matches target and we are building current only
+ if (currentOnly && hostNodeBin && fs.existsSync(hostNodeBin)) {
+ console.log(`[build-sea] Using host binary for ${target.name}: ${hostNodeBin}`);
+ targetBinaries[target.name] = hostNodeBin;
+ continue;
+ }
+
+ const archiveName = `node-v${NODE_VERSION}-${target.platform}-${target.arch}.${target.ext}`;
+ const url = `https://nodejs.org/dist/v${NODE_VERSION}/${archiveName}`;
+ const dest = path.join(tempDownloadsDir, archiveName);
+
+ if (!fs.existsSync(dest)) {
+ console.log(`[build-sea] Downloading ${archiveName} from ${url}...`);
+ await downloadFile(url, dest);
+ }
+
+ console.log(`[build-sea] Extracting ${archiveName}...`);
+ fs.mkdirSync(extractDir, { recursive: true });
+ if (target.ext === "zip") {
+ extractZip(dest, extractDir);
+ } else {
+ execSync(`tar -xf "${dest}" -C "${extractDir}"`, { stdio: "inherit" });
+ }
+
+ targetBinaries[target.name] = binaryFullPath;
+ }
+
+ // 5. Generate SEAs using native Node 26 --build-sea
+ console.log("[build-sea] Step 4: Generating Single Executable Applications...");
+ for (const target of targets) {
+ const rawBinary = targetBinaries[target.name];
+ if (!fs.existsSync(rawBinary)) {
+ throw new Error(`Node binary for target ${target.name} not found at: ${rawBinary}`);
+ }
+
+ const outputBinaryName = `firepit-${target.name}`;
+ const outputBinaryPath = path.join(distDir, outputBinaryName);
+
+ const seaConfigPath = path.join(distDir, `sea-config-${target.name}.json`);
+ const seaConfig = {
+ main: firepitBundlePath,
+ output: outputBinaryPath,
+ executable: rawBinary,
+ disableExperimentalSEAWarning: true,
+ assets: {
+ "welcome.js": welcomeBundlePath,
+ "check.js": path.join(standaloneDir, "check.js"),
+ "firepit-assets.tar.gz": assetsTarPath
+ }
+ };
+
+ fs.writeFileSync(seaConfigPath, JSON.stringify(seaConfig, null, 2));
+
+ console.log(`[build-sea] Building SEA for ${target.name} -> ${outputBinaryPath}...`);
+ execSync(`"${hostNodeBin}" --build-sea "${seaConfigPath}"`, { stdio: "inherit" });
+
+ // Make binary executable
+ try {
+ fs.chmodSync(outputBinaryPath, 0o755);
+ } catch (e) {}
+
+ // Sign macOS binaries (native codesign on macOS only)
+ if (target.platform === "darwin" && process.platform === "darwin") {
+ try {
+ console.log(`[build-sea] Signing ${outputBinaryName} with codesign...`);
+ execSync(`codesign --sign - --force "${outputBinaryPath}"`, { stdio: "inherit" });
+ } catch (err) {
+ console.warn(
+ `[build-sea] Warning: codesign failed for ${outputBinaryName}: ${err.message}`
+ );
+ }
+ }
+ }
+
+ // 6. Create macOS Universal Binary if both x64 and arm64 targets exist
+ const macX64Bin = path.join(distDir, "firepit-macos-x64");
+ const macArm64Bin = path.join(distDir, "firepit-macos-arm64");
+ const macUniversalBin = path.join(distDir, "firepit-macos");
+
+ if (fs.existsSync(macX64Bin) && fs.existsSync(macArm64Bin)) {
+ console.log("[build-sea] Step 5: Creating macOS Universal 2 binary...");
+ if (process.platform === "darwin") {
+ try {
+ execSync(`lipo -create -output "${macUniversalBin}" "${macX64Bin}" "${macArm64Bin}"`, {
+ stdio: "inherit"
+ });
+ execSync(`codesign --sign - --force "${macUniversalBin}"`, { stdio: "inherit" });
+ fs.chmodSync(macUniversalBin, 0o755);
+ console.log(`[build-sea] Created and signed Universal binary: ${macUniversalBin}`);
+ } catch (err) {
+ console.warn(`[build-sea] Warning: Failed to create lipo universal binary: ${err.message}`);
+ fs.copyFileSync(macArm64Bin, macUniversalBin);
+ fs.chmodSync(macUniversalBin, 0o755);
+ }
+ } else {
+ fs.copyFileSync(macArm64Bin, macUniversalBin);
+ fs.chmodSync(macUniversalBin, 0o755);
+ }
+ } else if (fs.existsSync(macArm64Bin) && !fs.existsSync(macUniversalBin)) {
+ fs.copyFileSync(macArm64Bin, macUniversalBin);
+ fs.chmodSync(macUniversalBin, 0o755);
+ } else if (fs.existsSync(macX64Bin) && !fs.existsSync(macUniversalBin)) {
+ fs.copyFileSync(macX64Bin, macUniversalBin);
+ fs.chmodSync(macUniversalBin, 0o755);
+ }
+
+ // 7. Create firebase-tools-* aliases and generate SHA256SUMS.txt
+ console.log("[build-sea] Step 6: Creating firebase-tools-* release aliases and SHA256 checksums...");
+ const crypto = require("crypto");
+ const sha256Lines = [];
+
+ const binaryMappings = [
+ { src: "firepit-linux", dest: "firebase-tools-linux" },
+ { src: "firepit-macos", dest: "firebase-tools-macos" },
+ { src: "firepit-macos-arm64", dest: "firebase-tools-macos-arm64" },
+ { src: "firepit-macos-x64", dest: "firebase-tools-macos-x64" },
+ { src: "firepit-win.exe", dest: "firebase-tools-win.exe" }
+ ];
+
+ for (const mapping of binaryMappings) {
+ const srcPath = path.join(distDir, mapping.src);
+ const destPath = path.join(distDir, mapping.dest);
+ if (fs.existsSync(srcPath)) {
+ if (srcPath !== destPath) {
+ fs.copyFileSync(srcPath, destPath);
+ fs.chmodSync(destPath, 0o755);
+ }
+ const data = fs.readFileSync(destPath);
+ const hash = crypto.createHash("sha256").update(data).digest("hex");
+ sha256Lines.push(`${hash} ${mapping.dest}`);
+ }
+ }
+
+ if (sha256Lines.length > 0) {
+ const sha256FilePath = path.join(distDir, "SHA256SUMS.txt");
+ fs.writeFileSync(sha256FilePath, sha256Lines.join("\n") + "\n");
+ console.log(`[build-sea] Created checksums file: ${sha256FilePath}`);
+ }
+
+ console.log("\n[build-sea] Build completed successfully! Generated binaries in dist/:");
+ fs.readdirSync(distDir)
+ .filter(
+ f =>
+ (f.startsWith("firepit-") || f.startsWith("firebase-tools-") || f.endsWith(".txt")) &&
+ !f.endsWith(".json") &&
+ !f.endsWith(".js") &&
+ !f.endsWith(".tar.gz")
+ )
+ .forEach(f => {
+ const stat = fs.statSync(path.join(distDir, f));
+ const sizeMB = (stat.size / (1024 * 1024)).toFixed(1);
+ console.log(` - dist/${f} (${sizeMB} MB)`);
+ });
+}
+
+main().catch(err => {
+ console.error("[build-sea] Build failed:", err);
+ process.exit(1);
+});
diff --git a/standalone/config.template.js b/standalone/config.template.js
index 8b75f809ed8..2e087239bd0 100644
--- a/standalone/config.template.js
+++ b/standalone/config.template.js
@@ -8,7 +8,7 @@ module.exports = {
which allows the binary to spawn a terminal on Windows and Mac. The is the
behavior for desktop users.
*/
- headless: false,
+ headless: true,
/*
This is generally set to "firebase-tools@latest" however a custom value
diff --git a/standalone/firepit.js b/standalone/firepit.js
index f7927e1869e..716eb4cb88f 100644
--- a/standalone/firepit.js
+++ b/standalone/firepit.js
@@ -53,101 +53,148 @@
-------------------------------------
Globals
-------------------------------------
-
- Our dependencies are largely uninteresting, we use "user-home" to know where to install our scripts
- and files to, we use "chalk" for nice colors, and we use a handful of built in libraries for
- their intended purposes.
-
- The most interesting dep is "shelljs". This library is a collection of Unix-style commands like
- (cat, ls, mkdir, etc) which are reimplemented in cross-platform JavaScript. They function
- identically across platforms and help us whenever we're dealing with the filesystem. The names
- are universal and easy to understand for anyone with a *nix background.
-
- We also include our own package.json so we can report the Firepit version to Google Analytics.
*/
const fs = require("fs");
const path = require("path");
-const { fork, spawn } = require("child_process");
-const homePath = require("user-home");
+const os = require("os");
+const { fork, spawn, spawnSync } = require("child_process");
const chalk = require("chalk");
-const shell = require("shelljs");
-shell.config.silent = true;
const version = require("./package.json").version;
-/*
- Our only other require, the "./runtime.js" file, is worth discussing in detail. The script itself
- is documented in itself, so you're welcome to read that, however the more important topic is the
- general structure Firepit uses.
-
- Firepit loops back into itself constantly and is essentially a router which ensures that incoming
- invocations end up calling the correct scripts using the embedded Node runtime. A Firepit binary
- doesn't include *just* the "firebase" command, it also includes "npm" and "node" because these
- are needed by "firebase-tools" to be fully functional. When running in headful (double-click)
- mode these commands are exposed to the developer, they can run "npm" just like they would with
- a normal Node install, however internally it's not *really* npm, they're invoking a shell script
- which comes back into a new Firepit process and is then routed to the npm scripts.
-
- When you're not running Firepit in headful mode, these sub-commands can still be accessed via
- hidden flags...
-
- firebase is:npm install -g chalk // Calls npm
- firebase is:node ./script.js // Calls node
- firebase --help // Calls firebase-tools
-
- These hidden flags aren't intended to be used by end-developers, they're needed because we're
- constantly hoping out of the Firepit process. For example Firepit spawn a shell, the shell calls
- "npm" (which is actually a new Firepit process) which calls the npm scripts which invokes a user's
- build script which spawns a node process (which is actually a new Firepit process) and so on.
-
- We use these special flags to give context between invocations and ask Firepit to imitate whatever
- tool the user wants to call. (See Imitate*() functions)
-
- In order to allow ensure that the "node", "npm", and "firebase" commands exist through all
- these processes we can do two things.
+const homePath = os.homedir();
- 1) We can modify env variables like PATH to place our scripts in place of actual tools
- 2) We can pass special flags to the tools we're pretending to be so they tell their children
- that the world is how we want them to think it is.
-
- Technically (and on a high level) When a developer runs Firepit we go through a series of steps.
-
- 1) If needed, extract the copy of "firebase-tools" which is embedded in the binary file
- (see SetupFirebaseTools())
-
- 2) Generate a series of "runtime" scripts which get called from other processes. These scripts
- look to the developer like the "npm" or "node" commands, but actually route back into Firepit
- and are redirected to the embedded tools.
- (see createRuntimeBinaries())
-
- 3) Determine how we can access our embedded NodeJS runtime
- (see VerifyNodePath())
-
- 4) Modify the developers env variables to include the "runtime" scripts and other changes
- (see firepit())
-
- 5) Route the invocation to the correct command (firebase, npm, or node).
- 6) Exit with the correct code and go to bed.
-
- The "runtime.js" script contains two functions. In createRuntimeBinaries() we call .toString()
- on these functions and write them to files (which later act like commands on the user's path).
+/*
+ Inline shell polyfill to replace external shelljs dependency.
+ Implements Unix-style commands (mkdir, rm, cp, chmod, ln, ls, cat, exec)
+ using native Node fs and child_process APIs.
+ */
+const shell = {
+ config: { silent: true },
+ mkdir: (flag, dirPath) => {
+ const target = dirPath || flag;
+ try {
+ fs.mkdirSync(target, { recursive: true });
+ } catch (e) {}
+ return "";
+ },
+ rm: (flag, targetPath) => {
+ const target = targetPath || flag;
+ try {
+ fs.rmSync(target, { recursive: true, force: true });
+ } catch (e) {}
+ return "";
+ },
+ cp: (flag, src, dest) => {
+ const actualSrc = dest ? src : flag;
+ const actualDest = dest ? dest : src;
+ try {
+ if (typeof actualSrc === "string" && actualSrc.endsWith("/*")) {
+ const baseSrc = actualSrc.slice(0, -2);
+ if (fs.existsSync(baseSrc)) {
+ fs.cpSync(baseSrc, actualDest, { recursive: true });
+ }
+ } else {
+ fs.cpSync(actualSrc, actualDest, { recursive: true });
+ }
+ } catch (e) {}
+ return "";
+ },
+ chmod: (mode, targetPath) => {
+ try {
+ fs.chmodSync(targetPath, mode === "+x" ? 0o755 : mode);
+ } catch (e) {}
+ return "";
+ },
+ ln: (flag, src, dest) => {
+ const actualSrc = dest ? src : flag;
+ const actualDest = dest ? dest : src;
+ try {
+ try {
+ fs.unlinkSync(actualDest);
+ } catch (e) {}
+ fs.symlinkSync(actualSrc, actualDest);
+ } catch (e) {
+ try {
+ fs.copyFileSync(actualSrc, actualDest);
+ } catch (e) {}
+ }
+ return "";
+ },
+ ls: targetPath => {
+ try {
+ if (!fs.existsSync(targetPath)) return Object.assign([], { code: 1 });
+ const stat = fs.statSync(targetPath);
+ if (stat.isFile()) return Object.assign([targetPath], { code: 0 });
+ const files = fs.readdirSync(targetPath);
+ return Object.assign(files, { code: 0 });
+ } catch (e) {
+ return Object.assign([], { code: 1 });
+ }
+ },
+ cat: filePath => {
+ try {
+ return fs.readFileSync(filePath, "utf8");
+ } catch (e) {
+ return "";
+ }
+ },
+ exec: cmd => {
+ try {
+ const result = spawnSync(cmd, {
+ shell: true,
+ stdio: ["ignore", "pipe", "pipe"],
+ encoding: "utf8"
+ });
+ return {
+ code: result.status !== null ? result.status : 1,
+ stdout: result.stdout || "",
+ stderr: result.stderr || ""
+ };
+ } catch (e) {
+ return {
+ code: e.status || 1,
+ stdout: e.stdout || "",
+ stderr: e.stderr || ""
+ };
+ }
+ }
+};
- The functions in "runtime.js" are not meant to be invoked from Firepit, but are standalone scripts
- which get ran *through* Firepit when it is imitating Node.js.
+/*
+ Node Single Executable Application (SEA) support.
*/
-const runtime = require("./runtime");
+let sea;
+try {
+ sea = require("node:sea");
+} catch (e) {}
+const isSeaMode = typeof sea === "object" && typeof sea.isSea === "function" && sea.isSea();
+
+function extractSEAAsset(assetName, targetPath) {
+ if (isSeaMode) {
+ try {
+ const assetData = sea.getRawAsset ? sea.getRawAsset(assetName) : sea.getAsset(assetName);
+ const assetBuf = Buffer.isBuffer(assetData) ? assetData : Buffer.from(assetData);
+ fs.writeFileSync(targetPath, assetBuf);
+ debug(`Extracted asset ${assetName} to ${targetPath}`);
+ } catch (err) {
+ debug(`Failed to extract asset ${assetName}: ${err}`);
+ throw err;
+ }
+ }
+}
+const runtime = require("./runtime");
/*
We use a configuration file (see config.template.js) which is generated by our build pipeline to
determine if we're running in headless or headful mode.
*/
-let config;
+let config = { headless: true };
try {
- config = require("./config");
+ config = Object.assign({ headless: true }, require("./config"));
} catch (err) {
- console.warn("Invalid Firepit configuration, this may be a broken build.");
- process.exit(2);
+ // config file may not be present in local dev
}
const isWindows = process.platform === "win32";
@@ -161,25 +208,7 @@ const installPath = path.join(homePath, ".cache", "firebase", "tools");
let runtimeBinsPath = path.join(homePath, ".cache", "firebase", "runtime");
/*
- As I mentioned above, one of the ways we can control the detached children processes which get
- created when using Firepit is to pass special arguments when we're pretending to be them.
-
- In this case, when a user calls "npm" (and it routes to Firepit, pretending to be npm) we tack
- on a few scripts which change the global config file to point to our custom installPath and
- we supply a special "script shell".
-
- This "script shell" is normally something like "bash" or "cmd.exe", however in our case, we want
- to inject Firepit into there again to ensure everyone thinks the commands we're exposing still exist.
-
- You can see the implementation of this script in runtime.js/Script_ShellJS().
-
- When npm invokes a script on behalf of the developer (like when they run "npm run build") this
- command is then spawned in npm as "$SCRIPT_SHELL $USER_SCRIPT" so by replacing the this shell
- we can set up env variables / PATHs / etc then spawn the $USER_SCRIPT manually so the behavior
- looks no different.
-
- We use these base npmArgs every time we pretend to be npm. They can be overwritten by a user if
- they manually specify any of these flags and that would produce unexpected behavior.
+ Base npmArgs used whenever we pretend to be npm.
*/
const npmArgs = [
`--script-shell=${runtimeBinsPath}/shell${isWindows ? ".bat" : ""}`,
@@ -187,133 +216,174 @@ const npmArgs = [
`--scripts-prepend-node-path=auto`
];
-/*
- Windows is terrible and through-out Firepit you'll see references to "safe" and "unsafe" paths.
- Unsafe paths, on Windows, are ones with things like spaces in them - yes spaces break stuff.
-
- There is debate about who is at fault. It may be npm, it may be Node, it may be Microsoft, regardless
- if your username on Windows (for example) has a space in it, it'll break everything.
-
- Luckily because we control the universe in Firepit, we can use a crazy hack to replace any
- evil (i.e. space-inclusive) paths with DOS (yes DOS) style paths. See getSafeCrossPlatformPath()
-
- For example:
-
- unsafePath: C:\Program Files\Java\jdk1.6.0_22
- safePath: C:\PROGRA~1\Java\JDK16~1.0_2
-
- We use the safePath when needed (specifically when passing them through cmd.exe) to reduce the
- chances of space-related bugs.
-
- This is needed *all* the time, but it's pretty common in here.
- */
let safeNodePath;
const unsafeNodePath = process.argv[0];
/*
- Firepit supports some additional flags that the firebase command does not. These flags are
- generally used internally when Firepit invokes Firepit (for example, during welcome.js).
-
- If you want to run any of these flags, invoke Firepit with --tool:$COMMAND
+ Firepit flags
*/
const flagDefinitions = [
- "file-debug", // --tool:file-debug - Write log to a file
- "log-debug", // --tool:log-debug - Write log to stdout
- "disable-write", // --tool:disable-write - Do not write runtime scripts to filesystem
- "runtime-check", // --tool:runtime-check - Determine if firepit binary is node or not (see VerifyNodePath())
- "setup-check", // --tool:setup-check - Check if firebase-tools is set up
- "force-setup", // --tool:force-setup - Force Firepit to go through setup
- "force-update", // --tool:force-update - Aggressively clear npm cache and re-setup
- "ignore-embedded-cache" // --tool:ignore-embedded-cache - Setup from online, do not use embedded firebase-tools
+ "file-debug", // --tool:file-debug - Write log to a file
+ "log-debug", // --tool:log-debug - Write log to stdout
+ "disable-write", // --tool:disable-write - Do not write runtime scripts to filesystem
+ "runtime-check", // --tool:runtime-check - Determine if firepit binary is node or not
+ "setup-check", // --tool:setup-check - Check if firebase-tools is set up
+ "force-setup", // --tool:force-setup - Force Firepit to go through setup
+ "force-update", // --tool:force-update - Aggressively clear npm cache and re-setup
+ "ignore-embedded-cache" // --tool:ignore-embedded-cache - Setup from online, do not use embedded firebase-tools
];
-/*
- This script parses our flagDefinitions and returns a map like {file-debug: false, ...}
- */
const flags = flagDefinitions.reduce((flags, name) => {
flags[name] = process.argv.indexOf(`--tool:${name}`) !== -1;
if (flags[name]) {
process.argv.splice(process.argv.indexOf(`--tool:${name}`), 1);
}
-
return flags;
}, {});
-/*
- We use @zeit/pkg to actually bundle our JavaScript with the NodeJS runtime to produce our binaries.
- In general if you're running your code inside of pkg and you attempt to spawn the pkg binary which
- you invoked to run your code (i.e. firepit.exe invokes firepit.exe) what you'll actually be
- invoking is the underlying Node.js binary which is embedded is the binary.
-
- This works well, albeit it may be a bit unexpected, however due to the nature of Firepit,
- there's no assurance that we'll actually be in the same process at any given time.
-
- For example, if we invoke "./firepit" and Firepit spawns a shell and that shell is used to call "firebase"
- we're now in a situation where invoking "./firepit" from "firebase" will act as a fresh call to
- Firepit, resulting it in running through the setup and such.
-
- In another example, if we invoke "./firepit" and it immediately spawns "./firepit" then it'll
- be spawning a node process.
-
- I know this is confusing, but the moral is that we can be sure at any moment if spawning "./firepit"
- will provide us with this file running in Node or just a Node runtime.
-
- To detect what the "firepit" binary is we run "./firepit check.js --tool:runtime-check" in
- VerifyNodePath(). If "./firepit" is acting as Firepit, this conditional will flip and we'll
- just exit out. If "./firepit" is acting as a Node runtime, it'll invoke check.js and return
- a unicode ✓. This allows us to know if we can safely invoke Node scripts by calling ourselves
- or if we must call "./firepit is:node ./script" to force it to manually imitate Node.
- */
if (flags["runtime-check"]) {
console.log(`firepit invoked for runtime check, exiting subpit.`);
return;
}
+const APPEND_TO_PATH_SRV = `function appendToPath(isWin, pathsToAppend) {
+ const PATH = process.env.PATH;
+ const pathSeperator = isWin ? ";" : ":"
+ process.env.PATH = [
+ ...pathsToAppend,
+ ...PATH.split(pathSeperator).filter(folder => folder)
+ ].join(pathSeperator);
+}`;
+
+const GET_SAFE_PATH_SRV = `async function getSafeCrossPlatformPath(isWin, path) {
+ if (!isWin) return path;
+ let command = \`for %I in ("\${path}") do echo %~sI\`;
+ return new Promise(resolve => {
+ const cmd = require("child_process").spawn(\`cmd\`, ["/c", command], {
+ shell: true
+ });
+ let result = "";
+ cmd.on("error", error => {
+ throw error;
+ });
+ cmd.stdout.on("data", stdout => {
+ result += stdout.toString();
+ });
+ cmd.on("close", code => {
+ if (code === 0) {
+ const lines = result.split("\\r\\n").filter(line => line);
+ const path = lines.slice(-1)[0];
+ resolve(path.trim());
+ } else {
+ throw \`Attempt to dosify path failed with code \${code}\`;
+ }
+ });
+ });
+}`;
+
debug(`Welcome to firepit v${version}!`);
/*
-
-------------------------------------
The Main Path
-------------------------------------
-
- When running Firepit, we start here. This async closure handles checking most of the --tool flags
- and ensuring that Firepit is setup and in-place before running firepit()
*/
(async () => {
/*
- Any time we invoke a child process from Firepit, we tack on a FIREPIT_VERSION env variable.
- This is useful here so we can detect if we are the "top level" Firepit instance.
+ In Node Single Executable Application (SEA) mode, any child process forked from Firepit
+ (such as child_process.fork(script) or firebase is:node script.js) will invoke the SEA
+ executable as the Node runtime. We intercept child script invocations at the entrypoint
+ and execute the requested script directly via createRequire to prevent recursive execution
+ of the main Firepit router.
+ */
+ if (isSeaMode) {
+ const moduleProto = require("module");
+ if (moduleProto.Module && typeof moduleProto.Module._nodeModulePaths === "function") {
+ moduleProto.Module._nodeModulePaths(installPath).forEach(p => {
+ if (!module.paths.includes(p)) {
+ module.paths.push(p);
+ }
+ });
+ }
- For example, if you are running Firepit in headful mode then the first instance of Firepit
- spawns you a command prompt window. In that command prompt we go through welcome.js then
- you're given access to the "firebase" command.
+ function isJsScript(filePath) {
+ if (!filePath) return false;
+ try {
+ const resolved = path.resolve(filePath);
+ if (resolved === path.resolve(process.execPath)) return false;
+ if (!fs.existsSync(resolved)) return false;
+ const stat = fs.statSync(resolved);
+ if (!stat.isFile()) return false;
+
+ const ext = path.extname(resolved).toLowerCase();
+ const base = path.basename(resolved).toLowerCase();
+ if (base === "firebase" || base === "firebase.exe") return false;
+ if ([".js", ".cjs", ".mjs"].includes(ext)) return true;
+
+ // Check for binary headers (ELF, Mach-O, Windows PE)
+ const fd = fs.openSync(resolved, "r");
+ const buf = Buffer.alloc(4);
+ fs.readSync(fd, buf, 0, 4, 0);
+ fs.closeSync(fd);
+
+ if (buf[0] === 0x7f && buf.toString("ascii", 1, 4) === "ELF") return false;
+ if (buf.toString("ascii", 0, 2) === "MZ") return false;
+ const magic32 = buf.readUInt32BE(0);
+ if (
+ magic32 === 0xfeedface ||
+ magic32 === 0xfeedfacf ||
+ magic32 === 0xcafebabe ||
+ magic32 === 0xcefaedfe ||
+ magic32 === 0xcffaedfe
+ ) {
+ return false;
+ }
+ return true;
+ } catch (err) {
+ return false;
+ }
+ }
+
+ let resolvedScriptPath;
+ let spliceIndex;
+ const { createRequire } = require("module");
+ const fsRequire = createRequire(process.execPath);
+
+ if (process.argv[1] && isJsScript(process.argv[1])) {
+ try {
+ resolvedScriptPath = fsRequire.resolve(path.resolve(process.argv[1]));
+ spliceIndex = 1;
+ } catch (err) {}
+ }
+ if (!resolvedScriptPath && process.argv[2] && isJsScript(process.argv[2])) {
+ try {
+ resolvedScriptPath = fsRequire.resolve(path.resolve(process.argv[2]));
+ spliceIndex = 2;
+ } catch (err) {}
+ }
+
+ if (resolvedScriptPath) {
+ process.argv[0] = process.execPath;
+ if (spliceIndex === 2) {
+ process.argv.splice(1, 1);
+ }
+ process.argv[1] = resolvedScriptPath;
+ try {
+ const Module = require("module");
+ Module.runMain();
+ } catch (err) {
+ console.error(err);
+ process.exit(1);
+ }
+ return;
+ }
+ }
- When you run "firebase", if we didn't know if we were top-level then you'd just spawn another
- command prompt window - clearly not what we want. So we look for the env variable set by the
- process which spawned the window. If it exists, we functionally fall into "headless" mode
- and act like a normal Firebase CLI.
- */
const isTopLevel = !process.env.FIREPIT_VERSION;
- /*
- As I mentioned above, we make heavy use of this function to DOS-isy paths to avoid space-issues.
- In this case, we're using process.argv[0] (always a reference to the node binary which spawned
- this script) and turning it safe so we have an invokable Node.js runtime for later.
- */
safeNodePath = await getSafeCrossPlatformPath(isWindows, process.argv[0]);
- /*
- If the user has ever had an older version of Firepit, clear it out and replace it with us.
- */
uninstallLegacyFirepit();
- /*
- --tool:setup-check is used by welcome.js and returns out a JSON list of binaries for the "firebase"
- command. It's essentially a check to see if we can find a copy of "firebase" to invoke.
-
- The FindTool function looks in several places for where it thinks our firebase script might be
- and returns as many as it fins. We almost always use the 0th one.
- */
if (flags["setup-check"]) {
const bins = FindTool("firebase-tools/lib/bin/firebase");
@@ -325,44 +395,11 @@ debug(`Welcome to firepit v${version}!`);
return;
}
-
- /*
- --tool:force-update is never used internally, but can be useful for EAPs where version numbers
- may be incorrect. This manually clear NPMs cache and then flips the flags "ignore-embedded-cache"
- and "force-setup" to tell Firepit to install itself from the remote package (either a link to a
- tgz or just firebase-tools@latest).
- */
if (flags["force-update"]) {
console.log(`Please wait while we clear npm's cache...`);
- /*
- This is the first instance of invoking one of the Imitate*() methods. These methods are
- the methods which "route" to the underlying scripts for each command. As you'd expect
- ImitateNPM forces the process to act just like npm.
-
- By replacing the process.argv before calling ImitateNPM(), we're rewriting what the
- command was which called Firepit. For example, this snippet creates the following command...
-
- /blah/blah/node ./firepit.js is:npm cache clean --force
-
- As far as Firepit is concerned, this looks just like invoking it with is:npm from the top.
-
- It may be cleaner to have Imitate*() take an array of command strings instead of modifying
- process.argv, but for now I'll leave it like this.
- */
- process.argv = [
- ...process.argv.slice(0, 2),
- "is:npm",
- "cache",
- "clean",
- "--force"
- ];
+ process.argv = [...process.argv.slice(0, 2), "is:npm", "cache", "clean", "--force"];
- /*
- The Imitate*() methods also always return codes (0, 1, 2) from the underlying script. We
- need to make sure we bubble these up because incorrect handling of exit codes will create
- unexpected behavior in scripts.
- */
const code = await ImitateNPM();
if (code) {
@@ -374,23 +411,13 @@ debug(`Welcome to firepit v${version}!`);
flags["force-setup"] = true;
console.log(`Clearing out your firebase-tools setup...`);
- /*
- Here's a handy use of shelljs. It's stupidly hard to recursively remove a directory with
- Node's standard libs. Shelljs makes it trivial.
- */
- shell.rm("-rf", installPath);
+ try {
+ fs.rmSync(installPath, { recursive: true, force: true });
+ } catch (e) {}
}
- /*
- Every time Firepit is invoked it recreates the runtime binaries (node, npm, shell) because
- these binaries need to know the current location of the Firepit binary. See the function
- comments for more.
- */
await createRuntimeBinaries();
- /*
- If we're in --tool:force-setup then extract or remotely install firebase-tools then exit out.
- */
if (flags["force-setup"]) {
debug("Forcing setup...");
await SetupFirebaseTools();
@@ -398,41 +425,22 @@ debug(`Welcome to firepit v${version}!`);
return;
}
- /*
- As I mentioned above, isTopLevel is basically the same as headless mode. There's an entire flow
- here which revolves around invoking "./welcome.js" See that script for more details
- */
if (isTopLevel && !config.headless) {
const welcome_path = await getSafeCrossPlatformPath(
isWindows,
- path.join(__dirname, "/welcome.js")
+ path.join(isSeaMode ? runtimeBinsPath : __dirname, "welcome.js")
);
const firebaseToolsCommand = await getFirebaseToolsCommand();
- /*
- This function adds a directory onto the PATH env variable. On Windows they're ; separated
- and *nix they're : seperated.
- */
appendToPath(isWindows, [path.join(installPath, "bin"), runtimeBinsPath]);
- /*
- As I mentioned above, we set the FIREPIT_VERSION env variable so that the shell we spawn
- doesn't spawn another window and it instead acts as a headless firepit.
- */
const shellEnv = {
FIREPIT_VERSION: version,
...process.env
};
if (isWindows) {
- /*
- This is some of the only platform specific bits we have here. On Windows, headful mode spawns
- a custom cmd.exe prompt with doskey (alias) commands called to expose the "firebase" and "npm"
- commands. We also set the prompt to a neat yellow ">" then invoke the welcome script.
-
- This top level Firepit script sits open until the developer closes that terminal.
- */
const shellConfig = {
stdio: "inherit",
env: shellEnv
@@ -456,16 +464,7 @@ debug(`Welcome to firepit v${version}!`);
debug("Received SIGINT. Refusing to close top-level shell.");
});
} else {
- /*
- If we're not on Windows, then we can technically perform headful mode on Mac. By default double-clicking
- a binary on Mac will pop up a terminal, so we just invoke the welcome screen and set the bash prompt.
- */
- process.argv = [
- ...process.argv.slice(0, 2),
- "is:node",
- welcome_path,
- firebaseToolsCommand
- ];
+ process.argv = [...process.argv.slice(0, 2), "is:node", welcome_path, firebaseToolsCommand];
const code = await ImitateNode();
if (code) {
@@ -479,11 +478,6 @@ debug(`Welcome to firepit v${version}!`);
});
}
} else {
- /*
- In the case that Firepit is not in headful mode (or it was loaded in headful more, but is
- not the top level process), then we jump into the actual firepit() method which takes care
- of routing the is:npm, is:node, or other core modes.
- */
SetWindowTitle("Firebase CLI");
await firepit();
}
@@ -492,10 +486,6 @@ debug(`Welcome to firepit v${version}!`);
fs.writeFileSync("firepit-log.txt", debug.log.join("\n"));
}
})().catch(err => {
- /*
- Note we have a high-level catch here which attempts to catch any crazy firepit errors. This is
- rarely hit, but it will produce a firepit-log.txt when some internal errors occur.
- */
debug(err.toString());
console.log(
`This tool has encountered an error. Please file a bug on Github (https://github.com/firebase/firebase-tools/) and include firepit-log.txt`
@@ -503,16 +493,9 @@ debug(`Welcome to firepit v${version}!`);
fs.writeFileSync("firepit-log.txt", debug.log.join("\n"));
});
-
async function firepit() {
- /*
- When running inside Node, the "node" binary is stored in many places. As I mentioned earlier,
- it's the 0th item of process.argv and it's also in a couple other places. To be safe we
- get a "safe" version of the Node runtime path and replace all known references with this.
- */
runtimeBinsPath = await getSafeCrossPlatformPath(isWindows, runtimeBinsPath);
- // TODO: I'm not sure this is needed, more testing would be useful.
process.argv[0] = safeNodePath;
process.env.NODE = safeNodePath;
process.env._ = safeNodePath;
@@ -520,14 +503,9 @@ async function firepit() {
debug(safeNodePath);
debug(process.argv);
- // TODO: This may not be needed since we invoke createRuntimeBinaries() earlier
await createRuntimeBinaries();
appendToPath(isWindows, [runtimeBinsPath]);
- /*
- We check for the is:npm and is:node flags and if either exist, we opt ot imitate that process
- and then exit out when done.
- */
if (process.argv.indexOf("is:npm") !== -1) {
const code = await ImitateNPM();
process.exit(code);
@@ -538,14 +516,6 @@ async function firepit() {
process.exit(code);
}
- /*
- If Firepit was invoked in headless mode, there is a chance that firebase-tools has not been set
- up yet (since the welcome screen was never shown and that script is what calls --tool:forces-setup.
-
- To be sure, we attempt to find the firebase-tools script and if it's not found, we attempt a setup.
-
- After the setup, if the script still isn't found then something is wrong and we die.
- */
let firebaseBins = FindTool("firebase-tools/lib/bin/firebase");
if (!firebaseBins.length) {
debug(`CLI not found! Invoking setup...`);
@@ -553,10 +523,6 @@ async function firepit() {
firebaseBins = FindTool("firebase-tools/lib/bin/firebase");
}
- /*
- Assuming we've gotten this far, we've found the CLI and we're ready to run firebase-tools.
- That was easy, huh?
- */
const firebaseBin = firebaseBins[0];
debug(`CLI install found at "${firebaseBin}", starting fork...`);
const code = await ImitateFirebaseTools(firebaseBin);
@@ -567,11 +533,6 @@ async function firepit() {
-------------------------------------
Imitate*()
-------------------------------------
-
- All of the Imitate*() methods are very similar. For is:npm and is:node we break process.argv
- based on that string and then pass everything on the right to the script, which is forked from
- the main Node process. We create a promise (which can be awaited) and then resolve when the
- command is done.
*/
function ImitateNPM() {
@@ -595,22 +556,123 @@ function ImitateNode() {
debug("Detected is:node flag, calling node");
const breakerIndex = process.argv.indexOf("is:node") + 1;
const nodeArgs = [...process.argv.slice(breakerIndex)];
+
+ if (nodeArgs.length === 0) {
+ console.log("Welcome to Node.js " + process.version);
+ return Promise.resolve(0);
+ }
+
+ if (nodeArgs[0] === "-v" || nodeArgs[0] === "--version") {
+ console.log(process.version);
+ return Promise.resolve(0);
+ }
+
+ if (nodeArgs[0] === "-e" || nodeArgs[0] === "--eval") {
+ const code = nodeArgs[1] || "";
+ try {
+ const vm = require("vm");
+ const { createRequire } = require("module");
+ const contextRequire = createRequire(process.cwd() + "/index.js");
+ const sandbox = {
+ require: contextRequire,
+ process,
+ console,
+ Buffer,
+ setTimeout,
+ clearTimeout,
+ setInterval,
+ clearInterval,
+ setImmediate,
+ clearImmediate,
+ global
+ };
+ sandbox.global = sandbox;
+ const context = vm.createContext(sandbox);
+ vm.runInContext(code, context);
+ return Promise.resolve(0);
+ } catch (e) {
+ console.error(e);
+ return Promise.resolve(1);
+ }
+ }
+
+ if (nodeArgs[0] === "-p" || nodeArgs[0] === "--print") {
+ const code = nodeArgs[1] || "";
+ try {
+ const vm = require("vm");
+ const { createRequire } = require("module");
+ const contextRequire = createRequire(process.cwd() + "/index.js");
+ const sandbox = {
+ require: contextRequire,
+ process,
+ console,
+ Buffer,
+ setTimeout,
+ clearTimeout,
+ setInterval,
+ clearInterval,
+ setImmediate,
+ clearImmediate,
+ global
+ };
+ sandbox.global = sandbox;
+ const context = vm.createContext(sandbox);
+ console.log(vm.runInContext(code, context));
+ return Promise.resolve(0);
+ } catch (e) {
+ console.error(e);
+ return Promise.resolve(1);
+ }
+ }
+
return new Promise(resolve => {
- const cmd = fork(nodeArgs[0], nodeArgs.slice(1), {
+ const execArgv = [];
+ let scriptIndex = 0;
+ while (scriptIndex < nodeArgs.length) {
+ const arg = nodeArgs[scriptIndex];
+ if (arg.startsWith("-")) {
+ execArgv.push(arg);
+ if (
+ (arg === "-r" || arg === "--require" || arg === "--import") &&
+ scriptIndex + 1 < nodeArgs.length
+ ) {
+ execArgv.push(nodeArgs[scriptIndex + 1]);
+ scriptIndex += 2;
+ } else {
+ scriptIndex += 1;
+ }
+ } else {
+ break;
+ }
+ }
+
+ const scriptPath = nodeArgs[scriptIndex];
+ const scriptArgs = nodeArgs.slice(scriptIndex + 1);
+ let target = scriptPath ? path.resolve(scriptPath) : "";
+ if (target && !fs.existsSync(target) && fs.existsSync(target + ".js")) {
+ target = target + ".js";
+ }
+ const cmd = fork(target, scriptArgs, {
stdio: "inherit",
- env: process.env
+ env: process.env,
+ execArgv
});
cmd.on("close", code => {
debug(`faux-node done.`);
resolve(code);
});
+ cmd.on("error", err => {
+ console.error(err);
+ resolve(1);
+ });
});
}
function ImitateFirebaseTools(binPath) {
debug("Detected no special flags, calling firebase-tools");
+ const targetScript = binPath.endsWith(".js") ? binPath : binPath + ".js";
return new Promise(resolve => {
- const cmd = fork(binPath, process.argv.slice(2), {
+ const cmd = fork(targetScript, process.argv.slice(2), {
stdio: "inherit",
env: { ...process.env, FIREPIT_VERSION: version }
});
@@ -628,122 +690,106 @@ function ImitateFirebaseTools(binPath) {
*/
async function createRuntimeBinaries() {
- /*
- As discussed in the introduction, Firepit isn't *just* firebase-tools, it's also npm and node.
- We need it to act as several CLI tools in order to support firebase-tools because it shells out
- to these other commands in some situations.
-
- In order to support this we add a few special scripts onto the users's path so when a user (or
- script) invokes "npm" or "node" it redirects back into Firepit so we can control the environment
- regardless of how that command was invoked.
-
- To do this cross-platform, we need to create both shell and batch scripts (for nix / windows).
- These scripts are kept very minimal, as you can see in runtimeBins, they're mostly one line or
- two.
-
- Each of the platform-specific scripts like "shell" or "node.bat" do the absolute minimum work
- needed to act as an executable binary, then immediately redirect the arguments passed to it
- back into Firepit via the "shell.js" or "node.js" scripts. (See runtime.js for contents). These
- two scripts do the majority of heavy lifting in terms of imitating npm or node.
-
- Originally, we implemented the node / npm stand-ins in pure bash or batch, however there was
- way too much platform specific code, by redirecting us back into Firepit (and Node) we add
- another process, but we also dramatically reduce per-platform code. The Node code is
- cross-platform and works perfectly everywhere. It's also easier to test because any *nix
- machine can functionally test the same code that would run on Windows or vice-versa.
- */
+ const safeNodePath = await getSafeCrossPlatformPath(isWindows, process.argv[0]);
+ const unsafeNodePath = process.argv[0];
+ const isRuntime = await VerifyNodePath(safeNodePath);
+
+ const npmArgs = [
+ `--scripts-prepend-node-path=auto`,
+ `--script-shell=${path.join(runtimeBinsPath, "shell")}${isWindows ? ".bat" : ""}`,
+ `--globalconfig=${path.join(runtimeBinsPath, "npmrc")}`
+ ];
+
+ const npmCliPath =
+ FindTool("npm/bin/npm-cli")[0] ||
+ path.join(installPath, "lib/node_modules/npm/bin/npm-cli.js");
+
const runtimeBins = {
/* Linux / OSX */
- shell: `"${unsafeNodePath}" ${runtimeBinsPath}/shell.js "$@"`,
- node: `"${unsafeNodePath}" ${runtimeBinsPath}/node.js "$@"`,
- npm: `"${unsafeNodePath}" "${
- FindTool("npm/bin/npm-cli")[0]
- }" ${npmArgs.join(" ")} "$@"`,
+ firebase: `#!/bin/sh\nexec "${safeNodePath}" "$@"`,
+ node: `#!/bin/sh\nexec "${safeNodePath}" is:node "$@"`,
+ npm: `#!/bin/sh\nexec "${safeNodePath}" "${npmCliPath}" ${npmArgs.join(" ")} "$@"`,
+ shell: `#!/bin/sh\nPATH="${runtimeBinsPath}:${installPath}/lib/node_modules/.bin:\$PWD/node_modules/.bin:\$PATH"\nexport PATH\nexec /bin/sh "$@"`,
/* Windows */
- "node.bat": `@echo off
-"${unsafeNodePath}" ${runtimeBinsPath}\\node.js %*`,
- "shell.bat": `@echo off
-"${unsafeNodePath}" ${runtimeBinsPath}\\shell.js %*`,
- "npm.bat": `@echo off
-node "${FindTool("npm/bin/npm-cli")[0]}" ${npmArgs.join(" ")} %*`,
+ "firebase.bat": `@echo off\n"${safeNodePath}" %*`,
+ "node.bat": `@echo off\n"${safeNodePath}" is:node %*`,
+ "npm.bat": `@echo off\n"${safeNodePath}" "${npmCliPath}" ${npmArgs.join(
+ " "
+ )} %*`,
+ "shell.bat": `@echo off\nset "PATH=${runtimeBinsPath};${installPath}\\lib\\node_modules\\.bin;%CD%\\node_modules\\.bin;%PATH%"\nif "%~1"=="" goto interactive\ncmd.exe /d /s /c %*\nexit /b %ERRORLEVEL%\n:interactive\ncmd.exe /k`,
/* Runtime scripts */
- "shell.js": `${appendToPath.toString()}\n${getSafeCrossPlatformPath.toString()}\n(${runtime.Script_ShellJS.toString()})()`,
+ "shell.js": `${APPEND_TO_PATH_SRV}\n${GET_SAFE_PATH_SRV}\n(${runtime.Script_ShellJS.toString()})()`,
"node.js": `(${runtime.Script_NodeJS.toString()})()`,
/* Config files */
- npmrc: `prefix = ${installPath}`
+ npmrc: `prefix=${installPath}`
};
- /*
- We handle creating the runtimeBins files by looping through and writing files. There's nothing
- special or interesting here.
- */
-
try {
- shell.mkdir("-p", runtimeBinsPath);
+ fs.mkdirSync(runtimeBinsPath, { recursive: true });
} catch (err) {
debug(err);
}
- if (!flags["disable-write"]) {
+ if (isRuntime) {
Object.keys(runtimeBins).forEach(filename => {
const runtimeBinPath = path.join(runtimeBinsPath, filename);
try {
- shell.rm("-rf", runtimeBinPath);
+ fs.rmSync(runtimeBinPath, { recursive: true, force: true });
} catch (err) {
debug(err);
}
fs.writeFileSync(runtimeBinPath, runtimeBins[filename]);
- shell.chmod("+x", runtimeBinPath);
+ fs.chmodSync(runtimeBinPath, 0o755);
});
+
+ if (isSeaMode) {
+ extractSEAAsset("welcome.js", path.join(runtimeBinsPath, "welcome.js"));
+ extractSEAAsset("check.js", path.join(runtimeBinsPath, "check.js"));
+ }
}
debug("Runtime binaries created.");
}
-
async function SetupFirebaseTools() {
- /*
- Firepit supports "setting up" (that is, installing) firebase-tools in two ways.
-
- 1) Use the copy of firebase-tools which is stored inside the firepit binary at
- join(__dirname, "vendor/node_modules/firebase-tools")
- 2) Use a copy of firebase-tools installed via npm via the internet.
- */
debug(`Attempting to install to "${installPath}"`);
const original_argv = [...process.argv];
const nodeModulesPath = path.join(installPath, "lib");
const binPath = path.join(installPath, "bin");
- debug(shell.mkdir("-p", nodeModulesPath).toString());
- debug(shell.mkdir("-p", binPath).toString());
-
- /*
- In general, we use the embedded version of firebase-tools. Once installed, this version can be
- upgraded via npm, however it's important to skip npm for the initial setup as it's dramatically
- faster.
- */
+ fs.mkdirSync(nodeModulesPath, { recursive: true });
+ fs.mkdirSync(binPath, { recursive: true });
if (!flags["ignore-embedded-cache"]) {
- /*
- When doing the embedded install, the setup is as simple as cp -R'ing the JavaScript files
- to the right place then linking the script to a bin folder (see below).
- */
- debug("Using embedded cache for quick install...");
- debug(
- shell
- .cp("-R", path.join(__dirname, "vendor/*"), nodeModulesPath)
- .toString()
- );
+ if (isSeaMode) {
+ debug("Extracting embedded assets...");
+ const tarballPath = path.join(installPath, "firepit-assets.tar.gz");
+ extractSEAAsset("firepit-assets.tar.gz", tarballPath);
+
+ try {
+ debug(`Running tar command to extract: ${tarballPath}`);
+ const result = shell.exec(`tar -xzf "${tarballPath}" -C "${installPath}"`);
+ if (result.code !== 0) {
+ console.error(`Failed to extract firepit assets: ${result.stderr || result.stdout}`);
+ process.exit(1);
+ }
+ } catch (err) {
+ console.error(`Failed to extract firepit assets: ${err.message}`);
+ process.exit(1);
+ }
+ try {
+ fs.unlinkSync(tarballPath);
+ } catch (e) {}
+ debug("Embedded assets extracted successfully.");
+ await createRuntimeBinaries();
+ } else {
+ debug("Using embedded cache for quick install...");
+ shell.cp("-R", path.join(__dirname, "vendor/*"), nodeModulesPath);
+ }
} else {
- /*
- When doing a remote install, we ImitateNPM and run a normal npm install. Note that we're
- installing both firebase-tools and "npm" because this will upgrade the copy of npm used
- by Firepit. Better up-to-date than sorry!
- */
debug("Using remote for slow install...");
- // Install remotely
process.argv = [
...process.argv.slice(0, 2),
"is:npm",
@@ -759,34 +805,16 @@ async function SetupFirebaseTools() {
}
}
- /*
- When installing remotely, npm automatically links the firebase-tools script to a binary folder,
- however sometimes this doesn't happen as expected, so we manually call shell.ln (link) to create
- a symlink regardless of the install type.
-
- This step ensures that whether the firebase-tools install was created from the remote or
- local install that the binary still exists in the same place.
-
- Note we can not simply move firebase.js because it uses imports relative to it's position in
- the node_modules tree.
- */
debug(
shell
.ln(
"-sf",
- path.join(
- nodeModulesPath,
- "node_modules/firebase-tools/lib/bin/firebase.js"
- ),
+ path.join(nodeModulesPath, "node_modules/firebase-tools/lib/bin/firebase.js"),
path.join(binPath, "firebase")
)
.toString()
);
- /*
- Finally we check to make sure we now have a copy of the "firebase" command which is findable
- and then restore the original process.argv before finishing the setup.
- */
if (!FindTool("firebase-tools/lib/bin/firebase").length) {
console.warn(`firebase-tools setup failed.`);
process.exit(2);
@@ -802,42 +830,33 @@ async function SetupFirebaseTools() {
*/
function uninstallLegacyFirepit() {
- /*
- There are two situations where we should trash the Firepit install directory.
+ const cliDir = path.join(homePath, ".cache", "firebase", "cli");
+ const isLegacyFirepit = fs.existsSync(cliDir);
- 1) We're using an old firepit version where the "cli" folder exists
- 2) We're using an old firebase-tools version where the version is different than ours.
- */
-
- /*
- To detect an old-style Firepit install, we look for the "cli" folder, a folder which has
- been renmaed in new Firepit builds.
- */
- const isLegacyFirepit = !shell.ls(
- path.join(homePath, ".cache", "firebase", "cli")
- ).code;
-
- /*
- To check for mismatched firebase-tools versions, we find the package.json and read the version
- manually then compare it to ours.
- */
- let installedFirebaseToolsPackage = {};
const installedFirebaseToolsPackagePath = path.join(
homePath,
".cache/firebase/tools/lib/node_modules/firebase-tools/package.json"
);
- const firepitFirebaseToolsPackagePath = path.join(
- __dirname,
- "vendor/node_modules/firebase-tools/package.json"
- );
- debug(`Doing JSON parses for version checks at ${firepitFirebaseToolsPackagePath}`);
- debug(shell.ls(path.join(__dirname, "vendor/node_modules/")));
- const firepitFirebaseToolsPackage = JSON.parse(
- shell.cat(firepitFirebaseToolsPackagePath)
- );
+
+ let firepitFirebaseToolsVersion = config.firebase_tools_version;
+ if (!firepitFirebaseToolsVersion) {
+ const firepitFirebaseToolsPackagePath = path.join(
+ __dirname,
+ "vendor/node_modules/firebase-tools/package.json"
+ );
+ try {
+ firepitFirebaseToolsVersion = JSON.parse(
+ fs.readFileSync(firepitFirebaseToolsPackagePath, "utf8")
+ ).version;
+ } catch (err) {
+ debug("No packaged firebase-tools version found in local dev.");
+ }
+ }
+
+ let installedFirebaseToolsPackage = {};
try {
installedFirebaseToolsPackage = JSON.parse(
- shell.cat(installedFirebaseToolsPackagePath)
+ fs.readFileSync(installedFirebaseToolsPackagePath, "utf8")
);
} catch (err) {
debug("No existing firebase-tools install found.");
@@ -845,180 +864,102 @@ function uninstallLegacyFirepit() {
debug(
`Installed ft@${installedFirebaseToolsPackage.version ||
- "none"} and packaged ft@${firepitFirebaseToolsPackage.version}`
+ "none"} and packaged ft@${firepitFirebaseToolsVersion}`
);
const isLegacyFirebaseTools =
- installedFirebaseToolsPackage.version !==
- firepitFirebaseToolsPackage.version;
-
- /*
- If either of these conditions are true, we just delete the whole cache and start over fresh.
- */
+ installedFirebaseToolsPackage.version &&
+ firepitFirebaseToolsVersion &&
+ installedFirebaseToolsPackage.version !== firepitFirebaseToolsVersion;
if (!isLegacyFirepit && !isLegacyFirebaseTools) return;
debug("Legacy firepit / firebase-tools detected, clearing it out...");
- debug(shell.rm("-rf", path.join(homePath, ".cache", "firebase")));
+ try {
+ fs.rmSync(path.join(homePath, ".cache", "firebase"), { recursive: true, force: true });
+ } catch (err) {
+ debug(err.message);
+ }
}
async function getFirebaseToolsCommand() {
- /*
- This helper function produces an absolute, cross-platform "firebase" command reference.
-
- It outputs either "c:\path\to\firebase.exe" or "c:\path\to\firebase.exe path\to\firebase.js"
- As discussed above, whether running the firepit binary results in a Node.js runtime or the
- "firebase" command can change (seemingly randomly, but it's not) depending on if we're
- inside of an existing pkg process. Doing this check ensures that we get a command which
- when ran results in "firebase" being ran regardless of environment.
- */
+ const safeNodePath = await getSafeCrossPlatformPath(isWindows, process.argv[0]);
const isRuntime = await VerifyNodePath(safeNodePath);
debug(`Node path ${safeNodePath} is runtime? ${isRuntime}`);
let firebase_command;
- if (isRuntime) {
+ if (isRuntime && !isSeaMode) {
const script_path = await getSafeCrossPlatformPath(
isWindows,
path.join(__dirname, "/firepit.js")
);
- //TODO: We should store this as an array to prevent issues with spaces
- firebase_command = `${safeNodePath} ${script_path}`;
+ firebase_command = `"${safeNodePath}" "${script_path}"`;
} else {
- firebase_command = safeNodePath;
+ firebase_command = `"${safeNodePath}"`;
}
- debug(firebase_command);
+
+ debug(`Using firebase command: ${firebase_command}`);
return firebase_command;
}
async function VerifyNodePath(nodePath) {
- /*
- VerifyNodePath invokes the firepit binary with two flags...
-
- ./firepit check.js --tool:runtime-check
-
- This allows us to determine if the current environment is internal to pkg or not. When it's
- internal, meaning that the invocation of firepit is a direct child of another firepit process
- then ./firepit will invoke the node runtime which is bundled within the firepit binary.
-
- When it's not internal, it will run the firepit scripts.
-
- This check works because with these flags ./firepit call will run check.js and return a
- checkmark if it's acting as the Node runtime and if it's not it will just log something
- else and exit.
-
- We use this to ensure that we can always build a command which invokes the Firebase CLI
- regardless of where the process is actually being spawned.
- */
+ const basename = path.basename(nodePath);
+ if (
+ nodePath === process.execPath ||
+ basename.includes("firepit") ||
+ basename.includes("firebase-tools")
+ ) {
+ return isSeaMode;
+ }
const runtimeCheckPath = await getSafeCrossPlatformPath(
isWindows,
- path.join(__dirname, "check.js")
+ path.join(isSeaMode ? runtimeBinsPath : __dirname, "check.js")
);
return new Promise(resolve => {
const cmd = spawn(nodePath, [runtimeCheckPath, "--tool:runtime-check"], {
- shell: true
- });
-
- let result = "";
- cmd.on("error", error => {
- throw error;
+ stdio: "ignore"
});
-
- cmd.stderr.on("data", stderr => {
- debug(`STDERR: ${stderr.toString()}`);
- });
-
- cmd.stdout.on("data", stdout => {
- debug(`STDOUT: ${stdout.toString()}`);
- result += stdout.toString();
- });
-
cmd.on("close", code => {
- debug(
- `[VerifyNodePath] Expected "✓" from runtime got code ${code} with output "${result}"`
- );
- if (code === 0) {
- if (result.indexOf("✓") >= 0) {
- resolve(true);
- } else {
- resolve(false);
- }
- } else {
- resolve(false);
- }
+ resolve(code === 0);
+ });
+ cmd.on("error", () => {
+ resolve(false);
});
});
}
function FindTool(bin) {
- /*
- This method returns a list of files which match the script name provided. We use this to
- locate npm, firebase-tools, etc.
- */
-
const potentialPaths = [
path.join(installPath, "lib/node_modules", bin),
+ path.join(installPath, "lib/node_modules/firebase-tools/standalone/node_modules", bin),
path.join(installPath, "node_modules", bin),
+ path.join(installPath, "lib", bin),
path.join(__dirname, "node_modules", bin)
];
return potentialPaths
- .map(path => {
- debug(`Checking for ${bin} install at ${path}`);
- if (shell.ls(path + ".js").code === 0) {
- debug(`Found ${bin} install.`);
- return path;
- }
+ .map(p => {
+ debug(`Checking for ${bin} install at ${p}`);
+ if (fs.existsSync(p)) return p;
+ if (fs.existsSync(p + ".js")) return p + ".js";
})
- .filter(p => p);
+ .filter(Boolean);
}
function SetWindowTitle(title) {
- /*
- This method *attempts* to set the terminal window title to something pretty so it doesn't
- show the internal shell'ing we do. It kinda works, but fails silently, so I've left it in.
- */
if (isWindows) {
process.title = title;
}
}
-
/*
-------------------------------------
Shared Functions
-------------------------------------
-
- These methods are very special and should be edited carefully. They must be pure JavaScript
- functions which do not rely on any global state or imports.
-
- If you look at createRuntimeBinaries() and see the runtimeBins scripts, you'll see that we
- call getSafeCrossPlatformPath.toString() and appendToPath.toString() and put them into the
- scripts which we place on the filesystem. We do this because the scripts in ./runtime.js
- depend on these functions and since we need to create single JavaScript files to drop onto
- the user's filesystem, we concat them together.
-
- This is fairly dangerous, but we don't have many options.
*/
async function getSafeCrossPlatformPath(isWin, path) {
- /*
- This function generates "safe" DOS style file paths on Windows.
-
- For example:
-
- unsafePath: C:\Program Files\Java\jdk1.6.0_22
- safePath: C:\PROGRA~1\Java\JDK16~1.0_2
-
- These paths remove spaces and special characters which could interfere with the terminal.
- In theory, it should be possible to avoid this, but because of issues in npm, we need to be
- extra safe about spaces.
- */
if (!isWin) return path;
- /*
- This is perhaps the biggest hack in Firepit, we shell out to command and run a small script
- which returns the DOS-formatted version of a path. This is not fast, but it's (apparently)
- the only way to fetch the safe version of a path
- */
let command = `for %I in ("${path}") do echo %~sI`;
return new Promise(resolve => {
const cmd = require("child_process").spawn(`cmd`, ["/c", command], {
@@ -1046,24 +987,15 @@ async function getSafeCrossPlatformPath(isWin, path) {
}
function appendToPath(isWin, pathsToAppend) {
- /*
- This method handles appending a folder to the user's PATH directory in a cross-platform way.
-
- Windows uses ";" to delimit paths and *nix uses ":"
- */
const PATH = process.env.PATH;
const pathSeperator = isWin ? ";" : ":";
- process.env.PATH = [
- ...pathsToAppend,
- ...PATH.split(pathSeperator).filter(folder => folder)
- ].join(pathSeperator);
+ process.env.PATH = [...pathsToAppend, ...PATH.split(pathSeperator).filter(folder => folder)].join(
+ pathSeperator
+ );
}
function debug(...msg) {
- /*
- This method creates a debug log which can go to stdout or a file depending on --tool: flags.
- */
if (!debug.log) debug.log = [];
if (flags["log-debug"]) {
diff --git a/standalone/package-lock.json b/standalone/package-lock.json
index a548bbe19be..33663f4b0ff 100644
--- a/standalone/package-lock.json
+++ b/standalone/package-lock.json
@@ -10,331 +10,464 @@
"license": "MIT",
"dependencies": {
"chalk": "^2.4.2",
- "npm": "^8.19.0",
- "shelljs": "^0.8.3",
- "shx": "^0.3.2",
- "user-home": "^2.0.0"
+ "npm": "^8.19.0"
},
"devDependencies": {
- "@yao-pkg/pkg": "~6.4.1",
+ "esbuild": "^0.25.0",
"prettier": "^1.15.3"
}
},
- "node_modules/@babel/helper-string-parser": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
- "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz",
+ "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==",
+ "cpu": [
+ "ppc64"
+ ],
"dev": true,
"license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
}
},
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
- "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz",
+ "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==",
+ "cpu": [
+ "arm"
+ ],
"dev": true,
"license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
}
},
- "node_modules/@isaacs/fs-minipass": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
- "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz",
+ "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "license": "ISC",
- "dependencies": {
- "minipass": "^7.0.4"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": ">=18.0.0"
+ "node": ">=18"
}
},
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
- "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz",
+ "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
"license": "MIT",
- "dependencies": {
- "@jridgewell/set-array": "^1.2.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.24"
- },
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": ">=6.0.0"
+ "node": ">=18"
}
},
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
- "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz",
+ "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
"license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=6.0.0"
+ "node": ">=18"
}
},
- "node_modules/@jridgewell/set-array": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
- "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz",
+ "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
"license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=6.0.0"
+ "node": ">=18"
}
},
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
- "dev": true
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
},
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.25",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
- "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz",
+ "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
"license": "MIT",
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/@yao-pkg/pkg": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/@yao-pkg/pkg/-/pkg-6.4.1.tgz",
- "integrity": "sha512-pjePVt+DQP+HaJI5DfEZDX1pGsMMFjv1wuqfy/BwXlnffVIRk8lXjw7yVYvLQRcomf8Eaz2chDE5B6gR2SSaQw==",
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz",
+ "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==",
+ "cpu": [
+ "arm"
+ ],
"dev": true,
"license": "MIT",
- "dependencies": {
- "@babel/generator": "^7.23.0",
- "@babel/parser": "^7.23.0",
- "@babel/types": "^7.23.0",
- "@yao-pkg/pkg-fetch": "3.5.21",
- "into-stream": "^6.0.0",
- "minimist": "^1.2.6",
- "multistream": "^4.1.0",
- "picocolors": "^1.1.0",
- "picomatch": "^4.0.2",
- "prebuild-install": "^7.1.1",
- "resolve": "^1.22.10",
- "stream-meter": "^1.0.4",
- "tar": "^7.4.3",
- "tinyglobby": "^0.2.11",
- "unzipper": "^0.12.3"
- },
- "bin": {
- "pkg": "lib-es5/bin.js"
- },
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=18.0.0"
+ "node": ">=18"
}
},
- "node_modules/@yao-pkg/pkg-fetch": {
- "version": "3.5.21",
- "resolved": "https://registry.npmjs.org/@yao-pkg/pkg-fetch/-/pkg-fetch-3.5.21.tgz",
- "integrity": "sha512-nlJ+rXersw70CQVSph7OfIN8lN6nCStjU7koXzh0WXiPvztZGqkoQTScHQCe1K8/tuKpeL0bEOYW0rP4QqMJ9A==",
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz",
+ "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
"license": "MIT",
- "dependencies": {
- "https-proxy-agent": "^5.0.0",
- "node-fetch": "^2.6.6",
- "picocolors": "^1.1.0",
- "progress": "^2.0.3",
- "semver": "^7.3.5",
- "tar-fs": "^2.1.1",
- "yargs": "^16.2.0"
- },
- "bin": {
- "pkg-fetch": "lib-es5/bin.js"
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/@yao-pkg/pkg/node_modules/@babel/generator": {
- "version": "7.26.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz",
- "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==",
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz",
+ "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==",
+ "cpu": [
+ "ia32"
+ ],
"dev": true,
"license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.26.5",
- "@babel/types": "^7.26.5",
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25",
- "jsesc": "^3.0.2"
- },
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
}
},
- "node_modules/@yao-pkg/pkg/node_modules/@babel/parser": {
- "version": "7.26.7",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz",
- "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==",
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz",
+ "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==",
+ "cpu": [
+ "loong64"
+ ],
"dev": true,
"license": "MIT",
- "dependencies": {
- "@babel/types": "^7.26.7"
- },
- "bin": {
- "parser": "bin/babel-parser.js"
- },
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=6.0.0"
+ "node": ">=18"
}
},
- "node_modules/@yao-pkg/pkg/node_modules/@babel/types": {
- "version": "7.26.7",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz",
- "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==",
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz",
+ "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==",
+ "cpu": [
+ "mips64el"
+ ],
"dev": true,
"license": "MIT",
- "dependencies": {
- "@babel/helper-string-parser": "^7.25.9",
- "@babel/helper-validator-identifier": "^7.25.9"
- },
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
}
},
- "node_modules/@yao-pkg/pkg/node_modules/jsesc": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
- "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz",
+ "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==",
+ "cpu": [
+ "ppc64"
+ ],
"dev": true,
"license": "MIT",
- "bin": {
- "jsesc": "bin/jsesc"
- },
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=6"
+ "node": ">=18"
}
},
- "node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz",
+ "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==",
+ "cpu": [
+ "riscv64"
+ ],
"dev": true,
"license": "MIT",
- "dependencies": {
- "debug": "4"
- },
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">= 6.0.0"
+ "node": ">=18"
}
},
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz",
+ "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==",
+ "cpu": [
+ "s390x"
+ ],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=8"
+ "node": ">=18"
}
},
- "node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dependencies": {
- "color-convert": "^1.9.0"
- },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz",
+ "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=4"
+ "node": ">=18"
}
},
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
},
- "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==",
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz",
+ "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
},
- "node_modules/bl": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "dependencies": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/bl/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==",
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz",
+ "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
"engines": {
- "node": ">= 6"
+ "node": ">=18"
}
},
- "node_modules/bluebird": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
- "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz",
+ "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
},
- "node_modules/brace-expansion": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
- "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz",
+ "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz",
+ "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz",
+ "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz",
+ "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
"node_modules/chalk": {
@@ -350,24 +483,6 @@
"node": ">=4"
}
},
- "node_modules/chownr": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
- "dev": true
- },
- "node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
"node_modules/color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -381,101 +496,46 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
},
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
- },
- "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==",
- "dev": true
- },
- "node_modules/debug": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
- "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "node_modules/esbuild": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
+ "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==",
"dev": true,
+ "hasInstallScript": true,
"license": "MIT",
- "dependencies": {
- "ms": "^2.1.3"
+ "bin": {
+ "esbuild": "bin/esbuild"
},
"engines": {
- "node": ">=6.0"
+ "node": ">=18"
},
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "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==",
- "dev": true,
- "dependencies": {
- "mimic-response": "^3.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "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==",
- "dev": true,
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/detect-libc": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
- "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/duplexer2": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
- "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "readable-stream": "^2.0.2"
- }
- },
- "node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "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==",
- "dev": true,
- "dependencies": {
- "once": "^1.4.0"
- }
- },
- "node_modules/escalade": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
- "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.25.12",
+ "@esbuild/android-arm": "0.25.12",
+ "@esbuild/android-arm64": "0.25.12",
+ "@esbuild/android-x64": "0.25.12",
+ "@esbuild/darwin-arm64": "0.25.12",
+ "@esbuild/darwin-x64": "0.25.12",
+ "@esbuild/freebsd-arm64": "0.25.12",
+ "@esbuild/freebsd-x64": "0.25.12",
+ "@esbuild/linux-arm": "0.25.12",
+ "@esbuild/linux-arm64": "0.25.12",
+ "@esbuild/linux-ia32": "0.25.12",
+ "@esbuild/linux-loong64": "0.25.12",
+ "@esbuild/linux-mips64el": "0.25.12",
+ "@esbuild/linux-ppc64": "0.25.12",
+ "@esbuild/linux-riscv64": "0.25.12",
+ "@esbuild/linux-s390x": "0.25.12",
+ "@esbuild/linux-x64": "0.25.12",
+ "@esbuild/netbsd-arm64": "0.25.12",
+ "@esbuild/netbsd-x64": "0.25.12",
+ "@esbuild/openbsd-arm64": "0.25.12",
+ "@esbuild/openbsd-x64": "0.25.12",
+ "@esbuild/openharmony-arm64": "0.25.12",
+ "@esbuild/sunos-x64": "0.25.12",
+ "@esbuild/win32-arm64": "0.25.12",
+ "@esbuild/win32-ia32": "0.25.12",
+ "@esbuild/win32-x64": "0.25.12"
}
},
"node_modules/escape-string-regexp": {
@@ -486,101 +546,6 @@
"node": ">=0.8.0"
}
},
- "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==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/fdir": {
- "version": "6.4.4",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
- "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "picomatch": "^3 || ^4"
- },
- "peerDependenciesMeta": {
- "picomatch": {
- "optional": true
- }
- }
- },
- "node_modules/from2": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
- "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0"
- }
- },
- "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==",
- "dev": true
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
- },
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "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==",
- "dev": true
- },
- "node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "dev": true
- },
"node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
@@ -589,1686 +554,860 @@
"node": ">=4"
}
},
- "node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "license": "MIT",
+ "node_modules/npm": {
+ "version": "8.19.4",
+ "resolved": "https://registry.npmjs.org/npm/-/npm-8.19.4.tgz",
+ "integrity": "sha512-3HANl8i9DKnUA89P4KEgVNN28EjSeDCmvEqbzOAuxCFDzdBZzjUl99zgnGpOUumvW5lvJo2HKcjrsc+tfyv1Hw==",
+ "bundleDependencies": [
+ "@isaacs/string-locale-compare",
+ "@npmcli/arborist",
+ "@npmcli/ci-detect",
+ "@npmcli/config",
+ "@npmcli/fs",
+ "@npmcli/map-workspaces",
+ "@npmcli/package-json",
+ "@npmcli/run-script",
+ "abbrev",
+ "archy",
+ "cacache",
+ "chalk",
+ "chownr",
+ "cli-columns",
+ "cli-table3",
+ "columnify",
+ "fastest-levenshtein",
+ "fs-minipass",
+ "glob",
+ "graceful-fs",
+ "hosted-git-info",
+ "ini",
+ "init-package-json",
+ "is-cidr",
+ "json-parse-even-better-errors",
+ "libnpmaccess",
+ "libnpmdiff",
+ "libnpmexec",
+ "libnpmfund",
+ "libnpmhook",
+ "libnpmorg",
+ "libnpmpack",
+ "libnpmpublish",
+ "libnpmsearch",
+ "libnpmteam",
+ "libnpmversion",
+ "make-fetch-happen",
+ "minimatch",
+ "minipass",
+ "minipass-pipeline",
+ "mkdirp",
+ "mkdirp-infer-owner",
+ "ms",
+ "node-gyp",
+ "nopt",
+ "npm-audit-report",
+ "npm-install-checks",
+ "npm-package-arg",
+ "npm-pick-manifest",
+ "npm-profile",
+ "npm-registry-fetch",
+ "npm-user-validate",
+ "npmlog",
+ "opener",
+ "p-map",
+ "pacote",
+ "parse-conflict-json",
+ "proc-log",
+ "qrcode-terminal",
+ "read",
+ "read-package-json",
+ "read-package-json-fast",
+ "readdir-scoped-modules",
+ "rimraf",
+ "semver",
+ "ssri",
+ "tar",
+ "text-table",
+ "tiny-relative-date",
+ "treeverse",
+ "validate-npm-package-name",
+ "which",
+ "write-file-atomic"
+ ],
"dependencies": {
- "function-bind": "^1.1.2"
+ "@isaacs/string-locale-compare": "^1.1.0",
+ "@npmcli/arborist": "^5.6.3",
+ "@npmcli/ci-detect": "^2.0.0",
+ "@npmcli/config": "^4.2.1",
+ "@npmcli/fs": "^2.1.0",
+ "@npmcli/map-workspaces": "^2.0.3",
+ "@npmcli/package-json": "^2.0.0",
+ "@npmcli/run-script": "^4.2.1",
+ "abbrev": "~1.1.1",
+ "archy": "~1.0.0",
+ "cacache": "^16.1.3",
+ "chalk": "^4.1.2",
+ "chownr": "^2.0.0",
+ "cli-columns": "^4.0.0",
+ "cli-table3": "^0.6.2",
+ "columnify": "^1.6.0",
+ "fastest-levenshtein": "^1.0.12",
+ "fs-minipass": "^2.1.0",
+ "glob": "^8.0.1",
+ "graceful-fs": "^4.2.10",
+ "hosted-git-info": "^5.2.1",
+ "ini": "^3.0.1",
+ "init-package-json": "^3.0.2",
+ "is-cidr": "^4.0.2",
+ "json-parse-even-better-errors": "^2.3.1",
+ "libnpmaccess": "^6.0.4",
+ "libnpmdiff": "^4.0.5",
+ "libnpmexec": "^4.0.14",
+ "libnpmfund": "^3.0.5",
+ "libnpmhook": "^8.0.4",
+ "libnpmorg": "^4.0.4",
+ "libnpmpack": "^4.1.3",
+ "libnpmpublish": "^6.0.5",
+ "libnpmsearch": "^5.0.4",
+ "libnpmteam": "^4.0.4",
+ "libnpmversion": "^3.0.7",
+ "make-fetch-happen": "^10.2.0",
+ "minimatch": "^5.1.0",
+ "minipass": "^3.1.6",
+ "minipass-pipeline": "^1.2.4",
+ "mkdirp": "^1.0.4",
+ "mkdirp-infer-owner": "^2.0.0",
+ "ms": "^2.1.2",
+ "node-gyp": "^9.1.0",
+ "nopt": "^6.0.0",
+ "npm-audit-report": "^3.0.0",
+ "npm-install-checks": "^5.0.0",
+ "npm-package-arg": "^9.1.0",
+ "npm-pick-manifest": "^7.0.2",
+ "npm-profile": "^6.2.0",
+ "npm-registry-fetch": "^13.3.1",
+ "npm-user-validate": "^1.0.1",
+ "npmlog": "^6.0.2",
+ "opener": "^1.5.2",
+ "p-map": "^4.0.0",
+ "pacote": "^13.6.2",
+ "parse-conflict-json": "^2.0.2",
+ "proc-log": "^2.0.1",
+ "qrcode-terminal": "^0.12.0",
+ "read": "~1.0.7",
+ "read-package-json": "^5.0.2",
+ "read-package-json-fast": "^2.0.3",
+ "readdir-scoped-modules": "^1.1.0",
+ "rimraf": "^3.0.2",
+ "semver": "^7.3.7",
+ "ssri": "^9.0.1",
+ "tar": "^6.1.11",
+ "text-table": "~0.2.0",
+ "tiny-relative-date": "^1.3.0",
+ "treeverse": "^2.0.0",
+ "validate-npm-package-name": "^4.0.0",
+ "which": "^2.0.2",
+ "write-file-atomic": "^4.0.1"
+ },
+ "bin": {
+ "npm": "bin/npm-cli.js",
+ "npx": "bin/npx-cli.js"
},
"engines": {
- "node": ">= 0.4"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "node_modules/ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true
- },
- "node_modules/interpret": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
- "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/into-stream": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz",
- "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==",
- "dev": true,
- "dependencies": {
- "from2": "^2.3.0",
- "p-is-promise": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-core-module": {
- "version": "2.16.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
- "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
- "license": "MIT",
- "dependencies": {
- "hasown": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "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==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
- "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/minipass": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=16 || 14 >=14.17"
- }
- },
- "node_modules/minizlib": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz",
- "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "minipass": "^7.1.2"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "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==",
- "dev": true
- },
- "node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/multistream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/multistream/-/multistream-4.1.0.tgz",
- "integrity": "sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==",
- "dev": true,
- "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": {
- "once": "^1.4.0",
- "readable-stream": "^3.6.0"
- }
- },
- "node_modules/multistream/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==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "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==",
- "dev": true
- },
- "node_modules/node-abi": {
- "version": "3.40.0",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.40.0.tgz",
- "integrity": "sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA==",
- "dev": true,
- "dependencies": {
- "semver": "^7.3.5"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/node-fetch": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
- "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "whatwg-url": "^5.0.0"
- },
- "engines": {
- "node": "4.x || >=6.0.0"
- },
- "peerDependencies": {
- "encoding": "^0.1.0"
- },
- "peerDependenciesMeta": {
- "encoding": {
- "optional": true
- }
- }
- },
- "node_modules/node-int64": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
- "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/npm": {
- "version": "8.19.4",
- "resolved": "https://registry.npmjs.org/npm/-/npm-8.19.4.tgz",
- "integrity": "sha512-3HANl8i9DKnUA89P4KEgVNN28EjSeDCmvEqbzOAuxCFDzdBZzjUl99zgnGpOUumvW5lvJo2HKcjrsc+tfyv1Hw==",
- "bundleDependencies": [
- "@isaacs/string-locale-compare",
- "@npmcli/arborist",
- "@npmcli/ci-detect",
- "@npmcli/config",
- "@npmcli/fs",
- "@npmcli/map-workspaces",
- "@npmcli/package-json",
- "@npmcli/run-script",
- "abbrev",
- "archy",
- "cacache",
- "chalk",
- "chownr",
- "cli-columns",
- "cli-table3",
- "columnify",
- "fastest-levenshtein",
- "fs-minipass",
- "glob",
- "graceful-fs",
- "hosted-git-info",
- "ini",
- "init-package-json",
- "is-cidr",
- "json-parse-even-better-errors",
- "libnpmaccess",
- "libnpmdiff",
- "libnpmexec",
- "libnpmfund",
- "libnpmhook",
- "libnpmorg",
- "libnpmpack",
- "libnpmpublish",
- "libnpmsearch",
- "libnpmteam",
- "libnpmversion",
- "make-fetch-happen",
- "minimatch",
- "minipass",
- "minipass-pipeline",
- "mkdirp",
- "mkdirp-infer-owner",
- "ms",
- "node-gyp",
- "nopt",
- "npm-audit-report",
- "npm-install-checks",
- "npm-package-arg",
- "npm-pick-manifest",
- "npm-profile",
- "npm-registry-fetch",
- "npm-user-validate",
- "npmlog",
- "opener",
- "p-map",
- "pacote",
- "parse-conflict-json",
- "proc-log",
- "qrcode-terminal",
- "read",
- "read-package-json",
- "read-package-json-fast",
- "readdir-scoped-modules",
- "rimraf",
- "semver",
- "ssri",
- "tar",
- "text-table",
- "tiny-relative-date",
- "treeverse",
- "validate-npm-package-name",
- "which",
- "write-file-atomic"
- ],
- "dependencies": {
- "@isaacs/string-locale-compare": "^1.1.0",
- "@npmcli/arborist": "^5.6.3",
- "@npmcli/ci-detect": "^2.0.0",
- "@npmcli/config": "^4.2.1",
- "@npmcli/fs": "^2.1.0",
- "@npmcli/map-workspaces": "^2.0.3",
- "@npmcli/package-json": "^2.0.0",
- "@npmcli/run-script": "^4.2.1",
- "abbrev": "~1.1.1",
- "archy": "~1.0.0",
- "cacache": "^16.1.3",
- "chalk": "^4.1.2",
- "chownr": "^2.0.0",
- "cli-columns": "^4.0.0",
- "cli-table3": "^0.6.2",
- "columnify": "^1.6.0",
- "fastest-levenshtein": "^1.0.12",
- "fs-minipass": "^2.1.0",
- "glob": "^8.0.1",
- "graceful-fs": "^4.2.10",
- "hosted-git-info": "^5.2.1",
- "ini": "^3.0.1",
- "init-package-json": "^3.0.2",
- "is-cidr": "^4.0.2",
- "json-parse-even-better-errors": "^2.3.1",
- "libnpmaccess": "^6.0.4",
- "libnpmdiff": "^4.0.5",
- "libnpmexec": "^4.0.14",
- "libnpmfund": "^3.0.5",
- "libnpmhook": "^8.0.4",
- "libnpmorg": "^4.0.4",
- "libnpmpack": "^4.1.3",
- "libnpmpublish": "^6.0.5",
- "libnpmsearch": "^5.0.4",
- "libnpmteam": "^4.0.4",
- "libnpmversion": "^3.0.7",
- "make-fetch-happen": "^10.2.0",
- "minimatch": "^5.1.0",
- "minipass": "^3.1.6",
- "minipass-pipeline": "^1.2.4",
- "mkdirp": "^1.0.4",
- "mkdirp-infer-owner": "^2.0.0",
- "ms": "^2.1.2",
- "node-gyp": "^9.1.0",
- "nopt": "^6.0.0",
- "npm-audit-report": "^3.0.0",
- "npm-install-checks": "^5.0.0",
- "npm-package-arg": "^9.1.0",
- "npm-pick-manifest": "^7.0.2",
- "npm-profile": "^6.2.0",
- "npm-registry-fetch": "^13.3.1",
- "npm-user-validate": "^1.0.1",
- "npmlog": "^6.0.2",
- "opener": "^1.5.2",
- "p-map": "^4.0.0",
- "pacote": "^13.6.2",
- "parse-conflict-json": "^2.0.2",
- "proc-log": "^2.0.1",
- "qrcode-terminal": "^0.12.0",
- "read": "~1.0.7",
- "read-package-json": "^5.0.2",
- "read-package-json-fast": "^2.0.3",
- "readdir-scoped-modules": "^1.1.0",
- "rimraf": "^3.0.2",
- "semver": "^7.3.7",
- "ssri": "^9.0.1",
- "tar": "^6.1.11",
- "text-table": "~0.2.0",
- "tiny-relative-date": "^1.3.0",
- "treeverse": "^2.0.0",
- "validate-npm-package-name": "^4.0.0",
- "which": "^2.0.2",
- "write-file-atomic": "^4.0.1"
- },
- "bin": {
- "npm": "bin/npm-cli.js",
- "npx": "bin/npx-cli.js"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/@colors/colors": {
- "version": "1.5.0",
- "inBundle": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">=0.1.90"
- }
- },
- "node_modules/npm/node_modules/@gar/promisify": {
- "version": "1.1.3",
- "inBundle": true,
- "license": "MIT"
- },
- "node_modules/npm/node_modules/@isaacs/string-locale-compare": {
- "version": "1.1.0",
- "inBundle": true,
- "license": "ISC"
- },
- "node_modules/npm/node_modules/@npmcli/arborist": {
- "version": "5.6.3",
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "@isaacs/string-locale-compare": "^1.1.0",
- "@npmcli/installed-package-contents": "^1.0.7",
- "@npmcli/map-workspaces": "^2.0.3",
- "@npmcli/metavuln-calculator": "^3.0.1",
- "@npmcli/move-file": "^2.0.0",
- "@npmcli/name-from-folder": "^1.0.1",
- "@npmcli/node-gyp": "^2.0.0",
- "@npmcli/package-json": "^2.0.0",
- "@npmcli/query": "^1.2.0",
- "@npmcli/run-script": "^4.1.3",
- "bin-links": "^3.0.3",
- "cacache": "^16.1.3",
- "common-ancestor-path": "^1.0.1",
- "hosted-git-info": "^5.2.1",
- "json-parse-even-better-errors": "^2.3.1",
- "json-stringify-nice": "^1.1.4",
- "minimatch": "^5.1.0",
- "mkdirp": "^1.0.4",
- "mkdirp-infer-owner": "^2.0.0",
- "nopt": "^6.0.0",
- "npm-install-checks": "^5.0.0",
- "npm-package-arg": "^9.0.0",
- "npm-pick-manifest": "^7.0.2",
- "npm-registry-fetch": "^13.0.0",
- "npmlog": "^6.0.2",
- "pacote": "^13.6.1",
- "parse-conflict-json": "^2.0.1",
- "proc-log": "^2.0.0",
- "promise-all-reject-late": "^1.0.0",
- "promise-call-limit": "^1.0.1",
- "read-package-json-fast": "^2.0.2",
- "readdir-scoped-modules": "^1.1.0",
- "rimraf": "^3.0.2",
- "semver": "^7.3.7",
- "ssri": "^9.0.0",
- "treeverse": "^2.0.0",
- "walk-up-path": "^1.0.0"
- },
- "bin": {
- "arborist": "bin/index.js"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/@npmcli/ci-detect": {
- "version": "2.0.0",
- "inBundle": true,
- "license": "ISC",
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16"
- }
- },
- "node_modules/npm/node_modules/@npmcli/config": {
- "version": "4.2.2",
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "@npmcli/map-workspaces": "^2.0.2",
- "ini": "^3.0.0",
- "mkdirp-infer-owner": "^2.0.0",
- "nopt": "^6.0.0",
- "proc-log": "^2.0.0",
- "read-package-json-fast": "^2.0.3",
- "semver": "^7.3.5",
- "walk-up-path": "^1.0.0"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/@npmcli/disparity-colors": {
- "version": "2.0.0",
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "ansi-styles": "^4.3.0"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/@npmcli/fs": {
- "version": "2.1.2",
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "@gar/promisify": "^1.1.3",
- "semver": "^7.3.5"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/@npmcli/git": {
- "version": "3.0.2",
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "@npmcli/promise-spawn": "^3.0.0",
- "lru-cache": "^7.4.4",
- "mkdirp": "^1.0.4",
- "npm-pick-manifest": "^7.0.0",
- "proc-log": "^2.0.0",
- "promise-inflight": "^1.0.1",
- "promise-retry": "^2.0.1",
- "semver": "^7.3.5",
- "which": "^2.0.2"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/@npmcli/installed-package-contents": {
- "version": "1.0.7",
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "npm-bundled": "^1.1.1",
- "npm-normalize-package-bin": "^1.0.1"
- },
- "bin": {
- "installed-package-contents": "index.js"
- },
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/npm/node_modules/@npmcli/installed-package-contents/node_modules/npm-bundled": {
- "version": "1.1.2",
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "npm-normalize-package-bin": "^1.0.1"
- }
- },
- "node_modules/npm/node_modules/@npmcli/map-workspaces": {
- "version": "2.0.4",
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "@npmcli/name-from-folder": "^1.0.1",
- "glob": "^8.0.1",
- "minimatch": "^5.0.1",
- "read-package-json-fast": "^2.0.3"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/@npmcli/metavuln-calculator": {
- "version": "3.1.1",
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "cacache": "^16.0.0",
- "json-parse-even-better-errors": "^2.3.1",
- "pacote": "^13.0.3",
- "semver": "^7.3.5"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/@npmcli/move-file": {
- "version": "2.0.1",
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "mkdirp": "^1.0.4",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/@npmcli/name-from-folder": {
- "version": "1.0.1",
- "inBundle": true,
- "license": "ISC"
- },
- "node_modules/npm/node_modules/@npmcli/node-gyp": {
- "version": "2.0.0",
- "inBundle": true,
- "license": "ISC",
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/@npmcli/package-json": {
- "version": "2.0.0",
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "json-parse-even-better-errors": "^2.3.1"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/@npmcli/promise-spawn": {
- "version": "3.0.0",
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "infer-owner": "^1.0.4"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/@npmcli/query": {
- "version": "1.2.0",
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "npm-package-arg": "^9.1.0",
- "postcss-selector-parser": "^6.0.10",
- "semver": "^7.3.7"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/@npmcli/run-script": {
- "version": "4.2.1",
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "@npmcli/node-gyp": "^2.0.0",
- "@npmcli/promise-spawn": "^3.0.0",
- "node-gyp": "^9.0.0",
- "read-package-json-fast": "^2.0.3",
- "which": "^2.0.2"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/@tootallnate/once": {
- "version": "2.0.0",
- "inBundle": true,
- "license": "MIT",
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/npm/node_modules/abbrev": {
- "version": "1.1.1",
- "inBundle": true,
- "license": "ISC"
- },
- "node_modules/npm/node_modules/agent-base": {
- "version": "6.0.2",
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/npm/node_modules/agentkeepalive": {
- "version": "4.2.1",
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "debug": "^4.1.0",
- "depd": "^1.1.2",
- "humanize-ms": "^1.2.1"
- },
- "engines": {
- "node": ">= 8.0.0"
- }
- },
- "node_modules/npm/node_modules/aggregate-error": {
- "version": "3.1.0",
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "clean-stack": "^2.0.0",
- "indent-string": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/npm/node_modules/ansi-regex": {
- "version": "5.0.1",
- "inBundle": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/npm/node_modules/ansi-styles": {
- "version": "4.3.0",
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/npm/node_modules/aproba": {
- "version": "2.0.0",
- "inBundle": true,
- "license": "ISC"
- },
- "node_modules/npm/node_modules/archy": {
- "version": "1.0.0",
- "inBundle": true,
- "license": "MIT"
- },
- "node_modules/npm/node_modules/are-we-there-yet": {
- "version": "3.0.1",
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "delegates": "^1.0.0",
- "readable-stream": "^3.6.0"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/asap": {
- "version": "2.0.6",
- "inBundle": true,
- "license": "MIT"
- },
- "node_modules/npm/node_modules/balanced-match": {
- "version": "1.0.2",
- "inBundle": true,
- "license": "MIT"
- },
- "node_modules/npm/node_modules/bin-links": {
- "version": "3.0.3",
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "cmd-shim": "^5.0.0",
- "mkdirp-infer-owner": "^2.0.0",
- "npm-normalize-package-bin": "^2.0.0",
- "read-cmd-shim": "^3.0.0",
- "rimraf": "^3.0.0",
- "write-file-atomic": "^4.0.0"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/bin-links/node_modules/npm-normalize-package-bin": {
- "version": "2.0.0",
- "inBundle": true,
- "license": "ISC",
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/binary-extensions": {
- "version": "2.2.0",
- "inBundle": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/npm/node_modules/brace-expansion": {
- "version": "2.0.1",
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/npm/node_modules/builtins": {
- "version": "5.0.1",
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "semver": "^7.0.0"
- }
- },
- "node_modules/npm/node_modules/cacache": {
- "version": "16.1.3",
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "@npmcli/fs": "^2.1.0",
- "@npmcli/move-file": "^2.0.0",
- "chownr": "^2.0.0",
- "fs-minipass": "^2.1.0",
- "glob": "^8.0.1",
- "infer-owner": "^1.0.4",
- "lru-cache": "^7.7.1",
- "minipass": "^3.1.6",
- "minipass-collect": "^1.0.2",
- "minipass-flush": "^1.0.5",
- "minipass-pipeline": "^1.2.4",
- "mkdirp": "^1.0.4",
- "p-map": "^4.0.0",
- "promise-inflight": "^1.0.1",
- "rimraf": "^3.0.2",
- "ssri": "^9.0.0",
- "tar": "^6.1.11",
- "unique-filename": "^2.0.0"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/chalk": {
- "version": "4.1.2",
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/npm/node_modules/chownr": {
- "version": "2.0.0",
- "inBundle": true,
- "license": "ISC",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/npm/node_modules/cidr-regex": {
- "version": "3.1.1",
- "inBundle": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "ip-regex": "^4.1.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/npm/node_modules/clean-stack": {
- "version": "2.2.0",
- "inBundle": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/npm/node_modules/cli-columns": {
- "version": "4.0.0",
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/npm/node_modules/cli-table3": {
- "version": "0.6.2",
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "string-width": "^4.2.0"
- },
- "engines": {
- "node": "10.* || >= 12.*"
- },
- "optionalDependencies": {
- "@colors/colors": "1.5.0"
- }
- },
- "node_modules/npm/node_modules/clone": {
- "version": "1.0.4",
- "inBundle": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/npm/node_modules/cmd-shim": {
- "version": "5.0.0",
- "inBundle": true,
- "license": "ISC",
- "dependencies": {
- "mkdirp-infer-owner": "^2.0.0"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/color-convert": {
- "version": "2.0.1",
+ "node_modules/npm/node_modules/@colors/colors": {
+ "version": "1.5.0",
"inBundle": true,
"license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
+ "optional": true,
"engines": {
- "node": ">=7.0.0"
+ "node": ">=0.1.90"
}
},
- "node_modules/npm/node_modules/color-name": {
- "version": "1.1.4",
- "inBundle": true,
- "license": "MIT"
- },
- "node_modules/npm/node_modules/color-support": {
+ "node_modules/npm/node_modules/@gar/promisify": {
"version": "1.1.3",
"inBundle": true,
- "license": "ISC",
- "bin": {
- "color-support": "bin.js"
- }
- },
- "node_modules/npm/node_modules/columnify": {
- "version": "1.6.0",
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "strip-ansi": "^6.0.1",
- "wcwidth": "^1.0.0"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/npm/node_modules/common-ancestor-path": {
- "version": "1.0.1",
- "inBundle": true,
- "license": "ISC"
- },
- "node_modules/npm/node_modules/concat-map": {
- "version": "0.0.1",
- "inBundle": true,
"license": "MIT"
},
- "node_modules/npm/node_modules/console-control-strings": {
+ "node_modules/npm/node_modules/@isaacs/string-locale-compare": {
"version": "1.1.0",
"inBundle": true,
"license": "ISC"
},
- "node_modules/npm/node_modules/cssesc": {
- "version": "3.0.0",
- "inBundle": true,
- "license": "MIT",
- "bin": {
- "cssesc": "bin/cssesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm/node_modules/debug": {
- "version": "4.3.4",
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/npm/node_modules/debug/node_modules/ms": {
- "version": "2.1.2",
- "inBundle": true,
- "license": "MIT"
- },
- "node_modules/npm/node_modules/debuglog": {
- "version": "1.0.1",
- "inBundle": true,
- "license": "MIT",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/npm/node_modules/defaults": {
- "version": "1.0.3",
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "clone": "^1.0.2"
- }
- },
- "node_modules/npm/node_modules/delegates": {
- "version": "1.0.0",
- "inBundle": true,
- "license": "MIT"
- },
- "node_modules/npm/node_modules/depd": {
- "version": "1.1.2",
- "inBundle": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/npm/node_modules/dezalgo": {
- "version": "1.0.4",
+ "node_modules/npm/node_modules/@npmcli/arborist": {
+ "version": "5.6.3",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "asap": "^2.0.0",
- "wrappy": "1"
- }
- },
- "node_modules/npm/node_modules/diff": {
- "version": "5.1.0",
- "inBundle": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.3.1"
- }
- },
- "node_modules/npm/node_modules/emoji-regex": {
- "version": "8.0.0",
- "inBundle": true,
- "license": "MIT"
- },
- "node_modules/npm/node_modules/encoding": {
- "version": "0.1.13",
- "inBundle": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "iconv-lite": "^0.6.2"
+ "@isaacs/string-locale-compare": "^1.1.0",
+ "@npmcli/installed-package-contents": "^1.0.7",
+ "@npmcli/map-workspaces": "^2.0.3",
+ "@npmcli/metavuln-calculator": "^3.0.1",
+ "@npmcli/move-file": "^2.0.0",
+ "@npmcli/name-from-folder": "^1.0.1",
+ "@npmcli/node-gyp": "^2.0.0",
+ "@npmcli/package-json": "^2.0.0",
+ "@npmcli/query": "^1.2.0",
+ "@npmcli/run-script": "^4.1.3",
+ "bin-links": "^3.0.3",
+ "cacache": "^16.1.3",
+ "common-ancestor-path": "^1.0.1",
+ "hosted-git-info": "^5.2.1",
+ "json-parse-even-better-errors": "^2.3.1",
+ "json-stringify-nice": "^1.1.4",
+ "minimatch": "^5.1.0",
+ "mkdirp": "^1.0.4",
+ "mkdirp-infer-owner": "^2.0.0",
+ "nopt": "^6.0.0",
+ "npm-install-checks": "^5.0.0",
+ "npm-package-arg": "^9.0.0",
+ "npm-pick-manifest": "^7.0.2",
+ "npm-registry-fetch": "^13.0.0",
+ "npmlog": "^6.0.2",
+ "pacote": "^13.6.1",
+ "parse-conflict-json": "^2.0.1",
+ "proc-log": "^2.0.0",
+ "promise-all-reject-late": "^1.0.0",
+ "promise-call-limit": "^1.0.1",
+ "read-package-json-fast": "^2.0.2",
+ "readdir-scoped-modules": "^1.1.0",
+ "rimraf": "^3.0.2",
+ "semver": "^7.3.7",
+ "ssri": "^9.0.0",
+ "treeverse": "^2.0.0",
+ "walk-up-path": "^1.0.0"
+ },
+ "bin": {
+ "arborist": "bin/index.js"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/env-paths": {
- "version": "2.2.1",
+ "node_modules/npm/node_modules/@npmcli/ci-detect": {
+ "version": "2.0.0",
"inBundle": true,
- "license": "MIT",
+ "license": "ISC",
"engines": {
- "node": ">=6"
+ "node": "^12.13.0 || ^14.15.0 || >=16"
}
},
- "node_modules/npm/node_modules/err-code": {
- "version": "2.0.3",
- "inBundle": true,
- "license": "MIT"
- },
- "node_modules/npm/node_modules/fastest-levenshtein": {
- "version": "1.0.12",
- "inBundle": true,
- "license": "MIT"
- },
- "node_modules/npm/node_modules/fs-minipass": {
- "version": "2.1.0",
+ "node_modules/npm/node_modules/@npmcli/config": {
+ "version": "4.2.2",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "minipass": "^3.0.0"
+ "@npmcli/map-workspaces": "^2.0.2",
+ "ini": "^3.0.0",
+ "mkdirp-infer-owner": "^2.0.0",
+ "nopt": "^6.0.0",
+ "proc-log": "^2.0.0",
+ "read-package-json-fast": "^2.0.3",
+ "semver": "^7.3.5",
+ "walk-up-path": "^1.0.0"
},
"engines": {
- "node": ">= 8"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/fs.realpath": {
- "version": "1.0.0",
- "inBundle": true,
- "license": "ISC"
- },
- "node_modules/npm/node_modules/function-bind": {
- "version": "1.1.1",
- "inBundle": true,
- "license": "MIT"
- },
- "node_modules/npm/node_modules/gauge": {
- "version": "4.0.4",
+ "node_modules/npm/node_modules/@npmcli/disparity-colors": {
+ "version": "2.0.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "aproba": "^1.0.3 || ^2.0.0",
- "color-support": "^1.1.3",
- "console-control-strings": "^1.1.0",
- "has-unicode": "^2.0.1",
- "signal-exit": "^3.0.7",
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1",
- "wide-align": "^1.1.5"
+ "ansi-styles": "^4.3.0"
},
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/glob": {
- "version": "8.0.3",
+ "node_modules/npm/node_modules/@npmcli/fs": {
+ "version": "2.1.2",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
+ "@gar/promisify": "^1.1.3",
+ "semver": "^7.3.5"
},
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/graceful-fs": {
- "version": "4.2.10",
- "inBundle": true,
- "license": "ISC"
- },
- "node_modules/npm/node_modules/has": {
- "version": "1.0.3",
+ "node_modules/npm/node_modules/@npmcli/git": {
+ "version": "3.0.2",
"inBundle": true,
- "license": "MIT",
+ "license": "ISC",
"dependencies": {
- "function-bind": "^1.1.1"
+ "@npmcli/promise-spawn": "^3.0.0",
+ "lru-cache": "^7.4.4",
+ "mkdirp": "^1.0.4",
+ "npm-pick-manifest": "^7.0.0",
+ "proc-log": "^2.0.0",
+ "promise-inflight": "^1.0.1",
+ "promise-retry": "^2.0.1",
+ "semver": "^7.3.5",
+ "which": "^2.0.2"
},
"engines": {
- "node": ">= 0.4.0"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/has-flag": {
- "version": "4.0.0",
+ "node_modules/npm/node_modules/@npmcli/installed-package-contents": {
+ "version": "1.0.7",
"inBundle": true,
- "license": "MIT",
+ "license": "ISC",
+ "dependencies": {
+ "npm-bundled": "^1.1.1",
+ "npm-normalize-package-bin": "^1.0.1"
+ },
+ "bin": {
+ "installed-package-contents": "index.js"
+ },
"engines": {
- "node": ">=8"
+ "node": ">= 10"
}
},
- "node_modules/npm/node_modules/has-unicode": {
- "version": "2.0.1",
+ "node_modules/npm/node_modules/@npmcli/installed-package-contents/node_modules/npm-bundled": {
+ "version": "1.1.2",
"inBundle": true,
- "license": "ISC"
+ "license": "ISC",
+ "dependencies": {
+ "npm-normalize-package-bin": "^1.0.1"
+ }
},
- "node_modules/npm/node_modules/hosted-git-info": {
- "version": "5.2.1",
+ "node_modules/npm/node_modules/@npmcli/map-workspaces": {
+ "version": "2.0.4",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "lru-cache": "^7.5.1"
+ "@npmcli/name-from-folder": "^1.0.1",
+ "glob": "^8.0.1",
+ "minimatch": "^5.0.1",
+ "read-package-json-fast": "^2.0.3"
},
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/http-cache-semantics": {
- "version": "4.1.1",
- "inBundle": true,
- "license": "BSD-2-Clause"
- },
- "node_modules/npm/node_modules/http-proxy-agent": {
- "version": "5.0.0",
+ "node_modules/npm/node_modules/@npmcli/metavuln-calculator": {
+ "version": "3.1.1",
"inBundle": true,
- "license": "MIT",
+ "license": "ISC",
"dependencies": {
- "@tootallnate/once": "2",
- "agent-base": "6",
- "debug": "4"
+ "cacache": "^16.0.0",
+ "json-parse-even-better-errors": "^2.3.1",
+ "pacote": "^13.0.3",
+ "semver": "^7.3.5"
},
"engines": {
- "node": ">= 6"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/https-proxy-agent": {
- "version": "5.0.1",
+ "node_modules/npm/node_modules/@npmcli/move-file": {
+ "version": "2.0.1",
"inBundle": true,
"license": "MIT",
"dependencies": {
- "agent-base": "6",
- "debug": "4"
+ "mkdirp": "^1.0.4",
+ "rimraf": "^3.0.2"
},
"engines": {
- "node": ">= 6"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/humanize-ms": {
- "version": "1.2.1",
+ "node_modules/npm/node_modules/@npmcli/name-from-folder": {
+ "version": "1.0.1",
"inBundle": true,
- "license": "MIT",
- "dependencies": {
- "ms": "^2.0.0"
- }
+ "license": "ISC"
},
- "node_modules/npm/node_modules/iconv-lite": {
- "version": "0.6.3",
+ "node_modules/npm/node_modules/@npmcli/node-gyp": {
+ "version": "2.0.0",
"inBundle": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- },
+ "license": "ISC",
"engines": {
- "node": ">=0.10.0"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/ignore-walk": {
- "version": "5.0.1",
+ "node_modules/npm/node_modules/@npmcli/package-json": {
+ "version": "2.0.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "minimatch": "^5.0.1"
+ "json-parse-even-better-errors": "^2.3.1"
},
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/imurmurhash": {
- "version": "0.1.4",
- "inBundle": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/npm/node_modules/indent-string": {
- "version": "4.0.0",
+ "node_modules/npm/node_modules/@npmcli/promise-spawn": {
+ "version": "3.0.0",
"inBundle": true,
- "license": "MIT",
+ "license": "ISC",
+ "dependencies": {
+ "infer-owner": "^1.0.4"
+ },
"engines": {
- "node": ">=8"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/infer-owner": {
- "version": "1.0.4",
- "inBundle": true,
- "license": "ISC"
- },
- "node_modules/npm/node_modules/inflight": {
- "version": "1.0.6",
+ "node_modules/npm/node_modules/@npmcli/query": {
+ "version": "1.2.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
+ "npm-package-arg": "^9.1.0",
+ "postcss-selector-parser": "^6.0.10",
+ "semver": "^7.3.7"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/inherits": {
- "version": "2.0.4",
- "inBundle": true,
- "license": "ISC"
- },
- "node_modules/npm/node_modules/ini": {
- "version": "3.0.1",
+ "node_modules/npm/node_modules/@npmcli/run-script": {
+ "version": "4.2.1",
"inBundle": true,
"license": "ISC",
+ "dependencies": {
+ "@npmcli/node-gyp": "^2.0.0",
+ "@npmcli/promise-spawn": "^3.0.0",
+ "node-gyp": "^9.0.0",
+ "read-package-json-fast": "^2.0.3",
+ "which": "^2.0.2"
+ },
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/init-package-json": {
- "version": "3.0.2",
+ "node_modules/npm/node_modules/@tootallnate/once": {
+ "version": "2.0.0",
"inBundle": true,
- "license": "ISC",
- "dependencies": {
- "npm-package-arg": "^9.0.1",
- "promzard": "^0.3.0",
- "read": "^1.0.7",
- "read-package-json": "^5.0.0",
- "semver": "^7.3.5",
- "validate-npm-package-license": "^3.0.4",
- "validate-npm-package-name": "^4.0.0"
- },
+ "license": "MIT",
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">= 10"
}
},
- "node_modules/npm/node_modules/ip": {
- "version": "2.0.0",
+ "node_modules/npm/node_modules/abbrev": {
+ "version": "1.1.1",
"inBundle": true,
- "license": "MIT"
+ "license": "ISC"
},
- "node_modules/npm/node_modules/ip-regex": {
- "version": "4.3.0",
+ "node_modules/npm/node_modules/agent-base": {
+ "version": "6.0.2",
"inBundle": true,
"license": "MIT",
+ "dependencies": {
+ "debug": "4"
+ },
"engines": {
- "node": ">=8"
+ "node": ">= 6.0.0"
}
},
- "node_modules/npm/node_modules/is-cidr": {
- "version": "4.0.2",
+ "node_modules/npm/node_modules/agentkeepalive": {
+ "version": "4.2.1",
"inBundle": true,
- "license": "BSD-2-Clause",
+ "license": "MIT",
"dependencies": {
- "cidr-regex": "^3.1.1"
+ "debug": "^4.1.0",
+ "depd": "^1.1.2",
+ "humanize-ms": "^1.2.1"
},
"engines": {
- "node": ">=10"
+ "node": ">= 8.0.0"
}
},
- "node_modules/npm/node_modules/is-core-module": {
- "version": "2.10.0",
+ "node_modules/npm/node_modules/aggregate-error": {
+ "version": "3.1.0",
"inBundle": true,
"license": "MIT",
"dependencies": {
- "has": "^1.0.3"
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/npm/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
+ "node_modules/npm/node_modules/ansi-regex": {
+ "version": "5.0.1",
"inBundle": true,
"license": "MIT",
"engines": {
"node": ">=8"
}
},
- "node_modules/npm/node_modules/is-lambda": {
- "version": "1.0.1",
+ "node_modules/npm/node_modules/ansi-styles": {
+ "version": "4.3.0",
"inBundle": true,
- "license": "MIT"
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
},
- "node_modules/npm/node_modules/isexe": {
+ "node_modules/npm/node_modules/aproba": {
"version": "2.0.0",
"inBundle": true,
"license": "ISC"
},
- "node_modules/npm/node_modules/json-parse-even-better-errors": {
- "version": "2.3.1",
+ "node_modules/npm/node_modules/archy": {
+ "version": "1.0.0",
"inBundle": true,
"license": "MIT"
},
- "node_modules/npm/node_modules/json-stringify-nice": {
- "version": "1.1.4",
+ "node_modules/npm/node_modules/are-we-there-yet": {
+ "version": "3.0.1",
"inBundle": true,
"license": "ISC",
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "dependencies": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/jsonparse": {
- "version": "1.3.1",
- "engines": [
- "node >= 0.2.0"
- ],
- "inBundle": true,
- "license": "MIT"
- },
- "node_modules/npm/node_modules/just-diff": {
- "version": "5.1.1",
+ "node_modules/npm/node_modules/asap": {
+ "version": "2.0.6",
"inBundle": true,
"license": "MIT"
},
- "node_modules/npm/node_modules/just-diff-apply": {
- "version": "5.4.1",
+ "node_modules/npm/node_modules/balanced-match": {
+ "version": "1.0.2",
"inBundle": true,
"license": "MIT"
},
- "node_modules/npm/node_modules/libnpmaccess": {
- "version": "6.0.4",
+ "node_modules/npm/node_modules/bin-links": {
+ "version": "3.0.3",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "aproba": "^2.0.0",
- "minipass": "^3.1.1",
- "npm-package-arg": "^9.0.1",
- "npm-registry-fetch": "^13.0.0"
+ "cmd-shim": "^5.0.0",
+ "mkdirp-infer-owner": "^2.0.0",
+ "npm-normalize-package-bin": "^2.0.0",
+ "read-cmd-shim": "^3.0.0",
+ "rimraf": "^3.0.0",
+ "write-file-atomic": "^4.0.0"
},
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/libnpmdiff": {
- "version": "4.0.5",
+ "node_modules/npm/node_modules/bin-links/node_modules/npm-normalize-package-bin": {
+ "version": "2.0.0",
"inBundle": true,
"license": "ISC",
- "dependencies": {
- "@npmcli/disparity-colors": "^2.0.0",
- "@npmcli/installed-package-contents": "^1.0.7",
- "binary-extensions": "^2.2.0",
- "diff": "^5.1.0",
- "minimatch": "^5.0.1",
- "npm-package-arg": "^9.0.1",
- "pacote": "^13.6.1",
- "tar": "^6.1.0"
- },
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/libnpmexec": {
- "version": "4.0.14",
+ "node_modules/npm/node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/builtins": {
+ "version": "5.0.1",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/cacache": {
+ "version": "16.1.3",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/arborist": "^5.6.3",
- "@npmcli/ci-detect": "^2.0.0",
- "@npmcli/fs": "^2.1.1",
- "@npmcli/run-script": "^4.2.0",
- "chalk": "^4.1.0",
- "mkdirp-infer-owner": "^2.0.0",
- "npm-package-arg": "^9.0.1",
- "npmlog": "^6.0.2",
- "pacote": "^13.6.1",
- "proc-log": "^2.0.0",
- "read": "^1.0.7",
- "read-package-json-fast": "^2.0.2",
- "semver": "^7.3.7",
- "walk-up-path": "^1.0.0"
+ "@npmcli/fs": "^2.1.0",
+ "@npmcli/move-file": "^2.0.0",
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.1.0",
+ "glob": "^8.0.1",
+ "infer-owner": "^1.0.4",
+ "lru-cache": "^7.7.1",
+ "minipass": "^3.1.6",
+ "minipass-collect": "^1.0.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "mkdirp": "^1.0.4",
+ "p-map": "^4.0.0",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^3.0.2",
+ "ssri": "^9.0.0",
+ "tar": "^6.1.11",
+ "unique-filename": "^2.0.0"
},
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/libnpmfund": {
- "version": "3.0.5",
+ "node_modules/npm/node_modules/chalk": {
+ "version": "4.1.2",
"inBundle": true,
- "license": "ISC",
+ "license": "MIT",
"dependencies": {
- "@npmcli/arborist": "^5.6.3"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/npm/node_modules/libnpmhook": {
- "version": "8.0.4",
+ "node_modules/npm/node_modules/chownr": {
+ "version": "2.0.0",
"inBundle": true,
"license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/npm/node_modules/cidr-regex": {
+ "version": "3.1.1",
+ "inBundle": true,
+ "license": "BSD-2-Clause",
"dependencies": {
- "aproba": "^2.0.0",
- "npm-registry-fetch": "^13.0.0"
+ "ip-regex": "^4.1.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">=10"
}
},
- "node_modules/npm/node_modules/libnpmorg": {
- "version": "4.0.4",
+ "node_modules/npm/node_modules/clean-stack": {
+ "version": "2.2.0",
"inBundle": true,
- "license": "ISC",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/npm/node_modules/cli-columns": {
+ "version": "4.0.0",
+ "inBundle": true,
+ "license": "MIT",
"dependencies": {
- "aproba": "^2.0.0",
- "npm-registry-fetch": "^13.0.0"
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">= 10"
}
},
- "node_modules/npm/node_modules/libnpmpack": {
- "version": "4.1.3",
+ "node_modules/npm/node_modules/cli-table3": {
+ "version": "0.6.2",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "string-width": "^4.2.0"
+ },
+ "engines": {
+ "node": "10.* || >= 12.*"
+ },
+ "optionalDependencies": {
+ "@colors/colors": "1.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/clone": {
+ "version": "1.0.4",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/npm/node_modules/cmd-shim": {
+ "version": "5.0.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/run-script": "^4.1.3",
- "npm-package-arg": "^9.0.1",
- "pacote": "^13.6.1"
+ "mkdirp-infer-owner": "^2.0.0"
},
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/libnpmpublish": {
- "version": "6.0.5",
+ "node_modules/npm/node_modules/color-convert": {
+ "version": "2.0.1",
"inBundle": true,
- "license": "ISC",
+ "license": "MIT",
"dependencies": {
- "normalize-package-data": "^4.0.0",
- "npm-package-arg": "^9.0.1",
- "npm-registry-fetch": "^13.0.0",
- "semver": "^7.3.7",
- "ssri": "^9.0.0"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">=7.0.0"
}
},
- "node_modules/npm/node_modules/libnpmsearch": {
- "version": "5.0.4",
+ "node_modules/npm/node_modules/color-name": {
+ "version": "1.1.4",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/color-support": {
+ "version": "1.1.3",
"inBundle": true,
"license": "ISC",
+ "bin": {
+ "color-support": "bin.js"
+ }
+ },
+ "node_modules/npm/node_modules/columnify": {
+ "version": "1.6.0",
+ "inBundle": true,
+ "license": "MIT",
"dependencies": {
- "npm-registry-fetch": "^13.0.0"
+ "strip-ansi": "^6.0.1",
+ "wcwidth": "^1.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">=8.0.0"
}
},
- "node_modules/npm/node_modules/libnpmteam": {
- "version": "4.0.4",
+ "node_modules/npm/node_modules/common-ancestor-path": {
+ "version": "1.0.1",
"inBundle": true,
- "license": "ISC",
- "dependencies": {
- "aproba": "^2.0.0",
- "npm-registry-fetch": "^13.0.0"
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/concat-map": {
+ "version": "0.0.1",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/console-control-strings": {
+ "version": "1.1.0",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/cssesc": {
+ "version": "3.0.0",
+ "inBundle": true,
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">=4"
}
},
- "node_modules/npm/node_modules/libnpmversion": {
- "version": "3.0.7",
+ "node_modules/npm/node_modules/debug": {
+ "version": "4.3.4",
"inBundle": true,
- "license": "ISC",
+ "license": "MIT",
"dependencies": {
- "@npmcli/git": "^3.0.0",
- "@npmcli/run-script": "^4.1.3",
- "json-parse-even-better-errors": "^2.3.1",
- "proc-log": "^2.0.0",
- "semver": "^7.3.7"
+ "ms": "2.1.2"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "node_modules/npm/node_modules/lru-cache": {
- "version": "7.13.2",
+ "node_modules/npm/node_modules/debug/node_modules/ms": {
+ "version": "2.1.2",
"inBundle": true,
- "license": "ISC",
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/debuglog": {
+ "version": "1.0.1",
+ "inBundle": true,
+ "license": "MIT",
"engines": {
- "node": ">=12"
+ "node": "*"
}
},
- "node_modules/npm/node_modules/make-fetch-happen": {
- "version": "10.2.1",
+ "node_modules/npm/node_modules/defaults": {
+ "version": "1.0.3",
"inBundle": true,
- "license": "ISC",
+ "license": "MIT",
"dependencies": {
- "agentkeepalive": "^4.2.1",
- "cacache": "^16.1.0",
- "http-cache-semantics": "^4.1.0",
- "http-proxy-agent": "^5.0.0",
- "https-proxy-agent": "^5.0.0",
- "is-lambda": "^1.0.1",
- "lru-cache": "^7.7.1",
- "minipass": "^3.1.6",
- "minipass-collect": "^1.0.2",
- "minipass-fetch": "^2.0.3",
- "minipass-flush": "^1.0.5",
- "minipass-pipeline": "^1.2.4",
- "negotiator": "^0.6.3",
- "promise-retry": "^2.0.1",
- "socks-proxy-agent": "^7.0.0",
- "ssri": "^9.0.0"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "clone": "^1.0.2"
}
},
- "node_modules/npm/node_modules/minimatch": {
- "version": "5.1.0",
+ "node_modules/npm/node_modules/delegates": {
+ "version": "1.0.0",
"inBundle": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/depd": {
+ "version": "1.1.2",
+ "inBundle": true,
+ "license": "MIT",
"engines": {
- "node": ">=10"
+ "node": ">= 0.6"
}
},
- "node_modules/npm/node_modules/minipass": {
- "version": "3.3.4",
+ "node_modules/npm/node_modules/dezalgo": {
+ "version": "1.0.4",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "asap": "^2.0.0",
+ "wrappy": "1"
}
},
- "node_modules/npm/node_modules/minipass-collect": {
- "version": "1.0.2",
+ "node_modules/npm/node_modules/diff": {
+ "version": "5.1.0",
"inBundle": true,
- "license": "ISC",
- "dependencies": {
- "minipass": "^3.0.0"
- },
+ "license": "BSD-3-Clause",
"engines": {
- "node": ">= 8"
+ "node": ">=0.3.1"
}
},
- "node_modules/npm/node_modules/minipass-fetch": {
- "version": "2.1.1",
+ "node_modules/npm/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/encoding": {
+ "version": "0.1.13",
"inBundle": true,
"license": "MIT",
+ "optional": true,
"dependencies": {
- "minipass": "^3.1.6",
- "minipass-sized": "^1.0.3",
- "minizlib": "^2.1.2"
- },
+ "iconv-lite": "^0.6.2"
+ }
+ },
+ "node_modules/npm/node_modules/env-paths": {
+ "version": "2.2.1",
+ "inBundle": true,
+ "license": "MIT",
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- },
- "optionalDependencies": {
- "encoding": "^0.1.13"
+ "node": ">=6"
}
},
- "node_modules/npm/node_modules/minipass-flush": {
- "version": "1.0.5",
+ "node_modules/npm/node_modules/err-code": {
+ "version": "2.0.3",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/fastest-levenshtein": {
+ "version": "1.0.12",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/fs-minipass": {
+ "version": "2.1.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
@@ -2278,603 +1417,657 @@
"node": ">= 8"
}
},
- "node_modules/npm/node_modules/minipass-json-stream": {
- "version": "1.0.1",
+ "node_modules/npm/node_modules/fs.realpath": {
+ "version": "1.0.0",
"inBundle": true,
- "license": "MIT",
- "dependencies": {
- "jsonparse": "^1.3.1",
- "minipass": "^3.0.0"
- }
+ "license": "ISC"
},
- "node_modules/npm/node_modules/minipass-pipeline": {
- "version": "1.2.4",
+ "node_modules/npm/node_modules/function-bind": {
+ "version": "1.1.1",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/gauge": {
+ "version": "4.0.4",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "minipass": "^3.0.0"
+ "aproba": "^1.0.3 || ^2.0.0",
+ "color-support": "^1.1.3",
+ "console-control-strings": "^1.1.0",
+ "has-unicode": "^2.0.1",
+ "signal-exit": "^3.0.7",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1",
+ "wide-align": "^1.1.5"
},
"engines": {
- "node": ">=8"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/minipass-sized": {
- "version": "1.0.3",
+ "node_modules/npm/node_modules/glob": {
+ "version": "8.0.3",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "minipass": "^3.0.0"
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^5.0.1",
+ "once": "^1.3.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/npm/node_modules/minizlib": {
- "version": "2.1.2",
+ "node_modules/npm/node_modules/graceful-fs": {
+ "version": "4.2.10",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/has": {
+ "version": "1.0.3",
"inBundle": true,
"license": "MIT",
"dependencies": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
+ "function-bind": "^1.1.1"
},
"engines": {
- "node": ">= 8"
+ "node": ">= 0.4.0"
}
},
- "node_modules/npm/node_modules/mkdirp": {
- "version": "1.0.4",
+ "node_modules/npm/node_modules/has-flag": {
+ "version": "4.0.0",
"inBundle": true,
"license": "MIT",
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
"engines": {
- "node": ">=10"
+ "node": ">=8"
}
},
- "node_modules/npm/node_modules/mkdirp-infer-owner": {
- "version": "2.0.0",
+ "node_modules/npm/node_modules/has-unicode": {
+ "version": "2.0.1",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/hosted-git-info": {
+ "version": "5.2.1",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "chownr": "^2.0.0",
- "infer-owner": "^1.0.4",
- "mkdirp": "^1.0.3"
+ "lru-cache": "^7.5.1"
},
"engines": {
- "node": ">=10"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/ms": {
- "version": "2.1.3",
- "inBundle": true,
- "license": "MIT"
- },
- "node_modules/npm/node_modules/mute-stream": {
- "version": "0.0.8",
+ "node_modules/npm/node_modules/http-cache-semantics": {
+ "version": "4.1.1",
"inBundle": true,
- "license": "ISC"
+ "license": "BSD-2-Clause"
},
- "node_modules/npm/node_modules/negotiator": {
- "version": "0.6.3",
+ "node_modules/npm/node_modules/http-proxy-agent": {
+ "version": "5.0.0",
"inBundle": true,
"license": "MIT",
+ "dependencies": {
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
+ },
"engines": {
- "node": ">= 0.6"
+ "node": ">= 6"
}
},
- "node_modules/npm/node_modules/node-gyp": {
- "version": "9.1.0",
+ "node_modules/npm/node_modules/https-proxy-agent": {
+ "version": "5.0.1",
"inBundle": true,
"license": "MIT",
"dependencies": {
- "env-paths": "^2.2.0",
- "glob": "^7.1.4",
- "graceful-fs": "^4.2.6",
- "make-fetch-happen": "^10.0.3",
- "nopt": "^5.0.0",
- "npmlog": "^6.0.0",
- "rimraf": "^3.0.2",
- "semver": "^7.3.5",
- "tar": "^6.1.2",
- "which": "^2.0.2"
- },
- "bin": {
- "node-gyp": "bin/node-gyp.js"
+ "agent-base": "6",
+ "debug": "4"
},
"engines": {
- "node": "^12.22 || ^14.13 || >=16"
+ "node": ">= 6"
}
},
- "node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": {
- "version": "1.1.11",
+ "node_modules/npm/node_modules/humanize-ms": {
+ "version": "1.2.1",
"inBundle": true,
"license": "MIT",
"dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "ms": "^2.0.0"
}
},
- "node_modules/npm/node_modules/node-gyp/node_modules/glob": {
- "version": "7.2.3",
+ "node_modules/npm/node_modules/iconv-lite": {
+ "version": "0.6.3",
"inBundle": true,
- "license": "ISC",
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
},
"engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node": ">=0.10.0"
}
},
- "node_modules/npm/node_modules/node-gyp/node_modules/minimatch": {
- "version": "3.1.2",
+ "node_modules/npm/node_modules/ignore-walk": {
+ "version": "5.0.1",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "minimatch": "^5.0.1"
},
"engines": {
- "node": "*"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/node-gyp/node_modules/nopt": {
- "version": "5.0.0",
+ "node_modules/npm/node_modules/imurmurhash": {
+ "version": "0.1.4",
"inBundle": true,
- "license": "ISC",
- "dependencies": {
- "abbrev": "1"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- },
+ "license": "MIT",
"engines": {
- "node": ">=6"
+ "node": ">=0.8.19"
}
},
- "node_modules/npm/node_modules/nopt": {
- "version": "6.0.0",
+ "node_modules/npm/node_modules/indent-string": {
+ "version": "4.0.0",
"inBundle": true,
- "license": "ISC",
- "dependencies": {
- "abbrev": "^1.0.0"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- },
+ "license": "MIT",
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">=8"
}
},
- "node_modules/npm/node_modules/normalize-package-data": {
- "version": "4.0.1",
+ "node_modules/npm/node_modules/infer-owner": {
+ "version": "1.0.4",
"inBundle": true,
- "license": "BSD-2-Clause",
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/inflight": {
+ "version": "1.0.6",
+ "inBundle": true,
+ "license": "ISC",
"dependencies": {
- "hosted-git-info": "^5.0.0",
- "is-core-module": "^2.8.1",
- "semver": "^7.3.5",
- "validate-npm-package-license": "^3.0.4"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "once": "^1.3.0",
+ "wrappy": "1"
}
},
- "node_modules/npm/node_modules/npm-audit-report": {
- "version": "3.0.0",
+ "node_modules/npm/node_modules/inherits": {
+ "version": "2.0.4",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/ini": {
+ "version": "3.0.1",
"inBundle": true,
"license": "ISC",
- "dependencies": {
- "chalk": "^4.0.0"
- },
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/npm-bundled": {
- "version": "2.0.1",
+ "node_modules/npm/node_modules/init-package-json": {
+ "version": "3.0.2",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "npm-normalize-package-bin": "^2.0.0"
+ "npm-package-arg": "^9.0.1",
+ "promzard": "^0.3.0",
+ "read": "^1.0.7",
+ "read-package-json": "^5.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4",
+ "validate-npm-package-name": "^4.0.0"
},
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/npm-bundled/node_modules/npm-normalize-package-bin": {
+ "node_modules/npm/node_modules/ip": {
"version": "2.0.0",
"inBundle": true,
- "license": "ISC",
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/ip-regex": {
+ "version": "4.3.0",
+ "inBundle": true,
+ "license": "MIT",
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">=8"
}
},
- "node_modules/npm/node_modules/npm-install-checks": {
- "version": "5.0.0",
+ "node_modules/npm/node_modules/is-cidr": {
+ "version": "4.0.2",
"inBundle": true,
"license": "BSD-2-Clause",
"dependencies": {
- "semver": "^7.1.1"
+ "cidr-regex": "^3.1.1"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">=10"
}
},
- "node_modules/npm/node_modules/npm-normalize-package-bin": {
+ "node_modules/npm/node_modules/is-core-module": {
+ "version": "2.10.0",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "has": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/npm/node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/is-lambda": {
"version": "1.0.1",
"inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/isexe": {
+ "version": "2.0.0",
+ "inBundle": true,
"license": "ISC"
},
- "node_modules/npm/node_modules/npm-package-arg": {
- "version": "9.1.0",
+ "node_modules/npm/node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/json-stringify-nice": {
+ "version": "1.1.4",
+ "inBundle": true,
+ "license": "ISC",
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/jsonparse": {
+ "version": "1.3.1",
+ "engines": [
+ "node >= 0.2.0"
+ ],
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/just-diff": {
+ "version": "5.1.1",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/just-diff-apply": {
+ "version": "5.4.1",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/libnpmaccess": {
+ "version": "6.0.4",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "hosted-git-info": "^5.0.0",
- "proc-log": "^2.0.1",
- "semver": "^7.3.5",
- "validate-npm-package-name": "^4.0.0"
+ "aproba": "^2.0.0",
+ "minipass": "^3.1.1",
+ "npm-package-arg": "^9.0.1",
+ "npm-registry-fetch": "^13.0.0"
},
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/npm-packlist": {
- "version": "5.1.3",
+ "node_modules/npm/node_modules/libnpmdiff": {
+ "version": "4.0.5",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "glob": "^8.0.1",
- "ignore-walk": "^5.0.1",
- "npm-bundled": "^2.0.0",
- "npm-normalize-package-bin": "^2.0.0"
- },
- "bin": {
- "npm-packlist": "bin/index.js"
+ "@npmcli/disparity-colors": "^2.0.0",
+ "@npmcli/installed-package-contents": "^1.0.7",
+ "binary-extensions": "^2.2.0",
+ "diff": "^5.1.0",
+ "minimatch": "^5.0.1",
+ "npm-package-arg": "^9.0.1",
+ "pacote": "^13.6.1",
+ "tar": "^6.1.0"
},
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/npm-packlist/node_modules/npm-normalize-package-bin": {
- "version": "2.0.0",
+ "node_modules/npm/node_modules/libnpmexec": {
+ "version": "4.0.14",
"inBundle": true,
"license": "ISC",
+ "dependencies": {
+ "@npmcli/arborist": "^5.6.3",
+ "@npmcli/ci-detect": "^2.0.0",
+ "@npmcli/fs": "^2.1.1",
+ "@npmcli/run-script": "^4.2.0",
+ "chalk": "^4.1.0",
+ "mkdirp-infer-owner": "^2.0.0",
+ "npm-package-arg": "^9.0.1",
+ "npmlog": "^6.0.2",
+ "pacote": "^13.6.1",
+ "proc-log": "^2.0.0",
+ "read": "^1.0.7",
+ "read-package-json-fast": "^2.0.2",
+ "semver": "^7.3.7",
+ "walk-up-path": "^1.0.0"
+ },
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/npm-pick-manifest": {
- "version": "7.0.2",
+ "node_modules/npm/node_modules/libnpmfund": {
+ "version": "3.0.5",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "npm-install-checks": "^5.0.0",
- "npm-normalize-package-bin": "^2.0.0",
- "npm-package-arg": "^9.0.0",
- "semver": "^7.3.5"
+ "@npmcli/arborist": "^5.6.3"
},
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin": {
- "version": "2.0.0",
+ "node_modules/npm/node_modules/libnpmhook": {
+ "version": "8.0.4",
"inBundle": true,
"license": "ISC",
+ "dependencies": {
+ "aproba": "^2.0.0",
+ "npm-registry-fetch": "^13.0.0"
+ },
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/npm-profile": {
- "version": "6.2.1",
+ "node_modules/npm/node_modules/libnpmorg": {
+ "version": "4.0.4",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "npm-registry-fetch": "^13.0.1",
- "proc-log": "^2.0.0"
+ "aproba": "^2.0.0",
+ "npm-registry-fetch": "^13.0.0"
},
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/npm-registry-fetch": {
- "version": "13.3.1",
+ "node_modules/npm/node_modules/libnpmpack": {
+ "version": "4.1.3",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "make-fetch-happen": "^10.0.6",
- "minipass": "^3.1.6",
- "minipass-fetch": "^2.0.3",
- "minipass-json-stream": "^1.0.1",
- "minizlib": "^2.1.2",
+ "@npmcli/run-script": "^4.1.3",
"npm-package-arg": "^9.0.1",
- "proc-log": "^2.0.0"
+ "pacote": "^13.6.1"
},
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/npm-user-validate": {
- "version": "1.0.1",
- "inBundle": true,
- "license": "BSD-2-Clause"
- },
- "node_modules/npm/node_modules/npmlog": {
- "version": "6.0.2",
+ "node_modules/npm/node_modules/libnpmpublish": {
+ "version": "6.0.5",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "are-we-there-yet": "^3.0.0",
- "console-control-strings": "^1.1.0",
- "gauge": "^4.0.3",
- "set-blocking": "^2.0.0"
+ "normalize-package-data": "^4.0.0",
+ "npm-package-arg": "^9.0.1",
+ "npm-registry-fetch": "^13.0.0",
+ "semver": "^7.3.7",
+ "ssri": "^9.0.0"
},
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/once": {
- "version": "1.4.0",
+ "node_modules/npm/node_modules/libnpmsearch": {
+ "version": "5.0.4",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/npm/node_modules/opener": {
- "version": "1.5.2",
- "inBundle": true,
- "license": "(WTFPL OR MIT)",
- "bin": {
- "opener": "bin/opener-bin.js"
- }
- },
- "node_modules/npm/node_modules/p-map": {
- "version": "4.0.0",
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "aggregate-error": "^3.0.0"
+ "npm-registry-fetch": "^13.0.0"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/pacote": {
- "version": "13.6.2",
+ "node_modules/npm/node_modules/libnpmteam": {
+ "version": "4.0.4",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "@npmcli/git": "^3.0.0",
- "@npmcli/installed-package-contents": "^1.0.7",
- "@npmcli/promise-spawn": "^3.0.0",
- "@npmcli/run-script": "^4.1.0",
- "cacache": "^16.0.0",
- "chownr": "^2.0.0",
- "fs-minipass": "^2.1.0",
- "infer-owner": "^1.0.4",
- "minipass": "^3.1.6",
- "mkdirp": "^1.0.4",
- "npm-package-arg": "^9.0.0",
- "npm-packlist": "^5.1.0",
- "npm-pick-manifest": "^7.0.0",
- "npm-registry-fetch": "^13.0.1",
- "proc-log": "^2.0.0",
- "promise-retry": "^2.0.1",
- "read-package-json": "^5.0.0",
- "read-package-json-fast": "^2.0.3",
- "rimraf": "^3.0.2",
- "ssri": "^9.0.0",
- "tar": "^6.1.11"
- },
- "bin": {
- "pacote": "lib/bin.js"
+ "aproba": "^2.0.0",
+ "npm-registry-fetch": "^13.0.0"
},
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/parse-conflict-json": {
- "version": "2.0.2",
+ "node_modules/npm/node_modules/libnpmversion": {
+ "version": "3.0.7",
"inBundle": true,
"license": "ISC",
"dependencies": {
+ "@npmcli/git": "^3.0.0",
+ "@npmcli/run-script": "^4.1.3",
"json-parse-even-better-errors": "^2.3.1",
- "just-diff": "^5.0.1",
- "just-diff-apply": "^5.2.0"
+ "proc-log": "^2.0.0",
+ "semver": "^7.3.7"
},
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/path-is-absolute": {
- "version": "1.0.1",
+ "node_modules/npm/node_modules/lru-cache": {
+ "version": "7.13.2",
"inBundle": true,
- "license": "MIT",
+ "license": "ISC",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12"
}
},
- "node_modules/npm/node_modules/postcss-selector-parser": {
- "version": "6.0.10",
+ "node_modules/npm/node_modules/make-fetch-happen": {
+ "version": "10.2.1",
"inBundle": true,
- "license": "MIT",
+ "license": "ISC",
"dependencies": {
- "cssesc": "^3.0.0",
- "util-deprecate": "^1.0.2"
+ "agentkeepalive": "^4.2.1",
+ "cacache": "^16.1.0",
+ "http-cache-semantics": "^4.1.0",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^7.7.1",
+ "minipass": "^3.1.6",
+ "minipass-collect": "^1.0.2",
+ "minipass-fetch": "^2.0.3",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^7.0.0",
+ "ssri": "^9.0.0"
},
"engines": {
- "node": ">=4"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/proc-log": {
- "version": "2.0.1",
+ "node_modules/npm/node_modules/minimatch": {
+ "version": "5.1.0",
"inBundle": true,
"license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">=10"
}
},
- "node_modules/npm/node_modules/promise-all-reject-late": {
- "version": "1.0.1",
+ "node_modules/npm/node_modules/minipass": {
+ "version": "3.3.4",
"inBundle": true,
"license": "ISC",
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/npm/node_modules/promise-call-limit": {
- "version": "1.0.1",
+ "node_modules/npm/node_modules/minipass-collect": {
+ "version": "1.0.2",
"inBundle": true,
"license": "ISC",
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "node_modules/npm/node_modules/promise-inflight": {
- "version": "1.0.1",
- "inBundle": true,
- "license": "ISC"
- },
- "node_modules/npm/node_modules/promise-retry": {
- "version": "2.0.1",
+ "node_modules/npm/node_modules/minipass-fetch": {
+ "version": "2.1.1",
"inBundle": true,
"license": "MIT",
"dependencies": {
- "err-code": "^2.0.2",
- "retry": "^0.12.0"
+ "minipass": "^3.1.6",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^2.1.2"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
},
- "engines": {
- "node": ">=10"
+ "optionalDependencies": {
+ "encoding": "^0.1.13"
}
},
- "node_modules/npm/node_modules/promzard": {
- "version": "0.3.0",
+ "node_modules/npm/node_modules/minipass-flush": {
+ "version": "1.0.5",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "read": "1"
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "node_modules/npm/node_modules/qrcode-terminal": {
- "version": "0.12.0",
+ "node_modules/npm/node_modules/minipass-json-stream": {
+ "version": "1.0.1",
"inBundle": true,
- "bin": {
- "qrcode-terminal": "bin/qrcode-terminal.js"
+ "license": "MIT",
+ "dependencies": {
+ "jsonparse": "^1.3.1",
+ "minipass": "^3.0.0"
}
},
- "node_modules/npm/node_modules/read": {
- "version": "1.0.7",
+ "node_modules/npm/node_modules/minipass-pipeline": {
+ "version": "1.2.4",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "mute-stream": "~0.0.4"
+ "minipass": "^3.0.0"
},
"engines": {
- "node": ">=0.8"
+ "node": ">=8"
}
},
- "node_modules/npm/node_modules/read-cmd-shim": {
- "version": "3.0.0",
+ "node_modules/npm/node_modules/minipass-sized": {
+ "version": "1.0.3",
"inBundle": true,
"license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">=8"
}
},
- "node_modules/npm/node_modules/read-package-json": {
- "version": "5.0.2",
+ "node_modules/npm/node_modules/minizlib": {
+ "version": "2.1.2",
"inBundle": true,
- "license": "ISC",
+ "license": "MIT",
"dependencies": {
- "glob": "^8.0.1",
- "json-parse-even-better-errors": "^2.3.1",
- "normalize-package-data": "^4.0.0",
- "npm-normalize-package-bin": "^2.0.0"
+ "minipass": "^3.0.0",
+ "yallist": "^4.0.0"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">= 8"
}
},
- "node_modules/npm/node_modules/read-package-json-fast": {
- "version": "2.0.3",
+ "node_modules/npm/node_modules/mkdirp": {
+ "version": "1.0.4",
"inBundle": true,
- "license": "ISC",
- "dependencies": {
- "json-parse-even-better-errors": "^2.3.0",
- "npm-normalize-package-bin": "^1.0.1"
+ "license": "MIT",
+ "bin": {
+ "mkdirp": "bin/cmd.js"
},
"engines": {
"node": ">=10"
}
},
- "node_modules/npm/node_modules/read-package-json/node_modules/npm-normalize-package-bin": {
+ "node_modules/npm/node_modules/mkdirp-infer-owner": {
"version": "2.0.0",
"inBundle": true,
"license": "ISC",
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/npm/node_modules/readable-stream": {
- "version": "3.6.0",
- "inBundle": true,
- "license": "MIT",
"dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
+ "chownr": "^2.0.0",
+ "infer-owner": "^1.0.4",
+ "mkdirp": "^1.0.3"
},
"engines": {
- "node": ">= 6"
+ "node": ">=10"
}
},
- "node_modules/npm/node_modules/readdir-scoped-modules": {
- "version": "1.1.0",
+ "node_modules/npm/node_modules/ms": {
+ "version": "2.1.3",
"inBundle": true,
- "license": "ISC",
- "dependencies": {
- "debuglog": "^1.0.1",
- "dezalgo": "^1.0.0",
- "graceful-fs": "^4.1.2",
- "once": "^1.3.0"
- }
+ "license": "MIT"
},
- "node_modules/npm/node_modules/retry": {
- "version": "0.12.0",
+ "node_modules/npm/node_modules/mute-stream": {
+ "version": "0.0.8",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/negotiator": {
+ "version": "0.6.3",
"inBundle": true,
"license": "MIT",
"engines": {
- "node": ">= 4"
+ "node": ">= 0.6"
}
},
- "node_modules/npm/node_modules/rimraf": {
- "version": "3.0.2",
+ "node_modules/npm/node_modules/node-gyp": {
+ "version": "9.1.0",
"inBundle": true,
- "license": "ISC",
+ "license": "MIT",
"dependencies": {
- "glob": "^7.1.3"
+ "env-paths": "^2.2.0",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.2.6",
+ "make-fetch-happen": "^10.0.3",
+ "nopt": "^5.0.0",
+ "npmlog": "^6.0.0",
+ "rimraf": "^3.0.2",
+ "semver": "^7.3.5",
+ "tar": "^6.1.2",
+ "which": "^2.0.2"
},
"bin": {
- "rimraf": "bin.js"
+ "node-gyp": "bin/node-gyp.js"
},
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "engines": {
+ "node": "^12.22 || ^14.13 || >=16"
}
},
- "node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": {
+ "node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": {
"version": "1.1.11",
"inBundle": true,
"license": "MIT",
@@ -2883,7 +2076,7 @@
"concat-map": "0.0.1"
}
},
- "node_modules/npm/node_modules/rimraf/node_modules/glob": {
+ "node_modules/npm/node_modules/node-gyp/node_modules/glob": {
"version": "7.2.3",
"inBundle": true,
"license": "ISC",
@@ -2902,7 +2095,7 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/npm/node_modules/rimraf/node_modules/minimatch": {
+ "node_modules/npm/node_modules/node-gyp/node_modules/minimatch": {
"version": "3.1.2",
"inBundle": true,
"license": "ISC",
@@ -2913,210 +2106,148 @@
"node": "*"
}
},
- "node_modules/npm/node_modules/safe-buffer": {
- "version": "5.2.1",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "inBundle": true,
- "license": "MIT"
- },
- "node_modules/npm/node_modules/safer-buffer": {
- "version": "2.1.2",
- "inBundle": true,
- "license": "MIT",
- "optional": true
- },
- "node_modules/npm/node_modules/semver": {
- "version": "7.3.7",
+ "node_modules/npm/node_modules/node-gyp/node_modules/nopt": {
+ "version": "5.0.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "lru-cache": "^6.0.0"
+ "abbrev": "1"
},
"bin": {
- "semver": "bin/semver.js"
+ "nopt": "bin/nopt.js"
},
"engines": {
- "node": ">=10"
+ "node": ">=6"
}
},
- "node_modules/npm/node_modules/semver/node_modules/lru-cache": {
+ "node_modules/npm/node_modules/nopt": {
"version": "6.0.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "yallist": "^4.0.0"
+ "abbrev": "^1.0.0"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
},
"engines": {
- "node": ">=10"
- }
- },
- "node_modules/npm/node_modules/set-blocking": {
- "version": "2.0.0",
- "inBundle": true,
- "license": "ISC"
- },
- "node_modules/npm/node_modules/signal-exit": {
- "version": "3.0.7",
- "inBundle": true,
- "license": "ISC"
- },
- "node_modules/npm/node_modules/smart-buffer": {
- "version": "4.2.0",
- "inBundle": true,
- "license": "MIT",
- "engines": {
- "node": ">= 6.0.0",
- "npm": ">= 3.0.0"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/socks": {
- "version": "2.7.0",
+ "node_modules/npm/node_modules/normalize-package-data": {
+ "version": "4.0.1",
"inBundle": true,
- "license": "MIT",
+ "license": "BSD-2-Clause",
"dependencies": {
- "ip": "^2.0.0",
- "smart-buffer": "^4.2.0"
+ "hosted-git-info": "^5.0.0",
+ "is-core-module": "^2.8.1",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4"
},
"engines": {
- "node": ">= 10.13.0",
- "npm": ">= 3.0.0"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/socks-proxy-agent": {
- "version": "7.0.0",
+ "node_modules/npm/node_modules/npm-audit-report": {
+ "version": "3.0.0",
"inBundle": true,
- "license": "MIT",
+ "license": "ISC",
"dependencies": {
- "agent-base": "^6.0.2",
- "debug": "^4.3.3",
- "socks": "^2.6.2"
+ "chalk": "^4.0.0"
},
"engines": {
- "node": ">= 10"
- }
- },
- "node_modules/npm/node_modules/spdx-correct": {
- "version": "3.1.1",
- "inBundle": true,
- "license": "Apache-2.0",
- "dependencies": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/npm/node_modules/spdx-exceptions": {
- "version": "2.3.0",
- "inBundle": true,
- "license": "CC-BY-3.0"
- },
- "node_modules/npm/node_modules/spdx-expression-parse": {
- "version": "3.0.1",
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/spdx-license-ids": {
- "version": "3.0.11",
- "inBundle": true,
- "license": "CC0-1.0"
- },
- "node_modules/npm/node_modules/ssri": {
- "version": "9.0.1",
+ "node_modules/npm/node_modules/npm-bundled": {
+ "version": "2.0.1",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "minipass": "^3.1.1"
+ "npm-normalize-package-bin": "^2.0.0"
},
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/string_decoder": {
- "version": "1.3.0",
+ "node_modules/npm/node_modules/npm-bundled/node_modules/npm-normalize-package-bin": {
+ "version": "2.0.0",
"inBundle": true,
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.2.0"
+ "license": "ISC",
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/string-width": {
- "version": "4.2.3",
+ "node_modules/npm/node_modules/npm-install-checks": {
+ "version": "5.0.0",
"inBundle": true,
- "license": "MIT",
+ "license": "BSD-2-Clause",
"dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
+ "semver": "^7.1.1"
},
"engines": {
- "node": ">=8"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/strip-ansi": {
- "version": "6.0.1",
+ "node_modules/npm/node_modules/npm-normalize-package-bin": {
+ "version": "1.0.1",
"inBundle": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
+ "license": "ISC"
},
- "node_modules/npm/node_modules/supports-color": {
- "version": "7.2.0",
+ "node_modules/npm/node_modules/npm-package-arg": {
+ "version": "9.1.0",
"inBundle": true,
- "license": "MIT",
+ "license": "ISC",
"dependencies": {
- "has-flag": "^4.0.0"
+ "hosted-git-info": "^5.0.0",
+ "proc-log": "^2.0.1",
+ "semver": "^7.3.5",
+ "validate-npm-package-name": "^4.0.0"
},
"engines": {
- "node": ">=8"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/tar": {
- "version": "6.1.11",
+ "node_modules/npm/node_modules/npm-packlist": {
+ "version": "5.1.3",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "minipass": "^3.0.0",
- "minizlib": "^2.1.1",
- "mkdirp": "^1.0.3",
- "yallist": "^4.0.0"
+ "glob": "^8.0.1",
+ "ignore-walk": "^5.0.1",
+ "npm-bundled": "^2.0.0",
+ "npm-normalize-package-bin": "^2.0.0"
+ },
+ "bin": {
+ "npm-packlist": "bin/index.js"
},
"engines": {
- "node": ">= 10"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/text-table": {
- "version": "0.2.0",
+ "node_modules/npm/node_modules/npm-packlist/node_modules/npm-normalize-package-bin": {
+ "version": "2.0.0",
"inBundle": true,
- "license": "MIT"
+ "license": "ISC",
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
},
- "node_modules/npm/node_modules/tiny-relative-date": {
- "version": "1.3.0",
+ "node_modules/npm/node_modules/npm-pick-manifest": {
+ "version": "7.0.2",
"inBundle": true,
- "license": "MIT"
+ "license": "ISC",
+ "dependencies": {
+ "npm-install-checks": "^5.0.0",
+ "npm-normalize-package-bin": "^2.0.0",
+ "npm-package-arg": "^9.0.0",
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
},
- "node_modules/npm/node_modules/treeverse": {
+ "node_modules/npm/node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin": {
"version": "2.0.0",
"inBundle": true,
"license": "ISC",
@@ -3124,377 +2255,347 @@
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/unique-filename": {
- "version": "2.0.1",
+ "node_modules/npm/node_modules/npm-profile": {
+ "version": "6.2.1",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "unique-slug": "^3.0.0"
+ "npm-registry-fetch": "^13.0.1",
+ "proc-log": "^2.0.0"
},
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/unique-slug": {
- "version": "3.0.0",
+ "node_modules/npm/node_modules/npm-registry-fetch": {
+ "version": "13.3.1",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "imurmurhash": "^0.1.4"
+ "make-fetch-happen": "^10.0.6",
+ "minipass": "^3.1.6",
+ "minipass-fetch": "^2.0.3",
+ "minipass-json-stream": "^1.0.1",
+ "minizlib": "^2.1.2",
+ "npm-package-arg": "^9.0.1",
+ "proc-log": "^2.0.0"
},
"engines": {
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/util-deprecate": {
- "version": "1.0.2",
+ "node_modules/npm/node_modules/npm-user-validate": {
+ "version": "1.0.1",
"inBundle": true,
- "license": "MIT"
+ "license": "BSD-2-Clause"
},
- "node_modules/npm/node_modules/validate-npm-package-license": {
- "version": "3.0.4",
+ "node_modules/npm/node_modules/npmlog": {
+ "version": "6.0.2",
"inBundle": true,
- "license": "Apache-2.0",
+ "license": "ISC",
"dependencies": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
+ "are-we-there-yet": "^3.0.0",
+ "console-control-strings": "^1.1.0",
+ "gauge": "^4.0.3",
+ "set-blocking": "^2.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/validate-npm-package-name": {
- "version": "4.0.0",
+ "node_modules/npm/node_modules/once": {
+ "version": "1.4.0",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "builtins": "^5.0.0"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "wrappy": "1"
}
},
- "node_modules/npm/node_modules/walk-up-path": {
- "version": "1.0.0",
+ "node_modules/npm/node_modules/opener": {
+ "version": "1.5.2",
"inBundle": true,
- "license": "ISC"
+ "license": "(WTFPL OR MIT)",
+ "bin": {
+ "opener": "bin/opener-bin.js"
+ }
},
- "node_modules/npm/node_modules/wcwidth": {
- "version": "1.0.1",
+ "node_modules/npm/node_modules/p-map": {
+ "version": "4.0.0",
"inBundle": true,
"license": "MIT",
"dependencies": {
- "defaults": "^1.0.3"
+ "aggregate-error": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/npm/node_modules/which": {
- "version": "2.0.2",
+ "node_modules/npm/node_modules/pacote": {
+ "version": "13.6.2",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "isexe": "^2.0.0"
+ "@npmcli/git": "^3.0.0",
+ "@npmcli/installed-package-contents": "^1.0.7",
+ "@npmcli/promise-spawn": "^3.0.0",
+ "@npmcli/run-script": "^4.1.0",
+ "cacache": "^16.0.0",
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.1.0",
+ "infer-owner": "^1.0.4",
+ "minipass": "^3.1.6",
+ "mkdirp": "^1.0.4",
+ "npm-package-arg": "^9.0.0",
+ "npm-packlist": "^5.1.0",
+ "npm-pick-manifest": "^7.0.0",
+ "npm-registry-fetch": "^13.0.1",
+ "proc-log": "^2.0.0",
+ "promise-retry": "^2.0.1",
+ "read-package-json": "^5.0.0",
+ "read-package-json-fast": "^2.0.3",
+ "rimraf": "^3.0.2",
+ "ssri": "^9.0.0",
+ "tar": "^6.1.11"
},
"bin": {
- "node-which": "bin/node-which"
+ "pacote": "lib/bin.js"
},
"engines": {
- "node": ">= 8"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/wide-align": {
- "version": "1.1.5",
+ "node_modules/npm/node_modules/parse-conflict-json": {
+ "version": "2.0.2",
"inBundle": true,
"license": "ISC",
"dependencies": {
- "string-width": "^1.0.2 || 2 || 3 || 4"
+ "json-parse-even-better-errors": "^2.3.1",
+ "just-diff": "^5.0.1",
+ "just-diff-apply": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/npm/node_modules/wrappy": {
- "version": "1.0.2",
+ "node_modules/npm/node_modules/path-is-absolute": {
+ "version": "1.0.1",
"inBundle": true,
- "license": "ISC"
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "node_modules/npm/node_modules/write-file-atomic": {
- "version": "4.0.2",
+ "node_modules/npm/node_modules/postcss-selector-parser": {
+ "version": "6.0.10",
"inBundle": true,
- "license": "ISC",
+ "license": "MIT",
"dependencies": {
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.7"
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
},
"engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ "node": ">=4"
}
},
- "node_modules/npm/node_modules/yallist": {
- "version": "4.0.0",
+ "node_modules/npm/node_modules/proc-log": {
+ "version": "2.0.1",
"inBundle": true,
- "license": "ISC"
- },
- "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"
+ "license": "ISC",
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/os-homedir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
- "engines": {
- "node": ">=0.10.0"
+ "node_modules/npm/node_modules/promise-all-reject-late": {
+ "version": "1.0.1",
+ "inBundle": true,
+ "license": "ISC",
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/p-is-promise": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz",
- "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
+ "node_modules/npm/node_modules/promise-call-limit": {
+ "version": "1.0.1",
+ "inBundle": true,
+ "license": "ISC",
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/path-is-absolute": {
+ "node_modules/npm/node_modules/promise-inflight": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
- },
- "node_modules/picocolors": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
- "dev": true,
+ "inBundle": true,
"license": "ISC"
},
- "node_modules/picomatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
- "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
- "dev": true,
+ "node_modules/npm/node_modules/promise-retry": {
+ "version": "2.0.1",
+ "inBundle": true,
"license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "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==",
- "dev": true,
"dependencies": {
- "detect-libc": "^2.0.0",
- "expand-template": "^2.0.3",
- "github-from-package": "0.0.0",
- "minimist": "^1.2.3",
- "mkdirp-classic": "^0.5.3",
- "napi-build-utils": "^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"
+ "err-code": "^2.0.2",
+ "retry": "^0.12.0"
},
"engines": {
"node": ">=10"
}
},
- "node_modules/prettier": {
- "version": "1.19.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
- "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
- "dev": true,
+ "node_modules/npm/node_modules/promzard": {
+ "version": "0.3.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "read": "1"
+ }
+ },
+ "node_modules/npm/node_modules/qrcode-terminal": {
+ "version": "0.12.0",
+ "inBundle": true,
"bin": {
- "prettier": "bin-prettier.js"
+ "qrcode-terminal": "bin/qrcode-terminal.js"
+ }
+ },
+ "node_modules/npm/node_modules/read": {
+ "version": "1.0.7",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "mute-stream": "~0.0.4"
},
"engines": {
- "node": ">=4"
+ "node": ">=0.8"
}
},
- "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==",
- "dev": true
- },
- "node_modules/progress": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
- "dev": true,
- "license": "MIT",
+ "node_modules/npm/node_modules/read-cmd-shim": {
+ "version": "3.0.0",
+ "inBundle": true,
+ "license": "ISC",
"engines": {
- "node": ">=0.4.0"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "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==",
- "dev": true,
+ "node_modules/npm/node_modules/read-package-json": {
+ "version": "5.0.2",
+ "inBundle": true,
+ "license": "ISC",
"dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
+ "glob": "^8.0.1",
+ "json-parse-even-better-errors": "^2.3.1",
+ "normalize-package-data": "^4.0.0",
+ "npm-normalize-package-bin": "^2.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/rc": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "dev": true,
+ "node_modules/npm/node_modules/read-package-json-fast": {
+ "version": "2.0.3",
+ "inBundle": true,
+ "license": "ISC",
"dependencies": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
+ "json-parse-even-better-errors": "^2.3.0",
+ "npm-normalize-package-bin": "^1.0.1"
},
- "bin": {
- "rc": "cli.js"
+ "engines": {
+ "node": ">=10"
}
},
- "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==",
- "dev": true,
- "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"
+ "node_modules/npm/node_modules/read-package-json/node_modules/npm-normalize-package-bin": {
+ "version": "2.0.0",
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
+ "node_modules/npm/node_modules/readable-stream": {
+ "version": "3.6.0",
+ "inBundle": true,
+ "license": "MIT",
"dependencies": {
- "resolve": "^1.1.6"
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
},
"engines": {
- "node": ">= 0.10"
+ "node": ">= 6"
}
},
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "dev": true,
+ "node_modules/npm/node_modules/readdir-scoped-modules": {
+ "version": "1.1.0",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "debuglog": "^1.0.1",
+ "dezalgo": "^1.0.0",
+ "graceful-fs": "^4.1.2",
+ "once": "^1.3.0"
+ }
+ },
+ "node_modules/npm/node_modules/retry": {
+ "version": "0.12.0",
+ "inBundle": true,
"license": "MIT",
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 4"
}
},
- "node_modules/resolve": {
- "version": "1.22.10",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
- "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
- "license": "MIT",
+ "node_modules/npm/node_modules/rimraf": {
+ "version": "3.0.2",
+ "inBundle": true,
+ "license": "ISC",
"dependencies": {
- "is-core-module": "^2.16.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
+ "glob": "^7.1.3"
},
"bin": {
- "resolve": "bin/resolve"
- },
- "engines": {
- "node": ">= 0.4"
+ "rimraf": "bin.js"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "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==",
- "dev": true
- },
- "node_modules/semver": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.3.tgz",
- "integrity": "sha512-wnilbGyMxzbY7dNOl7jpKbLSjcfeweJWU5j4+u5qW+6/wuGD9KzIGOyZnQVSBM9E7DtWaaH3CyHkppYrKYoxwg==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
+ "node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "node_modules/shelljs": {
- "version": "0.8.5",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
- "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
+ "node_modules/npm/node_modules/rimraf/node_modules/glob": {
+ "version": "7.2.3",
+ "inBundle": true,
+ "license": "ISC",
"dependencies": {
- "glob": "^7.0.0",
- "interpret": "^1.0.0",
- "rechoir": "^0.6.2"
- },
- "bin": {
- "shjs": "bin/shjs"
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
},
"engines": {
- "node": ">=4"
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/shx": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz",
- "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==",
+ "node_modules/npm/node_modules/rimraf/node_modules/minimatch": {
+ "version": "3.1.2",
+ "inBundle": true,
+ "license": "ISC",
"dependencies": {
- "minimist": "^1.2.3",
- "shelljs": "^0.8.5"
- },
- "bin": {
- "shx": "lib/cli.js"
+ "brace-expansion": "^1.1.7"
},
"engines": {
- "node": ">=6"
+ "node": "*"
}
},
- "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==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "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==",
- "dev": true,
+ "node_modules/npm/node_modules/safe-buffer": {
+ "version": "5.2.1",
"funding": [
{
"type": "github",
@@ -3509,974 +2610,586 @@
"url": "https://feross.org/support"
}
],
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "inBundle": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/npm/node_modules/semver": {
+ "version": "7.3.7",
+ "inBundle": true,
+ "license": "ISC",
"dependencies": {
- "decompress-response": "^6.0.0",
- "once": "^1.3.1",
- "simple-concat": "^1.0.0"
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/stream-meter": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/stream-meter/-/stream-meter-1.0.4.tgz",
- "integrity": "sha512-4sOEtrbgFotXwnEuzzsQBYEV1elAeFSO8rSGeTwabuX1RRn/kEq9JVH7I0MRBhKVRR0sJkr0M0QCH7yOLf9fhQ==",
- "dev": true,
+ "node_modules/npm/node_modules/semver/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "inBundle": true,
+ "license": "ISC",
"dependencies": {
- "readable-stream": "^2.1.4"
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "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==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
+ "node_modules/npm/node_modules/set-blocking": {
+ "version": "2.0.0",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
}
},
- "node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
+ "node_modules/npm/node_modules/socks": {
+ "version": "2.7.0",
+ "inBundle": true,
+ "license": "MIT",
"dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
+ "ip": "^2.0.0",
+ "smart-buffer": "^4.2.0"
},
"engines": {
- "node": ">=8"
+ "node": ">= 10.13.0",
+ "npm": ">= 3.0.0"
}
},
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
+ "node_modules/npm/node_modules/socks-proxy-agent": {
+ "version": "7.0.0",
+ "inBundle": true,
+ "license": "MIT",
"dependencies": {
- "ansi-regex": "^5.0.1"
+ "agent-base": "^6.0.2",
+ "debug": "^4.3.3",
+ "socks": "^2.6.2"
},
"engines": {
- "node": ">=8"
+ "node": ">= 10"
}
},
- "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==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node_modules/npm/node_modules/spdx-correct": {
+ "version": "3.1.1",
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
}
},
- "node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "node_modules/npm/node_modules/spdx-exceptions": {
+ "version": "2.3.0",
+ "inBundle": true,
+ "license": "CC-BY-3.0"
+ },
+ "node_modules/npm/node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "inBundle": true,
+ "license": "MIT",
"dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
}
},
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
+ "node_modules/npm/node_modules/spdx-license-ids": {
+ "version": "3.0.11",
+ "inBundle": true,
+ "license": "CC0-1.0"
},
- "node_modules/tar": {
- "version": "7.5.16",
- "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.16.tgz",
- "integrity": "sha512-56adEpPMouktRlBLXiaYFFzZ/3+JXa8P9n7WbR+ibIjtviN55mEaOkiysCnPnWm+7kkui1Dn8J9l+g6zV8731w==",
- "dev": true,
+ "node_modules/npm/node_modules/ssri": {
+ "version": "9.0.1",
+ "inBundle": true,
+ "license": "ISC",
"dependencies": {
- "@isaacs/fs-minipass": "^4.0.0",
- "chownr": "^3.0.0",
- "minipass": "^7.1.2",
- "minizlib": "^3.1.0",
- "yallist": "^5.0.0"
+ "minipass": "^3.1.1"
},
"engines": {
- "node": ">=18"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/tar-fs": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz",
- "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==",
- "dev": true,
+ "node_modules/npm/node_modules/string_decoder": {
+ "version": "1.3.0",
+ "inBundle": true,
"license": "MIT",
"dependencies": {
- "chownr": "^1.1.1",
- "mkdirp-classic": "^0.5.2",
- "pump": "^3.0.0",
- "tar-stream": "^2.1.4"
+ "safe-buffer": "~5.2.0"
}
},
- "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==",
- "dev": true,
+ "node_modules/npm/node_modules/string-width": {
+ "version": "4.2.3",
+ "inBundle": true,
+ "license": "MIT",
"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"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
},
"engines": {
- "node": ">=6"
+ "node": ">=8"
}
},
- "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==",
- "dev": true,
+ "node_modules/npm/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "inBundle": true,
+ "license": "MIT",
"dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
+ "ansi-regex": "^5.0.1"
},
"engines": {
- "node": ">= 6"
- }
- },
- "node_modules/tar/node_modules/chownr": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
- "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/tar/node_modules/yallist": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
- "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "engines": {
- "node": ">=18"
+ "node": ">=8"
}
},
- "node_modules/tinyglobby": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz",
- "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==",
- "dev": true,
+ "node_modules/npm/node_modules/supports-color": {
+ "version": "7.2.0",
+ "inBundle": true,
"license": "MIT",
"dependencies": {
- "fdir": "^6.4.4",
- "picomatch": "^4.0.2"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": ">=12.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/SuperchupuDev"
+ "node": ">=8"
}
},
- "node_modules/tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
- "dev": true,
- "license": "MIT"
- },
- "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==",
- "dev": true,
+ "node_modules/npm/node_modules/tar": {
+ "version": "6.1.11",
+ "inBundle": true,
+ "license": "ISC",
"dependencies": {
- "safe-buffer": "^5.0.1"
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^3.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
},
"engines": {
- "node": "*"
+ "node": ">= 10"
}
},
- "node_modules/universalify": {
+ "node_modules/npm/node_modules/text-table": {
+ "version": "0.2.0",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/tiny-relative-date": {
+ "version": "1.3.0",
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/treeverse": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true,
+ "inBundle": true,
+ "license": "ISC",
"engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/unzipper": {
- "version": "0.12.3",
- "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.12.3.tgz",
- "integrity": "sha512-PZ8hTS+AqcGxsaQntl3IRBw65QrBI6lxzqDEL7IAo/XCEqRTKGfOX56Vea5TH9SZczRVxuzk1re04z/YjuYCJA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "bluebird": "~3.7.2",
- "duplexer2": "~0.1.4",
- "fs-extra": "^11.2.0",
- "graceful-fs": "^4.2.2",
- "node-int64": "^0.4.0"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/unzipper/node_modules/fs-extra": {
- "version": "11.3.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
- "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
- "dev": true,
- "license": "MIT",
+ "node_modules/npm/node_modules/unique-filename": {
+ "version": "2.0.1",
+ "inBundle": true,
+ "license": "ISC",
"dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
+ "unique-slug": "^3.0.0"
},
"engines": {
- "node": ">=14.14"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/user-home": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz",
- "integrity": "sha512-KMWqdlOcjCYdtIJpicDSFBQ8nFwS2i9sslAd6f4+CBGcU4gist2REnr2fxj2YocvJFxSF3ZOHLYLVZnUxv4BZQ==",
+ "node_modules/npm/node_modules/unique-slug": {
+ "version": "3.0.0",
+ "inBundle": true,
+ "license": "ISC",
"dependencies": {
- "os-homedir": "^1.0.0"
+ "imurmurhash": "^0.1.4"
},
"engines": {
- "node": ">=0.10.0"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/util-deprecate": {
+ "node_modules/npm/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==",
- "dev": true
- },
- "node_modules/webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
- "dev": true,
- "license": "BSD-2-Clause"
+ "inBundle": true,
+ "license": "MIT"
},
- "node_modules/whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "dev": true,
- "license": "MIT",
+ "node_modules/npm/node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "inBundle": true,
+ "license": "Apache-2.0",
"dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
}
},
- "node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "license": "MIT",
+ "node_modules/npm/node_modules/validate-npm-package-name": {
+ "version": "4.0.0",
+ "inBundle": true,
+ "license": "ISC",
"dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
+ "builtins": "^5.0.0"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/wrap-ansi/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
+ "node_modules/npm/node_modules/walk-up-path": {
+ "version": "1.0.0",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/wcwidth": {
+ "version": "1.0.1",
+ "inBundle": true,
"license": "MIT",
"dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "defaults": "^1.0.3"
}
},
- "node_modules/wrap-ansi/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "license": "MIT",
+ "node_modules/npm/node_modules/which": {
+ "version": "2.0.2",
+ "inBundle": true,
+ "license": "ISC",
"dependencies": {
- "color-name": "~1.1.4"
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
},
"engines": {
- "node": ">=7.0.0"
+ "node": ">= 8"
}
},
- "node_modules/wrap-ansi/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
- "license": "MIT"
+ "node_modules/npm/node_modules/wide-align": {
+ "version": "1.1.5",
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^1.0.2 || 2 || 3 || 4"
+ }
},
- "node_modules/wrappy": {
+ "node_modules/npm/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=="
+ "inBundle": true,
+ "license": "ISC"
},
- "node_modules/y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true,
+ "node_modules/npm/node_modules/write-file-atomic": {
+ "version": "4.0.2",
+ "inBundle": true,
"license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.7"
+ },
"engines": {
- "node": ">=10"
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
}
},
- "node_modules/yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "node_modules/npm/node_modules/yallist": {
+ "version": "4.0.0",
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/prettier": {
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
+ "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
+ "bin": {
+ "prettier": "bin-prettier.js"
},
"engines": {
- "node": ">=10"
+ "node": ">=4"
}
},
- "node_modules/yargs-parser": {
- "version": "20.2.9",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
- "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
- "dev": true,
- "license": "ISC",
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
"engines": {
- "node": ">=10"
+ "node": ">=4"
}
}
},
"dependencies": {
- "@babel/helper-string-parser": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
- "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
- "dev": true
- },
- "@babel/helper-validator-identifier": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
- "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
- "dev": true
- },
- "@isaacs/fs-minipass": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
- "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
+ "@esbuild/aix-ppc64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz",
+ "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==",
"dev": true,
- "requires": {
- "minipass": "^7.0.4"
- }
+ "optional": true
},
- "@jridgewell/gen-mapping": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
- "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
+ "@esbuild/android-arm": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz",
+ "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==",
"dev": true,
- "requires": {
- "@jridgewell/set-array": "^1.2.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.24"
- }
- },
- "@jridgewell/resolve-uri": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
- "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
- "dev": true
- },
- "@jridgewell/set-array": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
- "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
- "dev": true
- },
- "@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
- "dev": true
+ "optional": true
},
- "@jridgewell/trace-mapping": {
- "version": "0.3.25",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
- "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "@esbuild/android-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz",
+ "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==",
"dev": true,
- "requires": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
- }
+ "optional": true
},
- "@yao-pkg/pkg": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/@yao-pkg/pkg/-/pkg-6.4.1.tgz",
- "integrity": "sha512-pjePVt+DQP+HaJI5DfEZDX1pGsMMFjv1wuqfy/BwXlnffVIRk8lXjw7yVYvLQRcomf8Eaz2chDE5B6gR2SSaQw==",
+ "@esbuild/android-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz",
+ "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==",
"dev": true,
- "requires": {
- "@babel/generator": "^7.23.0",
- "@babel/parser": "^7.23.0",
- "@babel/types": "^7.23.0",
- "@yao-pkg/pkg-fetch": "3.5.21",
- "into-stream": "^6.0.0",
- "minimist": "^1.2.6",
- "multistream": "^4.1.0",
- "picocolors": "^1.1.0",
- "picomatch": "^4.0.2",
- "prebuild-install": "^7.1.1",
- "resolve": "^1.22.10",
- "stream-meter": "^1.0.4",
- "tar": "^7.4.3",
- "tinyglobby": "^0.2.11",
- "unzipper": "^0.12.3"
- },
- "dependencies": {
- "@babel/generator": {
- "version": "7.26.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz",
- "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==",
- "dev": true,
- "requires": {
- "@babel/parser": "^7.26.5",
- "@babel/types": "^7.26.5",
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25",
- "jsesc": "^3.0.2"
- }
- },
- "@babel/parser": {
- "version": "7.26.7",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz",
- "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.26.7"
- }
- },
- "@babel/types": {
- "version": "7.26.7",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz",
- "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==",
- "dev": true,
- "requires": {
- "@babel/helper-string-parser": "^7.25.9",
- "@babel/helper-validator-identifier": "^7.25.9"
- }
- },
- "jsesc": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
- "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
- "dev": true
- }
- }
+ "optional": true
},
- "@yao-pkg/pkg-fetch": {
- "version": "3.5.21",
- "resolved": "https://registry.npmjs.org/@yao-pkg/pkg-fetch/-/pkg-fetch-3.5.21.tgz",
- "integrity": "sha512-nlJ+rXersw70CQVSph7OfIN8lN6nCStjU7koXzh0WXiPvztZGqkoQTScHQCe1K8/tuKpeL0bEOYW0rP4QqMJ9A==",
+ "@esbuild/darwin-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz",
+ "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==",
"dev": true,
- "requires": {
- "https-proxy-agent": "^5.0.0",
- "node-fetch": "^2.6.6",
- "picocolors": "^1.1.0",
- "progress": "^2.0.3",
- "semver": "^7.3.5",
- "tar-fs": "^2.1.1",
- "yargs": "^16.2.0"
- }
+ "optional": true
},
- "agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "@esbuild/darwin-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz",
+ "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==",
"dev": true,
- "requires": {
- "debug": "4"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
- },
- "base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "dev": true
+ "optional": true
},
- "bl": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "@esbuild/freebsd-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==",
"dev": true,
- "requires": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- },
- "dependencies": {
- "readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- }
- }
- },
- "bluebird": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
- "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
- "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
+ "optional": true
},
- "buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "@esbuild/freebsd-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz",
+ "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==",
"dev": true,
- "requires": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "chownr": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
- "dev": true
+ "optional": true
},
- "cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "@esbuild/linux-arm": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz",
+ "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==",
"dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
- },
- "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==",
- "dev": true
+ "optional": true
},
- "debug": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
- "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "@esbuild/linux-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz",
+ "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==",
"dev": true,
- "requires": {
- "ms": "^2.1.3"
- }
+ "optional": true
},
- "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==",
+ "@esbuild/linux-ia32": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz",
+ "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==",
"dev": true,
- "requires": {
- "mimic-response": "^3.1.0"
- }
- },
- "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==",
- "dev": true
- },
- "detect-libc": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
- "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
- "dev": true
+ "optional": true
},
- "duplexer2": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
- "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==",
+ "@esbuild/linux-loong64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz",
+ "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==",
"dev": true,
- "requires": {
- "readable-stream": "^2.0.2"
- }
- },
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
+ "optional": true
},
- "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==",
+ "@esbuild/linux-mips64el": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz",
+ "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==",
"dev": true,
- "requires": {
- "once": "^1.4.0"
- }
- },
- "escalade": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
- "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
- },
- "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==",
- "dev": true
+ "optional": true
},
- "fdir": {
- "version": "6.4.4",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
- "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
+ "@esbuild/linux-ppc64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz",
+ "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==",
"dev": true,
- "requires": {}
+ "optional": true
},
- "from2": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
- "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
+ "@esbuild/linux-riscv64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz",
+ "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==",
"dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0"
- }
- },
- "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==",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
- },
- "function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true
- },
- "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==",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
- },
- "hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "requires": {
- "function-bind": "^1.1.2"
- }
+ "optional": true
},
- "https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "@esbuild/linux-s390x": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz",
+ "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==",
"dev": true,
- "requires": {
- "agent-base": "6",
- "debug": "4"
- }
- },
- "ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true
- },
- "interpret": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
- "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA=="
+ "optional": true
},
- "into-stream": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz",
- "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==",
+ "@esbuild/linux-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz",
+ "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==",
"dev": true,
- "requires": {
- "from2": "^2.3.0",
- "p-is-promise": "^3.0.0"
- }
+ "optional": true
},
- "is-core-module": {
- "version": "2.16.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
- "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
- "requires": {
- "hasown": "^2.0.2"
- }
+ "@esbuild/netbsd-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==",
+ "dev": true,
+ "optional": true
},
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
+ "@esbuild/netbsd-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz",
+ "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==",
+ "dev": true,
+ "optional": true
},
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
+ "@esbuild/openbsd-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz",
+ "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==",
+ "dev": true,
+ "optional": true
},
- "jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "@esbuild/openbsd-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz",
+ "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==",
"dev": true,
- "requires": {
- "graceful-fs": "^4.1.6",
- "universalify": "^2.0.0"
- }
+ "optional": true
},
- "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==",
- "dev": true
+ "@esbuild/openharmony-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz",
+ "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==",
+ "dev": true,
+ "optional": true
},
- "minimatch": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
- "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
- "requires": {
- "brace-expansion": "^1.1.7"
- }
+ "@esbuild/sunos-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz",
+ "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==",
+ "dev": true,
+ "optional": true
},
- "minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="
+ "@esbuild/win32-arm64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz",
+ "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==",
+ "dev": true,
+ "optional": true
},
- "minipass": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
- "dev": true
+ "@esbuild/win32-ia32": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz",
+ "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==",
+ "dev": true,
+ "optional": true
},
- "minizlib": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz",
- "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==",
+ "@esbuild/win32-x64": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz",
+ "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==",
"dev": true,
+ "optional": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"requires": {
- "minipass": "^7.1.2"
+ "color-convert": "^1.9.0"
}
},
- "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==",
- "dev": true
- },
- "ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
- },
- "multistream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/multistream/-/multistream-4.1.0.tgz",
- "integrity": "sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==",
- "dev": true,
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"requires": {
- "once": "^1.4.0",
- "readable-stream": "^3.6.0"
- },
- "dependencies": {
- "readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- }
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
}
},
- "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==",
- "dev": true
- },
- "node-abi": {
- "version": "3.40.0",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.40.0.tgz",
- "integrity": "sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA==",
- "dev": true,
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"requires": {
- "semver": "^7.3.5"
+ "color-name": "1.1.3"
}
},
- "node-fetch": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
- "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "esbuild": {
+ "version": "0.25.12",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
+ "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==",
"dev": true,
"requires": {
- "whatwg-url": "^5.0.0"
+ "@esbuild/aix-ppc64": "0.25.12",
+ "@esbuild/android-arm": "0.25.12",
+ "@esbuild/android-arm64": "0.25.12",
+ "@esbuild/android-x64": "0.25.12",
+ "@esbuild/darwin-arm64": "0.25.12",
+ "@esbuild/darwin-x64": "0.25.12",
+ "@esbuild/freebsd-arm64": "0.25.12",
+ "@esbuild/freebsd-x64": "0.25.12",
+ "@esbuild/linux-arm": "0.25.12",
+ "@esbuild/linux-arm64": "0.25.12",
+ "@esbuild/linux-ia32": "0.25.12",
+ "@esbuild/linux-loong64": "0.25.12",
+ "@esbuild/linux-mips64el": "0.25.12",
+ "@esbuild/linux-ppc64": "0.25.12",
+ "@esbuild/linux-riscv64": "0.25.12",
+ "@esbuild/linux-s390x": "0.25.12",
+ "@esbuild/linux-x64": "0.25.12",
+ "@esbuild/netbsd-arm64": "0.25.12",
+ "@esbuild/netbsd-x64": "0.25.12",
+ "@esbuild/openbsd-arm64": "0.25.12",
+ "@esbuild/openbsd-x64": "0.25.12",
+ "@esbuild/openharmony-arm64": "0.25.12",
+ "@esbuild/sunos-x64": "0.25.12",
+ "@esbuild/win32-arm64": "0.25.12",
+ "@esbuild/win32-ia32": "0.25.12",
+ "@esbuild/win32-x64": "0.25.12"
}
},
- "node-int64": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
- "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
- "dev": true
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
},
"npm": {
"version": "8.19.4",
@@ -6056,238 +4769,12 @@
}
}
},
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "requires": {
- "wrappy": "1"
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ=="
- },
- "p-is-promise": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz",
- "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
- },
- "path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
- },
- "picocolors": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
- "dev": true
- },
- "picomatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
- "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
- "dev": true
- },
- "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==",
- "dev": true,
- "requires": {
- "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"
- }
- },
"prettier": {
"version": "1.19.1",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
"integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
"dev": true
},
- "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==",
- "dev": true
- },
- "progress": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
- "dev": true
- },
- "pump": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dev": true,
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "rc": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "dev": true,
- "requires": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- }
- },
- "readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "requires": {
- "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"
- }
- },
- "rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
- "requires": {
- "resolve": "^1.1.6"
- }
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "dev": true
- },
- "resolve": {
- "version": "1.22.10",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
- "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
- "requires": {
- "is-core-module": "^2.16.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- }
- },
- "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==",
- "dev": true
- },
- "semver": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.3.tgz",
- "integrity": "sha512-wnilbGyMxzbY7dNOl7jpKbLSjcfeweJWU5j4+u5qW+6/wuGD9KzIGOyZnQVSBM9E7DtWaaH3CyHkppYrKYoxwg==",
- "dev": true
- },
- "shelljs": {
- "version": "0.8.5",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
- "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
- "requires": {
- "glob": "^7.0.0",
- "interpret": "^1.0.0",
- "rechoir": "^0.6.2"
- }
- },
- "shx": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz",
- "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==",
- "requires": {
- "minimist": "^1.2.3",
- "shelljs": "^0.8.5"
- }
- },
- "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==",
- "dev": true
- },
- "simple-get": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
- "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
- "dev": true,
- "requires": {
- "decompress-response": "^6.0.0",
- "once": "^1.3.1",
- "simple-concat": "^1.0.0"
- }
- },
- "stream-meter": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/stream-meter/-/stream-meter-1.0.4.tgz",
- "integrity": "sha512-4sOEtrbgFotXwnEuzzsQBYEV1elAeFSO8rSGeTwabuX1RRn/kEq9JVH7I0MRBhKVRR0sJkr0M0QCH7yOLf9fhQ==",
- "dev": true,
- "requires": {
- "readable-stream": "^2.1.4"
- }
- },
- "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==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "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==",
- "dev": true
- },
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -6295,232 +4782,6 @@
"requires": {
"has-flag": "^3.0.0"
}
- },
- "supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
- },
- "tar": {
- "version": "7.5.16",
- "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.16.tgz",
- "integrity": "sha512-56adEpPMouktRlBLXiaYFFzZ/3+JXa8P9n7WbR+ibIjtviN55mEaOkiysCnPnWm+7kkui1Dn8J9l+g6zV8731w==",
- "dev": true,
- "requires": {
- "@isaacs/fs-minipass": "^4.0.0",
- "chownr": "^3.0.0",
- "minipass": "^7.1.2",
- "minizlib": "^3.1.0",
- "yallist": "^5.0.0"
- },
- "dependencies": {
- "chownr": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
- "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
- "dev": true
- },
- "yallist": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
- "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
- "dev": true
- }
- }
- },
- "tar-fs": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz",
- "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==",
- "dev": true,
- "requires": {
- "chownr": "^1.1.1",
- "mkdirp-classic": "^0.5.2",
- "pump": "^3.0.0",
- "tar-stream": "^2.1.4"
- }
- },
- "tar-stream": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
- "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
- "dev": true,
- "requires": {
- "bl": "^4.0.3",
- "end-of-stream": "^1.4.1",
- "fs-constants": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.1.1"
- },
- "dependencies": {
- "readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- }
- }
- },
- "tinyglobby": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz",
- "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==",
- "dev": true,
- "requires": {
- "fdir": "^6.4.4",
- "picomatch": "^4.0.2"
- }
- },
- "tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
- "dev": true
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true
- },
- "unzipper": {
- "version": "0.12.3",
- "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.12.3.tgz",
- "integrity": "sha512-PZ8hTS+AqcGxsaQntl3IRBw65QrBI6lxzqDEL7IAo/XCEqRTKGfOX56Vea5TH9SZczRVxuzk1re04z/YjuYCJA==",
- "dev": true,
- "requires": {
- "bluebird": "~3.7.2",
- "duplexer2": "~0.1.4",
- "fs-extra": "^11.2.0",
- "graceful-fs": "^4.2.2",
- "node-int64": "^0.4.0"
- },
- "dependencies": {
- "fs-extra": {
- "version": "11.3.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
- "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- }
- }
- }
- },
- "user-home": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz",
- "integrity": "sha512-KMWqdlOcjCYdtIJpicDSFBQ8nFwS2i9sslAd6f4+CBGcU4gist2REnr2fxj2YocvJFxSF3ZOHLYLVZnUxv4BZQ==",
- "requires": {
- "os-homedir": "^1.0.0"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true
- },
- "webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
- "dev": true
- },
- "whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "dev": true,
- "requires": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- }
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
- },
- "y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true
- },
- "yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
- "dev": true,
- "requires": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
- }
- },
- "yargs-parser": {
- "version": "20.2.9",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
- "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
- "dev": true
}
}
}
diff --git a/standalone/package.json b/standalone/package.json
index 491481b49a1..6e700a83595 100644
--- a/standalone/package.json
+++ b/standalone/package.json
@@ -1,36 +1,22 @@
{
"name": "firepit",
"version": "1.1.0",
- "description": "",
+ "description": "Standalone executable builder for Firebase CLI using Node Single Executable Applications (SEAs)",
"main": "index.js",
"scripts": {
"fmt": "prettier --write *.js",
- "pkg": "pkg -c package.json firepit.js --out-path dist/ && shx chmod +x dist/firepit-*",
+ "build:sea": "node build-sea.js",
+ "pkg": "node build-sea.js",
"ship": "gcloud storage cp dist/* gs://fir-tools-builds/firepit/ && gcloud storage buckets add-iam-policy-binding gs://fir-tools-builds --member=allUsers --role=objectViewer"
},
"author": "",
"license": "MIT",
"dependencies": {
"chalk": "^2.4.2",
- "npm": "^8.19.0",
- "shelljs": "^0.8.3",
- "shx": "^0.3.2",
- "user-home": "^2.0.0"
- },
- "pkg": {
- "scripts": [
- "node_modules/npm/lib/*.js",
- "node_modules/npm/lib/**/*.js"
- ],
- "assets": [
- "node_modules/.bin/**",
- "node_modules/npm/bin/**/*",
- "node_modules/npm/node_modules/node-gyp/**/*",
- "vendor/**"
- ]
+ "npm": "^8.19.0"
},
"devDependencies": {
- "@yao-pkg/pkg": "~6.4.1",
+ "esbuild": "^0.25.0",
"prettier": "^1.15.3"
}
}
diff --git a/standalone/runtime.js b/standalone/runtime.js
index 36dd52aa9ab..b67252785c7 100644
--- a/standalone/runtime.js
+++ b/standalone/runtime.js
@@ -81,42 +81,38 @@ exports.Script_ShellJS = async function() {
path.join(process.cwd(), "node_modules/.bin")
]);
- let index;
- if ((index = args.indexOf("-c")) !== -1) {
- args.splice(index, 1);
+ if (args.length === 0) {
+ process.exit(0);
}
- args[0] = args[0].replace(process.execPath, "node");
- let [cmdRuntime, cmdScript, ...otherArgs] = args[0].split(" ");
-
- if (cmdRuntime === process.execPath) {
- cmdRuntime = "node";
- }
-
- let cmd;
- if (cmdRuntime === "node") {
- if ([".", "/"].indexOf(cmdScript[0]) === -1) {
- cmdScript = await getSafeCrossPlatformPath(
- isWin,
- path.join(process.cwd(), cmdScript)
- );
+ let commandToRun;
+ if (args[0] === "-c") {
+ if (args[1] === "--") {
+ commandToRun = args.slice(2).join(" ");
+ } else {
+ commandToRun = args.slice(1).join(" ");
}
-
- cmd = child_process.fork(cmdScript, otherArgs, {
- env: process.env,
- cwd: process.cwd(),
- stdio: "inherit"
- });
} else {
- cmd = child_process.spawn(cmdRuntime, [cmdScript, ...otherArgs], {
- env: process.env,
- cwd: process.cwd(),
- stdio: "inherit",
- shell: true
- });
+ commandToRun = args.join(" ");
}
+ const cmd = isWin
+ ? child_process.spawn("cmd.exe", ["/d", "/s", "/c", commandToRun], {
+ env: process.env,
+ cwd: process.cwd(),
+ stdio: "inherit"
+ })
+ : child_process.spawn("/bin/sh", ["-c", commandToRun], {
+ env: process.env,
+ cwd: process.cwd(),
+ stdio: "inherit"
+ });
+
cmd.on("exit", code => {
- process.exit(code);
+ process.exit(code !== null ? code : 0);
+ });
+ cmd.on("error", err => {
+ console.error(err);
+ process.exit(1);
});
};