jjpwrgem 0.1.4

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/CHANGELOG.md ADDED
@@ -0,0 +1,14 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.1.4](https://github.com/20jasper/JJPWRGEM/releases/tag/jjpwrgem-v0.1.4) - 2025-12-05
11
+
12
+ Initial release
13
+ - pretty format JSON
14
+ - error messages on failure
@@ -0,0 +1,212 @@
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 ADDED
@@ -0,0 +1,126 @@
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 ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { install } = require("./binary");
4
+ install(false);
@@ -0,0 +1,900 @@
1
+ {
2
+ "lockfileVersion": 3,
3
+ "name": "jjpwrgem",
4
+ "packages": {
5
+ "": {
6
+ "bin": {
7
+ "jjp": "run-jjp.js"
8
+ },
9
+ "dependencies": {
10
+ "axios": "^1.12.2",
11
+ "axios-proxy-builder": "^0.1.2",
12
+ "console.table": "^0.10.0",
13
+ "detect-libc": "^2.1.2",
14
+ "rimraf": "^6.0.1"
15
+ },
16
+ "devDependencies": {
17
+ "prettier": "^3.6.2"
18
+ },
19
+ "engines": {
20
+ "node": ">=14",
21
+ "npm": ">=6"
22
+ },
23
+ "hasInstallScript": true,
24
+ "license": "MIT",
25
+ "name": "jjpwrgem",
26
+ "version": "0.1.4"
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/@isaacs/cliui": {
50
+ "dependencies": {
51
+ "string-width": "^5.1.2",
52
+ "string-width-cjs": "npm:string-width@^4.2.0",
53
+ "strip-ansi": "^7.0.1",
54
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
55
+ "wrap-ansi": "^8.1.0",
56
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
57
+ },
58
+ "engines": {
59
+ "node": ">=12"
60
+ },
61
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
62
+ "license": "ISC",
63
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
64
+ "version": "8.0.2"
65
+ },
66
+ "node_modules/ansi-regex": {
67
+ "engines": {
68
+ "node": ">=12"
69
+ },
70
+ "funding": {
71
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
72
+ },
73
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
74
+ "license": "MIT",
75
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
76
+ "version": "6.1.0"
77
+ },
78
+ "node_modules/ansi-styles": {
79
+ "engines": {
80
+ "node": ">=12"
81
+ },
82
+ "funding": {
83
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
84
+ },
85
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
86
+ "license": "MIT",
87
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
88
+ "version": "6.2.1"
89
+ },
90
+ "node_modules/asynckit": {
91
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
92
+ "license": "MIT",
93
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
94
+ "version": "0.4.0"
95
+ },
96
+ "node_modules/axios": {
97
+ "dependencies": {
98
+ "follow-redirects": "^1.15.6",
99
+ "form-data": "^4.0.4",
100
+ "proxy-from-env": "^1.1.0"
101
+ },
102
+ "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==",
103
+ "license": "MIT",
104
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz",
105
+ "version": "1.12.2"
106
+ },
107
+ "node_modules/axios-proxy-builder": {
108
+ "dependencies": {
109
+ "tunnel": "^0.0.6"
110
+ },
111
+ "integrity": "sha512-6uBVsBZzkB3tCC8iyx59mCjQckhB8+GQrI9Cop8eC7ybIsvs/KtnNgEBfRMSEa7GqK2VBGUzgjNYMdPIfotyPA==",
112
+ "license": "MIT",
113
+ "resolved": "https://registry.npmjs.org/axios-proxy-builder/-/axios-proxy-builder-0.1.2.tgz",
114
+ "version": "0.1.2"
115
+ },
116
+ "node_modules/call-bind-apply-helpers": {
117
+ "dependencies": {
118
+ "es-errors": "^1.3.0",
119
+ "function-bind": "^1.1.2"
120
+ },
121
+ "engines": {
122
+ "node": ">= 0.4"
123
+ },
124
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
125
+ "license": "MIT",
126
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
127
+ "version": "1.0.2"
128
+ },
129
+ "node_modules/clone": {
130
+ "engines": {
131
+ "node": ">=0.8"
132
+ },
133
+ "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
134
+ "license": "MIT",
135
+ "optional": true,
136
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
137
+ "version": "1.0.4"
138
+ },
139
+ "node_modules/color-convert": {
140
+ "dependencies": {
141
+ "color-name": "~1.1.4"
142
+ },
143
+ "engines": {
144
+ "node": ">=7.0.0"
145
+ },
146
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
147
+ "license": "MIT",
148
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
149
+ "version": "2.0.1"
150
+ },
151
+ "node_modules/color-name": {
152
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
153
+ "license": "MIT",
154
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
155
+ "version": "1.1.4"
156
+ },
157
+ "node_modules/combined-stream": {
158
+ "dependencies": {
159
+ "delayed-stream": "~1.0.0"
160
+ },
161
+ "engines": {
162
+ "node": ">= 0.8"
163
+ },
164
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
165
+ "license": "MIT",
166
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
167
+ "version": "1.0.8"
168
+ },
169
+ "node_modules/console.table": {
170
+ "dependencies": {
171
+ "easy-table": "1.1.0"
172
+ },
173
+ "engines": {
174
+ "node": "> 0.10"
175
+ },
176
+ "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==",
177
+ "license": "MIT",
178
+ "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz",
179
+ "version": "0.10.0"
180
+ },
181
+ "node_modules/cross-spawn": {
182
+ "dependencies": {
183
+ "path-key": "^3.1.0",
184
+ "shebang-command": "^2.0.0",
185
+ "which": "^2.0.1"
186
+ },
187
+ "engines": {
188
+ "node": ">= 8"
189
+ },
190
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
191
+ "license": "MIT",
192
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
193
+ "version": "7.0.6"
194
+ },
195
+ "node_modules/defaults": {
196
+ "dependencies": {
197
+ "clone": "^1.0.2"
198
+ },
199
+ "funding": {
200
+ "url": "https://github.com/sponsors/sindresorhus"
201
+ },
202
+ "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
203
+ "license": "MIT",
204
+ "optional": true,
205
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
206
+ "version": "1.0.4"
207
+ },
208
+ "node_modules/delayed-stream": {
209
+ "engines": {
210
+ "node": ">=0.4.0"
211
+ },
212
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
213
+ "license": "MIT",
214
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
215
+ "version": "1.0.0"
216
+ },
217
+ "node_modules/detect-libc": {
218
+ "engines": {
219
+ "node": ">=8"
220
+ },
221
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
222
+ "license": "Apache-2.0",
223
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
224
+ "version": "2.1.2"
225
+ },
226
+ "node_modules/dunder-proto": {
227
+ "dependencies": {
228
+ "call-bind-apply-helpers": "^1.0.1",
229
+ "es-errors": "^1.3.0",
230
+ "gopd": "^1.2.0"
231
+ },
232
+ "engines": {
233
+ "node": ">= 0.4"
234
+ },
235
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
236
+ "license": "MIT",
237
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
238
+ "version": "1.0.1"
239
+ },
240
+ "node_modules/eastasianwidth": {
241
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
242
+ "license": "MIT",
243
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
244
+ "version": "0.2.0"
245
+ },
246
+ "node_modules/easy-table": {
247
+ "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==",
248
+ "license": "MIT",
249
+ "optionalDependencies": {
250
+ "wcwidth": ">=1.0.1"
251
+ },
252
+ "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz",
253
+ "version": "1.1.0"
254
+ },
255
+ "node_modules/emoji-regex": {
256
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
257
+ "license": "MIT",
258
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
259
+ "version": "9.2.2"
260
+ },
261
+ "node_modules/es-define-property": {
262
+ "engines": {
263
+ "node": ">= 0.4"
264
+ },
265
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
266
+ "license": "MIT",
267
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
268
+ "version": "1.0.1"
269
+ },
270
+ "node_modules/es-errors": {
271
+ "engines": {
272
+ "node": ">= 0.4"
273
+ },
274
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
275
+ "license": "MIT",
276
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
277
+ "version": "1.3.0"
278
+ },
279
+ "node_modules/es-object-atoms": {
280
+ "dependencies": {
281
+ "es-errors": "^1.3.0"
282
+ },
283
+ "engines": {
284
+ "node": ">= 0.4"
285
+ },
286
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
287
+ "license": "MIT",
288
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
289
+ "version": "1.1.1"
290
+ },
291
+ "node_modules/es-set-tostringtag": {
292
+ "dependencies": {
293
+ "es-errors": "^1.3.0",
294
+ "get-intrinsic": "^1.2.6",
295
+ "has-tostringtag": "^1.0.2",
296
+ "hasown": "^2.0.2"
297
+ },
298
+ "engines": {
299
+ "node": ">= 0.4"
300
+ },
301
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
302
+ "license": "MIT",
303
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
304
+ "version": "2.1.0"
305
+ },
306
+ "node_modules/follow-redirects": {
307
+ "engines": {
308
+ "node": ">=4.0"
309
+ },
310
+ "funding": [
311
+ {
312
+ "type": "individual",
313
+ "url": "https://github.com/sponsors/RubenVerborgh"
314
+ }
315
+ ],
316
+ "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
317
+ "license": "MIT",
318
+ "peerDependenciesMeta": {
319
+ "debug": {
320
+ "optional": true
321
+ }
322
+ },
323
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
324
+ "version": "1.15.6"
325
+ },
326
+ "node_modules/foreground-child": {
327
+ "dependencies": {
328
+ "cross-spawn": "^7.0.6",
329
+ "signal-exit": "^4.0.1"
330
+ },
331
+ "engines": {
332
+ "node": ">=14"
333
+ },
334
+ "funding": {
335
+ "url": "https://github.com/sponsors/isaacs"
336
+ },
337
+ "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
338
+ "license": "ISC",
339
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
340
+ "version": "3.3.1"
341
+ },
342
+ "node_modules/form-data": {
343
+ "dependencies": {
344
+ "asynckit": "^0.4.0",
345
+ "combined-stream": "^1.0.8",
346
+ "es-set-tostringtag": "^2.1.0",
347
+ "hasown": "^2.0.2",
348
+ "mime-types": "^2.1.12"
349
+ },
350
+ "engines": {
351
+ "node": ">= 6"
352
+ },
353
+ "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
354
+ "license": "MIT",
355
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
356
+ "version": "4.0.4"
357
+ },
358
+ "node_modules/function-bind": {
359
+ "funding": {
360
+ "url": "https://github.com/sponsors/ljharb"
361
+ },
362
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
363
+ "license": "MIT",
364
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
365
+ "version": "1.1.2"
366
+ },
367
+ "node_modules/get-intrinsic": {
368
+ "dependencies": {
369
+ "call-bind-apply-helpers": "^1.0.2",
370
+ "es-define-property": "^1.0.1",
371
+ "es-errors": "^1.3.0",
372
+ "es-object-atoms": "^1.1.1",
373
+ "function-bind": "^1.1.2",
374
+ "get-proto": "^1.0.1",
375
+ "gopd": "^1.2.0",
376
+ "has-symbols": "^1.1.0",
377
+ "hasown": "^2.0.2",
378
+ "math-intrinsics": "^1.1.0"
379
+ },
380
+ "engines": {
381
+ "node": ">= 0.4"
382
+ },
383
+ "funding": {
384
+ "url": "https://github.com/sponsors/ljharb"
385
+ },
386
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
387
+ "license": "MIT",
388
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
389
+ "version": "1.3.0"
390
+ },
391
+ "node_modules/get-proto": {
392
+ "dependencies": {
393
+ "dunder-proto": "^1.0.1",
394
+ "es-object-atoms": "^1.0.0"
395
+ },
396
+ "engines": {
397
+ "node": ">= 0.4"
398
+ },
399
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
400
+ "license": "MIT",
401
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
402
+ "version": "1.0.1"
403
+ },
404
+ "node_modules/glob": {
405
+ "bin": {
406
+ "glob": "dist/esm/bin.mjs"
407
+ },
408
+ "dependencies": {
409
+ "foreground-child": "^3.3.1",
410
+ "jackspeak": "^4.1.1",
411
+ "minimatch": "^10.0.3",
412
+ "minipass": "^7.1.2",
413
+ "package-json-from-dist": "^1.0.0",
414
+ "path-scurry": "^2.0.0"
415
+ },
416
+ "engines": {
417
+ "node": "20 || >=22"
418
+ },
419
+ "funding": {
420
+ "url": "https://github.com/sponsors/isaacs"
421
+ },
422
+ "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==",
423
+ "license": "ISC",
424
+ "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz",
425
+ "version": "11.0.3"
426
+ },
427
+ "node_modules/gopd": {
428
+ "engines": {
429
+ "node": ">= 0.4"
430
+ },
431
+ "funding": {
432
+ "url": "https://github.com/sponsors/ljharb"
433
+ },
434
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
435
+ "license": "MIT",
436
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
437
+ "version": "1.2.0"
438
+ },
439
+ "node_modules/has-symbols": {
440
+ "engines": {
441
+ "node": ">= 0.4"
442
+ },
443
+ "funding": {
444
+ "url": "https://github.com/sponsors/ljharb"
445
+ },
446
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
447
+ "license": "MIT",
448
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
449
+ "version": "1.1.0"
450
+ },
451
+ "node_modules/has-tostringtag": {
452
+ "dependencies": {
453
+ "has-symbols": "^1.0.3"
454
+ },
455
+ "engines": {
456
+ "node": ">= 0.4"
457
+ },
458
+ "funding": {
459
+ "url": "https://github.com/sponsors/ljharb"
460
+ },
461
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
462
+ "license": "MIT",
463
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
464
+ "version": "1.0.2"
465
+ },
466
+ "node_modules/hasown": {
467
+ "dependencies": {
468
+ "function-bind": "^1.1.2"
469
+ },
470
+ "engines": {
471
+ "node": ">= 0.4"
472
+ },
473
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
474
+ "license": "MIT",
475
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
476
+ "version": "2.0.2"
477
+ },
478
+ "node_modules/is-fullwidth-code-point": {
479
+ "engines": {
480
+ "node": ">=8"
481
+ },
482
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
483
+ "license": "MIT",
484
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
485
+ "version": "3.0.0"
486
+ },
487
+ "node_modules/isexe": {
488
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
489
+ "license": "ISC",
490
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
491
+ "version": "2.0.0"
492
+ },
493
+ "node_modules/jackspeak": {
494
+ "dependencies": {
495
+ "@isaacs/cliui": "^8.0.2"
496
+ },
497
+ "engines": {
498
+ "node": "20 || >=22"
499
+ },
500
+ "funding": {
501
+ "url": "https://github.com/sponsors/isaacs"
502
+ },
503
+ "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==",
504
+ "license": "BlueOak-1.0.0",
505
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz",
506
+ "version": "4.1.1"
507
+ },
508
+ "node_modules/lru-cache": {
509
+ "engines": {
510
+ "node": "20 || >=22"
511
+ },
512
+ "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==",
513
+ "license": "ISC",
514
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz",
515
+ "version": "11.1.0"
516
+ },
517
+ "node_modules/math-intrinsics": {
518
+ "engines": {
519
+ "node": ">= 0.4"
520
+ },
521
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
522
+ "license": "MIT",
523
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
524
+ "version": "1.1.0"
525
+ },
526
+ "node_modules/mime-db": {
527
+ "engines": {
528
+ "node": ">= 0.6"
529
+ },
530
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
531
+ "license": "MIT",
532
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
533
+ "version": "1.52.0"
534
+ },
535
+ "node_modules/mime-types": {
536
+ "dependencies": {
537
+ "mime-db": "1.52.0"
538
+ },
539
+ "engines": {
540
+ "node": ">= 0.6"
541
+ },
542
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
543
+ "license": "MIT",
544
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
545
+ "version": "2.1.35"
546
+ },
547
+ "node_modules/minimatch": {
548
+ "dependencies": {
549
+ "@isaacs/brace-expansion": "^5.0.0"
550
+ },
551
+ "engines": {
552
+ "node": "20 || >=22"
553
+ },
554
+ "funding": {
555
+ "url": "https://github.com/sponsors/isaacs"
556
+ },
557
+ "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==",
558
+ "license": "ISC",
559
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz",
560
+ "version": "10.0.3"
561
+ },
562
+ "node_modules/minipass": {
563
+ "engines": {
564
+ "node": ">=16 || 14 >=14.17"
565
+ },
566
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
567
+ "license": "ISC",
568
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
569
+ "version": "7.1.2"
570
+ },
571
+ "node_modules/package-json-from-dist": {
572
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
573
+ "license": "BlueOak-1.0.0",
574
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
575
+ "version": "1.0.1"
576
+ },
577
+ "node_modules/path-key": {
578
+ "engines": {
579
+ "node": ">=8"
580
+ },
581
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
582
+ "license": "MIT",
583
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
584
+ "version": "3.1.1"
585
+ },
586
+ "node_modules/path-scurry": {
587
+ "dependencies": {
588
+ "lru-cache": "^11.0.0",
589
+ "minipass": "^7.1.2"
590
+ },
591
+ "engines": {
592
+ "node": "20 || >=22"
593
+ },
594
+ "funding": {
595
+ "url": "https://github.com/sponsors/isaacs"
596
+ },
597
+ "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==",
598
+ "license": "BlueOak-1.0.0",
599
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz",
600
+ "version": "2.0.0"
601
+ },
602
+ "node_modules/prettier": {
603
+ "bin": {
604
+ "prettier": "bin/prettier.cjs"
605
+ },
606
+ "dev": true,
607
+ "engines": {
608
+ "node": ">=14"
609
+ },
610
+ "funding": {
611
+ "url": "https://github.com/prettier/prettier?sponsor=1"
612
+ },
613
+ "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
614
+ "license": "MIT",
615
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz",
616
+ "version": "3.6.2"
617
+ },
618
+ "node_modules/proxy-from-env": {
619
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
620
+ "license": "MIT",
621
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
622
+ "version": "1.1.0"
623
+ },
624
+ "node_modules/rimraf": {
625
+ "bin": {
626
+ "rimraf": "dist/esm/bin.mjs"
627
+ },
628
+ "dependencies": {
629
+ "glob": "^11.0.0",
630
+ "package-json-from-dist": "^1.0.0"
631
+ },
632
+ "engines": {
633
+ "node": "20 || >=22"
634
+ },
635
+ "funding": {
636
+ "url": "https://github.com/sponsors/isaacs"
637
+ },
638
+ "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==",
639
+ "license": "ISC",
640
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz",
641
+ "version": "6.0.1"
642
+ },
643
+ "node_modules/shebang-command": {
644
+ "dependencies": {
645
+ "shebang-regex": "^3.0.0"
646
+ },
647
+ "engines": {
648
+ "node": ">=8"
649
+ },
650
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
651
+ "license": "MIT",
652
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
653
+ "version": "2.0.0"
654
+ },
655
+ "node_modules/shebang-regex": {
656
+ "engines": {
657
+ "node": ">=8"
658
+ },
659
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
660
+ "license": "MIT",
661
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
662
+ "version": "3.0.0"
663
+ },
664
+ "node_modules/signal-exit": {
665
+ "engines": {
666
+ "node": ">=14"
667
+ },
668
+ "funding": {
669
+ "url": "https://github.com/sponsors/isaacs"
670
+ },
671
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
672
+ "license": "ISC",
673
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
674
+ "version": "4.1.0"
675
+ },
676
+ "node_modules/string-width": {
677
+ "dependencies": {
678
+ "eastasianwidth": "^0.2.0",
679
+ "emoji-regex": "^9.2.2",
680
+ "strip-ansi": "^7.0.1"
681
+ },
682
+ "engines": {
683
+ "node": ">=12"
684
+ },
685
+ "funding": {
686
+ "url": "https://github.com/sponsors/sindresorhus"
687
+ },
688
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
689
+ "license": "MIT",
690
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
691
+ "version": "5.1.2"
692
+ },
693
+ "node_modules/string-width-cjs": {
694
+ "dependencies": {
695
+ "emoji-regex": "^8.0.0",
696
+ "is-fullwidth-code-point": "^3.0.0",
697
+ "strip-ansi": "^6.0.1"
698
+ },
699
+ "engines": {
700
+ "node": ">=8"
701
+ },
702
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
703
+ "license": "MIT",
704
+ "name": "string-width",
705
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
706
+ "version": "4.2.3"
707
+ },
708
+ "node_modules/string-width-cjs/node_modules/ansi-regex": {
709
+ "engines": {
710
+ "node": ">=8"
711
+ },
712
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
713
+ "license": "MIT",
714
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
715
+ "version": "5.0.1"
716
+ },
717
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
718
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
719
+ "license": "MIT",
720
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
721
+ "version": "8.0.0"
722
+ },
723
+ "node_modules/string-width-cjs/node_modules/strip-ansi": {
724
+ "dependencies": {
725
+ "ansi-regex": "^5.0.1"
726
+ },
727
+ "engines": {
728
+ "node": ">=8"
729
+ },
730
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
731
+ "license": "MIT",
732
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
733
+ "version": "6.0.1"
734
+ },
735
+ "node_modules/strip-ansi": {
736
+ "dependencies": {
737
+ "ansi-regex": "^6.0.1"
738
+ },
739
+ "engines": {
740
+ "node": ">=12"
741
+ },
742
+ "funding": {
743
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
744
+ },
745
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
746
+ "license": "MIT",
747
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
748
+ "version": "7.1.0"
749
+ },
750
+ "node_modules/strip-ansi-cjs": {
751
+ "dependencies": {
752
+ "ansi-regex": "^5.0.1"
753
+ },
754
+ "engines": {
755
+ "node": ">=8"
756
+ },
757
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
758
+ "license": "MIT",
759
+ "name": "strip-ansi",
760
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
761
+ "version": "6.0.1"
762
+ },
763
+ "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
764
+ "engines": {
765
+ "node": ">=8"
766
+ },
767
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
768
+ "license": "MIT",
769
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
770
+ "version": "5.0.1"
771
+ },
772
+ "node_modules/tunnel": {
773
+ "engines": {
774
+ "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
775
+ },
776
+ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
777
+ "license": "MIT",
778
+ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
779
+ "version": "0.0.6"
780
+ },
781
+ "node_modules/wcwidth": {
782
+ "dependencies": {
783
+ "defaults": "^1.0.3"
784
+ },
785
+ "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
786
+ "license": "MIT",
787
+ "optional": true,
788
+ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
789
+ "version": "1.0.1"
790
+ },
791
+ "node_modules/which": {
792
+ "bin": {
793
+ "node-which": "bin/node-which"
794
+ },
795
+ "dependencies": {
796
+ "isexe": "^2.0.0"
797
+ },
798
+ "engines": {
799
+ "node": ">= 8"
800
+ },
801
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
802
+ "license": "ISC",
803
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
804
+ "version": "2.0.2"
805
+ },
806
+ "node_modules/wrap-ansi": {
807
+ "dependencies": {
808
+ "ansi-styles": "^6.1.0",
809
+ "string-width": "^5.0.1",
810
+ "strip-ansi": "^7.0.1"
811
+ },
812
+ "engines": {
813
+ "node": ">=12"
814
+ },
815
+ "funding": {
816
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
817
+ },
818
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
819
+ "license": "MIT",
820
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
821
+ "version": "8.1.0"
822
+ },
823
+ "node_modules/wrap-ansi-cjs": {
824
+ "dependencies": {
825
+ "ansi-styles": "^4.0.0",
826
+ "string-width": "^4.1.0",
827
+ "strip-ansi": "^6.0.0"
828
+ },
829
+ "engines": {
830
+ "node": ">=10"
831
+ },
832
+ "funding": {
833
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
834
+ },
835
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
836
+ "license": "MIT",
837
+ "name": "wrap-ansi",
838
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
839
+ "version": "7.0.0"
840
+ },
841
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
842
+ "engines": {
843
+ "node": ">=8"
844
+ },
845
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
846
+ "license": "MIT",
847
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
848
+ "version": "5.0.1"
849
+ },
850
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
851
+ "dependencies": {
852
+ "color-convert": "^2.0.1"
853
+ },
854
+ "engines": {
855
+ "node": ">=8"
856
+ },
857
+ "funding": {
858
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
859
+ },
860
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
861
+ "license": "MIT",
862
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
863
+ "version": "4.3.0"
864
+ },
865
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
866
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
867
+ "license": "MIT",
868
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
869
+ "version": "8.0.0"
870
+ },
871
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
872
+ "dependencies": {
873
+ "emoji-regex": "^8.0.0",
874
+ "is-fullwidth-code-point": "^3.0.0",
875
+ "strip-ansi": "^6.0.1"
876
+ },
877
+ "engines": {
878
+ "node": ">=8"
879
+ },
880
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
881
+ "license": "MIT",
882
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
883
+ "version": "4.2.3"
884
+ },
885
+ "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
886
+ "dependencies": {
887
+ "ansi-regex": "^5.0.1"
888
+ },
889
+ "engines": {
890
+ "node": ">=8"
891
+ },
892
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
893
+ "license": "MIT",
894
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
895
+ "version": "6.0.1"
896
+ }
897
+ },
898
+ "requires": true,
899
+ "version": "0.1.4"
900
+ }
package/package.json ADDED
@@ -0,0 +1,101 @@
1
+ {
2
+ "artifactDownloadUrl": "https://github.com/20jasper/jjpwrgem/releases/download/jjpwrgem-v0.1.4",
3
+ "author": "Jacob Asper <jacobasper191@gmail.com>",
4
+ "bin": {
5
+ "jjp": "run-jjp.js"
6
+ },
7
+ "dependencies": {
8
+ "axios": "^1.12.2",
9
+ "axios-proxy-builder": "^0.1.2",
10
+ "console.table": "^0.10.0",
11
+ "detect-libc": "^2.1.2",
12
+ "rimraf": "^6.0.1"
13
+ },
14
+ "description": "jjpwrgem json parser with really good error messages",
15
+ "devDependencies": {
16
+ "prettier": "^3.6.2"
17
+ },
18
+ "engines": {
19
+ "node": ">=14",
20
+ "npm": ">=6"
21
+ },
22
+ "glibcMinimum": {
23
+ "major": 2,
24
+ "series": 35
25
+ },
26
+ "homepage": "https://github.com/20jasper/jjpwrgem",
27
+ "keywords": [
28
+ "command-line-utilities",
29
+ "text-processing",
30
+ "encoding",
31
+ "parser",
32
+ "formatter",
33
+ "json",
34
+ "linter"
35
+ ],
36
+ "license": "MIT",
37
+ "name": "jjpwrgem",
38
+ "preferUnplugged": true,
39
+ "repository": "https://github.com/20jasper/jjpwrgem",
40
+ "scripts": {
41
+ "fmt": "prettier --write **/*.js",
42
+ "fmt:check": "prettier --check **/*.js",
43
+ "postinstall": "node ./install.js"
44
+ },
45
+ "supportedPlatforms": {
46
+ "aarch64-apple-darwin": {
47
+ "artifactName": "jjpwrgem-aarch64-apple-darwin.tar.xz",
48
+ "bins": {
49
+ "jjp": "jjp"
50
+ },
51
+ "zipExt": ".tar.xz"
52
+ },
53
+ "aarch64-pc-windows-msvc": {
54
+ "artifactName": "jjpwrgem-x86_64-pc-windows-msvc.zip",
55
+ "bins": {
56
+ "jjp": "jjp.exe"
57
+ },
58
+ "zipExt": ".zip"
59
+ },
60
+ "aarch64-unknown-linux-gnu": {
61
+ "artifactName": "jjpwrgem-aarch64-unknown-linux-gnu.tar.xz",
62
+ "bins": {
63
+ "jjp": "jjp"
64
+ },
65
+ "zipExt": ".tar.xz"
66
+ },
67
+ "x86_64-apple-darwin": {
68
+ "artifactName": "jjpwrgem-x86_64-apple-darwin.tar.xz",
69
+ "bins": {
70
+ "jjp": "jjp"
71
+ },
72
+ "zipExt": ".tar.xz"
73
+ },
74
+ "x86_64-pc-windows-gnu": {
75
+ "artifactName": "jjpwrgem-x86_64-pc-windows-msvc.zip",
76
+ "bins": {
77
+ "jjp": "jjp.exe"
78
+ },
79
+ "zipExt": ".zip"
80
+ },
81
+ "x86_64-pc-windows-msvc": {
82
+ "artifactName": "jjpwrgem-x86_64-pc-windows-msvc.zip",
83
+ "bins": {
84
+ "jjp": "jjp.exe"
85
+ },
86
+ "zipExt": ".zip"
87
+ },
88
+ "x86_64-unknown-linux-gnu": {
89
+ "artifactName": "jjpwrgem-x86_64-unknown-linux-gnu.tar.xz",
90
+ "bins": {
91
+ "jjp": "jjp"
92
+ },
93
+ "zipExt": ".tar.xz"
94
+ }
95
+ },
96
+ "version": "0.1.4",
97
+ "volta": {
98
+ "node": "18.14.1",
99
+ "npm": "9.5.0"
100
+ }
101
+ }
package/run-jjp.js ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { run } = require("./binary");
4
+ run("jjp");