Holesail Service Daemon + Bin Client
This commit is contained in:
@@ -204,7 +204,7 @@ async function run(ctx, argv) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
On **Pear**, **`ctx.bare`** is populated from the booter’s embedded **`bare-module-manifest.data.mjs`**, not from **`readFile`** of **`pear://…`** paths. Updating **`/lib/bare/bare-module-manifest.json`** on the system drive still affects **VFS warm-cache** eviction for **`/lib/bare/bundles/*`** via the helpers above, but operators must **re-stage the booter** after **`npm run sync:bare-manifest`** to change which packages the Pear host **`import()`**s. See [Chapter 12 — Bare modules](12-bare-modules-and-pear-ecosystem.md) and [PEAR-RUN.md](../docs/PEAR-RUN.md).
|
On **Pear**, **`ctx.bare`** is populated from the booter’s embedded **`bare-module-manifest.data.mjs`**, not from **`readFile`** of **`pear://…`** paths. Updating **`/lib/bare/bare-module-manifest.json`** on the system drive still affects **VFS warm-cache** eviction for **`/lib/bare/bundles/*`** via the helpers above, but operators must **re-stage the booter** after **`npm run sync:bare-manifest`** to change manifest metadata; when the booter runs as **`pear:`**, host **`import()`** skips **`bundle: true`** rows (drive bundles supply those keys). See [Chapter 12 — Bare modules](12-bare-modules-and-pear-ecosystem.md) and [PEAR-RUN.md](../docs/PEAR-RUN.md).
|
||||||
|
|
||||||
**Read the Protomux extension registry mirror** (when `BARE_OS_PROC_PROTOMUX_EXTENSIONS_REGISTRY` is enabled on the booter):
|
**Read the Protomux extension registry mirror** (when `BARE_OS_PROC_PROTOMUX_EXTENSIONS_REGISTRY` is enabled on the booter):
|
||||||
|
|
||||||
|
|||||||
@@ -73,11 +73,11 @@ Use this for **new protocols**, **drive encryption**, **alternate kernels**, etc
|
|||||||
|
|
||||||
## `ctx.bare` — Holepunch-style modules without `import`
|
## `ctx.bare` — Holepunch-style modules without `import`
|
||||||
|
|
||||||
When **`BARE_OS_BARE_MODULES`** is not disabled, the booter exposes **`ctx.bare`**: a **frozen** object whose keys are defined by [`bare-module-manifest.json`](../packages/bare-os-booter/lib/bare-module-manifest.json). Each entry names an npm package and a stable **`ctxKey`** (for example **`b4a`**, **`protomux`**, **`compactEncoding`**).
|
When **`BARE_OS_BARE_MODULES`** is not disabled, the booter exposes **`ctx.bare`**: a **frozen** object whose keys are defined by [`bare-module-manifest.json`](../packages/bare-os-booter/lib/bare-module-manifest.json). Each entry names an npm package and a stable **`ctxKey`** (for example **`b4a`**, **`protomux`**, **`compactEncoding`**, **`holesail`**).
|
||||||
|
|
||||||
**Host resolution:** the booter uses dynamic **`import()`** for each entry. Optional packages that fail to load (for example native-only modules on the wrong host) are skipped without aborting boot.
|
**Drive bundles (trusted image):** the system image may include **`/lib/bare/manifest.json`** and **`/lib/bare/bundles/*.js`**. Those scripts are **IIFE** bundles built by **`bare-os-bare-libs`**. The booter executes them with **`Function`** in the same trust class as seeded **`/bin`** utilities and fills **`ctx.bare`** for the listed keys. Set **`BARE_OS_BARE_DRIVE_BUNDLES=0`** to skip this step.
|
||||||
|
|
||||||
**Drive bundles (trusted image):** the system image may include **`/lib/bare/manifest.json`** and **`/lib/bare/bundles/*.js`**. Those scripts are **IIFE** bundles built by **`bare-os-bare-libs`**. The booter executes them with **`Function`** in the same trust class as seeded **`/bin`** utilities and copies values into **`ctx.bare`** only for keys **not** already set by the host. Set **`BARE_OS_BARE_DRIVE_BUNDLES=0`** to skip this step.
|
**Host resolution:** after drive merge, the booter uses dynamic **`import()`** for manifest entries that are **still missing**. When the booter loads from a **`pear:`** URL (**`pear run`**), rows with **`bundle: true`** are **not** host-**`import()`**ed (bare-module cannot resolve npm package names from that referrer; **`ctx.bare.holesail`** et al. come from **`/lib/bare/bundles/*`**). On **`file:`** checkouts and Node test harnesses, **`bundle: true`** may still be host-imported as a fallback when a drive bundle is absent. Optional packages that fail to load (for example native-only modules on the wrong host) are skipped without aborting boot.
|
||||||
|
|
||||||
**Hardening:** set **`BARE_OS_BARE_MODULES=0`** to omit **`ctx.bare`** entirely (the property is absent on **`ctx`**). Runtime caps **`bareCtxModules`** and **`bareDriveBundles`** mirror these toggles.
|
**Hardening:** set **`BARE_OS_BARE_MODULES=0`** to omit **`ctx.bare`** entirely (the property is absent on **`ctx`**). Runtime caps **`bareCtxModules`** and **`bareDriveBundles`** mirror these toggles.
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ This chapter ties together **Holepunch `bare-*` packages**, the **Pear** host ru
|
|||||||
|
|
||||||
2. **Pear booter (`bare-module-manifest.data.mjs`)** — The stock booter package ships **`packages/bare-os-booter/lib/bare-module-manifest.json`** (normative JSON, edited or synced from the catalog) and a generated sibling **`bare-module-manifest.data.mjs`** that **`export default`** the same object. Under **`pear run`**, **`import.meta.url`** is **`pear://…`**; **`bare-fs`** cannot open **`pear:`** URLs passed as **`URL`** instances because normalization uses **`bare-url.fileURLToPath`** ( **`file:`** only). Therefore **`loadBareModuleManifest()`** reads the embedded **`.data.mjs`** on Pear so the manifest stays in the traced module graph. On **`file:`** dev checkouts it prefers the JSON on disk (live edits) and falls back to the embedded copy if the file is missing. Regenerate **`.data.mjs`** with **`npm run sync:bare-manifest`** or **`node scripts/generate-bare-module-manifest-data.mjs`**; CI runs **`npm run verify:manifest-data`**.
|
2. **Pear booter (`bare-module-manifest.data.mjs`)** — The stock booter package ships **`packages/bare-os-booter/lib/bare-module-manifest.json`** (normative JSON, edited or synced from the catalog) and a generated sibling **`bare-module-manifest.data.mjs`** that **`export default`** the same object. Under **`pear run`**, **`import.meta.url`** is **`pear://…`**; **`bare-fs`** cannot open **`pear:`** URLs passed as **`URL`** instances because normalization uses **`bare-url.fileURLToPath`** ( **`file:`** only). Therefore **`loadBareModuleManifest()`** reads the embedded **`.data.mjs`** on Pear so the manifest stays in the traced module graph. On **`file:`** dev checkouts it prefers the JSON on disk (live edits) and falls back to the embedded copy if the file is missing. Regenerate **`.data.mjs`** with **`npm run sync:bare-manifest`** or **`node scripts/generate-bare-module-manifest-data.mjs`**; CI runs **`npm run verify:manifest-data`**.
|
||||||
|
|
||||||
3. **`ctx.bare` (host fallback)** — Unless **`BARE_OS_BARE_HOST_IMPORTS=0`**, the booter then **`import()`**s any manifest packages **still missing** after drive merge—typically native or Bare-only packages that could not be bundled, or when the image is older than the manifest. Set **`BARE_OS_BARE_HOST_IMPORTS=0`** for a **fully image-local** `ctx.bare` (no Pear host `node_modules` participation). Disable all `ctx.bare` with **`BARE_OS_BARE_MODULES=0`**. Manifest rows may include optional **`tier`** (**`core`** vs extended) and **`risk`** (**`low`**, **`medium`**, **`high`**) for distributor policy; the build honors **`tier`** via **`BARE_OS_BUNDLE_TIER`**.
|
3. **`ctx.bare` (host fallback)** — Unless **`BARE_OS_BARE_HOST_IMPORTS=0`**, the booter then **`import()`**s manifest packages **still missing** after drive merge. Under **`pear run`** (booter **`import.meta.url`** is **`pear:`**), **`bundle: true`** rows are **skipped** for host **`import()`** (keys come from **`/lib/bare/bundles/*`** only; avoids bare-module **`MODULE_NOT_FOUND` / referrer** errors for npm names like **`holesail`**). Under **`file:`** dev trees, **`bundle: true`** may still be host-imported when the drive bundle did not fill the key. Remaining host imports cover native or Bare-only packages that could not be bundled, or when the image is older than the manifest. Set **`BARE_OS_BARE_HOST_IMPORTS=0`** for a **fully image-local** `ctx.bare` (no Pear host `node_modules` participation). Disable all `ctx.bare` with **`BARE_OS_BARE_MODULES=0`**. For narrow harnesses, session env may set **`BARE_OS_BARE_HOST_SKIP_CTX_KEYS`** (comma-separated **`ctxKey`** list to skip) or **`BARE_OS_BARE_HOST_ONLY_CTX_KEYS`** (allowlist — only those keys are host-imported). Manifest rows may include optional **`tier`** (**`core`** vs extended) and **`risk`** (**`low`**, **`medium`**, **`high`**) for distributor policy; the build honors **`tier`** via **`BARE_OS_BUNDLE_TIER`**.
|
||||||
|
|
||||||
**Boot cold path / stdlib budget:** the stock booter measures drive merge + host **`import()`** resolution for **`ctx.bare`** and sets **`BARE_OS_BOOT_BARE_STDLIB_RESOLUTION_MS`** before the guest starts. Operators may set **`BARE_OS_BOOT_BUDGET_MS_BARE_STDLIB`** to log **`boot-perf.json`** / stderr warnings when resolution exceeds the budget; combine with **`BARE_OS_BUNDLE_TIER=core`** (or a smaller manifest) to shrink cold I/O. Use **`node scripts/kernel-microbench.mjs`** for regression-shaped timings (not a literal Pear cold boot).
|
**Boot cold path / stdlib budget:** the stock booter measures drive merge + host **`import()`** resolution for **`ctx.bare`** and sets **`BARE_OS_BOOT_BARE_STDLIB_RESOLUTION_MS`** before the guest starts. Operators may set **`BARE_OS_BOOT_BUDGET_MS_BARE_STDLIB`** to log **`boot-perf.json`** / stderr warnings when resolution exceeds the budget; combine with **`BARE_OS_BUNDLE_TIER=core`** (or a smaller manifest) to shrink cold I/O. Use **`node scripts/kernel-microbench.mjs`** for regression-shaped timings (not a literal Pear cold boot).
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"schemaVersion": 1,
|
"schemaVersion": 1,
|
||||||
"generatedAt": "2026-04-09T02:26:38.141Z",
|
"generatedAt": "2026-04-09T23:33:39.959Z",
|
||||||
"normativeManifest": "packages/bare-os-booter/lib/bare-module-manifest.json",
|
"normativeManifest": "packages/bare-os-booter/lib/bare-module-manifest.json",
|
||||||
"buildTool": "packages/bare-os-bare-libs/build.mjs",
|
"buildTool": "packages/bare-os-bare-libs/build.mjs",
|
||||||
"bundles": [
|
"bundles": [
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
"ctxKey": "bareApk",
|
"ctxKey": "bareApk",
|
||||||
"package": "bare-apk",
|
"package": "bare-apk",
|
||||||
"path": "/lib/bare/bundles/bareApk.js",
|
"path": "/lib/bare/bundles/bareApk.js",
|
||||||
"bytes": 48863
|
"bytes": 262379
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareAppKit",
|
"ctxKey": "bareAppKit",
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
"ctxKey": "bareBluetoothApple",
|
"ctxKey": "bareBluetoothApple",
|
||||||
"package": "bare-bluetooth-apple",
|
"package": "bare-bluetooth-apple",
|
||||||
"path": "/lib/bare/bundles/bareBluetoothApple.js",
|
"path": "/lib/bare/bundles/bareBluetoothApple.js",
|
||||||
"bytes": 120514
|
"bytes": 120792
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareBmp",
|
"ctxKey": "bareBmp",
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
"ctxKey": "bareBoot",
|
"ctxKey": "bareBoot",
|
||||||
"package": "bare-boot",
|
"package": "bare-boot",
|
||||||
"path": "/lib/bare/bundles/bareBoot.js",
|
"path": "/lib/bare/bundles/bareBoot.js",
|
||||||
"bytes": 192340
|
"bytes": 355797
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareBuffer",
|
"ctxKey": "bareBuffer",
|
||||||
@@ -104,19 +104,19 @@
|
|||||||
"ctxKey": "bareBundleEvaluate",
|
"ctxKey": "bareBundleEvaluate",
|
||||||
"package": "bare-bundle-evaluate",
|
"package": "bare-bundle-evaluate",
|
||||||
"path": "/lib/bare/bundles/bareBundleEvaluate.js",
|
"path": "/lib/bare/bundles/bareBundleEvaluate.js",
|
||||||
"bytes": 63875
|
"bytes": 277377
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareBundleId",
|
"ctxKey": "bareBundleId",
|
||||||
"package": "bare-bundle-id",
|
"package": "bare-bundle-id",
|
||||||
"path": "/lib/bare/bundles/bareBundleId.js",
|
"path": "/lib/bare/bundles/bareBundleId.js",
|
||||||
"bytes": 181802
|
"bytes": 435653
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareChannel",
|
"ctxKey": "bareChannel",
|
||||||
"package": "bare-channel",
|
"package": "bare-channel",
|
||||||
"path": "/lib/bare/bundles/bareChannel.js",
|
"path": "/lib/bare/bundles/bareChannel.js",
|
||||||
"bytes": 285213
|
"bytes": 285491
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareConsole",
|
"ctxKey": "bareConsole",
|
||||||
@@ -128,19 +128,19 @@
|
|||||||
"ctxKey": "bareCov",
|
"ctxKey": "bareCov",
|
||||||
"package": "bare-cov",
|
"package": "bare-cov",
|
||||||
"path": "/lib/bare/bundles/bareCov.js",
|
"path": "/lib/bare/bundles/bareCov.js",
|
||||||
"bytes": 418231
|
"bytes": 459219
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareCrypto",
|
"ctxKey": "bareCrypto",
|
||||||
"package": "bare-crypto",
|
"package": "bare-crypto",
|
||||||
"path": "/lib/bare/bundles/bareCrypto.js",
|
"path": "/lib/bare/bundles/bareCrypto.js",
|
||||||
"bytes": 181380
|
"bytes": 192419
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareDaemon",
|
"ctxKey": "bareDaemon",
|
||||||
"package": "bare-daemon",
|
"package": "bare-daemon",
|
||||||
"path": "/lib/bare/bundles/bareDaemon.js",
|
"path": "/lib/bare/bundles/bareDaemon.js",
|
||||||
"bytes": 56272
|
"bytes": 269774
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareDebugLog",
|
"ctxKey": "bareDebugLog",
|
||||||
@@ -158,13 +158,13 @@
|
|||||||
"ctxKey": "bareDev",
|
"ctxKey": "bareDev",
|
||||||
"package": "bare-dev",
|
"package": "bare-dev",
|
||||||
"path": "/lib/bare/bundles/bareDev.js",
|
"path": "/lib/bare/bundles/bareDev.js",
|
||||||
"bytes": 2203887
|
"bytes": 2458072
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareDgram",
|
"ctxKey": "bareDgram",
|
||||||
"package": "bare-dgram",
|
"package": "bare-dgram",
|
||||||
"path": "/lib/bare/bundles/bareDgram.js",
|
"path": "/lib/bare/bundles/bareDgram.js",
|
||||||
"bytes": 156005
|
"bytes": 304692
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareDiagnosticsChannel",
|
"ctxKey": "bareDiagnosticsChannel",
|
||||||
@@ -218,7 +218,7 @@
|
|||||||
"ctxKey": "bareFileLogger",
|
"ctxKey": "bareFileLogger",
|
||||||
"package": "bare-file-logger",
|
"package": "bare-file-logger",
|
||||||
"path": "/lib/bare/bundles/bareFileLogger.js",
|
"path": "/lib/bare/bundles/bareFileLogger.js",
|
||||||
"bytes": 262251
|
"bytes": 262529
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareFormat",
|
"ctxKey": "bareFormat",
|
||||||
@@ -230,13 +230,13 @@
|
|||||||
"ctxKey": "bareFormData",
|
"ctxKey": "bareFormData",
|
||||||
"package": "bare-form-data",
|
"package": "bare-form-data",
|
||||||
"path": "/lib/bare/bundles/bareFormData.js",
|
"path": "/lib/bare/bundles/bareFormData.js",
|
||||||
"bytes": 119682
|
"bytes": 130721
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareFs",
|
"ctxKey": "bareFs",
|
||||||
"package": "bare-fs",
|
"package": "bare-fs",
|
||||||
"path": "/lib/bare/bundles/bareFs.js",
|
"path": "/lib/bare/bundles/bareFs.js",
|
||||||
"bytes": 215595
|
"bytes": 215873
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareGif",
|
"ctxKey": "bareGif",
|
||||||
@@ -266,7 +266,7 @@
|
|||||||
"ctxKey": "bareHttp1",
|
"ctxKey": "bareHttp1",
|
||||||
"package": "bare-http1",
|
"package": "bare-http1",
|
||||||
"path": "/lib/bare/bundles/bareHttp1.js",
|
"path": "/lib/bare/bundles/bareHttp1.js",
|
||||||
"bytes": 178041
|
"bytes": 178322
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareHttpParser",
|
"ctxKey": "bareHttpParser",
|
||||||
@@ -278,7 +278,7 @@
|
|||||||
"ctxKey": "bareHttps",
|
"ctxKey": "bareHttps",
|
||||||
"package": "bare-https",
|
"package": "bare-https",
|
||||||
"path": "/lib/bare/bundles/bareHttps.js",
|
"path": "/lib/bare/bundles/bareHttps.js",
|
||||||
"bytes": 220568
|
"bytes": 220941
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareIco",
|
"ctxKey": "bareIco",
|
||||||
@@ -302,7 +302,7 @@
|
|||||||
"ctxKey": "bareInspector",
|
"ctxKey": "bareInspector",
|
||||||
"package": "bare-inspector",
|
"package": "bare-inspector",
|
||||||
"path": "/lib/bare/bundles/bareInspector.js",
|
"path": "/lib/bare/bundles/bareInspector.js",
|
||||||
"bytes": 395527
|
"bytes": 395897
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareIntl",
|
"ctxKey": "bareIntl",
|
||||||
@@ -314,7 +314,7 @@
|
|||||||
"ctxKey": "bareIpc",
|
"ctxKey": "bareIpc",
|
||||||
"package": "bare-ipc",
|
"package": "bare-ipc",
|
||||||
"path": "/lib/bare/bundles/bareIpc.js",
|
"path": "/lib/bare/bundles/bareIpc.js",
|
||||||
"bytes": 116026
|
"bytes": 116304
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareJpeg",
|
"ctxKey": "bareJpeg",
|
||||||
@@ -326,13 +326,13 @@
|
|||||||
"ctxKey": "bareLief",
|
"ctxKey": "bareLief",
|
||||||
"package": "bare-lief",
|
"package": "bare-lief",
|
||||||
"path": "/lib/bare/bundles/bareLief.js",
|
"path": "/lib/bare/bundles/bareLief.js",
|
||||||
"bytes": 92536
|
"bytes": 346413
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareLink",
|
"ctxKey": "bareLink",
|
||||||
"package": "bare-link",
|
"package": "bare-link",
|
||||||
"path": "/lib/bare/bundles/bareLink.js",
|
"path": "/lib/bare/bundles/bareLink.js",
|
||||||
"bytes": 124607
|
"bytes": 378496
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareLogger",
|
"ctxKey": "bareLogger",
|
||||||
@@ -344,25 +344,25 @@
|
|||||||
"ctxKey": "bareMake",
|
"ctxKey": "bareMake",
|
||||||
"package": "bare-make",
|
"package": "bare-make",
|
||||||
"path": "/lib/bare/bundles/bareMake.js",
|
"path": "/lib/bare/bundles/bareMake.js",
|
||||||
"bytes": 62379
|
"bytes": 270683
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareMedia",
|
"ctxKey": "bareMedia",
|
||||||
"package": "bare-media",
|
"package": "bare-media",
|
||||||
"path": "/lib/bare/bundles/bareMedia.js",
|
"path": "/lib/bare/bundles/bareMedia.js",
|
||||||
"bytes": 635512
|
"bytes": 635882
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareModule",
|
"ctxKey": "bareModule",
|
||||||
"package": "bare-module",
|
"package": "bare-module",
|
||||||
"path": "/lib/bare/bundles/bareModule.js",
|
"path": "/lib/bare/bundles/bareModule.js",
|
||||||
"bytes": 157707
|
"bytes": 321160
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareModuleLexer",
|
"ctxKey": "bareModuleLexer",
|
||||||
"package": "bare-module-lexer",
|
"package": "bare-module-lexer",
|
||||||
"path": "/lib/bare/bundles/bareModuleLexer.js",
|
"path": "/lib/bare/bundles/bareModuleLexer.js",
|
||||||
"bytes": 56975
|
"bytes": 270477
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareModuleResolve",
|
"ctxKey": "bareModuleResolve",
|
||||||
@@ -374,7 +374,7 @@
|
|||||||
"ctxKey": "bareModuleTraverse",
|
"ctxKey": "bareModuleTraverse",
|
||||||
"package": "bare-module-traverse",
|
"package": "bare-module-traverse",
|
||||||
"path": "/lib/bare/bundles/bareModuleTraverse.js",
|
"path": "/lib/bare/bundles/bareModuleTraverse.js",
|
||||||
"bytes": 82904
|
"bytes": 296404
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareNative",
|
"ctxKey": "bareNative",
|
||||||
@@ -392,7 +392,7 @@
|
|||||||
"ctxKey": "bareNet",
|
"ctxKey": "bareNet",
|
||||||
"package": "bare-net",
|
"package": "bare-net",
|
||||||
"path": "/lib/bare/bundles/bareNet.js",
|
"path": "/lib/bare/bundles/bareNet.js",
|
||||||
"bytes": 146828
|
"bytes": 147198
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareNodeFetch",
|
"ctxKey": "bareNodeFetch",
|
||||||
@@ -404,7 +404,7 @@
|
|||||||
"ctxKey": "bareNodeRuntime",
|
"ctxKey": "bareNodeRuntime",
|
||||||
"package": "bare-node-runtime/global",
|
"package": "bare-node-runtime/global",
|
||||||
"path": "/lib/bare/bundles/bareNodeRuntime.js",
|
"path": "/lib/bare/bundles/bareNodeRuntime.js",
|
||||||
"bytes": 585428
|
"bytes": 585798
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareOpen",
|
"ctxKey": "bareOpen",
|
||||||
@@ -422,13 +422,13 @@
|
|||||||
"ctxKey": "barePack",
|
"ctxKey": "barePack",
|
||||||
"package": "bare-pack",
|
"package": "bare-pack",
|
||||||
"path": "/lib/bare/bundles/barePack.js",
|
"path": "/lib/bare/bundles/barePack.js",
|
||||||
"bytes": 105577
|
"bytes": 319079
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "barePackDrive",
|
"ctxKey": "barePackDrive",
|
||||||
"package": "bare-pack-drive",
|
"package": "bare-pack-drive",
|
||||||
"path": "/lib/bare/bundles/barePackDrive.js",
|
"path": "/lib/bare/bundles/barePackDrive.js",
|
||||||
"bytes": 106717
|
"bytes": 320219
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "barePath",
|
"ctxKey": "barePath",
|
||||||
@@ -446,7 +446,7 @@
|
|||||||
"ctxKey": "barePipe",
|
"ctxKey": "barePipe",
|
||||||
"package": "bare-pipe",
|
"package": "bare-pipe",
|
||||||
"path": "/lib/bare/bundles/barePipe.js",
|
"path": "/lib/bare/bundles/barePipe.js",
|
||||||
"bytes": 112762
|
"bytes": 113040
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "barePng",
|
"ctxKey": "barePng",
|
||||||
@@ -458,19 +458,19 @@
|
|||||||
"ctxKey": "barePrebuild",
|
"ctxKey": "barePrebuild",
|
||||||
"package": "bare-prebuild",
|
"package": "bare-prebuild",
|
||||||
"path": "/lib/bare/bundles/barePrebuild.js",
|
"path": "/lib/bare/bundles/barePrebuild.js",
|
||||||
"bytes": 66387
|
"bytes": 274698
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareProcess",
|
"ctxKey": "bareProcess",
|
||||||
"package": "bare-process",
|
"package": "bare-process",
|
||||||
"path": "/lib/bare/bundles/bareProcess.js",
|
"path": "/lib/bare/bundles/bareProcess.js",
|
||||||
"bytes": 250172
|
"bytes": 250450
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "barePromClient",
|
"ctxKey": "barePromClient",
|
||||||
"package": "bare-prom-client",
|
"package": "bare-prom-client",
|
||||||
"path": "/lib/bare/bundles/barePromClient.js",
|
"path": "/lib/bare/bundles/barePromClient.js",
|
||||||
"bytes": 170295
|
"bytes": 383795
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "barePunycode",
|
"ctxKey": "barePunycode",
|
||||||
@@ -494,7 +494,7 @@
|
|||||||
"ctxKey": "bareReadline",
|
"ctxKey": "bareReadline",
|
||||||
"package": "bare-readline",
|
"package": "bare-readline",
|
||||||
"path": "/lib/bare/bundles/bareReadline.js",
|
"path": "/lib/bare/bundles/bareReadline.js",
|
||||||
"bytes": 111189
|
"bytes": 121848
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareRealm",
|
"ctxKey": "bareRealm",
|
||||||
@@ -506,19 +506,19 @@
|
|||||||
"ctxKey": "bareRepl",
|
"ctxKey": "bareRepl",
|
||||||
"package": "bare-repl",
|
"package": "bare-repl",
|
||||||
"path": "/lib/bare/bundles/bareRepl.js",
|
"path": "/lib/bare/bundles/bareRepl.js",
|
||||||
"bytes": 341695
|
"bytes": 409939
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareRpc",
|
"ctxKey": "bareRpc",
|
||||||
"package": "bare-rpc",
|
"package": "bare-rpc",
|
||||||
"path": "/lib/bare/bundles/bareRpc.js",
|
"path": "/lib/bare/bundles/bareRpc.js",
|
||||||
"bytes": 156194
|
"bytes": 166855
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareRun",
|
"ctxKey": "bareRun",
|
||||||
"package": "bare-run",
|
"package": "bare-run",
|
||||||
"path": "/lib/bare/bundles/bareRun.js",
|
"path": "/lib/bare/bundles/bareRun.js",
|
||||||
"bytes": 258251
|
"bytes": 512163
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareRuntime",
|
"ctxKey": "bareRuntime",
|
||||||
@@ -542,7 +542,7 @@
|
|||||||
"ctxKey": "bareSidecar",
|
"ctxKey": "bareSidecar",
|
||||||
"package": "bare-sidecar",
|
"package": "bare-sidecar",
|
||||||
"path": "/lib/bare/bundles/bareSidecar.js",
|
"path": "/lib/bare/bundles/bareSidecar.js",
|
||||||
"bytes": 43058
|
"bytes": 256567
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareSignals",
|
"ctxKey": "bareSignals",
|
||||||
@@ -554,19 +554,19 @@
|
|||||||
"ctxKey": "bareStdio",
|
"ctxKey": "bareStdio",
|
||||||
"package": "bare-stdio",
|
"package": "bare-stdio",
|
||||||
"path": "/lib/bare/bundles/bareStdio.js",
|
"path": "/lib/bare/bundles/bareStdio.js",
|
||||||
"bytes": 243869
|
"bytes": 244147
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareStorage",
|
"ctxKey": "bareStorage",
|
||||||
"package": "bare-storage",
|
"package": "bare-storage",
|
||||||
"path": "/lib/bare/bundles/bareStorage.js",
|
"path": "/lib/bare/bundles/bareStorage.js",
|
||||||
"bytes": 58827
|
"bytes": 272346
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareStream",
|
"ctxKey": "bareStream",
|
||||||
"package": "bare-stream",
|
"package": "bare-stream",
|
||||||
"path": "/lib/bare/bundles/bareStream.js",
|
"path": "/lib/bare/bundles/bareStream.js",
|
||||||
"bytes": 87143
|
"bytes": 97802
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareStringDecoder",
|
"ctxKey": "bareStringDecoder",
|
||||||
@@ -584,7 +584,7 @@
|
|||||||
"ctxKey": "bareSubprocess",
|
"ctxKey": "bareSubprocess",
|
||||||
"package": "bare-subprocess",
|
"package": "bare-subprocess",
|
||||||
"path": "/lib/bare/bundles/bareSubprocess.js",
|
"path": "/lib/bare/bundles/bareSubprocess.js",
|
||||||
"bytes": 175091
|
"bytes": 175369
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareSvg",
|
"ctxKey": "bareSvg",
|
||||||
@@ -608,13 +608,13 @@
|
|||||||
"ctxKey": "bareTcp",
|
"ctxKey": "bareTcp",
|
||||||
"package": "bare-tcp",
|
"package": "bare-tcp",
|
||||||
"path": "/lib/bare/bundles/bareTcp.js",
|
"path": "/lib/bare/bundles/bareTcp.js",
|
||||||
"bytes": 121084
|
"bytes": 121362
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareThread",
|
"ctxKey": "bareThread",
|
||||||
"package": "bare-thread",
|
"package": "bare-thread",
|
||||||
"path": "/lib/bare/bundles/bareThread.js",
|
"path": "/lib/bare/bundles/bareThread.js",
|
||||||
"bytes": 102120
|
"bytes": 315623
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareTiff",
|
"ctxKey": "bareTiff",
|
||||||
@@ -632,7 +632,7 @@
|
|||||||
"ctxKey": "bareTls",
|
"ctxKey": "bareTls",
|
||||||
"package": "bare-tls",
|
"package": "bare-tls",
|
||||||
"path": "/lib/bare/bundles/bareTls.js",
|
"path": "/lib/bare/bundles/bareTls.js",
|
||||||
"bytes": 158323
|
"bytes": 158693
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareTpl",
|
"ctxKey": "bareTpl",
|
||||||
@@ -644,7 +644,7 @@
|
|||||||
"ctxKey": "bareTty",
|
"ctxKey": "bareTty",
|
||||||
"package": "bare-tty",
|
"package": "bare-tty",
|
||||||
"path": "/lib/bare/bundles/bareTty.js",
|
"path": "/lib/bare/bundles/bareTty.js",
|
||||||
"bytes": 114177
|
"bytes": 114455
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareType",
|
"ctxKey": "bareType",
|
||||||
@@ -662,7 +662,7 @@
|
|||||||
"ctxKey": "bareUnionBundle",
|
"ctxKey": "bareUnionBundle",
|
||||||
"package": "bare-union-bundle",
|
"package": "bare-union-bundle",
|
||||||
"path": "/lib/bare/bundles/bareUnionBundle.js",
|
"path": "/lib/bare/bundles/bareUnionBundle.js",
|
||||||
"bytes": 200405
|
"bytes": 358765
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareUnpack",
|
"ctxKey": "bareUnpack",
|
||||||
@@ -680,7 +680,7 @@
|
|||||||
"ctxKey": "bareUtils",
|
"ctxKey": "bareUtils",
|
||||||
"package": "bare-utils",
|
"package": "bare-utils",
|
||||||
"path": "/lib/bare/bundles/bareUtils.js",
|
"path": "/lib/bare/bundles/bareUtils.js",
|
||||||
"bytes": 306604
|
"bytes": 306882
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareV8",
|
"ctxKey": "bareV8",
|
||||||
@@ -692,7 +692,7 @@
|
|||||||
"ctxKey": "bareV8ToIstanbul",
|
"ctxKey": "bareV8ToIstanbul",
|
||||||
"package": "bare-v8-to-istanbul",
|
"package": "bare-v8-to-istanbul",
|
||||||
"path": "/lib/bare/bundles/bareV8ToIstanbul.js",
|
"path": "/lib/bare/bundles/bareV8ToIstanbul.js",
|
||||||
"bytes": 332461
|
"bytes": 373441
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareVm",
|
"ctxKey": "bareVm",
|
||||||
@@ -728,7 +728,7 @@
|
|||||||
"ctxKey": "bareWhich",
|
"ctxKey": "bareWhich",
|
||||||
"package": "bare-which",
|
"package": "bare-which",
|
||||||
"path": "/lib/bare/bundles/bareWhich.js",
|
"path": "/lib/bare/bundles/bareWhich.js",
|
||||||
"bytes": 9478
|
"bytes": 222962
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareWinUi",
|
"ctxKey": "bareWinUi",
|
||||||
@@ -740,13 +740,13 @@
|
|||||||
"ctxKey": "bareWorker",
|
"ctxKey": "bareWorker",
|
||||||
"package": "bare-worker",
|
"package": "bare-worker",
|
||||||
"path": "/lib/bare/bundles/bareWorker.js",
|
"path": "/lib/bare/bundles/bareWorker.js",
|
||||||
"bytes": 396379
|
"bytes": 464621
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareWs",
|
"ctxKey": "bareWs",
|
||||||
"package": "bare-ws",
|
"package": "bare-ws",
|
||||||
"path": "/lib/bare/bundles/bareWs.js",
|
"path": "/lib/bare/bundles/bareWs.js",
|
||||||
"bytes": 336874
|
"bytes": 337244
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareXdiff",
|
"ctxKey": "bareXdiff",
|
||||||
@@ -758,13 +758,13 @@
|
|||||||
"ctxKey": "bareZlib",
|
"ctxKey": "bareZlib",
|
||||||
"package": "bare-zlib",
|
"package": "bare-zlib",
|
||||||
"path": "/lib/bare/bundles/bareZlib.js",
|
"path": "/lib/bare/bundles/bareZlib.js",
|
||||||
"bytes": 97965
|
"bytes": 109004
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "bareZmq",
|
"ctxKey": "bareZmq",
|
||||||
"package": "bare-zmq",
|
"package": "bare-zmq",
|
||||||
"path": "/lib/bare/bundles/bareZmq.js",
|
"path": "/lib/bare/bundles/bareZmq.js",
|
||||||
"bytes": 109332
|
"bytes": 109610
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "compactEncoding",
|
"ctxKey": "compactEncoding",
|
||||||
@@ -776,7 +776,13 @@
|
|||||||
"ctxKey": "fetch",
|
"ctxKey": "fetch",
|
||||||
"package": "bare-fetch",
|
"package": "bare-fetch",
|
||||||
"path": "/lib/bare/bundles/fetch.js",
|
"path": "/lib/bare/bundles/fetch.js",
|
||||||
"bytes": 344639
|
"bytes": 345012
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ctxKey": "holesail",
|
||||||
|
"package": "holesail",
|
||||||
|
"path": "/lib/bare/bundles/holesail.js",
|
||||||
|
"bytes": 1013403
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ctxKey": "hypercoreIdEncoding",
|
"ctxKey": "hypercoreIdEncoding",
|
||||||
@@ -798,8 +804,8 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"bundleStats": {
|
"bundleStats": {
|
||||||
"ok": 132,
|
"ok": 133,
|
||||||
"failed": 0,
|
"failed": 0,
|
||||||
"attempted": 132
|
"attempted": 133
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -220,6 +220,21 @@ Disable the unit for the next boot with **`~/.config/bare-os/initd/disabled.txt`
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## bare-holesail (Holesail P2P proxy)
|
||||||
|
|
||||||
|
**`bare-holesail.js`** wires the upstream **`holesail`** package (**AGPL-3.0**) using **only** its public class API (no direct Hyperswarm / HyperDHT usage in this integration). Under **`pear run`**, the booter cannot bare-**`import('holesail')`** from **`pear:`** modules, so **`bare-holesail`** resolves the class from **`ctx.bare.holesail`** when the drive merge succeeded, else **`import.meta.resolve('holesail')`**, else a one-off eval of **`/lib/bare/bundles/holesail.js`** via **`ctx.vfs`** (same IIFE semantics as **`maybeMergeBareFromDrive`**).
|
||||||
|
|
||||||
|
- **Initd unit `bare-holesail`** — **On by default** ( **`BARE_OS_HOLESAIL_INITD=1`** and **`BARE_OS_HOLESAIL_MANAGED=1`** in stock **`shellEnv`** unless the host sets them empty or to **`0`/`false`**). Disable for a session with **`BARE_OS_HOLESAIL_INITD=0`** or **`systemctl disable bare-holesail`** ( **`~/.config/bare-os/initd/disabled.txt`**). Either **managed multi-tunnel** or **single env tunnel**:
|
||||||
|
- **Managed (persisted list)** — Stock default (**`BARE_OS_HOLESAIL_MANAGED=1`**). Tunnel definitions live in **`BARE_OS_HOLESAIL_STATE`** (default **`~/.holesail/state.json`**, under the session **`$HOME`** on the personal drive). On unit start, every **enabled** entry gets its own **`holesail`** instance. Use guest **`/bin/holesail`** ( **`ctx.bareOsRunHolesailCli`**) to **`list`**, **`add`**, **`remove`**, **`start`**, **`stop`**, **`enable`**, **`disable`**, **`restart`**.
|
||||||
|
- **Single tunnel** — Set **`BARE_OS_HOLESAIL_MANAGED=0`**, then exactly one of **`BARE_OS_HOLESAIL_SERVER=1`** or **`BARE_OS_HOLESAIL_CLIENT=1`**, **`BARE_OS_HOLESAIL_KEY=…`** when in client mode, and optional **`BARE_OS_HOLESAIL_SECURE`**, **`BARE_OS_HOLESAIL_PORT`**, **`BARE_OS_HOLESAIL_HOST`**, **`BARE_OS_HOLESAIL_UDP`**, **`BARE_OS_HOLESAIL_LOG`**.
|
||||||
|
Starts after **`kernel-logger`** by default. Logs: **`/var/log/bare-os/holesail.log`**. Example drop-in: **`/etc/bare-os/units/bare-holesail.unit.example`** on the system image.
|
||||||
|
- **Early booter (“kernel-path”) instance** — Separate optional instance started **after** the **`repl`** boot phase and **before** **`startBareInitd`**. Enable with **`BARE_OS_HOLESAIL_KERNEL=1`** and the **`BARE_OS_HOLESAIL_KERNEL_*`** mirror of the options above (e.g. **`BARE_OS_HOLESAIL_KERNEL_SERVER=1`**). Uses **`registerKernelShutdownHook`** for teardown. **`hs.pause()` / `hs.resume()`** run on mobile suspend/resume hooks alongside other subsystems.
|
||||||
|
- **Guest scripts** — Use **`ctx.bare.holesail`** (bundled under **`/lib/bare/bundles/holesail.js`**), not **`require('holesail')`**, because **`/bin`** and **`/boot/init.js`** are not Node modules. **`/bin/holesail`** is the operator CLI for persisted tunnels (see managed mode above). See **`kernel/etc/bare-os/kernel.d/.README`**.
|
||||||
|
|
||||||
|
Set **`BARE_OS_HOLESAIL_DEBUG=1`** for extra console lines (URLs only; keys are not logged in full).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Shell session, controlling TTY sketch, and job-control gaps
|
## Shell session, controlling TTY sketch, and job-control gaps
|
||||||
|
|
||||||
The interactive shell keeps **`ctx.shellSessionState`**: **`sid`** (session id), **`nextPgid`** (for **`&` background jobs**), **`foregroundPgid`** (set to a job’s **`pgid`** while **`fg`** awaits that job, otherwise reset toward **`sid`** after each foreground line), and **`controllingTty`** (**`/dev/console`** or **`ipc:<session-fifo>`** when **`BARE_OS_SESSION_FIFO`** / **`BARE_OS_IPC_SESSION_FIFO`** is set). Background jobs record **`sid`** / **`pgid`** in **`ctx.shellBackgroundJobs`** for **`jobs`** output. **Cooperative logical job control:** **`suspend-job`** sets **`stopped`** and the background runner yields between statements until **`fg`** or **`bg`** clears it; there is still no **`tcsetpgrp`** and no host **`SIGTSTP`/`SIGCONT`**. Host **SIGINT** may arrive as **`bare-os:host-sigint`** (via optional **`bare-signals`** or **`process.on('SIGINT')`**) for cooperative cancellation; **`ctx.bareOsSendSignal`** also records **PIPE** / **CHLD** / **USR1** / **USR2** on synthetic PIDs without ending the session.
|
The interactive shell keeps **`ctx.shellSessionState`**: **`sid`** (session id), **`nextPgid`** (for **`&` background jobs**), **`foregroundPgid`** (set to a job’s **`pgid`** while **`fg`** awaits that job, otherwise reset toward **`sid`** after each foreground line), and **`controllingTty`** (**`/dev/console`** or **`ipc:<session-fifo>`** when **`BARE_OS_SESSION_FIFO`** / **`BARE_OS_IPC_SESSION_FIFO`** is set). Background jobs record **`sid`** / **`pgid`** in **`ctx.shellBackgroundJobs`** for **`jobs`** output. **Cooperative logical job control:** **`suspend-job`** sets **`stopped`** and the background runner yields between statements until **`fg`** or **`bg`** clears it; there is still no **`tcsetpgrp`** and no host **`SIGTSTP`/`SIGCONT`**. Host **SIGINT** may arrive as **`bare-os:host-sigint`** (via optional **`bare-signals`** or **`process.on('SIGINT')`**) for cooperative cancellation; **`ctx.bareOsSendSignal`** also records **PIPE** / **CHLD** / **USR1** / **USR2** on synthetic PIDs without ending the session.
|
||||||
|
|||||||
+37
-9
@@ -247,6 +247,7 @@ function bareEditCsiToEvent(seq) {
|
|||||||
}
|
}
|
||||||
return { type: 'unknown' }
|
return { type: 'unknown' }
|
||||||
}
|
}
|
||||||
|
if (last === 'Z') return { type: 'nav', key: 'stab' }
|
||||||
if (last === 'A' || last === 'B' || last === 'C' || last === 'D') {
|
if (last === 'A' || last === 'B' || last === 'C' || last === 'D') {
|
||||||
const map = { A: 'up', B: 'down', C: 'right', D: 'left' }
|
const map = { A: 'up', B: 'down', C: 'right', D: 'left' }
|
||||||
return { type: 'nav', key: map[last] }
|
return { type: 'nav', key: map[last] }
|
||||||
@@ -3684,7 +3685,9 @@ function bareTopTryConsumeMouse(q) {
|
|||||||
* keyQuit?: string,
|
* keyQuit?: string,
|
||||||
* keyRefresh?: string,
|
* keyRefresh?: string,
|
||||||
* tab?: number,
|
* tab?: number,
|
||||||
* overviewJumpPick?: boolean
|
* overviewJumpPick?: boolean,
|
||||||
|
* tabCpuIdx?: number,
|
||||||
|
* tabMemIdx?: number
|
||||||
* }} o
|
* }} o
|
||||||
*/
|
*/
|
||||||
function bareTopDrainKeys(q, max, o) {
|
function bareTopDrainKeys(q, max, o) {
|
||||||
@@ -3733,11 +3736,14 @@ function bareTopDrainKeys(q, max, o) {
|
|||||||
return { type: 'filter_bs' }
|
return { type: 'filter_bs' }
|
||||||
if (ev.type === 'key' && ev.ch === '\n')
|
if (ev.type === 'key' && ev.ch === '\n')
|
||||||
return o.inFilter ? { type: 'filter_enter' } : { type: 'enter' }
|
return o.inFilter ? { type: 'filter_enter' } : { type: 'enter' }
|
||||||
|
if (ev.type === 'key' && ev.ch === '\t')
|
||||||
|
return o.inFilter ? { type: 'filter_char', ch: '\t' } : { type: 'tab_next' }
|
||||||
if (ev.type === 'nav') {
|
if (ev.type === 'nav') {
|
||||||
if (o.helpPaging) {
|
if (o.helpPaging) {
|
||||||
if (ev.key === 'pageup') return { type: 'help_page', dir: -1 }
|
if (ev.key === 'pageup') return { type: 'help_page', dir: -1 }
|
||||||
if (ev.key === 'pagedown') return { type: 'help_page', dir: 1 }
|
if (ev.key === 'pagedown') return { type: 'help_page', dir: 1 }
|
||||||
}
|
}
|
||||||
|
if (ev.key === 'stab' && !o.inFilter) return { type: 'tab_prev' }
|
||||||
if (ev.key === 'pageup') return { type: 'scroll', dir: -1, amt: 5 }
|
if (ev.key === 'pageup') return { type: 'scroll', dir: -1, amt: 5 }
|
||||||
if (ev.key === 'pagedown') return { type: 'scroll', dir: 1, amt: 5 }
|
if (ev.key === 'pagedown') return { type: 'scroll', dir: 1, amt: 5 }
|
||||||
if (ev.key === 'home') return { type: 'scroll', dir: 'home' }
|
if (ev.key === 'home') return { type: 'scroll', dir: 'home' }
|
||||||
@@ -3798,6 +3804,16 @@ function bareTopDrainKeys(q, max, o) {
|
|||||||
!o.inFilter
|
!o.inFilter
|
||||||
)
|
)
|
||||||
return { type: 'overview_jump_arm' }
|
return { type: 'overview_jump_arm' }
|
||||||
|
{
|
||||||
|
const tCpu =
|
||||||
|
typeof o.tabCpuIdx === 'number' ? o.tabCpuIdx : -1
|
||||||
|
const tMem =
|
||||||
|
typeof o.tabMemIdx === 'number' ? o.tabMemIdx : -1
|
||||||
|
if (!o.inFilter && ch === 'C' && tCpu >= 0)
|
||||||
|
return { type: 'tab', n: tCpu }
|
||||||
|
if (!o.inFilter && ch === 'M' && tMem >= 0)
|
||||||
|
return { type: 'tab', n: tMem }
|
||||||
|
}
|
||||||
if (ch >= '1' && ch <= '9') return { type: 'tab', n: ch.charCodeAt(0) - 0x31 }
|
if (ch >= '1' && ch <= '9') return { type: 'tab', n: ch.charCodeAt(0) - 0x31 }
|
||||||
if (ch === '0') return { type: 'tab', n: -1 }
|
if (ch === '0') return { type: 'tab', n: -1 }
|
||||||
if (ch.length === 1 && ch >= ' ' && ch.charCodeAt(0) > 32)
|
if (ch.length === 1 && ch >= ' ' && ch.charCodeAt(0) > 32)
|
||||||
@@ -5025,8 +5041,9 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
'\r\n' +
|
'\r\n' +
|
||||||
' arrows Move list / process selection (Up/Down; PgUp/Dn page)\r\n' +
|
' arrows Move list / process selection (Up/Down; PgUp/Dn page)\r\n' +
|
||||||
' g G Jump list top / bottom\r\n' +
|
' g G Jump list top / bottom\r\n' +
|
||||||
|
' Tab Next tab Shift+Tab Prev tab\r\n' +
|
||||||
' [ ] Prev / next tab\r\n' +
|
' [ ] Prev / next tab\r\n' +
|
||||||
' 1-9 Jump first tabs; 0 = last tab (disk)\r\n' +
|
' 1-9 Jump tabs 1–9; 0 = disk; C / M Cpu / Mem tabs\r\n' +
|
||||||
' Esc Close help or cancel filter\r\n' +
|
' Esc Close help or cancel filter\r\n' +
|
||||||
'\r\n' +
|
'\r\n' +
|
||||||
dim +
|
dim +
|
||||||
@@ -5034,7 +5051,7 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
rst +
|
rst +
|
||||||
'\r\n' +
|
'\r\n' +
|
||||||
' 1 overview 2 processes 3 initd 4 network 5 features 6 diagnostics\r\n' +
|
' 1 overview 2 processes 3 initd 4 network 5 features 6 diagnostics\r\n' +
|
||||||
' 7 operator 8 pear 9 catalog [ ] host C/M/D cpu mem disk 0 disk\r\n' +
|
' 7 operator 8 pear 9 catalog H host C M cpu mem 0 disk\r\n' +
|
||||||
'\r\n' +
|
'\r\n' +
|
||||||
dim +
|
dim +
|
||||||
'Actions (1/2)' +
|
'Actions (1/2)' +
|
||||||
@@ -5404,6 +5421,8 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
else lab = nm.charAt(0).toUpperCase()
|
else lab = nm.charAt(0).toUpperCase()
|
||||||
} else if (ti === NTABS - 1) lab = '0:' + nm.slice(0, 2)
|
} else if (ti === NTABS - 1) lab = '0:' + nm.slice(0, 2)
|
||||||
else if (ti === T_HOST) lab = 'H:' + nm.slice(0, 2)
|
else if (ti === T_HOST) lab = 'H:' + nm.slice(0, 2)
|
||||||
|
else if (ti === T_CPU) lab = 'C:' + nm.slice(0, 2)
|
||||||
|
else if (ti === T_MEM) lab = 'M:' + nm.slice(0, 2)
|
||||||
else lab = String(ti + 1) + ':' + nm.slice(0, 3)
|
else lab = String(ti + 1) + ':' + nm.slice(0, 3)
|
||||||
const on = ti === tab
|
const on = ti === tab
|
||||||
stripParts.push(
|
stripParts.push(
|
||||||
@@ -6559,9 +6578,10 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
const footProc =
|
const footProc =
|
||||||
'^v sel F6/S sort V tree Enter detail k/F9 / filter gG [ ] tab'
|
'^v sel F6/S sort V tree Enter detail k/F9 / filter gG [ ] tab'
|
||||||
const footOverview =
|
const footOverview =
|
||||||
'PgUp/Dn scroll detail / section filter h help [ ] tab e export'
|
'PgUp/Dn scroll detail / filter h help Tab/[ ] tab C M e export'
|
||||||
const footInitd = 'PgUp/Dn scroll / filter units h help'
|
const footInitd = 'PgUp/Dn scroll / filter units h help'
|
||||||
const footDefault = 'PgUp/Dn scroll [ ] tabs h help e export f full'
|
const footDefault =
|
||||||
|
'PgUp/Dn scroll Tab/[ ] tabs C M cpu/mem h help e export f full'
|
||||||
let footBase = quietFooter
|
let footBase = quietFooter
|
||||||
? tab === 0
|
? tab === 0
|
||||||
? 'ov'
|
? 'ov'
|
||||||
@@ -6977,6 +6997,8 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
vi: viKeys,
|
vi: viKeys,
|
||||||
inFilter: false,
|
inFilter: false,
|
||||||
tab,
|
tab,
|
||||||
|
tabCpuIdx: TAB_NAMES.indexOf('cpu'),
|
||||||
|
tabMemIdx: TAB_NAMES.indexOf('mem'),
|
||||||
mouseEnabled:
|
mouseEnabled:
|
||||||
mouseOn &&
|
mouseOn &&
|
||||||
!helpMode &&
|
!helpMode &&
|
||||||
@@ -7044,9 +7066,15 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((mx.btn === 64 || mx.btn === 65) && !mx.release) {
|
if ((mx.btn === 64 || mx.btn === 65) && !mx.release) {
|
||||||
const sr = scrollRows[tab] || 0
|
|
||||||
const dir = mx.btn === 64 ? -1 : 1
|
const dir = mx.btn === 64 ? -1 : 1
|
||||||
scrollRows[tab] = Math.max(0, sr + dir * 3)
|
if (tab === TAB_PROC && !procDetailPid) {
|
||||||
|
const pl = currentProcRows()
|
||||||
|
const maxI = Math.max(0, pl.length - 1)
|
||||||
|
procCursor = Math.max(0, Math.min(maxI, procCursor + dir * 3))
|
||||||
|
} else {
|
||||||
|
const sr = scrollRows[tab] || 0
|
||||||
|
scrollRows[tab] = Math.max(0, sr + dir * 3)
|
||||||
|
}
|
||||||
draw()
|
draw()
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
@@ -7583,7 +7611,7 @@ async function run(ctx, argv) {
|
|||||||
'and optional ctx fast paths. Requires a TTY.\n' +
|
'and optional ctx fast paths. Requires a TTY.\n' +
|
||||||
'\n' +
|
'\n' +
|
||||||
'Tabs (default): 1 overview 2 processes 3 initd 4 network 5 features 6 diagnostics\n' +
|
'Tabs (default): 1 overview 2 processes 3 initd 4 network 5 features 6 diagnostics\n' +
|
||||||
' 7 operator 8 pear 9 catalog H:host C/M/D cpu mem disk 0 last tab (disk)\n' +
|
' 7 operator 8 pear 9 catalog H host C cpu M mem 0 disk Tab next tab Shift+Tab prev\n' +
|
||||||
' BARE_TOP_TAB_MERGE=netop drops the operator tab (operator lines fold into network).\n' +
|
' BARE_TOP_TAB_MERGE=netop drops the operator tab (operator lines fold into network).\n' +
|
||||||
' F1 help F2 setup F3/F4 proc row F5 refresh F7 renice F9 signal F10 quit\n' +
|
' F1 help F2 setup F3/F4 proc row F5 refresh F7 renice F9 signal F10 quit\n' +
|
||||||
'\n' +
|
'\n' +
|
||||||
@@ -7638,7 +7666,7 @@ async function run(ctx, argv) {
|
|||||||
' NO_COLOR / COLORTERM See https://no-color.org/ ; truecolor gated on COLORTERM\n' +
|
' NO_COLOR / COLORTERM See https://no-color.org/ ; truecolor gated on COLORTERM\n' +
|
||||||
'\n' +
|
'\n' +
|
||||||
'Keys: q F10 quit r F5 refresh R sort +/- sp pause . step d delta e export E tab export\n' +
|
'Keys: q F10 quit r F5 refresh R sort +/- sp pause . step d delta e export E tab export\n' +
|
||||||
' f fullscreen F follow pid t clock [ ] tab prev/next h ? F1 help F2 setup\n' +
|
' f fullscreen F follow pid t clock Tab/[ ] tab next/prev h ? F1 help F2 setup\n' +
|
||||||
' / filter (overview, initd, processes, features) V tree z collapse a action k F9 signal\n' +
|
' / filter (overview, initd, processes, features) V tree z collapse a action k F9 signal\n' +
|
||||||
' n F7 renice c copy pid = tag % tagged-only i o e detail subviews\n' +
|
' n F7 renice c copy pid = tag % tagged-only i o e detail subviews\n' +
|
||||||
" ' then 1-9,0 Jump to Nth overview section (on overview tab)\n" +
|
" ' then 1-9,0 Jump to Nth overview section (on overview tab)\n" +
|
||||||
|
|||||||
+37
-9
@@ -247,6 +247,7 @@ function bareEditCsiToEvent(seq) {
|
|||||||
}
|
}
|
||||||
return { type: 'unknown' }
|
return { type: 'unknown' }
|
||||||
}
|
}
|
||||||
|
if (last === 'Z') return { type: 'nav', key: 'stab' }
|
||||||
if (last === 'A' || last === 'B' || last === 'C' || last === 'D') {
|
if (last === 'A' || last === 'B' || last === 'C' || last === 'D') {
|
||||||
const map = { A: 'up', B: 'down', C: 'right', D: 'left' }
|
const map = { A: 'up', B: 'down', C: 'right', D: 'left' }
|
||||||
return { type: 'nav', key: map[last] }
|
return { type: 'nav', key: map[last] }
|
||||||
@@ -3684,7 +3685,9 @@ function bareTopTryConsumeMouse(q) {
|
|||||||
* keyQuit?: string,
|
* keyQuit?: string,
|
||||||
* keyRefresh?: string,
|
* keyRefresh?: string,
|
||||||
* tab?: number,
|
* tab?: number,
|
||||||
* overviewJumpPick?: boolean
|
* overviewJumpPick?: boolean,
|
||||||
|
* tabCpuIdx?: number,
|
||||||
|
* tabMemIdx?: number
|
||||||
* }} o
|
* }} o
|
||||||
*/
|
*/
|
||||||
function bareTopDrainKeys(q, max, o) {
|
function bareTopDrainKeys(q, max, o) {
|
||||||
@@ -3733,11 +3736,14 @@ function bareTopDrainKeys(q, max, o) {
|
|||||||
return { type: 'filter_bs' }
|
return { type: 'filter_bs' }
|
||||||
if (ev.type === 'key' && ev.ch === '\n')
|
if (ev.type === 'key' && ev.ch === '\n')
|
||||||
return o.inFilter ? { type: 'filter_enter' } : { type: 'enter' }
|
return o.inFilter ? { type: 'filter_enter' } : { type: 'enter' }
|
||||||
|
if (ev.type === 'key' && ev.ch === '\t')
|
||||||
|
return o.inFilter ? { type: 'filter_char', ch: '\t' } : { type: 'tab_next' }
|
||||||
if (ev.type === 'nav') {
|
if (ev.type === 'nav') {
|
||||||
if (o.helpPaging) {
|
if (o.helpPaging) {
|
||||||
if (ev.key === 'pageup') return { type: 'help_page', dir: -1 }
|
if (ev.key === 'pageup') return { type: 'help_page', dir: -1 }
|
||||||
if (ev.key === 'pagedown') return { type: 'help_page', dir: 1 }
|
if (ev.key === 'pagedown') return { type: 'help_page', dir: 1 }
|
||||||
}
|
}
|
||||||
|
if (ev.key === 'stab' && !o.inFilter) return { type: 'tab_prev' }
|
||||||
if (ev.key === 'pageup') return { type: 'scroll', dir: -1, amt: 5 }
|
if (ev.key === 'pageup') return { type: 'scroll', dir: -1, amt: 5 }
|
||||||
if (ev.key === 'pagedown') return { type: 'scroll', dir: 1, amt: 5 }
|
if (ev.key === 'pagedown') return { type: 'scroll', dir: 1, amt: 5 }
|
||||||
if (ev.key === 'home') return { type: 'scroll', dir: 'home' }
|
if (ev.key === 'home') return { type: 'scroll', dir: 'home' }
|
||||||
@@ -3798,6 +3804,16 @@ function bareTopDrainKeys(q, max, o) {
|
|||||||
!o.inFilter
|
!o.inFilter
|
||||||
)
|
)
|
||||||
return { type: 'overview_jump_arm' }
|
return { type: 'overview_jump_arm' }
|
||||||
|
{
|
||||||
|
const tCpu =
|
||||||
|
typeof o.tabCpuIdx === 'number' ? o.tabCpuIdx : -1
|
||||||
|
const tMem =
|
||||||
|
typeof o.tabMemIdx === 'number' ? o.tabMemIdx : -1
|
||||||
|
if (!o.inFilter && ch === 'C' && tCpu >= 0)
|
||||||
|
return { type: 'tab', n: tCpu }
|
||||||
|
if (!o.inFilter && ch === 'M' && tMem >= 0)
|
||||||
|
return { type: 'tab', n: tMem }
|
||||||
|
}
|
||||||
if (ch >= '1' && ch <= '9') return { type: 'tab', n: ch.charCodeAt(0) - 0x31 }
|
if (ch >= '1' && ch <= '9') return { type: 'tab', n: ch.charCodeAt(0) - 0x31 }
|
||||||
if (ch === '0') return { type: 'tab', n: -1 }
|
if (ch === '0') return { type: 'tab', n: -1 }
|
||||||
if (ch.length === 1 && ch >= ' ' && ch.charCodeAt(0) > 32)
|
if (ch.length === 1 && ch >= ' ' && ch.charCodeAt(0) > 32)
|
||||||
@@ -5025,8 +5041,9 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
'\r\n' +
|
'\r\n' +
|
||||||
' arrows Move list / process selection (Up/Down; PgUp/Dn page)\r\n' +
|
' arrows Move list / process selection (Up/Down; PgUp/Dn page)\r\n' +
|
||||||
' g G Jump list top / bottom\r\n' +
|
' g G Jump list top / bottom\r\n' +
|
||||||
|
' Tab Next tab Shift+Tab Prev tab\r\n' +
|
||||||
' [ ] Prev / next tab\r\n' +
|
' [ ] Prev / next tab\r\n' +
|
||||||
' 1-9 Jump first tabs; 0 = last tab (disk)\r\n' +
|
' 1-9 Jump tabs 1–9; 0 = disk; C / M Cpu / Mem tabs\r\n' +
|
||||||
' Esc Close help or cancel filter\r\n' +
|
' Esc Close help or cancel filter\r\n' +
|
||||||
'\r\n' +
|
'\r\n' +
|
||||||
dim +
|
dim +
|
||||||
@@ -5034,7 +5051,7 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
rst +
|
rst +
|
||||||
'\r\n' +
|
'\r\n' +
|
||||||
' 1 overview 2 processes 3 initd 4 network 5 features 6 diagnostics\r\n' +
|
' 1 overview 2 processes 3 initd 4 network 5 features 6 diagnostics\r\n' +
|
||||||
' 7 operator 8 pear 9 catalog [ ] host C/M/D cpu mem disk 0 disk\r\n' +
|
' 7 operator 8 pear 9 catalog H host C M cpu mem 0 disk\r\n' +
|
||||||
'\r\n' +
|
'\r\n' +
|
||||||
dim +
|
dim +
|
||||||
'Actions (1/2)' +
|
'Actions (1/2)' +
|
||||||
@@ -5404,6 +5421,8 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
else lab = nm.charAt(0).toUpperCase()
|
else lab = nm.charAt(0).toUpperCase()
|
||||||
} else if (ti === NTABS - 1) lab = '0:' + nm.slice(0, 2)
|
} else if (ti === NTABS - 1) lab = '0:' + nm.slice(0, 2)
|
||||||
else if (ti === T_HOST) lab = 'H:' + nm.slice(0, 2)
|
else if (ti === T_HOST) lab = 'H:' + nm.slice(0, 2)
|
||||||
|
else if (ti === T_CPU) lab = 'C:' + nm.slice(0, 2)
|
||||||
|
else if (ti === T_MEM) lab = 'M:' + nm.slice(0, 2)
|
||||||
else lab = String(ti + 1) + ':' + nm.slice(0, 3)
|
else lab = String(ti + 1) + ':' + nm.slice(0, 3)
|
||||||
const on = ti === tab
|
const on = ti === tab
|
||||||
stripParts.push(
|
stripParts.push(
|
||||||
@@ -6559,9 +6578,10 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
const footProc =
|
const footProc =
|
||||||
'^v sel F6/S sort V tree Enter detail k/F9 / filter gG [ ] tab'
|
'^v sel F6/S sort V tree Enter detail k/F9 / filter gG [ ] tab'
|
||||||
const footOverview =
|
const footOverview =
|
||||||
'PgUp/Dn scroll detail / section filter h help [ ] tab e export'
|
'PgUp/Dn scroll detail / filter h help Tab/[ ] tab C M e export'
|
||||||
const footInitd = 'PgUp/Dn scroll / filter units h help'
|
const footInitd = 'PgUp/Dn scroll / filter units h help'
|
||||||
const footDefault = 'PgUp/Dn scroll [ ] tabs h help e export f full'
|
const footDefault =
|
||||||
|
'PgUp/Dn scroll Tab/[ ] tabs C M cpu/mem h help e export f full'
|
||||||
let footBase = quietFooter
|
let footBase = quietFooter
|
||||||
? tab === 0
|
? tab === 0
|
||||||
? 'ov'
|
? 'ov'
|
||||||
@@ -6977,6 +6997,8 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
vi: viKeys,
|
vi: viKeys,
|
||||||
inFilter: false,
|
inFilter: false,
|
||||||
tab,
|
tab,
|
||||||
|
tabCpuIdx: TAB_NAMES.indexOf('cpu'),
|
||||||
|
tabMemIdx: TAB_NAMES.indexOf('mem'),
|
||||||
mouseEnabled:
|
mouseEnabled:
|
||||||
mouseOn &&
|
mouseOn &&
|
||||||
!helpMode &&
|
!helpMode &&
|
||||||
@@ -7044,9 +7066,15 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((mx.btn === 64 || mx.btn === 65) && !mx.release) {
|
if ((mx.btn === 64 || mx.btn === 65) && !mx.release) {
|
||||||
const sr = scrollRows[tab] || 0
|
|
||||||
const dir = mx.btn === 64 ? -1 : 1
|
const dir = mx.btn === 64 ? -1 : 1
|
||||||
scrollRows[tab] = Math.max(0, sr + dir * 3)
|
if (tab === TAB_PROC && !procDetailPid) {
|
||||||
|
const pl = currentProcRows()
|
||||||
|
const maxI = Math.max(0, pl.length - 1)
|
||||||
|
procCursor = Math.max(0, Math.min(maxI, procCursor + dir * 3))
|
||||||
|
} else {
|
||||||
|
const sr = scrollRows[tab] || 0
|
||||||
|
scrollRows[tab] = Math.max(0, sr + dir * 3)
|
||||||
|
}
|
||||||
draw()
|
draw()
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
@@ -7583,7 +7611,7 @@ async function run(ctx, argv) {
|
|||||||
'and optional ctx fast paths. Requires a TTY.\n' +
|
'and optional ctx fast paths. Requires a TTY.\n' +
|
||||||
'\n' +
|
'\n' +
|
||||||
'Tabs (default): 1 overview 2 processes 3 initd 4 network 5 features 6 diagnostics\n' +
|
'Tabs (default): 1 overview 2 processes 3 initd 4 network 5 features 6 diagnostics\n' +
|
||||||
' 7 operator 8 pear 9 catalog H:host C/M/D cpu mem disk 0 last tab (disk)\n' +
|
' 7 operator 8 pear 9 catalog H host C cpu M mem 0 disk Tab next tab Shift+Tab prev\n' +
|
||||||
' BARE_TOP_TAB_MERGE=netop drops the operator tab (operator lines fold into network).\n' +
|
' BARE_TOP_TAB_MERGE=netop drops the operator tab (operator lines fold into network).\n' +
|
||||||
' F1 help F2 setup F3/F4 proc row F5 refresh F7 renice F9 signal F10 quit\n' +
|
' F1 help F2 setup F3/F4 proc row F5 refresh F7 renice F9 signal F10 quit\n' +
|
||||||
'\n' +
|
'\n' +
|
||||||
@@ -7638,7 +7666,7 @@ async function run(ctx, argv) {
|
|||||||
' NO_COLOR / COLORTERM See https://no-color.org/ ; truecolor gated on COLORTERM\n' +
|
' NO_COLOR / COLORTERM See https://no-color.org/ ; truecolor gated on COLORTERM\n' +
|
||||||
'\n' +
|
'\n' +
|
||||||
'Keys: q F10 quit r F5 refresh R sort +/- sp pause . step d delta e export E tab export\n' +
|
'Keys: q F10 quit r F5 refresh R sort +/- sp pause . step d delta e export E tab export\n' +
|
||||||
' f fullscreen F follow pid t clock [ ] tab prev/next h ? F1 help F2 setup\n' +
|
' f fullscreen F follow pid t clock Tab/[ ] tab next/prev h ? F1 help F2 setup\n' +
|
||||||
' / filter (overview, initd, processes, features) V tree z collapse a action k F9 signal\n' +
|
' / filter (overview, initd, processes, features) V tree z collapse a action k F9 signal\n' +
|
||||||
' n F7 renice c copy pid = tag % tagged-only i o e detail subviews\n' +
|
' n F7 renice c copy pid = tag % tagged-only i o e detail subviews\n' +
|
||||||
" ' then 1-9,0 Jump to Nth overview section (on overview tab)\n" +
|
" ' then 1-9,0 Jump to Nth overview section (on overview tab)\n" +
|
||||||
|
|||||||
@@ -770,6 +770,7 @@ function bareEditCsiToEvent(seq) {
|
|||||||
}
|
}
|
||||||
return { type: 'unknown' }
|
return { type: 'unknown' }
|
||||||
}
|
}
|
||||||
|
if (last === 'Z') return { type: 'nav', key: 'stab' }
|
||||||
if (last === 'A' || last === 'B' || last === 'C' || last === 'D') {
|
if (last === 'A' || last === 'B' || last === 'C' || last === 'D') {
|
||||||
const map = { A: 'up', B: 'down', C: 'right', D: 'left' }
|
const map = { A: 'up', B: 'down', C: 'right', D: 'left' }
|
||||||
return { type: 'nav', key: map[last] }
|
return { type: 'nav', key: map[last] }
|
||||||
|
|||||||
+1
-1
@@ -87,7 +87,7 @@ function bareOsEmitRaw(ctx, chunk) {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
var BARE_OS_HELP_BIN_SPACED = "arch awk baretop base32 base64 basename basenc btop bundlebee cat chgrp chmod chown cksum clear cmp comm cp crontab curl cut date dd df diff dir dircolors dirname du echo edit env exit expand expr factor false find fmt fold getconf getfacl git git-pear grep groups hdms head help hostid hostname hrpc iconv id install join journalctl jq kernel-boot-diff kernel-doctor kernel-explain kernel-fsck kernel-home-snapshot kernel-manifest-validate kernel-preflight kernel-triage kill link ln logger login logname logout ls man md5sum mkdir mkfifo mktemp mount mv nano nice nl nohup nproc numfmt od oidc-publish openssl openssl paste patch pathcap-verify pathchk pear-runtime-matrix pkg-swarm-index pr printenv printf procstat ps pwd readlink realpath rev rm rmdir savevault sed seq setfacl sh sha1sum sha256sum sha512sum shuf sidecar sleep sort split ssh-keygen ssh-keygen sshd sshd stat sum sync systemctl tac tail tar tar tee test theme time timeout touch tr true truncate tsort tty ulimit umount uname unexpand uniq unlink uptime users vdir wc wget which who whoami xargs xattr yes"
|
var BARE_OS_HELP_BIN_SPACED = "arch awk baretop base32 base64 basename basenc btop bundlebee cat chgrp chmod chown cksum clear cmp comm cp crontab curl cut date dd df diff dir dircolors dirname du echo edit env exit expand expr factor false find fmt fold getconf getfacl git git-pear grep groups hdms head help holesail hostid hostname hrpc iconv id install join journalctl jq kernel-boot-diff kernel-doctor kernel-explain kernel-fsck kernel-home-snapshot kernel-manifest-validate kernel-preflight kernel-triage kill link ln logger login logname logout ls man md5sum mkdir mkfifo mktemp mount mv nano nice nl nohup nproc numfmt od oidc-publish openssl openssl paste patch pathcap-verify pathchk pear-runtime-matrix pkg-swarm-index pr printenv printf procstat ps pwd readlink realpath rev rm rmdir savevault sed seq setfacl sh sha1sum sha256sum sha512sum shuf sidecar sleep sort split ssh-keygen ssh-keygen sshd sshd stat sum sync systemctl tac tail tar tar tee test theme time timeout touch tr true truncate tsort tty ulimit umount uname unexpand uniq unlink uptime users vdir wc wget which who whoami xargs xattr yes"
|
||||||
async function run(ctx, argv) {
|
async function run(ctx, argv) {
|
||||||
ctx.console.log(
|
ctx.console.log(
|
||||||
'Bare OS — default user: guest | shell builtins: alias, barerc, cd, command, export, exit, login, logout, readonly, type, umask, unalias, unset, : | /bin: ' +
|
'Bare OS — default user: guest | shell builtins: alias, barerc, cd, command, export, exit, login, logout, readonly, type, umask, unalias, unset, : | /bin: ' +
|
||||||
|
|||||||
@@ -0,0 +1,100 @@
|
|||||||
|
/* BARE_OS_BIN_API 1.0.0 — bump when staged /bin script semantics change (see developer guide). */
|
||||||
|
/** Shared helpers for drive-resident /bin scripts (prepended before each command). */
|
||||||
|
function bareStdin(ctx) {
|
||||||
|
return typeof ctx.shellStdin === 'string' ? ctx.shellStdin : ''
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @param {number} mode @param {'file' | 'directory' | 'symlink'} type */
|
||||||
|
function bareFormatModeString(mode, type) {
|
||||||
|
const typeChar = type === 'directory' ? 'd' : type === 'symlink' ? 'l' : '-'
|
||||||
|
const perm = mode & 0o777
|
||||||
|
const r = (bit) => (perm & bit ? 'r' : '-')
|
||||||
|
const w = (bit) => (perm & bit ? 'w' : '-')
|
||||||
|
const x = (bit) => (perm & bit ? 'x' : '-')
|
||||||
|
return (
|
||||||
|
typeChar +
|
||||||
|
r(0o400) +
|
||||||
|
w(0o200) +
|
||||||
|
x(0o100) +
|
||||||
|
r(0o040) +
|
||||||
|
w(0o020) +
|
||||||
|
x(0o010) +
|
||||||
|
r(0o004) +
|
||||||
|
w(0o002) +
|
||||||
|
x(0o001)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @param {number} mtimeMs @param {number} [nowMs] */
|
||||||
|
function bareFormatLsMtime(mtimeMs, nowMs) {
|
||||||
|
const now = nowMs != null ? nowMs : Date.now()
|
||||||
|
const d = new Date(mtimeMs)
|
||||||
|
const months = [
|
||||||
|
'Jan',
|
||||||
|
'Feb',
|
||||||
|
'Mar',
|
||||||
|
'Apr',
|
||||||
|
'May',
|
||||||
|
'Jun',
|
||||||
|
'Jul',
|
||||||
|
'Aug',
|
||||||
|
'Sep',
|
||||||
|
'Oct',
|
||||||
|
'Nov',
|
||||||
|
'Dec'
|
||||||
|
]
|
||||||
|
const mon = months[d.getMonth()]
|
||||||
|
const day = String(d.getDate()).padStart(2, ' ')
|
||||||
|
const sixMo = 180 * 24 * 3600 * 1000
|
||||||
|
if (Math.abs(now - mtimeMs) > sixMo) {
|
||||||
|
const yr = String(d.getFullYear()).padStart(4, ' ')
|
||||||
|
return mon + ' ' + day + ' ' + yr
|
||||||
|
}
|
||||||
|
const hh = String(d.getHours()).padStart(2, '0')
|
||||||
|
const mm = String(d.getMinutes()).padStart(2, '0')
|
||||||
|
return mon + ' ' + day + ' ' + hh + ':' + mm
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @param {number} size */
|
||||||
|
function barePosixBlocks(size) {
|
||||||
|
return Math.ceil(Number(size) / 512) || 0
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Raw stdout for NUL/binary when **`process.stdout.write`** is missing.
|
||||||
|
* If **`ctx.bareOsBinWrite(Uint8Array|string)`** is set (tests / host), use it.
|
||||||
|
* @param {Record<string, unknown>} ctx
|
||||||
|
* @param {string | Uint8Array} chunk
|
||||||
|
* @returns {boolean}
|
||||||
|
*/
|
||||||
|
function bareOsEmitRaw(ctx, chunk) {
|
||||||
|
if (typeof ctx.bareOsBinWrite === 'function') {
|
||||||
|
const b4 = ctx.b4a
|
||||||
|
const u8 =
|
||||||
|
typeof chunk === 'string'
|
||||||
|
? b4 && typeof b4.from === 'function'
|
||||||
|
? b4.from(chunk)
|
||||||
|
: new TextEncoder().encode(chunk)
|
||||||
|
: chunk
|
||||||
|
ctx.bareOsBinWrite(u8 instanceof Uint8Array ? u8 : new Uint8Array(u8))
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
const w = globalThis.process?.stdout?.write
|
||||||
|
if (typeof w === 'function') {
|
||||||
|
w.call(globalThis.process.stdout, chunk)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
/* BARE_OS_BIN_API 1.0.0 — delegates to booter holesail-cli when ctx exposes bareOsRunHolesailCli. */
|
||||||
|
async function run(ctx, argv) {
|
||||||
|
if (typeof ctx.bareOsRunHolesailCli === 'function') {
|
||||||
|
await ctx.bareOsRunHolesailCli(argv)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ctx.console.error(
|
||||||
|
'holesail: ctx.bareOsRunHolesailCli missing — run under host booter / upgrade ctx API'
|
||||||
|
)
|
||||||
|
ctx.exitCode = 1
|
||||||
|
}
|
||||||
@@ -770,6 +770,7 @@ function bareEditCsiToEvent(seq) {
|
|||||||
}
|
}
|
||||||
return { type: 'unknown' }
|
return { type: 'unknown' }
|
||||||
}
|
}
|
||||||
|
if (last === 'Z') return { type: 'nav', key: 'stab' }
|
||||||
if (last === 'A' || last === 'B' || last === 'C' || last === 'D') {
|
if (last === 'A' || last === 'B' || last === 'C' || last === 'D') {
|
||||||
const map = { A: 'up', B: 'down', C: 'right', D: 'left' }
|
const map = { A: 'up', B: 'down', C: 'right', D: 'left' }
|
||||||
return { type: 'nav', key: map[last] }
|
return { type: 'nav', key: map[last] }
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# Kernel boot snippets (trusted)
|
||||||
|
|
||||||
|
Same execution rules as `../rc.d/.README`: only **digit-prefixed** filenames run, in
|
||||||
|
lexicographic order, after `rc.local` in the stock kernel boot graph.
|
||||||
|
|
||||||
|
## Holesail (bundled `ctx.bare.holesail`)
|
||||||
|
|
||||||
|
Guest `/bin` and `/boot/init.js` scripts are **not** Node modules: use **`ctx.bare.holesail`**
|
||||||
|
(the class from the drive bundle under `/lib/bare/bundles/holesail.js`), not `require('holesail')`.
|
||||||
|
|
||||||
|
Booter-side operators use initd unit **`bare-holesail`** (on by default in managed mode; **`/bin/holesail`**
|
||||||
|
for persisted tunnels), or the early booter path — see
|
||||||
|
`handbook/04-the-booter-runtime.md` and env vars `BARE_OS_HOLESAIL_*`. Upstream **holesail** is
|
||||||
|
**AGPL-3.0**.
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"schema": 2,
|
"schema": 2,
|
||||||
"profileId": "bare-os-posix-like",
|
"profileId": "bare-os-posix-like",
|
||||||
"generatedAt": "2026-04-09T02:26:36.652Z",
|
"generatedAt": "2026-04-09T23:26:09.246Z",
|
||||||
"note": "Sparse POSIX Issue 7 coverage hints for /bin utilities. Omitted command names are not yet profiled here.",
|
"note": "Sparse POSIX Issue 7 coverage hints for /bin utilities. Omitted command names are not yet profiled here.",
|
||||||
"commandIndex": [
|
"commandIndex": [
|
||||||
{
|
{
|
||||||
@@ -196,6 +196,10 @@
|
|||||||
"name": "help",
|
"name": "help",
|
||||||
"tier": "tier1_bin"
|
"tier": "tier1_bin"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "holesail",
|
||||||
|
"tier": "tier1_bin"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "hostid",
|
"name": "hostid",
|
||||||
"tier": "tier1_bin"
|
"tier": "tier1_bin"
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# Example drop-in for bare-holesail (copy to ~/.config/bare-os/units/bare-holesail.unit).
|
||||||
|
# Stock boot already enables managed bare-holesail (no env required). Use this file for ordering
|
||||||
|
# or to document overrides. Disable: BARE_OS_HOLESAIL_INITD=0 or systemctl disable bare-holesail.
|
||||||
|
#
|
||||||
|
# Single tunnel (turn off managed first):
|
||||||
|
# BARE_OS_HOLESAIL_MANAGED=0
|
||||||
|
# BARE_OS_HOLESAIL_SERVER=1
|
||||||
|
# BARE_OS_HOLESAIL_SECURE=1
|
||||||
|
#
|
||||||
|
# Multi-tunnel (default; persisted state via /bin/holesail):
|
||||||
|
# # optional: BARE_OS_HOLESAIL_STATE=~/.holesail/state.json
|
||||||
|
#
|
||||||
|
# Optional ordering override:
|
||||||
|
[Unit]
|
||||||
|
After=kernel-logger
|
||||||
|
# ConditionEnvironment=BARE_OS_HOLESAIL_INITD=1 # optional gate if you disable by default in a custom image
|
||||||
@@ -1182,6 +1182,14 @@
|
|||||||
"optional": true,
|
"optional": true,
|
||||||
"nativeHint": true,
|
"nativeHint": true,
|
||||||
"skipReason": "Optional Holepunch bare-*; may be native, platform-specific, or Bare-only"
|
"skipReason": "Optional Holepunch bare-*; may be native, platform-specific, or Bare-only"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ctxKey": "holesail",
|
||||||
|
"package": "holesail",
|
||||||
|
"export": "default",
|
||||||
|
"bundle": true,
|
||||||
|
"optional": false,
|
||||||
|
"nativeHint": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
+6168
-14
File diff suppressed because it is too large
Load Diff
@@ -426,10 +426,17 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
+5253
-520
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -342,10 +342,17 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
+1499
-324
File diff suppressed because it is too large
Load Diff
@@ -1329,10 +1329,323 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/lib/errors.js
|
||||||
|
var require_errors2 = __commonJS({
|
||||||
|
"../../node_modules/bare-events/lib/errors.js"(exports, module) {
|
||||||
|
module.exports = class EventEmitterError extends Error {
|
||||||
|
constructor(msg, code, fn = EventEmitterError, opts) {
|
||||||
|
super(`${code}: ${msg}`, opts);
|
||||||
|
this.code = code;
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(this, fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get name() {
|
||||||
|
return "EventEmitterError";
|
||||||
|
}
|
||||||
|
static OPERATION_ABORTED(cause, msg = "Operation aborted") {
|
||||||
|
return new EventEmitterError(msg, "OPERATION_ABORTED", EventEmitterError.OPERATION_ABORTED, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
static UNHANDLED_ERROR(cause, msg = "Unhandled error") {
|
||||||
|
return new EventEmitterError(msg, "UNHANDLED_ERROR", EventEmitterError.UNHANDLED_ERROR, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/index.js
|
||||||
|
var require_bare_events = __commonJS({
|
||||||
|
"../../node_modules/bare-events/index.js"(exports, module) {
|
||||||
|
var errors = require_errors2();
|
||||||
|
var EventListener = class {
|
||||||
|
constructor() {
|
||||||
|
this.list = [];
|
||||||
|
this.count = 0;
|
||||||
|
}
|
||||||
|
append(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.push([fn, once]);
|
||||||
|
}
|
||||||
|
prepend(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.unshift([fn, once]);
|
||||||
|
}
|
||||||
|
remove(ctx, name, fn) {
|
||||||
|
for (let i = 0, n = this.list.length; i < n; i++) {
|
||||||
|
const l = this.list[i];
|
||||||
|
if (l[0] === fn) {
|
||||||
|
this.list.splice(i, 1);
|
||||||
|
if (this.count === 1) delete ctx._events[name];
|
||||||
|
ctx.emit("removeListener", name, fn);
|
||||||
|
this.count--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
removeAll(ctx, name) {
|
||||||
|
const list = [...this.list];
|
||||||
|
this.list = [];
|
||||||
|
if (this.count === list.length) delete ctx._events[name];
|
||||||
|
for (let i = list.length - 1; i >= 0; i--) {
|
||||||
|
ctx.emit("removeListener", name, list[i][0]);
|
||||||
|
}
|
||||||
|
this.count -= list.length;
|
||||||
|
}
|
||||||
|
emit(ctx, name, ...args) {
|
||||||
|
const list = [...this.list];
|
||||||
|
for (let i = 0, n = list.length; i < n; i++) {
|
||||||
|
const l = list[i];
|
||||||
|
if (l[1] === true) this.remove(ctx, name, l[0]);
|
||||||
|
Reflect.apply(l[0], ctx, args);
|
||||||
|
}
|
||||||
|
return list.length > 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function appendListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.append(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function prependListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.prepend(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function removeListener(ctx, name, fn) {
|
||||||
|
if (ctx._events === void 0) return ctx;
|
||||||
|
const e = ctx._events[name];
|
||||||
|
if (e !== void 0) e.remove(ctx, name, fn);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function throwUnhandledError(...args) {
|
||||||
|
let err;
|
||||||
|
if (args.length > 0) err = args[0];
|
||||||
|
if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err);
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(err, exports.prototype.emit);
|
||||||
|
}
|
||||||
|
queueMicrotask(() => {
|
||||||
|
throw err;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
module.exports = exports = class EventEmitter {
|
||||||
|
constructor() {
|
||||||
|
this._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
}
|
||||||
|
addListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
addOnceListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
prependListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
prependOnceListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
removeListener(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
on(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
once(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
off(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
emit(name, ...args) {
|
||||||
|
if (name === "error" && this._events !== void 0 && this._events.error === void 0) {
|
||||||
|
throwUnhandledError(...args);
|
||||||
|
}
|
||||||
|
if (this._events === void 0) return false;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? false : e.emit(this, name, ...args);
|
||||||
|
}
|
||||||
|
listeners(name) {
|
||||||
|
if (this._events === void 0) return [];
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? [] : [...e.list];
|
||||||
|
}
|
||||||
|
listenerCount(name) {
|
||||||
|
if (this._events === void 0) return 0;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? 0 : e.list.length;
|
||||||
|
}
|
||||||
|
getMaxListeners() {
|
||||||
|
return EventEmitter.defaultMaxListeners;
|
||||||
|
}
|
||||||
|
setMaxListeners(n) {
|
||||||
|
}
|
||||||
|
removeAllListeners(name) {
|
||||||
|
if (arguments.length === 0) {
|
||||||
|
for (const key of Reflect.ownKeys(this._events)) {
|
||||||
|
if (key === "removeListener") continue;
|
||||||
|
this.removeAllListeners(key);
|
||||||
|
}
|
||||||
|
this.removeAllListeners("removeListener");
|
||||||
|
} else {
|
||||||
|
const e = this._events[name];
|
||||||
|
if (e !== void 0) e.removeAll(this, name);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.EventEmitter = exports;
|
||||||
|
exports.errors = errors;
|
||||||
|
exports.defaultMaxListeners = 10;
|
||||||
|
exports.on = function on(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
throw errors.OPERATION_ABORTED(signal.reason);
|
||||||
|
}
|
||||||
|
let error = null;
|
||||||
|
let done = false;
|
||||||
|
const events = [];
|
||||||
|
const promises = [];
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.on(name, onevent);
|
||||||
|
return {
|
||||||
|
next() {
|
||||||
|
if (events.length) {
|
||||||
|
return Promise.resolve({ value: events.shift(), done: false });
|
||||||
|
}
|
||||||
|
if (error) {
|
||||||
|
const err = error;
|
||||||
|
error = null;
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
if (done) return onclose();
|
||||||
|
return new Promise((resolve, reject) => promises.push({ resolve, reject }));
|
||||||
|
},
|
||||||
|
return() {
|
||||||
|
return onclose();
|
||||||
|
},
|
||||||
|
throw(err) {
|
||||||
|
return onerror(err);
|
||||||
|
},
|
||||||
|
[Symbol.asyncIterator]() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function onevent(...args) {
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().resolve({ value: args, done: false });
|
||||||
|
} else {
|
||||||
|
events.push(args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent).off("error", onerror);
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().reject(err);
|
||||||
|
} else {
|
||||||
|
error = err;
|
||||||
|
}
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
function onclose() {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
done = true;
|
||||||
|
if (promises.length) promises.shift().resolve({ done: true });
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.once = function once(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
return Promise.reject(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.once(name, onevent);
|
||||||
|
function onevent(...args) {
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
resolve(args);
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.forward = function forward(from, to, names, opts = {}) {
|
||||||
|
if (typeof names === "string") names = [names];
|
||||||
|
const { emit = to.emit.bind(to) } = opts;
|
||||||
|
const listeners = names.map(
|
||||||
|
(name) => function onevent(...args) {
|
||||||
|
emit(name, ...args);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
to.on("newListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.on(name, listeners[i]);
|
||||||
|
}
|
||||||
|
}).on("removeListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.off(name, listeners[i]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.listenerCount = function listenerCount(emitter, name) {
|
||||||
|
return emitter.listenerCount(name);
|
||||||
|
};
|
||||||
|
exports.getMaxListeners = function getMaxListeners(emitter) {
|
||||||
|
if (typeof emitter.getMaxListeners === "function") {
|
||||||
|
return emitter.getMaxListeners();
|
||||||
|
}
|
||||||
|
return exports.defaultMaxListeners;
|
||||||
|
};
|
||||||
|
exports.setMaxListeners = function setMaxListeners(n, ...emitters) {
|
||||||
|
if (emitters.length === 0) exports.defaultMaxListeners = n;
|
||||||
|
else {
|
||||||
|
for (const emitter of emitters) {
|
||||||
|
if (typeof emitter.setMaxListeners === "function") {
|
||||||
|
emitter.setMaxListeners(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
+8891
-1559
File diff suppressed because it is too large
Load Diff
+6007
-1617
File diff suppressed because it is too large
Load Diff
@@ -3137,10 +3137,17 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -36,10 +36,323 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
));
|
));
|
||||||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/lib/errors.js
|
||||||
|
var require_errors = __commonJS({
|
||||||
|
"../../node_modules/bare-events/lib/errors.js"(exports, module) {
|
||||||
|
module.exports = class EventEmitterError extends Error {
|
||||||
|
constructor(msg, code, fn = EventEmitterError, opts) {
|
||||||
|
super(`${code}: ${msg}`, opts);
|
||||||
|
this.code = code;
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(this, fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get name() {
|
||||||
|
return "EventEmitterError";
|
||||||
|
}
|
||||||
|
static OPERATION_ABORTED(cause, msg = "Operation aborted") {
|
||||||
|
return new EventEmitterError(msg, "OPERATION_ABORTED", EventEmitterError.OPERATION_ABORTED, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
static UNHANDLED_ERROR(cause, msg = "Unhandled error") {
|
||||||
|
return new EventEmitterError(msg, "UNHANDLED_ERROR", EventEmitterError.UNHANDLED_ERROR, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/index.js
|
||||||
|
var require_bare_events = __commonJS({
|
||||||
|
"../../node_modules/bare-events/index.js"(exports, module) {
|
||||||
|
var errors = require_errors();
|
||||||
|
var EventListener = class {
|
||||||
|
constructor() {
|
||||||
|
this.list = [];
|
||||||
|
this.count = 0;
|
||||||
|
}
|
||||||
|
append(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.push([fn, once]);
|
||||||
|
}
|
||||||
|
prepend(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.unshift([fn, once]);
|
||||||
|
}
|
||||||
|
remove(ctx, name, fn) {
|
||||||
|
for (let i = 0, n = this.list.length; i < n; i++) {
|
||||||
|
const l = this.list[i];
|
||||||
|
if (l[0] === fn) {
|
||||||
|
this.list.splice(i, 1);
|
||||||
|
if (this.count === 1) delete ctx._events[name];
|
||||||
|
ctx.emit("removeListener", name, fn);
|
||||||
|
this.count--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
removeAll(ctx, name) {
|
||||||
|
const list = [...this.list];
|
||||||
|
this.list = [];
|
||||||
|
if (this.count === list.length) delete ctx._events[name];
|
||||||
|
for (let i = list.length - 1; i >= 0; i--) {
|
||||||
|
ctx.emit("removeListener", name, list[i][0]);
|
||||||
|
}
|
||||||
|
this.count -= list.length;
|
||||||
|
}
|
||||||
|
emit(ctx, name, ...args) {
|
||||||
|
const list = [...this.list];
|
||||||
|
for (let i = 0, n = list.length; i < n; i++) {
|
||||||
|
const l = list[i];
|
||||||
|
if (l[1] === true) this.remove(ctx, name, l[0]);
|
||||||
|
Reflect.apply(l[0], ctx, args);
|
||||||
|
}
|
||||||
|
return list.length > 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function appendListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.append(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function prependListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.prepend(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function removeListener(ctx, name, fn) {
|
||||||
|
if (ctx._events === void 0) return ctx;
|
||||||
|
const e = ctx._events[name];
|
||||||
|
if (e !== void 0) e.remove(ctx, name, fn);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function throwUnhandledError(...args) {
|
||||||
|
let err;
|
||||||
|
if (args.length > 0) err = args[0];
|
||||||
|
if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err);
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(err, exports.prototype.emit);
|
||||||
|
}
|
||||||
|
queueMicrotask(() => {
|
||||||
|
throw err;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
module.exports = exports = class EventEmitter {
|
||||||
|
constructor() {
|
||||||
|
this._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
}
|
||||||
|
addListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
addOnceListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
prependListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
prependOnceListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
removeListener(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
on(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
once(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
off(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
emit(name, ...args) {
|
||||||
|
if (name === "error" && this._events !== void 0 && this._events.error === void 0) {
|
||||||
|
throwUnhandledError(...args);
|
||||||
|
}
|
||||||
|
if (this._events === void 0) return false;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? false : e.emit(this, name, ...args);
|
||||||
|
}
|
||||||
|
listeners(name) {
|
||||||
|
if (this._events === void 0) return [];
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? [] : [...e.list];
|
||||||
|
}
|
||||||
|
listenerCount(name) {
|
||||||
|
if (this._events === void 0) return 0;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? 0 : e.list.length;
|
||||||
|
}
|
||||||
|
getMaxListeners() {
|
||||||
|
return EventEmitter.defaultMaxListeners;
|
||||||
|
}
|
||||||
|
setMaxListeners(n) {
|
||||||
|
}
|
||||||
|
removeAllListeners(name) {
|
||||||
|
if (arguments.length === 0) {
|
||||||
|
for (const key of Reflect.ownKeys(this._events)) {
|
||||||
|
if (key === "removeListener") continue;
|
||||||
|
this.removeAllListeners(key);
|
||||||
|
}
|
||||||
|
this.removeAllListeners("removeListener");
|
||||||
|
} else {
|
||||||
|
const e = this._events[name];
|
||||||
|
if (e !== void 0) e.removeAll(this, name);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.EventEmitter = exports;
|
||||||
|
exports.errors = errors;
|
||||||
|
exports.defaultMaxListeners = 10;
|
||||||
|
exports.on = function on(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
throw errors.OPERATION_ABORTED(signal.reason);
|
||||||
|
}
|
||||||
|
let error = null;
|
||||||
|
let done = false;
|
||||||
|
const events = [];
|
||||||
|
const promises = [];
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.on(name, onevent);
|
||||||
|
return {
|
||||||
|
next() {
|
||||||
|
if (events.length) {
|
||||||
|
return Promise.resolve({ value: events.shift(), done: false });
|
||||||
|
}
|
||||||
|
if (error) {
|
||||||
|
const err = error;
|
||||||
|
error = null;
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
if (done) return onclose();
|
||||||
|
return new Promise((resolve, reject) => promises.push({ resolve, reject }));
|
||||||
|
},
|
||||||
|
return() {
|
||||||
|
return onclose();
|
||||||
|
},
|
||||||
|
throw(err) {
|
||||||
|
return onerror(err);
|
||||||
|
},
|
||||||
|
[Symbol.asyncIterator]() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function onevent(...args) {
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().resolve({ value: args, done: false });
|
||||||
|
} else {
|
||||||
|
events.push(args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent).off("error", onerror);
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().reject(err);
|
||||||
|
} else {
|
||||||
|
error = err;
|
||||||
|
}
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
function onclose() {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
done = true;
|
||||||
|
if (promises.length) promises.shift().resolve({ done: true });
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.once = function once(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
return Promise.reject(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.once(name, onevent);
|
||||||
|
function onevent(...args) {
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
resolve(args);
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.forward = function forward(from, to, names, opts = {}) {
|
||||||
|
if (typeof names === "string") names = [names];
|
||||||
|
const { emit = to.emit.bind(to) } = opts;
|
||||||
|
const listeners = names.map(
|
||||||
|
(name) => function onevent(...args) {
|
||||||
|
emit(name, ...args);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
to.on("newListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.on(name, listeners[i]);
|
||||||
|
}
|
||||||
|
}).on("removeListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.off(name, listeners[i]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.listenerCount = function listenerCount(emitter, name) {
|
||||||
|
return emitter.listenerCount(name);
|
||||||
|
};
|
||||||
|
exports.getMaxListeners = function getMaxListeners(emitter) {
|
||||||
|
if (typeof emitter.getMaxListeners === "function") {
|
||||||
|
return emitter.getMaxListeners();
|
||||||
|
}
|
||||||
|
return exports.defaultMaxListeners;
|
||||||
|
};
|
||||||
|
exports.setMaxListeners = function setMaxListeners(n, ...emitters) {
|
||||||
|
if (emitters.length === 0) exports.defaultMaxListeners = n;
|
||||||
|
else {
|
||||||
|
for (const emitter of emitters) {
|
||||||
|
if (typeof emitter.setMaxListeners === "function") {
|
||||||
|
emitter.setMaxListeners(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -2959,7 +3272,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-form-data/lib/errors.js
|
// ../../node_modules/bare-form-data/lib/errors.js
|
||||||
var require_errors = __commonJS({
|
var require_errors2 = __commonJS({
|
||||||
"../../node_modules/bare-form-data/lib/errors.js"(exports, module) {
|
"../../node_modules/bare-form-data/lib/errors.js"(exports, module) {
|
||||||
module.exports = class FormDataError extends Error {
|
module.exports = class FormDataError extends Error {
|
||||||
constructor(msg, code, fn = FormDataError) {
|
constructor(msg, code, fn = FormDataError) {
|
||||||
@@ -2984,7 +3297,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
"../../node_modules/bare-form-data/index.js"(exports, module) {
|
"../../node_modules/bare-form-data/index.js"(exports, module) {
|
||||||
var { ReadableStream } = require_web();
|
var { ReadableStream } = require_web();
|
||||||
var { isBuffer } = require_bare_buffer();
|
var { isBuffer } = require_bare_buffer();
|
||||||
var errors = require_errors();
|
var errors = require_errors2();
|
||||||
var FormData = class _FormData {
|
var FormData = class _FormData {
|
||||||
constructor() {
|
constructor() {
|
||||||
this._entries = [];
|
this._entries = [];
|
||||||
|
|||||||
@@ -1850,10 +1850,17 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -36,10 +36,323 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
));
|
));
|
||||||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/lib/errors.js
|
||||||
|
var require_errors = __commonJS({
|
||||||
|
"../../node_modules/bare-events/lib/errors.js"(exports, module) {
|
||||||
|
module.exports = class EventEmitterError extends Error {
|
||||||
|
constructor(msg, code, fn = EventEmitterError, opts) {
|
||||||
|
super(`${code}: ${msg}`, opts);
|
||||||
|
this.code = code;
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(this, fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get name() {
|
||||||
|
return "EventEmitterError";
|
||||||
|
}
|
||||||
|
static OPERATION_ABORTED(cause, msg = "Operation aborted") {
|
||||||
|
return new EventEmitterError(msg, "OPERATION_ABORTED", EventEmitterError.OPERATION_ABORTED, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
static UNHANDLED_ERROR(cause, msg = "Unhandled error") {
|
||||||
|
return new EventEmitterError(msg, "UNHANDLED_ERROR", EventEmitterError.UNHANDLED_ERROR, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/index.js
|
||||||
|
var require_bare_events = __commonJS({
|
||||||
|
"../../node_modules/bare-events/index.js"(exports, module) {
|
||||||
|
var errors = require_errors();
|
||||||
|
var EventListener = class {
|
||||||
|
constructor() {
|
||||||
|
this.list = [];
|
||||||
|
this.count = 0;
|
||||||
|
}
|
||||||
|
append(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.push([fn, once]);
|
||||||
|
}
|
||||||
|
prepend(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.unshift([fn, once]);
|
||||||
|
}
|
||||||
|
remove(ctx, name, fn) {
|
||||||
|
for (let i = 0, n = this.list.length; i < n; i++) {
|
||||||
|
const l = this.list[i];
|
||||||
|
if (l[0] === fn) {
|
||||||
|
this.list.splice(i, 1);
|
||||||
|
if (this.count === 1) delete ctx._events[name];
|
||||||
|
ctx.emit("removeListener", name, fn);
|
||||||
|
this.count--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
removeAll(ctx, name) {
|
||||||
|
const list = [...this.list];
|
||||||
|
this.list = [];
|
||||||
|
if (this.count === list.length) delete ctx._events[name];
|
||||||
|
for (let i = list.length - 1; i >= 0; i--) {
|
||||||
|
ctx.emit("removeListener", name, list[i][0]);
|
||||||
|
}
|
||||||
|
this.count -= list.length;
|
||||||
|
}
|
||||||
|
emit(ctx, name, ...args) {
|
||||||
|
const list = [...this.list];
|
||||||
|
for (let i = 0, n = list.length; i < n; i++) {
|
||||||
|
const l = list[i];
|
||||||
|
if (l[1] === true) this.remove(ctx, name, l[0]);
|
||||||
|
Reflect.apply(l[0], ctx, args);
|
||||||
|
}
|
||||||
|
return list.length > 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function appendListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.append(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function prependListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.prepend(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function removeListener(ctx, name, fn) {
|
||||||
|
if (ctx._events === void 0) return ctx;
|
||||||
|
const e = ctx._events[name];
|
||||||
|
if (e !== void 0) e.remove(ctx, name, fn);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function throwUnhandledError(...args) {
|
||||||
|
let err;
|
||||||
|
if (args.length > 0) err = args[0];
|
||||||
|
if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err);
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(err, exports.prototype.emit);
|
||||||
|
}
|
||||||
|
queueMicrotask(() => {
|
||||||
|
throw err;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
module.exports = exports = class EventEmitter {
|
||||||
|
constructor() {
|
||||||
|
this._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
}
|
||||||
|
addListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
addOnceListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
prependListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
prependOnceListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
removeListener(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
on(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
once(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
off(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
emit(name, ...args) {
|
||||||
|
if (name === "error" && this._events !== void 0 && this._events.error === void 0) {
|
||||||
|
throwUnhandledError(...args);
|
||||||
|
}
|
||||||
|
if (this._events === void 0) return false;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? false : e.emit(this, name, ...args);
|
||||||
|
}
|
||||||
|
listeners(name) {
|
||||||
|
if (this._events === void 0) return [];
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? [] : [...e.list];
|
||||||
|
}
|
||||||
|
listenerCount(name) {
|
||||||
|
if (this._events === void 0) return 0;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? 0 : e.list.length;
|
||||||
|
}
|
||||||
|
getMaxListeners() {
|
||||||
|
return EventEmitter.defaultMaxListeners;
|
||||||
|
}
|
||||||
|
setMaxListeners(n) {
|
||||||
|
}
|
||||||
|
removeAllListeners(name) {
|
||||||
|
if (arguments.length === 0) {
|
||||||
|
for (const key of Reflect.ownKeys(this._events)) {
|
||||||
|
if (key === "removeListener") continue;
|
||||||
|
this.removeAllListeners(key);
|
||||||
|
}
|
||||||
|
this.removeAllListeners("removeListener");
|
||||||
|
} else {
|
||||||
|
const e = this._events[name];
|
||||||
|
if (e !== void 0) e.removeAll(this, name);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.EventEmitter = exports;
|
||||||
|
exports.errors = errors;
|
||||||
|
exports.defaultMaxListeners = 10;
|
||||||
|
exports.on = function on(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
throw errors.OPERATION_ABORTED(signal.reason);
|
||||||
|
}
|
||||||
|
let error = null;
|
||||||
|
let done = false;
|
||||||
|
const events = [];
|
||||||
|
const promises = [];
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.on(name, onevent);
|
||||||
|
return {
|
||||||
|
next() {
|
||||||
|
if (events.length) {
|
||||||
|
return Promise.resolve({ value: events.shift(), done: false });
|
||||||
|
}
|
||||||
|
if (error) {
|
||||||
|
const err = error;
|
||||||
|
error = null;
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
if (done) return onclose();
|
||||||
|
return new Promise((resolve, reject) => promises.push({ resolve, reject }));
|
||||||
|
},
|
||||||
|
return() {
|
||||||
|
return onclose();
|
||||||
|
},
|
||||||
|
throw(err) {
|
||||||
|
return onerror(err);
|
||||||
|
},
|
||||||
|
[Symbol.asyncIterator]() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function onevent(...args) {
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().resolve({ value: args, done: false });
|
||||||
|
} else {
|
||||||
|
events.push(args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent).off("error", onerror);
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().reject(err);
|
||||||
|
} else {
|
||||||
|
error = err;
|
||||||
|
}
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
function onclose() {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
done = true;
|
||||||
|
if (promises.length) promises.shift().resolve({ done: true });
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.once = function once(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
return Promise.reject(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.once(name, onevent);
|
||||||
|
function onevent(...args) {
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
resolve(args);
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.forward = function forward(from, to, names, opts = {}) {
|
||||||
|
if (typeof names === "string") names = [names];
|
||||||
|
const { emit = to.emit.bind(to) } = opts;
|
||||||
|
const listeners = names.map(
|
||||||
|
(name) => function onevent(...args) {
|
||||||
|
emit(name, ...args);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
to.on("newListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.on(name, listeners[i]);
|
||||||
|
}
|
||||||
|
}).on("removeListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.off(name, listeners[i]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.listenerCount = function listenerCount(emitter, name) {
|
||||||
|
return emitter.listenerCount(name);
|
||||||
|
};
|
||||||
|
exports.getMaxListeners = function getMaxListeners(emitter) {
|
||||||
|
if (typeof emitter.getMaxListeners === "function") {
|
||||||
|
return emitter.getMaxListeners();
|
||||||
|
}
|
||||||
|
return exports.defaultMaxListeners;
|
||||||
|
};
|
||||||
|
exports.setMaxListeners = function setMaxListeners(n, ...emitters) {
|
||||||
|
if (emitters.length === 0) exports.defaultMaxListeners = n;
|
||||||
|
else {
|
||||||
|
for (const emitter of emitters) {
|
||||||
|
if (typeof emitter.setMaxListeners === "function") {
|
||||||
|
emitter.setMaxListeners(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -2431,7 +2744,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-http1/lib/errors.js
|
// ../../node_modules/bare-http1/lib/errors.js
|
||||||
var require_errors = __commonJS({
|
var require_errors2 = __commonJS({
|
||||||
"../../node_modules/bare-http1/lib/errors.js"(exports, module) {
|
"../../node_modules/bare-http1/lib/errors.js"(exports, module) {
|
||||||
module.exports = class HTTPError extends Error {
|
module.exports = class HTTPError extends Error {
|
||||||
constructor(msg, fn = HTTPError, code = fn.name) {
|
constructor(msg, fn = HTTPError, code = fn.name) {
|
||||||
@@ -2461,7 +2774,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
var require_outgoing_message = __commonJS({
|
var require_outgoing_message = __commonJS({
|
||||||
"../../node_modules/bare-http1/lib/outgoing-message.js"(exports, module) {
|
"../../node_modules/bare-http1/lib/outgoing-message.js"(exports, module) {
|
||||||
var { Writable } = require_bare_stream();
|
var { Writable } = require_bare_stream();
|
||||||
var errors = require_errors();
|
var errors = require_errors2();
|
||||||
module.exports = class HTTPOutgoingMessage extends Writable {
|
module.exports = class HTTPOutgoingMessage extends Writable {
|
||||||
constructor(socket = null) {
|
constructor(socket = null) {
|
||||||
super();
|
super();
|
||||||
@@ -2517,312 +2830,6 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-events/lib/errors.js
|
|
||||||
var require_errors2 = __commonJS({
|
|
||||||
"../../node_modules/bare-events/lib/errors.js"(exports, module) {
|
|
||||||
module.exports = class EventEmitterError extends Error {
|
|
||||||
constructor(msg, code, fn = EventEmitterError, opts) {
|
|
||||||
super(`${code}: ${msg}`, opts);
|
|
||||||
this.code = code;
|
|
||||||
if (Error.captureStackTrace) {
|
|
||||||
Error.captureStackTrace(this, fn);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
get name() {
|
|
||||||
return "EventEmitterError";
|
|
||||||
}
|
|
||||||
static OPERATION_ABORTED(cause, msg = "Operation aborted") {
|
|
||||||
return new EventEmitterError(msg, "OPERATION_ABORTED", EventEmitterError.OPERATION_ABORTED, {
|
|
||||||
cause
|
|
||||||
});
|
|
||||||
}
|
|
||||||
static UNHANDLED_ERROR(cause, msg = "Unhandled error") {
|
|
||||||
return new EventEmitterError(msg, "UNHANDLED_ERROR", EventEmitterError.UNHANDLED_ERROR, {
|
|
||||||
cause
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// ../../node_modules/bare-events/index.js
|
|
||||||
var require_bare_events = __commonJS({
|
|
||||||
"../../node_modules/bare-events/index.js"(exports, module) {
|
|
||||||
var errors = require_errors2();
|
|
||||||
var EventListener = class {
|
|
||||||
constructor() {
|
|
||||||
this.list = [];
|
|
||||||
this.count = 0;
|
|
||||||
}
|
|
||||||
append(ctx, name, fn, once) {
|
|
||||||
this.count++;
|
|
||||||
ctx.emit("newListener", name, fn);
|
|
||||||
this.list.push([fn, once]);
|
|
||||||
}
|
|
||||||
prepend(ctx, name, fn, once) {
|
|
||||||
this.count++;
|
|
||||||
ctx.emit("newListener", name, fn);
|
|
||||||
this.list.unshift([fn, once]);
|
|
||||||
}
|
|
||||||
remove(ctx, name, fn) {
|
|
||||||
for (let i = 0, n = this.list.length; i < n; i++) {
|
|
||||||
const l = this.list[i];
|
|
||||||
if (l[0] === fn) {
|
|
||||||
this.list.splice(i, 1);
|
|
||||||
if (this.count === 1) delete ctx._events[name];
|
|
||||||
ctx.emit("removeListener", name, fn);
|
|
||||||
this.count--;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
removeAll(ctx, name) {
|
|
||||||
const list = [...this.list];
|
|
||||||
this.list = [];
|
|
||||||
if (this.count === list.length) delete ctx._events[name];
|
|
||||||
for (let i = list.length - 1; i >= 0; i--) {
|
|
||||||
ctx.emit("removeListener", name, list[i][0]);
|
|
||||||
}
|
|
||||||
this.count -= list.length;
|
|
||||||
}
|
|
||||||
emit(ctx, name, ...args) {
|
|
||||||
const list = [...this.list];
|
|
||||||
for (let i = 0, n = list.length; i < n; i++) {
|
|
||||||
const l = list[i];
|
|
||||||
if (l[1] === true) this.remove(ctx, name, l[0]);
|
|
||||||
Reflect.apply(l[0], ctx, args);
|
|
||||||
}
|
|
||||||
return list.length > 0;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
function appendListener(ctx, name, fn, once) {
|
|
||||||
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
|
||||||
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
|
||||||
e.append(ctx, name, fn, once);
|
|
||||||
return ctx;
|
|
||||||
}
|
|
||||||
function prependListener(ctx, name, fn, once) {
|
|
||||||
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
|
||||||
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
|
||||||
e.prepend(ctx, name, fn, once);
|
|
||||||
return ctx;
|
|
||||||
}
|
|
||||||
function removeListener(ctx, name, fn) {
|
|
||||||
if (ctx._events === void 0) return ctx;
|
|
||||||
const e = ctx._events[name];
|
|
||||||
if (e !== void 0) e.remove(ctx, name, fn);
|
|
||||||
return ctx;
|
|
||||||
}
|
|
||||||
function throwUnhandledError(...args) {
|
|
||||||
let err;
|
|
||||||
if (args.length > 0) err = args[0];
|
|
||||||
if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err);
|
|
||||||
if (Error.captureStackTrace) {
|
|
||||||
Error.captureStackTrace(err, exports.prototype.emit);
|
|
||||||
}
|
|
||||||
queueMicrotask(() => {
|
|
||||||
throw err;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
module.exports = exports = class EventEmitter {
|
|
||||||
constructor() {
|
|
||||||
this._events = /* @__PURE__ */ Object.create(null);
|
|
||||||
}
|
|
||||||
addListener(name, fn) {
|
|
||||||
return appendListener(this, name, fn, false);
|
|
||||||
}
|
|
||||||
addOnceListener(name, fn) {
|
|
||||||
return appendListener(this, name, fn, true);
|
|
||||||
}
|
|
||||||
prependListener(name, fn) {
|
|
||||||
return prependListener(this, name, fn, false);
|
|
||||||
}
|
|
||||||
prependOnceListener(name, fn) {
|
|
||||||
return prependListener(this, name, fn, true);
|
|
||||||
}
|
|
||||||
removeListener(name, fn) {
|
|
||||||
return removeListener(this, name, fn);
|
|
||||||
}
|
|
||||||
on(name, fn) {
|
|
||||||
return appendListener(this, name, fn, false);
|
|
||||||
}
|
|
||||||
once(name, fn) {
|
|
||||||
return appendListener(this, name, fn, true);
|
|
||||||
}
|
|
||||||
off(name, fn) {
|
|
||||||
return removeListener(this, name, fn);
|
|
||||||
}
|
|
||||||
emit(name, ...args) {
|
|
||||||
if (name === "error" && this._events !== void 0 && this._events.error === void 0) {
|
|
||||||
throwUnhandledError(...args);
|
|
||||||
}
|
|
||||||
if (this._events === void 0) return false;
|
|
||||||
const e = this._events[name];
|
|
||||||
return e === void 0 ? false : e.emit(this, name, ...args);
|
|
||||||
}
|
|
||||||
listeners(name) {
|
|
||||||
if (this._events === void 0) return [];
|
|
||||||
const e = this._events[name];
|
|
||||||
return e === void 0 ? [] : [...e.list];
|
|
||||||
}
|
|
||||||
listenerCount(name) {
|
|
||||||
if (this._events === void 0) return 0;
|
|
||||||
const e = this._events[name];
|
|
||||||
return e === void 0 ? 0 : e.list.length;
|
|
||||||
}
|
|
||||||
getMaxListeners() {
|
|
||||||
return EventEmitter.defaultMaxListeners;
|
|
||||||
}
|
|
||||||
setMaxListeners(n) {
|
|
||||||
}
|
|
||||||
removeAllListeners(name) {
|
|
||||||
if (arguments.length === 0) {
|
|
||||||
for (const key of Reflect.ownKeys(this._events)) {
|
|
||||||
if (key === "removeListener") continue;
|
|
||||||
this.removeAllListeners(key);
|
|
||||||
}
|
|
||||||
this.removeAllListeners("removeListener");
|
|
||||||
} else {
|
|
||||||
const e = this._events[name];
|
|
||||||
if (e !== void 0) e.removeAll(this, name);
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
exports.EventEmitter = exports;
|
|
||||||
exports.errors = errors;
|
|
||||||
exports.defaultMaxListeners = 10;
|
|
||||||
exports.on = function on(emitter, name, opts = {}) {
|
|
||||||
const { signal } = opts;
|
|
||||||
if (signal && signal.aborted) {
|
|
||||||
throw errors.OPERATION_ABORTED(signal.reason);
|
|
||||||
}
|
|
||||||
let error = null;
|
|
||||||
let done = false;
|
|
||||||
const events = [];
|
|
||||||
const promises = [];
|
|
||||||
if (name !== "error") emitter.on("error", onerror);
|
|
||||||
if (signal) signal.addEventListener("abort", onabort);
|
|
||||||
emitter.on(name, onevent);
|
|
||||||
return {
|
|
||||||
next() {
|
|
||||||
if (events.length) {
|
|
||||||
return Promise.resolve({ value: events.shift(), done: false });
|
|
||||||
}
|
|
||||||
if (error) {
|
|
||||||
const err = error;
|
|
||||||
error = null;
|
|
||||||
return Promise.reject(err);
|
|
||||||
}
|
|
||||||
if (done) return onclose();
|
|
||||||
return new Promise((resolve, reject) => promises.push({ resolve, reject }));
|
|
||||||
},
|
|
||||||
return() {
|
|
||||||
return onclose();
|
|
||||||
},
|
|
||||||
throw(err) {
|
|
||||||
return onerror(err);
|
|
||||||
},
|
|
||||||
[Symbol.asyncIterator]() {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
function onevent(...args) {
|
|
||||||
if (promises.length) {
|
|
||||||
promises.shift().resolve({ value: args, done: false });
|
|
||||||
} else {
|
|
||||||
events.push(args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function onerror(err) {
|
|
||||||
emitter.off(name, onevent).off("error", onerror);
|
|
||||||
if (promises.length) {
|
|
||||||
promises.shift().reject(err);
|
|
||||||
} else {
|
|
||||||
error = err;
|
|
||||||
}
|
|
||||||
return Promise.resolve({ done: true });
|
|
||||||
}
|
|
||||||
function onabort() {
|
|
||||||
signal.removeEventListener("abort", onabort);
|
|
||||||
onerror(errors.OPERATION_ABORTED(signal.reason));
|
|
||||||
}
|
|
||||||
function onclose() {
|
|
||||||
emitter.off(name, onevent);
|
|
||||||
if (name !== "error") emitter.off("error", onerror);
|
|
||||||
if (signal) signal.removeEventListener("abort", onabort);
|
|
||||||
done = true;
|
|
||||||
if (promises.length) promises.shift().resolve({ done: true });
|
|
||||||
return Promise.resolve({ done: true });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
exports.once = function once(emitter, name, opts = {}) {
|
|
||||||
const { signal } = opts;
|
|
||||||
if (signal && signal.aborted) {
|
|
||||||
return Promise.reject(errors.OPERATION_ABORTED(signal.reason));
|
|
||||||
}
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
if (name !== "error") emitter.on("error", onerror);
|
|
||||||
if (signal) signal.addEventListener("abort", onabort);
|
|
||||||
emitter.once(name, onevent);
|
|
||||||
function onevent(...args) {
|
|
||||||
if (name !== "error") emitter.off("error", onerror);
|
|
||||||
if (signal) signal.removeEventListener("abort", onabort);
|
|
||||||
resolve(args);
|
|
||||||
}
|
|
||||||
function onerror(err) {
|
|
||||||
emitter.off(name, onevent);
|
|
||||||
if (name !== "error") emitter.off("error", onerror);
|
|
||||||
reject(err);
|
|
||||||
}
|
|
||||||
function onabort() {
|
|
||||||
signal.removeEventListener("abort", onabort);
|
|
||||||
onerror(errors.OPERATION_ABORTED(signal.reason));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
exports.forward = function forward(from, to, names, opts = {}) {
|
|
||||||
if (typeof names === "string") names = [names];
|
|
||||||
const { emit = to.emit.bind(to) } = opts;
|
|
||||||
const listeners = names.map(
|
|
||||||
(name) => function onevent(...args) {
|
|
||||||
emit(name, ...args);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
to.on("newListener", (name) => {
|
|
||||||
const i = names.indexOf(name);
|
|
||||||
if (i !== -1 && to.listenerCount(name) === 0) {
|
|
||||||
from.on(name, listeners[i]);
|
|
||||||
}
|
|
||||||
}).on("removeListener", (name) => {
|
|
||||||
const i = names.indexOf(name);
|
|
||||||
if (i !== -1 && to.listenerCount(name) === 0) {
|
|
||||||
from.off(name, listeners[i]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
exports.listenerCount = function listenerCount(emitter, name) {
|
|
||||||
return emitter.listenerCount(name);
|
|
||||||
};
|
|
||||||
exports.getMaxListeners = function getMaxListeners(emitter) {
|
|
||||||
if (typeof emitter.getMaxListeners === "function") {
|
|
||||||
return emitter.getMaxListeners();
|
|
||||||
}
|
|
||||||
return exports.defaultMaxListeners;
|
|
||||||
};
|
|
||||||
exports.setMaxListeners = function setMaxListeners(n, ...emitters) {
|
|
||||||
if (emitters.length === 0) exports.defaultMaxListeners = n;
|
|
||||||
else {
|
|
||||||
for (const emitter of emitters) {
|
|
||||||
if (typeof emitter.setMaxListeners === "function") {
|
|
||||||
emitter.setMaxListeners(n);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// ../../node_modules/bare-dns/binding.js
|
// ../../node_modules/bare-dns/binding.js
|
||||||
var require_binding = __commonJS({
|
var require_binding = __commonJS({
|
||||||
"../../node_modules/bare-dns/binding.js"(exports, module) {
|
"../../node_modules/bare-dns/binding.js"(exports, module) {
|
||||||
@@ -4156,7 +4163,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
"../../node_modules/bare-http1/lib/client-connection.js"(exports, module) {
|
"../../node_modules/bare-http1/lib/client-connection.js"(exports, module) {
|
||||||
var HTTPParser = require_bare_http_parser();
|
var HTTPParser = require_bare_http_parser();
|
||||||
var HTTPIncomingMessage = require_incoming_message();
|
var HTTPIncomingMessage = require_incoming_message();
|
||||||
var errors = require_errors();
|
var errors = require_errors2();
|
||||||
var {
|
var {
|
||||||
constants: { RESPONSE, DATA, END }
|
constants: { RESPONSE, DATA, END }
|
||||||
} = HTTPParser;
|
} = HTTPParser;
|
||||||
@@ -4280,7 +4287,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
var EventEmitter = require_bare_events();
|
var EventEmitter = require_bare_events();
|
||||||
var tcp = require_bare_tcp();
|
var tcp = require_bare_tcp();
|
||||||
var HTTPClientConnection = require_client_connection();
|
var HTTPClientConnection = require_client_connection();
|
||||||
var errors = require_errors();
|
var errors = require_errors2();
|
||||||
var HTTPSocketSet = class {
|
var HTTPSocketSet = class {
|
||||||
constructor() {
|
constructor() {
|
||||||
this._sockets = /* @__PURE__ */ new Map();
|
this._sockets = /* @__PURE__ */ new Map();
|
||||||
@@ -4909,7 +4916,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
exports.ClientRequest = require_client_request();
|
exports.ClientRequest = require_client_request();
|
||||||
exports.ClientConnection = require_client_connection();
|
exports.ClientConnection = require_client_connection();
|
||||||
exports.constants = require_constants2();
|
exports.constants = require_constants2();
|
||||||
exports.errors = require_errors();
|
exports.errors = require_errors2();
|
||||||
exports.METHODS = Object.values(exports.constants.method);
|
exports.METHODS = Object.values(exports.constants.method);
|
||||||
exports.STATUS_CODES = exports.constants.status;
|
exports.STATUS_CODES = exports.constants.status;
|
||||||
exports.createServer = function createServer(opts, onrequest) {
|
exports.createServer = function createServer(opts, onrequest) {
|
||||||
|
|||||||
@@ -36,10 +36,323 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
));
|
));
|
||||||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/lib/errors.js
|
||||||
|
var require_errors = __commonJS({
|
||||||
|
"../../node_modules/bare-events/lib/errors.js"(exports, module) {
|
||||||
|
module.exports = class EventEmitterError extends Error {
|
||||||
|
constructor(msg, code, fn = EventEmitterError, opts) {
|
||||||
|
super(`${code}: ${msg}`, opts);
|
||||||
|
this.code = code;
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(this, fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get name() {
|
||||||
|
return "EventEmitterError";
|
||||||
|
}
|
||||||
|
static OPERATION_ABORTED(cause, msg = "Operation aborted") {
|
||||||
|
return new EventEmitterError(msg, "OPERATION_ABORTED", EventEmitterError.OPERATION_ABORTED, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
static UNHANDLED_ERROR(cause, msg = "Unhandled error") {
|
||||||
|
return new EventEmitterError(msg, "UNHANDLED_ERROR", EventEmitterError.UNHANDLED_ERROR, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/index.js
|
||||||
|
var require_bare_events = __commonJS({
|
||||||
|
"../../node_modules/bare-events/index.js"(exports, module) {
|
||||||
|
var errors = require_errors();
|
||||||
|
var EventListener = class {
|
||||||
|
constructor() {
|
||||||
|
this.list = [];
|
||||||
|
this.count = 0;
|
||||||
|
}
|
||||||
|
append(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.push([fn, once]);
|
||||||
|
}
|
||||||
|
prepend(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.unshift([fn, once]);
|
||||||
|
}
|
||||||
|
remove(ctx, name, fn) {
|
||||||
|
for (let i = 0, n = this.list.length; i < n; i++) {
|
||||||
|
const l = this.list[i];
|
||||||
|
if (l[0] === fn) {
|
||||||
|
this.list.splice(i, 1);
|
||||||
|
if (this.count === 1) delete ctx._events[name];
|
||||||
|
ctx.emit("removeListener", name, fn);
|
||||||
|
this.count--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
removeAll(ctx, name) {
|
||||||
|
const list = [...this.list];
|
||||||
|
this.list = [];
|
||||||
|
if (this.count === list.length) delete ctx._events[name];
|
||||||
|
for (let i = list.length - 1; i >= 0; i--) {
|
||||||
|
ctx.emit("removeListener", name, list[i][0]);
|
||||||
|
}
|
||||||
|
this.count -= list.length;
|
||||||
|
}
|
||||||
|
emit(ctx, name, ...args) {
|
||||||
|
const list = [...this.list];
|
||||||
|
for (let i = 0, n = list.length; i < n; i++) {
|
||||||
|
const l = list[i];
|
||||||
|
if (l[1] === true) this.remove(ctx, name, l[0]);
|
||||||
|
Reflect.apply(l[0], ctx, args);
|
||||||
|
}
|
||||||
|
return list.length > 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function appendListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.append(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function prependListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.prepend(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function removeListener(ctx, name, fn) {
|
||||||
|
if (ctx._events === void 0) return ctx;
|
||||||
|
const e = ctx._events[name];
|
||||||
|
if (e !== void 0) e.remove(ctx, name, fn);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function throwUnhandledError(...args) {
|
||||||
|
let err;
|
||||||
|
if (args.length > 0) err = args[0];
|
||||||
|
if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err);
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(err, exports.prototype.emit);
|
||||||
|
}
|
||||||
|
queueMicrotask(() => {
|
||||||
|
throw err;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
module.exports = exports = class EventEmitter {
|
||||||
|
constructor() {
|
||||||
|
this._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
}
|
||||||
|
addListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
addOnceListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
prependListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
prependOnceListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
removeListener(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
on(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
once(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
off(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
emit(name, ...args) {
|
||||||
|
if (name === "error" && this._events !== void 0 && this._events.error === void 0) {
|
||||||
|
throwUnhandledError(...args);
|
||||||
|
}
|
||||||
|
if (this._events === void 0) return false;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? false : e.emit(this, name, ...args);
|
||||||
|
}
|
||||||
|
listeners(name) {
|
||||||
|
if (this._events === void 0) return [];
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? [] : [...e.list];
|
||||||
|
}
|
||||||
|
listenerCount(name) {
|
||||||
|
if (this._events === void 0) return 0;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? 0 : e.list.length;
|
||||||
|
}
|
||||||
|
getMaxListeners() {
|
||||||
|
return EventEmitter.defaultMaxListeners;
|
||||||
|
}
|
||||||
|
setMaxListeners(n) {
|
||||||
|
}
|
||||||
|
removeAllListeners(name) {
|
||||||
|
if (arguments.length === 0) {
|
||||||
|
for (const key of Reflect.ownKeys(this._events)) {
|
||||||
|
if (key === "removeListener") continue;
|
||||||
|
this.removeAllListeners(key);
|
||||||
|
}
|
||||||
|
this.removeAllListeners("removeListener");
|
||||||
|
} else {
|
||||||
|
const e = this._events[name];
|
||||||
|
if (e !== void 0) e.removeAll(this, name);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.EventEmitter = exports;
|
||||||
|
exports.errors = errors;
|
||||||
|
exports.defaultMaxListeners = 10;
|
||||||
|
exports.on = function on(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
throw errors.OPERATION_ABORTED(signal.reason);
|
||||||
|
}
|
||||||
|
let error = null;
|
||||||
|
let done = false;
|
||||||
|
const events = [];
|
||||||
|
const promises = [];
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.on(name, onevent);
|
||||||
|
return {
|
||||||
|
next() {
|
||||||
|
if (events.length) {
|
||||||
|
return Promise.resolve({ value: events.shift(), done: false });
|
||||||
|
}
|
||||||
|
if (error) {
|
||||||
|
const err = error;
|
||||||
|
error = null;
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
if (done) return onclose();
|
||||||
|
return new Promise((resolve, reject) => promises.push({ resolve, reject }));
|
||||||
|
},
|
||||||
|
return() {
|
||||||
|
return onclose();
|
||||||
|
},
|
||||||
|
throw(err) {
|
||||||
|
return onerror(err);
|
||||||
|
},
|
||||||
|
[Symbol.asyncIterator]() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function onevent(...args) {
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().resolve({ value: args, done: false });
|
||||||
|
} else {
|
||||||
|
events.push(args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent).off("error", onerror);
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().reject(err);
|
||||||
|
} else {
|
||||||
|
error = err;
|
||||||
|
}
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
function onclose() {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
done = true;
|
||||||
|
if (promises.length) promises.shift().resolve({ done: true });
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.once = function once(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
return Promise.reject(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.once(name, onevent);
|
||||||
|
function onevent(...args) {
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
resolve(args);
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.forward = function forward(from, to, names, opts = {}) {
|
||||||
|
if (typeof names === "string") names = [names];
|
||||||
|
const { emit = to.emit.bind(to) } = opts;
|
||||||
|
const listeners = names.map(
|
||||||
|
(name) => function onevent(...args) {
|
||||||
|
emit(name, ...args);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
to.on("newListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.on(name, listeners[i]);
|
||||||
|
}
|
||||||
|
}).on("removeListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.off(name, listeners[i]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.listenerCount = function listenerCount(emitter, name) {
|
||||||
|
return emitter.listenerCount(name);
|
||||||
|
};
|
||||||
|
exports.getMaxListeners = function getMaxListeners(emitter) {
|
||||||
|
if (typeof emitter.getMaxListeners === "function") {
|
||||||
|
return emitter.getMaxListeners();
|
||||||
|
}
|
||||||
|
return exports.defaultMaxListeners;
|
||||||
|
};
|
||||||
|
exports.setMaxListeners = function setMaxListeners(n, ...emitters) {
|
||||||
|
if (emitters.length === 0) exports.defaultMaxListeners = n;
|
||||||
|
else {
|
||||||
|
for (const emitter of emitters) {
|
||||||
|
if (typeof emitter.setMaxListeners === "function") {
|
||||||
|
emitter.setMaxListeners(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -2431,7 +2744,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-http1/lib/errors.js
|
// ../../node_modules/bare-http1/lib/errors.js
|
||||||
var require_errors = __commonJS({
|
var require_errors2 = __commonJS({
|
||||||
"../../node_modules/bare-http1/lib/errors.js"(exports, module) {
|
"../../node_modules/bare-http1/lib/errors.js"(exports, module) {
|
||||||
module.exports = class HTTPError extends Error {
|
module.exports = class HTTPError extends Error {
|
||||||
constructor(msg, fn = HTTPError, code = fn.name) {
|
constructor(msg, fn = HTTPError, code = fn.name) {
|
||||||
@@ -2461,7 +2774,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
var require_outgoing_message = __commonJS({
|
var require_outgoing_message = __commonJS({
|
||||||
"../../node_modules/bare-http1/lib/outgoing-message.js"(exports, module) {
|
"../../node_modules/bare-http1/lib/outgoing-message.js"(exports, module) {
|
||||||
var { Writable } = require_bare_stream();
|
var { Writable } = require_bare_stream();
|
||||||
var errors = require_errors();
|
var errors = require_errors2();
|
||||||
module.exports = class HTTPOutgoingMessage extends Writable {
|
module.exports = class HTTPOutgoingMessage extends Writable {
|
||||||
constructor(socket = null) {
|
constructor(socket = null) {
|
||||||
super();
|
super();
|
||||||
@@ -2517,312 +2830,6 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-events/lib/errors.js
|
|
||||||
var require_errors2 = __commonJS({
|
|
||||||
"../../node_modules/bare-events/lib/errors.js"(exports, module) {
|
|
||||||
module.exports = class EventEmitterError extends Error {
|
|
||||||
constructor(msg, code, fn = EventEmitterError, opts) {
|
|
||||||
super(`${code}: ${msg}`, opts);
|
|
||||||
this.code = code;
|
|
||||||
if (Error.captureStackTrace) {
|
|
||||||
Error.captureStackTrace(this, fn);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
get name() {
|
|
||||||
return "EventEmitterError";
|
|
||||||
}
|
|
||||||
static OPERATION_ABORTED(cause, msg = "Operation aborted") {
|
|
||||||
return new EventEmitterError(msg, "OPERATION_ABORTED", EventEmitterError.OPERATION_ABORTED, {
|
|
||||||
cause
|
|
||||||
});
|
|
||||||
}
|
|
||||||
static UNHANDLED_ERROR(cause, msg = "Unhandled error") {
|
|
||||||
return new EventEmitterError(msg, "UNHANDLED_ERROR", EventEmitterError.UNHANDLED_ERROR, {
|
|
||||||
cause
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// ../../node_modules/bare-events/index.js
|
|
||||||
var require_bare_events = __commonJS({
|
|
||||||
"../../node_modules/bare-events/index.js"(exports, module) {
|
|
||||||
var errors = require_errors2();
|
|
||||||
var EventListener = class {
|
|
||||||
constructor() {
|
|
||||||
this.list = [];
|
|
||||||
this.count = 0;
|
|
||||||
}
|
|
||||||
append(ctx, name, fn, once) {
|
|
||||||
this.count++;
|
|
||||||
ctx.emit("newListener", name, fn);
|
|
||||||
this.list.push([fn, once]);
|
|
||||||
}
|
|
||||||
prepend(ctx, name, fn, once) {
|
|
||||||
this.count++;
|
|
||||||
ctx.emit("newListener", name, fn);
|
|
||||||
this.list.unshift([fn, once]);
|
|
||||||
}
|
|
||||||
remove(ctx, name, fn) {
|
|
||||||
for (let i = 0, n = this.list.length; i < n; i++) {
|
|
||||||
const l = this.list[i];
|
|
||||||
if (l[0] === fn) {
|
|
||||||
this.list.splice(i, 1);
|
|
||||||
if (this.count === 1) delete ctx._events[name];
|
|
||||||
ctx.emit("removeListener", name, fn);
|
|
||||||
this.count--;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
removeAll(ctx, name) {
|
|
||||||
const list = [...this.list];
|
|
||||||
this.list = [];
|
|
||||||
if (this.count === list.length) delete ctx._events[name];
|
|
||||||
for (let i = list.length - 1; i >= 0; i--) {
|
|
||||||
ctx.emit("removeListener", name, list[i][0]);
|
|
||||||
}
|
|
||||||
this.count -= list.length;
|
|
||||||
}
|
|
||||||
emit(ctx, name, ...args) {
|
|
||||||
const list = [...this.list];
|
|
||||||
for (let i = 0, n = list.length; i < n; i++) {
|
|
||||||
const l = list[i];
|
|
||||||
if (l[1] === true) this.remove(ctx, name, l[0]);
|
|
||||||
Reflect.apply(l[0], ctx, args);
|
|
||||||
}
|
|
||||||
return list.length > 0;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
function appendListener(ctx, name, fn, once) {
|
|
||||||
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
|
||||||
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
|
||||||
e.append(ctx, name, fn, once);
|
|
||||||
return ctx;
|
|
||||||
}
|
|
||||||
function prependListener(ctx, name, fn, once) {
|
|
||||||
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
|
||||||
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
|
||||||
e.prepend(ctx, name, fn, once);
|
|
||||||
return ctx;
|
|
||||||
}
|
|
||||||
function removeListener(ctx, name, fn) {
|
|
||||||
if (ctx._events === void 0) return ctx;
|
|
||||||
const e = ctx._events[name];
|
|
||||||
if (e !== void 0) e.remove(ctx, name, fn);
|
|
||||||
return ctx;
|
|
||||||
}
|
|
||||||
function throwUnhandledError(...args) {
|
|
||||||
let err;
|
|
||||||
if (args.length > 0) err = args[0];
|
|
||||||
if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err);
|
|
||||||
if (Error.captureStackTrace) {
|
|
||||||
Error.captureStackTrace(err, exports.prototype.emit);
|
|
||||||
}
|
|
||||||
queueMicrotask(() => {
|
|
||||||
throw err;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
module.exports = exports = class EventEmitter {
|
|
||||||
constructor() {
|
|
||||||
this._events = /* @__PURE__ */ Object.create(null);
|
|
||||||
}
|
|
||||||
addListener(name, fn) {
|
|
||||||
return appendListener(this, name, fn, false);
|
|
||||||
}
|
|
||||||
addOnceListener(name, fn) {
|
|
||||||
return appendListener(this, name, fn, true);
|
|
||||||
}
|
|
||||||
prependListener(name, fn) {
|
|
||||||
return prependListener(this, name, fn, false);
|
|
||||||
}
|
|
||||||
prependOnceListener(name, fn) {
|
|
||||||
return prependListener(this, name, fn, true);
|
|
||||||
}
|
|
||||||
removeListener(name, fn) {
|
|
||||||
return removeListener(this, name, fn);
|
|
||||||
}
|
|
||||||
on(name, fn) {
|
|
||||||
return appendListener(this, name, fn, false);
|
|
||||||
}
|
|
||||||
once(name, fn) {
|
|
||||||
return appendListener(this, name, fn, true);
|
|
||||||
}
|
|
||||||
off(name, fn) {
|
|
||||||
return removeListener(this, name, fn);
|
|
||||||
}
|
|
||||||
emit(name, ...args) {
|
|
||||||
if (name === "error" && this._events !== void 0 && this._events.error === void 0) {
|
|
||||||
throwUnhandledError(...args);
|
|
||||||
}
|
|
||||||
if (this._events === void 0) return false;
|
|
||||||
const e = this._events[name];
|
|
||||||
return e === void 0 ? false : e.emit(this, name, ...args);
|
|
||||||
}
|
|
||||||
listeners(name) {
|
|
||||||
if (this._events === void 0) return [];
|
|
||||||
const e = this._events[name];
|
|
||||||
return e === void 0 ? [] : [...e.list];
|
|
||||||
}
|
|
||||||
listenerCount(name) {
|
|
||||||
if (this._events === void 0) return 0;
|
|
||||||
const e = this._events[name];
|
|
||||||
return e === void 0 ? 0 : e.list.length;
|
|
||||||
}
|
|
||||||
getMaxListeners() {
|
|
||||||
return EventEmitter.defaultMaxListeners;
|
|
||||||
}
|
|
||||||
setMaxListeners(n) {
|
|
||||||
}
|
|
||||||
removeAllListeners(name) {
|
|
||||||
if (arguments.length === 0) {
|
|
||||||
for (const key of Reflect.ownKeys(this._events)) {
|
|
||||||
if (key === "removeListener") continue;
|
|
||||||
this.removeAllListeners(key);
|
|
||||||
}
|
|
||||||
this.removeAllListeners("removeListener");
|
|
||||||
} else {
|
|
||||||
const e = this._events[name];
|
|
||||||
if (e !== void 0) e.removeAll(this, name);
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
exports.EventEmitter = exports;
|
|
||||||
exports.errors = errors;
|
|
||||||
exports.defaultMaxListeners = 10;
|
|
||||||
exports.on = function on(emitter, name, opts = {}) {
|
|
||||||
const { signal } = opts;
|
|
||||||
if (signal && signal.aborted) {
|
|
||||||
throw errors.OPERATION_ABORTED(signal.reason);
|
|
||||||
}
|
|
||||||
let error = null;
|
|
||||||
let done = false;
|
|
||||||
const events = [];
|
|
||||||
const promises = [];
|
|
||||||
if (name !== "error") emitter.on("error", onerror);
|
|
||||||
if (signal) signal.addEventListener("abort", onabort);
|
|
||||||
emitter.on(name, onevent);
|
|
||||||
return {
|
|
||||||
next() {
|
|
||||||
if (events.length) {
|
|
||||||
return Promise.resolve({ value: events.shift(), done: false });
|
|
||||||
}
|
|
||||||
if (error) {
|
|
||||||
const err = error;
|
|
||||||
error = null;
|
|
||||||
return Promise.reject(err);
|
|
||||||
}
|
|
||||||
if (done) return onclose();
|
|
||||||
return new Promise((resolve, reject) => promises.push({ resolve, reject }));
|
|
||||||
},
|
|
||||||
return() {
|
|
||||||
return onclose();
|
|
||||||
},
|
|
||||||
throw(err) {
|
|
||||||
return onerror(err);
|
|
||||||
},
|
|
||||||
[Symbol.asyncIterator]() {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
function onevent(...args) {
|
|
||||||
if (promises.length) {
|
|
||||||
promises.shift().resolve({ value: args, done: false });
|
|
||||||
} else {
|
|
||||||
events.push(args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function onerror(err) {
|
|
||||||
emitter.off(name, onevent).off("error", onerror);
|
|
||||||
if (promises.length) {
|
|
||||||
promises.shift().reject(err);
|
|
||||||
} else {
|
|
||||||
error = err;
|
|
||||||
}
|
|
||||||
return Promise.resolve({ done: true });
|
|
||||||
}
|
|
||||||
function onabort() {
|
|
||||||
signal.removeEventListener("abort", onabort);
|
|
||||||
onerror(errors.OPERATION_ABORTED(signal.reason));
|
|
||||||
}
|
|
||||||
function onclose() {
|
|
||||||
emitter.off(name, onevent);
|
|
||||||
if (name !== "error") emitter.off("error", onerror);
|
|
||||||
if (signal) signal.removeEventListener("abort", onabort);
|
|
||||||
done = true;
|
|
||||||
if (promises.length) promises.shift().resolve({ done: true });
|
|
||||||
return Promise.resolve({ done: true });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
exports.once = function once(emitter, name, opts = {}) {
|
|
||||||
const { signal } = opts;
|
|
||||||
if (signal && signal.aborted) {
|
|
||||||
return Promise.reject(errors.OPERATION_ABORTED(signal.reason));
|
|
||||||
}
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
if (name !== "error") emitter.on("error", onerror);
|
|
||||||
if (signal) signal.addEventListener("abort", onabort);
|
|
||||||
emitter.once(name, onevent);
|
|
||||||
function onevent(...args) {
|
|
||||||
if (name !== "error") emitter.off("error", onerror);
|
|
||||||
if (signal) signal.removeEventListener("abort", onabort);
|
|
||||||
resolve(args);
|
|
||||||
}
|
|
||||||
function onerror(err) {
|
|
||||||
emitter.off(name, onevent);
|
|
||||||
if (name !== "error") emitter.off("error", onerror);
|
|
||||||
reject(err);
|
|
||||||
}
|
|
||||||
function onabort() {
|
|
||||||
signal.removeEventListener("abort", onabort);
|
|
||||||
onerror(errors.OPERATION_ABORTED(signal.reason));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
exports.forward = function forward(from, to, names, opts = {}) {
|
|
||||||
if (typeof names === "string") names = [names];
|
|
||||||
const { emit = to.emit.bind(to) } = opts;
|
|
||||||
const listeners = names.map(
|
|
||||||
(name) => function onevent(...args) {
|
|
||||||
emit(name, ...args);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
to.on("newListener", (name) => {
|
|
||||||
const i = names.indexOf(name);
|
|
||||||
if (i !== -1 && to.listenerCount(name) === 0) {
|
|
||||||
from.on(name, listeners[i]);
|
|
||||||
}
|
|
||||||
}).on("removeListener", (name) => {
|
|
||||||
const i = names.indexOf(name);
|
|
||||||
if (i !== -1 && to.listenerCount(name) === 0) {
|
|
||||||
from.off(name, listeners[i]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
exports.listenerCount = function listenerCount(emitter, name) {
|
|
||||||
return emitter.listenerCount(name);
|
|
||||||
};
|
|
||||||
exports.getMaxListeners = function getMaxListeners(emitter) {
|
|
||||||
if (typeof emitter.getMaxListeners === "function") {
|
|
||||||
return emitter.getMaxListeners();
|
|
||||||
}
|
|
||||||
return exports.defaultMaxListeners;
|
|
||||||
};
|
|
||||||
exports.setMaxListeners = function setMaxListeners(n, ...emitters) {
|
|
||||||
if (emitters.length === 0) exports.defaultMaxListeners = n;
|
|
||||||
else {
|
|
||||||
for (const emitter of emitters) {
|
|
||||||
if (typeof emitter.setMaxListeners === "function") {
|
|
||||||
emitter.setMaxListeners(n);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// ../../node_modules/bare-dns/binding.js
|
// ../../node_modules/bare-dns/binding.js
|
||||||
var require_binding = __commonJS({
|
var require_binding = __commonJS({
|
||||||
"../../node_modules/bare-dns/binding.js"(exports, module) {
|
"../../node_modules/bare-dns/binding.js"(exports, module) {
|
||||||
@@ -4156,7 +4163,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
"../../node_modules/bare-http1/lib/client-connection.js"(exports, module) {
|
"../../node_modules/bare-http1/lib/client-connection.js"(exports, module) {
|
||||||
var HTTPParser = require_bare_http_parser();
|
var HTTPParser = require_bare_http_parser();
|
||||||
var HTTPIncomingMessage = require_incoming_message();
|
var HTTPIncomingMessage = require_incoming_message();
|
||||||
var errors = require_errors();
|
var errors = require_errors2();
|
||||||
var {
|
var {
|
||||||
constants: { RESPONSE, DATA, END }
|
constants: { RESPONSE, DATA, END }
|
||||||
} = HTTPParser;
|
} = HTTPParser;
|
||||||
@@ -4280,7 +4287,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
var EventEmitter = require_bare_events();
|
var EventEmitter = require_bare_events();
|
||||||
var tcp = require_bare_tcp();
|
var tcp = require_bare_tcp();
|
||||||
var HTTPClientConnection = require_client_connection();
|
var HTTPClientConnection = require_client_connection();
|
||||||
var errors = require_errors();
|
var errors = require_errors2();
|
||||||
var HTTPSocketSet = class {
|
var HTTPSocketSet = class {
|
||||||
constructor() {
|
constructor() {
|
||||||
this._sockets = /* @__PURE__ */ new Map();
|
this._sockets = /* @__PURE__ */ new Map();
|
||||||
@@ -4909,7 +4916,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
exports.ClientRequest = require_client_request();
|
exports.ClientRequest = require_client_request();
|
||||||
exports.ClientConnection = require_client_connection();
|
exports.ClientConnection = require_client_connection();
|
||||||
exports.constants = require_constants2();
|
exports.constants = require_constants2();
|
||||||
exports.errors = require_errors();
|
exports.errors = require_errors2();
|
||||||
exports.METHODS = Object.values(exports.constants.method);
|
exports.METHODS = Object.values(exports.constants.method);
|
||||||
exports.STATUS_CODES = exports.constants.status;
|
exports.STATUS_CODES = exports.constants.status;
|
||||||
exports.createServer = function createServer(opts, onrequest) {
|
exports.createServer = function createServer(opts, onrequest) {
|
||||||
@@ -5447,9 +5454,9 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-net/lib/constants.js
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-net/lib/constants.js
|
||||||
var require_constants5 = __commonJS({
|
var require_constants5 = __commonJS({
|
||||||
"../../node_modules/bare-net/lib/constants.js"(exports, module) {
|
"../bare-os-openssh/vendor/bare-node-shims/bare-net/lib/constants.js"(exports, module) {
|
||||||
module.exports = {
|
module.exports = {
|
||||||
type: {
|
type: {
|
||||||
TCP: 1,
|
TCP: 1,
|
||||||
@@ -5462,9 +5469,9 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-net/index.js
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-net/index.js
|
||||||
var require_bare_net = __commonJS({
|
var require_bare_net = __commonJS({
|
||||||
"../../node_modules/bare-net/index.js"(exports) {
|
"../bare-os-openssh/vendor/bare-node-shims/bare-net/index.js"(exports) {
|
||||||
var EventEmitter = require_bare_events();
|
var EventEmitter = require_bare_events();
|
||||||
var { Duplex } = require_bare_stream();
|
var { Duplex } = require_bare_stream();
|
||||||
var tcp = require_bare_tcp();
|
var tcp = require_bare_tcp();
|
||||||
|
|||||||
@@ -1883,10 +1883,17 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -6988,9 +6995,9 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-net/lib/constants.js
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-net/lib/constants.js
|
||||||
var require_constants8 = __commonJS({
|
var require_constants8 = __commonJS({
|
||||||
"../../node_modules/bare-net/lib/constants.js"(exports, module) {
|
"../bare-os-openssh/vendor/bare-node-shims/bare-net/lib/constants.js"(exports, module) {
|
||||||
module.exports = {
|
module.exports = {
|
||||||
type: {
|
type: {
|
||||||
TCP: 1,
|
TCP: 1,
|
||||||
@@ -7003,9 +7010,9 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-net/index.js
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-net/index.js
|
||||||
var require_bare_net = __commonJS({
|
var require_bare_net = __commonJS({
|
||||||
"../../node_modules/bare-net/index.js"(exports) {
|
"../bare-os-openssh/vendor/bare-node-shims/bare-net/index.js"(exports) {
|
||||||
var EventEmitter = require_bare_events();
|
var EventEmitter = require_bare_events();
|
||||||
var { Duplex } = require_bare_stream();
|
var { Duplex } = require_bare_stream();
|
||||||
var tcp = require_bare_tcp();
|
var tcp = require_bare_tcp();
|
||||||
|
|||||||
@@ -342,10 +342,17 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
+7344
-29
File diff suppressed because it is too large
Load Diff
+7349
-34
File diff suppressed because it is too large
Load Diff
+6168
-162
File diff suppressed because it is too large
Load Diff
@@ -4482,10 +4482,17 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -11594,9 +11601,9 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-net/lib/constants.js
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-net/lib/constants.js
|
||||||
var require_constants9 = __commonJS({
|
var require_constants9 = __commonJS({
|
||||||
"../../node_modules/bare-net/lib/constants.js"(exports, module) {
|
"../bare-os-openssh/vendor/bare-node-shims/bare-net/lib/constants.js"(exports, module) {
|
||||||
module.exports = {
|
module.exports = {
|
||||||
type: {
|
type: {
|
||||||
TCP: 1,
|
TCP: 1,
|
||||||
@@ -11609,9 +11616,9 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-net/index.js
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-net/index.js
|
||||||
var require_bare_net = __commonJS({
|
var require_bare_net = __commonJS({
|
||||||
"../../node_modules/bare-net/index.js"(exports) {
|
"../bare-os-openssh/vendor/bare-node-shims/bare-net/index.js"(exports) {
|
||||||
var EventEmitter = require_bare_events();
|
var EventEmitter = require_bare_events();
|
||||||
var { Duplex } = require_bare_stream();
|
var { Duplex } = require_bare_stream();
|
||||||
var tcp = require_bare_tcp();
|
var tcp = require_bare_tcp();
|
||||||
|
|||||||
+5251
-518
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -342,10 +342,17 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -3773,9 +3780,9 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-net/lib/constants.js
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-net/lib/constants.js
|
||||||
var require_constants3 = __commonJS({
|
var require_constants3 = __commonJS({
|
||||||
"../../node_modules/bare-net/lib/constants.js"(exports, module) {
|
"../bare-os-openssh/vendor/bare-node-shims/bare-net/lib/constants.js"(exports, module) {
|
||||||
module.exports = {
|
module.exports = {
|
||||||
type: {
|
type: {
|
||||||
TCP: 1,
|
TCP: 1,
|
||||||
@@ -3788,9 +3795,9 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-net/index.js
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-net/index.js
|
||||||
var require_bare_net = __commonJS({
|
var require_bare_net = __commonJS({
|
||||||
"../../node_modules/bare-net/index.js"(exports) {
|
"../bare-os-openssh/vendor/bare-node-shims/bare-net/index.js"(exports) {
|
||||||
var EventEmitter = require_bare_events();
|
var EventEmitter = require_bare_events();
|
||||||
var { Duplex } = require_bare_stream();
|
var { Duplex } = require_bare_stream();
|
||||||
var tcp = require_bare_tcp();
|
var tcp = require_bare_tcp();
|
||||||
|
|||||||
@@ -1715,10 +1715,323 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/lib/errors.js
|
||||||
|
var require_errors2 = __commonJS({
|
||||||
|
"../../node_modules/bare-events/lib/errors.js"(exports, module) {
|
||||||
|
module.exports = class EventEmitterError extends Error {
|
||||||
|
constructor(msg, code, fn = EventEmitterError, opts) {
|
||||||
|
super(`${code}: ${msg}`, opts);
|
||||||
|
this.code = code;
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(this, fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get name() {
|
||||||
|
return "EventEmitterError";
|
||||||
|
}
|
||||||
|
static OPERATION_ABORTED(cause, msg = "Operation aborted") {
|
||||||
|
return new EventEmitterError(msg, "OPERATION_ABORTED", EventEmitterError.OPERATION_ABORTED, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
static UNHANDLED_ERROR(cause, msg = "Unhandled error") {
|
||||||
|
return new EventEmitterError(msg, "UNHANDLED_ERROR", EventEmitterError.UNHANDLED_ERROR, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/index.js
|
||||||
|
var require_bare_events = __commonJS({
|
||||||
|
"../../node_modules/bare-events/index.js"(exports, module) {
|
||||||
|
var errors = require_errors2();
|
||||||
|
var EventListener = class {
|
||||||
|
constructor() {
|
||||||
|
this.list = [];
|
||||||
|
this.count = 0;
|
||||||
|
}
|
||||||
|
append(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.push([fn, once]);
|
||||||
|
}
|
||||||
|
prepend(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.unshift([fn, once]);
|
||||||
|
}
|
||||||
|
remove(ctx, name, fn) {
|
||||||
|
for (let i = 0, n = this.list.length; i < n; i++) {
|
||||||
|
const l = this.list[i];
|
||||||
|
if (l[0] === fn) {
|
||||||
|
this.list.splice(i, 1);
|
||||||
|
if (this.count === 1) delete ctx._events[name];
|
||||||
|
ctx.emit("removeListener", name, fn);
|
||||||
|
this.count--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
removeAll(ctx, name) {
|
||||||
|
const list = [...this.list];
|
||||||
|
this.list = [];
|
||||||
|
if (this.count === list.length) delete ctx._events[name];
|
||||||
|
for (let i = list.length - 1; i >= 0; i--) {
|
||||||
|
ctx.emit("removeListener", name, list[i][0]);
|
||||||
|
}
|
||||||
|
this.count -= list.length;
|
||||||
|
}
|
||||||
|
emit(ctx, name, ...args) {
|
||||||
|
const list = [...this.list];
|
||||||
|
for (let i = 0, n = list.length; i < n; i++) {
|
||||||
|
const l = list[i];
|
||||||
|
if (l[1] === true) this.remove(ctx, name, l[0]);
|
||||||
|
Reflect.apply(l[0], ctx, args);
|
||||||
|
}
|
||||||
|
return list.length > 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function appendListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.append(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function prependListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.prepend(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function removeListener(ctx, name, fn) {
|
||||||
|
if (ctx._events === void 0) return ctx;
|
||||||
|
const e = ctx._events[name];
|
||||||
|
if (e !== void 0) e.remove(ctx, name, fn);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function throwUnhandledError(...args) {
|
||||||
|
let err;
|
||||||
|
if (args.length > 0) err = args[0];
|
||||||
|
if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err);
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(err, exports.prototype.emit);
|
||||||
|
}
|
||||||
|
queueMicrotask(() => {
|
||||||
|
throw err;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
module.exports = exports = class EventEmitter {
|
||||||
|
constructor() {
|
||||||
|
this._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
}
|
||||||
|
addListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
addOnceListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
prependListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
prependOnceListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
removeListener(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
on(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
once(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
off(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
emit(name, ...args) {
|
||||||
|
if (name === "error" && this._events !== void 0 && this._events.error === void 0) {
|
||||||
|
throwUnhandledError(...args);
|
||||||
|
}
|
||||||
|
if (this._events === void 0) return false;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? false : e.emit(this, name, ...args);
|
||||||
|
}
|
||||||
|
listeners(name) {
|
||||||
|
if (this._events === void 0) return [];
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? [] : [...e.list];
|
||||||
|
}
|
||||||
|
listenerCount(name) {
|
||||||
|
if (this._events === void 0) return 0;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? 0 : e.list.length;
|
||||||
|
}
|
||||||
|
getMaxListeners() {
|
||||||
|
return EventEmitter.defaultMaxListeners;
|
||||||
|
}
|
||||||
|
setMaxListeners(n) {
|
||||||
|
}
|
||||||
|
removeAllListeners(name) {
|
||||||
|
if (arguments.length === 0) {
|
||||||
|
for (const key of Reflect.ownKeys(this._events)) {
|
||||||
|
if (key === "removeListener") continue;
|
||||||
|
this.removeAllListeners(key);
|
||||||
|
}
|
||||||
|
this.removeAllListeners("removeListener");
|
||||||
|
} else {
|
||||||
|
const e = this._events[name];
|
||||||
|
if (e !== void 0) e.removeAll(this, name);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.EventEmitter = exports;
|
||||||
|
exports.errors = errors;
|
||||||
|
exports.defaultMaxListeners = 10;
|
||||||
|
exports.on = function on(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
throw errors.OPERATION_ABORTED(signal.reason);
|
||||||
|
}
|
||||||
|
let error = null;
|
||||||
|
let done = false;
|
||||||
|
const events = [];
|
||||||
|
const promises = [];
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.on(name, onevent);
|
||||||
|
return {
|
||||||
|
next() {
|
||||||
|
if (events.length) {
|
||||||
|
return Promise.resolve({ value: events.shift(), done: false });
|
||||||
|
}
|
||||||
|
if (error) {
|
||||||
|
const err = error;
|
||||||
|
error = null;
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
if (done) return onclose();
|
||||||
|
return new Promise((resolve, reject) => promises.push({ resolve, reject }));
|
||||||
|
},
|
||||||
|
return() {
|
||||||
|
return onclose();
|
||||||
|
},
|
||||||
|
throw(err) {
|
||||||
|
return onerror(err);
|
||||||
|
},
|
||||||
|
[Symbol.asyncIterator]() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function onevent(...args) {
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().resolve({ value: args, done: false });
|
||||||
|
} else {
|
||||||
|
events.push(args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent).off("error", onerror);
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().reject(err);
|
||||||
|
} else {
|
||||||
|
error = err;
|
||||||
|
}
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
function onclose() {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
done = true;
|
||||||
|
if (promises.length) promises.shift().resolve({ done: true });
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.once = function once(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
return Promise.reject(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.once(name, onevent);
|
||||||
|
function onevent(...args) {
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
resolve(args);
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.forward = function forward(from, to, names, opts = {}) {
|
||||||
|
if (typeof names === "string") names = [names];
|
||||||
|
const { emit = to.emit.bind(to) } = opts;
|
||||||
|
const listeners = names.map(
|
||||||
|
(name) => function onevent(...args) {
|
||||||
|
emit(name, ...args);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
to.on("newListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.on(name, listeners[i]);
|
||||||
|
}
|
||||||
|
}).on("removeListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.off(name, listeners[i]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.listenerCount = function listenerCount(emitter, name) {
|
||||||
|
return emitter.listenerCount(name);
|
||||||
|
};
|
||||||
|
exports.getMaxListeners = function getMaxListeners(emitter) {
|
||||||
|
if (typeof emitter.getMaxListeners === "function") {
|
||||||
|
return emitter.getMaxListeners();
|
||||||
|
}
|
||||||
|
return exports.defaultMaxListeners;
|
||||||
|
};
|
||||||
|
exports.setMaxListeners = function setMaxListeners(n, ...emitters) {
|
||||||
|
if (emitters.length === 0) exports.defaultMaxListeners = n;
|
||||||
|
else {
|
||||||
|
for (const emitter of emitters) {
|
||||||
|
if (typeof emitter.setMaxListeners === "function") {
|
||||||
|
emitter.setMaxListeners(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -5497,7 +5810,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-encoding/lib/errors.js
|
// ../../node_modules/bare-encoding/lib/errors.js
|
||||||
var require_errors2 = __commonJS({
|
var require_errors3 = __commonJS({
|
||||||
"../../node_modules/bare-encoding/lib/errors.js"(exports, module) {
|
"../../node_modules/bare-encoding/lib/errors.js"(exports, module) {
|
||||||
module.exports = class EncodingError extends Error {
|
module.exports = class EncodingError extends Error {
|
||||||
constructor(msg, code, fn = EncodingError) {
|
constructor(msg, code, fn = EncodingError) {
|
||||||
@@ -5522,7 +5835,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
"../../node_modules/bare-encoding/index.js"(exports) {
|
"../../node_modules/bare-encoding/index.js"(exports) {
|
||||||
var UTF8Decoder = require_utf8_decoder2();
|
var UTF8Decoder = require_utf8_decoder2();
|
||||||
var PassThroughDecoder = require_pass_through_decoder2();
|
var PassThroughDecoder = require_pass_through_decoder2();
|
||||||
var errors = require_errors2();
|
var errors = require_errors3();
|
||||||
exports.TextEncoder = class TextEncoder {
|
exports.TextEncoder = class TextEncoder {
|
||||||
// https://encoding.spec.whatwg.org/#dom-textencoder-encoding
|
// https://encoding.spec.whatwg.org/#dom-textencoder-encoding
|
||||||
get encoding() {
|
get encoding() {
|
||||||
@@ -5681,7 +5994,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-http1/lib/errors.js
|
// ../../node_modules/bare-http1/lib/errors.js
|
||||||
var require_errors3 = __commonJS({
|
var require_errors4 = __commonJS({
|
||||||
"../../node_modules/bare-http1/lib/errors.js"(exports, module) {
|
"../../node_modules/bare-http1/lib/errors.js"(exports, module) {
|
||||||
module.exports = class HTTPError extends Error {
|
module.exports = class HTTPError extends Error {
|
||||||
constructor(msg, fn = HTTPError, code = fn.name) {
|
constructor(msg, fn = HTTPError, code = fn.name) {
|
||||||
@@ -5711,7 +6024,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
var require_outgoing_message = __commonJS({
|
var require_outgoing_message = __commonJS({
|
||||||
"../../node_modules/bare-http1/lib/outgoing-message.js"(exports, module) {
|
"../../node_modules/bare-http1/lib/outgoing-message.js"(exports, module) {
|
||||||
var { Writable } = require_bare_stream();
|
var { Writable } = require_bare_stream();
|
||||||
var errors = require_errors3();
|
var errors = require_errors4();
|
||||||
module.exports = class HTTPOutgoingMessage extends Writable {
|
module.exports = class HTTPOutgoingMessage extends Writable {
|
||||||
constructor(socket = null) {
|
constructor(socket = null) {
|
||||||
super();
|
super();
|
||||||
@@ -5767,312 +6080,6 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-events/lib/errors.js
|
|
||||||
var require_errors4 = __commonJS({
|
|
||||||
"../../node_modules/bare-events/lib/errors.js"(exports, module) {
|
|
||||||
module.exports = class EventEmitterError extends Error {
|
|
||||||
constructor(msg, code, fn = EventEmitterError, opts) {
|
|
||||||
super(`${code}: ${msg}`, opts);
|
|
||||||
this.code = code;
|
|
||||||
if (Error.captureStackTrace) {
|
|
||||||
Error.captureStackTrace(this, fn);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
get name() {
|
|
||||||
return "EventEmitterError";
|
|
||||||
}
|
|
||||||
static OPERATION_ABORTED(cause, msg = "Operation aborted") {
|
|
||||||
return new EventEmitterError(msg, "OPERATION_ABORTED", EventEmitterError.OPERATION_ABORTED, {
|
|
||||||
cause
|
|
||||||
});
|
|
||||||
}
|
|
||||||
static UNHANDLED_ERROR(cause, msg = "Unhandled error") {
|
|
||||||
return new EventEmitterError(msg, "UNHANDLED_ERROR", EventEmitterError.UNHANDLED_ERROR, {
|
|
||||||
cause
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// ../../node_modules/bare-events/index.js
|
|
||||||
var require_bare_events = __commonJS({
|
|
||||||
"../../node_modules/bare-events/index.js"(exports, module) {
|
|
||||||
var errors = require_errors4();
|
|
||||||
var EventListener = class {
|
|
||||||
constructor() {
|
|
||||||
this.list = [];
|
|
||||||
this.count = 0;
|
|
||||||
}
|
|
||||||
append(ctx, name, fn, once) {
|
|
||||||
this.count++;
|
|
||||||
ctx.emit("newListener", name, fn);
|
|
||||||
this.list.push([fn, once]);
|
|
||||||
}
|
|
||||||
prepend(ctx, name, fn, once) {
|
|
||||||
this.count++;
|
|
||||||
ctx.emit("newListener", name, fn);
|
|
||||||
this.list.unshift([fn, once]);
|
|
||||||
}
|
|
||||||
remove(ctx, name, fn) {
|
|
||||||
for (let i = 0, n = this.list.length; i < n; i++) {
|
|
||||||
const l = this.list[i];
|
|
||||||
if (l[0] === fn) {
|
|
||||||
this.list.splice(i, 1);
|
|
||||||
if (this.count === 1) delete ctx._events[name];
|
|
||||||
ctx.emit("removeListener", name, fn);
|
|
||||||
this.count--;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
removeAll(ctx, name) {
|
|
||||||
const list = [...this.list];
|
|
||||||
this.list = [];
|
|
||||||
if (this.count === list.length) delete ctx._events[name];
|
|
||||||
for (let i = list.length - 1; i >= 0; i--) {
|
|
||||||
ctx.emit("removeListener", name, list[i][0]);
|
|
||||||
}
|
|
||||||
this.count -= list.length;
|
|
||||||
}
|
|
||||||
emit(ctx, name, ...args) {
|
|
||||||
const list = [...this.list];
|
|
||||||
for (let i = 0, n = list.length; i < n; i++) {
|
|
||||||
const l = list[i];
|
|
||||||
if (l[1] === true) this.remove(ctx, name, l[0]);
|
|
||||||
Reflect.apply(l[0], ctx, args);
|
|
||||||
}
|
|
||||||
return list.length > 0;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
function appendListener(ctx, name, fn, once) {
|
|
||||||
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
|
||||||
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
|
||||||
e.append(ctx, name, fn, once);
|
|
||||||
return ctx;
|
|
||||||
}
|
|
||||||
function prependListener(ctx, name, fn, once) {
|
|
||||||
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
|
||||||
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
|
||||||
e.prepend(ctx, name, fn, once);
|
|
||||||
return ctx;
|
|
||||||
}
|
|
||||||
function removeListener(ctx, name, fn) {
|
|
||||||
if (ctx._events === void 0) return ctx;
|
|
||||||
const e = ctx._events[name];
|
|
||||||
if (e !== void 0) e.remove(ctx, name, fn);
|
|
||||||
return ctx;
|
|
||||||
}
|
|
||||||
function throwUnhandledError(...args) {
|
|
||||||
let err;
|
|
||||||
if (args.length > 0) err = args[0];
|
|
||||||
if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err);
|
|
||||||
if (Error.captureStackTrace) {
|
|
||||||
Error.captureStackTrace(err, exports.prototype.emit);
|
|
||||||
}
|
|
||||||
queueMicrotask(() => {
|
|
||||||
throw err;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
module.exports = exports = class EventEmitter {
|
|
||||||
constructor() {
|
|
||||||
this._events = /* @__PURE__ */ Object.create(null);
|
|
||||||
}
|
|
||||||
addListener(name, fn) {
|
|
||||||
return appendListener(this, name, fn, false);
|
|
||||||
}
|
|
||||||
addOnceListener(name, fn) {
|
|
||||||
return appendListener(this, name, fn, true);
|
|
||||||
}
|
|
||||||
prependListener(name, fn) {
|
|
||||||
return prependListener(this, name, fn, false);
|
|
||||||
}
|
|
||||||
prependOnceListener(name, fn) {
|
|
||||||
return prependListener(this, name, fn, true);
|
|
||||||
}
|
|
||||||
removeListener(name, fn) {
|
|
||||||
return removeListener(this, name, fn);
|
|
||||||
}
|
|
||||||
on(name, fn) {
|
|
||||||
return appendListener(this, name, fn, false);
|
|
||||||
}
|
|
||||||
once(name, fn) {
|
|
||||||
return appendListener(this, name, fn, true);
|
|
||||||
}
|
|
||||||
off(name, fn) {
|
|
||||||
return removeListener(this, name, fn);
|
|
||||||
}
|
|
||||||
emit(name, ...args) {
|
|
||||||
if (name === "error" && this._events !== void 0 && this._events.error === void 0) {
|
|
||||||
throwUnhandledError(...args);
|
|
||||||
}
|
|
||||||
if (this._events === void 0) return false;
|
|
||||||
const e = this._events[name];
|
|
||||||
return e === void 0 ? false : e.emit(this, name, ...args);
|
|
||||||
}
|
|
||||||
listeners(name) {
|
|
||||||
if (this._events === void 0) return [];
|
|
||||||
const e = this._events[name];
|
|
||||||
return e === void 0 ? [] : [...e.list];
|
|
||||||
}
|
|
||||||
listenerCount(name) {
|
|
||||||
if (this._events === void 0) return 0;
|
|
||||||
const e = this._events[name];
|
|
||||||
return e === void 0 ? 0 : e.list.length;
|
|
||||||
}
|
|
||||||
getMaxListeners() {
|
|
||||||
return EventEmitter.defaultMaxListeners;
|
|
||||||
}
|
|
||||||
setMaxListeners(n) {
|
|
||||||
}
|
|
||||||
removeAllListeners(name) {
|
|
||||||
if (arguments.length === 0) {
|
|
||||||
for (const key of Reflect.ownKeys(this._events)) {
|
|
||||||
if (key === "removeListener") continue;
|
|
||||||
this.removeAllListeners(key);
|
|
||||||
}
|
|
||||||
this.removeAllListeners("removeListener");
|
|
||||||
} else {
|
|
||||||
const e = this._events[name];
|
|
||||||
if (e !== void 0) e.removeAll(this, name);
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
exports.EventEmitter = exports;
|
|
||||||
exports.errors = errors;
|
|
||||||
exports.defaultMaxListeners = 10;
|
|
||||||
exports.on = function on(emitter, name, opts = {}) {
|
|
||||||
const { signal } = opts;
|
|
||||||
if (signal && signal.aborted) {
|
|
||||||
throw errors.OPERATION_ABORTED(signal.reason);
|
|
||||||
}
|
|
||||||
let error = null;
|
|
||||||
let done = false;
|
|
||||||
const events = [];
|
|
||||||
const promises = [];
|
|
||||||
if (name !== "error") emitter.on("error", onerror);
|
|
||||||
if (signal) signal.addEventListener("abort", onabort);
|
|
||||||
emitter.on(name, onevent);
|
|
||||||
return {
|
|
||||||
next() {
|
|
||||||
if (events.length) {
|
|
||||||
return Promise.resolve({ value: events.shift(), done: false });
|
|
||||||
}
|
|
||||||
if (error) {
|
|
||||||
const err = error;
|
|
||||||
error = null;
|
|
||||||
return Promise.reject(err);
|
|
||||||
}
|
|
||||||
if (done) return onclose();
|
|
||||||
return new Promise((resolve, reject) => promises.push({ resolve, reject }));
|
|
||||||
},
|
|
||||||
return() {
|
|
||||||
return onclose();
|
|
||||||
},
|
|
||||||
throw(err) {
|
|
||||||
return onerror(err);
|
|
||||||
},
|
|
||||||
[Symbol.asyncIterator]() {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
function onevent(...args) {
|
|
||||||
if (promises.length) {
|
|
||||||
promises.shift().resolve({ value: args, done: false });
|
|
||||||
} else {
|
|
||||||
events.push(args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function onerror(err) {
|
|
||||||
emitter.off(name, onevent).off("error", onerror);
|
|
||||||
if (promises.length) {
|
|
||||||
promises.shift().reject(err);
|
|
||||||
} else {
|
|
||||||
error = err;
|
|
||||||
}
|
|
||||||
return Promise.resolve({ done: true });
|
|
||||||
}
|
|
||||||
function onabort() {
|
|
||||||
signal.removeEventListener("abort", onabort);
|
|
||||||
onerror(errors.OPERATION_ABORTED(signal.reason));
|
|
||||||
}
|
|
||||||
function onclose() {
|
|
||||||
emitter.off(name, onevent);
|
|
||||||
if (name !== "error") emitter.off("error", onerror);
|
|
||||||
if (signal) signal.removeEventListener("abort", onabort);
|
|
||||||
done = true;
|
|
||||||
if (promises.length) promises.shift().resolve({ done: true });
|
|
||||||
return Promise.resolve({ done: true });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
exports.once = function once(emitter, name, opts = {}) {
|
|
||||||
const { signal } = opts;
|
|
||||||
if (signal && signal.aborted) {
|
|
||||||
return Promise.reject(errors.OPERATION_ABORTED(signal.reason));
|
|
||||||
}
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
if (name !== "error") emitter.on("error", onerror);
|
|
||||||
if (signal) signal.addEventListener("abort", onabort);
|
|
||||||
emitter.once(name, onevent);
|
|
||||||
function onevent(...args) {
|
|
||||||
if (name !== "error") emitter.off("error", onerror);
|
|
||||||
if (signal) signal.removeEventListener("abort", onabort);
|
|
||||||
resolve(args);
|
|
||||||
}
|
|
||||||
function onerror(err) {
|
|
||||||
emitter.off(name, onevent);
|
|
||||||
if (name !== "error") emitter.off("error", onerror);
|
|
||||||
reject(err);
|
|
||||||
}
|
|
||||||
function onabort() {
|
|
||||||
signal.removeEventListener("abort", onabort);
|
|
||||||
onerror(errors.OPERATION_ABORTED(signal.reason));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
exports.forward = function forward(from, to, names, opts = {}) {
|
|
||||||
if (typeof names === "string") names = [names];
|
|
||||||
const { emit = to.emit.bind(to) } = opts;
|
|
||||||
const listeners = names.map(
|
|
||||||
(name) => function onevent(...args) {
|
|
||||||
emit(name, ...args);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
to.on("newListener", (name) => {
|
|
||||||
const i = names.indexOf(name);
|
|
||||||
if (i !== -1 && to.listenerCount(name) === 0) {
|
|
||||||
from.on(name, listeners[i]);
|
|
||||||
}
|
|
||||||
}).on("removeListener", (name) => {
|
|
||||||
const i = names.indexOf(name);
|
|
||||||
if (i !== -1 && to.listenerCount(name) === 0) {
|
|
||||||
from.off(name, listeners[i]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
exports.listenerCount = function listenerCount(emitter, name) {
|
|
||||||
return emitter.listenerCount(name);
|
|
||||||
};
|
|
||||||
exports.getMaxListeners = function getMaxListeners(emitter) {
|
|
||||||
if (typeof emitter.getMaxListeners === "function") {
|
|
||||||
return emitter.getMaxListeners();
|
|
||||||
}
|
|
||||||
return exports.defaultMaxListeners;
|
|
||||||
};
|
|
||||||
exports.setMaxListeners = function setMaxListeners(n, ...emitters) {
|
|
||||||
if (emitters.length === 0) exports.defaultMaxListeners = n;
|
|
||||||
else {
|
|
||||||
for (const emitter of emitters) {
|
|
||||||
if (typeof emitter.setMaxListeners === "function") {
|
|
||||||
emitter.setMaxListeners(n);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// ../../node_modules/bare-dns/binding.js
|
// ../../node_modules/bare-dns/binding.js
|
||||||
var require_binding4 = __commonJS({
|
var require_binding4 = __commonJS({
|
||||||
"../../node_modules/bare-dns/binding.js"(exports, module) {
|
"../../node_modules/bare-dns/binding.js"(exports, module) {
|
||||||
@@ -7406,7 +7413,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
"../../node_modules/bare-http1/lib/client-connection.js"(exports, module) {
|
"../../node_modules/bare-http1/lib/client-connection.js"(exports, module) {
|
||||||
var HTTPParser = require_bare_http_parser();
|
var HTTPParser = require_bare_http_parser();
|
||||||
var HTTPIncomingMessage = require_incoming_message();
|
var HTTPIncomingMessage = require_incoming_message();
|
||||||
var errors = require_errors3();
|
var errors = require_errors4();
|
||||||
var {
|
var {
|
||||||
constants: { RESPONSE, DATA, END }
|
constants: { RESPONSE, DATA, END }
|
||||||
} = HTTPParser;
|
} = HTTPParser;
|
||||||
@@ -7530,7 +7537,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
var EventEmitter = require_bare_events();
|
var EventEmitter = require_bare_events();
|
||||||
var tcp = require_bare_tcp();
|
var tcp = require_bare_tcp();
|
||||||
var HTTPClientConnection = require_client_connection();
|
var HTTPClientConnection = require_client_connection();
|
||||||
var errors = require_errors3();
|
var errors = require_errors4();
|
||||||
var HTTPSocketSet = class {
|
var HTTPSocketSet = class {
|
||||||
constructor() {
|
constructor() {
|
||||||
this._sockets = /* @__PURE__ */ new Map();
|
this._sockets = /* @__PURE__ */ new Map();
|
||||||
@@ -8159,7 +8166,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
exports.ClientRequest = require_client_request();
|
exports.ClientRequest = require_client_request();
|
||||||
exports.ClientConnection = require_client_connection();
|
exports.ClientConnection = require_client_connection();
|
||||||
exports.constants = require_constants3();
|
exports.constants = require_constants3();
|
||||||
exports.errors = require_errors3();
|
exports.errors = require_errors4();
|
||||||
exports.METHODS = Object.values(exports.constants.method);
|
exports.METHODS = Object.values(exports.constants.method);
|
||||||
exports.STATUS_CODES = exports.constants.status;
|
exports.STATUS_CODES = exports.constants.status;
|
||||||
exports.createServer = function createServer(opts, onrequest) {
|
exports.createServer = function createServer(opts, onrequest) {
|
||||||
@@ -8697,9 +8704,9 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-net/lib/constants.js
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-net/lib/constants.js
|
||||||
var require_constants6 = __commonJS({
|
var require_constants6 = __commonJS({
|
||||||
"../../node_modules/bare-net/lib/constants.js"(exports, module) {
|
"../bare-os-openssh/vendor/bare-node-shims/bare-net/lib/constants.js"(exports, module) {
|
||||||
module.exports = {
|
module.exports = {
|
||||||
type: {
|
type: {
|
||||||
TCP: 1,
|
TCP: 1,
|
||||||
@@ -8712,9 +8719,9 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-net/index.js
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-net/index.js
|
||||||
var require_bare_net = __commonJS({
|
var require_bare_net = __commonJS({
|
||||||
"../../node_modules/bare-net/index.js"(exports) {
|
"../bare-os-openssh/vendor/bare-node-shims/bare-net/index.js"(exports) {
|
||||||
var EventEmitter = require_bare_events();
|
var EventEmitter = require_bare_events();
|
||||||
var { Duplex } = require_bare_stream();
|
var { Duplex } = require_bare_stream();
|
||||||
var tcp = require_bare_tcp();
|
var tcp = require_bare_tcp();
|
||||||
|
|||||||
+6164
-10
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -342,10 +342,17 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
+6169
-163
File diff suppressed because it is too large
Load Diff
@@ -2074,10 +2074,17 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -5,13 +5,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||||
var __getProtoOf = Object.getPrototypeOf;
|
var __getProtoOf = Object.getPrototypeOf;
|
||||||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||||
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
var __commonJS = (cb, mod) => function __require() {
|
||||||
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
||||||
}) : x)(function(x) {
|
|
||||||
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
||||||
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
||||||
});
|
|
||||||
var __commonJS = (cb, mod) => function __require2() {
|
|
||||||
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||||||
};
|
};
|
||||||
var __export = (target, all) => {
|
var __export = (target, all) => {
|
||||||
@@ -36,10 +30,323 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
));
|
));
|
||||||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/lib/errors.js
|
||||||
|
var require_errors = __commonJS({
|
||||||
|
"../../node_modules/bare-events/lib/errors.js"(exports, module) {
|
||||||
|
module.exports = class EventEmitterError extends Error {
|
||||||
|
constructor(msg, code, fn = EventEmitterError, opts) {
|
||||||
|
super(`${code}: ${msg}`, opts);
|
||||||
|
this.code = code;
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(this, fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get name() {
|
||||||
|
return "EventEmitterError";
|
||||||
|
}
|
||||||
|
static OPERATION_ABORTED(cause, msg = "Operation aborted") {
|
||||||
|
return new EventEmitterError(msg, "OPERATION_ABORTED", EventEmitterError.OPERATION_ABORTED, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
static UNHANDLED_ERROR(cause, msg = "Unhandled error") {
|
||||||
|
return new EventEmitterError(msg, "UNHANDLED_ERROR", EventEmitterError.UNHANDLED_ERROR, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/index.js
|
||||||
|
var require_bare_events = __commonJS({
|
||||||
|
"../../node_modules/bare-events/index.js"(exports, module) {
|
||||||
|
var errors = require_errors();
|
||||||
|
var EventListener = class {
|
||||||
|
constructor() {
|
||||||
|
this.list = [];
|
||||||
|
this.count = 0;
|
||||||
|
}
|
||||||
|
append(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.push([fn, once]);
|
||||||
|
}
|
||||||
|
prepend(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.unshift([fn, once]);
|
||||||
|
}
|
||||||
|
remove(ctx, name, fn) {
|
||||||
|
for (let i = 0, n = this.list.length; i < n; i++) {
|
||||||
|
const l = this.list[i];
|
||||||
|
if (l[0] === fn) {
|
||||||
|
this.list.splice(i, 1);
|
||||||
|
if (this.count === 1) delete ctx._events[name];
|
||||||
|
ctx.emit("removeListener", name, fn);
|
||||||
|
this.count--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
removeAll(ctx, name) {
|
||||||
|
const list = [...this.list];
|
||||||
|
this.list = [];
|
||||||
|
if (this.count === list.length) delete ctx._events[name];
|
||||||
|
for (let i = list.length - 1; i >= 0; i--) {
|
||||||
|
ctx.emit("removeListener", name, list[i][0]);
|
||||||
|
}
|
||||||
|
this.count -= list.length;
|
||||||
|
}
|
||||||
|
emit(ctx, name, ...args) {
|
||||||
|
const list = [...this.list];
|
||||||
|
for (let i = 0, n = list.length; i < n; i++) {
|
||||||
|
const l = list[i];
|
||||||
|
if (l[1] === true) this.remove(ctx, name, l[0]);
|
||||||
|
Reflect.apply(l[0], ctx, args);
|
||||||
|
}
|
||||||
|
return list.length > 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function appendListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.append(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function prependListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.prepend(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function removeListener(ctx, name, fn) {
|
||||||
|
if (ctx._events === void 0) return ctx;
|
||||||
|
const e = ctx._events[name];
|
||||||
|
if (e !== void 0) e.remove(ctx, name, fn);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function throwUnhandledError(...args) {
|
||||||
|
let err;
|
||||||
|
if (args.length > 0) err = args[0];
|
||||||
|
if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err);
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(err, exports.prototype.emit);
|
||||||
|
}
|
||||||
|
queueMicrotask(() => {
|
||||||
|
throw err;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
module.exports = exports = class EventEmitter {
|
||||||
|
constructor() {
|
||||||
|
this._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
}
|
||||||
|
addListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
addOnceListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
prependListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
prependOnceListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
removeListener(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
on(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
once(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
off(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
emit(name, ...args) {
|
||||||
|
if (name === "error" && this._events !== void 0 && this._events.error === void 0) {
|
||||||
|
throwUnhandledError(...args);
|
||||||
|
}
|
||||||
|
if (this._events === void 0) return false;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? false : e.emit(this, name, ...args);
|
||||||
|
}
|
||||||
|
listeners(name) {
|
||||||
|
if (this._events === void 0) return [];
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? [] : [...e.list];
|
||||||
|
}
|
||||||
|
listenerCount(name) {
|
||||||
|
if (this._events === void 0) return 0;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? 0 : e.list.length;
|
||||||
|
}
|
||||||
|
getMaxListeners() {
|
||||||
|
return EventEmitter.defaultMaxListeners;
|
||||||
|
}
|
||||||
|
setMaxListeners(n) {
|
||||||
|
}
|
||||||
|
removeAllListeners(name) {
|
||||||
|
if (arguments.length === 0) {
|
||||||
|
for (const key of Reflect.ownKeys(this._events)) {
|
||||||
|
if (key === "removeListener") continue;
|
||||||
|
this.removeAllListeners(key);
|
||||||
|
}
|
||||||
|
this.removeAllListeners("removeListener");
|
||||||
|
} else {
|
||||||
|
const e = this._events[name];
|
||||||
|
if (e !== void 0) e.removeAll(this, name);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.EventEmitter = exports;
|
||||||
|
exports.errors = errors;
|
||||||
|
exports.defaultMaxListeners = 10;
|
||||||
|
exports.on = function on(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
throw errors.OPERATION_ABORTED(signal.reason);
|
||||||
|
}
|
||||||
|
let error = null;
|
||||||
|
let done = false;
|
||||||
|
const events = [];
|
||||||
|
const promises = [];
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.on(name, onevent);
|
||||||
|
return {
|
||||||
|
next() {
|
||||||
|
if (events.length) {
|
||||||
|
return Promise.resolve({ value: events.shift(), done: false });
|
||||||
|
}
|
||||||
|
if (error) {
|
||||||
|
const err = error;
|
||||||
|
error = null;
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
if (done) return onclose();
|
||||||
|
return new Promise((resolve, reject) => promises.push({ resolve, reject }));
|
||||||
|
},
|
||||||
|
return() {
|
||||||
|
return onclose();
|
||||||
|
},
|
||||||
|
throw(err) {
|
||||||
|
return onerror(err);
|
||||||
|
},
|
||||||
|
[Symbol.asyncIterator]() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function onevent(...args) {
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().resolve({ value: args, done: false });
|
||||||
|
} else {
|
||||||
|
events.push(args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent).off("error", onerror);
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().reject(err);
|
||||||
|
} else {
|
||||||
|
error = err;
|
||||||
|
}
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
function onclose() {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
done = true;
|
||||||
|
if (promises.length) promises.shift().resolve({ done: true });
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.once = function once(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
return Promise.reject(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.once(name, onevent);
|
||||||
|
function onevent(...args) {
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
resolve(args);
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.forward = function forward(from, to, names, opts = {}) {
|
||||||
|
if (typeof names === "string") names = [names];
|
||||||
|
const { emit = to.emit.bind(to) } = opts;
|
||||||
|
const listeners = names.map(
|
||||||
|
(name) => function onevent(...args) {
|
||||||
|
emit(name, ...args);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
to.on("newListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.on(name, listeners[i]);
|
||||||
|
}
|
||||||
|
}).on("removeListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.off(name, listeners[i]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.listenerCount = function listenerCount(emitter, name) {
|
||||||
|
return emitter.listenerCount(name);
|
||||||
|
};
|
||||||
|
exports.getMaxListeners = function getMaxListeners(emitter) {
|
||||||
|
if (typeof emitter.getMaxListeners === "function") {
|
||||||
|
return emitter.getMaxListeners();
|
||||||
|
}
|
||||||
|
return exports.defaultMaxListeners;
|
||||||
|
};
|
||||||
|
exports.setMaxListeners = function setMaxListeners(n, ...emitters) {
|
||||||
|
if (emitters.length === 0) exports.defaultMaxListeners = n;
|
||||||
|
else {
|
||||||
|
for (const emitter of emitters) {
|
||||||
|
if (typeof emitter.setMaxListeners === "function") {
|
||||||
|
emitter.setMaxListeners(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
+2931
-823
File diff suppressed because it is too large
Load Diff
@@ -5,13 +5,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||||
var __getProtoOf = Object.getPrototypeOf;
|
var __getProtoOf = Object.getPrototypeOf;
|
||||||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||||
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
var __commonJS = (cb, mod) => function __require() {
|
||||||
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
||||||
}) : x)(function(x) {
|
|
||||||
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
||||||
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
||||||
});
|
|
||||||
var __commonJS = (cb, mod) => function __require2() {
|
|
||||||
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||||||
};
|
};
|
||||||
var __export = (target, all) => {
|
var __export = (target, all) => {
|
||||||
@@ -1585,10 +1579,323 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/lib/errors.js
|
||||||
|
var require_errors2 = __commonJS({
|
||||||
|
"../../node_modules/bare-events/lib/errors.js"(exports, module) {
|
||||||
|
module.exports = class EventEmitterError extends Error {
|
||||||
|
constructor(msg, code, fn = EventEmitterError, opts) {
|
||||||
|
super(`${code}: ${msg}`, opts);
|
||||||
|
this.code = code;
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(this, fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get name() {
|
||||||
|
return "EventEmitterError";
|
||||||
|
}
|
||||||
|
static OPERATION_ABORTED(cause, msg = "Operation aborted") {
|
||||||
|
return new EventEmitterError(msg, "OPERATION_ABORTED", EventEmitterError.OPERATION_ABORTED, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
static UNHANDLED_ERROR(cause, msg = "Unhandled error") {
|
||||||
|
return new EventEmitterError(msg, "UNHANDLED_ERROR", EventEmitterError.UNHANDLED_ERROR, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/index.js
|
||||||
|
var require_bare_events = __commonJS({
|
||||||
|
"../../node_modules/bare-events/index.js"(exports, module) {
|
||||||
|
var errors = require_errors2();
|
||||||
|
var EventListener = class {
|
||||||
|
constructor() {
|
||||||
|
this.list = [];
|
||||||
|
this.count = 0;
|
||||||
|
}
|
||||||
|
append(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.push([fn, once]);
|
||||||
|
}
|
||||||
|
prepend(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.unshift([fn, once]);
|
||||||
|
}
|
||||||
|
remove(ctx, name, fn) {
|
||||||
|
for (let i = 0, n = this.list.length; i < n; i++) {
|
||||||
|
const l = this.list[i];
|
||||||
|
if (l[0] === fn) {
|
||||||
|
this.list.splice(i, 1);
|
||||||
|
if (this.count === 1) delete ctx._events[name];
|
||||||
|
ctx.emit("removeListener", name, fn);
|
||||||
|
this.count--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
removeAll(ctx, name) {
|
||||||
|
const list = [...this.list];
|
||||||
|
this.list = [];
|
||||||
|
if (this.count === list.length) delete ctx._events[name];
|
||||||
|
for (let i = list.length - 1; i >= 0; i--) {
|
||||||
|
ctx.emit("removeListener", name, list[i][0]);
|
||||||
|
}
|
||||||
|
this.count -= list.length;
|
||||||
|
}
|
||||||
|
emit(ctx, name, ...args) {
|
||||||
|
const list = [...this.list];
|
||||||
|
for (let i = 0, n = list.length; i < n; i++) {
|
||||||
|
const l = list[i];
|
||||||
|
if (l[1] === true) this.remove(ctx, name, l[0]);
|
||||||
|
Reflect.apply(l[0], ctx, args);
|
||||||
|
}
|
||||||
|
return list.length > 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function appendListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.append(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function prependListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.prepend(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function removeListener(ctx, name, fn) {
|
||||||
|
if (ctx._events === void 0) return ctx;
|
||||||
|
const e = ctx._events[name];
|
||||||
|
if (e !== void 0) e.remove(ctx, name, fn);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function throwUnhandledError(...args) {
|
||||||
|
let err;
|
||||||
|
if (args.length > 0) err = args[0];
|
||||||
|
if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err);
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(err, exports.prototype.emit);
|
||||||
|
}
|
||||||
|
queueMicrotask(() => {
|
||||||
|
throw err;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
module.exports = exports = class EventEmitter {
|
||||||
|
constructor() {
|
||||||
|
this._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
}
|
||||||
|
addListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
addOnceListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
prependListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
prependOnceListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
removeListener(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
on(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
once(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
off(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
emit(name, ...args) {
|
||||||
|
if (name === "error" && this._events !== void 0 && this._events.error === void 0) {
|
||||||
|
throwUnhandledError(...args);
|
||||||
|
}
|
||||||
|
if (this._events === void 0) return false;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? false : e.emit(this, name, ...args);
|
||||||
|
}
|
||||||
|
listeners(name) {
|
||||||
|
if (this._events === void 0) return [];
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? [] : [...e.list];
|
||||||
|
}
|
||||||
|
listenerCount(name) {
|
||||||
|
if (this._events === void 0) return 0;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? 0 : e.list.length;
|
||||||
|
}
|
||||||
|
getMaxListeners() {
|
||||||
|
return EventEmitter.defaultMaxListeners;
|
||||||
|
}
|
||||||
|
setMaxListeners(n) {
|
||||||
|
}
|
||||||
|
removeAllListeners(name) {
|
||||||
|
if (arguments.length === 0) {
|
||||||
|
for (const key of Reflect.ownKeys(this._events)) {
|
||||||
|
if (key === "removeListener") continue;
|
||||||
|
this.removeAllListeners(key);
|
||||||
|
}
|
||||||
|
this.removeAllListeners("removeListener");
|
||||||
|
} else {
|
||||||
|
const e = this._events[name];
|
||||||
|
if (e !== void 0) e.removeAll(this, name);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.EventEmitter = exports;
|
||||||
|
exports.errors = errors;
|
||||||
|
exports.defaultMaxListeners = 10;
|
||||||
|
exports.on = function on(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
throw errors.OPERATION_ABORTED(signal.reason);
|
||||||
|
}
|
||||||
|
let error = null;
|
||||||
|
let done = false;
|
||||||
|
const events = [];
|
||||||
|
const promises = [];
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.on(name, onevent);
|
||||||
|
return {
|
||||||
|
next() {
|
||||||
|
if (events.length) {
|
||||||
|
return Promise.resolve({ value: events.shift(), done: false });
|
||||||
|
}
|
||||||
|
if (error) {
|
||||||
|
const err = error;
|
||||||
|
error = null;
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
if (done) return onclose();
|
||||||
|
return new Promise((resolve, reject) => promises.push({ resolve, reject }));
|
||||||
|
},
|
||||||
|
return() {
|
||||||
|
return onclose();
|
||||||
|
},
|
||||||
|
throw(err) {
|
||||||
|
return onerror(err);
|
||||||
|
},
|
||||||
|
[Symbol.asyncIterator]() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function onevent(...args) {
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().resolve({ value: args, done: false });
|
||||||
|
} else {
|
||||||
|
events.push(args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent).off("error", onerror);
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().reject(err);
|
||||||
|
} else {
|
||||||
|
error = err;
|
||||||
|
}
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
function onclose() {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
done = true;
|
||||||
|
if (promises.length) promises.shift().resolve({ done: true });
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.once = function once(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
return Promise.reject(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.once(name, onevent);
|
||||||
|
function onevent(...args) {
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
resolve(args);
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.forward = function forward(from, to, names, opts = {}) {
|
||||||
|
if (typeof names === "string") names = [names];
|
||||||
|
const { emit = to.emit.bind(to) } = opts;
|
||||||
|
const listeners = names.map(
|
||||||
|
(name) => function onevent(...args) {
|
||||||
|
emit(name, ...args);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
to.on("newListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.on(name, listeners[i]);
|
||||||
|
}
|
||||||
|
}).on("removeListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.off(name, listeners[i]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.listenerCount = function listenerCount(emitter, name) {
|
||||||
|
return emitter.listenerCount(name);
|
||||||
|
};
|
||||||
|
exports.getMaxListeners = function getMaxListeners(emitter) {
|
||||||
|
if (typeof emitter.getMaxListeners === "function") {
|
||||||
|
return emitter.getMaxListeners();
|
||||||
|
}
|
||||||
|
return exports.defaultMaxListeners;
|
||||||
|
};
|
||||||
|
exports.setMaxListeners = function setMaxListeners(n, ...emitters) {
|
||||||
|
if (emitters.length === 0) exports.defaultMaxListeners = n;
|
||||||
|
else {
|
||||||
|
for (const emitter of emitters) {
|
||||||
|
if (typeof emitter.setMaxListeners === "function") {
|
||||||
|
emitter.setMaxListeners(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
+7353
-38
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1850,10 +1850,17 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -5,13 +5,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||||
var __getProtoOf = Object.getPrototypeOf;
|
var __getProtoOf = Object.getPrototypeOf;
|
||||||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||||
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
var __commonJS = (cb, mod) => function __require() {
|
||||||
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
||||||
}) : x)(function(x) {
|
|
||||||
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
||||||
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
||||||
});
|
|
||||||
var __commonJS = (cb, mod) => function __require2() {
|
|
||||||
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
||||||
};
|
};
|
||||||
var __export = (target, all) => {
|
var __export = (target, all) => {
|
||||||
@@ -36,10 +30,323 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
));
|
));
|
||||||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/lib/errors.js
|
||||||
|
var require_errors = __commonJS({
|
||||||
|
"../../node_modules/bare-events/lib/errors.js"(exports, module) {
|
||||||
|
module.exports = class EventEmitterError extends Error {
|
||||||
|
constructor(msg, code, fn = EventEmitterError, opts) {
|
||||||
|
super(`${code}: ${msg}`, opts);
|
||||||
|
this.code = code;
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(this, fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get name() {
|
||||||
|
return "EventEmitterError";
|
||||||
|
}
|
||||||
|
static OPERATION_ABORTED(cause, msg = "Operation aborted") {
|
||||||
|
return new EventEmitterError(msg, "OPERATION_ABORTED", EventEmitterError.OPERATION_ABORTED, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
static UNHANDLED_ERROR(cause, msg = "Unhandled error") {
|
||||||
|
return new EventEmitterError(msg, "UNHANDLED_ERROR", EventEmitterError.UNHANDLED_ERROR, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/index.js
|
||||||
|
var require_bare_events = __commonJS({
|
||||||
|
"../../node_modules/bare-events/index.js"(exports, module) {
|
||||||
|
var errors = require_errors();
|
||||||
|
var EventListener = class {
|
||||||
|
constructor() {
|
||||||
|
this.list = [];
|
||||||
|
this.count = 0;
|
||||||
|
}
|
||||||
|
append(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.push([fn, once]);
|
||||||
|
}
|
||||||
|
prepend(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.unshift([fn, once]);
|
||||||
|
}
|
||||||
|
remove(ctx, name, fn) {
|
||||||
|
for (let i = 0, n = this.list.length; i < n; i++) {
|
||||||
|
const l = this.list[i];
|
||||||
|
if (l[0] === fn) {
|
||||||
|
this.list.splice(i, 1);
|
||||||
|
if (this.count === 1) delete ctx._events[name];
|
||||||
|
ctx.emit("removeListener", name, fn);
|
||||||
|
this.count--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
removeAll(ctx, name) {
|
||||||
|
const list = [...this.list];
|
||||||
|
this.list = [];
|
||||||
|
if (this.count === list.length) delete ctx._events[name];
|
||||||
|
for (let i = list.length - 1; i >= 0; i--) {
|
||||||
|
ctx.emit("removeListener", name, list[i][0]);
|
||||||
|
}
|
||||||
|
this.count -= list.length;
|
||||||
|
}
|
||||||
|
emit(ctx, name, ...args) {
|
||||||
|
const list = [...this.list];
|
||||||
|
for (let i = 0, n = list.length; i < n; i++) {
|
||||||
|
const l = list[i];
|
||||||
|
if (l[1] === true) this.remove(ctx, name, l[0]);
|
||||||
|
Reflect.apply(l[0], ctx, args);
|
||||||
|
}
|
||||||
|
return list.length > 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function appendListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.append(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function prependListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.prepend(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function removeListener(ctx, name, fn) {
|
||||||
|
if (ctx._events === void 0) return ctx;
|
||||||
|
const e = ctx._events[name];
|
||||||
|
if (e !== void 0) e.remove(ctx, name, fn);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function throwUnhandledError(...args) {
|
||||||
|
let err;
|
||||||
|
if (args.length > 0) err = args[0];
|
||||||
|
if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err);
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(err, exports.prototype.emit);
|
||||||
|
}
|
||||||
|
queueMicrotask(() => {
|
||||||
|
throw err;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
module.exports = exports = class EventEmitter {
|
||||||
|
constructor() {
|
||||||
|
this._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
}
|
||||||
|
addListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
addOnceListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
prependListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
prependOnceListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
removeListener(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
on(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
once(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
off(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
emit(name, ...args) {
|
||||||
|
if (name === "error" && this._events !== void 0 && this._events.error === void 0) {
|
||||||
|
throwUnhandledError(...args);
|
||||||
|
}
|
||||||
|
if (this._events === void 0) return false;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? false : e.emit(this, name, ...args);
|
||||||
|
}
|
||||||
|
listeners(name) {
|
||||||
|
if (this._events === void 0) return [];
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? [] : [...e.list];
|
||||||
|
}
|
||||||
|
listenerCount(name) {
|
||||||
|
if (this._events === void 0) return 0;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? 0 : e.list.length;
|
||||||
|
}
|
||||||
|
getMaxListeners() {
|
||||||
|
return EventEmitter.defaultMaxListeners;
|
||||||
|
}
|
||||||
|
setMaxListeners(n) {
|
||||||
|
}
|
||||||
|
removeAllListeners(name) {
|
||||||
|
if (arguments.length === 0) {
|
||||||
|
for (const key of Reflect.ownKeys(this._events)) {
|
||||||
|
if (key === "removeListener") continue;
|
||||||
|
this.removeAllListeners(key);
|
||||||
|
}
|
||||||
|
this.removeAllListeners("removeListener");
|
||||||
|
} else {
|
||||||
|
const e = this._events[name];
|
||||||
|
if (e !== void 0) e.removeAll(this, name);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.EventEmitter = exports;
|
||||||
|
exports.errors = errors;
|
||||||
|
exports.defaultMaxListeners = 10;
|
||||||
|
exports.on = function on(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
throw errors.OPERATION_ABORTED(signal.reason);
|
||||||
|
}
|
||||||
|
let error = null;
|
||||||
|
let done = false;
|
||||||
|
const events = [];
|
||||||
|
const promises = [];
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.on(name, onevent);
|
||||||
|
return {
|
||||||
|
next() {
|
||||||
|
if (events.length) {
|
||||||
|
return Promise.resolve({ value: events.shift(), done: false });
|
||||||
|
}
|
||||||
|
if (error) {
|
||||||
|
const err = error;
|
||||||
|
error = null;
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
if (done) return onclose();
|
||||||
|
return new Promise((resolve, reject) => promises.push({ resolve, reject }));
|
||||||
|
},
|
||||||
|
return() {
|
||||||
|
return onclose();
|
||||||
|
},
|
||||||
|
throw(err) {
|
||||||
|
return onerror(err);
|
||||||
|
},
|
||||||
|
[Symbol.asyncIterator]() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function onevent(...args) {
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().resolve({ value: args, done: false });
|
||||||
|
} else {
|
||||||
|
events.push(args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent).off("error", onerror);
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().reject(err);
|
||||||
|
} else {
|
||||||
|
error = err;
|
||||||
|
}
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
function onclose() {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
done = true;
|
||||||
|
if (promises.length) promises.shift().resolve({ done: true });
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.once = function once(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
return Promise.reject(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.once(name, onevent);
|
||||||
|
function onevent(...args) {
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
resolve(args);
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.forward = function forward(from, to, names, opts = {}) {
|
||||||
|
if (typeof names === "string") names = [names];
|
||||||
|
const { emit = to.emit.bind(to) } = opts;
|
||||||
|
const listeners = names.map(
|
||||||
|
(name) => function onevent(...args) {
|
||||||
|
emit(name, ...args);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
to.on("newListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.on(name, listeners[i]);
|
||||||
|
}
|
||||||
|
}).on("removeListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.off(name, listeners[i]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.listenerCount = function listenerCount(emitter, name) {
|
||||||
|
return emitter.listenerCount(name);
|
||||||
|
};
|
||||||
|
exports.getMaxListeners = function getMaxListeners(emitter) {
|
||||||
|
if (typeof emitter.getMaxListeners === "function") {
|
||||||
|
return emitter.getMaxListeners();
|
||||||
|
}
|
||||||
|
return exports.defaultMaxListeners;
|
||||||
|
};
|
||||||
|
exports.setMaxListeners = function setMaxListeners(n, ...emitters) {
|
||||||
|
if (emitters.length === 0) exports.defaultMaxListeners = n;
|
||||||
|
else {
|
||||||
|
for (const emitter of emitters) {
|
||||||
|
if (typeof emitter.setMaxListeners === "function") {
|
||||||
|
emitter.setMaxListeners(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -342,10 +342,17 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -342,10 +342,17 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
+320
-313
@@ -36,10 +36,323 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
));
|
));
|
||||||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/lib/errors.js
|
||||||
|
var require_errors = __commonJS({
|
||||||
|
"../../node_modules/bare-events/lib/errors.js"(exports, module) {
|
||||||
|
module.exports = class EventEmitterError extends Error {
|
||||||
|
constructor(msg, code, fn = EventEmitterError, opts) {
|
||||||
|
super(`${code}: ${msg}`, opts);
|
||||||
|
this.code = code;
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(this, fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get name() {
|
||||||
|
return "EventEmitterError";
|
||||||
|
}
|
||||||
|
static OPERATION_ABORTED(cause, msg = "Operation aborted") {
|
||||||
|
return new EventEmitterError(msg, "OPERATION_ABORTED", EventEmitterError.OPERATION_ABORTED, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
static UNHANDLED_ERROR(cause, msg = "Unhandled error") {
|
||||||
|
return new EventEmitterError(msg, "UNHANDLED_ERROR", EventEmitterError.UNHANDLED_ERROR, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/index.js
|
||||||
|
var require_bare_events = __commonJS({
|
||||||
|
"../../node_modules/bare-events/index.js"(exports, module) {
|
||||||
|
var errors = require_errors();
|
||||||
|
var EventListener = class {
|
||||||
|
constructor() {
|
||||||
|
this.list = [];
|
||||||
|
this.count = 0;
|
||||||
|
}
|
||||||
|
append(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.push([fn, once]);
|
||||||
|
}
|
||||||
|
prepend(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.unshift([fn, once]);
|
||||||
|
}
|
||||||
|
remove(ctx, name, fn) {
|
||||||
|
for (let i = 0, n = this.list.length; i < n; i++) {
|
||||||
|
const l = this.list[i];
|
||||||
|
if (l[0] === fn) {
|
||||||
|
this.list.splice(i, 1);
|
||||||
|
if (this.count === 1) delete ctx._events[name];
|
||||||
|
ctx.emit("removeListener", name, fn);
|
||||||
|
this.count--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
removeAll(ctx, name) {
|
||||||
|
const list = [...this.list];
|
||||||
|
this.list = [];
|
||||||
|
if (this.count === list.length) delete ctx._events[name];
|
||||||
|
for (let i = list.length - 1; i >= 0; i--) {
|
||||||
|
ctx.emit("removeListener", name, list[i][0]);
|
||||||
|
}
|
||||||
|
this.count -= list.length;
|
||||||
|
}
|
||||||
|
emit(ctx, name, ...args) {
|
||||||
|
const list = [...this.list];
|
||||||
|
for (let i = 0, n = list.length; i < n; i++) {
|
||||||
|
const l = list[i];
|
||||||
|
if (l[1] === true) this.remove(ctx, name, l[0]);
|
||||||
|
Reflect.apply(l[0], ctx, args);
|
||||||
|
}
|
||||||
|
return list.length > 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function appendListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.append(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function prependListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.prepend(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function removeListener(ctx, name, fn) {
|
||||||
|
if (ctx._events === void 0) return ctx;
|
||||||
|
const e = ctx._events[name];
|
||||||
|
if (e !== void 0) e.remove(ctx, name, fn);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function throwUnhandledError(...args) {
|
||||||
|
let err;
|
||||||
|
if (args.length > 0) err = args[0];
|
||||||
|
if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err);
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(err, exports.prototype.emit);
|
||||||
|
}
|
||||||
|
queueMicrotask(() => {
|
||||||
|
throw err;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
module.exports = exports = class EventEmitter {
|
||||||
|
constructor() {
|
||||||
|
this._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
}
|
||||||
|
addListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
addOnceListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
prependListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
prependOnceListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
removeListener(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
on(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
once(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
off(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
emit(name, ...args) {
|
||||||
|
if (name === "error" && this._events !== void 0 && this._events.error === void 0) {
|
||||||
|
throwUnhandledError(...args);
|
||||||
|
}
|
||||||
|
if (this._events === void 0) return false;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? false : e.emit(this, name, ...args);
|
||||||
|
}
|
||||||
|
listeners(name) {
|
||||||
|
if (this._events === void 0) return [];
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? [] : [...e.list];
|
||||||
|
}
|
||||||
|
listenerCount(name) {
|
||||||
|
if (this._events === void 0) return 0;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? 0 : e.list.length;
|
||||||
|
}
|
||||||
|
getMaxListeners() {
|
||||||
|
return EventEmitter.defaultMaxListeners;
|
||||||
|
}
|
||||||
|
setMaxListeners(n) {
|
||||||
|
}
|
||||||
|
removeAllListeners(name) {
|
||||||
|
if (arguments.length === 0) {
|
||||||
|
for (const key of Reflect.ownKeys(this._events)) {
|
||||||
|
if (key === "removeListener") continue;
|
||||||
|
this.removeAllListeners(key);
|
||||||
|
}
|
||||||
|
this.removeAllListeners("removeListener");
|
||||||
|
} else {
|
||||||
|
const e = this._events[name];
|
||||||
|
if (e !== void 0) e.removeAll(this, name);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.EventEmitter = exports;
|
||||||
|
exports.errors = errors;
|
||||||
|
exports.defaultMaxListeners = 10;
|
||||||
|
exports.on = function on(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
throw errors.OPERATION_ABORTED(signal.reason);
|
||||||
|
}
|
||||||
|
let error = null;
|
||||||
|
let done = false;
|
||||||
|
const events = [];
|
||||||
|
const promises = [];
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.on(name, onevent);
|
||||||
|
return {
|
||||||
|
next() {
|
||||||
|
if (events.length) {
|
||||||
|
return Promise.resolve({ value: events.shift(), done: false });
|
||||||
|
}
|
||||||
|
if (error) {
|
||||||
|
const err = error;
|
||||||
|
error = null;
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
if (done) return onclose();
|
||||||
|
return new Promise((resolve, reject) => promises.push({ resolve, reject }));
|
||||||
|
},
|
||||||
|
return() {
|
||||||
|
return onclose();
|
||||||
|
},
|
||||||
|
throw(err) {
|
||||||
|
return onerror(err);
|
||||||
|
},
|
||||||
|
[Symbol.asyncIterator]() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function onevent(...args) {
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().resolve({ value: args, done: false });
|
||||||
|
} else {
|
||||||
|
events.push(args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent).off("error", onerror);
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().reject(err);
|
||||||
|
} else {
|
||||||
|
error = err;
|
||||||
|
}
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
function onclose() {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
done = true;
|
||||||
|
if (promises.length) promises.shift().resolve({ done: true });
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.once = function once(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
return Promise.reject(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.once(name, onevent);
|
||||||
|
function onevent(...args) {
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
resolve(args);
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.forward = function forward(from, to, names, opts = {}) {
|
||||||
|
if (typeof names === "string") names = [names];
|
||||||
|
const { emit = to.emit.bind(to) } = opts;
|
||||||
|
const listeners = names.map(
|
||||||
|
(name) => function onevent(...args) {
|
||||||
|
emit(name, ...args);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
to.on("newListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.on(name, listeners[i]);
|
||||||
|
}
|
||||||
|
}).on("removeListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.off(name, listeners[i]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.listenerCount = function listenerCount(emitter, name) {
|
||||||
|
return emitter.listenerCount(name);
|
||||||
|
};
|
||||||
|
exports.getMaxListeners = function getMaxListeners(emitter) {
|
||||||
|
if (typeof emitter.getMaxListeners === "function") {
|
||||||
|
return emitter.getMaxListeners();
|
||||||
|
}
|
||||||
|
return exports.defaultMaxListeners;
|
||||||
|
};
|
||||||
|
exports.setMaxListeners = function setMaxListeners(n, ...emitters) {
|
||||||
|
if (emitters.length === 0) exports.defaultMaxListeners = n;
|
||||||
|
else {
|
||||||
|
for (const emitter of emitters) {
|
||||||
|
if (typeof emitter.setMaxListeners === "function") {
|
||||||
|
emitter.setMaxListeners(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -2375,7 +2688,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-tls/lib/errors.js
|
// ../../node_modules/bare-tls/lib/errors.js
|
||||||
var require_errors = __commonJS({
|
var require_errors2 = __commonJS({
|
||||||
"../../node_modules/bare-tls/lib/errors.js"(exports, module) {
|
"../../node_modules/bare-tls/lib/errors.js"(exports, module) {
|
||||||
module.exports = class TLSError extends Error {
|
module.exports = class TLSError extends Error {
|
||||||
constructor(msg, code, fn = TLSError) {
|
constructor(msg, code, fn = TLSError) {
|
||||||
@@ -2395,312 +2708,6 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-events/lib/errors.js
|
|
||||||
var require_errors2 = __commonJS({
|
|
||||||
"../../node_modules/bare-events/lib/errors.js"(exports, module) {
|
|
||||||
module.exports = class EventEmitterError extends Error {
|
|
||||||
constructor(msg, code, fn = EventEmitterError, opts) {
|
|
||||||
super(`${code}: ${msg}`, opts);
|
|
||||||
this.code = code;
|
|
||||||
if (Error.captureStackTrace) {
|
|
||||||
Error.captureStackTrace(this, fn);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
get name() {
|
|
||||||
return "EventEmitterError";
|
|
||||||
}
|
|
||||||
static OPERATION_ABORTED(cause, msg = "Operation aborted") {
|
|
||||||
return new EventEmitterError(msg, "OPERATION_ABORTED", EventEmitterError.OPERATION_ABORTED, {
|
|
||||||
cause
|
|
||||||
});
|
|
||||||
}
|
|
||||||
static UNHANDLED_ERROR(cause, msg = "Unhandled error") {
|
|
||||||
return new EventEmitterError(msg, "UNHANDLED_ERROR", EventEmitterError.UNHANDLED_ERROR, {
|
|
||||||
cause
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// ../../node_modules/bare-events/index.js
|
|
||||||
var require_bare_events = __commonJS({
|
|
||||||
"../../node_modules/bare-events/index.js"(exports, module) {
|
|
||||||
var errors = require_errors2();
|
|
||||||
var EventListener = class {
|
|
||||||
constructor() {
|
|
||||||
this.list = [];
|
|
||||||
this.count = 0;
|
|
||||||
}
|
|
||||||
append(ctx, name, fn, once) {
|
|
||||||
this.count++;
|
|
||||||
ctx.emit("newListener", name, fn);
|
|
||||||
this.list.push([fn, once]);
|
|
||||||
}
|
|
||||||
prepend(ctx, name, fn, once) {
|
|
||||||
this.count++;
|
|
||||||
ctx.emit("newListener", name, fn);
|
|
||||||
this.list.unshift([fn, once]);
|
|
||||||
}
|
|
||||||
remove(ctx, name, fn) {
|
|
||||||
for (let i = 0, n = this.list.length; i < n; i++) {
|
|
||||||
const l = this.list[i];
|
|
||||||
if (l[0] === fn) {
|
|
||||||
this.list.splice(i, 1);
|
|
||||||
if (this.count === 1) delete ctx._events[name];
|
|
||||||
ctx.emit("removeListener", name, fn);
|
|
||||||
this.count--;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
removeAll(ctx, name) {
|
|
||||||
const list = [...this.list];
|
|
||||||
this.list = [];
|
|
||||||
if (this.count === list.length) delete ctx._events[name];
|
|
||||||
for (let i = list.length - 1; i >= 0; i--) {
|
|
||||||
ctx.emit("removeListener", name, list[i][0]);
|
|
||||||
}
|
|
||||||
this.count -= list.length;
|
|
||||||
}
|
|
||||||
emit(ctx, name, ...args) {
|
|
||||||
const list = [...this.list];
|
|
||||||
for (let i = 0, n = list.length; i < n; i++) {
|
|
||||||
const l = list[i];
|
|
||||||
if (l[1] === true) this.remove(ctx, name, l[0]);
|
|
||||||
Reflect.apply(l[0], ctx, args);
|
|
||||||
}
|
|
||||||
return list.length > 0;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
function appendListener(ctx, name, fn, once) {
|
|
||||||
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
|
||||||
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
|
||||||
e.append(ctx, name, fn, once);
|
|
||||||
return ctx;
|
|
||||||
}
|
|
||||||
function prependListener(ctx, name, fn, once) {
|
|
||||||
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
|
||||||
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
|
||||||
e.prepend(ctx, name, fn, once);
|
|
||||||
return ctx;
|
|
||||||
}
|
|
||||||
function removeListener(ctx, name, fn) {
|
|
||||||
if (ctx._events === void 0) return ctx;
|
|
||||||
const e = ctx._events[name];
|
|
||||||
if (e !== void 0) e.remove(ctx, name, fn);
|
|
||||||
return ctx;
|
|
||||||
}
|
|
||||||
function throwUnhandledError(...args) {
|
|
||||||
let err;
|
|
||||||
if (args.length > 0) err = args[0];
|
|
||||||
if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err);
|
|
||||||
if (Error.captureStackTrace) {
|
|
||||||
Error.captureStackTrace(err, exports.prototype.emit);
|
|
||||||
}
|
|
||||||
queueMicrotask(() => {
|
|
||||||
throw err;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
module.exports = exports = class EventEmitter {
|
|
||||||
constructor() {
|
|
||||||
this._events = /* @__PURE__ */ Object.create(null);
|
|
||||||
}
|
|
||||||
addListener(name, fn) {
|
|
||||||
return appendListener(this, name, fn, false);
|
|
||||||
}
|
|
||||||
addOnceListener(name, fn) {
|
|
||||||
return appendListener(this, name, fn, true);
|
|
||||||
}
|
|
||||||
prependListener(name, fn) {
|
|
||||||
return prependListener(this, name, fn, false);
|
|
||||||
}
|
|
||||||
prependOnceListener(name, fn) {
|
|
||||||
return prependListener(this, name, fn, true);
|
|
||||||
}
|
|
||||||
removeListener(name, fn) {
|
|
||||||
return removeListener(this, name, fn);
|
|
||||||
}
|
|
||||||
on(name, fn) {
|
|
||||||
return appendListener(this, name, fn, false);
|
|
||||||
}
|
|
||||||
once(name, fn) {
|
|
||||||
return appendListener(this, name, fn, true);
|
|
||||||
}
|
|
||||||
off(name, fn) {
|
|
||||||
return removeListener(this, name, fn);
|
|
||||||
}
|
|
||||||
emit(name, ...args) {
|
|
||||||
if (name === "error" && this._events !== void 0 && this._events.error === void 0) {
|
|
||||||
throwUnhandledError(...args);
|
|
||||||
}
|
|
||||||
if (this._events === void 0) return false;
|
|
||||||
const e = this._events[name];
|
|
||||||
return e === void 0 ? false : e.emit(this, name, ...args);
|
|
||||||
}
|
|
||||||
listeners(name) {
|
|
||||||
if (this._events === void 0) return [];
|
|
||||||
const e = this._events[name];
|
|
||||||
return e === void 0 ? [] : [...e.list];
|
|
||||||
}
|
|
||||||
listenerCount(name) {
|
|
||||||
if (this._events === void 0) return 0;
|
|
||||||
const e = this._events[name];
|
|
||||||
return e === void 0 ? 0 : e.list.length;
|
|
||||||
}
|
|
||||||
getMaxListeners() {
|
|
||||||
return EventEmitter.defaultMaxListeners;
|
|
||||||
}
|
|
||||||
setMaxListeners(n) {
|
|
||||||
}
|
|
||||||
removeAllListeners(name) {
|
|
||||||
if (arguments.length === 0) {
|
|
||||||
for (const key of Reflect.ownKeys(this._events)) {
|
|
||||||
if (key === "removeListener") continue;
|
|
||||||
this.removeAllListeners(key);
|
|
||||||
}
|
|
||||||
this.removeAllListeners("removeListener");
|
|
||||||
} else {
|
|
||||||
const e = this._events[name];
|
|
||||||
if (e !== void 0) e.removeAll(this, name);
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
exports.EventEmitter = exports;
|
|
||||||
exports.errors = errors;
|
|
||||||
exports.defaultMaxListeners = 10;
|
|
||||||
exports.on = function on(emitter, name, opts = {}) {
|
|
||||||
const { signal } = opts;
|
|
||||||
if (signal && signal.aborted) {
|
|
||||||
throw errors.OPERATION_ABORTED(signal.reason);
|
|
||||||
}
|
|
||||||
let error = null;
|
|
||||||
let done = false;
|
|
||||||
const events = [];
|
|
||||||
const promises = [];
|
|
||||||
if (name !== "error") emitter.on("error", onerror);
|
|
||||||
if (signal) signal.addEventListener("abort", onabort);
|
|
||||||
emitter.on(name, onevent);
|
|
||||||
return {
|
|
||||||
next() {
|
|
||||||
if (events.length) {
|
|
||||||
return Promise.resolve({ value: events.shift(), done: false });
|
|
||||||
}
|
|
||||||
if (error) {
|
|
||||||
const err = error;
|
|
||||||
error = null;
|
|
||||||
return Promise.reject(err);
|
|
||||||
}
|
|
||||||
if (done) return onclose();
|
|
||||||
return new Promise((resolve, reject) => promises.push({ resolve, reject }));
|
|
||||||
},
|
|
||||||
return() {
|
|
||||||
return onclose();
|
|
||||||
},
|
|
||||||
throw(err) {
|
|
||||||
return onerror(err);
|
|
||||||
},
|
|
||||||
[Symbol.asyncIterator]() {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
function onevent(...args) {
|
|
||||||
if (promises.length) {
|
|
||||||
promises.shift().resolve({ value: args, done: false });
|
|
||||||
} else {
|
|
||||||
events.push(args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function onerror(err) {
|
|
||||||
emitter.off(name, onevent).off("error", onerror);
|
|
||||||
if (promises.length) {
|
|
||||||
promises.shift().reject(err);
|
|
||||||
} else {
|
|
||||||
error = err;
|
|
||||||
}
|
|
||||||
return Promise.resolve({ done: true });
|
|
||||||
}
|
|
||||||
function onabort() {
|
|
||||||
signal.removeEventListener("abort", onabort);
|
|
||||||
onerror(errors.OPERATION_ABORTED(signal.reason));
|
|
||||||
}
|
|
||||||
function onclose() {
|
|
||||||
emitter.off(name, onevent);
|
|
||||||
if (name !== "error") emitter.off("error", onerror);
|
|
||||||
if (signal) signal.removeEventListener("abort", onabort);
|
|
||||||
done = true;
|
|
||||||
if (promises.length) promises.shift().resolve({ done: true });
|
|
||||||
return Promise.resolve({ done: true });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
exports.once = function once(emitter, name, opts = {}) {
|
|
||||||
const { signal } = opts;
|
|
||||||
if (signal && signal.aborted) {
|
|
||||||
return Promise.reject(errors.OPERATION_ABORTED(signal.reason));
|
|
||||||
}
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
if (name !== "error") emitter.on("error", onerror);
|
|
||||||
if (signal) signal.addEventListener("abort", onabort);
|
|
||||||
emitter.once(name, onevent);
|
|
||||||
function onevent(...args) {
|
|
||||||
if (name !== "error") emitter.off("error", onerror);
|
|
||||||
if (signal) signal.removeEventListener("abort", onabort);
|
|
||||||
resolve(args);
|
|
||||||
}
|
|
||||||
function onerror(err) {
|
|
||||||
emitter.off(name, onevent);
|
|
||||||
if (name !== "error") emitter.off("error", onerror);
|
|
||||||
reject(err);
|
|
||||||
}
|
|
||||||
function onabort() {
|
|
||||||
signal.removeEventListener("abort", onabort);
|
|
||||||
onerror(errors.OPERATION_ABORTED(signal.reason));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
exports.forward = function forward(from, to, names, opts = {}) {
|
|
||||||
if (typeof names === "string") names = [names];
|
|
||||||
const { emit = to.emit.bind(to) } = opts;
|
|
||||||
const listeners = names.map(
|
|
||||||
(name) => function onevent(...args) {
|
|
||||||
emit(name, ...args);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
to.on("newListener", (name) => {
|
|
||||||
const i = names.indexOf(name);
|
|
||||||
if (i !== -1 && to.listenerCount(name) === 0) {
|
|
||||||
from.on(name, listeners[i]);
|
|
||||||
}
|
|
||||||
}).on("removeListener", (name) => {
|
|
||||||
const i = names.indexOf(name);
|
|
||||||
if (i !== -1 && to.listenerCount(name) === 0) {
|
|
||||||
from.off(name, listeners[i]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
exports.listenerCount = function listenerCount(emitter, name) {
|
|
||||||
return emitter.listenerCount(name);
|
|
||||||
};
|
|
||||||
exports.getMaxListeners = function getMaxListeners(emitter) {
|
|
||||||
if (typeof emitter.getMaxListeners === "function") {
|
|
||||||
return emitter.getMaxListeners();
|
|
||||||
}
|
|
||||||
return exports.defaultMaxListeners;
|
|
||||||
};
|
|
||||||
exports.setMaxListeners = function setMaxListeners(n, ...emitters) {
|
|
||||||
if (emitters.length === 0) exports.defaultMaxListeners = n;
|
|
||||||
else {
|
|
||||||
for (const emitter of emitters) {
|
|
||||||
if (typeof emitter.setMaxListeners === "function") {
|
|
||||||
emitter.setMaxListeners(n);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// ../../node_modules/bare-dns/binding.js
|
// ../../node_modules/bare-dns/binding.js
|
||||||
var require_binding2 = __commonJS({
|
var require_binding2 = __commonJS({
|
||||||
"../../node_modules/bare-dns/binding.js"(exports, module) {
|
"../../node_modules/bare-dns/binding.js"(exports, module) {
|
||||||
@@ -3813,9 +3820,9 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-net/lib/constants.js
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-net/lib/constants.js
|
||||||
var require_constants4 = __commonJS({
|
var require_constants4 = __commonJS({
|
||||||
"../../node_modules/bare-net/lib/constants.js"(exports, module) {
|
"../bare-os-openssh/vendor/bare-node-shims/bare-net/lib/constants.js"(exports, module) {
|
||||||
module.exports = {
|
module.exports = {
|
||||||
type: {
|
type: {
|
||||||
TCP: 1,
|
TCP: 1,
|
||||||
@@ -3828,9 +3835,9 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-net/index.js
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-net/index.js
|
||||||
var require_bare_net = __commonJS({
|
var require_bare_net = __commonJS({
|
||||||
"../../node_modules/bare-net/index.js"(exports) {
|
"../bare-os-openssh/vendor/bare-node-shims/bare-net/index.js"(exports) {
|
||||||
var EventEmitter = require_bare_events();
|
var EventEmitter = require_bare_events();
|
||||||
var { Duplex } = require_bare_stream();
|
var { Duplex } = require_bare_stream();
|
||||||
var tcp = require_bare_tcp();
|
var tcp = require_bare_tcp();
|
||||||
@@ -4248,7 +4255,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
var { Duplex, Writable } = require_bare_stream();
|
var { Duplex, Writable } = require_bare_stream();
|
||||||
var binding = require_binding();
|
var binding = require_binding();
|
||||||
var constants = require_constants();
|
var constants = require_constants();
|
||||||
var errors = require_errors();
|
var errors = require_errors2();
|
||||||
var defaultReadBufferSize = 65536;
|
var defaultReadBufferSize = 65536;
|
||||||
var context = binding.context();
|
var context = binding.context();
|
||||||
exports.Socket = class TLSSocket extends Duplex {
|
exports.Socket = class TLSSocket extends Duplex {
|
||||||
|
|||||||
+314
-307
@@ -36,10 +36,323 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
));
|
));
|
||||||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/lib/errors.js
|
||||||
|
var require_errors = __commonJS({
|
||||||
|
"../../node_modules/bare-events/lib/errors.js"(exports, module) {
|
||||||
|
module.exports = class EventEmitterError extends Error {
|
||||||
|
constructor(msg, code, fn = EventEmitterError, opts) {
|
||||||
|
super(`${code}: ${msg}`, opts);
|
||||||
|
this.code = code;
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(this, fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get name() {
|
||||||
|
return "EventEmitterError";
|
||||||
|
}
|
||||||
|
static OPERATION_ABORTED(cause, msg = "Operation aborted") {
|
||||||
|
return new EventEmitterError(msg, "OPERATION_ABORTED", EventEmitterError.OPERATION_ABORTED, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
static UNHANDLED_ERROR(cause, msg = "Unhandled error") {
|
||||||
|
return new EventEmitterError(msg, "UNHANDLED_ERROR", EventEmitterError.UNHANDLED_ERROR, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/index.js
|
||||||
|
var require_bare_events = __commonJS({
|
||||||
|
"../../node_modules/bare-events/index.js"(exports, module) {
|
||||||
|
var errors = require_errors();
|
||||||
|
var EventListener = class {
|
||||||
|
constructor() {
|
||||||
|
this.list = [];
|
||||||
|
this.count = 0;
|
||||||
|
}
|
||||||
|
append(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.push([fn, once]);
|
||||||
|
}
|
||||||
|
prepend(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.unshift([fn, once]);
|
||||||
|
}
|
||||||
|
remove(ctx, name, fn) {
|
||||||
|
for (let i = 0, n = this.list.length; i < n; i++) {
|
||||||
|
const l = this.list[i];
|
||||||
|
if (l[0] === fn) {
|
||||||
|
this.list.splice(i, 1);
|
||||||
|
if (this.count === 1) delete ctx._events[name];
|
||||||
|
ctx.emit("removeListener", name, fn);
|
||||||
|
this.count--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
removeAll(ctx, name) {
|
||||||
|
const list = [...this.list];
|
||||||
|
this.list = [];
|
||||||
|
if (this.count === list.length) delete ctx._events[name];
|
||||||
|
for (let i = list.length - 1; i >= 0; i--) {
|
||||||
|
ctx.emit("removeListener", name, list[i][0]);
|
||||||
|
}
|
||||||
|
this.count -= list.length;
|
||||||
|
}
|
||||||
|
emit(ctx, name, ...args) {
|
||||||
|
const list = [...this.list];
|
||||||
|
for (let i = 0, n = list.length; i < n; i++) {
|
||||||
|
const l = list[i];
|
||||||
|
if (l[1] === true) this.remove(ctx, name, l[0]);
|
||||||
|
Reflect.apply(l[0], ctx, args);
|
||||||
|
}
|
||||||
|
return list.length > 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function appendListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.append(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function prependListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.prepend(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function removeListener(ctx, name, fn) {
|
||||||
|
if (ctx._events === void 0) return ctx;
|
||||||
|
const e = ctx._events[name];
|
||||||
|
if (e !== void 0) e.remove(ctx, name, fn);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function throwUnhandledError(...args) {
|
||||||
|
let err;
|
||||||
|
if (args.length > 0) err = args[0];
|
||||||
|
if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err);
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(err, exports.prototype.emit);
|
||||||
|
}
|
||||||
|
queueMicrotask(() => {
|
||||||
|
throw err;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
module.exports = exports = class EventEmitter {
|
||||||
|
constructor() {
|
||||||
|
this._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
}
|
||||||
|
addListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
addOnceListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
prependListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
prependOnceListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
removeListener(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
on(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
once(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
off(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
emit(name, ...args) {
|
||||||
|
if (name === "error" && this._events !== void 0 && this._events.error === void 0) {
|
||||||
|
throwUnhandledError(...args);
|
||||||
|
}
|
||||||
|
if (this._events === void 0) return false;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? false : e.emit(this, name, ...args);
|
||||||
|
}
|
||||||
|
listeners(name) {
|
||||||
|
if (this._events === void 0) return [];
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? [] : [...e.list];
|
||||||
|
}
|
||||||
|
listenerCount(name) {
|
||||||
|
if (this._events === void 0) return 0;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? 0 : e.list.length;
|
||||||
|
}
|
||||||
|
getMaxListeners() {
|
||||||
|
return EventEmitter.defaultMaxListeners;
|
||||||
|
}
|
||||||
|
setMaxListeners(n) {
|
||||||
|
}
|
||||||
|
removeAllListeners(name) {
|
||||||
|
if (arguments.length === 0) {
|
||||||
|
for (const key of Reflect.ownKeys(this._events)) {
|
||||||
|
if (key === "removeListener") continue;
|
||||||
|
this.removeAllListeners(key);
|
||||||
|
}
|
||||||
|
this.removeAllListeners("removeListener");
|
||||||
|
} else {
|
||||||
|
const e = this._events[name];
|
||||||
|
if (e !== void 0) e.removeAll(this, name);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.EventEmitter = exports;
|
||||||
|
exports.errors = errors;
|
||||||
|
exports.defaultMaxListeners = 10;
|
||||||
|
exports.on = function on(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
throw errors.OPERATION_ABORTED(signal.reason);
|
||||||
|
}
|
||||||
|
let error = null;
|
||||||
|
let done = false;
|
||||||
|
const events = [];
|
||||||
|
const promises = [];
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.on(name, onevent);
|
||||||
|
return {
|
||||||
|
next() {
|
||||||
|
if (events.length) {
|
||||||
|
return Promise.resolve({ value: events.shift(), done: false });
|
||||||
|
}
|
||||||
|
if (error) {
|
||||||
|
const err = error;
|
||||||
|
error = null;
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
if (done) return onclose();
|
||||||
|
return new Promise((resolve, reject) => promises.push({ resolve, reject }));
|
||||||
|
},
|
||||||
|
return() {
|
||||||
|
return onclose();
|
||||||
|
},
|
||||||
|
throw(err) {
|
||||||
|
return onerror(err);
|
||||||
|
},
|
||||||
|
[Symbol.asyncIterator]() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function onevent(...args) {
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().resolve({ value: args, done: false });
|
||||||
|
} else {
|
||||||
|
events.push(args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent).off("error", onerror);
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().reject(err);
|
||||||
|
} else {
|
||||||
|
error = err;
|
||||||
|
}
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
function onclose() {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
done = true;
|
||||||
|
if (promises.length) promises.shift().resolve({ done: true });
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.once = function once(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
return Promise.reject(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.once(name, onevent);
|
||||||
|
function onevent(...args) {
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
resolve(args);
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.forward = function forward(from, to, names, opts = {}) {
|
||||||
|
if (typeof names === "string") names = [names];
|
||||||
|
const { emit = to.emit.bind(to) } = opts;
|
||||||
|
const listeners = names.map(
|
||||||
|
(name) => function onevent(...args) {
|
||||||
|
emit(name, ...args);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
to.on("newListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.on(name, listeners[i]);
|
||||||
|
}
|
||||||
|
}).on("removeListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.off(name, listeners[i]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.listenerCount = function listenerCount(emitter, name) {
|
||||||
|
return emitter.listenerCount(name);
|
||||||
|
};
|
||||||
|
exports.getMaxListeners = function getMaxListeners(emitter) {
|
||||||
|
if (typeof emitter.getMaxListeners === "function") {
|
||||||
|
return emitter.getMaxListeners();
|
||||||
|
}
|
||||||
|
return exports.defaultMaxListeners;
|
||||||
|
};
|
||||||
|
exports.setMaxListeners = function setMaxListeners(n, ...emitters) {
|
||||||
|
if (emitters.length === 0) exports.defaultMaxListeners = n;
|
||||||
|
else {
|
||||||
|
for (const emitter of emitters) {
|
||||||
|
if (typeof emitter.setMaxListeners === "function") {
|
||||||
|
emitter.setMaxListeners(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -2355,312 +2668,6 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-events/lib/errors.js
|
|
||||||
var require_errors = __commonJS({
|
|
||||||
"../../node_modules/bare-events/lib/errors.js"(exports, module) {
|
|
||||||
module.exports = class EventEmitterError extends Error {
|
|
||||||
constructor(msg, code, fn = EventEmitterError, opts) {
|
|
||||||
super(`${code}: ${msg}`, opts);
|
|
||||||
this.code = code;
|
|
||||||
if (Error.captureStackTrace) {
|
|
||||||
Error.captureStackTrace(this, fn);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
get name() {
|
|
||||||
return "EventEmitterError";
|
|
||||||
}
|
|
||||||
static OPERATION_ABORTED(cause, msg = "Operation aborted") {
|
|
||||||
return new EventEmitterError(msg, "OPERATION_ABORTED", EventEmitterError.OPERATION_ABORTED, {
|
|
||||||
cause
|
|
||||||
});
|
|
||||||
}
|
|
||||||
static UNHANDLED_ERROR(cause, msg = "Unhandled error") {
|
|
||||||
return new EventEmitterError(msg, "UNHANDLED_ERROR", EventEmitterError.UNHANDLED_ERROR, {
|
|
||||||
cause
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// ../../node_modules/bare-events/index.js
|
|
||||||
var require_bare_events = __commonJS({
|
|
||||||
"../../node_modules/bare-events/index.js"(exports, module) {
|
|
||||||
var errors = require_errors();
|
|
||||||
var EventListener = class {
|
|
||||||
constructor() {
|
|
||||||
this.list = [];
|
|
||||||
this.count = 0;
|
|
||||||
}
|
|
||||||
append(ctx, name, fn, once) {
|
|
||||||
this.count++;
|
|
||||||
ctx.emit("newListener", name, fn);
|
|
||||||
this.list.push([fn, once]);
|
|
||||||
}
|
|
||||||
prepend(ctx, name, fn, once) {
|
|
||||||
this.count++;
|
|
||||||
ctx.emit("newListener", name, fn);
|
|
||||||
this.list.unshift([fn, once]);
|
|
||||||
}
|
|
||||||
remove(ctx, name, fn) {
|
|
||||||
for (let i = 0, n = this.list.length; i < n; i++) {
|
|
||||||
const l = this.list[i];
|
|
||||||
if (l[0] === fn) {
|
|
||||||
this.list.splice(i, 1);
|
|
||||||
if (this.count === 1) delete ctx._events[name];
|
|
||||||
ctx.emit("removeListener", name, fn);
|
|
||||||
this.count--;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
removeAll(ctx, name) {
|
|
||||||
const list = [...this.list];
|
|
||||||
this.list = [];
|
|
||||||
if (this.count === list.length) delete ctx._events[name];
|
|
||||||
for (let i = list.length - 1; i >= 0; i--) {
|
|
||||||
ctx.emit("removeListener", name, list[i][0]);
|
|
||||||
}
|
|
||||||
this.count -= list.length;
|
|
||||||
}
|
|
||||||
emit(ctx, name, ...args) {
|
|
||||||
const list = [...this.list];
|
|
||||||
for (let i = 0, n = list.length; i < n; i++) {
|
|
||||||
const l = list[i];
|
|
||||||
if (l[1] === true) this.remove(ctx, name, l[0]);
|
|
||||||
Reflect.apply(l[0], ctx, args);
|
|
||||||
}
|
|
||||||
return list.length > 0;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
function appendListener(ctx, name, fn, once) {
|
|
||||||
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
|
||||||
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
|
||||||
e.append(ctx, name, fn, once);
|
|
||||||
return ctx;
|
|
||||||
}
|
|
||||||
function prependListener(ctx, name, fn, once) {
|
|
||||||
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
|
||||||
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
|
||||||
e.prepend(ctx, name, fn, once);
|
|
||||||
return ctx;
|
|
||||||
}
|
|
||||||
function removeListener(ctx, name, fn) {
|
|
||||||
if (ctx._events === void 0) return ctx;
|
|
||||||
const e = ctx._events[name];
|
|
||||||
if (e !== void 0) e.remove(ctx, name, fn);
|
|
||||||
return ctx;
|
|
||||||
}
|
|
||||||
function throwUnhandledError(...args) {
|
|
||||||
let err;
|
|
||||||
if (args.length > 0) err = args[0];
|
|
||||||
if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err);
|
|
||||||
if (Error.captureStackTrace) {
|
|
||||||
Error.captureStackTrace(err, exports.prototype.emit);
|
|
||||||
}
|
|
||||||
queueMicrotask(() => {
|
|
||||||
throw err;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
module.exports = exports = class EventEmitter {
|
|
||||||
constructor() {
|
|
||||||
this._events = /* @__PURE__ */ Object.create(null);
|
|
||||||
}
|
|
||||||
addListener(name, fn) {
|
|
||||||
return appendListener(this, name, fn, false);
|
|
||||||
}
|
|
||||||
addOnceListener(name, fn) {
|
|
||||||
return appendListener(this, name, fn, true);
|
|
||||||
}
|
|
||||||
prependListener(name, fn) {
|
|
||||||
return prependListener(this, name, fn, false);
|
|
||||||
}
|
|
||||||
prependOnceListener(name, fn) {
|
|
||||||
return prependListener(this, name, fn, true);
|
|
||||||
}
|
|
||||||
removeListener(name, fn) {
|
|
||||||
return removeListener(this, name, fn);
|
|
||||||
}
|
|
||||||
on(name, fn) {
|
|
||||||
return appendListener(this, name, fn, false);
|
|
||||||
}
|
|
||||||
once(name, fn) {
|
|
||||||
return appendListener(this, name, fn, true);
|
|
||||||
}
|
|
||||||
off(name, fn) {
|
|
||||||
return removeListener(this, name, fn);
|
|
||||||
}
|
|
||||||
emit(name, ...args) {
|
|
||||||
if (name === "error" && this._events !== void 0 && this._events.error === void 0) {
|
|
||||||
throwUnhandledError(...args);
|
|
||||||
}
|
|
||||||
if (this._events === void 0) return false;
|
|
||||||
const e = this._events[name];
|
|
||||||
return e === void 0 ? false : e.emit(this, name, ...args);
|
|
||||||
}
|
|
||||||
listeners(name) {
|
|
||||||
if (this._events === void 0) return [];
|
|
||||||
const e = this._events[name];
|
|
||||||
return e === void 0 ? [] : [...e.list];
|
|
||||||
}
|
|
||||||
listenerCount(name) {
|
|
||||||
if (this._events === void 0) return 0;
|
|
||||||
const e = this._events[name];
|
|
||||||
return e === void 0 ? 0 : e.list.length;
|
|
||||||
}
|
|
||||||
getMaxListeners() {
|
|
||||||
return EventEmitter.defaultMaxListeners;
|
|
||||||
}
|
|
||||||
setMaxListeners(n) {
|
|
||||||
}
|
|
||||||
removeAllListeners(name) {
|
|
||||||
if (arguments.length === 0) {
|
|
||||||
for (const key of Reflect.ownKeys(this._events)) {
|
|
||||||
if (key === "removeListener") continue;
|
|
||||||
this.removeAllListeners(key);
|
|
||||||
}
|
|
||||||
this.removeAllListeners("removeListener");
|
|
||||||
} else {
|
|
||||||
const e = this._events[name];
|
|
||||||
if (e !== void 0) e.removeAll(this, name);
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
exports.EventEmitter = exports;
|
|
||||||
exports.errors = errors;
|
|
||||||
exports.defaultMaxListeners = 10;
|
|
||||||
exports.on = function on(emitter, name, opts = {}) {
|
|
||||||
const { signal } = opts;
|
|
||||||
if (signal && signal.aborted) {
|
|
||||||
throw errors.OPERATION_ABORTED(signal.reason);
|
|
||||||
}
|
|
||||||
let error = null;
|
|
||||||
let done = false;
|
|
||||||
const events = [];
|
|
||||||
const promises = [];
|
|
||||||
if (name !== "error") emitter.on("error", onerror);
|
|
||||||
if (signal) signal.addEventListener("abort", onabort);
|
|
||||||
emitter.on(name, onevent);
|
|
||||||
return {
|
|
||||||
next() {
|
|
||||||
if (events.length) {
|
|
||||||
return Promise.resolve({ value: events.shift(), done: false });
|
|
||||||
}
|
|
||||||
if (error) {
|
|
||||||
const err = error;
|
|
||||||
error = null;
|
|
||||||
return Promise.reject(err);
|
|
||||||
}
|
|
||||||
if (done) return onclose();
|
|
||||||
return new Promise((resolve, reject) => promises.push({ resolve, reject }));
|
|
||||||
},
|
|
||||||
return() {
|
|
||||||
return onclose();
|
|
||||||
},
|
|
||||||
throw(err) {
|
|
||||||
return onerror(err);
|
|
||||||
},
|
|
||||||
[Symbol.asyncIterator]() {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
function onevent(...args) {
|
|
||||||
if (promises.length) {
|
|
||||||
promises.shift().resolve({ value: args, done: false });
|
|
||||||
} else {
|
|
||||||
events.push(args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function onerror(err) {
|
|
||||||
emitter.off(name, onevent).off("error", onerror);
|
|
||||||
if (promises.length) {
|
|
||||||
promises.shift().reject(err);
|
|
||||||
} else {
|
|
||||||
error = err;
|
|
||||||
}
|
|
||||||
return Promise.resolve({ done: true });
|
|
||||||
}
|
|
||||||
function onabort() {
|
|
||||||
signal.removeEventListener("abort", onabort);
|
|
||||||
onerror(errors.OPERATION_ABORTED(signal.reason));
|
|
||||||
}
|
|
||||||
function onclose() {
|
|
||||||
emitter.off(name, onevent);
|
|
||||||
if (name !== "error") emitter.off("error", onerror);
|
|
||||||
if (signal) signal.removeEventListener("abort", onabort);
|
|
||||||
done = true;
|
|
||||||
if (promises.length) promises.shift().resolve({ done: true });
|
|
||||||
return Promise.resolve({ done: true });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
exports.once = function once(emitter, name, opts = {}) {
|
|
||||||
const { signal } = opts;
|
|
||||||
if (signal && signal.aborted) {
|
|
||||||
return Promise.reject(errors.OPERATION_ABORTED(signal.reason));
|
|
||||||
}
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
if (name !== "error") emitter.on("error", onerror);
|
|
||||||
if (signal) signal.addEventListener("abort", onabort);
|
|
||||||
emitter.once(name, onevent);
|
|
||||||
function onevent(...args) {
|
|
||||||
if (name !== "error") emitter.off("error", onerror);
|
|
||||||
if (signal) signal.removeEventListener("abort", onabort);
|
|
||||||
resolve(args);
|
|
||||||
}
|
|
||||||
function onerror(err) {
|
|
||||||
emitter.off(name, onevent);
|
|
||||||
if (name !== "error") emitter.off("error", onerror);
|
|
||||||
reject(err);
|
|
||||||
}
|
|
||||||
function onabort() {
|
|
||||||
signal.removeEventListener("abort", onabort);
|
|
||||||
onerror(errors.OPERATION_ABORTED(signal.reason));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
exports.forward = function forward(from, to, names, opts = {}) {
|
|
||||||
if (typeof names === "string") names = [names];
|
|
||||||
const { emit = to.emit.bind(to) } = opts;
|
|
||||||
const listeners = names.map(
|
|
||||||
(name) => function onevent(...args) {
|
|
||||||
emit(name, ...args);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
to.on("newListener", (name) => {
|
|
||||||
const i = names.indexOf(name);
|
|
||||||
if (i !== -1 && to.listenerCount(name) === 0) {
|
|
||||||
from.on(name, listeners[i]);
|
|
||||||
}
|
|
||||||
}).on("removeListener", (name) => {
|
|
||||||
const i = names.indexOf(name);
|
|
||||||
if (i !== -1 && to.listenerCount(name) === 0) {
|
|
||||||
from.off(name, listeners[i]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
exports.listenerCount = function listenerCount(emitter, name) {
|
|
||||||
return emitter.listenerCount(name);
|
|
||||||
};
|
|
||||||
exports.getMaxListeners = function getMaxListeners(emitter) {
|
|
||||||
if (typeof emitter.getMaxListeners === "function") {
|
|
||||||
return emitter.getMaxListeners();
|
|
||||||
}
|
|
||||||
return exports.defaultMaxListeners;
|
|
||||||
};
|
|
||||||
exports.setMaxListeners = function setMaxListeners(n, ...emitters) {
|
|
||||||
if (emitters.length === 0) exports.defaultMaxListeners = n;
|
|
||||||
else {
|
|
||||||
for (const emitter of emitters) {
|
|
||||||
if (typeof emitter.setMaxListeners === "function") {
|
|
||||||
emitter.setMaxListeners(n);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// ../../node_modules/bare-os/binding.js
|
// ../../node_modules/bare-os/binding.js
|
||||||
var require_binding = __commonJS({
|
var require_binding = __commonJS({
|
||||||
"../../node_modules/bare-os/binding.js"(exports, module) {
|
"../../node_modules/bare-os/binding.js"(exports, module) {
|
||||||
|
|||||||
+6372
-1796
File diff suppressed because it is too large
Load Diff
@@ -3515,10 +3515,17 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+4881
-2773
File diff suppressed because it is too large
Load Diff
@@ -342,10 +342,17 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -5447,9 +5454,9 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-net/lib/constants.js
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-net/lib/constants.js
|
||||||
var require_constants5 = __commonJS({
|
var require_constants5 = __commonJS({
|
||||||
"../../node_modules/bare-net/lib/constants.js"(exports, module) {
|
"../bare-os-openssh/vendor/bare-node-shims/bare-net/lib/constants.js"(exports, module) {
|
||||||
module.exports = {
|
module.exports = {
|
||||||
type: {
|
type: {
|
||||||
TCP: 1,
|
TCP: 1,
|
||||||
@@ -5462,9 +5469,9 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-net/index.js
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-net/index.js
|
||||||
var require_bare_net = __commonJS({
|
var require_bare_net = __commonJS({
|
||||||
"../../node_modules/bare-net/index.js"(exports) {
|
"../bare-os-openssh/vendor/bare-node-shims/bare-net/index.js"(exports) {
|
||||||
var EventEmitter = require_bare_events();
|
var EventEmitter = require_bare_events();
|
||||||
var { Duplex } = require_bare_stream();
|
var { Duplex } = require_bare_stream();
|
||||||
var tcp = require_bare_tcp();
|
var tcp = require_bare_tcp();
|
||||||
|
|||||||
@@ -36,10 +36,323 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
));
|
));
|
||||||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/lib/errors.js
|
||||||
|
var require_errors = __commonJS({
|
||||||
|
"../../node_modules/bare-events/lib/errors.js"(exports, module) {
|
||||||
|
module.exports = class EventEmitterError extends Error {
|
||||||
|
constructor(msg, code, fn = EventEmitterError, opts) {
|
||||||
|
super(`${code}: ${msg}`, opts);
|
||||||
|
this.code = code;
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(this, fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get name() {
|
||||||
|
return "EventEmitterError";
|
||||||
|
}
|
||||||
|
static OPERATION_ABORTED(cause, msg = "Operation aborted") {
|
||||||
|
return new EventEmitterError(msg, "OPERATION_ABORTED", EventEmitterError.OPERATION_ABORTED, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
static UNHANDLED_ERROR(cause, msg = "Unhandled error") {
|
||||||
|
return new EventEmitterError(msg, "UNHANDLED_ERROR", EventEmitterError.UNHANDLED_ERROR, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/index.js
|
||||||
|
var require_bare_events = __commonJS({
|
||||||
|
"../../node_modules/bare-events/index.js"(exports, module) {
|
||||||
|
var errors = require_errors();
|
||||||
|
var EventListener = class {
|
||||||
|
constructor() {
|
||||||
|
this.list = [];
|
||||||
|
this.count = 0;
|
||||||
|
}
|
||||||
|
append(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.push([fn, once]);
|
||||||
|
}
|
||||||
|
prepend(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.unshift([fn, once]);
|
||||||
|
}
|
||||||
|
remove(ctx, name, fn) {
|
||||||
|
for (let i = 0, n = this.list.length; i < n; i++) {
|
||||||
|
const l = this.list[i];
|
||||||
|
if (l[0] === fn) {
|
||||||
|
this.list.splice(i, 1);
|
||||||
|
if (this.count === 1) delete ctx._events[name];
|
||||||
|
ctx.emit("removeListener", name, fn);
|
||||||
|
this.count--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
removeAll(ctx, name) {
|
||||||
|
const list = [...this.list];
|
||||||
|
this.list = [];
|
||||||
|
if (this.count === list.length) delete ctx._events[name];
|
||||||
|
for (let i = list.length - 1; i >= 0; i--) {
|
||||||
|
ctx.emit("removeListener", name, list[i][0]);
|
||||||
|
}
|
||||||
|
this.count -= list.length;
|
||||||
|
}
|
||||||
|
emit(ctx, name, ...args) {
|
||||||
|
const list = [...this.list];
|
||||||
|
for (let i = 0, n = list.length; i < n; i++) {
|
||||||
|
const l = list[i];
|
||||||
|
if (l[1] === true) this.remove(ctx, name, l[0]);
|
||||||
|
Reflect.apply(l[0], ctx, args);
|
||||||
|
}
|
||||||
|
return list.length > 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function appendListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.append(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function prependListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.prepend(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function removeListener(ctx, name, fn) {
|
||||||
|
if (ctx._events === void 0) return ctx;
|
||||||
|
const e = ctx._events[name];
|
||||||
|
if (e !== void 0) e.remove(ctx, name, fn);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function throwUnhandledError(...args) {
|
||||||
|
let err;
|
||||||
|
if (args.length > 0) err = args[0];
|
||||||
|
if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err);
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(err, exports.prototype.emit);
|
||||||
|
}
|
||||||
|
queueMicrotask(() => {
|
||||||
|
throw err;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
module.exports = exports = class EventEmitter {
|
||||||
|
constructor() {
|
||||||
|
this._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
}
|
||||||
|
addListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
addOnceListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
prependListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
prependOnceListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
removeListener(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
on(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
once(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
off(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
emit(name, ...args) {
|
||||||
|
if (name === "error" && this._events !== void 0 && this._events.error === void 0) {
|
||||||
|
throwUnhandledError(...args);
|
||||||
|
}
|
||||||
|
if (this._events === void 0) return false;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? false : e.emit(this, name, ...args);
|
||||||
|
}
|
||||||
|
listeners(name) {
|
||||||
|
if (this._events === void 0) return [];
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? [] : [...e.list];
|
||||||
|
}
|
||||||
|
listenerCount(name) {
|
||||||
|
if (this._events === void 0) return 0;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? 0 : e.list.length;
|
||||||
|
}
|
||||||
|
getMaxListeners() {
|
||||||
|
return EventEmitter.defaultMaxListeners;
|
||||||
|
}
|
||||||
|
setMaxListeners(n) {
|
||||||
|
}
|
||||||
|
removeAllListeners(name) {
|
||||||
|
if (arguments.length === 0) {
|
||||||
|
for (const key of Reflect.ownKeys(this._events)) {
|
||||||
|
if (key === "removeListener") continue;
|
||||||
|
this.removeAllListeners(key);
|
||||||
|
}
|
||||||
|
this.removeAllListeners("removeListener");
|
||||||
|
} else {
|
||||||
|
const e = this._events[name];
|
||||||
|
if (e !== void 0) e.removeAll(this, name);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.EventEmitter = exports;
|
||||||
|
exports.errors = errors;
|
||||||
|
exports.defaultMaxListeners = 10;
|
||||||
|
exports.on = function on(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
throw errors.OPERATION_ABORTED(signal.reason);
|
||||||
|
}
|
||||||
|
let error = null;
|
||||||
|
let done = false;
|
||||||
|
const events = [];
|
||||||
|
const promises = [];
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.on(name, onevent);
|
||||||
|
return {
|
||||||
|
next() {
|
||||||
|
if (events.length) {
|
||||||
|
return Promise.resolve({ value: events.shift(), done: false });
|
||||||
|
}
|
||||||
|
if (error) {
|
||||||
|
const err = error;
|
||||||
|
error = null;
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
if (done) return onclose();
|
||||||
|
return new Promise((resolve, reject) => promises.push({ resolve, reject }));
|
||||||
|
},
|
||||||
|
return() {
|
||||||
|
return onclose();
|
||||||
|
},
|
||||||
|
throw(err) {
|
||||||
|
return onerror(err);
|
||||||
|
},
|
||||||
|
[Symbol.asyncIterator]() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function onevent(...args) {
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().resolve({ value: args, done: false });
|
||||||
|
} else {
|
||||||
|
events.push(args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent).off("error", onerror);
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().reject(err);
|
||||||
|
} else {
|
||||||
|
error = err;
|
||||||
|
}
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
function onclose() {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
done = true;
|
||||||
|
if (promises.length) promises.shift().resolve({ done: true });
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.once = function once(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
return Promise.reject(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.once(name, onevent);
|
||||||
|
function onevent(...args) {
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
resolve(args);
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.forward = function forward(from, to, names, opts = {}) {
|
||||||
|
if (typeof names === "string") names = [names];
|
||||||
|
const { emit = to.emit.bind(to) } = opts;
|
||||||
|
const listeners = names.map(
|
||||||
|
(name) => function onevent(...args) {
|
||||||
|
emit(name, ...args);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
to.on("newListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.on(name, listeners[i]);
|
||||||
|
}
|
||||||
|
}).on("removeListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.off(name, listeners[i]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.listenerCount = function listenerCount(emitter, name) {
|
||||||
|
return emitter.listenerCount(name);
|
||||||
|
};
|
||||||
|
exports.getMaxListeners = function getMaxListeners(emitter) {
|
||||||
|
if (typeof emitter.getMaxListeners === "function") {
|
||||||
|
return emitter.getMaxListeners();
|
||||||
|
}
|
||||||
|
return exports.defaultMaxListeners;
|
||||||
|
};
|
||||||
|
exports.setMaxListeners = function setMaxListeners(n, ...emitters) {
|
||||||
|
if (emitters.length === 0) exports.defaultMaxListeners = n;
|
||||||
|
else {
|
||||||
|
for (const emitter of emitters) {
|
||||||
|
if (typeof emitter.setMaxListeners === "function") {
|
||||||
|
emitter.setMaxListeners(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -2371,7 +2684,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-zlib/lib/errors.js
|
// ../../node_modules/bare-zlib/lib/errors.js
|
||||||
var require_errors = __commonJS({
|
var require_errors2 = __commonJS({
|
||||||
"../../node_modules/bare-zlib/lib/errors.js"(exports, module) {
|
"../../node_modules/bare-zlib/lib/errors.js"(exports, module) {
|
||||||
module.exports = class ZlibError extends Error {
|
module.exports = class ZlibError extends Error {
|
||||||
constructor(msg, code, fn = ZlibError) {
|
constructor(msg, code, fn = ZlibError) {
|
||||||
@@ -2415,7 +2728,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
var { Transform, Writable } = require_bare_stream();
|
var { Transform, Writable } = require_bare_stream();
|
||||||
var binding = require_binding();
|
var binding = require_binding();
|
||||||
var constants = require_constants();
|
var constants = require_constants();
|
||||||
var errors = require_errors();
|
var errors = require_errors2();
|
||||||
exports.constants = constants;
|
exports.constants = constants;
|
||||||
exports.errors = errors;
|
exports.errors = errors;
|
||||||
var ZlibState = class {
|
var ZlibState = class {
|
||||||
|
|||||||
@@ -342,10 +342,17 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
+323
-316
@@ -36,10 +36,323 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
));
|
));
|
||||||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/lib/errors.js
|
||||||
|
var require_errors = __commonJS({
|
||||||
|
"../../node_modules/bare-events/lib/errors.js"(exports, module) {
|
||||||
|
module.exports = class EventEmitterError extends Error {
|
||||||
|
constructor(msg, code, fn = EventEmitterError, opts) {
|
||||||
|
super(`${code}: ${msg}`, opts);
|
||||||
|
this.code = code;
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(this, fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
get name() {
|
||||||
|
return "EventEmitterError";
|
||||||
|
}
|
||||||
|
static OPERATION_ABORTED(cause, msg = "Operation aborted") {
|
||||||
|
return new EventEmitterError(msg, "OPERATION_ABORTED", EventEmitterError.OPERATION_ABORTED, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
static UNHANDLED_ERROR(cause, msg = "Unhandled error") {
|
||||||
|
return new EventEmitterError(msg, "UNHANDLED_ERROR", EventEmitterError.UNHANDLED_ERROR, {
|
||||||
|
cause
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../../node_modules/bare-events/index.js
|
||||||
|
var require_bare_events = __commonJS({
|
||||||
|
"../../node_modules/bare-events/index.js"(exports, module) {
|
||||||
|
var errors = require_errors();
|
||||||
|
var EventListener = class {
|
||||||
|
constructor() {
|
||||||
|
this.list = [];
|
||||||
|
this.count = 0;
|
||||||
|
}
|
||||||
|
append(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.push([fn, once]);
|
||||||
|
}
|
||||||
|
prepend(ctx, name, fn, once) {
|
||||||
|
this.count++;
|
||||||
|
ctx.emit("newListener", name, fn);
|
||||||
|
this.list.unshift([fn, once]);
|
||||||
|
}
|
||||||
|
remove(ctx, name, fn) {
|
||||||
|
for (let i = 0, n = this.list.length; i < n; i++) {
|
||||||
|
const l = this.list[i];
|
||||||
|
if (l[0] === fn) {
|
||||||
|
this.list.splice(i, 1);
|
||||||
|
if (this.count === 1) delete ctx._events[name];
|
||||||
|
ctx.emit("removeListener", name, fn);
|
||||||
|
this.count--;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
removeAll(ctx, name) {
|
||||||
|
const list = [...this.list];
|
||||||
|
this.list = [];
|
||||||
|
if (this.count === list.length) delete ctx._events[name];
|
||||||
|
for (let i = list.length - 1; i >= 0; i--) {
|
||||||
|
ctx.emit("removeListener", name, list[i][0]);
|
||||||
|
}
|
||||||
|
this.count -= list.length;
|
||||||
|
}
|
||||||
|
emit(ctx, name, ...args) {
|
||||||
|
const list = [...this.list];
|
||||||
|
for (let i = 0, n = list.length; i < n; i++) {
|
||||||
|
const l = list[i];
|
||||||
|
if (l[1] === true) this.remove(ctx, name, l[0]);
|
||||||
|
Reflect.apply(l[0], ctx, args);
|
||||||
|
}
|
||||||
|
return list.length > 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function appendListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.append(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function prependListener(ctx, name, fn, once) {
|
||||||
|
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
||||||
|
e.prepend(ctx, name, fn, once);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function removeListener(ctx, name, fn) {
|
||||||
|
if (ctx._events === void 0) return ctx;
|
||||||
|
const e = ctx._events[name];
|
||||||
|
if (e !== void 0) e.remove(ctx, name, fn);
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
function throwUnhandledError(...args) {
|
||||||
|
let err;
|
||||||
|
if (args.length > 0) err = args[0];
|
||||||
|
if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err);
|
||||||
|
if (Error.captureStackTrace) {
|
||||||
|
Error.captureStackTrace(err, exports.prototype.emit);
|
||||||
|
}
|
||||||
|
queueMicrotask(() => {
|
||||||
|
throw err;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
module.exports = exports = class EventEmitter {
|
||||||
|
constructor() {
|
||||||
|
this._events = /* @__PURE__ */ Object.create(null);
|
||||||
|
}
|
||||||
|
addListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
addOnceListener(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
prependListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
prependOnceListener(name, fn) {
|
||||||
|
return prependListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
removeListener(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
on(name, fn) {
|
||||||
|
return appendListener(this, name, fn, false);
|
||||||
|
}
|
||||||
|
once(name, fn) {
|
||||||
|
return appendListener(this, name, fn, true);
|
||||||
|
}
|
||||||
|
off(name, fn) {
|
||||||
|
return removeListener(this, name, fn);
|
||||||
|
}
|
||||||
|
emit(name, ...args) {
|
||||||
|
if (name === "error" && this._events !== void 0 && this._events.error === void 0) {
|
||||||
|
throwUnhandledError(...args);
|
||||||
|
}
|
||||||
|
if (this._events === void 0) return false;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? false : e.emit(this, name, ...args);
|
||||||
|
}
|
||||||
|
listeners(name) {
|
||||||
|
if (this._events === void 0) return [];
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? [] : [...e.list];
|
||||||
|
}
|
||||||
|
listenerCount(name) {
|
||||||
|
if (this._events === void 0) return 0;
|
||||||
|
const e = this._events[name];
|
||||||
|
return e === void 0 ? 0 : e.list.length;
|
||||||
|
}
|
||||||
|
getMaxListeners() {
|
||||||
|
return EventEmitter.defaultMaxListeners;
|
||||||
|
}
|
||||||
|
setMaxListeners(n) {
|
||||||
|
}
|
||||||
|
removeAllListeners(name) {
|
||||||
|
if (arguments.length === 0) {
|
||||||
|
for (const key of Reflect.ownKeys(this._events)) {
|
||||||
|
if (key === "removeListener") continue;
|
||||||
|
this.removeAllListeners(key);
|
||||||
|
}
|
||||||
|
this.removeAllListeners("removeListener");
|
||||||
|
} else {
|
||||||
|
const e = this._events[name];
|
||||||
|
if (e !== void 0) e.removeAll(this, name);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.EventEmitter = exports;
|
||||||
|
exports.errors = errors;
|
||||||
|
exports.defaultMaxListeners = 10;
|
||||||
|
exports.on = function on(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
throw errors.OPERATION_ABORTED(signal.reason);
|
||||||
|
}
|
||||||
|
let error = null;
|
||||||
|
let done = false;
|
||||||
|
const events = [];
|
||||||
|
const promises = [];
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.on(name, onevent);
|
||||||
|
return {
|
||||||
|
next() {
|
||||||
|
if (events.length) {
|
||||||
|
return Promise.resolve({ value: events.shift(), done: false });
|
||||||
|
}
|
||||||
|
if (error) {
|
||||||
|
const err = error;
|
||||||
|
error = null;
|
||||||
|
return Promise.reject(err);
|
||||||
|
}
|
||||||
|
if (done) return onclose();
|
||||||
|
return new Promise((resolve, reject) => promises.push({ resolve, reject }));
|
||||||
|
},
|
||||||
|
return() {
|
||||||
|
return onclose();
|
||||||
|
},
|
||||||
|
throw(err) {
|
||||||
|
return onerror(err);
|
||||||
|
},
|
||||||
|
[Symbol.asyncIterator]() {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
function onevent(...args) {
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().resolve({ value: args, done: false });
|
||||||
|
} else {
|
||||||
|
events.push(args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent).off("error", onerror);
|
||||||
|
if (promises.length) {
|
||||||
|
promises.shift().reject(err);
|
||||||
|
} else {
|
||||||
|
error = err;
|
||||||
|
}
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
function onclose() {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
done = true;
|
||||||
|
if (promises.length) promises.shift().resolve({ done: true });
|
||||||
|
return Promise.resolve({ done: true });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.once = function once(emitter, name, opts = {}) {
|
||||||
|
const { signal } = opts;
|
||||||
|
if (signal && signal.aborted) {
|
||||||
|
return Promise.reject(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
if (name !== "error") emitter.on("error", onerror);
|
||||||
|
if (signal) signal.addEventListener("abort", onabort);
|
||||||
|
emitter.once(name, onevent);
|
||||||
|
function onevent(...args) {
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
if (signal) signal.removeEventListener("abort", onabort);
|
||||||
|
resolve(args);
|
||||||
|
}
|
||||||
|
function onerror(err) {
|
||||||
|
emitter.off(name, onevent);
|
||||||
|
if (name !== "error") emitter.off("error", onerror);
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
|
function onabort() {
|
||||||
|
signal.removeEventListener("abort", onabort);
|
||||||
|
onerror(errors.OPERATION_ABORTED(signal.reason));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.forward = function forward(from, to, names, opts = {}) {
|
||||||
|
if (typeof names === "string") names = [names];
|
||||||
|
const { emit = to.emit.bind(to) } = opts;
|
||||||
|
const listeners = names.map(
|
||||||
|
(name) => function onevent(...args) {
|
||||||
|
emit(name, ...args);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
to.on("newListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.on(name, listeners[i]);
|
||||||
|
}
|
||||||
|
}).on("removeListener", (name) => {
|
||||||
|
const i = names.indexOf(name);
|
||||||
|
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||||
|
from.off(name, listeners[i]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
exports.listenerCount = function listenerCount(emitter, name) {
|
||||||
|
return emitter.listenerCount(name);
|
||||||
|
};
|
||||||
|
exports.getMaxListeners = function getMaxListeners(emitter) {
|
||||||
|
if (typeof emitter.getMaxListeners === "function") {
|
||||||
|
return emitter.getMaxListeners();
|
||||||
|
}
|
||||||
|
return exports.defaultMaxListeners;
|
||||||
|
};
|
||||||
|
exports.setMaxListeners = function setMaxListeners(n, ...emitters) {
|
||||||
|
if (emitters.length === 0) exports.defaultMaxListeners = n;
|
||||||
|
else {
|
||||||
|
for (const emitter of emitters) {
|
||||||
|
if (typeof emitter.setMaxListeners === "function") {
|
||||||
|
emitter.setMaxListeners(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js
|
||||||
|
var require_bare_node_events = __commonJS({
|
||||||
|
"../bare-os-openssh/vendor/bare-node-shims/bare-node-events/index.js"(exports, module) {
|
||||||
|
module.exports = require_bare_events();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// ../../node_modules/events-universal/default.js
|
// ../../node_modules/events-universal/default.js
|
||||||
var require_default = __commonJS({
|
var require_default = __commonJS({
|
||||||
"../../node_modules/events-universal/default.js"(exports, module) {
|
"../../node_modules/events-universal/default.js"(exports, module) {
|
||||||
module.exports = __require("events");
|
module.exports = require_bare_node_events();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -2431,7 +2744,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-http1/lib/errors.js
|
// ../../node_modules/bare-http1/lib/errors.js
|
||||||
var require_errors = __commonJS({
|
var require_errors2 = __commonJS({
|
||||||
"../../node_modules/bare-http1/lib/errors.js"(exports, module) {
|
"../../node_modules/bare-http1/lib/errors.js"(exports, module) {
|
||||||
module.exports = class HTTPError extends Error {
|
module.exports = class HTTPError extends Error {
|
||||||
constructor(msg, fn = HTTPError, code = fn.name) {
|
constructor(msg, fn = HTTPError, code = fn.name) {
|
||||||
@@ -2461,7 +2774,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
var require_outgoing_message = __commonJS({
|
var require_outgoing_message = __commonJS({
|
||||||
"../../node_modules/bare-http1/lib/outgoing-message.js"(exports, module) {
|
"../../node_modules/bare-http1/lib/outgoing-message.js"(exports, module) {
|
||||||
var { Writable } = require_bare_stream();
|
var { Writable } = require_bare_stream();
|
||||||
var errors = require_errors();
|
var errors = require_errors2();
|
||||||
module.exports = class HTTPOutgoingMessage extends Writable {
|
module.exports = class HTTPOutgoingMessage extends Writable {
|
||||||
constructor(socket = null) {
|
constructor(socket = null) {
|
||||||
super();
|
super();
|
||||||
@@ -2517,312 +2830,6 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-events/lib/errors.js
|
|
||||||
var require_errors2 = __commonJS({
|
|
||||||
"../../node_modules/bare-events/lib/errors.js"(exports, module) {
|
|
||||||
module.exports = class EventEmitterError extends Error {
|
|
||||||
constructor(msg, code, fn = EventEmitterError, opts) {
|
|
||||||
super(`${code}: ${msg}`, opts);
|
|
||||||
this.code = code;
|
|
||||||
if (Error.captureStackTrace) {
|
|
||||||
Error.captureStackTrace(this, fn);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
get name() {
|
|
||||||
return "EventEmitterError";
|
|
||||||
}
|
|
||||||
static OPERATION_ABORTED(cause, msg = "Operation aborted") {
|
|
||||||
return new EventEmitterError(msg, "OPERATION_ABORTED", EventEmitterError.OPERATION_ABORTED, {
|
|
||||||
cause
|
|
||||||
});
|
|
||||||
}
|
|
||||||
static UNHANDLED_ERROR(cause, msg = "Unhandled error") {
|
|
||||||
return new EventEmitterError(msg, "UNHANDLED_ERROR", EventEmitterError.UNHANDLED_ERROR, {
|
|
||||||
cause
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// ../../node_modules/bare-events/index.js
|
|
||||||
var require_bare_events = __commonJS({
|
|
||||||
"../../node_modules/bare-events/index.js"(exports, module) {
|
|
||||||
var errors = require_errors2();
|
|
||||||
var EventListener = class {
|
|
||||||
constructor() {
|
|
||||||
this.list = [];
|
|
||||||
this.count = 0;
|
|
||||||
}
|
|
||||||
append(ctx, name, fn, once) {
|
|
||||||
this.count++;
|
|
||||||
ctx.emit("newListener", name, fn);
|
|
||||||
this.list.push([fn, once]);
|
|
||||||
}
|
|
||||||
prepend(ctx, name, fn, once) {
|
|
||||||
this.count++;
|
|
||||||
ctx.emit("newListener", name, fn);
|
|
||||||
this.list.unshift([fn, once]);
|
|
||||||
}
|
|
||||||
remove(ctx, name, fn) {
|
|
||||||
for (let i = 0, n = this.list.length; i < n; i++) {
|
|
||||||
const l = this.list[i];
|
|
||||||
if (l[0] === fn) {
|
|
||||||
this.list.splice(i, 1);
|
|
||||||
if (this.count === 1) delete ctx._events[name];
|
|
||||||
ctx.emit("removeListener", name, fn);
|
|
||||||
this.count--;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
removeAll(ctx, name) {
|
|
||||||
const list = [...this.list];
|
|
||||||
this.list = [];
|
|
||||||
if (this.count === list.length) delete ctx._events[name];
|
|
||||||
for (let i = list.length - 1; i >= 0; i--) {
|
|
||||||
ctx.emit("removeListener", name, list[i][0]);
|
|
||||||
}
|
|
||||||
this.count -= list.length;
|
|
||||||
}
|
|
||||||
emit(ctx, name, ...args) {
|
|
||||||
const list = [...this.list];
|
|
||||||
for (let i = 0, n = list.length; i < n; i++) {
|
|
||||||
const l = list[i];
|
|
||||||
if (l[1] === true) this.remove(ctx, name, l[0]);
|
|
||||||
Reflect.apply(l[0], ctx, args);
|
|
||||||
}
|
|
||||||
return list.length > 0;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
function appendListener(ctx, name, fn, once) {
|
|
||||||
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
|
||||||
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
|
||||||
e.append(ctx, name, fn, once);
|
|
||||||
return ctx;
|
|
||||||
}
|
|
||||||
function prependListener(ctx, name, fn, once) {
|
|
||||||
if (ctx._events === void 0) ctx._events = /* @__PURE__ */ Object.create(null);
|
|
||||||
const e = ctx._events[name] || (ctx._events[name] = new EventListener());
|
|
||||||
e.prepend(ctx, name, fn, once);
|
|
||||||
return ctx;
|
|
||||||
}
|
|
||||||
function removeListener(ctx, name, fn) {
|
|
||||||
if (ctx._events === void 0) return ctx;
|
|
||||||
const e = ctx._events[name];
|
|
||||||
if (e !== void 0) e.remove(ctx, name, fn);
|
|
||||||
return ctx;
|
|
||||||
}
|
|
||||||
function throwUnhandledError(...args) {
|
|
||||||
let err;
|
|
||||||
if (args.length > 0) err = args[0];
|
|
||||||
if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err);
|
|
||||||
if (Error.captureStackTrace) {
|
|
||||||
Error.captureStackTrace(err, exports.prototype.emit);
|
|
||||||
}
|
|
||||||
queueMicrotask(() => {
|
|
||||||
throw err;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
module.exports = exports = class EventEmitter {
|
|
||||||
constructor() {
|
|
||||||
this._events = /* @__PURE__ */ Object.create(null);
|
|
||||||
}
|
|
||||||
addListener(name, fn) {
|
|
||||||
return appendListener(this, name, fn, false);
|
|
||||||
}
|
|
||||||
addOnceListener(name, fn) {
|
|
||||||
return appendListener(this, name, fn, true);
|
|
||||||
}
|
|
||||||
prependListener(name, fn) {
|
|
||||||
return prependListener(this, name, fn, false);
|
|
||||||
}
|
|
||||||
prependOnceListener(name, fn) {
|
|
||||||
return prependListener(this, name, fn, true);
|
|
||||||
}
|
|
||||||
removeListener(name, fn) {
|
|
||||||
return removeListener(this, name, fn);
|
|
||||||
}
|
|
||||||
on(name, fn) {
|
|
||||||
return appendListener(this, name, fn, false);
|
|
||||||
}
|
|
||||||
once(name, fn) {
|
|
||||||
return appendListener(this, name, fn, true);
|
|
||||||
}
|
|
||||||
off(name, fn) {
|
|
||||||
return removeListener(this, name, fn);
|
|
||||||
}
|
|
||||||
emit(name, ...args) {
|
|
||||||
if (name === "error" && this._events !== void 0 && this._events.error === void 0) {
|
|
||||||
throwUnhandledError(...args);
|
|
||||||
}
|
|
||||||
if (this._events === void 0) return false;
|
|
||||||
const e = this._events[name];
|
|
||||||
return e === void 0 ? false : e.emit(this, name, ...args);
|
|
||||||
}
|
|
||||||
listeners(name) {
|
|
||||||
if (this._events === void 0) return [];
|
|
||||||
const e = this._events[name];
|
|
||||||
return e === void 0 ? [] : [...e.list];
|
|
||||||
}
|
|
||||||
listenerCount(name) {
|
|
||||||
if (this._events === void 0) return 0;
|
|
||||||
const e = this._events[name];
|
|
||||||
return e === void 0 ? 0 : e.list.length;
|
|
||||||
}
|
|
||||||
getMaxListeners() {
|
|
||||||
return EventEmitter.defaultMaxListeners;
|
|
||||||
}
|
|
||||||
setMaxListeners(n) {
|
|
||||||
}
|
|
||||||
removeAllListeners(name) {
|
|
||||||
if (arguments.length === 0) {
|
|
||||||
for (const key of Reflect.ownKeys(this._events)) {
|
|
||||||
if (key === "removeListener") continue;
|
|
||||||
this.removeAllListeners(key);
|
|
||||||
}
|
|
||||||
this.removeAllListeners("removeListener");
|
|
||||||
} else {
|
|
||||||
const e = this._events[name];
|
|
||||||
if (e !== void 0) e.removeAll(this, name);
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
exports.EventEmitter = exports;
|
|
||||||
exports.errors = errors;
|
|
||||||
exports.defaultMaxListeners = 10;
|
|
||||||
exports.on = function on(emitter, name, opts = {}) {
|
|
||||||
const { signal } = opts;
|
|
||||||
if (signal && signal.aborted) {
|
|
||||||
throw errors.OPERATION_ABORTED(signal.reason);
|
|
||||||
}
|
|
||||||
let error = null;
|
|
||||||
let done = false;
|
|
||||||
const events = [];
|
|
||||||
const promises = [];
|
|
||||||
if (name !== "error") emitter.on("error", onerror);
|
|
||||||
if (signal) signal.addEventListener("abort", onabort);
|
|
||||||
emitter.on(name, onevent);
|
|
||||||
return {
|
|
||||||
next() {
|
|
||||||
if (events.length) {
|
|
||||||
return Promise.resolve({ value: events.shift(), done: false });
|
|
||||||
}
|
|
||||||
if (error) {
|
|
||||||
const err = error;
|
|
||||||
error = null;
|
|
||||||
return Promise.reject(err);
|
|
||||||
}
|
|
||||||
if (done) return onclose();
|
|
||||||
return new Promise((resolve, reject) => promises.push({ resolve, reject }));
|
|
||||||
},
|
|
||||||
return() {
|
|
||||||
return onclose();
|
|
||||||
},
|
|
||||||
throw(err) {
|
|
||||||
return onerror(err);
|
|
||||||
},
|
|
||||||
[Symbol.asyncIterator]() {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
function onevent(...args) {
|
|
||||||
if (promises.length) {
|
|
||||||
promises.shift().resolve({ value: args, done: false });
|
|
||||||
} else {
|
|
||||||
events.push(args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function onerror(err) {
|
|
||||||
emitter.off(name, onevent).off("error", onerror);
|
|
||||||
if (promises.length) {
|
|
||||||
promises.shift().reject(err);
|
|
||||||
} else {
|
|
||||||
error = err;
|
|
||||||
}
|
|
||||||
return Promise.resolve({ done: true });
|
|
||||||
}
|
|
||||||
function onabort() {
|
|
||||||
signal.removeEventListener("abort", onabort);
|
|
||||||
onerror(errors.OPERATION_ABORTED(signal.reason));
|
|
||||||
}
|
|
||||||
function onclose() {
|
|
||||||
emitter.off(name, onevent);
|
|
||||||
if (name !== "error") emitter.off("error", onerror);
|
|
||||||
if (signal) signal.removeEventListener("abort", onabort);
|
|
||||||
done = true;
|
|
||||||
if (promises.length) promises.shift().resolve({ done: true });
|
|
||||||
return Promise.resolve({ done: true });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
exports.once = function once(emitter, name, opts = {}) {
|
|
||||||
const { signal } = opts;
|
|
||||||
if (signal && signal.aborted) {
|
|
||||||
return Promise.reject(errors.OPERATION_ABORTED(signal.reason));
|
|
||||||
}
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
if (name !== "error") emitter.on("error", onerror);
|
|
||||||
if (signal) signal.addEventListener("abort", onabort);
|
|
||||||
emitter.once(name, onevent);
|
|
||||||
function onevent(...args) {
|
|
||||||
if (name !== "error") emitter.off("error", onerror);
|
|
||||||
if (signal) signal.removeEventListener("abort", onabort);
|
|
||||||
resolve(args);
|
|
||||||
}
|
|
||||||
function onerror(err) {
|
|
||||||
emitter.off(name, onevent);
|
|
||||||
if (name !== "error") emitter.off("error", onerror);
|
|
||||||
reject(err);
|
|
||||||
}
|
|
||||||
function onabort() {
|
|
||||||
signal.removeEventListener("abort", onabort);
|
|
||||||
onerror(errors.OPERATION_ABORTED(signal.reason));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
exports.forward = function forward(from, to, names, opts = {}) {
|
|
||||||
if (typeof names === "string") names = [names];
|
|
||||||
const { emit = to.emit.bind(to) } = opts;
|
|
||||||
const listeners = names.map(
|
|
||||||
(name) => function onevent(...args) {
|
|
||||||
emit(name, ...args);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
to.on("newListener", (name) => {
|
|
||||||
const i = names.indexOf(name);
|
|
||||||
if (i !== -1 && to.listenerCount(name) === 0) {
|
|
||||||
from.on(name, listeners[i]);
|
|
||||||
}
|
|
||||||
}).on("removeListener", (name) => {
|
|
||||||
const i = names.indexOf(name);
|
|
||||||
if (i !== -1 && to.listenerCount(name) === 0) {
|
|
||||||
from.off(name, listeners[i]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
exports.listenerCount = function listenerCount(emitter, name) {
|
|
||||||
return emitter.listenerCount(name);
|
|
||||||
};
|
|
||||||
exports.getMaxListeners = function getMaxListeners(emitter) {
|
|
||||||
if (typeof emitter.getMaxListeners === "function") {
|
|
||||||
return emitter.getMaxListeners();
|
|
||||||
}
|
|
||||||
return exports.defaultMaxListeners;
|
|
||||||
};
|
|
||||||
exports.setMaxListeners = function setMaxListeners(n, ...emitters) {
|
|
||||||
if (emitters.length === 0) exports.defaultMaxListeners = n;
|
|
||||||
else {
|
|
||||||
for (const emitter of emitters) {
|
|
||||||
if (typeof emitter.setMaxListeners === "function") {
|
|
||||||
emitter.setMaxListeners(n);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// ../../node_modules/bare-dns/binding.js
|
// ../../node_modules/bare-dns/binding.js
|
||||||
var require_binding = __commonJS({
|
var require_binding = __commonJS({
|
||||||
"../../node_modules/bare-dns/binding.js"(exports, module) {
|
"../../node_modules/bare-dns/binding.js"(exports, module) {
|
||||||
@@ -4156,7 +4163,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
"../../node_modules/bare-http1/lib/client-connection.js"(exports, module) {
|
"../../node_modules/bare-http1/lib/client-connection.js"(exports, module) {
|
||||||
var HTTPParser = require_bare_http_parser();
|
var HTTPParser = require_bare_http_parser();
|
||||||
var HTTPIncomingMessage = require_incoming_message();
|
var HTTPIncomingMessage = require_incoming_message();
|
||||||
var errors = require_errors();
|
var errors = require_errors2();
|
||||||
var {
|
var {
|
||||||
constants: { RESPONSE, DATA, END }
|
constants: { RESPONSE, DATA, END }
|
||||||
} = HTTPParser;
|
} = HTTPParser;
|
||||||
@@ -4280,7 +4287,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
var EventEmitter = require_bare_events();
|
var EventEmitter = require_bare_events();
|
||||||
var tcp = require_bare_tcp();
|
var tcp = require_bare_tcp();
|
||||||
var HTTPClientConnection = require_client_connection();
|
var HTTPClientConnection = require_client_connection();
|
||||||
var errors = require_errors();
|
var errors = require_errors2();
|
||||||
var HTTPSocketSet = class {
|
var HTTPSocketSet = class {
|
||||||
constructor() {
|
constructor() {
|
||||||
this._sockets = /* @__PURE__ */ new Map();
|
this._sockets = /* @__PURE__ */ new Map();
|
||||||
@@ -4909,7 +4916,7 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
exports.ClientRequest = require_client_request();
|
exports.ClientRequest = require_client_request();
|
||||||
exports.ClientConnection = require_client_connection();
|
exports.ClientConnection = require_client_connection();
|
||||||
exports.constants = require_constants2();
|
exports.constants = require_constants2();
|
||||||
exports.errors = require_errors();
|
exports.errors = require_errors2();
|
||||||
exports.METHODS = Object.values(exports.constants.method);
|
exports.METHODS = Object.values(exports.constants.method);
|
||||||
exports.STATUS_CODES = exports.constants.status;
|
exports.STATUS_CODES = exports.constants.status;
|
||||||
exports.createServer = function createServer(opts, onrequest) {
|
exports.createServer = function createServer(opts, onrequest) {
|
||||||
@@ -5447,9 +5454,9 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-net/lib/constants.js
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-net/lib/constants.js
|
||||||
var require_constants5 = __commonJS({
|
var require_constants5 = __commonJS({
|
||||||
"../../node_modules/bare-net/lib/constants.js"(exports, module) {
|
"../bare-os-openssh/vendor/bare-node-shims/bare-net/lib/constants.js"(exports, module) {
|
||||||
module.exports = {
|
module.exports = {
|
||||||
type: {
|
type: {
|
||||||
TCP: 1,
|
TCP: 1,
|
||||||
@@ -5462,9 +5469,9 @@ var __bare_os_bundle_exports__ = (() => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ../../node_modules/bare-net/index.js
|
// ../bare-os-openssh/vendor/bare-node-shims/bare-net/index.js
|
||||||
var require_bare_net = __commonJS({
|
var require_bare_net = __commonJS({
|
||||||
"../../node_modules/bare-net/index.js"(exports) {
|
"../bare-os-openssh/vendor/bare-node-shims/bare-net/index.js"(exports) {
|
||||||
var EventEmitter = require_bare_events();
|
var EventEmitter = require_bare_events();
|
||||||
var { Duplex } = require_bare_stream();
|
var { Duplex } = require_bare_stream();
|
||||||
var tcp = require_bare_tcp();
|
var tcp = require_bare_tcp();
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
+339
-327
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"schema": 1,
|
"schema": 1,
|
||||||
"atMs": 1775701596651,
|
"atMs": 1775777169246,
|
||||||
"commands": [
|
"commands": [
|
||||||
"arch",
|
"arch",
|
||||||
"awk",
|
"awk",
|
||||||
@@ -49,6 +49,7 @@
|
|||||||
"hdms",
|
"hdms",
|
||||||
"head",
|
"head",
|
||||||
"help",
|
"help",
|
||||||
|
"holesail",
|
||||||
"hostid",
|
"hostid",
|
||||||
"hostname",
|
"hostname",
|
||||||
"iconv",
|
"iconv",
|
||||||
|
|||||||
+2533
-2504
File diff suppressed because one or more lines are too long
Generated
+399
-8
@@ -8,6 +8,9 @@
|
|||||||
"workspaces": [
|
"workspaces": [
|
||||||
"packages/*"
|
"packages/*"
|
||||||
],
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"holesail": "^2.4.1"
|
||||||
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"ajv": "^8.17.1",
|
"ajv": "^8.17.1",
|
||||||
"patch-package": "^8.0.1",
|
"patch-package": "^8.0.1",
|
||||||
@@ -459,6 +462,17 @@
|
|||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@holesail/hyper-cmd-lib-net": {
|
||||||
|
"version": "1.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@holesail/hyper-cmd-lib-net/-/hyper-cmd-lib-net-1.1.2.tgz",
|
||||||
|
"integrity": "sha512-4SDQ6p+lVxap8F3RfEQPeY+bk/YQ8CxZis7AeUbDnspy9TPV/tyUrrx1elcjtAO/3b1AsVgFV8o0rouhz23/9w==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"bare-dgram": "^1.0.1",
|
||||||
|
"bare-net": "^2.2.0",
|
||||||
|
"net": "npm:bare-net@^2.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@hyperswarm/secret-stream": {
|
"node_modules/@hyperswarm/secret-stream": {
|
||||||
"version": "6.9.1",
|
"version": "6.9.1",
|
||||||
"resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.9.1.tgz",
|
"resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.9.1.tgz",
|
||||||
@@ -594,6 +608,12 @@
|
|||||||
"url": "https://github.com/sponsors/epoberezkin"
|
"url": "https://github.com/sponsors/epoberezkin"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/ansi-parser": {
|
||||||
|
"version": "3.2.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-parser/-/ansi-parser-3.2.11.tgz",
|
||||||
|
"integrity": "sha512-HeEwCVf/pI9qQUVaTkoDBl9U/QU4RvWJ+Trg1jNSNvDzFsBAId6fHv6VLiC7HzwrOiL8uOEkO5T1eTgpnTFQfQ==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/ansi-regex": {
|
"node_modules/ansi-regex": {
|
||||||
"version": "6.2.2",
|
"version": "6.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
|
||||||
@@ -880,7 +900,6 @@
|
|||||||
"version": "1.10.0",
|
"version": "1.10.0",
|
||||||
"resolved": "https://registry.npmjs.org/bare-bundle/-/bare-bundle-1.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/bare-bundle/-/bare-bundle-1.10.0.tgz",
|
||||||
"integrity": "sha512-4LVlnJAHr00Hh6Vu6ZUJS38rcEtJT3b3vChXSsBsJ2mk1TN0lQ+gzd+Dw5L0aV7uqDZv84smuwW+O02X7PfDlw==",
|
"integrity": "sha512-4LVlnJAHr00Hh6Vu6ZUJS38rcEtJT3b3vChXSsBsJ2mk1TN0lQ+gzd+Dw5L0aV7uqDZv84smuwW+O02X7PfDlw==",
|
||||||
"devOptional": true,
|
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"bare-buffer": "*",
|
"bare-buffer": "*",
|
||||||
@@ -1246,7 +1265,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/bare-dgram/-/bare-dgram-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/bare-dgram/-/bare-dgram-1.0.1.tgz",
|
||||||
"integrity": "sha512-EdsyRErrkWgN8fENdrDdXFEE9HAuJ/m6ehXz13fVj9JhdCaLWIA+L8o5aYNRLt66x08RlyG2vbrRAZoxGfcdlg==",
|
"integrity": "sha512-EdsyRErrkWgN8fENdrDdXFEE9HAuJ/m6ehXz13fVj9JhdCaLWIA+L8o5aYNRLt66x08RlyG2vbrRAZoxGfcdlg==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"optional": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bare-events": "^2.5.0",
|
"bare-events": "^2.5.0",
|
||||||
"udx-native": "^1.11.2"
|
"udx-native": "^1.11.2"
|
||||||
@@ -1804,7 +1822,6 @@
|
|||||||
"version": "6.1.3",
|
"version": "6.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/bare-module/-/bare-module-6.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/bare-module/-/bare-module-6.1.3.tgz",
|
||||||
"integrity": "sha512-5XWsVHsvtWMH4tK4DQWgpNTV0t/sg3ZrAaQLIxrwjrS5+u8Q9vEgc/zQ4QaDPWDse/y/5h+d+YG1Q0JfSMt0zA==",
|
"integrity": "sha512-5XWsVHsvtWMH4tK4DQWgpNTV0t/sg3ZrAaQLIxrwjrS5+u8Q9vEgc/zQ4QaDPWDse/y/5h+d+YG1Q0JfSMt0zA==",
|
||||||
"devOptional": true,
|
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"bare-bundle": "^1.3.0",
|
"bare-bundle": "^1.3.0",
|
||||||
@@ -1829,7 +1846,6 @@
|
|||||||
"version": "1.4.7",
|
"version": "1.4.7",
|
||||||
"resolved": "https://registry.npmjs.org/bare-module-lexer/-/bare-module-lexer-1.4.7.tgz",
|
"resolved": "https://registry.npmjs.org/bare-module-lexer/-/bare-module-lexer-1.4.7.tgz",
|
||||||
"integrity": "sha512-0klU4eMsjh/wcxi8FdHmNom2j2F4kmkXOhyJFL9qTaSFp2lE3m6BtbKgMHY8R5miqC9r8/IfA8wzXnC5Os14WA==",
|
"integrity": "sha512-0klU4eMsjh/wcxi8FdHmNom2j2F4kmkXOhyJFL9qTaSFp2lE3m6BtbKgMHY8R5miqC9r8/IfA8wzXnC5Os14WA==",
|
||||||
"devOptional": true,
|
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"require-addon": "^1.0.2"
|
"require-addon": "^1.0.2"
|
||||||
@@ -2278,8 +2294,7 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/bare-querystring/-/bare-querystring-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/bare-querystring/-/bare-querystring-1.0.0.tgz",
|
||||||
"integrity": "sha512-Kbqdjd4f1MxMtutXzraEKIXqXRfq9uWLwzUT5bLUh9TCiPznY9l6vHc4BUPNIa13DyH1VAlPy3iOxHzhqV2quQ==",
|
"integrity": "sha512-Kbqdjd4f1MxMtutXzraEKIXqXRfq9uWLwzUT5bLUh9TCiPznY9l6vHc4BUPNIa13DyH1VAlPy3iOxHzhqV2quQ==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0"
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"node_modules/bare-queue-microtask": {
|
"node_modules/bare-queue-microtask": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
@@ -3385,6 +3400,15 @@
|
|||||||
"bare-stream": "^2.4.2"
|
"bare-stream": "^2.4.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/barely-colours": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/barely-colours/-/barely-colours-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-kzOuBDHD3O4BmVwq7yuD62bqc7WnF8YG648W3nQ2lRjRr7psv5MWrpWkUTTUoCbv6V3WjsWJMuACDz4eSNa6jQ==",
|
||||||
|
"license": "GPL v3",
|
||||||
|
"dependencies": {
|
||||||
|
"bare-ansi-escapes": "^2.2.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/base64-js": {
|
"node_modules/base64-js": {
|
||||||
"version": "1.5.1",
|
"version": "1.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
||||||
@@ -3846,6 +3870,31 @@
|
|||||||
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/child_process": {
|
||||||
|
"name": "bare-subprocess",
|
||||||
|
"version": "5.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/bare-subprocess/-/bare-subprocess-5.2.3.tgz",
|
||||||
|
"integrity": "sha512-07wwswlV7M3sC9IykbZRZ/jHAkrXFWVLqdBWGv1y0ojCimtRD9hGwxdHmR5FUFmDUZLNsBmTYJNQqgio5+A85Q==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"bare-env": "^3.0.0",
|
||||||
|
"bare-events": "^2.5.4",
|
||||||
|
"bare-os": "^3.0.1",
|
||||||
|
"bare-pipe": "^4.0.0",
|
||||||
|
"bare-url": "^2.2.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"bare": ">=1.7.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"bare-buffer": "*"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"bare-buffer": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/ci-info": {
|
"node_modules/ci-info": {
|
||||||
"version": "3.9.0",
|
"version": "3.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
|
||||||
@@ -3875,6 +3924,19 @@
|
|||||||
"integrity": "sha512-bLSptAy2P0s6hU4PzuIMKmMJJSE6gLXGH1cntDu7bWJUksvuM+7ReOK61mozULErYvP6a15rnYl0zFDef+pyPw==",
|
"integrity": "sha512-bLSptAy2P0s6hU4PzuIMKmMJJSE6gLXGH1cntDu7bWJUksvuM+7ReOK61mozULErYvP6a15rnYl0zFDef+pyPw==",
|
||||||
"license": "Apache-2.0"
|
"license": "Apache-2.0"
|
||||||
},
|
},
|
||||||
|
"node_modules/cli-box": {
|
||||||
|
"version": "6.0.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/cli-box/-/cli-box-6.0.10.tgz",
|
||||||
|
"integrity": "sha512-6jjSF6G1gOXaCyBQJKo3L3lZKxP8jzdECG7FBiA4m2w7K8jBxXXwsMb75fBLwoVwOtKwvgKjLJurw8HU5XNciw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"ansi-parser": "^3.2.1",
|
||||||
|
"deffy": "^2.2.1",
|
||||||
|
"is-undefined": "^1.0.0",
|
||||||
|
"is-win": "^1.0.0",
|
||||||
|
"ul": "^5.2.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/cmake-fetch": {
|
"node_modules/cmake-fetch": {
|
||||||
"version": "1.4.9",
|
"version": "1.4.9",
|
||||||
"resolved": "https://registry.npmjs.org/cmake-fetch/-/cmake-fetch-1.4.9.tgz",
|
"resolved": "https://registry.npmjs.org/cmake-fetch/-/cmake-fetch-1.4.9.tgz",
|
||||||
@@ -4061,6 +4123,15 @@
|
|||||||
"devOptional": true,
|
"devOptional": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/colors": {
|
||||||
|
"version": "1.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
|
||||||
|
"integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.1.90"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/commander": {
|
"node_modules/commander": {
|
||||||
"version": "11.1.0",
|
"version": "11.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
|
||||||
@@ -4332,6 +4403,15 @@
|
|||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/deffy": {
|
||||||
|
"version": "2.2.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/deffy/-/deffy-2.2.5.tgz",
|
||||||
|
"integrity": "sha512-6TX2cfIo97eKqWmqgMDAUulCwnveAe3K+4VGsTGPJsL3NtSEnSBFZ3sUXdS4EBhZ8GbdaZBzXQ04ton18dJrug==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"typpy": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/define-data-property": {
|
"node_modules/define-data-property": {
|
||||||
"version": "1.1.4",
|
"version": "1.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
|
||||||
@@ -4722,6 +4802,31 @@
|
|||||||
"streamx": "^2.13.0"
|
"streamx": "^2.13.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/fs": {
|
||||||
|
"name": "bare-fs",
|
||||||
|
"version": "4.7.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.0.tgz",
|
||||||
|
"integrity": "sha512-xzqKsCFxAek9aezYhjJuJRXBIaYlg/0OGDTZp+T8eYmYMlm66cs6cYko02drIyjN2CBbi+I6L7YfXyqpqtKRXA==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"bare-events": "^2.5.4",
|
||||||
|
"bare-path": "^3.0.0",
|
||||||
|
"bare-stream": "^2.6.4",
|
||||||
|
"bare-url": "^2.2.2",
|
||||||
|
"fast-fifo": "^1.3.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"bare": ">=1.16.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"bare-buffer": "*"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"bare-buffer": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/fs-constants": {
|
"node_modules/fs-constants": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
|
||||||
@@ -4775,6 +4880,15 @@
|
|||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/function.name": {
|
||||||
|
"version": "1.0.14",
|
||||||
|
"resolved": "https://registry.npmjs.org/function.name/-/function.name-1.0.14.tgz",
|
||||||
|
"integrity": "sha512-s99L814NRuLxwF2sJMIcLhkQhueGXb3oKyvorzrUKKwlVB0SBbWrgZt4+EwKAo3ujCXnT7vshmCvXgZA09kCMw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"noop6": "^1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/generate-object-property": {
|
"node_modules/generate-object-property": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-2.0.0.tgz",
|
||||||
@@ -4917,6 +5031,16 @@
|
|||||||
"devOptional": true,
|
"devOptional": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
|
"node_modules/graceful-goodbye": {
|
||||||
|
"version": "1.3.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/graceful-goodbye/-/graceful-goodbye-1.3.3.tgz",
|
||||||
|
"integrity": "sha512-ABj07mmHrK3FC8fJ3PP5QCrbA31zkB4Qg34NFmYgwJnBxzfbRmtMzOg54PL55OG5sFjvmBzD0q85JAtRlA3dSA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"bare-process": "^4.0.0",
|
||||||
|
"safety-catch": "^1.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/has-flag": {
|
"node_modules/has-flag": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||||
@@ -4978,6 +5102,164 @@
|
|||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/holesail": {
|
||||||
|
"version": "2.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/holesail/-/holesail-2.4.1.tgz",
|
||||||
|
"integrity": "sha512-u6Ta1LaEYsgvT447JG18OLeEpjWERx7Iy/icpCeR1BYT43wkpisWoZR9ydz3j9yk6PlAJDNCssEKZXm/Q9BQ7Q==",
|
||||||
|
"license": "AGPL-3.0",
|
||||||
|
"dependencies": {
|
||||||
|
"bare-crypto": "^1.12.0",
|
||||||
|
"bare-module": "^6.1.2",
|
||||||
|
"bare-path": "^3.0.0",
|
||||||
|
"bare-process": "^4.2.2",
|
||||||
|
"bare-querystring": "^1.0.0",
|
||||||
|
"barely-colours": "^1.0.0",
|
||||||
|
"child_process": "npm:bare-subprocess@^5.1.5",
|
||||||
|
"cli-box": "6.0.10",
|
||||||
|
"colors": "^1.4.0",
|
||||||
|
"graceful-goodbye": "^1.3.3",
|
||||||
|
"holesail-client": "^2.3.0",
|
||||||
|
"holesail-logger": "^1.1.0",
|
||||||
|
"holesail-server": "^2.4.0",
|
||||||
|
"hyper-cmd-lib-keys": "^0.1.1",
|
||||||
|
"livefiles": "^1.1.0",
|
||||||
|
"minimist": "^1.2.8",
|
||||||
|
"module": "npm:bare-node-module@^1.0.0",
|
||||||
|
"path": "npm:bare-node-path@^1.0.1",
|
||||||
|
"prettier": "^3.6.2",
|
||||||
|
"prettier-config-holepunch": "^2.0.0",
|
||||||
|
"process": "npm:bare-process@^4.2.1",
|
||||||
|
"qrcode-terminal": "^0.12.0",
|
||||||
|
"querystring": "npm:bare-node-querystring@^1.0.0",
|
||||||
|
"ready-resource": "^1.2.0",
|
||||||
|
"url": "npm:bare-url@^2.3.2",
|
||||||
|
"which-runtime": "^1.3.2",
|
||||||
|
"z32": "^1.1.0"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"holesail": "src/bin/holesail.mjs"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/holesail-client": {
|
||||||
|
"version": "2.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/holesail-client/-/holesail-client-2.3.0.tgz",
|
||||||
|
"integrity": "sha512-tI0YBr6//eAcfir2+Idikukl9YdTFBt/VrWXNsLSFomQgQi/XonsXF2V+FJ9H6cWFvkH5SJivVsPohaP6bQD8w==",
|
||||||
|
"license": "GPL-3.0",
|
||||||
|
"dependencies": {
|
||||||
|
"@holesail/hyper-cmd-lib-net": "^1.1.1",
|
||||||
|
"b4a": "^1.7.3",
|
||||||
|
"hyperdht": "^6.27.0",
|
||||||
|
"z32": "^1.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/holesail-logger": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/holesail-logger/-/holesail-logger-1.1.0.tgz",
|
||||||
|
"integrity": "sha512-iYxRLlApyGn94moP48vx8+Fg8q4rniK8LoqsHJWcUkQNgW2HOa7e/xdWWxl0BmNMPV8iIJHsTuIYNj4Yq5D8Cg==",
|
||||||
|
"license": "GPL 3.0",
|
||||||
|
"dependencies": {
|
||||||
|
"barely-colours": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/holesail-server": {
|
||||||
|
"version": "2.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/holesail-server/-/holesail-server-2.4.0.tgz",
|
||||||
|
"integrity": "sha512-4iTSK0EVGKGWFoS5aA6g6ErgI8zgPhjnso1swXaPT8GCEbAZmecgetRhfb5nwoF7uHXS6ZJJWVfaFLF3xngZbw==",
|
||||||
|
"license": "GNU GPL v3",
|
||||||
|
"dependencies": {
|
||||||
|
"@holesail/hyper-cmd-lib-net": "^1.1.2",
|
||||||
|
"b4a": "^1.7.3",
|
||||||
|
"holesail-logger": "^1.1.0",
|
||||||
|
"hyper-cmd-lib-keys": "^0.2.0",
|
||||||
|
"hyperdht": "^6.27.0",
|
||||||
|
"z32": "^1.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/holesail-server/node_modules/hyper-cmd-lib-keys": {
|
||||||
|
"version": "0.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/hyper-cmd-lib-keys/-/hyper-cmd-lib-keys-0.2.0.tgz",
|
||||||
|
"integrity": "sha512-uCo4Mlbq/Proez5c5BlpmRqn9OnDlnniIuM5KO/DlJq5diGFZHBNeNxon8OiUft7xSk4Gh+VKUsRLVKJVPW8NQ==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"sodium-universal": "^5.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/holesail/node_modules/process": {
|
||||||
|
"name": "bare-process",
|
||||||
|
"version": "4.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/bare-process/-/bare-process-4.4.1.tgz",
|
||||||
|
"integrity": "sha512-JfcTtymq6akqM2bdyTsP4A4GYJceBzb91k/ECmFps75uFf6uO33SM1bOZsRAqyRXExabsQJLn5S41NBl8HTM4A==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"bare-abort": "^2.0.13",
|
||||||
|
"bare-env": "^3.0.0",
|
||||||
|
"bare-events": "^2.3.1",
|
||||||
|
"bare-hrtime": "^2.0.0",
|
||||||
|
"bare-os": "^3.7.1",
|
||||||
|
"bare-signals": "^4.0.0",
|
||||||
|
"bare-stdio": "^1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/http": {
|
||||||
|
"name": "bare-http1",
|
||||||
|
"version": "4.5.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/bare-http1/-/bare-http1-4.5.5.tgz",
|
||||||
|
"integrity": "sha512-ADITiRo0huP76JGMbv6Arsh9KehHqjEBoYcmjvAo67IY78+/9mV2MeKLLCkiJSFxA85T/m8cTaE44OwJQCcwdw==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"bare-events": "^2.6.0",
|
||||||
|
"bare-http-parser": "^1.1.1",
|
||||||
|
"bare-stream": "^2.10.0",
|
||||||
|
"bare-tcp": "^2.2.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"bare-buffer": "*",
|
||||||
|
"bare-url": "*"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"bare-buffer": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"bare-url": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/hyper-cmd-lib-keys": {
|
||||||
|
"version": "0.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/hyper-cmd-lib-keys/-/hyper-cmd-lib-keys-0.1.1.tgz",
|
||||||
|
"integrity": "sha512-K1RfDEGD2WaXlSaXJTjR0dAUJ0KLts6e+IMWStkBfW7+uRjz4mCfwdgk6hysenrZerBqXlsy3ArDmnj41e0lNg==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"sodium-universal": "^4.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/hyper-cmd-lib-keys/node_modules/sodium-native": {
|
||||||
|
"version": "4.3.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-4.3.3.tgz",
|
||||||
|
"integrity": "sha512-OnxSlN3uyY8D0EsLHpmm2HOFmKddQVvEMmsakCrXUzSd8kjjbzL413t4ZNF3n0UxSwNgwTyUvkmZHTfuCeiYSw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"require-addon": "^1.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/hyper-cmd-lib-keys/node_modules/sodium-universal": {
|
||||||
|
"version": "4.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/sodium-universal/-/sodium-universal-4.0.1.tgz",
|
||||||
|
"integrity": "sha512-sNp13PrxYLaUFHTGoDKkSDFvoEu51bfzE12RwGlqU1fcrkpAOK0NvizaJzOWV0Omtk9me2+Pnbjcf/l0efxuGQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"sodium-native": "^4.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"sodium-javascript": "~0.8.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"sodium-javascript": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/hyperbee": {
|
"node_modules/hyperbee": {
|
||||||
"version": "2.27.3",
|
"version": "2.27.3",
|
||||||
"resolved": "https://registry.npmjs.org/hyperbee/-/hyperbee-2.27.3.tgz",
|
"resolved": "https://registry.npmjs.org/hyperbee/-/hyperbee-2.27.3.tgz",
|
||||||
@@ -5360,6 +5642,18 @@
|
|||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/is-undefined": {
|
||||||
|
"version": "1.0.12",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-undefined/-/is-undefined-1.0.12.tgz",
|
||||||
|
"integrity": "sha512-qaX2mymwUhMq+NQPnx5iR/u2PgqhL6jLzDunMmonOgVofqoFhxzd6kOmiL0DLYZUkN/RvNWYPenoANVn5phlaA==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/is-win": {
|
||||||
|
"version": "1.0.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-win/-/is-win-1.0.11.tgz",
|
||||||
|
"integrity": "sha512-+XpgpizPqNzohXiqme7pfhAhpoG0Eo+CtuSx/XYW4enarERuheDbNbFrm4+XYylpV1w/eI+si5itFA0RfCWjog==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/is-wsl": {
|
"node_modules/is-wsl": {
|
||||||
"version": "2.2.0",
|
"version": "2.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
|
||||||
@@ -5496,6 +5790,18 @@
|
|||||||
"graceful-fs": "^4.1.11"
|
"graceful-fs": "^4.1.11"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/livefiles": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/livefiles/-/livefiles-1.1.0.tgz",
|
||||||
|
"integrity": "sha512-2yVGglq9w7GWPYFy9yUVp1iK2dcod6n/BKLt9t+N2AhYTS+YWXjlh8TSC6ACYeLE7V+PAIbDjCtrVsQfFRk6Qg==",
|
||||||
|
"license": "GPLv3",
|
||||||
|
"dependencies": {
|
||||||
|
"bare-utils": "^1.5.1",
|
||||||
|
"fs": "npm:bare-fs@^4.2.1",
|
||||||
|
"http": "npm:bare-http1@^4.0.2",
|
||||||
|
"ready-resource": "^1.1.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/localdrive": {
|
"node_modules/localdrive": {
|
||||||
"version": "1.12.2",
|
"version": "1.12.2",
|
||||||
"resolved": "https://registry.npmjs.org/localdrive/-/localdrive-1.12.2.tgz",
|
"resolved": "https://registry.npmjs.org/localdrive/-/localdrive-1.12.2.tgz",
|
||||||
@@ -5649,6 +5955,16 @@
|
|||||||
"unix-path-resolve": "^1.0.2"
|
"unix-path-resolve": "^1.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/module": {
|
||||||
|
"name": "bare-node-module",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/bare-node-module/-/bare-node-module-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-7ZTCfExhk24aNqEGKgLOb3HsApNFdlcxTxeR8POsHyoQQeOy1pA3i8JxS97djNxunCnsfHAMJ5HeKo+55YsY5g==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"bare-module": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/mutexify": {
|
"node_modules/mutexify": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/mutexify/-/mutexify-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/mutexify/-/mutexify-1.4.0.tgz",
|
||||||
@@ -5670,6 +5986,19 @@
|
|||||||
"integrity": "sha512-yQvyNN7xbqR8crTKk3U8gRgpcV1Az+vfCEijiHu9oHHsnIl8n3x+yXNHl42M6L3czGynAVoOT9TqBfS87gDdcw==",
|
"integrity": "sha512-yQvyNN7xbqR8crTKk3U8gRgpcV1Az+vfCEijiHu9oHHsnIl8n3x+yXNHl42M6L3czGynAVoOT9TqBfS87gDdcw==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/net": {
|
||||||
|
"name": "bare-net",
|
||||||
|
"version": "2.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/bare-net/-/bare-net-2.3.1.tgz",
|
||||||
|
"integrity": "sha512-MypSqDKpDU2Xt7FIfazn5yGvRnV09gFcIPHGWstW0gxuzA4tucTcwJSZeos97C4F89vtU5oGwXDN/HrGN6Y4Jw==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"bare-events": "^2.2.2",
|
||||||
|
"bare-pipe": "^4.0.0",
|
||||||
|
"bare-stream": "^2.0.0",
|
||||||
|
"bare-tcp": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/ninja-runtime": {
|
"node_modules/ninja-runtime": {
|
||||||
"version": "1.13.1",
|
"version": "1.13.1",
|
||||||
"resolved": "https://registry.npmjs.org/ninja-runtime/-/ninja-runtime-1.13.1.tgz",
|
"resolved": "https://registry.npmjs.org/ninja-runtime/-/ninja-runtime-1.13.1.tgz",
|
||||||
@@ -5814,6 +6143,12 @@
|
|||||||
"sodium-universal": "^5.0.0"
|
"sodium-universal": "^5.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/noop6": {
|
||||||
|
"version": "1.0.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/noop6/-/noop6-1.0.10.tgz",
|
||||||
|
"integrity": "sha512-WZvuCILZFZHK+WuqCQwxLBGllkBK1ct8s8Mu9FMDbEsBE6/bqNxyFGbX7Xky+6bYFL8X2Ou4Cis4CJyrwXLvQA==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/object-assign": {
|
"node_modules/object-assign": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
||||||
@@ -5910,6 +6245,16 @@
|
|||||||
"npm": ">5"
|
"npm": ">5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/path": {
|
||||||
|
"name": "bare-node-path",
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/bare-node-path/-/bare-node-path-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-44YiNN/ofG1cEOWwdRVbG9ZFyskZKXPJnSUOyUpdeRm+MeSXiY+pSjSa7SZ56C/XpPVxE0OEl/AV8u+3FKsclw==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"bare-path": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/path-key": {
|
"node_modules/path-key": {
|
||||||
"version": "3.1.1",
|
"version": "3.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
||||||
@@ -6041,7 +6386,6 @@
|
|||||||
"version": "3.8.1",
|
"version": "3.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz",
|
||||||
"integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==",
|
"integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==",
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bin": {
|
"bin": {
|
||||||
"prettier": "bin/prettier.cjs"
|
"prettier": "bin/prettier.cjs"
|
||||||
@@ -6057,7 +6401,6 @@
|
|||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/prettier-config-holepunch/-/prettier-config-holepunch-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/prettier-config-holepunch/-/prettier-config-holepunch-2.0.0.tgz",
|
||||||
"integrity": "sha512-yuskcdPRfQYLFPkOGvxS4TFmCb7QvAowjO+YaNLPLBWRev+qu6HXoKkPWH9lfNsL9gUThV7IeZ6t/B1QSu/jng==",
|
"integrity": "sha512-yuskcdPRfQYLFPkOGvxS4TFmCb7QvAowjO+YaNLPLBWRev+qu6HXoKkPWH9lfNsL9gUThV7IeZ6t/B1QSu/jng==",
|
||||||
"dev": true,
|
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"prettier": "^3.6.2"
|
"prettier": "^3.6.2"
|
||||||
@@ -6148,6 +6491,24 @@
|
|||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/qrcode-terminal": {
|
||||||
|
"version": "0.12.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz",
|
||||||
|
"integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==",
|
||||||
|
"bin": {
|
||||||
|
"qrcode-terminal": "bin/qrcode-terminal.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/querystring": {
|
||||||
|
"name": "bare-node-querystring",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/bare-node-querystring/-/bare-node-querystring-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-IjSuYNNxWRzUTHb0bLXJkMaUahMVX74BfCy/Rva/V+3J07zLMpXAWXYPMiCCZHUAxCeIhqfkcIenUgg7UXCV4A==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"bare-querystring": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/queue-tick": {
|
"node_modules/queue-tick": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
|
||||||
@@ -7110,6 +7471,15 @@
|
|||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/typpy": {
|
||||||
|
"version": "2.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/typpy/-/typpy-2.4.0.tgz",
|
||||||
|
"integrity": "sha512-a16Uv5doNtvHzaG4wZCHmXN+l9xxmTMpyODtPz7B3DSTsDVNXilTSJGuNw68sUh0Un4bf+ghRMbEcJCI6r06mQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"function.name": "^1.0.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/udx-native": {
|
"node_modules/udx-native": {
|
||||||
"version": "1.19.2",
|
"version": "1.19.2",
|
||||||
"resolved": "https://registry.npmjs.org/udx-native/-/udx-native-1.19.2.tgz",
|
"resolved": "https://registry.npmjs.org/udx-native/-/udx-native-1.19.2.tgz",
|
||||||
@@ -7125,6 +7495,16 @@
|
|||||||
"bare": ">=1.17.4"
|
"bare": ">=1.17.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/ul": {
|
||||||
|
"version": "5.2.16",
|
||||||
|
"resolved": "https://registry.npmjs.org/ul/-/ul-5.2.16.tgz",
|
||||||
|
"integrity": "sha512-v1YrSEsJZpJsywzF/MKgsQwMdOwBlwwmNiUOJh/yX6FHrq7dYjeua1YOhLV0q0KioqEFZC4P7MsKmpEsGdZz3w==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"deffy": "^2.2.2",
|
||||||
|
"typpy": "^2.3.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/unbzip2-stream": {
|
"node_modules/unbzip2-stream": {
|
||||||
"version": "1.4.3",
|
"version": "1.4.3",
|
||||||
"resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
|
"resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
|
||||||
@@ -7192,6 +7572,16 @@
|
|||||||
"b4a": "^1.6.6"
|
"b4a": "^1.6.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/url": {
|
||||||
|
"name": "bare-url",
|
||||||
|
"version": "2.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.0.tgz",
|
||||||
|
"integrity": "sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"bare-path": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/url-file-url": {
|
"node_modules/url-file-url": {
|
||||||
"version": "1.0.5",
|
"version": "1.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/url-file-url/-/url-file-url-1.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/url-file-url/-/url-file-url-1.0.5.tgz",
|
||||||
@@ -7483,6 +7873,7 @@
|
|||||||
"bare-url": "^2.4.0",
|
"bare-url": "^2.4.0",
|
||||||
"compact-encoding": "^2.18.0",
|
"compact-encoding": "^2.18.0",
|
||||||
"corestore": "^7.2.1",
|
"corestore": "^7.2.1",
|
||||||
|
"holesail": "^2.4.1",
|
||||||
"hyperbee": "^2.11.1",
|
"hyperbee": "^2.11.1",
|
||||||
"hypercore-crypto": "^3.4.0",
|
"hypercore-crypto": "^3.4.0",
|
||||||
"hypercore-id-encoding": "^1.3.0",
|
"hypercore-id-encoding": "^1.3.0",
|
||||||
|
|||||||
@@ -37,6 +37,9 @@
|
|||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=20"
|
"node": ">=20"
|
||||||
},
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"holesail": "^2.4.1"
|
||||||
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"ajv": "^8.17.1",
|
"ajv": "^8.17.1",
|
||||||
"patch-package": "^8.0.1",
|
"patch-package": "^8.0.1",
|
||||||
|
|||||||
@@ -18,6 +18,23 @@ import * as esbuild from 'esbuild'
|
|||||||
|
|
||||||
const __dirname = dirname(fileURLToPath(import.meta.url))
|
const __dirname = dirname(fileURLToPath(import.meta.url))
|
||||||
const repoRoot = join(__dirname, '..', '..')
|
const repoRoot = join(__dirname, '..', '..')
|
||||||
|
const booterNodeModules = join(repoRoot, 'packages/bare-os-booter/node_modules')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* esbuild `platform: 'node'` marks builtins external; drive IIFEs run under `new Function`
|
||||||
|
* on Pear with no `globalThis.require`. Map Node core modules to Bare shims so they bundle in.
|
||||||
|
* Use package names (not absolute paths) so esbuild resolves them via `nodePaths`.
|
||||||
|
*/
|
||||||
|
function bareDriveBundleNodeBuiltinAliases() {
|
||||||
|
return {
|
||||||
|
assert: 'bare-assert',
|
||||||
|
crypto: 'bare-crypto',
|
||||||
|
events: 'bare-node-events',
|
||||||
|
fs: 'bare-node-fs',
|
||||||
|
net: 'bare-node-net',
|
||||||
|
url: 'bare-url'
|
||||||
|
}
|
||||||
|
}
|
||||||
const manifestPath = join(
|
const manifestPath = join(
|
||||||
repoRoot,
|
repoRoot,
|
||||||
'packages/bare-os-booter/lib/bare-module-manifest.json'
|
'packages/bare-os-booter/lib/bare-module-manifest.json'
|
||||||
@@ -141,7 +158,8 @@ export async function buildBareLibs() {
|
|||||||
format: 'iife',
|
format: 'iife',
|
||||||
globalName: IIFE_GLOBAL,
|
globalName: IIFE_GLOBAL,
|
||||||
platform: 'node',
|
platform: 'node',
|
||||||
nodePaths: [join(repoRoot, 'node_modules')],
|
alias: bareDriveBundleNodeBuiltinAliases(),
|
||||||
|
nodePaths: [booterNodeModules, join(repoRoot, 'node_modules')],
|
||||||
plugins: [bareNativeConditionalImportsPlugin()],
|
plugins: [bareNativeConditionalImportsPlugin()],
|
||||||
outfile,
|
outfile,
|
||||||
footer: { js: footer },
|
footer: { js: footer },
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ import { runOpensslCli } from './lib/openssl-cli.js'
|
|||||||
import { runSshKeygenCli } from './lib/ssh-keygen-cli.js'
|
import { runSshKeygenCli } from './lib/ssh-keygen-cli.js'
|
||||||
import { runTarCli } from './lib/tar-cli.js'
|
import { runTarCli } from './lib/tar-cli.js'
|
||||||
import { runSystemctlCli } from './lib/systemctl-cli.js'
|
import { runSystemctlCli } from './lib/systemctl-cli.js'
|
||||||
|
import { runHolesailCli } from './lib/holesail-cli.js'
|
||||||
import { createBareOsDiskOsBridge } from './lib/bare-os-disk-os-bridge.js'
|
import { createBareOsDiskOsBridge } from './lib/bare-os-disk-os-bridge.js'
|
||||||
import { buildBareOsHyperbeeGuestHint } from './lib/bare-os-hyperbee-guest-hint.js'
|
import { buildBareOsHyperbeeGuestHint } from './lib/bare-os-hyperbee-guest-hint.js'
|
||||||
import { invokeBareOsPearUpdaterDelegate } from './lib/bare-os-pear-updater-bridge.js'
|
import { invokeBareOsPearUpdaterDelegate } from './lib/bare-os-pear-updater-bridge.js'
|
||||||
@@ -193,6 +194,7 @@ import {
|
|||||||
bareOsListThemeNames
|
bareOsListThemeNames
|
||||||
} from './lib/bare-os-theme-presets.js'
|
} from './lib/bare-os-theme-presets.js'
|
||||||
import './lib/bare-cron.js'
|
import './lib/bare-cron.js'
|
||||||
|
import { maybeStartBareHolesailKernelFromBooter } from './lib/bare-holesail.js'
|
||||||
import { runSshdCli, getBareOpensshProcJsonText } from './lib/bare-openssh.js'
|
import { runSshdCli, getBareOpensshProcJsonText } from './lib/bare-openssh.js'
|
||||||
import { createHash } from 'bare-crypto'
|
import { createHash } from 'bare-crypto'
|
||||||
import { buildBareOsHostProcJsonText } from './lib/bare-os-host-proc-snapshot.js'
|
import { buildBareOsHostProcJsonText } from './lib/bare-os-host-proc-snapshot.js'
|
||||||
@@ -733,6 +735,27 @@ async function executeKernel(disk, store, swarm, initSource) {
|
|||||||
'BARE_OS_PROC_RLIMITS_JSON',
|
'BARE_OS_PROC_RLIMITS_JSON',
|
||||||
'BARE_OS_SUBPROCESS_BRIDGE_UID_GID_MAP_JSON',
|
'BARE_OS_SUBPROCESS_BRIDGE_UID_GID_MAP_JSON',
|
||||||
'BARE_OS_HDMS_VAULT_ROTATE_COUNT',
|
'BARE_OS_HDMS_VAULT_ROTATE_COUNT',
|
||||||
|
'BARE_OS_HOLESAIL_INITD',
|
||||||
|
'BARE_OS_HOLESAIL_MANAGED',
|
||||||
|
'BARE_OS_HOLESAIL_SERVER',
|
||||||
|
'BARE_OS_HOLESAIL_CLIENT',
|
||||||
|
'BARE_OS_HOLESAIL_KEY',
|
||||||
|
'BARE_OS_HOLESAIL_SECURE',
|
||||||
|
'BARE_OS_HOLESAIL_PORT',
|
||||||
|
'BARE_OS_HOLESAIL_HOST',
|
||||||
|
'BARE_OS_HOLESAIL_UDP',
|
||||||
|
'BARE_OS_HOLESAIL_LOG',
|
||||||
|
'BARE_OS_HOLESAIL_DEBUG',
|
||||||
|
'BARE_OS_HOLESAIL_STATE',
|
||||||
|
'BARE_OS_HOLESAIL_KERNEL',
|
||||||
|
'BARE_OS_HOLESAIL_KERNEL_SERVER',
|
||||||
|
'BARE_OS_HOLESAIL_KERNEL_CLIENT',
|
||||||
|
'BARE_OS_HOLESAIL_KERNEL_KEY',
|
||||||
|
'BARE_OS_HOLESAIL_KERNEL_SECURE',
|
||||||
|
'BARE_OS_HOLESAIL_KERNEL_PORT',
|
||||||
|
'BARE_OS_HOLESAIL_KERNEL_HOST',
|
||||||
|
'BARE_OS_HOLESAIL_KERNEL_UDP',
|
||||||
|
'BARE_OS_HOLESAIL_KERNEL_LOG',
|
||||||
'BARE_OS_SUBPROCESS_BRIDGE_JOBS_JSON',
|
'BARE_OS_SUBPROCESS_BRIDGE_JOBS_JSON',
|
||||||
'BARE_OS_SUBPROCESS_BRIDGE_META_JSON',
|
'BARE_OS_SUBPROCESS_BRIDGE_META_JSON',
|
||||||
'BARE_OS_HOST_BARE_OS_PROC',
|
'BARE_OS_HOST_BARE_OS_PROC',
|
||||||
@@ -777,6 +800,18 @@ async function executeKernel(disk, store, swarm, initSource) {
|
|||||||
shellEnv.COLORTERM = String(hostEnv.COLORTERM)
|
shellEnv.COLORTERM = String(hostEnv.COLORTERM)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (
|
||||||
|
shellEnv.BARE_OS_HOLESAIL_INITD === undefined ||
|
||||||
|
shellEnv.BARE_OS_HOLESAIL_INITD === ''
|
||||||
|
) {
|
||||||
|
shellEnv.BARE_OS_HOLESAIL_INITD = '1'
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
shellEnv.BARE_OS_HOLESAIL_MANAGED === undefined ||
|
||||||
|
shellEnv.BARE_OS_HOLESAIL_MANAGED === ''
|
||||||
|
) {
|
||||||
|
shellEnv.BARE_OS_HOLESAIL_MANAGED = '1'
|
||||||
|
}
|
||||||
let bootProfileResolved = ''
|
let bootProfileResolved = ''
|
||||||
const bpfEarly = shellEnv.BARE_OS_BOOT_PROFILE
|
const bpfEarly = shellEnv.BARE_OS_BOOT_PROFILE
|
||||||
if (bpfEarly != null && String(bpfEarly).trim()) {
|
if (bpfEarly != null && String(bpfEarly).trim()) {
|
||||||
@@ -8585,6 +8620,10 @@ async function executeKernel(disk, store, swarm, initSource) {
|
|||||||
async bareOsRunSystemctlCli(argv) {
|
async bareOsRunSystemctlCli(argv) {
|
||||||
return runSystemctlCli(ctx, argv)
|
return runSystemctlCli(ctx, argv)
|
||||||
},
|
},
|
||||||
|
/** Persisted Holesail tunnels (/bin/holesail); requires managed bare-holesail for live start. */
|
||||||
|
async bareOsRunHolesailCli(argv) {
|
||||||
|
return runHolesailCli(ctx, argv)
|
||||||
|
},
|
||||||
bareOsEmitPearStageHint(payload = {}) {
|
bareOsEmitPearStageHint(payload = {}) {
|
||||||
if (typeof globalThis.process?.emit !== 'function') return false
|
if (typeof globalThis.process?.emit !== 'function') return false
|
||||||
try {
|
try {
|
||||||
@@ -9588,6 +9627,8 @@ async function executeKernel(disk, store, swarm, initSource) {
|
|||||||
|
|
||||||
emitBooterBootPhase('repl')
|
emitBooterBootPhase('repl')
|
||||||
|
|
||||||
|
await maybeStartBareHolesailKernelFromBooter(ctx)
|
||||||
|
|
||||||
await startBareInitd(ctx)
|
await startBareInitd(ctx)
|
||||||
{
|
{
|
||||||
const active = listBareServices()
|
const active = listBareServices()
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
/**
|
||||||
|
* Shared env parsing for bare-holesail / managed tunnels.
|
||||||
|
* @param {unknown} v
|
||||||
|
*/
|
||||||
|
export function bareHolesailEnvTruthy(v) {
|
||||||
|
const s = String(v ?? '')
|
||||||
|
.trim()
|
||||||
|
.toLowerCase()
|
||||||
|
return s === '1' || s === 'true' || s === 'yes'
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
/**
|
||||||
|
* Resolve the upstream `holesail` class for bare-holesail / managed tunnels.
|
||||||
|
*
|
||||||
|
* This follows the same pattern as `bare-openssh` / `bare-ssh2`: keep `holesail`
|
||||||
|
* as a booter-owned dependency and import it directly so Pear stages the package.
|
||||||
|
* Upstream is AGPL-3.0.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import Holesail from 'holesail'
|
||||||
|
|
||||||
|
/** ESM import so Pear stages `holesail` and its traced package deps. */
|
||||||
|
let holesailCache = null
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Record<string, unknown>} ctx
|
||||||
|
* @returns {Promise<new (opts?: object) => { ready: () => Promise<void>, close: () => Promise<void>, pause?: () => Promise<void>, resume?: () => Promise<void>, info?: unknown }>}
|
||||||
|
*/
|
||||||
|
export async function loadHolesailConstructor(ctx) {
|
||||||
|
void ctx
|
||||||
|
if (!holesailCache) {
|
||||||
|
const Ho = Holesail && Holesail.default ? Holesail.default : Holesail
|
||||||
|
if (typeof Ho !== 'function') {
|
||||||
|
throw new Error('holesail: expected default export to be a constructor')
|
||||||
|
}
|
||||||
|
holesailCache = Ho
|
||||||
|
}
|
||||||
|
|
||||||
|
return holesailCache
|
||||||
|
}
|
||||||
@@ -0,0 +1,368 @@
|
|||||||
|
import { dirname } from 'node:path'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Multi-tunnel Holesail manager: persisted state on the VFS, one Holesail instance per entry.
|
||||||
|
* Used when managed mode is on (stock default with BARE_OS_HOLESAIL_INITD/MANAGED).
|
||||||
|
*
|
||||||
|
* State path: BARE_OS_HOLESAIL_STATE or default ~/.holesail/state.json (VFS expands ~/ under $HOME).
|
||||||
|
* Upstream holesail is AGPL-3.0.
|
||||||
|
*/
|
||||||
|
import { bareHolesailEnvTruthy } from './bare-holesail-env.js'
|
||||||
|
import { loadHolesailConstructor } from './bare-holesail-loader.js'
|
||||||
|
import { appendVarLog, BARE_OS_VAR_LOG_DIR } from './bare-os-var-log.js'
|
||||||
|
|
||||||
|
export const BARE_HOLESAIL_STATE_DIR = '~/.holesail'
|
||||||
|
export const BARE_HOLESAIL_STATE_DEFAULT = `${BARE_HOLESAIL_STATE_DIR}/state.json`
|
||||||
|
|
||||||
|
const HOLESAIL_LOG = `${BARE_OS_VAR_LOG_DIR}/holesail.log`
|
||||||
|
|
||||||
|
/** @type {Map<string, { hs: unknown, entry: Record<string, unknown> }>} */
|
||||||
|
const managedInstances = new Map()
|
||||||
|
|
||||||
|
/** @type {(() => void)[]} */
|
||||||
|
let managedHookUnsubs = []
|
||||||
|
|
||||||
|
let managedServiceRunning = false
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Record<string, string | undefined>} env
|
||||||
|
*/
|
||||||
|
export function bareHolesailManagedStatePath(env) {
|
||||||
|
const raw = String(env.BARE_OS_HOLESAIL_STATE || '').trim()
|
||||||
|
return raw || BARE_HOLESAIL_STATE_DEFAULT
|
||||||
|
}
|
||||||
|
|
||||||
|
function logLine(ctx, line) {
|
||||||
|
void appendVarLog(ctx, HOLESAIL_LOG, 'holesail', line)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Record<string, unknown>} ctx
|
||||||
|
* @param {string} dir
|
||||||
|
*/
|
||||||
|
async function ensureDir(ctx, dir) {
|
||||||
|
const vfs = ctx.vfs
|
||||||
|
if (!vfs || typeof vfs.mkdir !== 'function') return
|
||||||
|
try {
|
||||||
|
await vfs.mkdir(dir, { recursive: true })
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {unknown} hs
|
||||||
|
*/
|
||||||
|
async function safeCloseHolesail(hs) {
|
||||||
|
if (!hs || typeof hs.close !== 'function') return
|
||||||
|
try {
|
||||||
|
await hs.close()
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} id
|
||||||
|
*/
|
||||||
|
export function bareHolesailManagedValidateId(id) {
|
||||||
|
const s = String(id || '').trim()
|
||||||
|
if (!s || s.length > 64) return { ok: false, err: 'invalid id (1–64 chars)' }
|
||||||
|
if (!/^[a-zA-Z0-9._-]+$/.test(s))
|
||||||
|
return { ok: false, err: 'invalid id (use [a-zA-Z0-9._-])' }
|
||||||
|
return { ok: true, id: s }
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Record<string, unknown>} raw
|
||||||
|
* @returns {{ ok: true, entry: Record<string, unknown> } | { ok: false, err: string }}
|
||||||
|
*/
|
||||||
|
export function bareHolesailManagedNormalizeEntry(raw) {
|
||||||
|
if (!raw || typeof raw !== 'object')
|
||||||
|
return { ok: false, err: 'connection entry must be an object' }
|
||||||
|
const server = bareHolesailEnvTruthy(
|
||||||
|
/** @type {Record<string, unknown>} */ (raw).server
|
||||||
|
)
|
||||||
|
const client = bareHolesailEnvTruthy(
|
||||||
|
/** @type {Record<string, unknown>} */ (raw).client
|
||||||
|
)
|
||||||
|
if (server === client) {
|
||||||
|
return { ok: false, err: 'set exactly one of server or client' }
|
||||||
|
}
|
||||||
|
/** @type {Record<string, unknown>} */
|
||||||
|
const entry = { server, client }
|
||||||
|
const key = String(raw.key ?? '').trim()
|
||||||
|
if (client && !key) return { ok: false, err: 'client requires key' }
|
||||||
|
|
||||||
|
if (key) entry.key = key
|
||||||
|
|
||||||
|
if (raw.secure !== undefined && raw.secure !== null && String(raw.secure) !== '')
|
||||||
|
entry.secure = bareHolesailEnvTruthy(raw.secure)
|
||||||
|
|
||||||
|
if (raw.port != null && raw.port !== '') {
|
||||||
|
const n = Number.parseInt(String(raw.port), 10)
|
||||||
|
if (!Number.isFinite(n)) return { ok: false, err: 'invalid port' }
|
||||||
|
entry.port = n
|
||||||
|
}
|
||||||
|
|
||||||
|
const host = String(raw.host ?? '').trim()
|
||||||
|
if (host) entry.host = host
|
||||||
|
|
||||||
|
if (raw.udp !== undefined && raw.udp !== null && String(raw.udp) !== '')
|
||||||
|
entry.udp = bareHolesailEnvTruthy(raw.udp)
|
||||||
|
|
||||||
|
if (raw.log !== undefined && raw.log !== null && raw.log !== '') {
|
||||||
|
if (typeof raw.log === 'number') entry.log = raw.log
|
||||||
|
else if (/^\d+$/.test(String(raw.log)))
|
||||||
|
entry.log = Number.parseInt(String(raw.log), 10)
|
||||||
|
else entry.log = bareHolesailEnvTruthy(raw.log)
|
||||||
|
}
|
||||||
|
|
||||||
|
const enabled =
|
||||||
|
raw.enabled === undefined || raw.enabled === null
|
||||||
|
? true
|
||||||
|
: bareHolesailEnvTruthy(raw.enabled)
|
||||||
|
entry.enabled = enabled
|
||||||
|
|
||||||
|
return { ok: true, entry }
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {unknown} parsed
|
||||||
|
*/
|
||||||
|
function coerceState(parsed) {
|
||||||
|
if (!parsed || typeof parsed !== 'object') {
|
||||||
|
return { version: 1, connections: {} }
|
||||||
|
}
|
||||||
|
const o = /** @type {Record<string, unknown>} */ (parsed)
|
||||||
|
const conns = o.connections
|
||||||
|
const connections =
|
||||||
|
conns && typeof conns === 'object' && !Array.isArray(conns)
|
||||||
|
? /** @type {Record<string, unknown>} */ (conns)
|
||||||
|
: {}
|
||||||
|
return { version: 1, connections }
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Record<string, unknown>} ctx
|
||||||
|
* @param {Record<string, string | undefined>} env
|
||||||
|
*/
|
||||||
|
export async function bareHolesailManagedReadState(ctx, env) {
|
||||||
|
const path = bareHolesailManagedStatePath(env)
|
||||||
|
const vfs = ctx.vfs
|
||||||
|
if (!vfs || typeof vfs.readFile !== 'function') {
|
||||||
|
return { path, state: { version: 1, connections: {} } }
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const buf = await vfs.readFile(path)
|
||||||
|
const text = ctx.b4a ? ctx.b4a.toString(buf, 'utf8') : Buffer.from(buf).toString('utf8')
|
||||||
|
const parsed = JSON.parse(text)
|
||||||
|
return { path, state: coerceState(parsed) }
|
||||||
|
} catch {
|
||||||
|
return { path, state: { version: 1, connections: {} } }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Record<string, unknown>} ctx
|
||||||
|
* @param {Record<string, string | undefined>} env
|
||||||
|
* @param {{ version: number, connections: Record<string, unknown> }} state
|
||||||
|
*/
|
||||||
|
export async function bareHolesailManagedWriteState(ctx, env, state) {
|
||||||
|
const path = bareHolesailManagedStatePath(env)
|
||||||
|
const vfs = ctx.vfs
|
||||||
|
if (!vfs || typeof vfs.writeFile !== 'function') {
|
||||||
|
throw new Error('holesail: vfs.writeFile unavailable')
|
||||||
|
}
|
||||||
|
await ensureDir(ctx, dirname(path))
|
||||||
|
const body = JSON.stringify(state, null, 2) + '\n'
|
||||||
|
await vfs.writeFile(path, ctx.b4a.from(body))
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Record<string, unknown>} ctx
|
||||||
|
* @param {Record<string, string | undefined>} env
|
||||||
|
*/
|
||||||
|
export function bareHolesailManagedDebugEnabled(ctx, env) {
|
||||||
|
return bareHolesailEnvTruthy(env.BARE_OS_HOLESAIL_DEBUG)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Record<string, unknown>} ctx
|
||||||
|
* @param {string} id
|
||||||
|
* @param {Record<string, unknown>} entry
|
||||||
|
*/
|
||||||
|
async function startManagedInstance(ctx, env, id, entry) {
|
||||||
|
if (managedInstances.has(id)) return
|
||||||
|
const norm = bareHolesailManagedNormalizeEntry(entry)
|
||||||
|
if (!norm.ok) throw new Error(norm.err)
|
||||||
|
if (!norm.entry.enabled) return
|
||||||
|
|
||||||
|
const Holesail = await loadHolesailConstructor(ctx)
|
||||||
|
const hs = new Holesail(norm.entry)
|
||||||
|
await hs.ready()
|
||||||
|
managedInstances.set(id, { hs, entry: norm.entry })
|
||||||
|
logLine(ctx, `managed: started ${id}`)
|
||||||
|
if (bareHolesailManagedDebugEnabled(ctx, env)) {
|
||||||
|
try {
|
||||||
|
const info = hs.info
|
||||||
|
const url = info && typeof info === 'object' ? info.url : ''
|
||||||
|
ctx.console?.log?.(`[bare-holesail] managed ${id} url=${String(url).slice(0, 120)}`)
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Record<string, unknown>} ctx
|
||||||
|
* @param {string} id
|
||||||
|
*/
|
||||||
|
async function stopManagedInstance(ctx, id) {
|
||||||
|
const rec = managedInstances.get(id)
|
||||||
|
if (!rec) return
|
||||||
|
managedInstances.delete(id)
|
||||||
|
await safeCloseHolesail(rec.hs)
|
||||||
|
logLine(ctx, `managed: stopped ${id}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Record<string, unknown>} ctx
|
||||||
|
* @param {Record<string, string | undefined>} env
|
||||||
|
*/
|
||||||
|
export async function bareHolesailManagedStartService(ctx, env) {
|
||||||
|
if (managedServiceRunning) return
|
||||||
|
|
||||||
|
const { state } = await bareHolesailManagedReadState(ctx, env)
|
||||||
|
managedServiceRunning = true
|
||||||
|
|
||||||
|
for (const [id, raw] of Object.entries(state.connections)) {
|
||||||
|
const idOk = bareHolesailManagedValidateId(id)
|
||||||
|
if (!idOk.ok) {
|
||||||
|
logLine(ctx, `managed: skip invalid id ${id}: ${idOk.err}`)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
const norm = bareHolesailManagedNormalizeEntry(raw)
|
||||||
|
if (!norm.ok) {
|
||||||
|
logLine(ctx, `managed: skip ${id}: ${norm.err}`)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (!norm.entry.enabled) continue
|
||||||
|
try {
|
||||||
|
await startManagedInstance(ctx, env, idOk.id, norm.entry)
|
||||||
|
} catch (e) {
|
||||||
|
const msg = (e && /** @type {{ message?: string }} */ (e).message) || String(e)
|
||||||
|
logLine(ctx, `managed: start ${id} failed: ${msg}`)
|
||||||
|
try {
|
||||||
|
ctx.console?.error?.(`[bare-holesail] managed ${id}: ${msg}`)
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
managedHookUnsubs.push(
|
||||||
|
ctx.bareOsRegisterSuspendHook(async () => {
|
||||||
|
for (const { hs } of managedInstances.values()) {
|
||||||
|
if (hs && typeof hs.pause === 'function') {
|
||||||
|
try {
|
||||||
|
await hs.pause()
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
)
|
||||||
|
managedHookUnsubs.push(
|
||||||
|
ctx.bareOsRegisterResumeHook(async () => {
|
||||||
|
for (const { hs } of managedInstances.values()) {
|
||||||
|
if (hs && typeof hs.resume === 'function') {
|
||||||
|
try {
|
||||||
|
await hs.resume()
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
|
logLine(ctx, 'managed: service ready')
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Record<string, unknown>} ctx
|
||||||
|
*/
|
||||||
|
export async function bareHolesailManagedStopService(ctx) {
|
||||||
|
for (const u of managedHookUnsubs.splice(0)) {
|
||||||
|
try {
|
||||||
|
u()
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const ids = [...managedInstances.keys()]
|
||||||
|
for (const id of ids) {
|
||||||
|
await stopManagedInstance(ctx, id)
|
||||||
|
}
|
||||||
|
managedServiceRunning = false
|
||||||
|
logLine(ctx, 'managed: service stopped')
|
||||||
|
}
|
||||||
|
|
||||||
|
export function bareHolesailManagedServiceIsRunning() {
|
||||||
|
return managedServiceRunning
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} id
|
||||||
|
*/
|
||||||
|
export function bareHolesailManagedRuntimeRunning(id) {
|
||||||
|
return managedInstances.has(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} id
|
||||||
|
*/
|
||||||
|
export function bareHolesailManagedRuntimeUrl(id) {
|
||||||
|
const rec = managedInstances.get(id)
|
||||||
|
if (!rec || !rec.hs) return ''
|
||||||
|
try {
|
||||||
|
const info = rec.hs.info
|
||||||
|
if (info && typeof info === 'object' && 'url' in info)
|
||||||
|
return String(/** @type {{ url?: string }} */ (info).url || '')
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Record<string, unknown>} ctx
|
||||||
|
* @param {Record<string, string | undefined>} env
|
||||||
|
* @param {string} id
|
||||||
|
*/
|
||||||
|
export async function bareHolesailManagedStartOne(ctx, env, id) {
|
||||||
|
if (!bareHolesailManagedServiceIsRunning()) {
|
||||||
|
throw new Error('holesail: managed daemon is not running (enable bare-holesail + MANAGED)')
|
||||||
|
}
|
||||||
|
const idOk = bareHolesailManagedValidateId(id)
|
||||||
|
if (!idOk.ok) throw new Error(idOk.err)
|
||||||
|
const { state } = await bareHolesailManagedReadState(ctx, env)
|
||||||
|
const raw = state.connections[idOk.id]
|
||||||
|
if (!raw) throw new Error(`holesail: unknown connection ${idOk.id}`)
|
||||||
|
const norm = bareHolesailManagedNormalizeEntry(raw)
|
||||||
|
if (!norm.ok) throw new Error(norm.err)
|
||||||
|
if (!norm.entry.enabled) throw new Error(`holesail: ${idOk.id} is disabled`)
|
||||||
|
await startManagedInstance(ctx, env, idOk.id, norm.entry)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Record<string, unknown>} ctx
|
||||||
|
* @param {string} id
|
||||||
|
*/
|
||||||
|
export async function bareHolesailManagedStopOne(ctx, id) {
|
||||||
|
const idOk = bareHolesailManagedValidateId(id)
|
||||||
|
if (!idOk.ok) throw new Error(idOk.err)
|
||||||
|
await stopManagedInstance(ctx, idOk.id)
|
||||||
|
}
|
||||||
@@ -0,0 +1,336 @@
|
|||||||
|
/**
|
||||||
|
* bare-holesail — Holesail TCP/UDP P2P proxy via the official holesail package API only.
|
||||||
|
* Initd unit `bare-holesail` (stock-on managed mode; disable via env/initd) and optional early booter instance (kernel-path).
|
||||||
|
*
|
||||||
|
* Upstream is AGPL-3.0; the booter imports `holesail` directly (same Pear-staged pattern as
|
||||||
|
* bare-openssh / bare-ssh2) instead of depending on ctx.bare / drive-bundle resolution.
|
||||||
|
*/
|
||||||
|
import { appendVarLog, BARE_OS_VAR_LOG_DIR } from './bare-os-var-log.js'
|
||||||
|
import { bareHolesailEnvTruthy } from './bare-holesail-env.js'
|
||||||
|
import {
|
||||||
|
bareHolesailManagedServiceIsRunning,
|
||||||
|
bareHolesailManagedStartService,
|
||||||
|
bareHolesailManagedStopService
|
||||||
|
} from './bare-holesail-managed.js'
|
||||||
|
import { loadHolesailConstructor } from './bare-holesail-loader.js'
|
||||||
|
import {
|
||||||
|
registerBareInitdDisposer,
|
||||||
|
registerBareService,
|
||||||
|
registerKernelShutdownHook
|
||||||
|
} from './bare-initd.js'
|
||||||
|
|
||||||
|
export { bareHolesailEnvTruthy }
|
||||||
|
|
||||||
|
export const BARE_HOLESAIL_LOG = `${BARE_OS_VAR_LOG_DIR}/holesail.log`
|
||||||
|
|
||||||
|
/** @type {unknown} */
|
||||||
|
let kernelHolesail = null
|
||||||
|
/** @type {unknown} */
|
||||||
|
let initdHolesail = null
|
||||||
|
/** @type {(() => void)[]} */
|
||||||
|
let initdHookUnsubs = []
|
||||||
|
/** @type {(() => void)[]} */
|
||||||
|
let kernelHookUnsubs = []
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Record<string, string | undefined>} env
|
||||||
|
* @param {string} key
|
||||||
|
*/
|
||||||
|
function envStr(env, key) {
|
||||||
|
const v = env[key]
|
||||||
|
if (v === undefined || v === null) return ''
|
||||||
|
return String(v).trim()
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Record<string, string | undefined>} env
|
||||||
|
* @param {'initd' | 'kernel'} profile
|
||||||
|
* @returns {{ enabled: boolean, err?: string, opts?: Record<string, unknown> }}
|
||||||
|
*/
|
||||||
|
export function bareHolesailParseConfig(env, profile) {
|
||||||
|
const isKernel = profile === 'kernel'
|
||||||
|
const enabled = isKernel
|
||||||
|
? bareHolesailEnvTruthy(env.BARE_OS_HOLESAIL_KERNEL)
|
||||||
|
: bareHolesailEnvTruthy(env.BARE_OS_HOLESAIL_INITD)
|
||||||
|
if (!enabled) return { enabled: false }
|
||||||
|
|
||||||
|
const P = isKernel ? 'BARE_OS_HOLESAIL_KERNEL_' : 'BARE_OS_HOLESAIL_'
|
||||||
|
const server = bareHolesailEnvTruthy(env[`${P}SERVER`])
|
||||||
|
const client = bareHolesailEnvTruthy(env[`${P}CLIENT`])
|
||||||
|
if (server === client) {
|
||||||
|
return {
|
||||||
|
enabled: true,
|
||||||
|
err: 'holesail: set exactly one of SERVER or CLIENT for this profile'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const key = envStr(env, `${P}KEY`)
|
||||||
|
if (client && !key) {
|
||||||
|
return { enabled: true, err: 'holesail: CLIENT requires KEY' }
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @type {Record<string, unknown>} */
|
||||||
|
const opts = {
|
||||||
|
server,
|
||||||
|
client,
|
||||||
|
key: key || undefined
|
||||||
|
}
|
||||||
|
|
||||||
|
const sec = envStr(env, `${P}SECURE`)
|
||||||
|
if (sec !== '') opts.secure = bareHolesailEnvTruthy(sec)
|
||||||
|
|
||||||
|
const portRaw = envStr(env, `${P}PORT`)
|
||||||
|
if (portRaw !== '') {
|
||||||
|
const n = Number.parseInt(portRaw, 10)
|
||||||
|
if (!Number.isFinite(n)) {
|
||||||
|
return { enabled: true, err: 'holesail: invalid PORT' }
|
||||||
|
}
|
||||||
|
opts.port = n
|
||||||
|
}
|
||||||
|
|
||||||
|
const host = envStr(env, `${P}HOST`)
|
||||||
|
if (host !== '') opts.host = host
|
||||||
|
|
||||||
|
const udp = envStr(env, `${P}UDP`)
|
||||||
|
if (udp !== '') opts.udp = bareHolesailEnvTruthy(udp)
|
||||||
|
|
||||||
|
const logRaw = envStr(env, `${P}LOG`)
|
||||||
|
if (logRaw !== '') {
|
||||||
|
if (/^\d+$/.test(logRaw)) opts.log = Number.parseInt(logRaw, 10)
|
||||||
|
else opts.log = bareHolesailEnvTruthy(logRaw)
|
||||||
|
}
|
||||||
|
|
||||||
|
return { enabled: true, opts }
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Record<string, unknown>} ctx
|
||||||
|
* @param {string} line
|
||||||
|
*/
|
||||||
|
function logLine(ctx, line) {
|
||||||
|
void appendVarLog(ctx, BARE_HOLESAIL_LOG, 'holesail', line)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Record<string, unknown>} ctx
|
||||||
|
* @param {Record<string, string | undefined>} env
|
||||||
|
*/
|
||||||
|
function debugEnabled(ctx, env) {
|
||||||
|
return bareHolesailEnvTruthy(env.BARE_OS_HOLESAIL_DEBUG)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {unknown} hs
|
||||||
|
*/
|
||||||
|
async function safeCloseHolesail(hs) {
|
||||||
|
if (!hs || typeof hs.close !== 'function') return
|
||||||
|
try {
|
||||||
|
await hs.close()
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Optional early booter instance: runs after ctx is wired (repl phase), before bare-initd.
|
||||||
|
* Env: BARE_OS_HOLESAIL_KERNEL=1 and BARE_OS_HOLESAIL_KERNEL_SERVER|CLIENT, etc.
|
||||||
|
*
|
||||||
|
* @param {Record<string, unknown>} ctx
|
||||||
|
*/
|
||||||
|
export async function maybeStartBareHolesailKernelFromBooter(ctx) {
|
||||||
|
const env =
|
||||||
|
ctx.env && typeof ctx.env === 'object'
|
||||||
|
? /** @type {Record<string, string | undefined>} */ (ctx.env)
|
||||||
|
: /** @type {Record<string, string | undefined>} */ ({})
|
||||||
|
|
||||||
|
const parsed = bareHolesailParseConfig(env, 'kernel')
|
||||||
|
if (!parsed.enabled) return
|
||||||
|
if (parsed.err) {
|
||||||
|
logLine(ctx, `kernel: ${parsed.err}`)
|
||||||
|
try {
|
||||||
|
ctx.console?.error?.(`[bare-holesail] ${parsed.err}`)
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (!parsed.opts) return
|
||||||
|
|
||||||
|
try {
|
||||||
|
const Holesail = await loadHolesailConstructor(ctx)
|
||||||
|
const hs = new Holesail(parsed.opts)
|
||||||
|
await hs.ready()
|
||||||
|
kernelHolesail = hs
|
||||||
|
logLine(ctx, 'kernel: ready (early booter instance)')
|
||||||
|
if (debugEnabled(ctx, env)) {
|
||||||
|
try {
|
||||||
|
const info = hs.info
|
||||||
|
const url = info && typeof info === 'object' ? info.url : ''
|
||||||
|
ctx.console?.log?.(`[bare-holesail] kernel url=${String(url).slice(0, 120)}`)
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
kernelHookUnsubs.push(
|
||||||
|
ctx.bareOsRegisterSuspendHook(async () => {
|
||||||
|
if (kernelHolesail && typeof kernelHolesail.pause === 'function') {
|
||||||
|
try {
|
||||||
|
await kernelHolesail.pause()
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
)
|
||||||
|
kernelHookUnsubs.push(
|
||||||
|
ctx.bareOsRegisterResumeHook(async () => {
|
||||||
|
if (kernelHolesail && typeof kernelHolesail.resume === 'function') {
|
||||||
|
try {
|
||||||
|
await kernelHolesail.resume()
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
|
registerKernelShutdownHook(async () => {
|
||||||
|
for (const u of kernelHookUnsubs.splice(0)) {
|
||||||
|
try {
|
||||||
|
u()
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const h = kernelHolesail
|
||||||
|
kernelHolesail = null
|
||||||
|
await safeCloseHolesail(h)
|
||||||
|
logLine(ctx, 'kernel: closed (session shutdown)')
|
||||||
|
})
|
||||||
|
} catch (e) {
|
||||||
|
const msg = (e && /** @type {{ message?: string }} */ (e).message) || String(e)
|
||||||
|
logLine(ctx, `kernel: start error: ${msg}`)
|
||||||
|
try {
|
||||||
|
ctx.console?.error?.(`[bare-holesail] kernel: ${msg}`)
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function initdStartBareHolesail(ctx) {
|
||||||
|
const env =
|
||||||
|
ctx.env && typeof ctx.env === 'object'
|
||||||
|
? /** @type {Record<string, string | undefined>} */ (ctx.env)
|
||||||
|
: /** @type {Record<string, string | undefined>} */ ({})
|
||||||
|
|
||||||
|
const initdOn = bareHolesailEnvTruthy(env.BARE_OS_HOLESAIL_INITD)
|
||||||
|
const managedOn = bareHolesailEnvTruthy(env.BARE_OS_HOLESAIL_MANAGED)
|
||||||
|
if (initdOn && managedOn) {
|
||||||
|
try {
|
||||||
|
await bareHolesailManagedStartService(ctx, env)
|
||||||
|
} catch (e) {
|
||||||
|
const msg = (e && /** @type {{ message?: string }} */ (e).message) || String(e)
|
||||||
|
logLine(ctx, `initd managed: start error: ${msg}`)
|
||||||
|
throw e
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const parsed = bareHolesailParseConfig(env, 'initd')
|
||||||
|
if (!parsed.enabled) return
|
||||||
|
if (parsed.err) {
|
||||||
|
logLine(ctx, `initd: ${parsed.err}`)
|
||||||
|
throw new Error(parsed.err)
|
||||||
|
}
|
||||||
|
if (!parsed.opts) return
|
||||||
|
|
||||||
|
try {
|
||||||
|
const Holesail = await loadHolesailConstructor(ctx)
|
||||||
|
const hs = new Holesail(parsed.opts)
|
||||||
|
await hs.ready()
|
||||||
|
initdHolesail = hs
|
||||||
|
logLine(ctx, 'initd: ready')
|
||||||
|
if (debugEnabled(ctx, env)) {
|
||||||
|
try {
|
||||||
|
const info = hs.info
|
||||||
|
const url = info && typeof info === 'object' ? info.url : ''
|
||||||
|
ctx.console?.log?.(`[bare-holesail] initd url=${String(url).slice(0, 120)}`)
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
initdHookUnsubs.push(
|
||||||
|
ctx.bareOsRegisterSuspendHook(async () => {
|
||||||
|
if (initdHolesail && typeof initdHolesail.pause === 'function') {
|
||||||
|
try {
|
||||||
|
await initdHolesail.pause()
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
)
|
||||||
|
initdHookUnsubs.push(
|
||||||
|
ctx.bareOsRegisterResumeHook(async () => {
|
||||||
|
if (initdHolesail && typeof initdHolesail.resume === 'function') {
|
||||||
|
try {
|
||||||
|
await initdHolesail.resume()
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
)
|
||||||
|
} catch (e) {
|
||||||
|
const msg = (e && /** @type {{ message?: string }} */ (e).message) || String(e)
|
||||||
|
logLine(ctx, `initd: start error: ${msg}`)
|
||||||
|
throw e
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function initdStopBareHolesail(ctx) {
|
||||||
|
if (bareHolesailManagedServiceIsRunning()) {
|
||||||
|
await bareHolesailManagedStopService(ctx)
|
||||||
|
logLine(ctx, 'initd: stopped (managed)')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for (const u of initdHookUnsubs.splice(0)) {
|
||||||
|
try {
|
||||||
|
u()
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const h = initdHolesail
|
||||||
|
initdHolesail = null
|
||||||
|
await safeCloseHolesail(h)
|
||||||
|
logLine(ctx, 'initd: stopped')
|
||||||
|
}
|
||||||
|
|
||||||
|
registerBareInitdDisposer(() => {
|
||||||
|
if (bareHolesailManagedServiceIsRunning()) {
|
||||||
|
void bareHolesailManagedStopService({})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for (const u of initdHookUnsubs.splice(0)) {
|
||||||
|
try {
|
||||||
|
u()
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const h = initdHolesail
|
||||||
|
initdHolesail = null
|
||||||
|
void safeCloseHolesail(h)
|
||||||
|
})
|
||||||
|
|
||||||
|
registerBareService({
|
||||||
|
name: 'bare-holesail',
|
||||||
|
description:
|
||||||
|
'Holesail P2P TCP/UDP proxy (official holesail API); on by default (managed multi-tunnel for /bin/holesail); disable with BARE_OS_HOLESAIL_INITD=0 or systemctl disable',
|
||||||
|
logPath: BARE_HOLESAIL_LOG,
|
||||||
|
start: initdStartBareHolesail,
|
||||||
|
stop: initdStopBareHolesail
|
||||||
|
})
|
||||||
@@ -43,7 +43,8 @@ export const BARE_INITD_TIMERS_DIR = '~/.config/bare-os/timers'
|
|||||||
/** Built-in ordering when no drop-in file exists (kernel-logger before cron). */
|
/** Built-in ordering when no drop-in file exists (kernel-logger before cron). */
|
||||||
export const BARE_INITD_DEFAULT_AFTER = Object.freeze({
|
export const BARE_INITD_DEFAULT_AFTER = Object.freeze({
|
||||||
'bare-cron': ['kernel-logger'],
|
'bare-cron': ['kernel-logger'],
|
||||||
'bare-openssh': ['kernel-logger', 'bare-cron']
|
'bare-openssh': ['kernel-logger', 'bare-cron'],
|
||||||
|
'bare-holesail': ['kernel-logger']
|
||||||
})
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1187,6 +1187,14 @@ export default {
|
|||||||
"optional": true,
|
"optional": true,
|
||||||
"nativeHint": true,
|
"nativeHint": true,
|
||||||
"skipReason": "Optional Holepunch bare-*; may be native, platform-specific, or Bare-only"
|
"skipReason": "Optional Holepunch bare-*; may be native, platform-specific, or Bare-only"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ctxKey": "holesail",
|
||||||
|
"package": "holesail",
|
||||||
|
"export": "default",
|
||||||
|
"bundle": true,
|
||||||
|
"optional": false,
|
||||||
|
"nativeHint": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1182,6 +1182,14 @@
|
|||||||
"optional": true,
|
"optional": true,
|
||||||
"nativeHint": true,
|
"nativeHint": true,
|
||||||
"skipReason": "Optional Holepunch bare-*; may be native, platform-specific, or Bare-only"
|
"skipReason": "Optional Holepunch bare-*; may be native, platform-specific, or Bare-only"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ctxKey": "holesail",
|
||||||
|
"package": "holesail",
|
||||||
|
"export": "default",
|
||||||
|
"bundle": true,
|
||||||
|
"optional": false,
|
||||||
|
"nativeHint": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,12 +3,29 @@
|
|||||||
* plus optional merge from trusted IIFE bundles on the system drive.
|
* plus optional merge from trusted IIFE bundles on the system drive.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import b4a from 'b4a'
|
||||||
import { readFileSync } from '#host-fs'
|
import { readFileSync } from '#host-fs'
|
||||||
import { dirname, join } from '#host-path'
|
import { dirname, join } from '#host-path'
|
||||||
import { fileURLToPath } from 'url'
|
import { fileURLToPath } from 'url'
|
||||||
import bareModuleManifestEmbedded from './bare-module-manifest.data.mjs'
|
import bareModuleManifestEmbedded from './bare-module-manifest.data.mjs'
|
||||||
import { bareOsHostBooterWarn } from './bare-os-host-booter-log.js'
|
import { bareOsHostBooterWarn } from './bare-os-host-booter-log.js'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used only by {@link tryLoadBareCtxKeyFromDriveBundlePath}: some Bare booters lack
|
||||||
|
* `TextDecoder`. Dynamic `import('b4a')` fails on Pear (no referrer); static import is fine.
|
||||||
|
* @param {Uint8Array} buf
|
||||||
|
*/
|
||||||
|
function decodeUtf8BytesBareFallback(buf) {
|
||||||
|
if (typeof TextDecoder !== 'undefined') {
|
||||||
|
try {
|
||||||
|
return new TextDecoder().decode(buf)
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return b4a.toString(buf, 'utf8')
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* `fileURLToPath` only accepts `file:` URLs. Pear uses `pear://dev/...` for `import.meta.url`,
|
* `fileURLToPath` only accepts `file:` URLs. Pear uses `pear://dev/...` for `import.meta.url`,
|
||||||
* so we must not call it at load time or when running under `pear run`.
|
* so we must not call it at load time or when running under `pear run`.
|
||||||
@@ -26,35 +43,160 @@ function bareOsBooterPackageJsonPathForCreateRequire() {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Drive IIFEs call `require("events")`, `require("bare-stream")`, …; `new Function` has no
|
* Drive IIFEs call `require("events")`, `require("bare-stream")`, …; `new Function` has no
|
||||||
* lexical `require`, so they look at **`globalThis.require`**. On **`file:`** dev trees, install
|
* lexical `require`, so they look at **`globalThis.require`**. Bundled code also calls
|
||||||
* Node's `createRequire` for the booter package for the duration of bundle eval. Under Pear
|
* **`__require.addon()`** (native bindings); that only works when `globalThis.require` is from
|
||||||
* (`pear://`), skip — runtime `require` or `tryBareFetchImportWhenDriveMissing` covers fetch.
|
* **`bare-module`'s `createRequire`** (exposes **`require.addon`**). A bare function or Node-only
|
||||||
|
* `require` breaks eval with **`__require.addon is not a function`**.
|
||||||
|
*
|
||||||
|
* Order: if existing `require` already has **`addon`**, use it; else install **`createRequire`**
|
||||||
|
* from the booter **`file:`** package.json when available; else **`createRequire(import.meta.url)`**
|
||||||
|
* (covers **`pear://`** on Bare). If **`addon`** is still missing (e.g. Node dev), attach a stub
|
||||||
|
* for the duration of eval only.
|
||||||
|
*
|
||||||
* @param {() => void | Promise<void>} fn
|
* @param {() => void | Promise<void>} fn
|
||||||
*/
|
*/
|
||||||
async function withDriveBundleGlobalRequire(fn) {
|
async function tryBareModuleCreateRequire(parentURL) {
|
||||||
if (typeof globalThis.require === 'function') return fn()
|
try {
|
||||||
|
const bm = await import('bare-module')
|
||||||
|
const createRequire = bm.createRequire || bm.default?.createRequire
|
||||||
|
if (typeof createRequire !== 'function') return null
|
||||||
|
return createRequire(parentURL)
|
||||||
|
} catch {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pear `import('pkg')` can fail when the current referrer is a `pear://` booter URL.
|
||||||
|
* Try loading via bare-module's createRequire from the booter package root first,
|
||||||
|
* then fall back to `createRequire(import.meta.url)`.
|
||||||
|
*
|
||||||
|
* @param {string} specifier
|
||||||
|
* @returns {Promise<unknown>}
|
||||||
|
*/
|
||||||
|
export async function tryRequireFromBooter(specifier) {
|
||||||
|
if (typeof specifier !== 'string' || !specifier.trim()) return undefined
|
||||||
|
|
||||||
|
const liveRequire = globalThis.require
|
||||||
|
if (typeof liveRequire === 'function') {
|
||||||
|
try {
|
||||||
|
return liveRequire(specifier)
|
||||||
|
} catch {
|
||||||
|
/* continue */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const pkgJson = bareOsBooterPackageJsonPathForCreateRequire()
|
const pkgJson = bareOsBooterPackageJsonPathForCreateRequire()
|
||||||
let installed = false
|
|
||||||
if (pkgJson) {
|
if (pkgJson) {
|
||||||
try {
|
try {
|
||||||
const urlMod = await import('url')
|
const urlMod = await import('url')
|
||||||
const bm = await import('bare-module')
|
const href = urlMod.pathToFileURL(pkgJson).href
|
||||||
const createRequire = bm.createRequire || bm.default?.createRequire
|
const req = await tryBareModuleCreateRequire(href)
|
||||||
if (typeof createRequire === 'function') {
|
if (typeof req === 'function') return req(specifier)
|
||||||
const href = urlMod.pathToFileURL(pkgJson).href
|
|
||||||
globalThis.require = createRequire(href)
|
|
||||||
installed = true
|
|
||||||
}
|
|
||||||
} catch {
|
} catch {
|
||||||
/* bare-module createRequire unavailable (e.g. some pear:// trees) */
|
/* continue */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const req = await tryBareModuleCreateRequire(import.meta.url)
|
||||||
|
if (typeof req === 'function') return req(specifier)
|
||||||
|
} catch {
|
||||||
|
/* continue */
|
||||||
|
}
|
||||||
|
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @returns {import('bare-module').Require['addon']} */
|
||||||
|
function driveBundleRequireAddonStub() {
|
||||||
|
const stub = function bareOsDriveBundleAddon() {
|
||||||
|
return new Proxy(
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
get() {
|
||||||
|
return function bareOsDriveBundleAddonExport() {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
stub.resolve = function bareOsDriveBundleAddonResolve() {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
stub.host = ''
|
||||||
|
return stub
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Install a temporary `require` wrapper for drive-bundle eval so we control both
|
||||||
|
* module resolution and the `require.addon` surface seen by esbuild IIFEs.
|
||||||
|
*
|
||||||
|
* @param {Function} delegate
|
||||||
|
* @param {Function} addon
|
||||||
|
*/
|
||||||
|
function createDriveBundleRequireWrapper(delegate, addon) {
|
||||||
|
const wrapped = function bareOsDriveBundleRequire(...args) {
|
||||||
|
return Reflect.apply(delegate, this, args)
|
||||||
|
}
|
||||||
|
for (const key of ['resolve', 'cache', 'extensions', 'main']) {
|
||||||
|
try {
|
||||||
|
const v = delegate[key]
|
||||||
|
if (v !== undefined) wrapped[key] = v
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
wrapped.addon = addon
|
||||||
|
return wrapped
|
||||||
|
}
|
||||||
|
|
||||||
|
async function withDriveBundleGlobalRequire(fn) {
|
||||||
|
const origRequire = globalThis.require
|
||||||
|
/** @type {Function | null} */
|
||||||
|
let delegate =
|
||||||
|
typeof origRequire === 'function' ? /** @type {Function} */ (origRequire) : null
|
||||||
|
|
||||||
|
if (!delegate) {
|
||||||
|
const pkgJson = bareOsBooterPackageJsonPathForCreateRequire()
|
||||||
|
if (pkgJson) {
|
||||||
|
try {
|
||||||
|
const urlMod = await import('url')
|
||||||
|
const href = urlMod.pathToFileURL(pkgJson).href
|
||||||
|
const req = await tryBareModuleCreateRequire(href)
|
||||||
|
if (typeof req === 'function') delegate = req
|
||||||
|
} catch {
|
||||||
|
/* continue */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!delegate) {
|
||||||
|
const req = await tryBareModuleCreateRequire(import.meta.url)
|
||||||
|
if (typeof req === 'function') delegate = req
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof delegate === 'function') {
|
||||||
|
/** @type {Function | null} */
|
||||||
|
let addon =
|
||||||
|
typeof delegate.addon === 'function' ? /** @type {Function} */ (delegate.addon) : null
|
||||||
|
|
||||||
|
if (!addon) {
|
||||||
|
const addonReq = await tryBareModuleCreateRequire(import.meta.url)
|
||||||
|
if (addonReq && typeof addonReq.addon === 'function') addon = addonReq.addon
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!addon) addon = driveBundleRequireAddonStub()
|
||||||
|
|
||||||
|
globalThis.require = createDriveBundleRequireWrapper(delegate, addon)
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return await fn()
|
return await fn()
|
||||||
} finally {
|
} finally {
|
||||||
if (installed) {
|
if (origRequire === undefined) delete globalThis.require
|
||||||
delete globalThis.require
|
else globalThis.require = origRequire
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,12 +296,34 @@ function bareHostRuntime() {
|
|||||||
export async function buildBareCtxObjectFromHost(shellEnv, target) {
|
export async function buildBareCtxObjectFromHost(shellEnv, target) {
|
||||||
if (!bareOsBareModulesEnabled(shellEnv)) return
|
if (!bareOsBareModulesEnabled(shellEnv)) return
|
||||||
if (!bareOsBareHostImportsEnabled(shellEnv)) return
|
if (!bareOsBareHostImportsEnabled(shellEnv)) return
|
||||||
|
const pearBooter =
|
||||||
|
typeof import.meta !== 'undefined' &&
|
||||||
|
String(import.meta.url || '').startsWith('pear:')
|
||||||
const { entries } = loadBareModuleManifest()
|
const { entries } = loadBareModuleManifest()
|
||||||
|
const skipHostKeys = new Set(
|
||||||
|
String(shellEnv?.BARE_OS_BARE_HOST_SKIP_CTX_KEYS || '')
|
||||||
|
.split(/[\s,]+/)
|
||||||
|
.map((s) => s.trim())
|
||||||
|
.filter(Boolean)
|
||||||
|
)
|
||||||
|
const onlyHostKeysRaw = String(
|
||||||
|
shellEnv?.BARE_OS_BARE_HOST_ONLY_CTX_KEYS || ''
|
||||||
|
)
|
||||||
|
.split(/[\s,]+/)
|
||||||
|
.map((s) => s.trim())
|
||||||
|
.filter(Boolean)
|
||||||
|
const onlyHostKeys =
|
||||||
|
onlyHostKeysRaw.length > 0 ? new Set(onlyHostKeysRaw) : null
|
||||||
const onBare = bareHostRuntime()
|
const onBare = bareHostRuntime()
|
||||||
const tasks = entries.map(async (ent) => {
|
const tasks = entries.map(async (ent) => {
|
||||||
if (!onBare && ent.nativeHint === true) return null
|
if (!onBare && ent.nativeHint === true) return null
|
||||||
const key = ent.ctxKey
|
const key = ent.ctxKey
|
||||||
if (!key || target[key] !== undefined) return null
|
if (!key || target[key] !== undefined) return null
|
||||||
|
if (skipHostKeys.has(key)) return null
|
||||||
|
if (onlyHostKeys && !onlyHostKeys.has(key)) return null
|
||||||
|
// Pear (`pear:` import.meta.url): bare-module cannot resolve `import("holesail")` from
|
||||||
|
// this booter URL (MODULE_NOT_FOUND / no referrer). Drive IIFEs supply bundle:true keys.
|
||||||
|
if (pearBooter && ent.bundle === true) return null
|
||||||
try {
|
try {
|
||||||
const mod = await import(/* webpackIgnore: true */ ent.package)
|
const mod = await import(/* webpackIgnore: true */ ent.package)
|
||||||
const val = ent.sideEffectImport
|
const val = ent.sideEffectImport
|
||||||
@@ -253,6 +417,74 @@ function unwrapDriveBundleExport(val) {
|
|||||||
return val
|
return val
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Eval a single `/lib/bare/bundles/*.js` IIFE (same as {@link maybeMergeBareFromDrive}) and
|
||||||
|
* return one `ctxKey` from `globalThis.__bare_os_stdlib__`. Does not mutate `ctx.bare`.
|
||||||
|
* Used when Pear skipped populating a key (merge short-circuit or eval failure).
|
||||||
|
*
|
||||||
|
* @param {Record<string, unknown>} ctx
|
||||||
|
* @param {{ readFile: (p: string) => Promise<Uint8Array | null> }} vfs
|
||||||
|
* @param {string} logicalPath
|
||||||
|
* @param {string} ctxKey
|
||||||
|
* @returns {Promise<unknown>}
|
||||||
|
*/
|
||||||
|
export async function tryLoadBareCtxKeyFromDriveBundlePath(
|
||||||
|
ctx,
|
||||||
|
vfs,
|
||||||
|
logicalPath,
|
||||||
|
ctxKey
|
||||||
|
) {
|
||||||
|
void ctx
|
||||||
|
if (!vfs || typeof vfs.readFile !== 'function') return undefined
|
||||||
|
if (
|
||||||
|
typeof logicalPath !== 'string' ||
|
||||||
|
!logicalPath.startsWith('/lib/bare/') ||
|
||||||
|
typeof ctxKey !== 'string' ||
|
||||||
|
!ctxKey
|
||||||
|
) {
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
let buf
|
||||||
|
try {
|
||||||
|
buf = await vfs.readFile(logicalPath)
|
||||||
|
} catch {
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
if (!buf || !buf.byteLength) return undefined
|
||||||
|
const text = decodeUtf8BytesBareFallback(buf)
|
||||||
|
if (text.length > 12 * 1024 * 1024) return undefined
|
||||||
|
|
||||||
|
const g = globalThis
|
||||||
|
const sym = BARE_OS_STDLIB_GLOBAL
|
||||||
|
/** @type {string | null} */
|
||||||
|
let errMsg = null
|
||||||
|
|
||||||
|
await withDriveBundleGlobalRequire(async () => {
|
||||||
|
g[sym] = g[sym] && typeof g[sym] === 'object' ? g[sym] : {}
|
||||||
|
try {
|
||||||
|
const run = new Function(
|
||||||
|
`"use strict"; var require = globalThis.require;\n${text}\n//# sourceURL=bare-drive-bundle:${logicalPath}`
|
||||||
|
)
|
||||||
|
run()
|
||||||
|
} catch (err) {
|
||||||
|
errMsg = (err && /** @type {{ message?: string }} */ (err).message) || String(err)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (errMsg) {
|
||||||
|
bareOsHostBooterWarn(
|
||||||
|
'drive_bundle_eval_failed',
|
||||||
|
`tryLoadBareCtxKeyFromDriveBundlePath ${logicalPath}`,
|
||||||
|
errMsg
|
||||||
|
)
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
const snap = g[sym]
|
||||||
|
if (!snap || typeof snap !== 'object') return undefined
|
||||||
|
if (!Object.prototype.hasOwnProperty.call(snap, ctxKey)) return undefined
|
||||||
|
return unwrapDriveBundleExport(snap[ctxKey])
|
||||||
|
}
|
||||||
|
|
||||||
export async function maybeMergeBareFromDrive(shellEnv, vfs, target) {
|
export async function maybeMergeBareFromDrive(shellEnv, vfs, target) {
|
||||||
if (!bareOsBareModulesEnabled(shellEnv)) return
|
if (!bareOsBareModulesEnabled(shellEnv)) return
|
||||||
if (!bareOsBareDriveBundlesEnabled(shellEnv)) return
|
if (!bareOsBareDriveBundlesEnabled(shellEnv)) return
|
||||||
@@ -354,7 +586,7 @@ export async function maybeMergeBareFromDrive(shellEnv, vfs, target) {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const run = new Function(
|
const run = new Function(
|
||||||
`"use strict"; ${source}\n//# sourceURL=bare-drive-bundle:${path}`
|
`"use strict"; var require = globalThis.require;\n${source}\n//# sourceURL=bare-drive-bundle:${path}`
|
||||||
)
|
)
|
||||||
run()
|
run()
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|||||||
@@ -232,6 +232,7 @@ export interface BareOsKernelContext {
|
|||||||
bareOsRunSshKeygenCli?(argv: string[]): Promise<unknown>
|
bareOsRunSshKeygenCli?(argv: string[]): Promise<unknown>
|
||||||
bareOsRunTarCli?(argv: string[]): Promise<unknown>
|
bareOsRunTarCli?(argv: string[]): Promise<unknown>
|
||||||
bareOsRunSystemctlCli?(argv: string[]): Promise<unknown>
|
bareOsRunSystemctlCli?(argv: string[]): Promise<unknown>
|
||||||
|
bareOsRunHolesailCli?(argv: string[]): Promise<unknown>
|
||||||
bareOsRegisterBareDiagnosticsTap?(
|
bareOsRegisterBareDiagnosticsTap?(
|
||||||
fn: (ev: Record<string, unknown>) => void
|
fn: (ev: Record<string, unknown>) => void
|
||||||
): () => void
|
): () => void
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ const README_TEXT = `Bare OS session logs (mirrored on your personal drive under
|
|||||||
kernel-console.log — console.log / console.error from the kernel session
|
kernel-console.log — console.log / console.error from the kernel session
|
||||||
cron.log — bare-cron job errors
|
cron.log — bare-cron job errors
|
||||||
openssh.log — bare-openssh / sshd listen and auth errors
|
openssh.log — bare-openssh / sshd listen and auth errors
|
||||||
|
holesail.log — bare-holesail / early kernel-path Holesail (AGPL-3.0 upstream)
|
||||||
initd.log — bare-initd service start failures
|
initd.log — bare-initd service start failures
|
||||||
audit.log — optional execLine audit when BARE_OS_AUDIT=1
|
audit.log — optional execLine audit when BARE_OS_AUDIT=1
|
||||||
`
|
`
|
||||||
|
|||||||
@@ -0,0 +1,282 @@
|
|||||||
|
/**
|
||||||
|
* Drive-resident /bin/holesail → ctx.bareOsRunHolesailCli (booter).
|
||||||
|
* Manages persisted tunnels under BARE_OS_HOLESAIL_STATE (default ~/.holesail/state.json).
|
||||||
|
* Live start/stop uses the bare-holesail initd unit (managed mode is the stock default).
|
||||||
|
*/
|
||||||
|
import {
|
||||||
|
bareHolesailManagedNormalizeEntry,
|
||||||
|
bareHolesailManagedReadState,
|
||||||
|
bareHolesailManagedRuntimeRunning,
|
||||||
|
bareHolesailManagedRuntimeUrl,
|
||||||
|
bareHolesailManagedServiceIsRunning,
|
||||||
|
bareHolesailManagedStartOne,
|
||||||
|
bareHolesailManagedStatePath,
|
||||||
|
bareHolesailManagedStopOne,
|
||||||
|
bareHolesailManagedValidateId,
|
||||||
|
bareHolesailManagedWriteState
|
||||||
|
} from './bare-holesail-managed.js'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Record<string, unknown>} ctx
|
||||||
|
*/
|
||||||
|
function ctxEnv(ctx) {
|
||||||
|
return ctx.env && typeof ctx.env === 'object'
|
||||||
|
? /** @type {Record<string, string | undefined>} */ (ctx.env)
|
||||||
|
: /** @type {Record<string, string | undefined>} */ ({})
|
||||||
|
}
|
||||||
|
|
||||||
|
function printHelp(ctx, prog) {
|
||||||
|
ctx.console.log(
|
||||||
|
`Usage: ${prog} help|path|list
|
||||||
|
${prog} add ID --server|--client [--key KEY] [--port N] [--host H] [--udp] [--secure] [--no-secure] [--log N|true|false]
|
||||||
|
${prog} remove ID
|
||||||
|
${prog} start ID | stop ID | restart ID
|
||||||
|
${prog} enable ID | disable ID
|
||||||
|
|
||||||
|
State file: BARE_OS_HOLESAIL_STATE or ${bareHolesailManagedStatePath({})}
|
||||||
|
Stock boot enables bare-holesail in managed mode (BARE_OS_HOLESAIL_INITD/MANAGED default on).
|
||||||
|
Disable with BARE_OS_HOLESAIL_INITD=0 or systemctl disable bare-holesail.
|
||||||
|
|
||||||
|
Upstream holesail is AGPL-3.0; see handbook/04-the-booter-runtime.md.`
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string[]} flagArgs tokens after ID for "add"
|
||||||
|
* @returns {{ ok: true, id: string, entry: Record<string, unknown> } | { ok: false, err: string }}
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Accept `hs://…` without `--key` (otherwise parsed as an unknown flag).
|
||||||
|
* @param {string} a
|
||||||
|
*/
|
||||||
|
function holesailCliTokenLooksLikeHolesailConnectionString(a) {
|
||||||
|
return typeof a === 'string' && /^hs:\/\//i.test(a)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function holesailCliParseAdd(flagArgs) {
|
||||||
|
if (flagArgs.length < 1) {
|
||||||
|
return { ok: false, err: 'holesail add: missing ID' }
|
||||||
|
}
|
||||||
|
const idOk = bareHolesailManagedValidateId(flagArgs[0])
|
||||||
|
if (!idOk.ok) return { ok: false, err: `holesail add: ${idOk.err}` }
|
||||||
|
/** @type {Record<string, unknown>} */
|
||||||
|
const raw = {}
|
||||||
|
for (let i = 1; i < flagArgs.length; i++) {
|
||||||
|
const a = flagArgs[i]
|
||||||
|
if (a === '--server') raw.server = true
|
||||||
|
else if (a === '--client') raw.client = true
|
||||||
|
else if (holesailCliTokenLooksLikeHolesailConnectionString(a)) {
|
||||||
|
if (raw.key) {
|
||||||
|
return { ok: false, err: 'holesail add: duplicate key' }
|
||||||
|
}
|
||||||
|
raw.key = a
|
||||||
|
} else if (a === '--key' && flagArgs[i + 1]) raw.key = flagArgs[++i]
|
||||||
|
else if (a === '--port' && flagArgs[i + 1]) raw.port = flagArgs[++i]
|
||||||
|
else if (a === '--host' && flagArgs[i + 1]) raw.host = flagArgs[++i]
|
||||||
|
else if (a === '--udp') raw.udp = true
|
||||||
|
else if (a === '--secure') raw.secure = true
|
||||||
|
else if (a === '--no-secure') raw.secure = false
|
||||||
|
else if (a === '--log' && flagArgs[i + 1]) {
|
||||||
|
const v = flagArgs[++i]
|
||||||
|
if (v === 'true' || v === 'false') raw.log = v
|
||||||
|
else raw.log = v
|
||||||
|
} else {
|
||||||
|
return { ok: false, err: `holesail add: unknown or incomplete flag: ${a}` }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const norm = bareHolesailManagedNormalizeEntry(raw)
|
||||||
|
if (!norm.ok) return { ok: false, err: `holesail add: ${norm.err}` }
|
||||||
|
return { ok: true, id: idOk.id, entry: norm.entry }
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Record<string, unknown>} ctx
|
||||||
|
* @param {string[]} argv argv[0] is holesail
|
||||||
|
*/
|
||||||
|
export async function runHolesailCli(ctx, argv) {
|
||||||
|
const env = ctxEnv(ctx)
|
||||||
|
const args = argv.slice(1)
|
||||||
|
const prog = 'holesail'
|
||||||
|
|
||||||
|
if (
|
||||||
|
args.length === 0 ||
|
||||||
|
args[0] === 'help' ||
|
||||||
|
args[0] === '--help' ||
|
||||||
|
args[0] === '-h'
|
||||||
|
) {
|
||||||
|
printHelp(ctx, prog)
|
||||||
|
ctx.exitCode = 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const sub = args[0]
|
||||||
|
const rest = args.slice(1)
|
||||||
|
|
||||||
|
if (sub === 'path') {
|
||||||
|
ctx.console.log(bareHolesailManagedStatePath(env))
|
||||||
|
ctx.exitCode = 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const vfs = ctx.vfs
|
||||||
|
if (!vfs || typeof vfs.readFile !== 'function' || typeof vfs.writeFile !== 'function') {
|
||||||
|
ctx.console.error('holesail: ctx.vfs read/write unavailable')
|
||||||
|
ctx.exitCode = 1
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ctx.b4a || typeof ctx.b4a.from !== 'function') {
|
||||||
|
ctx.console.error('holesail: ctx.b4a.from unavailable')
|
||||||
|
ctx.exitCode = 1
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (sub === 'list') {
|
||||||
|
const { path, state } = await bareHolesailManagedReadState(ctx, env)
|
||||||
|
const daemon = bareHolesailManagedServiceIsRunning()
|
||||||
|
ctx.console.log(`state: ${path}`)
|
||||||
|
ctx.console.log(`daemon: ${daemon ? 'managed bare-holesail running' : 'no managed daemon (live ops limited)'}`)
|
||||||
|
const ids = Object.keys(state.connections).sort()
|
||||||
|
if (ids.length === 0) {
|
||||||
|
ctx.console.log('(no connections)')
|
||||||
|
ctx.exitCode = 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for (const id of ids) {
|
||||||
|
const raw = state.connections[id]
|
||||||
|
const norm = bareHolesailManagedNormalizeEntry(raw)
|
||||||
|
const en = norm.ok ? String(!!norm.entry.enabled) : '?'
|
||||||
|
const live = bareHolesailManagedRuntimeRunning(id)
|
||||||
|
const url = live ? bareHolesailManagedRuntimeUrl(id) : ''
|
||||||
|
const mode =
|
||||||
|
norm.ok && norm.entry.server ? 'server' : norm.ok && norm.entry.client ? 'client' : '?'
|
||||||
|
const err = norm.ok ? '' : ` INVALID: ${norm.err}`
|
||||||
|
ctx.console.log(
|
||||||
|
`${id}\t${mode}\tenabled=${en}\tlive=${live}${url ? `\turl=${url.slice(0, 80)}` : ''}${err}`
|
||||||
|
)
|
||||||
|
}
|
||||||
|
ctx.exitCode = 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sub === 'add') {
|
||||||
|
const parsed = holesailCliParseAdd(rest)
|
||||||
|
if (!parsed.ok) {
|
||||||
|
ctx.console.error(parsed.err)
|
||||||
|
ctx.exitCode = 2
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const { path, state } = await bareHolesailManagedReadState(ctx, env)
|
||||||
|
if (state.connections[parsed.id]) {
|
||||||
|
ctx.console.error(`holesail add: ${parsed.id} already exists (use remove first)`)
|
||||||
|
ctx.exitCode = 1
|
||||||
|
return
|
||||||
|
}
|
||||||
|
state.connections[parsed.id] = parsed.entry
|
||||||
|
await bareHolesailManagedWriteState(ctx, env, state)
|
||||||
|
ctx.console.log(`wrote ${path}`)
|
||||||
|
if (bareHolesailManagedServiceIsRunning()) {
|
||||||
|
try {
|
||||||
|
await bareHolesailManagedStartOne(ctx, env, parsed.id)
|
||||||
|
ctx.console.log(`started ${parsed.id}`)
|
||||||
|
} catch (e) {
|
||||||
|
const msg = (e && /** @type {{ message?: string }} */ (e).message) || String(e)
|
||||||
|
ctx.console.error(`holesail: persisted but start failed: ${msg}`)
|
||||||
|
ctx.exitCode = 1
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ctx.exitCode = 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sub === 'remove') {
|
||||||
|
const idOk = bareHolesailManagedValidateId(rest[0] || '')
|
||||||
|
if (!idOk.ok) {
|
||||||
|
ctx.console.error(`holesail remove: ${idOk.err}`)
|
||||||
|
ctx.exitCode = 2
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const { path, state } = await bareHolesailManagedReadState(ctx, env)
|
||||||
|
if (!state.connections[idOk.id]) {
|
||||||
|
ctx.console.error(`holesail remove: unknown ${idOk.id}`)
|
||||||
|
ctx.exitCode = 1
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (bareHolesailManagedRuntimeRunning(idOk.id)) {
|
||||||
|
await bareHolesailManagedStopOne(ctx, idOk.id)
|
||||||
|
}
|
||||||
|
delete state.connections[idOk.id]
|
||||||
|
await bareHolesailManagedWriteState(ctx, env, state)
|
||||||
|
ctx.console.log(`removed ${idOk.id} (${path})`)
|
||||||
|
ctx.exitCode = 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sub === 'start' || sub === 'stop' || sub === 'restart') {
|
||||||
|
const idOk = bareHolesailManagedValidateId(rest[0] || '')
|
||||||
|
if (!idOk.ok) {
|
||||||
|
ctx.console.error(`holesail ${sub}: ${idOk.err}`)
|
||||||
|
ctx.exitCode = 2
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (sub === 'restart' || sub === 'stop') {
|
||||||
|
if (bareHolesailManagedRuntimeRunning(idOk.id)) {
|
||||||
|
await bareHolesailManagedStopOne(ctx, idOk.id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (sub === 'stop') {
|
||||||
|
ctx.console.log(`stopped ${idOk.id} (still in state; will restart on boot if enabled)`)
|
||||||
|
ctx.exitCode = 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
await bareHolesailManagedStartOne(ctx, env, idOk.id)
|
||||||
|
ctx.console.log(`started ${idOk.id}`)
|
||||||
|
ctx.exitCode = 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sub === 'enable' || sub === 'disable') {
|
||||||
|
const idOk = bareHolesailManagedValidateId(rest[0] || '')
|
||||||
|
if (!idOk.ok) {
|
||||||
|
ctx.console.error(`holesail ${sub}: ${idOk.err}`)
|
||||||
|
ctx.exitCode = 2
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const { path, state } = await bareHolesailManagedReadState(ctx, env)
|
||||||
|
const raw = state.connections[idOk.id]
|
||||||
|
if (!raw || typeof raw !== 'object') {
|
||||||
|
ctx.console.error(`holesail ${sub}: unknown ${idOk.id}`)
|
||||||
|
ctx.exitCode = 1
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const o = /** @type {Record<string, unknown>} */ (raw)
|
||||||
|
o.enabled = sub === 'enable'
|
||||||
|
await bareHolesailManagedWriteState(ctx, env, state)
|
||||||
|
ctx.console.log(`${sub}d ${idOk.id} (${path})`)
|
||||||
|
if (sub === 'disable' && bareHolesailManagedRuntimeRunning(idOk.id)) {
|
||||||
|
await bareHolesailManagedStopOne(ctx, idOk.id)
|
||||||
|
}
|
||||||
|
if (sub === 'enable' && bareHolesailManagedServiceIsRunning()) {
|
||||||
|
try {
|
||||||
|
await bareHolesailManagedStartOne(ctx, env, idOk.id)
|
||||||
|
} catch (e) {
|
||||||
|
const msg = (e && /** @type {{ message?: string }} */ (e).message) || String(e)
|
||||||
|
ctx.console.error(`holesail: enable saved but start failed: ${msg}`)
|
||||||
|
ctx.exitCode = 1
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ctx.exitCode = 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx.console.error(`holesail: unknown command ${sub} (try ${prog} help)`)
|
||||||
|
ctx.exitCode = 2
|
||||||
|
} catch (e) {
|
||||||
|
const msg = (e && /** @type {{ message?: string }} */ (e).message) || String(e)
|
||||||
|
ctx.console.error(`holesail: ${msg}`)
|
||||||
|
ctx.exitCode = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
"start": "node ../../scripts/ensure-pear-node-modules.mjs packages/bare-os-booter && bare index.js",
|
"start": "node ../../scripts/ensure-pear-node-modules.mjs packages/bare-os-booter && bare index.js",
|
||||||
"dev": "node ../../scripts/ensure-pear-node-modules.mjs packages/bare-os-booter && bare index.js",
|
"dev": "node ../../scripts/ensure-pear-node-modules.mjs packages/bare-os-booter && bare index.js",
|
||||||
"pear:dev": "node ../../scripts/ensure-pear-node-modules.mjs packages/bare-os-booter && pear run --dev .",
|
"pear:dev": "node ../../scripts/ensure-pear-node-modules.mjs packages/bare-os-booter && pear run --dev .",
|
||||||
"test": "../../node_modules/.bin/brittle-bare test.identity.js && node --require ./scripts/bare-node-test-shim.cjs ../../node_modules/.bin/brittle-node test.js test.bare-openssh-pty.js test.hrpc-allowlist.js test.socket-scm-rights.js",
|
"test": "../../node_modules/.bin/brittle-bare test.identity.js && node --require ./scripts/bare-node-test-shim.cjs ../../node_modules/.bin/brittle-node test.js test.bare-holesail.js test.bare-holesail-managed.js test.bare-openssh-pty.js test.hrpc-allowlist.js test.socket-scm-rights.js",
|
||||||
"test:bare": "../../node_modules/.bin/brittle-bare test.identity.js test.bare-smoke.js"
|
"test:bare": "../../node_modules/.bin/brittle-bare test.identity.js test.bare-smoke.js"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -44,6 +44,7 @@
|
|||||||
"corestore": "^7.2.1",
|
"corestore": "^7.2.1",
|
||||||
"hypercore-id-encoding": "^1.3.0",
|
"hypercore-id-encoding": "^1.3.0",
|
||||||
"hyperdrive": "^13.3.2",
|
"hyperdrive": "^13.3.2",
|
||||||
|
"holesail": "^2.4.1",
|
||||||
"hyperbee": "^2.11.1",
|
"hyperbee": "^2.11.1",
|
||||||
"hypercore-crypto": "^3.4.0",
|
"hypercore-crypto": "^3.4.0",
|
||||||
"hyperswarm": "^4.17.0",
|
"hyperswarm": "^4.17.0",
|
||||||
@@ -74,6 +75,8 @@
|
|||||||
"test.js",
|
"test.js",
|
||||||
"test.identity.js",
|
"test.identity.js",
|
||||||
"test.bare-smoke.js",
|
"test.bare-smoke.js",
|
||||||
|
"test.bare-holesail.js",
|
||||||
|
"test.bare-holesail-managed.js",
|
||||||
".test-data"
|
".test-data"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,25 @@
|
|||||||
/**
|
/**
|
||||||
* Preload for `brittle-node` / Node-based booter tests:
|
* Preload for `brittle-node` / Node-based booter tests:
|
||||||
* - `bare-type/binding.js` uses Bare-only `require.addon()`.
|
* - `bare-type/binding.js` uses Bare-only `require.addon()`.
|
||||||
|
* - `bare-dns/binding.js` uses Bare-only `require.addon()` (transitive via holesail / DHT).
|
||||||
* - `bare-inspect` pulls the same; brittle → bare-assert → bare-inspect.
|
* - `bare-inspect` pulls the same; brittle → bare-assert → bare-inspect.
|
||||||
*
|
*
|
||||||
* Usage: node --require ./scripts/bare-node-test-shim.cjs …
|
* Usage: node --require ./scripts/bare-node-test-shim.cjs …
|
||||||
*/
|
*/
|
||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
|
/** `bare-path` and some Holepunch modules expect a global `Bare` (Pear/Bare runtime). */
|
||||||
|
if (typeof globalThis.Bare === 'undefined') {
|
||||||
|
globalThis.Bare = {
|
||||||
|
platform: process.platform,
|
||||||
|
on(event, fn) {
|
||||||
|
if (event === 'exit' && typeof fn === 'function' && process.on) {
|
||||||
|
process.on('exit', fn)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const path = require('path')
|
const path = require('path')
|
||||||
const Module = require('module')
|
const Module = require('module')
|
||||||
const { types } = require('node:util')
|
const { types } = require('node:util')
|
||||||
@@ -170,6 +183,25 @@ module.exports = function inspect(value, opts = {}) {
|
|||||||
module.exports.styles = {}
|
module.exports.styles = {}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
/** Minimal stub so `require('bare-dns')` loads under Node (no native addon). */
|
||||||
|
const bareDnsBindingStub = {
|
||||||
|
initResolver() {
|
||||||
|
return 0
|
||||||
|
},
|
||||||
|
destroyResolver() {},
|
||||||
|
resolveTxt(_handle, _hostname, cb) {
|
||||||
|
if (typeof cb === 'function') {
|
||||||
|
process.nextTick(() => cb(new Error('bare-dns: stub binding in Node tests')))
|
||||||
|
}
|
||||||
|
},
|
||||||
|
lookup(_hostname, _family, _all, _req, callback) {
|
||||||
|
if (typeof callback === 'function') {
|
||||||
|
process.nextTick(() => callback(new Error('bare-dns: stub binding in Node tests'), null))
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const origLoad = Module._load
|
const origLoad = Module._load
|
||||||
Module._load = function (request, parent, isMain) {
|
Module._load = function (request, parent, isMain) {
|
||||||
if (
|
if (
|
||||||
@@ -181,13 +213,65 @@ Module._load = function (request, parent, isMain) {
|
|||||||
) {
|
) {
|
||||||
return bareTypeBinding
|
return bareTypeBinding
|
||||||
}
|
}
|
||||||
|
if (
|
||||||
|
request === './binding' &&
|
||||||
|
parent &&
|
||||||
|
typeof parent.filename === 'string' &&
|
||||||
|
parent.filename.includes(`${path.sep}bare-dns${path.sep}`) &&
|
||||||
|
parent.filename.endsWith(`${path.sep}index.js`)
|
||||||
|
) {
|
||||||
|
return bareDnsBindingStub
|
||||||
|
}
|
||||||
return origLoad.apply(this, arguments)
|
return origLoad.apply(this, arguments)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const ADDON_STUB_PREFIX =
|
||||||
|
'if (typeof require.addon !== "function") {\n' +
|
||||||
|
' require.addon = function bareOsNodeTestAddon() {\n' +
|
||||||
|
' return new Proxy({}, {\n' +
|
||||||
|
' get() {\n' +
|
||||||
|
' return function () { return {} }\n' +
|
||||||
|
' }\n' +
|
||||||
|
' })\n' +
|
||||||
|
' }\n' +
|
||||||
|
'}\n'
|
||||||
|
|
||||||
|
function isBareOsBindingFile(filename) {
|
||||||
|
if (typeof filename !== 'string') return false
|
||||||
|
const n = filename.replace(/\\/g, '/')
|
||||||
|
return n.endsWith('/bare-os/binding.js')
|
||||||
|
}
|
||||||
|
|
||||||
|
function isBareAddonBindingFile(filename, src) {
|
||||||
|
if (typeof filename !== 'string') return false
|
||||||
|
if (isBareOsBindingFile(filename)) return false
|
||||||
|
if (!filename.includes(`${path.sep}node_modules${path.sep}`)) return false
|
||||||
|
if (!filename.endsWith(`${path.sep}binding.js`)) return false
|
||||||
|
const s = String(src || '')
|
||||||
|
.replace(/\/\/[^\n]*/g, '')
|
||||||
|
.replace(/\/\*[\s\S]*?\*\//g, '')
|
||||||
|
.trim()
|
||||||
|
return /^\s*module\.exports\s*=\s*require\.addon\s*\(\s*\)\s*;?\s*$/.test(s)
|
||||||
|
}
|
||||||
|
|
||||||
|
const bareOsBindingNodeShimPath = path.join(
|
||||||
|
__dirname,
|
||||||
|
'bare-os-binding-node-shim.cjs'
|
||||||
|
)
|
||||||
|
|
||||||
const origCompile = Module.prototype._compile
|
const origCompile = Module.prototype._compile
|
||||||
Module.prototype._compile = function (content, filename) {
|
Module.prototype._compile = function (content, filename) {
|
||||||
if (typeof filename === 'string' && isBareInspectIndex(filename)) {
|
if (typeof filename === 'string' && isBareInspectIndex(filename)) {
|
||||||
return origCompile.call(this, BARE_INSPECT_NODE_SOURCE, filename)
|
return origCompile.call(this, BARE_INSPECT_NODE_SOURCE, filename)
|
||||||
}
|
}
|
||||||
|
if (isBareOsBindingFile(filename)) {
|
||||||
|
const src = `module.exports = require(${JSON.stringify(
|
||||||
|
bareOsBindingNodeShimPath
|
||||||
|
)})\n`
|
||||||
|
return origCompile.call(this, src, filename)
|
||||||
|
}
|
||||||
|
if (isBareAddonBindingFile(filename, content)) {
|
||||||
|
return origCompile.call(this, ADDON_STUB_PREFIX + content, filename)
|
||||||
|
}
|
||||||
return origCompile.call(this, content, filename)
|
return origCompile.call(this, content, filename)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,76 @@
|
|||||||
|
/**
|
||||||
|
* Node test shim: bare-os `binding.js` uses `require.addon()` (Bare-only).
|
||||||
|
* Provides a minimal process/os-shaped object for brittle-node tests.
|
||||||
|
*/
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
const os = require('node:os')
|
||||||
|
const p = process
|
||||||
|
|
||||||
|
function networkInterfacesFlat() {
|
||||||
|
const ni = os.networkInterfaces()
|
||||||
|
const out = []
|
||||||
|
for (const name of Object.keys(ni)) {
|
||||||
|
const addrs = ni[name]
|
||||||
|
if (!addrs) continue
|
||||||
|
for (const a of addrs) out.push({ name, ...a })
|
||||||
|
}
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
signals: os.constants.signals,
|
||||||
|
errnos: os.constants.errno || {},
|
||||||
|
priority: os.constants.priority || {},
|
||||||
|
platform: p.platform,
|
||||||
|
arch: os.arch(),
|
||||||
|
type: os.type(),
|
||||||
|
version: os.version(),
|
||||||
|
release: os.release(),
|
||||||
|
machine: os.machine(),
|
||||||
|
execPath: p.execPath,
|
||||||
|
pid: () => p.pid,
|
||||||
|
ppid: () => p.ppid,
|
||||||
|
cwd: () => p.cwd(),
|
||||||
|
chdir: (d) => p.chdir(d),
|
||||||
|
tmpdir: () => os.tmpdir(),
|
||||||
|
homedir: () => os.homedir(),
|
||||||
|
hostname: () => os.hostname(),
|
||||||
|
userInfo: (opts) => os.userInfo(opts),
|
||||||
|
networkInterfaces: () => networkInterfacesFlat(),
|
||||||
|
kill: (pid, sig) => p.kill(pid, sig),
|
||||||
|
isLittleEndian: os.endianness() === 'LE',
|
||||||
|
availableParallelism: () =>
|
||||||
|
typeof os.availableParallelism === 'function'
|
||||||
|
? os.availableParallelism()
|
||||||
|
: os.cpus().length,
|
||||||
|
cpuUsage: () => p.cpuUsage(),
|
||||||
|
threadCpuUsage: () => ({ user: 0, system: 0 }),
|
||||||
|
resourceUsage: () => p.resourceUsage(),
|
||||||
|
memoryUsage: () => p.memoryUsage(),
|
||||||
|
freemem: () => os.freemem(),
|
||||||
|
totalmem: () => os.totalmem(),
|
||||||
|
availableMemory: () => os.freemem(),
|
||||||
|
constrainedMemory: () => os.totalmem(),
|
||||||
|
uptime: () => os.uptime(),
|
||||||
|
loadavg: () => os.loadavg(),
|
||||||
|
cpus: () => os.cpus(),
|
||||||
|
getProcessTitle: () => p.title,
|
||||||
|
setProcessTitle: (t) => {
|
||||||
|
p.title = t
|
||||||
|
},
|
||||||
|
getPriority: (pid) => p.getPriority(pid),
|
||||||
|
setPriority: (pid, pri) => p.setPriority(pid, pri),
|
||||||
|
getEnvKeys: () => Object.keys(p.env),
|
||||||
|
getEnv: (k) => {
|
||||||
|
const v = p.env[String(k)]
|
||||||
|
return v === undefined ? '' : String(v)
|
||||||
|
},
|
||||||
|
hasEnv: (k) => Object.prototype.hasOwnProperty.call(p.env, String(k)),
|
||||||
|
setEnv: (k, v) => {
|
||||||
|
p.env[String(k)] = String(v)
|
||||||
|
},
|
||||||
|
unsetEnv: (k) => {
|
||||||
|
delete p.env[String(k)]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
import test from 'brittle'
|
||||||
|
import {
|
||||||
|
bareHolesailManagedNormalizeEntry,
|
||||||
|
bareHolesailManagedValidateId
|
||||||
|
} from './lib/bare-holesail-managed.js'
|
||||||
|
import { holesailCliParseAdd } from './lib/holesail-cli.js'
|
||||||
|
|
||||||
|
test('bareHolesailManagedValidateId', (t) => {
|
||||||
|
t.ok(bareHolesailManagedValidateId('a').ok)
|
||||||
|
t.ok(bareHolesailManagedValidateId('t1._-x').ok)
|
||||||
|
t.absent(bareHolesailManagedValidateId('').ok)
|
||||||
|
t.absent(bareHolesailManagedValidateId('bad id').ok)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('bareHolesailManagedNormalizeEntry server', (t) => {
|
||||||
|
const r = bareHolesailManagedNormalizeEntry({ server: true, port: '8080' })
|
||||||
|
t.ok(r.ok)
|
||||||
|
t.is(r.entry.server, true)
|
||||||
|
t.is(r.entry.client, false)
|
||||||
|
t.is(r.entry.port, 8080)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('bareHolesailManagedNormalizeEntry client needs key', (t) => {
|
||||||
|
const r = bareHolesailManagedNormalizeEntry({ client: true })
|
||||||
|
t.absent(r.ok)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('holesailCliParseAdd', (t) => {
|
||||||
|
const r = holesailCliParseAdd(['t', '--server', '--port', '9000'])
|
||||||
|
t.ok(r.ok)
|
||||||
|
t.is(r.id, 't')
|
||||||
|
t.is(r.entry.server, true)
|
||||||
|
t.is(r.entry.port, 9000)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('holesailCliParseAdd implicit hs key', (t) => {
|
||||||
|
const r = holesailCliParseAdd([
|
||||||
|
't',
|
||||||
|
'--client',
|
||||||
|
'hs://s000477b2d983364922df1296a65aeaa2d2a',
|
||||||
|
'--port',
|
||||||
|
'8888'
|
||||||
|
])
|
||||||
|
t.ok(r.ok)
|
||||||
|
t.is(r.entry.client, true)
|
||||||
|
t.is(r.entry.key, 'hs://s000477b2d983364922df1296a65aeaa2d2a')
|
||||||
|
t.is(r.entry.port, 8888)
|
||||||
|
})
|
||||||
@@ -0,0 +1,116 @@
|
|||||||
|
import test from 'brittle'
|
||||||
|
import {
|
||||||
|
bareHolesailEnvTruthy,
|
||||||
|
bareHolesailParseConfig
|
||||||
|
} from './lib/bare-holesail.js'
|
||||||
|
import { loadHolesailConstructor } from './lib/bare-holesail-loader.js'
|
||||||
|
import { tryLoadBareCtxKeyFromDriveBundlePath } from './lib/bare-os-ctx-bare.js'
|
||||||
|
|
||||||
|
test('bareHolesailEnvTruthy', (t) => {
|
||||||
|
t.ok(bareHolesailEnvTruthy('1'))
|
||||||
|
t.ok(bareHolesailEnvTruthy('true'))
|
||||||
|
t.ok(bareHolesailEnvTruthy(' YES '))
|
||||||
|
t.absent(bareHolesailEnvTruthy('0'))
|
||||||
|
t.absent(bareHolesailEnvTruthy(''))
|
||||||
|
})
|
||||||
|
|
||||||
|
test('bareHolesailParseConfig initd disabled', (t) => {
|
||||||
|
const r = bareHolesailParseConfig({}, 'initd')
|
||||||
|
t.absent(r.enabled)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('bareHolesailParseConfig initd server secure', (t) => {
|
||||||
|
const r = bareHolesailParseConfig(
|
||||||
|
{
|
||||||
|
BARE_OS_HOLESAIL_INITD: '1',
|
||||||
|
BARE_OS_HOLESAIL_SERVER: '1',
|
||||||
|
BARE_OS_HOLESAIL_SECURE: '1',
|
||||||
|
BARE_OS_HOLESAIL_PORT: '18080'
|
||||||
|
},
|
||||||
|
'initd'
|
||||||
|
)
|
||||||
|
t.ok(r.enabled)
|
||||||
|
t.absent(r.err)
|
||||||
|
t.ok(r.opts)
|
||||||
|
t.is(r.opts.server, true)
|
||||||
|
t.is(r.opts.client, false)
|
||||||
|
t.is(r.opts.secure, true)
|
||||||
|
t.is(r.opts.port, 18080)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('bareHolesailParseConfig initd client needs key', (t) => {
|
||||||
|
const r = bareHolesailParseConfig(
|
||||||
|
{
|
||||||
|
BARE_OS_HOLESAIL_INITD: '1',
|
||||||
|
BARE_OS_HOLESAIL_CLIENT: '1'
|
||||||
|
},
|
||||||
|
'initd'
|
||||||
|
)
|
||||||
|
t.ok(r.enabled)
|
||||||
|
t.ok(r.err)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('bareHolesailParseConfig kernel profile uses KERNEL_ prefix', (t) => {
|
||||||
|
const r = bareHolesailParseConfig(
|
||||||
|
{
|
||||||
|
BARE_OS_HOLESAIL_KERNEL: '1',
|
||||||
|
BARE_OS_HOLESAIL_KERNEL_SERVER: '1'
|
||||||
|
},
|
||||||
|
'kernel'
|
||||||
|
)
|
||||||
|
t.ok(r.enabled)
|
||||||
|
t.absent(r.err)
|
||||||
|
t.ok(r.opts?.server)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('bareHolesailParseConfig rejects both server and client', (t) => {
|
||||||
|
const r = bareHolesailParseConfig(
|
||||||
|
{
|
||||||
|
BARE_OS_HOLESAIL_INITD: '1',
|
||||||
|
BARE_OS_HOLESAIL_SERVER: '1',
|
||||||
|
BARE_OS_HOLESAIL_CLIENT: '1'
|
||||||
|
},
|
||||||
|
'initd'
|
||||||
|
)
|
||||||
|
t.ok(r.err)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('loadHolesailConstructor uses booter-owned holesail import', async (t) => {
|
||||||
|
const ctx = { bare: Object.freeze({}) }
|
||||||
|
const Ho = await loadHolesailConstructor(ctx)
|
||||||
|
t.is(typeof Ho, 'function')
|
||||||
|
t.is(Object.prototype.hasOwnProperty.call(ctx.bare, 'holesail'), false)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('drive bundle eval wraps non-addon require with addon-capable facade', async (t) => {
|
||||||
|
const prevRequire = globalThis.require
|
||||||
|
const fakeRequire = Object.preventExtensions(function fakeRequire() {
|
||||||
|
throw new Error('unexpected require() call in test bundle')
|
||||||
|
})
|
||||||
|
|
||||||
|
globalThis.require = fakeRequire
|
||||||
|
|
||||||
|
const bundleSource =
|
||||||
|
'var __require = ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { get: (a, b) => (typeof require !== "undefined" ? require : a)[b] }) : x)(function(x) { throw Error(\'Dynamic require of "\' + x + \'" is not supported\'); });\n' +
|
||||||
|
'var __bare_os_bundle_exports__ = { default: typeof __require.addon === "function" };\n' +
|
||||||
|
';(function(){var g=globalThis;var s="__bare_os_stdlib__";g[s]=g[s]||{};var e=typeof __bare_os_bundle_exports__!=="undefined"?__bare_os_bundle_exports__:void 0;var v=e!=null&&typeof e==="object"&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e;g[s]["driveBundleProbe"]=v;})();\n'
|
||||||
|
|
||||||
|
try {
|
||||||
|
const loaded = await tryLoadBareCtxKeyFromDriveBundlePath(
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
async readFile(path) {
|
||||||
|
return path === '/lib/bare/bundles/driveBundleProbe.js'
|
||||||
|
? Buffer.from(bundleSource)
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'/lib/bare/bundles/driveBundleProbe.js',
|
||||||
|
'driveBundleProbe'
|
||||||
|
)
|
||||||
|
t.is(loaded, true)
|
||||||
|
} finally {
|
||||||
|
if (prevRequire === undefined) delete globalThis.require
|
||||||
|
else globalThis.require = prevRequire
|
||||||
|
}
|
||||||
|
})
|
||||||
@@ -3376,7 +3376,14 @@ test('bare-module-manifest.data.mjs matches bare-module-manifest.json', async (t
|
|||||||
|
|
||||||
test('buildBareCtxObjectFromHost loads core keys on Node', async (t) => {
|
test('buildBareCtxObjectFromHost loads core keys on Node', async (t) => {
|
||||||
const target = {}
|
const target = {}
|
||||||
await buildBareCtxObjectFromHost({}, target)
|
await buildBareCtxObjectFromHost(
|
||||||
|
{
|
||||||
|
// Narrow host import set: parallel import of the full manifest is slow and
|
||||||
|
// some Bare-oriented packages disturb brittle's hrtime-based timers.
|
||||||
|
BARE_OS_BARE_HOST_ONLY_CTX_KEYS: 'b4a,compactEncoding,protomux'
|
||||||
|
},
|
||||||
|
target
|
||||||
|
)
|
||||||
t.ok(target.b4a)
|
t.ok(target.b4a)
|
||||||
t.ok(target.compactEncoding)
|
t.ok(target.compactEncoding)
|
||||||
t.ok(target.protomux)
|
t.ok(target.protomux)
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ export const COREUTILS_COMMANDS = [
|
|||||||
'head',
|
'head',
|
||||||
'hdms',
|
'hdms',
|
||||||
'help',
|
'help',
|
||||||
|
'holesail',
|
||||||
'hostid',
|
'hostid',
|
||||||
'hostname',
|
'hostname',
|
||||||
'iconv',
|
'iconv',
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"name": "holesail",
|
||||||
|
"section": 1,
|
||||||
|
"title": "holesail",
|
||||||
|
"synopsis": [
|
||||||
|
"holesail [OPTION]... [OPERAND]..."
|
||||||
|
],
|
||||||
|
"description": "Bare OS implementation of holesail. Full behavior is defined in packages/bare-os-coreutils/src/holesail.js.",
|
||||||
|
"options": [],
|
||||||
|
"keywords": [
|
||||||
|
"holesail",
|
||||||
|
"bare-os",
|
||||||
|
"coreutils"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
/* BARE_OS_BIN_API 1.0.0 — delegates to booter holesail-cli when ctx exposes bareOsRunHolesailCli. */
|
||||||
|
async function run(ctx, argv) {
|
||||||
|
if (typeof ctx.bareOsRunHolesailCli === 'function') {
|
||||||
|
await ctx.bareOsRunHolesailCli(argv)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ctx.console.error(
|
||||||
|
'holesail: ctx.bareOsRunHolesailCli missing — run under host booter / upgrade ctx API'
|
||||||
|
)
|
||||||
|
ctx.exitCode = 1
|
||||||
|
}
|
||||||
@@ -247,6 +247,7 @@ function bareEditCsiToEvent(seq) {
|
|||||||
}
|
}
|
||||||
return { type: 'unknown' }
|
return { type: 'unknown' }
|
||||||
}
|
}
|
||||||
|
if (last === 'Z') return { type: 'nav', key: 'stab' }
|
||||||
if (last === 'A' || last === 'B' || last === 'C' || last === 'D') {
|
if (last === 'A' || last === 'B' || last === 'C' || last === 'D') {
|
||||||
const map = { A: 'up', B: 'down', C: 'right', D: 'left' }
|
const map = { A: 'up', B: 'down', C: 'right', D: 'left' }
|
||||||
return { type: 'nav', key: map[last] }
|
return { type: 'nav', key: map[last] }
|
||||||
@@ -3684,7 +3685,9 @@ function bareTopTryConsumeMouse(q) {
|
|||||||
* keyQuit?: string,
|
* keyQuit?: string,
|
||||||
* keyRefresh?: string,
|
* keyRefresh?: string,
|
||||||
* tab?: number,
|
* tab?: number,
|
||||||
* overviewJumpPick?: boolean
|
* overviewJumpPick?: boolean,
|
||||||
|
* tabCpuIdx?: number,
|
||||||
|
* tabMemIdx?: number
|
||||||
* }} o
|
* }} o
|
||||||
*/
|
*/
|
||||||
function bareTopDrainKeys(q, max, o) {
|
function bareTopDrainKeys(q, max, o) {
|
||||||
@@ -3733,11 +3736,14 @@ function bareTopDrainKeys(q, max, o) {
|
|||||||
return { type: 'filter_bs' }
|
return { type: 'filter_bs' }
|
||||||
if (ev.type === 'key' && ev.ch === '\n')
|
if (ev.type === 'key' && ev.ch === '\n')
|
||||||
return o.inFilter ? { type: 'filter_enter' } : { type: 'enter' }
|
return o.inFilter ? { type: 'filter_enter' } : { type: 'enter' }
|
||||||
|
if (ev.type === 'key' && ev.ch === '\t')
|
||||||
|
return o.inFilter ? { type: 'filter_char', ch: '\t' } : { type: 'tab_next' }
|
||||||
if (ev.type === 'nav') {
|
if (ev.type === 'nav') {
|
||||||
if (o.helpPaging) {
|
if (o.helpPaging) {
|
||||||
if (ev.key === 'pageup') return { type: 'help_page', dir: -1 }
|
if (ev.key === 'pageup') return { type: 'help_page', dir: -1 }
|
||||||
if (ev.key === 'pagedown') return { type: 'help_page', dir: 1 }
|
if (ev.key === 'pagedown') return { type: 'help_page', dir: 1 }
|
||||||
}
|
}
|
||||||
|
if (ev.key === 'stab' && !o.inFilter) return { type: 'tab_prev' }
|
||||||
if (ev.key === 'pageup') return { type: 'scroll', dir: -1, amt: 5 }
|
if (ev.key === 'pageup') return { type: 'scroll', dir: -1, amt: 5 }
|
||||||
if (ev.key === 'pagedown') return { type: 'scroll', dir: 1, amt: 5 }
|
if (ev.key === 'pagedown') return { type: 'scroll', dir: 1, amt: 5 }
|
||||||
if (ev.key === 'home') return { type: 'scroll', dir: 'home' }
|
if (ev.key === 'home') return { type: 'scroll', dir: 'home' }
|
||||||
@@ -3798,6 +3804,16 @@ function bareTopDrainKeys(q, max, o) {
|
|||||||
!o.inFilter
|
!o.inFilter
|
||||||
)
|
)
|
||||||
return { type: 'overview_jump_arm' }
|
return { type: 'overview_jump_arm' }
|
||||||
|
{
|
||||||
|
const tCpu =
|
||||||
|
typeof o.tabCpuIdx === 'number' ? o.tabCpuIdx : -1
|
||||||
|
const tMem =
|
||||||
|
typeof o.tabMemIdx === 'number' ? o.tabMemIdx : -1
|
||||||
|
if (!o.inFilter && ch === 'C' && tCpu >= 0)
|
||||||
|
return { type: 'tab', n: tCpu }
|
||||||
|
if (!o.inFilter && ch === 'M' && tMem >= 0)
|
||||||
|
return { type: 'tab', n: tMem }
|
||||||
|
}
|
||||||
if (ch >= '1' && ch <= '9') return { type: 'tab', n: ch.charCodeAt(0) - 0x31 }
|
if (ch >= '1' && ch <= '9') return { type: 'tab', n: ch.charCodeAt(0) - 0x31 }
|
||||||
if (ch === '0') return { type: 'tab', n: -1 }
|
if (ch === '0') return { type: 'tab', n: -1 }
|
||||||
if (ch.length === 1 && ch >= ' ' && ch.charCodeAt(0) > 32)
|
if (ch.length === 1 && ch >= ' ' && ch.charCodeAt(0) > 32)
|
||||||
@@ -5025,8 +5041,9 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
'\r\n' +
|
'\r\n' +
|
||||||
' arrows Move list / process selection (Up/Down; PgUp/Dn page)\r\n' +
|
' arrows Move list / process selection (Up/Down; PgUp/Dn page)\r\n' +
|
||||||
' g G Jump list top / bottom\r\n' +
|
' g G Jump list top / bottom\r\n' +
|
||||||
|
' Tab Next tab Shift+Tab Prev tab\r\n' +
|
||||||
' [ ] Prev / next tab\r\n' +
|
' [ ] Prev / next tab\r\n' +
|
||||||
' 1-9 Jump first tabs; 0 = last tab (disk)\r\n' +
|
' 1-9 Jump tabs 1–9; 0 = disk; C / M Cpu / Mem tabs\r\n' +
|
||||||
' Esc Close help or cancel filter\r\n' +
|
' Esc Close help or cancel filter\r\n' +
|
||||||
'\r\n' +
|
'\r\n' +
|
||||||
dim +
|
dim +
|
||||||
@@ -5034,7 +5051,7 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
rst +
|
rst +
|
||||||
'\r\n' +
|
'\r\n' +
|
||||||
' 1 overview 2 processes 3 initd 4 network 5 features 6 diagnostics\r\n' +
|
' 1 overview 2 processes 3 initd 4 network 5 features 6 diagnostics\r\n' +
|
||||||
' 7 operator 8 pear 9 catalog [ ] host C/M/D cpu mem disk 0 disk\r\n' +
|
' 7 operator 8 pear 9 catalog H host C M cpu mem 0 disk\r\n' +
|
||||||
'\r\n' +
|
'\r\n' +
|
||||||
dim +
|
dim +
|
||||||
'Actions (1/2)' +
|
'Actions (1/2)' +
|
||||||
@@ -5404,6 +5421,8 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
else lab = nm.charAt(0).toUpperCase()
|
else lab = nm.charAt(0).toUpperCase()
|
||||||
} else if (ti === NTABS - 1) lab = '0:' + nm.slice(0, 2)
|
} else if (ti === NTABS - 1) lab = '0:' + nm.slice(0, 2)
|
||||||
else if (ti === T_HOST) lab = 'H:' + nm.slice(0, 2)
|
else if (ti === T_HOST) lab = 'H:' + nm.slice(0, 2)
|
||||||
|
else if (ti === T_CPU) lab = 'C:' + nm.slice(0, 2)
|
||||||
|
else if (ti === T_MEM) lab = 'M:' + nm.slice(0, 2)
|
||||||
else lab = String(ti + 1) + ':' + nm.slice(0, 3)
|
else lab = String(ti + 1) + ':' + nm.slice(0, 3)
|
||||||
const on = ti === tab
|
const on = ti === tab
|
||||||
stripParts.push(
|
stripParts.push(
|
||||||
@@ -6559,9 +6578,10 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
const footProc =
|
const footProc =
|
||||||
'^v sel F6/S sort V tree Enter detail k/F9 / filter gG [ ] tab'
|
'^v sel F6/S sort V tree Enter detail k/F9 / filter gG [ ] tab'
|
||||||
const footOverview =
|
const footOverview =
|
||||||
'PgUp/Dn scroll detail / section filter h help [ ] tab e export'
|
'PgUp/Dn scroll detail / filter h help Tab/[ ] tab C M e export'
|
||||||
const footInitd = 'PgUp/Dn scroll / filter units h help'
|
const footInitd = 'PgUp/Dn scroll / filter units h help'
|
||||||
const footDefault = 'PgUp/Dn scroll [ ] tabs h help e export f full'
|
const footDefault =
|
||||||
|
'PgUp/Dn scroll Tab/[ ] tabs C M cpu/mem h help e export f full'
|
||||||
let footBase = quietFooter
|
let footBase = quietFooter
|
||||||
? tab === 0
|
? tab === 0
|
||||||
? 'ov'
|
? 'ov'
|
||||||
@@ -6977,6 +6997,8 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
vi: viKeys,
|
vi: viKeys,
|
||||||
inFilter: false,
|
inFilter: false,
|
||||||
tab,
|
tab,
|
||||||
|
tabCpuIdx: TAB_NAMES.indexOf('cpu'),
|
||||||
|
tabMemIdx: TAB_NAMES.indexOf('mem'),
|
||||||
mouseEnabled:
|
mouseEnabled:
|
||||||
mouseOn &&
|
mouseOn &&
|
||||||
!helpMode &&
|
!helpMode &&
|
||||||
@@ -7044,9 +7066,15 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((mx.btn === 64 || mx.btn === 65) && !mx.release) {
|
if ((mx.btn === 64 || mx.btn === 65) && !mx.release) {
|
||||||
const sr = scrollRows[tab] || 0
|
|
||||||
const dir = mx.btn === 64 ? -1 : 1
|
const dir = mx.btn === 64 ? -1 : 1
|
||||||
scrollRows[tab] = Math.max(0, sr + dir * 3)
|
if (tab === TAB_PROC && !procDetailPid) {
|
||||||
|
const pl = currentProcRows()
|
||||||
|
const maxI = Math.max(0, pl.length - 1)
|
||||||
|
procCursor = Math.max(0, Math.min(maxI, procCursor + dir * 3))
|
||||||
|
} else {
|
||||||
|
const sr = scrollRows[tab] || 0
|
||||||
|
scrollRows[tab] = Math.max(0, sr + dir * 3)
|
||||||
|
}
|
||||||
draw()
|
draw()
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
@@ -7583,7 +7611,7 @@ async function run(ctx, argv) {
|
|||||||
'and optional ctx fast paths. Requires a TTY.\n' +
|
'and optional ctx fast paths. Requires a TTY.\n' +
|
||||||
'\n' +
|
'\n' +
|
||||||
'Tabs (default): 1 overview 2 processes 3 initd 4 network 5 features 6 diagnostics\n' +
|
'Tabs (default): 1 overview 2 processes 3 initd 4 network 5 features 6 diagnostics\n' +
|
||||||
' 7 operator 8 pear 9 catalog H:host C/M/D cpu mem disk 0 last tab (disk)\n' +
|
' 7 operator 8 pear 9 catalog H host C cpu M mem 0 disk Tab next tab Shift+Tab prev\n' +
|
||||||
' BARE_TOP_TAB_MERGE=netop drops the operator tab (operator lines fold into network).\n' +
|
' BARE_TOP_TAB_MERGE=netop drops the operator tab (operator lines fold into network).\n' +
|
||||||
' F1 help F2 setup F3/F4 proc row F5 refresh F7 renice F9 signal F10 quit\n' +
|
' F1 help F2 setup F3/F4 proc row F5 refresh F7 renice F9 signal F10 quit\n' +
|
||||||
'\n' +
|
'\n' +
|
||||||
@@ -7638,7 +7666,7 @@ async function run(ctx, argv) {
|
|||||||
' NO_COLOR / COLORTERM See https://no-color.org/ ; truecolor gated on COLORTERM\n' +
|
' NO_COLOR / COLORTERM See https://no-color.org/ ; truecolor gated on COLORTERM\n' +
|
||||||
'\n' +
|
'\n' +
|
||||||
'Keys: q F10 quit r F5 refresh R sort +/- sp pause . step d delta e export E tab export\n' +
|
'Keys: q F10 quit r F5 refresh R sort +/- sp pause . step d delta e export E tab export\n' +
|
||||||
' f fullscreen F follow pid t clock [ ] tab prev/next h ? F1 help F2 setup\n' +
|
' f fullscreen F follow pid t clock Tab/[ ] tab next/prev h ? F1 help F2 setup\n' +
|
||||||
' / filter (overview, initd, processes, features) V tree z collapse a action k F9 signal\n' +
|
' / filter (overview, initd, processes, features) V tree z collapse a action k F9 signal\n' +
|
||||||
' n F7 renice c copy pid = tag % tagged-only i o e detail subviews\n' +
|
' n F7 renice c copy pid = tag % tagged-only i o e detail subviews\n' +
|
||||||
" ' then 1-9,0 Jump to Nth overview section (on overview tab)\n" +
|
" ' then 1-9,0 Jump to Nth overview section (on overview tab)\n" +
|
||||||
|
|||||||
@@ -247,6 +247,7 @@ function bareEditCsiToEvent(seq) {
|
|||||||
}
|
}
|
||||||
return { type: 'unknown' }
|
return { type: 'unknown' }
|
||||||
}
|
}
|
||||||
|
if (last === 'Z') return { type: 'nav', key: 'stab' }
|
||||||
if (last === 'A' || last === 'B' || last === 'C' || last === 'D') {
|
if (last === 'A' || last === 'B' || last === 'C' || last === 'D') {
|
||||||
const map = { A: 'up', B: 'down', C: 'right', D: 'left' }
|
const map = { A: 'up', B: 'down', C: 'right', D: 'left' }
|
||||||
return { type: 'nav', key: map[last] }
|
return { type: 'nav', key: map[last] }
|
||||||
@@ -3684,7 +3685,9 @@ function bareTopTryConsumeMouse(q) {
|
|||||||
* keyQuit?: string,
|
* keyQuit?: string,
|
||||||
* keyRefresh?: string,
|
* keyRefresh?: string,
|
||||||
* tab?: number,
|
* tab?: number,
|
||||||
* overviewJumpPick?: boolean
|
* overviewJumpPick?: boolean,
|
||||||
|
* tabCpuIdx?: number,
|
||||||
|
* tabMemIdx?: number
|
||||||
* }} o
|
* }} o
|
||||||
*/
|
*/
|
||||||
function bareTopDrainKeys(q, max, o) {
|
function bareTopDrainKeys(q, max, o) {
|
||||||
@@ -3733,11 +3736,14 @@ function bareTopDrainKeys(q, max, o) {
|
|||||||
return { type: 'filter_bs' }
|
return { type: 'filter_bs' }
|
||||||
if (ev.type === 'key' && ev.ch === '\n')
|
if (ev.type === 'key' && ev.ch === '\n')
|
||||||
return o.inFilter ? { type: 'filter_enter' } : { type: 'enter' }
|
return o.inFilter ? { type: 'filter_enter' } : { type: 'enter' }
|
||||||
|
if (ev.type === 'key' && ev.ch === '\t')
|
||||||
|
return o.inFilter ? { type: 'filter_char', ch: '\t' } : { type: 'tab_next' }
|
||||||
if (ev.type === 'nav') {
|
if (ev.type === 'nav') {
|
||||||
if (o.helpPaging) {
|
if (o.helpPaging) {
|
||||||
if (ev.key === 'pageup') return { type: 'help_page', dir: -1 }
|
if (ev.key === 'pageup') return { type: 'help_page', dir: -1 }
|
||||||
if (ev.key === 'pagedown') return { type: 'help_page', dir: 1 }
|
if (ev.key === 'pagedown') return { type: 'help_page', dir: 1 }
|
||||||
}
|
}
|
||||||
|
if (ev.key === 'stab' && !o.inFilter) return { type: 'tab_prev' }
|
||||||
if (ev.key === 'pageup') return { type: 'scroll', dir: -1, amt: 5 }
|
if (ev.key === 'pageup') return { type: 'scroll', dir: -1, amt: 5 }
|
||||||
if (ev.key === 'pagedown') return { type: 'scroll', dir: 1, amt: 5 }
|
if (ev.key === 'pagedown') return { type: 'scroll', dir: 1, amt: 5 }
|
||||||
if (ev.key === 'home') return { type: 'scroll', dir: 'home' }
|
if (ev.key === 'home') return { type: 'scroll', dir: 'home' }
|
||||||
@@ -3798,6 +3804,16 @@ function bareTopDrainKeys(q, max, o) {
|
|||||||
!o.inFilter
|
!o.inFilter
|
||||||
)
|
)
|
||||||
return { type: 'overview_jump_arm' }
|
return { type: 'overview_jump_arm' }
|
||||||
|
{
|
||||||
|
const tCpu =
|
||||||
|
typeof o.tabCpuIdx === 'number' ? o.tabCpuIdx : -1
|
||||||
|
const tMem =
|
||||||
|
typeof o.tabMemIdx === 'number' ? o.tabMemIdx : -1
|
||||||
|
if (!o.inFilter && ch === 'C' && tCpu >= 0)
|
||||||
|
return { type: 'tab', n: tCpu }
|
||||||
|
if (!o.inFilter && ch === 'M' && tMem >= 0)
|
||||||
|
return { type: 'tab', n: tMem }
|
||||||
|
}
|
||||||
if (ch >= '1' && ch <= '9') return { type: 'tab', n: ch.charCodeAt(0) - 0x31 }
|
if (ch >= '1' && ch <= '9') return { type: 'tab', n: ch.charCodeAt(0) - 0x31 }
|
||||||
if (ch === '0') return { type: 'tab', n: -1 }
|
if (ch === '0') return { type: 'tab', n: -1 }
|
||||||
if (ch.length === 1 && ch >= ' ' && ch.charCodeAt(0) > 32)
|
if (ch.length === 1 && ch >= ' ' && ch.charCodeAt(0) > 32)
|
||||||
@@ -5025,8 +5041,9 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
'\r\n' +
|
'\r\n' +
|
||||||
' arrows Move list / process selection (Up/Down; PgUp/Dn page)\r\n' +
|
' arrows Move list / process selection (Up/Down; PgUp/Dn page)\r\n' +
|
||||||
' g G Jump list top / bottom\r\n' +
|
' g G Jump list top / bottom\r\n' +
|
||||||
|
' Tab Next tab Shift+Tab Prev tab\r\n' +
|
||||||
' [ ] Prev / next tab\r\n' +
|
' [ ] Prev / next tab\r\n' +
|
||||||
' 1-9 Jump first tabs; 0 = last tab (disk)\r\n' +
|
' 1-9 Jump tabs 1–9; 0 = disk; C / M Cpu / Mem tabs\r\n' +
|
||||||
' Esc Close help or cancel filter\r\n' +
|
' Esc Close help or cancel filter\r\n' +
|
||||||
'\r\n' +
|
'\r\n' +
|
||||||
dim +
|
dim +
|
||||||
@@ -5034,7 +5051,7 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
rst +
|
rst +
|
||||||
'\r\n' +
|
'\r\n' +
|
||||||
' 1 overview 2 processes 3 initd 4 network 5 features 6 diagnostics\r\n' +
|
' 1 overview 2 processes 3 initd 4 network 5 features 6 diagnostics\r\n' +
|
||||||
' 7 operator 8 pear 9 catalog [ ] host C/M/D cpu mem disk 0 disk\r\n' +
|
' 7 operator 8 pear 9 catalog H host C M cpu mem 0 disk\r\n' +
|
||||||
'\r\n' +
|
'\r\n' +
|
||||||
dim +
|
dim +
|
||||||
'Actions (1/2)' +
|
'Actions (1/2)' +
|
||||||
@@ -5404,6 +5421,8 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
else lab = nm.charAt(0).toUpperCase()
|
else lab = nm.charAt(0).toUpperCase()
|
||||||
} else if (ti === NTABS - 1) lab = '0:' + nm.slice(0, 2)
|
} else if (ti === NTABS - 1) lab = '0:' + nm.slice(0, 2)
|
||||||
else if (ti === T_HOST) lab = 'H:' + nm.slice(0, 2)
|
else if (ti === T_HOST) lab = 'H:' + nm.slice(0, 2)
|
||||||
|
else if (ti === T_CPU) lab = 'C:' + nm.slice(0, 2)
|
||||||
|
else if (ti === T_MEM) lab = 'M:' + nm.slice(0, 2)
|
||||||
else lab = String(ti + 1) + ':' + nm.slice(0, 3)
|
else lab = String(ti + 1) + ':' + nm.slice(0, 3)
|
||||||
const on = ti === tab
|
const on = ti === tab
|
||||||
stripParts.push(
|
stripParts.push(
|
||||||
@@ -6559,9 +6578,10 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
const footProc =
|
const footProc =
|
||||||
'^v sel F6/S sort V tree Enter detail k/F9 / filter gG [ ] tab'
|
'^v sel F6/S sort V tree Enter detail k/F9 / filter gG [ ] tab'
|
||||||
const footOverview =
|
const footOverview =
|
||||||
'PgUp/Dn scroll detail / section filter h help [ ] tab e export'
|
'PgUp/Dn scroll detail / filter h help Tab/[ ] tab C M e export'
|
||||||
const footInitd = 'PgUp/Dn scroll / filter units h help'
|
const footInitd = 'PgUp/Dn scroll / filter units h help'
|
||||||
const footDefault = 'PgUp/Dn scroll [ ] tabs h help e export f full'
|
const footDefault =
|
||||||
|
'PgUp/Dn scroll Tab/[ ] tabs C M cpu/mem h help e export f full'
|
||||||
let footBase = quietFooter
|
let footBase = quietFooter
|
||||||
? tab === 0
|
? tab === 0
|
||||||
? 'ov'
|
? 'ov'
|
||||||
@@ -6977,6 +6997,8 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
vi: viKeys,
|
vi: viKeys,
|
||||||
inFilter: false,
|
inFilter: false,
|
||||||
tab,
|
tab,
|
||||||
|
tabCpuIdx: TAB_NAMES.indexOf('cpu'),
|
||||||
|
tabMemIdx: TAB_NAMES.indexOf('mem'),
|
||||||
mouseEnabled:
|
mouseEnabled:
|
||||||
mouseOn &&
|
mouseOn &&
|
||||||
!helpMode &&
|
!helpMode &&
|
||||||
@@ -7044,9 +7066,15 @@ async function bareOsRunBareTopTui(ctx) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((mx.btn === 64 || mx.btn === 65) && !mx.release) {
|
if ((mx.btn === 64 || mx.btn === 65) && !mx.release) {
|
||||||
const sr = scrollRows[tab] || 0
|
|
||||||
const dir = mx.btn === 64 ? -1 : 1
|
const dir = mx.btn === 64 ? -1 : 1
|
||||||
scrollRows[tab] = Math.max(0, sr + dir * 3)
|
if (tab === TAB_PROC && !procDetailPid) {
|
||||||
|
const pl = currentProcRows()
|
||||||
|
const maxI = Math.max(0, pl.length - 1)
|
||||||
|
procCursor = Math.max(0, Math.min(maxI, procCursor + dir * 3))
|
||||||
|
} else {
|
||||||
|
const sr = scrollRows[tab] || 0
|
||||||
|
scrollRows[tab] = Math.max(0, sr + dir * 3)
|
||||||
|
}
|
||||||
draw()
|
draw()
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
@@ -7583,7 +7611,7 @@ async function run(ctx, argv) {
|
|||||||
'and optional ctx fast paths. Requires a TTY.\n' +
|
'and optional ctx fast paths. Requires a TTY.\n' +
|
||||||
'\n' +
|
'\n' +
|
||||||
'Tabs (default): 1 overview 2 processes 3 initd 4 network 5 features 6 diagnostics\n' +
|
'Tabs (default): 1 overview 2 processes 3 initd 4 network 5 features 6 diagnostics\n' +
|
||||||
' 7 operator 8 pear 9 catalog H:host C/M/D cpu mem disk 0 last tab (disk)\n' +
|
' 7 operator 8 pear 9 catalog H host C cpu M mem 0 disk Tab next tab Shift+Tab prev\n' +
|
||||||
' BARE_TOP_TAB_MERGE=netop drops the operator tab (operator lines fold into network).\n' +
|
' BARE_TOP_TAB_MERGE=netop drops the operator tab (operator lines fold into network).\n' +
|
||||||
' F1 help F2 setup F3/F4 proc row F5 refresh F7 renice F9 signal F10 quit\n' +
|
' F1 help F2 setup F3/F4 proc row F5 refresh F7 renice F9 signal F10 quit\n' +
|
||||||
'\n' +
|
'\n' +
|
||||||
@@ -7638,7 +7666,7 @@ async function run(ctx, argv) {
|
|||||||
' NO_COLOR / COLORTERM See https://no-color.org/ ; truecolor gated on COLORTERM\n' +
|
' NO_COLOR / COLORTERM See https://no-color.org/ ; truecolor gated on COLORTERM\n' +
|
||||||
'\n' +
|
'\n' +
|
||||||
'Keys: q F10 quit r F5 refresh R sort +/- sp pause . step d delta e export E tab export\n' +
|
'Keys: q F10 quit r F5 refresh R sort +/- sp pause . step d delta e export E tab export\n' +
|
||||||
' f fullscreen F follow pid t clock [ ] tab prev/next h ? F1 help F2 setup\n' +
|
' f fullscreen F follow pid t clock Tab/[ ] tab next/prev h ? F1 help F2 setup\n' +
|
||||||
' / filter (overview, initd, processes, features) V tree z collapse a action k F9 signal\n' +
|
' / filter (overview, initd, processes, features) V tree z collapse a action k F9 signal\n' +
|
||||||
' n F7 renice c copy pid = tag % tagged-only i o e detail subviews\n' +
|
' n F7 renice c copy pid = tag % tagged-only i o e detail subviews\n' +
|
||||||
" ' then 1-9,0 Jump to Nth overview section (on overview tab)\n" +
|
" ' then 1-9,0 Jump to Nth overview section (on overview tab)\n" +
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user