@nash-script/cli 0.2.2 → 0.2.3

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # nash-cli
2
2
 
3
+ ## 0.2.3 — 2026-09-05
4
+
5
+ ### Patch changes
6
+
7
+ - Updated dependencies: nash-driver@0.2.2
8
+
3
9
  ## 0.2.2 — 2026-08-15
4
10
 
5
11
  ### Patch changes
package/README.md CHANGED
@@ -1,26 +1,57 @@
1
1
  # nash
2
2
 
3
- ## Development
3
+ A purely functional language with Elm/Haskell syntax that compiles to
4
+ Untyped Plutus Core. Successor to Aiken: type classes, higher-kinded types,
5
+ explicit Big (`Data`) vs little (native UPLC) representation types, macros,
6
+ compile-time evaluation, property-based tests.
7
+
8
+ - Design: [`docs/overview.md`](docs/overview.md) and [`docs/`](docs/)
9
+ - Plans: [`plans/`](plans/)
10
+ - Status: [`SPEC.md`](SPEC.md)
11
+
12
+ ## Taste
13
+
14
+ ```elm
15
+ validator module Vesting exposing (main)
16
+
17
+ type Datum = Datum { owner : Bytes, deadline : Int }
18
+
19
+ @derive(Eq, Show, ToData, FromData)
20
+ type Redeemer = Claim | Cancel
4
21
 
5
- ### Validation
22
+ main : Datum -> Redeemer -> Data -> unit
23
+ main datum redeemer ctx =
24
+ case redeemer of
25
+ Claim -> assert (lower datum.deadline < currentSlot ctx)
26
+ Cancel -> assert (signedBy ctx datum.owner)
6
27
 
7
- Before pushing, run:
28
+ tests
29
+ import Fuzz exposing (int)
30
+
31
+ prop "deadline is never negative" =
32
+ let d via int in
33
+ do
34
+ assert (lift d >= lift 0)
35
+ ```
36
+
37
+ ## Development
8
38
 
9
39
  ```sh
10
40
  cargo fmt --all
11
41
  cargo clippy --all-targets --all-features -- -D warnings
12
- cargo test
42
+ cargo insta test
13
43
  ```
14
44
 
15
45
  ### Changesets
16
46
 
