@weezy20/zv 0.9.2 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/install.sh ADDED
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env bash
2
+ # npm postinstall — downloads the correct zv binary from GitHub Releases.
3
+ #
4
+ # Environment:
5
+ # ZV_VERSION — version to install (set during npm pack, defaults to latest)
6
+ set -euo pipefail
7
+
8
+ VERSION="${ZV_VERSION:-}"
9
+ REPO="weezy20/zv"
10
+ GITHUB_API="https://api.github.com/repos/${REPO}"
11
+ GITHUB_RELEASE="https://github.com/${REPO}/releases"
12
+
13
+ OS="$(uname -s)"
14
+ ARCH="$(uname -m)"
15
+
16
+ case "${OS}-${ARCH}" in
17
+ Linux-x86_64) TARGET="x86_64-unknown-linux-gnu" ;;
18
+ Linux-aarch64) TARGET="aarch64-unknown-linux-gnu" ;;
19
+ Linux-arm64) TARGET="aarch64-unknown-linux-gnu" ;;
20
+ Darwin-x86_64) TARGET="x86_64-apple-darwin" ;;
21
+ Darwin-arm64) TARGET="aarch64-apple-darwin" ;;
22
+ *) echo "zv: unsupported platform ${OS}-${ARCH}, skipping install"; exit 0 ;;
23
+ esac
24
+
25
+ if [[ -z "${VERSION}" ]]; then
26
+ VERSION="$(curl -fsSL "${GITHUB_API}/releases/latest" | grep '"tag_name"' | head -1 | sed -E 's/.*"([^"]+)".*/\1/')"
27
+ fi
28
+
29
+ ARCHIVE_URL="${GITHUB_RELEASE}/download/${VERSION}/zv-${TARGET}.tar.gz"
30
+
31
+ DATA_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/zv"
32
+ BIN_DIR="${DATA_DIR}/bin"
33
+ PUB_BIN_DIR="${XDG_BIN_HOME:-$HOME/.local/bin}"
34
+
35
+ TMPDIR="$(mktemp -d)"
36
+ trap 'rm -rf "${TMPDIR}"' EXIT
37
+
38
+ echo "zv: downloading ${VERSION} for ${TARGET}..."
39
+ curl -fsSL "${ARCHIVE_URL}" | tar xzf - -C "${TMPDIR}"
40
+
41
+ mkdir -p "${BIN_DIR}"
42
+ mv "${TMPDIR}/zv-${TARGET}/zv" "${BIN_DIR}/zv"
43
+ chmod +x "${BIN_DIR}/zv"
44
+
45
+ mkdir -p "${PUB_BIN_DIR}"
46
+ ln -sf "${BIN_DIR}/zv" "${PUB_BIN_DIR}/zv"
47
+
48
+ echo "zv: installed ${VERSION} to ${BIN_DIR}/zv (symlink: ${PUB_BIN_DIR}/zv)"
package/package.json CHANGED
@@ -1,113 +1,28 @@
1
1
  {
2
- "artifactDownloadUrl": "https://github.com/weezy20/zv/releases/download/v0.9.2",
3
- "author": "Abhishek Shah",
4
- "bin": {
5
- "zv": "run-zv.js"
6
- },
7
- "dependencies": {
8
- "axios": "^1.13.2",
9
- "axios-proxy-builder": "^0.1.2",
10
- "console.table": "^0.10.0",
11
- "detect-libc": "^2.1.2",
12
- "rimraf": "^6.1.2"
13
- },
2
+ "name": "@weezy20/zv",
3
+ "version": "0.10.0",
14
4
  "description": "Ziglang Version Manager and Project Starter",
15
- "devDependencies": {
16
- "prettier": "^3.7.4"
17
- },
18
- "engines": {
19
- "node": ">=14",
20
- "npm": ">=6"
5
+ "homepage": "https://github.com/weezy20/zv",
6
+ "license": "MIT",
7
+ "bin": {
8
+ "zv": "run-zv.sh"
21
9
  },
22
- "glibcMinimum": {
23
- "major": 2,
24
- "series": 35
10
+ "scripts": {
11
+ "postinstall": "bash install.sh",
12
+ "prepack": "bash prepack.sh"
25
13
  },
26
- "homepage": "https://github.com/weezy20/zv",
14
+ "files": [
15
+ "install.sh",
16
+ "run-zv.sh"
17
+ ],
27
18
  "keywords": [
28
19
  "ziglang",
20
+ "zig",
29
21
  "version-manager",
30
- "project-starter",
31
- "cli",
32
- "development-tools"
22
+ "zvm"
33
23
  ],
34
- "license": "MIT",
35
- "name": "@weezy20/zv",
36
- "preferUnplugged": true,
37
- "repository": "https://github.com/weezy20/zv",
38
- "scripts": {
39
- "fmt": "prettier --write **/*.js",
40
- "fmt:check": "prettier --check **/*.js",
41
- "postinstall": "node ./install.js"
42
- },
43
- "supportedPlatforms": {
44
- "aarch64-apple-darwin": {
45
- "artifactName": "zv-aarch64-apple-darwin.tar.gz",
46
- "bins": {
47
- "zv": "zv"
48
- },
49
- "zipExt": ".tar.gz"
50
- },
51
- "aarch64-pc-windows-msvc": {
52
- "artifactName": "zv-x86_64-pc-windows-msvc.zip",
53
- "bins": {
54
- "zv": "zv.exe"
55
- },
56
- "zipExt": ".zip"
57
- },
58
- "aarch64-unknown-linux-gnu": {
59
- "artifactName": "zv-aarch64-unknown-linux-gnu.tar.gz",
60
- "bins": {
61
- "zv": "zv"
62
- },
63
- "zipExt": ".tar.gz"
64
- },
65
- "x86_64-apple-darwin": {
66
- "artifactName": "zv-x86_64-apple-darwin.tar.gz",
67
- "bins": {
68
- "zv": "zv"
69
- },
70
- "zipExt": ".tar.gz"
71
- },
72
- "x86_64-pc-windows-gnu": {
73
- "artifactName": "zv-x86_64-pc-windows-msvc.zip",
74
- "bins": {
75
- "zv": "zv.exe"
76
- },
77
- "zipExt": ".zip"
78
- },
79
- "x86_64-pc-windows-msvc": {
80
- "artifactName": "zv-x86_64-pc-windows-msvc.zip",
81
- "bins": {
82
- "zv": "zv.exe"
83
- },
84
- "zipExt": ".zip"
85
- },
86
- "x86_64-unknown-linux-gnu": {
87
- "artifactName": "zv-x86_64-unknown-linux-gnu.tar.gz",
88
- "bins": {
89
- "zv": "zv"
90
- },
91
- "zipExt": ".tar.gz"
92
- },
93
- "x86_64-unknown-linux-musl-dynamic": {
94
- "artifactName": "zv-x86_64-unknown-linux-musl.tar.gz",
95
- "bins": {
96
- "zv": "zv"
97
- },
98
- "zipExt": ".tar.gz"
99
- },
100
- "x86_64-unknown-linux-musl-static": {
101
- "artifactName": "zv-x86_64-unknown-linux-musl.tar.gz",
102
- "bins": {
103
- "zv": "zv"
104
- },
105
- "zipExt": ".tar.gz"
106
- }
107
- },
108
- "version": "0.9.2",
109
- "volta": {
110
- "node": "18.14.1",
111
- "npm": "9.5.0"
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "https://github.com/weezy20/zv.git"
112
27
  }
113
- }
28
+ }
package/run-zv.sh ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env bash
2
+ # run-zv.sh — thin wrapper that execs the real zv binary.
3
+ # This file is installed as the npm bin entry.
4
+ set -euo pipefail
5
+ exec "${XDG_DATA_HOME:-$HOME/.local/share}/zv/bin/zv" "$@"
package/.gitignore DELETED
@@ -1,2 +0,0 @@
1
- /node_modules
2
-
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License (Expat)
2
-
3
- Copyright (c) Abhishek Shah
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
package/README.md DELETED
@@ -1,251 +0,0 @@
1
- <h1 align="center">
2
- zv (zig version)
3
- </h1>
4
-
5
- <p align="center">
6
- <img src="logo/zv.png" alt="zv logo" width="400" />
7
- </p>
8
-
9
- `zv` is a blazing-fast, cross-platform, simple-to-use compiler toolchain manager for Zig, written in Rust. `zv` aims to be a fast and dependable manager for Zig and ZLS, both system-wide and project-specific, with either inline syntax `zig +<version>` or by using a `.zigversion` file in your project root. A `version` can be a semver, `master`, or `latest` for the latest stable. These values are fetched from the cached Ziglang download index available at <a href="https://ziglang.org/download/index.json">Zig official index</a>.
10
-
11
- With `zv` binaries, you can now build with the master branch without changing your default system Zig version:
12
- ```sh
13
- zig +master build
14
- ```
15
- Caching is built-in, so you never have to wait any longer than strictly necessary.
16
-
17
- You can also specify a version number, e.g., `zig +0.15.1`. With `zv`, you also have the option of pinning per-project Zig versions using a `.zigversion` file, which takes the same format as `+` would for inline Zig commands. You can have a project with these contents:
18
-
19
- ```py
20
- # file .zigversion
21
- 0.15.1
22
- ```
23
- which will always use version `0.15.1` when you run any `zig` command inside it. How cool is that?
24
-
25
- It also doubles as a project template starter, providing multiple variants of a Zig project, from a barebones template with a very trimmed-down `build.zig` and `main.zig` file, or the standard Zig project template. Find out more with `zv init --help`.
26
-
27
- `zv` prefers community mirrors for downloads, as that's the official recommendation, with `minisign` and `shasum` verification done before any toolchain is installed.
28
-
29
- ## Installation
30
-
31
-
32
- **Quick install script (Recommended):**
33
-
34
- Linux/macOS:
35
- ```sh
36
- curl --proto '=https' --tlsv1.2 -LsSf https://github.com/weezy20/zv/releases/latest/download/zv-installer.sh | sh
37
- ```
38
-
39
- Windows (PowerShell):
40
- ```powershell
41
- irm https://github.com/weezy20/zv/releases/latest/download/zv-installer.ps1 | iex
42
- ```
43
- If you encounter an execution policy error, you can temporarily allow script execution by running:
44
- ```powershell
45
- powershell -ExecutionPolicy Bypass -Command "irm https://github.com/weezy20/zv/releases/latest/download/zv-installer.ps1 | iex"
46
- ```
47
-
48
- >The following methods use different package managers hence, after running `zv setup` we uninstall the package manager version of `zv` to avoid confusion. Since `zv` can self update for popular OS/Arch combinations, you don't need to rely on package managers for updates.
49
-
50
- **HomeBrew:**
51
- ```sh
52
- brew install weezy20/tap/zv
53
- # Run zv setup to self-install
54
- zv setup
55
- # Remove brew installation
56
- brew uninstall zv
57
- ```
58
-
59
- **NPM:**
60
- ```sh
61
- npm install -g @weezy20/zv
62
- # Run zv setup to self-install
63
- zv setup
64
- # Remove npm installation
65
- npm uninstall -g @weezy20/zv
66
- ```
67
-
68
- <details>
69
- <summary><b>Cargo (crates.io or build from source)</b></summary>
70
-
71
- **Step 1:** Install the binary from crates.io or build from source
72
-
73
- Using `cargo install`:
74
- ```sh
75
- # From crates.io
76
- cargo install zv
77
-
78
- # OR from GitHub
79
- cargo install --git https://github.com/weezy20/zv --locked
80
- ```
81
-
82
- Or build from source (clone the repo first):
83
- ```sh
84
- # Build release binary (creates target/release/zv)
85
- cargo build --release
86
- ```
87
-
88
- **Step 2:** Preview setup changes (optional but recommended)
89
-
90
- Using `cargo installed binary`:
91
- ```sh
92
- $HOME/.cargo/bin/zv setup --dry-run
93
- # OR shorthand:
94
- $HOME/.cargo/bin/zv setup -d
95
- ```
96
-
97
- Or from source:
98
- ```sh
99
- cargo run --release -- setup --dry-run
100
- # OR shorthand:
101
- cargo run --release -- setup -d
102
- ```
103
-
104
- **Step 3:** Run setup to install `zv` to `ZV_DIR/bin` and configure your shell
105
-
106
- Using `cargo installed binary`:
107
- ```sh
108
- $HOME/.cargo/bin/zv setup
109
- ```
110
-
111
- Or from source:
112
- ```sh
113
- cargo run --release -- setup
114
- # or if you already have ZV_DIR/bin in path
115
- cargo run --release -- sync
116
- ```
117
-
118
- This self-installs `zv` to `ZV_DIR/bin` (default: `$HOME/.zv/bin` on Unix, `%USERPROFILE%\.zv\bin` on Windows) and adds it to your PATH.
119
-
120
- **Step 4:** Remove the cargo binary (optional cleanup - only if you used `cargo install`)
121
- ```sh
122
- cargo uninstall zv
123
- ```
124
-
125
- From now on, use the `zv` installed in `ZV_DIR/bin`.
126
-
127
- </details>
128
-
129
- ---
130
-
131
- > **Note:** The quick install scripts (shell/PowerShell), Homebrew, and npm all install `zv` directly to `ZV_DIR/bin` (default: `$HOME/.zv/bin` on Unix, `%USERPROFILE%\.zv\bin` on Windows) and configure your PATH automatically. You're ready to go! If you installed via cargo, see the instructions above for running `zv setup` or `zv sync`.
132
-
133
- ## Updating `zv`
134
-
135
- **Simple update (Recommended):**
136
- ```sh
137
- zv update # Installs latest stable release on supported targets*.
138
- ```
139
-
140
- This command checks for new releases on GitHub and updates `zv` in place. It works whether you're running from `ZV_DIR/bin/zv` or from an external location (like cargo install).
141
-
142
- **Options:**
143
- ```sh
144
- zv update --force # Force reinstall even if already on the latest version
145
- zv upgrade # Alias for update
146
- zv update --rc # Update to latest pre-release (release candidate) version
147
- ```
148
-
149
-
150
-
151
- <details>
152
- <summary>Alternative update methods:</summary>
153
-
154
- If you have the repo cloned or are using a cargo-installed binary:
155
- ```sh
156
- # Build new version and update the binary in ZV_DIR/bin
157
- cargo run --release -- sync
158
-
159
- # Or if you installed from crates.io, install it and sync
160
- cargo install zv --force
161
- zv sync
162
- # or if you already have ZV_DIR/bin in path
163
- ~/.cargo/bin/zv sync # $CARGO_HOME/bin/zv sync
164
- ```
165
- </details>
166
-
167
- ## Usage
168
-
169
- All `zv` data lives in `ZV_DIR`, including Zig versions, downloads, cache files, and the `zv` binary itself.
170
-
171
- **Default locations:**
172
- - Unix/Linux/macOS: `$HOME/.zv`
173
- - Windows: `%USERPROFILE%\.zv`
174
-
175
- You can customize this by setting the `ZV_DIR` environment variable.
176
-
177
- ## Use `zv` for project creation:
178
-
179
- ```sh
180
- zv init [project_name] # Create a new Zig project with a name
181
- zv init # Create a new Zig project in the current working directory
182
- zv init --zig | -z # Create a new Zig project using the standard template provided by `zig init`
183
- # Create a zig project with build.zig.zon:
184
- zv init -p | --zon | --package <?name> # Create a zig project in current directory with build.zig.zon or with name if provided
185
- # Note: this requires an active zig version >= 0.12.0 where build.zig.zon support was introduced
186
-
187
- ```
188
- >Note: `zv init` will use the `build.zig` that's present in [templates/build.zig](templates/lean_build.zig) which is checked to work against minimum zig version specified in [templates/.zigversion](templates/.zigversion). If you want to use a different zig version, set it as active zig and use `zv init -z` or `zig init` directly.
189
-
190
- ## Use `zv` as your Zig compiler toolchain manager:
191
-
192
- ```sh
193
- # Version selection - basic usage
194
- # pass in -f or --force-ziglang to download using `ziglang.org` instead of community mirrors (default & recommended)
195
- zv use <version | master | stable | latest> # Select a Zig version to use. Can be a semver, master (branch)
196
- zv use 0.13.0 # Use a specific semantic version
197
- zv use 0.14 -f # Use a version (auto-completes to 0.14.0) & downloads from `ziglang.org` due to -f
198
- zv use master # Use master branch build (queries network to find the latest master build)
199
- zv use stable # Use latest stable release (refers to cached index)
200
- zv use latest # Use latest stable release (queries network to fetch the latest stable)
201
- zv install <version,*> [-f ] # Install one or more Zig versions without switching to it. Use -f to download from ziglang.org instead of community mirrors.
202
- zv i 0.15.1,0.14.0,master # Install multiple versions at once using a comma-separated list
203
-
204
- # Per-project Zig config
205
- zig +<version> [...zig args] # Run Zig using a specific <version> (fetches and downloads version if not present locally)
206
- zig +master [...zig args] # Run Zig using master build. (If already cached, no download, but a network request is made to verify version)
207
- zig [...zig args] # Uses current configured Zig or prefers version from `.zigversion` file in the repository adjacent to `build.zig`.
208
-
209
- # Management commands
210
- zv list | ls # List installed Zig versions
211
- zv clean | rm # Remove Zig versions interactively. Additionally cleans up downloads cache, temporary download artifacts.
212
- zv clean | rm <version | all> # Clean up all zv-managed installations using `all` or just a single one (e.g., zv clean 0.14).
213
- zv clean 0.14,0.14.0 # Clean up multiple Zig installations using a comma-separated list.
214
- zv clean --except <version,*> # Clean up every version except the version mentioned as argument to --except <version> where <version> maybe a comma separated list of ZigVersions. E.g. (zv clean --except 0.14.1,master@0.16.0-dev.565+f50c64797,stable@0.15.1)
215
- zv rm master # Clean up the `master` branch toolchain.
216
- zv rm master --outdated # Clean up any older master versions in the master folder that don't match latest `master`
217
- zv setup # Set up shell environment for zv with interactive prompts (use --no-interactive for automation)
218
- zv sync # Resync community mirrors list from [ziglang.org/download/community-mirrors.txt]; also force resync of index to fetch latest nightly builds. Replaces `ZV_DIR/bin/zv` if outdated against current invocation.
219
- zv upgrade | update # Update zv to the latest release only if present in GH Releases: https://github.com/weezy20/zv/releases
220
- zv help # Detailed instructions for zv. Use `--help` for long help or `-h` for short help with a subcommand.
221
- zv uninstall # Uninstall zv completely by attempting to remove ZV_DIR.
222
- ```
223
-
224
- `minisign` verification is done using [jedisct1/rust-minisign-verify](https://github.com/jedisct1/rust-minisign-verify) — a small minisign library in pure Rust.
225
-
226
- It also supports `NO_COLOR` for non-TTY environments.
227
-
228
- I hope you enjoy using it! ♥
229
-
230
-
231
- ---
232
- ### Customizing ZV behaviour:
233
-
234
- ### 🔧 Environment Variables for customizing zv
235
-
236
- | Variable | Description | Default / Notes |
237
- | ------------------------- | -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
238
- | **`ZV_LOG`** | Sets the log level (same as `RUST_LOG`). If set, logging follows the specified level. | Inherits `RUST_LOG` behavior |
239
- | **`ZV_DIR`** | Defines the home directory for `zv`. | Default `$HOME/.zv` for linux/macos or unix. For windows it usually will be `%USERPROFILE%/.zv` |
240
- | **`ZV_INDEX_TTL_DAYS`** | Number of days between automatic [index](https://ziglang.org/download/index.json) syncs. | **21 days** — Using `master` or `latest` in inline mode use a shorter cache duration of just 1 day unlike `use` which will always fetch `master` & `latest` from network, so practically, you never have to worry about setting this variable yourself. |
241
- | **`ZV_MIRRORS_TTL_DAYS`** | Number of days before refreshing the mirrors list. Broken mirrors degrade automatically. Use `zv sync` to force refresh. | **21 days** — mirrors and index can be resynced immediately with `zv sync`. `master` relies on latest builds & so does `latest` and some community mirrors may not have it available; `zv` will retry other mirrors in that case. |
242
- | **`ZV_MAX_RETRIES`** | Maximum number of retry attempts for downloads when a download fails. | **3 retries** — If a download fails, `zv` will retry up to this many times before giving up. |
243
- | **`NO_COLOR`** | If set, disables color output in all zv commands. | No color output; useful for non-TTY environments or scripts. |
244
- |**`ZV_FETCH_TIMEOUT_SECS`** | Request timeout to use for network operations requiring fetching index/mirrors list from `ziglang.org`. | Default 4 seconds for most operations.
245
-
246
- ---
247
-
248
- ### Tips:
249
- - If you prefer some mirrors to others, you can put it as `rank = 1` on your preferred mirrors (Default is rank 1 for all mirros) or lower the rank of mirrors that you don't want. `rank` is a range from 1..255, lower is better and more preferred when doing random selection. The mirrors file is generated at `<ZV_DIR>/mirrors.toml`
250
-
251
- - Currently `zv use master` will only install the master as present in zig-index. This means that older master installations still remain under the masters folder and can be selected via `zv use master@<older master version>` which can be obtained via `zv ls`. Note, installing older master versions like this may work now (zv v0.6.0 onwards): `zv i <pre-release version>` or `zv use <pre-release version>` if some mirror has the build, it'll be fetched.
package/binary-install.js DELETED
@@ -1,212 +0,0 @@
1
- const { createWriteStream, existsSync, mkdirSync, mkdtemp } = require("fs");
2
- const { join, sep } = require("path");
3
- const { spawnSync } = require("child_process");
4
- const { tmpdir } = require("os");
5
-
6
- const axios = require("axios");
7
- const rimraf = require("rimraf");
8
- const tmpDir = tmpdir();
9
-
10
- const error = (msg) => {
11
- console.error(msg);
12
- process.exit(1);
13
- };
14
-
15
- class Package {
16
- constructor(platform, name, url, filename, zipExt, binaries) {
17
- let errors = [];
18
- if (typeof url !== "string") {
19
- errors.push("url must be a string");
20
- } else {
21
- try {
22
- new URL(url);
23
- } catch (e) {
24
- errors.push(e);
25
- }
26
- }
27
- if (name && typeof name !== "string") {
28
- errors.push("package name must be a string");
29
- }
30
- if (!name) {
31
- errors.push("You must specify the name of your package");
32
- }
33
- if (binaries && typeof binaries !== "object") {
34
- errors.push("binaries must be a string => string map");
35
- }
36
- if (!binaries) {
37
- errors.push("You must specify the binaries in the package");
38
- }
39
-
40
- if (errors.length > 0) {
41
- let errorMsg =
42
- "One or more of the parameters you passed to the Binary constructor are invalid:\n";
43
- errors.forEach((error) => {
44
- errorMsg += error;
45
- });
46
- errorMsg +=
47
- '\n\nCorrect usage: new Package("my-binary", "https://example.com/binary/download.tar.gz", {"my-binary": "my-binary"})';
48
- error(errorMsg);
49
- }
50
-
51
- this.platform = platform;
52
- this.url = url;
53
- this.name = name;
54
- this.filename = filename;
55
- this.zipExt = zipExt;
56
- this.installDirectory = join(__dirname, "node_modules", ".bin_real");
57
- this.binaries = binaries;
58
-
59
- if (!existsSync(this.installDirectory)) {
60
- mkdirSync(this.installDirectory, { recursive: true });
61
- }
62
- }
63
-
64
- exists() {
65
- for (const binaryName in this.binaries) {
66
- const binRelPath = this.binaries[binaryName];
67
- const binPath = join(this.installDirectory, binRelPath);
68
- if (!existsSync(binPath)) {
69
- return false;
70
- }
71
- }
72
- return true;
73
- }
74
-
75
- install(fetchOptions, suppressLogs = false) {
76
- if (this.exists()) {
77
- if (!suppressLogs) {
78
- console.error(
79
- `${this.name} is already installed, skipping installation.`,
80
- );
81
- }
82
- return Promise.resolve();
83
- }
84
-
85
- if (existsSync(this.installDirectory)) {
86
- rimraf.sync(this.installDirectory);
87
- }
88
-
89
- mkdirSync(this.installDirectory, { recursive: true });
90
-
91
- if (!suppressLogs) {
92
- console.error(`Downloading release from ${this.url}`);
93
- }
94
-
95
- return axios({ ...fetchOptions, url: this.url, responseType: "stream" })
96
- .then((res) => {
97
- return new Promise((resolve, reject) => {
98
- mkdtemp(`${tmpDir}${sep}`, (err, directory) => {
99
- let tempFile = join(directory, this.filename);
100
- const sink = res.data.pipe(createWriteStream(tempFile));
101
- sink.on("error", (err) => reject(err));
102
- sink.on("close", () => {
103
- if (/\.tar\.*/.test(this.zipExt)) {
104
- const result = spawnSync("tar", [
105
- "xf",
106
- tempFile,
107
- // The tarballs are stored with a leading directory
108
- // component; we strip one component in the
109
- // shell installers too.
110
- "--strip-components",
111
- "1",
112
- "-C",
113
- this.installDirectory,
114
- ]);
115
- if (result.status == 0) {
116
- resolve();
117
- } else if (result.error) {
118
- reject(result.error);
119
- } else {
120
- reject(
121
- new Error(
122
- `An error occurred untarring the artifact: stdout: ${result.stdout}; stderr: ${result.stderr}`,
123
- ),
124
- );
125
- }
126
- } else if (this.zipExt == ".zip") {
127
- let result;
128
- if (this.platform.artifactName.includes("windows")) {
129
- // Windows does not have "unzip" by default on many installations, instead
130
- // we use Expand-Archive from powershell
131
- result = spawnSync("powershell.exe", [
132
- "-NoProfile",
133
- "-NonInteractive",
134
- "-Command",
135
- `& {
136
- param([string]$LiteralPath, [string]$DestinationPath)
137
- Expand-Archive -LiteralPath $LiteralPath -DestinationPath $DestinationPath -Force
138
- }`,
139
- tempFile,
140
- this.installDirectory,
141
- ]);
142
- } else {
143
- result = spawnSync("unzip", [
144
- "-q",
145
- tempFile,
146
- "-d",
147
- this.installDirectory,
148
- ]);
149
- }
150
-
151
- if (result.status == 0) {
152
- resolve();
153
- } else if (result.error) {
154
- reject(result.error);
155
- } else {
156
- reject(
157
- new Error(
158
- `An error occurred unzipping the artifact: stdout: ${result.stdout}; stderr: ${result.stderr}`,
159
- ),
160
- );
161
- }
162
- } else {
163
- reject(
164
- new Error(`Unrecognized file extension: ${this.zipExt}`),
165
- );
166
- }
167
- });
168
- });
169
- });
170
- })
171
- .then(() => {
172
- if (!suppressLogs) {
173
- console.error(`${this.name} has been installed!`);
174
- }
175
- })
176
- .catch((e) => {
177
- error(`Error fetching release: ${e.message}`);
178
- });
179
- }
180
-
181
- run(binaryName, fetchOptions) {
182
- const promise = !this.exists()
183
- ? this.install(fetchOptions, true)
184
- : Promise.resolve();
185
-
186
- promise
187
- .then(() => {
188
- const [, , ...args] = process.argv;
189
-
190
- const options = { cwd: process.cwd(), stdio: "inherit" };
191
-
192
- const binRelPath = this.binaries[binaryName];
193
- if (!binRelPath) {
194
- error(`${binaryName} is not a known binary in ${this.name}`);
195
- }
196
- const binPath = join(this.installDirectory, binRelPath);
197
- const result = spawnSync(binPath, args, options);
198
-
199
- if (result.error) {
200
- error(result.error);
201
- }
202
-
203
- process.exit(result.status);
204
- })
205
- .catch((e) => {
206
- error(e.message);
207
- process.exit(1);
208
- });
209
- }
210
- }
211
-
212
- module.exports.Package = Package;
package/binary.js DELETED
@@ -1,126 +0,0 @@
1
- const { Package } = require("./binary-install");
2
- const os = require("os");
3
- const cTable = require("console.table");
4
- const libc = require("detect-libc");
5
- const { configureProxy } = require("axios-proxy-builder");
6
-
7
- const error = (msg) => {
8
- console.error(msg);
9
- process.exit(1);
10
- };
11
-
12
- const {
13
- name,
14
- artifactDownloadUrl,
15
- supportedPlatforms,
16
- glibcMinimum,
17
- } = require("./package.json");
18
-
19
- const builderGlibcMajorVersion = glibcMinimum.major;
20
- const builderGlibcMInorVersion = glibcMinimum.series;
21
-
22
- const getPlatform = () => {
23
- const rawOsType = os.type();
24
- const rawArchitecture = os.arch();
25
-
26
- // We want to use rust-style target triples as the canonical key
27
- // for a platform, so translate the "os" library's concepts into rust ones
28
- let osType = "";
29
- switch (rawOsType) {
30
- case "Windows_NT":
31
- osType = "pc-windows-msvc";
32
- break;
33
- case "Darwin":
34
- osType = "apple-darwin";
35
- break;
36
- case "Linux":
37
- osType = "unknown-linux-gnu";
38
- break;
39
- }
40
-
41
- let arch = "";
42
- switch (rawArchitecture) {
43
- case "x64":
44
- arch = "x86_64";
45
- break;
46
- case "arm64":
47
- arch = "aarch64";
48
- break;
49
- }
50
-
51
- if (rawOsType === "Linux") {
52
- if (libc.familySync() == "musl") {
53
- osType = "unknown-linux-musl-dynamic";
54
- } else if (libc.isNonGlibcLinuxSync()) {
55
- console.warn(
56
- "Your libc is neither glibc nor musl; trying static musl binary instead",
57
- );
58
- osType = "unknown-linux-musl-static";
59
- } else {
60
- let libcVersion = libc.versionSync();
61
- let splitLibcVersion = libcVersion.split(".");
62
- let libcMajorVersion = splitLibcVersion[0];
63
- let libcMinorVersion = splitLibcVersion[1];
64
- if (
65
- libcMajorVersion != builderGlibcMajorVersion ||
66
- libcMinorVersion < builderGlibcMInorVersion
67
- ) {
68
- // We can't run the glibc binaries, but we can run the static musl ones
69
- // if they exist
70
- console.warn(
71
- "Your glibc isn't compatible; trying static musl binary instead",
72
- );
73
- osType = "unknown-linux-musl-static";
74
- }
75
- }
76
- }
77
-
78
- // Assume the above succeeded and build a target triple to look things up with.
79
- // If any of it failed, this lookup will fail and we'll handle it like normal.
80
- let targetTriple = `${arch}-${osType}`;
81
- let platform = supportedPlatforms[targetTriple];
82
-
83
- if (!platform) {
84
- error(
85
- `Platform with type "${rawOsType}" and architecture "${rawArchitecture}" is not supported by ${name}.\nYour system must be one of the following:\n\n${Object.keys(
86
- supportedPlatforms,
87
- ).join(",")}`,
88
- );
89
- }
90
-
91
- return platform;
92
- };
93
-
94
- const getPackage = () => {
95
- const platform = getPlatform();
96
- const url = `${artifactDownloadUrl}/${platform.artifactName}`;
97
- let filename = platform.artifactName;
98
- let ext = platform.zipExt;
99
- let binary = new Package(platform, name, url, filename, ext, platform.bins);
100
-
101
- return binary;
102
- };
103
-
104
- const install = (suppressLogs) => {
105
- if (!artifactDownloadUrl || artifactDownloadUrl.length === 0) {
106
- console.warn("in demo mode, not installing binaries");
107
- return;
108
- }
109
- const package = getPackage();
110
- const proxy = configureProxy(package.url);
111
-
112
- return package.install(proxy, suppressLogs);
113
- };
114
-
115
- const run = (binaryName) => {
116
- const package = getPackage();
117
- const proxy = configureProxy(package.url);
118
-
119
- package.run(binaryName, proxy);
120
- };
121
-
122
- module.exports = {
123
- install,
124
- run,
125
- getPackage,
126
- };
package/install.js DELETED
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- const { install } = require("./binary");
4
- install(false);
@@ -1,519 +0,0 @@
1
- {
2
- "lockfileVersion": 3,
3
- "name": "@weezy20/zv",
4
- "packages": {
5
- "": {
6
- "bin": {
7
- "zv": "run-zv.js"
8
- },
9
- "dependencies": {
10
- "axios": "^1.13.2",
11
- "axios-proxy-builder": "^0.1.2",
12
- "console.table": "^0.10.0",
13
- "detect-libc": "^2.1.2",
14
- "rimraf": "^6.1.2"
15
- },
16
- "devDependencies": {
17
- "prettier": "^3.7.4"
18
- },
19
- "engines": {
20
- "node": ">=14",
21
- "npm": ">=6"
22
- },
23
- "hasInstallScript": true,
24
- "license": "MIT",
25
- "name": "@weezy20/zv",
26
- "version": "0.9.2"
27
- },
28
- "node_modules/@isaacs/balanced-match": {
29
- "engines": {
30
- "node": "20 || >=22"
31
- },
32
- "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
33
- "license": "MIT",
34
- "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
35
- "version": "4.0.1"
36
- },
37
- "node_modules/@isaacs/brace-expansion": {
38
- "dependencies": {
39
- "@isaacs/balanced-match": "^4.0.1"
40
- },
41
- "engines": {
42
- "node": "20 || >=22"
43
- },
44
- "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
45
- "license": "MIT",
46
- "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
47
- "version": "5.0.0"
48
- },
49
- "node_modules/asynckit": {
50
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
51
- "license": "MIT",
52
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
53
- "version": "0.4.0"
54
- },
55
- "node_modules/axios": {
56
- "dependencies": {
57
- "follow-redirects": "^1.15.6",
58
- "form-data": "^4.0.4",
59
- "proxy-from-env": "^1.1.0"
60
- },
61
- "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==",
62
- "license": "MIT",
63
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz",
64
- "version": "1.13.2"
65
- },
66
- "node_modules/axios-proxy-builder": {
67
- "dependencies": {
68
- "tunnel": "^0.0.6"
69
- },
70
- "integrity": "sha512-6uBVsBZzkB3tCC8iyx59mCjQckhB8+GQrI9Cop8eC7ybIsvs/KtnNgEBfRMSEa7GqK2VBGUzgjNYMdPIfotyPA==",
71
- "license": "MIT",
72
- "resolved": "https://registry.npmjs.org/axios-proxy-builder/-/axios-proxy-builder-0.1.2.tgz",
73
- "version": "0.1.2"
74
- },
75
- "node_modules/call-bind-apply-helpers": {
76
- "dependencies": {
77
- "es-errors": "^1.3.0",
78
- "function-bind": "^1.1.2"
79
- },
80
- "engines": {
81
- "node": ">= 0.4"
82
- },
83
- "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
84
- "license": "MIT",
85
- "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
86
- "version": "1.0.2"
87
- },
88
- "node_modules/clone": {
89
- "engines": {
90
- "node": ">=0.8"
91
- },
92
- "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
93
- "license": "MIT",
94
- "optional": true,
95
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
96
- "version": "1.0.4"
97
- },
98
- "node_modules/combined-stream": {
99
- "dependencies": {
100
- "delayed-stream": "~1.0.0"
101
- },
102
- "engines": {
103
- "node": ">= 0.8"
104
- },
105
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
106
- "license": "MIT",
107
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
108
- "version": "1.0.8"
109
- },
110
- "node_modules/console.table": {
111
- "dependencies": {
112
- "easy-table": "1.1.0"
113
- },
114
- "engines": {
115
- "node": "> 0.10"
116
- },
117
- "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==",
118
- "license": "MIT",
119
- "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz",
120
- "version": "0.10.0"
121
- },
122
- "node_modules/defaults": {
123
- "dependencies": {
124
- "clone": "^1.0.2"
125
- },
126
- "funding": {
127
- "url": "https://github.com/sponsors/sindresorhus"
128
- },
129
- "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
130
- "license": "MIT",
131
- "optional": true,
132
- "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
133
- "version": "1.0.4"
134
- },
135
- "node_modules/delayed-stream": {
136
- "engines": {
137
- "node": ">=0.4.0"
138
- },
139
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
140
- "license": "MIT",
141
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
142
- "version": "1.0.0"
143
- },
144
- "node_modules/detect-libc": {
145
- "engines": {
146
- "node": ">=8"
147
- },
148
- "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
149
- "license": "Apache-2.0",
150
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
151
- "version": "2.1.2"
152
- },
153
- "node_modules/dunder-proto": {
154
- "dependencies": {
155
- "call-bind-apply-helpers": "^1.0.1",
156
- "es-errors": "^1.3.0",
157
- "gopd": "^1.2.0"
158
- },
159
- "engines": {
160
- "node": ">= 0.4"
161
- },
162
- "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
163
- "license": "MIT",
164
- "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
165
- "version": "1.0.1"
166
- },
167
- "node_modules/easy-table": {
168
- "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==",
169
- "license": "MIT",
170
- "optionalDependencies": {
171
- "wcwidth": ">=1.0.1"
172
- },
173
- "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz",
174
- "version": "1.1.0"
175
- },
176
- "node_modules/es-define-property": {
177
- "engines": {
178
- "node": ">= 0.4"
179
- },
180
- "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
181
- "license": "MIT",
182
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
183
- "version": "1.0.1"
184
- },
185
- "node_modules/es-errors": {
186
- "engines": {
187
- "node": ">= 0.4"
188
- },
189
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
190
- "license": "MIT",
191
- "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
192
- "version": "1.3.0"
193
- },
194
- "node_modules/es-object-atoms": {
195
- "dependencies": {
196
- "es-errors": "^1.3.0"
197
- },
198
- "engines": {
199
- "node": ">= 0.4"
200
- },
201
- "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
202
- "license": "MIT",
203
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
204
- "version": "1.1.1"
205
- },
206
- "node_modules/es-set-tostringtag": {
207
- "dependencies": {
208
- "es-errors": "^1.3.0",
209
- "get-intrinsic": "^1.2.6",
210
- "has-tostringtag": "^1.0.2",
211
- "hasown": "^2.0.2"
212
- },
213
- "engines": {
214
- "node": ">= 0.4"
215
- },
216
- "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
217
- "license": "MIT",
218
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
219
- "version": "2.1.0"
220
- },
221
- "node_modules/follow-redirects": {
222
- "engines": {
223
- "node": ">=4.0"
224
- },
225
- "funding": [
226
- {
227
- "type": "individual",
228
- "url": "https://github.com/sponsors/RubenVerborgh"
229
- }
230
- ],
231
- "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
232
- "license": "MIT",
233
- "peerDependenciesMeta": {
234
- "debug": {
235
- "optional": true
236
- }
237
- },
238
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
239
- "version": "1.15.6"
240
- },
241
- "node_modules/form-data": {
242
- "dependencies": {
243
- "asynckit": "^0.4.0",
244
- "combined-stream": "^1.0.8",
245
- "es-set-tostringtag": "^2.1.0",
246
- "hasown": "^2.0.2",
247
- "mime-types": "^2.1.12"
248
- },
249
- "engines": {
250
- "node": ">= 6"
251
- },
252
- "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
253
- "license": "MIT",
254
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
255
- "version": "4.0.4"
256
- },
257
- "node_modules/function-bind": {
258
- "funding": {
259
- "url": "https://github.com/sponsors/ljharb"
260
- },
261
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
262
- "license": "MIT",
263
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
264
- "version": "1.1.2"
265
- },
266
- "node_modules/get-intrinsic": {
267
- "dependencies": {
268
- "call-bind-apply-helpers": "^1.0.2",
269
- "es-define-property": "^1.0.1",
270
- "es-errors": "^1.3.0",
271
- "es-object-atoms": "^1.1.1",
272
- "function-bind": "^1.1.2",
273
- "get-proto": "^1.0.1",
274
- "gopd": "^1.2.0",
275
- "has-symbols": "^1.1.0",
276
- "hasown": "^2.0.2",
277
- "math-intrinsics": "^1.1.0"
278
- },
279
- "engines": {
280
- "node": ">= 0.4"
281
- },
282
- "funding": {
283
- "url": "https://github.com/sponsors/ljharb"
284
- },
285
- "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
286
- "license": "MIT",
287
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
288
- "version": "1.3.0"
289
- },
290
- "node_modules/get-proto": {
291
- "dependencies": {
292
- "dunder-proto": "^1.0.1",
293
- "es-object-atoms": "^1.0.0"
294
- },
295
- "engines": {
296
- "node": ">= 0.4"
297
- },
298
- "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
299
- "license": "MIT",
300
- "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
301
- "version": "1.0.1"
302
- },
303
- "node_modules/glob": {
304
- "dependencies": {
305
- "minimatch": "^10.1.1",
306
- "minipass": "^7.1.2",
307
- "path-scurry": "^2.0.0"
308
- },
309
- "engines": {
310
- "node": "20 || >=22"
311
- },
312
- "funding": {
313
- "url": "https://github.com/sponsors/isaacs"
314
- },
315
- "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==",
316
- "license": "BlueOak-1.0.0",
317
- "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz",
318
- "version": "13.0.0"
319
- },
320
- "node_modules/gopd": {
321
- "engines": {
322
- "node": ">= 0.4"
323
- },
324
- "funding": {
325
- "url": "https://github.com/sponsors/ljharb"
326
- },
327
- "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
328
- "license": "MIT",
329
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
330
- "version": "1.2.0"
331
- },
332
- "node_modules/has-symbols": {
333
- "engines": {
334
- "node": ">= 0.4"
335
- },
336
- "funding": {
337
- "url": "https://github.com/sponsors/ljharb"
338
- },
339
- "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
340
- "license": "MIT",
341
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
342
- "version": "1.1.0"
343
- },
344
- "node_modules/has-tostringtag": {
345
- "dependencies": {
346
- "has-symbols": "^1.0.3"
347
- },
348
- "engines": {
349
- "node": ">= 0.4"
350
- },
351
- "funding": {
352
- "url": "https://github.com/sponsors/ljharb"
353
- },
354
- "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
355
- "license": "MIT",
356
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
357
- "version": "1.0.2"
358
- },
359
- "node_modules/hasown": {
360
- "dependencies": {
361
- "function-bind": "^1.1.2"
362
- },
363
- "engines": {
364
- "node": ">= 0.4"
365
- },
366
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
367
- "license": "MIT",
368
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
369
- "version": "2.0.2"
370
- },
371
- "node_modules/lru-cache": {
372
- "engines": {
373
- "node": "20 || >=22"
374
- },
375
- "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==",
376
- "license": "BlueOak-1.0.0",
377
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz",
378
- "version": "11.2.4"
379
- },
380
- "node_modules/math-intrinsics": {
381
- "engines": {
382
- "node": ">= 0.4"
383
- },
384
- "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
385
- "license": "MIT",
386
- "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
387
- "version": "1.1.0"
388
- },
389
- "node_modules/mime-db": {
390
- "engines": {
391
- "node": ">= 0.6"
392
- },
393
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
394
- "license": "MIT",
395
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
396
- "version": "1.52.0"
397
- },
398
- "node_modules/mime-types": {
399
- "dependencies": {
400
- "mime-db": "1.52.0"
401
- },
402
- "engines": {
403
- "node": ">= 0.6"
404
- },
405
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
406
- "license": "MIT",
407
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
408
- "version": "2.1.35"
409
- },
410
- "node_modules/minimatch": {
411
- "dependencies": {
412
- "@isaacs/brace-expansion": "^5.0.0"
413
- },
414
- "engines": {
415
- "node": "20 || >=22"
416
- },
417
- "funding": {
418
- "url": "https://github.com/sponsors/isaacs"
419
- },
420
- "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
421
- "license": "BlueOak-1.0.0",
422
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz",
423
- "version": "10.1.1"
424
- },
425
- "node_modules/minipass": {
426
- "engines": {
427
- "node": ">=16 || 14 >=14.17"
428
- },
429
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
430
- "license": "ISC",
431
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
432
- "version": "7.1.2"
433
- },
434
- "node_modules/package-json-from-dist": {
435
- "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
436
- "license": "BlueOak-1.0.0",
437
- "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
438
- "version": "1.0.1"
439
- },
440
- "node_modules/path-scurry": {
441
- "dependencies": {
442
- "lru-cache": "^11.0.0",
443
- "minipass": "^7.1.2"
444
- },
445
- "engines": {
446
- "node": "20 || >=22"
447
- },
448
- "funding": {
449
- "url": "https://github.com/sponsors/isaacs"
450
- },
451
- "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==",
452
- "license": "BlueOak-1.0.0",
453
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz",
454
- "version": "2.0.1"
455
- },
456
- "node_modules/prettier": {
457
- "bin": {
458
- "prettier": "bin/prettier.cjs"
459
- },
460
- "dev": true,
461
- "engines": {
462
- "node": ">=14"
463
- },
464
- "funding": {
465
- "url": "https://github.com/prettier/prettier?sponsor=1"
466
- },
467
- "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==",
468
- "license": "MIT",
469
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz",
470
- "version": "3.7.4"
471
- },
472
- "node_modules/proxy-from-env": {
473
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
474
- "license": "MIT",
475
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
476
- "version": "1.1.0"
477
- },
478
- "node_modules/rimraf": {
479
- "bin": {
480
- "rimraf": "dist/esm/bin.mjs"
481
- },
482
- "dependencies": {
483
- "glob": "^13.0.0",
484
- "package-json-from-dist": "^1.0.1"
485
- },
486
- "engines": {
487
- "node": "20 || >=22"
488
- },
489
- "funding": {
490
- "url": "https://github.com/sponsors/isaacs"
491
- },
492
- "integrity": "sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==",
493
- "license": "BlueOak-1.0.0",
494
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.2.tgz",
495
- "version": "6.1.2"
496
- },
497
- "node_modules/tunnel": {
498
- "engines": {
499
- "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
500
- },
501
- "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
502
- "license": "MIT",
503
- "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
504
- "version": "0.0.6"
505
- },
506
- "node_modules/wcwidth": {
507
- "dependencies": {
508
- "defaults": "^1.0.3"
509
- },
510
- "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
511
- "license": "MIT",
512
- "optional": true,
513
- "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
514
- "version": "1.0.1"
515
- }
516
- },
517
- "requires": true,
518
- "version": "0.9.2"
519
- }
package/run-zv.js DELETED
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- const { run } = require("./binary");
4
- run("zv");