17
- We use [sampo](https://github.com/bruits/sampo) for versioning and releases. When you make a notable change, add a changeset:
47
+ We use [sampo](https://github.com/bruits/sampo) for versioning and releases.
48
+ When you make a notable change, add a changeset:
18
49
 
19
50
  ```sh
20
51
  sampo add
21
52
  ```
22
53
 
23
- Only list crates you actually changed -- sampo automatically bumps dependents.
54
+ Only list crates you actually changed; sampo bumps dependents.
24
55
 
25
56
  ### Release flow
26
57
 
@@ -30,65 +61,5 @@ Only list crates you actually changed -- sampo automatically bumps dependents.
30
61
  4. Sampo publishes crates to crates.io and pushes version tags
31
62
  5. Tags trigger cargo-dist to build and publish:
32
63
  - GitHub Releases with platform binaries
33
- - Homebrew formula (`brew install nash-script/tap/nash`)
64
+ - Homebrew formula (`brew install orbistry/tap/nash`)
34
65
  - npm package (`npx @nash-script/cli`)
35
-
36
- ## Docs
37
-
38
- ### Imports
39
-
40
- ```
41
- import { someFunc } from @microproofs/mpf
42
- import tree from @microproofs/mpf/tree
43
-
44
- import (
45
- { someFunc } from @microproofs/mpf
46
- thing from @microproofs/mpf/tree
47
- )
48
-
49
- // Without from
50
- import @microproofs/mpf.{someFunc}
51
- import @microproofs/mpf/tree
52
-
53
- import (
54
- @microproofs/mpf.{someFunc}
55
- @microproofs/mpf/tree as thing
56
- )
57
- ```
58
-
59
- modules defined with `~` at the start of the name behave like `index.ts` in typescript modules
60
-
61
- ```
62
- export {someFunc} from ~/leaf
63
-
64
- export {someFunc} from @/tree
65
- ```
66
-
67
- ### Defining types
68
-
69
- ```
70
- interface Thing {
71
- cmp(a, a) Ordering
72
- }
73
-
74
- type Wow = {
75
- thing: Int,
76
- next: Int,
77
- fiilll: Int,
78
- }
79
-
80
- type Something {
81
- Thing Wow
82
- Who (Wow)
83
- Me { thing: Int, next: Int }
84
- }
85
-
86
- when something is {
87
- Thing wow -> {
88
- wow.thing
89
- }
90
- Anal wow -> {
91
- wow.0.thing
92
- }
93
- }
94
- ```
package/binary-install.js CHANGED
@@ -1,10 +1,17 @@
1
- const { createWriteStream, existsSync, mkdirSync, mkdtemp } = require("fs");
1
+ const {
2
+ createWriteStream,
3
+ existsSync,
4
+ mkdirSync,
5
+ mkdtemp,
6
+ rmSync,
7
+ } = require("fs");
2
8
  const { join, sep } = require("path");
3
9
  const { spawnSync } = require("child_process");
4
10
  const { tmpdir } = require("os");
5
11
 
6
- const axios = require("axios");
7
- const rimraf = require("rimraf");
12
+ const https = require("node:https");
13
+ const http = require("node:http");
14
+
8
15
  const tmpDir = tmpdir();
9
16
 
10
17
  const error = (msg) => {
@@ -12,6 +19,135 @@ const error = (msg) => {
12
19
  process.exit(1);
13
20
  };
14
21
 
22
+ function getProxyForUrl(urlString) {
23
+ const url = new URL(urlString);
24
+ const isHttps = url.protocol === "https:";
25
+
26
+ const noProxy = process.env.NO_PROXY || process.env.no_proxy || "";
27
+ if (noProxy === "*") return null;
28
+ if (noProxy) {
29
+ const hostname = url.hostname.toLowerCase();
30
+ const noProxyList = noProxy.split(",").map((s) => s.trim().toLowerCase());
31
+ for (const entry of noProxyList) {
32
+ if (hostname === entry || hostname.endsWith("." + entry)) {
33
+ return null;
34
+ }
35
+ }
36
+ }
37
+
38
+ const proxyEnv = isHttps
39
+ ? process.env.HTTPS_PROXY || process.env.https_proxy
40
+ : process.env.HTTP_PROXY || process.env.http_proxy;
41
+
42
+ if (!proxyEnv) return null;
43
+
44
+ const proxyUrl = new URL(proxyEnv);
45
+
46
+ let auth = null;
47
+ if (proxyUrl.username || proxyUrl.password) {
48
+ auth = `${proxyUrl.username}:${proxyUrl.password}`;
49
+ }
50
+
51
+ return {
52
+ hostname: proxyUrl.hostname,
53
+ port: proxyUrl.port || (proxyUrl.protocol === "https:" ? 443 : 80),
54
+ auth: auth,
55
+ };
56
+ }
57
+
58
+ function connectThroughProxy(proxy, target) {
59
+ return new Promise((resolve, reject) => {
60
+ const headers = {};
61
+ if (proxy.auth) {
62
+ headers["Proxy-Authorization"] =
63
+ "Basic " + Buffer.from(proxy.auth).toString("base64");
64
+ }
65
+
66
+ const connectReq = http.request({
67
+ hostname: proxy.hostname,
68
+ port: proxy.port,
69
+ method: "CONNECT",
70
+ path: `${target.hostname}:${target.port || 443}`,
71
+ headers,
72
+ });
73
+ connectReq.on("connect", (res, socket) => {
74
+ if (res.statusCode === 200) {
75
+ resolve(socket);
76
+ } else {
77
+ reject(new Error(`Proxy CONNECT failed with status ${res.statusCode}`));
78
+ }
79
+ });
80
+ connectReq.on("error", reject);
81
+ connectReq.end();
82
+ });
83
+ }
84
+
85
+ function download(urlString, maxRedirects) {
86
+ if (maxRedirects === undefined) maxRedirects = 5;
87
+ return new Promise((resolve, reject) => {
88
+ if (maxRedirects < 0) {
89
+ return reject(new Error("Too many redirects"));
90
+ }
91
+
92
+ const parsed = new URL(urlString);
93
+ const isHttps = parsed.protocol === "https:";
94
+ const mod = isHttps ? https : http;
95
+ const proxy = getProxyForUrl(urlString);
96
+
97
+ const doRequest = (extraOptions) => {
98
+ const options = Object.assign(
99
+ {
100
+ hostname: parsed.hostname,
101
+ port: parsed.port || (isHttps ? 443 : 80),
102
+ path: parsed.pathname + parsed.search,
103
+ method: "GET",
104
+ headers: { "User-Agent": "cargo-dist-npm-installer" },
105
+ },
106
+ extraOptions || {},
107
+ );
108
+
109
+ if (proxy && !isHttps) {
110
+ // HTTP through HTTP proxy: request the full URL via the proxy
111
+ options.hostname = proxy.hostname;
112
+ options.port = proxy.port;
113
+ options.path = urlString;
114
+ if (proxy.auth) {
115
+ options.headers["Proxy-Authorization"] =
116
+ "Basic " + Buffer.from(proxy.auth).toString("base64");
117
+ }
118
+ }
119
+
120
+ const req = mod.request(options, (res) => {
121
+ if (
122
+ res.statusCode >= 300 &&
123
+ res.statusCode < 400 &&
124
+ res.headers.location
125
+ ) {
126
+ res.resume();
127
+ const nextUrl = new URL(res.headers.location, urlString).toString();
128
+ return download(nextUrl, maxRedirects - 1).then(resolve, reject);
129
+ }
130
+ if (res.statusCode < 200 || res.statusCode >= 300) {
131
+ res.resume();
132
+ return reject(new Error(`HTTP ${res.statusCode} from ${urlString}`));
133
+ }
134
+ resolve(res);
135
+ });
136
+ req.on("error", reject);
137
+ req.end();
138
+ };
139
+
140
+ if (proxy && isHttps) {
141
+ connectThroughProxy(proxy, parsed).then(
142
+ (socket) => doRequest({ socket, agent: false }),
143
+ reject,
144
+ );
145
+ } else {
146
+ doRequest();
147
+ }
148
+ });
149
+ }
150
+
15
151
  class Package {
16
152
  constructor(platform, name, url, filename, zipExt, binaries) {
17
153
  let errors = [];
@@ -72,7 +208,7 @@ class Package {
72
208
  return true;
73
209
  }
74
210
 
75
- install(fetchOptions, suppressLogs = false) {
211
+ install(suppressLogs = false) {
76
212
  if (this.exists()) {
77
213
  if (!suppressLogs) {
78
214
  console.error(
@@ -82,8 +218,10 @@ class Package {
82
218
  return Promise.resolve();
83
219
  }
84
220
 
85
- if (existsSync(this.installDirectory)) {
86
- rimraf.sync(this.installDirectory);
221
+ try {
222
+ rmSync(this.installDirectory, { recursive: true, force: true });
223
+ } catch {
224
+ // ignore - directory may not exist
87
225
  }
88
226
 
89
227
  mkdirSync(this.installDirectory, { recursive: true });
@@ -92,12 +230,13 @@ class Package {
92
230
  console.error(`Downloading release from ${this.url}`);
93
231
  }
94
232
 
95
- return axios({ ...fetchOptions, url: this.url, responseType: "stream" })
233
+ return download(this.url)
96
234
  .then((res) => {
97
235
  return new Promise((resolve, reject) => {
98
236
  mkdtemp(`${tmpDir}${sep}`, (err, directory) => {
237
+ if (err) return reject(err);
99
238
  let tempFile = join(directory, this.filename);
100
- const sink = res.data.pipe(createWriteStream(tempFile));
239
+ const sink = res.pipe(createWriteStream(tempFile));
101
240
  sink.on("error", (err) => reject(err));
102
241
  sink.on("close", () => {
103
242
  if (/\.tar\.*/.test(this.zipExt)) {
@@ -178,10 +317,8 @@ class Package {
178
317
  });
179
318
  }
180
319
 
181
- run(binaryName, fetchOptions) {
182
- const promise = !this.exists()
183
- ? this.install(fetchOptions, true)
184
- : Promise.resolve();
320
+ run(binaryName) {
321
+ const promise = !this.exists() ? this.install(true) : Promise.resolve();
185
322
 
186
323
  promise
187
324
  .then(() => {
@@ -204,7 +341,6 @@ class Package {
204
341
  })
205
342
  .catch((e) => {
206
343
  error(e.message);
207
- process.exit(1);
208
344
  });
209
345
  }
210
346
  }
package/binary.js CHANGED
@@ -1,8 +1,6 @@
1
1
  const { Package } = require("./binary-install");
2
2
  const os = require("os");
3
- const cTable = require("console.table");
4
3
  const libc = require("detect-libc");
5
- const { configureProxy } = require("axios-proxy-builder");
6
4
 
7
5
  const error = (msg) => {
8
6
  console.error(msg);
@@ -108,17 +106,15 @@ const install = (suppressLogs) => {
108
106
  console.warn("in demo mode, not installing binaries");
109
107
  return;
110
108
  }
111
- const package = getPackage();
112
- const proxy = configureProxy(package.url);
109
+ const pkg = getPackage();
113
110
 
114
- return package.install(proxy, suppressLogs);
111
+ return pkg.install(suppressLogs);
115
112
  };
116
113
 
117
114
  const run = (binaryName) => {
118
- const package = getPackage();
119
- const proxy = configureProxy(package.url);
115
+ const pkg = getPackage();
120
116
 
121
- package.run(binaryName, proxy);
117
+ pkg.run(binaryName);
122
118
  };
123
119
 
124
120
  module.exports = {
@@ -7,151 +7,19 @@
7
7
  "nash": "run-nash.js"
8
8
  },
9
9
  "dependencies": {
10
- "axios": "^1.13.5",
11
- "axios-proxy-builder": "^0.1.2",
12
- "console.table": "^0.10.0",
13
- "detect-libc": "^2.1.2",
14
- "rimraf": "^6.1.3"
10
+ "detect-libc": "^2.1.2"
15
11
  },
16
12
  "devDependencies": {
17
- "prettier": "^3.8.1"
13
+ "prettier": "^3.8.3"
18
14
  },
19
15
  "engines": {
20
- "node": ">=14",
16
+ "node": ">=14.14",
21
17
  "npm": ">=6"
22
18
  },
23
19
  "hasInstallScript": true,
24
20
  "license": "Apache-2.0",
25
21
  "name": "@nash-script/cli",
26
- "version": "0.2.2"
27
- },
28
- "node_modules/@isaacs/cliui": {
29
- "engines": {
30
- "node": ">=18"
31
- },
32
- "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==",
33
- "license": "BlueOak-1.0.0",
34
- "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz",
35
- "version": "9.0.0"
36
- },
37
- "node_modules/asynckit": {
38
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
39
- "license": "MIT",
40
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
41
- "version": "0.4.0"
42
- },
43
- "node_modules/axios": {
44
- "dependencies": {
45
- "follow-redirects": "^1.15.11",
46
- "form-data": "^4.0.5",
47
- "proxy-from-env": "^1.1.0"
48
- },
49
- "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==",
50
- "license": "MIT",
51
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz",
52
- "version": "1.13.5"
53
- },
54
- "node_modules/axios-proxy-builder": {
55
- "dependencies": {
56
- "tunnel": "^0.0.6"
57
- },
58
- "integrity": "sha512-6uBVsBZzkB3tCC8iyx59mCjQckhB8+GQrI9Cop8eC7ybIsvs/KtnNgEBfRMSEa7GqK2VBGUzgjNYMdPIfotyPA==",
59
- "license": "MIT",
60
- "resolved": "https://registry.npmjs.org/axios-proxy-builder/-/axios-proxy-builder-0.1.2.tgz",
61
- "version": "0.1.2"
62
- },
63
- "node_modules/balanced-match": {
64
- "dependencies": {
65
- "jackspeak": "^4.2.3"
66
- },
67
- "engines": {
68
- "node": "20 || >=22"
69
- },
70
- "integrity": "sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==",
71
- "license": "MIT",
72
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.2.tgz",
73
- "version": "4.0.2"
74
- },
75
- "node_modules/brace-expansion": {
76
- "dependencies": {
77
- "balanced-match": "^4.0.2"
78
- },
79
- "engines": {
80
- "node": "20 || >=22"
81
- },
82
- "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==",
83
- "license": "MIT",
84
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz",
85
- "version": "5.0.2"
86
- },
87
- "node_modules/call-bind-apply-helpers": {
88
- "dependencies": {
89
- "es-errors": "^1.3.0",
90
- "function-bind": "^1.1.2"
91
- },
92
- "engines": {
93
- "node": ">= 0.4"
94
- },
95
- "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
96
- "license": "MIT",
97
- "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
98
- "version": "1.0.2"
99
- },
100
- "node_modules/clone": {
101
- "engines": {
102
- "node": ">=0.8"
103
- },
104
- "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
105
- "license": "MIT",
106
- "optional": true,
107
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
108
- "version": "1.0.4"
109
- },
110
- "node_modules/combined-stream": {
111
- "dependencies": {
112
- "delayed-stream": "~1.0.0"
113
- },
114
- "engines": {
115
- "node": ">= 0.8"
116
- },
117
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
118
- "license": "MIT",
119
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
120
- "version": "1.0.8"
121
- },
122
- "node_modules/console.table": {
123
- "dependencies": {
124
- "easy-table": "1.1.0"
125
- },
126
- "engines": {
127
- "node": "> 0.10"
128
- },
129
- "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==",
130
- "license": "MIT",
131
- "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz",
132
- "version": "0.10.0"
133
- },
134
- "node_modules/defaults": {
135
- "dependencies": {
136
- "clone": "^1.0.2"
137
- },
138
- "funding": {
139
- "url": "https://github.com/sponsors/sindresorhus"
140
- },
141
- "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
142
- "license": "MIT",
143
- "optional": true,
144
- "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
145
- "version": "1.0.4"
146
- },
147
- "node_modules/delayed-stream": {
148
- "engines": {
149
- "node": ">=0.4.0"
150
- },
151
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
152
- "license": "MIT",
153
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
154
- "version": "1.0.0"
22
+ "version": "0.2.3"
155
23
  },
156
24
  "node_modules/detect-libc": {
157
25
  "engines": {
@@ -162,324 +30,6 @@
162
30
  "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
163
31
  "version": "2.1.2"
164
32
  },
165
- "node_modules/dunder-proto": {
166
- "dependencies": {
167
- "call-bind-apply-helpers": "^1.0.1",
168
- "es-errors": "^1.3.0",
169
- "gopd": "^1.2.0"
170
- },
171
- "engines": {
172
- "node": ">= 0.4"
173
- },
174
- "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
175
- "license": "MIT",
176
- "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
177
- "version": "1.0.1"
178
- },
179
- "node_modules/easy-table": {
180
- "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==",
181
- "license": "MIT",
182
- "optionalDependencies": {
183
- "wcwidth": ">=1.0.1"
184
- },
185
- "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz",
186
- "version": "1.1.0"
187
- },
188
- "node_modules/es-define-property": {
189
- "engines": {
190
- "node": ">= 0.4"
191
- },
192
- "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
193
- "license": "MIT",
194
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
195
- "version": "1.0.1"
196
- },
197
- "node_modules/es-errors": {
198
- "engines": {
199
- "node": ">= 0.4"
200
- },
201
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
202
- "license": "MIT",
203
- "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
204
- "version": "1.3.0"
205
- },
206
- "node_modules/es-object-atoms": {
207
- "dependencies": {
208
- "es-errors": "^1.3.0"
209
- },
210
- "engines": {
211
- "node": ">= 0.4"
212
- },
213
- "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
214
- "license": "MIT",
215
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
216
- "version": "1.1.1"
217
- },
218
- "node_modules/es-set-tostringtag": {
219
- "dependencies": {
220
- "es-errors": "^1.3.0",
221
- "get-intrinsic": "^1.2.6",
222
- "has-tostringtag": "^1.0.2",
223
- "hasown": "^2.0.2"
224
- },
225
- "engines": {
226
- "node": ">= 0.4"
227
- },
228
- "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
229
- "license": "MIT",
230
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
231
- "version": "2.1.0"
232
- },
233
- "node_modules/follow-redirects": {
234
- "engines": {
235
- "node": ">=4.0"
236
- },
237
- "funding": [
238
- {
239
- "type": "individual",
240
- "url": "https://github.com/sponsors/RubenVerborgh"
241
- }
242
- ],
243
- "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
244
- "license": "MIT",
245
- "peerDependenciesMeta": {
246
- "debug": {
247
- "optional": true
248
- }
249
- },
250
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
251
- "version": "1.15.11"
252
- },
253
- "node_modules/form-data": {
254
- "dependencies": {
255
- "asynckit": "^0.4.0",
256
- "combined-stream": "^1.0.8",
257
- "es-set-tostringtag": "^2.1.0",
258
- "hasown": "^2.0.2",
259
- "mime-types": "^2.1.12"
260
- },
261
- "engines": {
262
- "node": ">= 6"
263
- },
264
- "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
265
- "license": "MIT",
266
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
267
- "version": "4.0.5"
268
- },
269
- "node_modules/function-bind": {
270
- "funding": {
271
- "url": "https://github.com/sponsors/ljharb"
272
- },
273
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
274
- "license": "MIT",
275
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
276
- "version": "1.1.2"
277
- },
278
- "node_modules/get-intrinsic": {
279
- "dependencies": {
280
- "call-bind-apply-helpers": "^1.0.2",
281
- "es-define-property": "^1.0.1",
282
- "es-errors": "^1.3.0",
283
- "es-object-atoms": "^1.1.1",
284
- "function-bind": "^1.1.2",
285
- "get-proto": "^1.0.1",
286
- "gopd": "^1.2.0",
287
- "has-symbols": "^1.1.0",
288
- "hasown": "^2.0.2",
289
- "math-intrinsics": "^1.1.0"
290
- },
291
- "engines": {
292
- "node": ">= 0.4"
293
- },
294
- "funding": {
295
- "url": "https://github.com/sponsors/ljharb"
296
- },
297
- "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
298
- "license": "MIT",
299
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
300
- "version": "1.3.0"
301
- },
302
- "node_modules/get-proto": {
303
- "dependencies": {
304
- "dunder-proto": "^1.0.1",
305
- "es-object-atoms": "^1.0.0"
306
- },
307
- "engines": {
308
- "node": ">= 0.4"
309
- },
310
- "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
311
- "license": "MIT",
312
- "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
313
- "version": "1.0.1"
314
- },
315
- "node_modules/glob": {
316
- "dependencies": {
317
- "minimatch": "^10.2.0",
318
- "minipass": "^7.1.2",
319
- "path-scurry": "^2.0.0"
320
- },
321
- "engines": {
322
- "node": "20 || >=22"
323
- },
324
- "funding": {
325
- "url": "https://github.com/sponsors/isaacs"
326
- },
327
- "integrity": "sha512-/g3B0mC+4x724v1TgtBlBtt2hPi/EWptsIAmXUx9Z2rvBYleQcsrmaOzd5LyL50jf/Soi83ZDJmw2+XqvH/EeA==",
328
- "license": "BlueOak-1.0.0",
329
- "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.3.tgz",
330
- "version": "13.0.3"
331
- },
332
- "node_modules/gopd": {
333
- "engines": {
334
- "node": ">= 0.4"
335
- },
336
- "funding": {
337
- "url": "https://github.com/sponsors/ljharb"
338
- },
339
- "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
340
- "license": "MIT",
341
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
342
- "version": "1.2.0"
343
- },
344
- "node_modules/has-symbols": {
345
- "engines": {
346
- "node": ">= 0.4"
347
- },
348
- "funding": {
349
- "url": "https://github.com/sponsors/ljharb"
350
- },
351
- "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
352
- "license": "MIT",
353
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
354
- "version": "1.1.0"
355
- },
356
- "node_modules/has-tostringtag": {
357
- "dependencies": {
358
- "has-symbols": "^1.0.3"
359
- },
360
- "engines": {
361
- "node": ">= 0.4"
362
- },
363
- "funding": {
364
- "url": "https://github.com/sponsors/ljharb"
365
- },
366
- "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
367
- "license": "MIT",
368
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
369
- "version": "1.0.2"
370
- },
371
- "node_modules/hasown": {
372
- "dependencies": {
373
- "function-bind": "^1.1.2"
374
- },
375
- "engines": {
376
- "node": ">= 0.4"
377
- },
378
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
379
- "license": "MIT",
380
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
381
- "version": "2.0.2"
382
- },
383
- "node_modules/jackspeak": {
384
- "dependencies": {
385
- "@isaacs/cliui": "^9.0.0"
386
- },
387
- "engines": {
388
- "node": "20 || >=22"
389
- },
390
- "funding": {
391
- "url": "https://github.com/sponsors/isaacs"
392
- },
393
- "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==",
394
- "license": "BlueOak-1.0.0",
395
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz",
396
- "version": "4.2.3"
397
- },
398
- "node_modules/lru-cache": {
399
- "engines": {
400
- "node": "20 || >=22"
401
- },
402
- "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==",
403
- "license": "BlueOak-1.0.0",
404
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz",
405
- "version": "11.2.6"
406
- },
407
- "node_modules/math-intrinsics": {
408
- "engines": {
409
- "node": ">= 0.4"
410
- },
411
- "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
412
- "license": "MIT",
413
- "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
414
- "version": "1.1.0"
415
- },
416
- "node_modules/mime-db": {
417
- "engines": {
418
- "node": ">= 0.6"
419
- },
420
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
421
- "license": "MIT",
422
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
423
- "version": "1.52.0"
424
- },
425
- "node_modules/mime-types": {
426
- "dependencies": {
427
- "mime-db": "1.52.0"
428
- },
429
- "engines": {
430
- "node": ">= 0.6"
431
- },
432
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
433
- "license": "MIT",
434
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
435
- "version": "2.1.35"
436
- },
437
- "node_modules/minimatch": {
438
- "dependencies": {
439
- "brace-expansion": "^5.0.2"
440
- },
441
- "engines": {
442
- "node": "20 || >=22"
443
- },
444
- "funding": {
445
- "url": "https://github.com/sponsors/isaacs"
446
- },
447
- "integrity": "sha512-ugkC31VaVg9cF0DFVoADH12k6061zNZkZON+aX8AWsR9GhPcErkcMBceb6znR8wLERM2AkkOxy2nWRLpT9Jq5w==",
448
- "license": "BlueOak-1.0.0",
449
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.0.tgz",
450
- "version": "10.2.0"
451
- },
452
- "node_modules/minipass": {
453
- "engines": {
454
- "node": ">=16 || 14 >=14.17"
455
- },
456
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
457
- "license": "ISC",
458
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
459
- "version": "7.1.2"
460
- },
461
- "node_modules/package-json-from-dist": {
462
- "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
463
- "license": "BlueOak-1.0.0",
464
- "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
465
- "version": "1.0.1"
466
- },
467
- "node_modules/path-scurry": {
468
- "dependencies": {
469
- "lru-cache": "^11.0.0",
470
- "minipass": "^7.1.2"
471
- },
472
- "engines": {
473
- "node": "20 || >=22"
474
- },
475
- "funding": {
476
- "url": "https://github.com/sponsors/isaacs"
477
- },
478
- "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==",
479
- "license": "BlueOak-1.0.0",
480
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz",
481
- "version": "2.0.1"
482
- },
483
33
  "node_modules/prettier": {
484
34
  "bin": {
485
35
  "prettier": "bin/prettier.cjs"
@@ -491,56 +41,12 @@
491
41
  "funding": {
492
42
  "url": "https://github.com/prettier/prettier?sponsor=1"
493
43
  },
494
- "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==",
495
- "license": "MIT",
496
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz",
497
- "version": "3.8.1"
498
- },
499
- "node_modules/proxy-from-env": {
500
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
501
- "license": "MIT",
502
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
503
- "version": "1.1.0"
504
- },
505
- "node_modules/rimraf": {
506
- "bin": {
507
- "rimraf": "dist/esm/bin.mjs"
508
- },
509
- "dependencies": {
510
- "glob": "^13.0.3",
511
- "package-json-from-dist": "^1.0.1"
512
- },
513
- "engines": {
514
- "node": "20 || >=22"
515
- },
516
- "funding": {
517
- "url": "https://github.com/sponsors/isaacs"
518
- },
519
- "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==",
520
- "license": "BlueOak-1.0.0",
521
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz",
522
- "version": "6.1.3"
523
- },
524
- "node_modules/tunnel": {
525
- "engines": {
526
- "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
527
- },
528
- "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
529
- "license": "MIT",
530
- "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
531
- "version": "0.0.6"
532
- },
533
- "node_modules/wcwidth": {
534
- "dependencies": {
535
- "defaults": "^1.0.3"
536
- },
537
- "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
44
+ "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==",
538
45
  "license": "MIT",
539
- "optional": true,
540
- "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
541
- "version": "1.0.1"
46
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz",
47
+ "version": "3.8.3"
542
48
  }
543
49
  },
544
50
  "requires": true,
545
- "version": "0.2.2"
51
+ "version": "0.2.3"
546
52
  }
package/package.json CHANGED
@@ -1,23 +1,19 @@
1
1
  {
2
2
  "artifactDownloadUrls": [
3
- "https://github.com/nash-script/compiler/releases/download/nash-cli-v0.2.2"
3
+ "https://github.com/nash-script/compiler/releases/download/nash-cli-v0.2.3"
4
4
  ],
5
5
  "bin": {
6
6
  "nash": "run-nash.js"
7
7
  },
8
8
  "dependencies": {
9
- "axios": "^1.13.5",
10
- "axios-proxy-builder": "^0.1.2",
11
- "console.table": "^0.10.0",
12
- "detect-libc": "^2.1.2",
13
- "rimraf": "^6.1.3"
9
+ "detect-libc": "^2.1.2"
14
10
  },
15
11
  "description": "The Nash programming language",
16
12
  "devDependencies": {
17
- "prettier": "^3.8.1"
13
+ "prettier": "^3.8.3"
18
14
  },
19
15
  "engines": {
20
- "node": ">=14",
16
+ "node": ">=14.14",
21
17
  "npm": ">=6"
22
18
  },
23
19
  "glibcMinimum": {
@@ -85,7 +81,7 @@
85
81
  "zipExt": ".tar.xz"
86
82
  }
87
83
  },
88
- "version": "0.2.2",
84
+ "version": "0.2.3",
89
85
  "volta": {
90
86
  "node": "18.14.1",
91
87
  "npm": "9.5.0"